Metodología de la Programación
Elementos Básicos
M. en C. José Andrés Vázquez Flores
Sistema: Conjunto de Unidades que colaboran entre si para realizar una función general y donde cada unidad efectúa un trabajo específico.
Computadora: Sistema de Procesamiento de Información que recibe datos como entrada, los modifica (procesa) y produce resultados como salida.
Definiciones
2
El diseño básico operacional de un sistema de cómputo se conoce como arquitectura A. John Von Neumann (NVA), un pionero del diseño de la computadora.
Un sistema típico de NVA tiene tres componentes: memoria, una unidad central de procesamiento (CPU) y dispositivos de entrada/salida (I/O).
Arquitectura básica
3
Arquitectura básica
4
Memoria
Programa
Área de Datos10101010101010101010101100011010
1010110101Área de Código
0101101010101010110001101011
Dispositivos de E/S
Registros
ALU Unidad de Control
Buses del Sistema
El ser humano realiza los razonamientos a partir de información adquirida que está almacenada en su cerebro.
La computadora tiene que almacenar en su interior toda la información necesaria para realizar el proceso automático que le pedimos que ejecute.
La parte de la computadora que realiza esta función es la Memoria principal, interna o central. Es la denominada memoria R.A.M. (memoria de acceso directo).
Datos
5
Los tipos de datos se agrupan en tipos simples o bien en tipos estructurados, nosotros vamos a empezar viendo los tipos simples de datos.
Los valores que se pueden almacenar en memoria vamos a dividirlos en los siguientes tipos:– Numéricos (enteros y reales).– Lógicos.– Carácter.– Cadenas.
Tipos de datos
6
En una computadora se pueden distinguir ciertos valores que no cambian durante la ejecución de un proceso, a estos valores se les denominan constantes.
De la misma forma existen valores que van cambiando durante el proceso y a estos se les denominan variables.
Las variables se identifican por un nombre que se le asigna y el tipo que indica los valores que puede contener para un uso correcto de la variable.
Constantes y variables
7
Área de almacenamiento, de tamaño fijo y que sirve para guardar un tipo de dato específico.
Las variables tiene dos elementos: El Nombre de la variable y el Contenido de la variable.
– El nombre de la variable sirve para distinguirla de otras variables y el contenido se refiere al dato que es guardado en ese lugar.
– La variable puede almacenar un sólo tipo de dato como puede ser datos enteros, reales, booleanos, caracteres, etc.
8
Constantes y variables
Son los elementos que permiten indicar la realización de una operación entre determinados valores. La sintaxis de estas expresiones con operadores será siempre de la siguiente forma:
Expresión1 operador Expresión2
Cada expresión puede ser un solo valor, constante o variable, o una expresión como conjunto de valores relacionados mediante operadores, por lo que es necesario que existan unas reglas que indiquen en que orden deben efectuarse las operaciones.
Operadores y expresiones
9
Operadores aritméticos:– Esta relación de operadores aritméticos es la
más usual, pero siempre es conveniente consultar el manual del lenguaje de programación que se utilice en cada momento.
Prioridad
10
Operador Significado
^ Exponenciación
* Multiplicación
/ División
Div División entera
Mod Resto
+ Suma
- Resta
Operadores relacionales:– Estos operadores actúan sobre valores
numéricos y sobre valores tipo cadenas. El resultado es un valor lógico.
Prioridad
11
Significado Símbolo
Igual que =
Menor que <
Mayor que >
Menor o igual que <=
Mayor o igual que >=
Diferente <>,
Operadores Lógicos:– Estos operadores actúan sobre valores
lógicos, es decir, entre el valor verdadero y el valor falso.
Prioridad
12
A B A and B A or B A xor B
T T T T F
T F F T T
F T F T T
F F F F F
A not A
T F
F T
Nivel de prioridad de los operadores.
Las dos reglas principales para evaluar expresiones son:– Se empieza a evaluar por la izquierda.– Los paréntesis siempre tienen la mayor
prioridad, teniendo en cuenta que pueden estar anidados, en cuyo caso se evaluará primero el más interno.
Prioridad
13
Es una de las acciones básicas que se puede ejecutar en la computadora.
Una variable está relacionada con posiciones de memoria que van a contener valores que pueden cambiar durante la ejecución del proceso.
Por tanto es necesario tener una acción que permita dar valores adecuados a cada variable para obtener al final del proceso los resultados correctos.
Asignación de variables
14
Se debe tener en cuenta el tipo de variable para no cometer errores a la hora de la asignación.
La asignación de un valor a una variable supone una escritura en memoria y por tanto una operación destructiva del valor que tuviera la variable anteriormente.
El símbolo utilizado para indicar esta acción de asignación será “”, de forma que la operación se señalará de la siguiente manera:
variable valor o expresión.
15
Asignación de variables
Una expresión es una combinación de operandos (variables), constantes y operadores.
La expresión debe estar bien escrita, es decir, siguiendo las reglas de los operadores.
Las expresiones se pueden dividir en expresiones aritméticas o expresiones lógicas.
Ejemplos de expresiones aritméticas:
– 25– (50 * 2) + 10– Salario * 0.15
Expresiones
16
Ejemplos de proposiciones con expresiones aritméticas:
– Base (500 * 2) + 100– Salario DiasTrabajados * SalarioDiario– Impuesto Salario * 0.15
Ejemplos de proposiciones con expresiones lógicas:– Mayor a > b – Menor ( a < b ) and ( b < c )
Expresiones
17
1) Obtener los resultados de las siguientes expresiones:
a) 7*(8-4)/2*5+4
b) 7*8-4/2*(5+4)
c) (“abc” + “de”) > “abcde”
d) 7>6 AND 5=5 OR 4<0
e) 2^3+6/3-4^2
f) (2^(3+6/3)-4)^2
g) NOT (5<6 OR 7=0) AND Falso
h) 5.25 + 8.5 / 5 - 3.2 * 7.25
Ejercicio
18
Herramientas de Representación de Algoritmos para la
“Resolución de Problemas”
20
Ingeniero en computación
Persona que resuelve problemas computacionales
DesarrolloConectividad
Soporte
Diseño
Consultoría
Otros…
21
Proceso de programarFase de RESOLUCIÓN de PROBLEMAS Fase de IMPLEMENTACIÓN
Fase de MANTENIMIENTO Tom
ad
o d
e:
Pro
gra
mm
ing
an
d P
rob
lem
Solv
ing
wit
h Java.
Nell
Dale
Ch
ap
1
22
¿Qué es un problema?
23
¿Qué es un problema?Un
Problema
es una
situación
en la cual un
individuo
actúa
meta
utilizando una
estrategia
para alcanzar una
desea hacer algo
curso de acción
para alcanzar la
meta
pero desconoce el
Tom
ad
o d
e L
ibro
5:
Est
rate
gía
s d
e r
eso
luci
ón
de p
rob
lem
as
– Li
ssete
Pog
gio
li
Cuando hablamos de un problema y nos referimos a la meta o a lograr lo que se quiere, nos estamos refiriendo a la solución de dicho problema.
Una solución esta asociada con:
24
Solución
Estado inicial
Solución o meta
Problema
Componentes de los problemas
25
Losproblemas
tienen
componentes
alcanzar
metas
analizar
son lo que se
las
desea
datos
los
elementos
son
para
situación problema
la
camino
restricciones
las
factores
son
que limita
n
solución
la
el
para alcanzar
resolver
operaciones
las
procedimientos
son
para
problema
el
Tom
ad
o d
e L
ibro
5:
Est
rate
gía
s d
e r
eso
luci
ón
de p
rob
lem
as
– Li
ssete
Pog
gio
li
Consideremos el siguiente ejemplo: “Anita tiene una muñeca y quiere vestirla con pantalón y blusa. Tiene cuatro
pantalones: rojo, blanco, azul y negro y tiene tres blusas: verde, amarillo y rosado. Ella quiere hacer diferentes combinaciones con todos los pantalones y las blusas verde y rosada. ¿Cuántas combinaciones diferentes puede hacer?”
¿Cúal es la Meta(s)?– Consiste en saber cuántas combinaciones diferentes puede hacer Anita con
los pantalones y las blusas¿Cuáles son los datos?– 4 pantalones y 3 blusasLas restricciones ?– Anita solo quiere utilizar 2 de las 3 blusas: la verde y rosada. En
consecuencia no todas las blusas van a ser consideradas para las combinaciones
Operaciones o métodos ?– Utilizar las operaciones requeridas para obtener el número de
combinaciones
Ejemplo
26
¿ Qué es la Resolución de problemas?
27
Diariamente resolvemos problemas, la mayoría de las veces, sin darnos cuenta del proceso que realizamos.– Algunos problemas están claramente
definidos -como los que mencionamos anteriormente- pero en la vida real, los procesos no son tan simples.
– La mayoría de las veces, tendremos que definir el problema nosotros mismos y decidir con que información vamos a trabajar y que resultados debemos obtener.
28
Resolución de problemas
Según Dijkstra (1991), la resolución de problemas es un proceso cognoscitivo complejo que involucra conocimiento almacenado en la memoria a corto y a largo plazo.
29
¿Qué es la resolución de problemas?
Comprender el problema (análisis y especificación)
Concebir un plan para llegar a la
solución (estrategia)
Ejecutar el plan
Verificar el procedimiento y comprobar los
resultados
30
Resolución de problemas
Polya (1965) señala que un problema puede resolverse correctamente si se realizan las siguientes fases o etapas:
31
Técnicas para resolución de problemas
Técnicas para
resolución de
problemas
Hacer preguntas
Dividir y Vencer
Por analogía
Buscar cosas que
son familiares
Análisis de medios y
fines
Bloques de construcción
Combinar soluciones
En equipos de 8 integrantes, tienen 10 minutos para resolver el siguiente problema
Descripción:– Obtener un lista de los integrantes del
equipo y los diferentes lugares de procedencia de sus compañeros y el promedio de edad.
Criterios para el éxito: – Cada equipo deberá haber obtenido la
información solicitada
Responsabilidad Individual: – Cualquier integrante del equipo podrá ser
seleccionado al azar para explicar la solución al frente
32
Actividad Colaborativa
Compartiendo la solución con todos
Explicar el proceso que siguieron para resolver el problema
33
Actividad grupal (plenaria)
Fases de Resolución del Problema:
– Análisis del problema. Consiste en la definición concisa a fin de que sea analizado en todo detalle.
– Diseño o desarrollo del algoritmo. Es el procedimiento, paso a paso, para la solucionar el problema dado.
– Resolución del algoritmo por computadora. Es la codificación del algoritmo en algún lenguaje de programación.
Resolución de problemas
34
Las Fases para el Diseño del Algoritmo son:– Diseño Descendente (Algoritmo Narrado).– Refinamiento por pasos (Algoritmo detallado).– Herramientas de Programación (Representación del Algoritmo en
una herramienta).
Diseño de un algoritmo
35
Diseño de un Algoritmo
Diseño Descendente
Refinamiento por pasos
Herramientas de programación:
Diagramas de FlujoPseudocódigo
Pruebas de escritorio
Esta forma de describir un algoritmo es caracterizada porque sigue un proceso de ejecución común y lógico, describiendo textualmente paso a paso cada una de las actividades a realizar dentro de una actividad determinada.
Ejemplo: Algoritmo para cambiar un foco fundido
1. INICIO
2. Situar escalera bajo el foco quemado.
3. Elegir un foco de reemplazo (de la misma potencia que el anterior).
4. Subir por la escalera hasta alcanzar el foco.
5. Girar el foco contra las manecillas del reloj hasta que esté suelto.
6. Ubicar el foco nuevo en el mismo lugar que el anterior.
7. Enroscar en el sentido de las manecillas del reloj hasta que quede apretado.
8. Bajar de la escalera.
9. FIN
Descripción Narrada
36
En esta fase consiste en descomponer en pasos más simples cada uno de los pasos del algoritmo narrado, donde se deberá especificar las acciones en forma detalladas y sus datos de forma precisa.
Características del Refinamiento de pasos
– Se detallan acciones de selección, de repetición. – Otra característica es el uso de indentación (sangrado o
justificación del texto) para escribir los pasos del algoritmo. – Además se pueden establecer la identificación de las
entradas, salidas, constantes y variables previamente definidas.
Refinamiento por pasos
37
Algoritmo para determinar los números menores que 90 y múltiplos de 9.1. Inicio
2. Inicializar Num9
3. Mientras Num<903.1 Escribir Num.
3.2 Num Num+9
4. Fin
38
Refinamiento por pasos
Para representar un algoritmo se debe utilizar algún método que permita independizar dicho algoritmo del lenguaje de programación elegido. Permitiendo su representación y su transformación a un programa para su codificación:
Lenguaje de especificación de algoritmos: Pseudocódigo.
Su representación gráfica puede ser utilizando: Diagramas de flujo.
Herramientas de programación
39
Es una herramienta de programación en la que las instrucciones se escriben en palabras similares al inglés o español, que facilitan tanto la escritura como la lectura de programas.
Las palabras reservadas comúnmente utilizadas en pseudocódigo son: Inicio, Fin, Leer, Escribir, Si, Entonces, Sino, FinSi, Según, FinSegun, Mientras, Hacer, FinMientras, Repetir, HastaQue, Para, FinPara, Desde, entre otras.
Pseudocódigo
40
Características del pseudocódigo:
– Mantiene una indentación o sangría adecuada para facilitar la identificación de los elementos que lo componen.
– Permite la declaración de los datos (constantes y/o variables) manipulados por el algoritmo.
– Dispone de un conjunto pequeño de palabras reservadas para expresar las acciones del algoritmo.
– Supera las dos principales desventajas del diagrama de flujo: lento de crear y difícil de modificar.
– Permite el seguimiento de la lógica de un algoritmo.
41
Pseudocódigo
Tipos de Estructuras (Sentencias)
Secuenciales
Decisión (Control)– Condicional Simple– Condicional Doble– Condicional Múltiple
Repetición– Ciclo Para (con contador)– Ciclos condicionales
mientras
hacer mientras
Sentencias Secuenciales
Las estructuras de secuencia también son conocidas como sentencias o proposiciones.
Una sentencia o proposición es una unidad completa, ejecutable en sí misma.
La ejecución de estas sentencias se realiza de manera secuencial, es decir, cada una a continuación de la anterior, empezando por la primera y terminando con la última.
R X+Y Z Z+Y
Escribe R Lee Y
Sentencias de ControlLas estructuras de control, también conocidas como estructuras de decisión, controlan el flujo de ejecución de un programa.
Permiten seleccionar la próxima proposición a ejecutarse dependiendo del valor de una condición (cierta o falsa). Para construir esta condición se usarán las expresiones lógicas o relacionales.
Si Y and X entonces
Si (X+4)<=10
CondicionalSe evalúa la condición, si la condición es cierta se realiza la proposición, y si es falsa entonces no se realiza la proposición o se realiza otro bloque dependiendo si es simple o doble.
Condicional simpleSe evalúa la condición, si la condición es cierta se realiza proposición, y si es falsa entonces no se realiza la proposición.
Si (X=10) entonces X X+10Fin si
Si (X=10) entonces X X+10
Escribe XFin Si
Con una sentencia Con dos sentencias
Condicional dobleSe evalúa la condición, si la condición es cierta se realizará proposición1 y si condición es falsa se realizará la proposición 2.
Si (X=10) entonces X X+10
Si no X X+1Fin Si
Condicional múltiplePermite realizar una ramificación múltiple, ejecutando una entre varias partes del programa, según se cumpla una entre n condiciones.
Selector es una variable que puede tomar solamente alguno de los valores: valor 1, valor 2, valor 3,...valor n.
Dependiendo del valor que tome selector, se ejecutará alguna de las proposiciones.
Pero si selector NO toma alguno de los valores, valor 1 hasta valor n, entonces ejecutará la proposición por omisión que es la proposición x.
Si op igual a 1: X X+1 2: X X+10 3: X X*3 4: XX+100 otro: Escribe “opción no válida” FinSi
Según sea op caso 1: X X+1 caso 2: X X+10 caso 3: X X*3 caso 4: XX+100 otro : Escribe “opción no válida” FinSegun
Sentencias de Repetición
Sentencias de Repetición
Las estructuras de repetición, permiten la ejecución de una lista o secuencia de instrucciones en varias ocasiones.
El número de veces que el bloque de instrucciones se ejecutará se puede especificar de manera explícita, o a través de una condición lógica que indica cuándo se ejecuta de nuevo y cuándo no.
A cada ejecución del bloque de instrucciones se le conoce como una iteración.
51
Mecanismos de iteración
1. Para todos los valores de la serie.
2. Mientras se valida una condición.
3. Repetir- hasta que se satisfaga una condición.
52
PARA
Es usado cuando se conoce de antemano, el número de veces que debe repetirse una instrucción o conjunto de ellas.
53
PARA
Los valores de la serie deben ser asignados a una variable, la cual se denomina variable de control.
54
Variables contadoras
Se usan para contar, por lo tanto deben ser de tipo entero.
Ejemplo: Variable de control en un Ciclo Para.
55
Variables acumuladoras
La función de una variable acumuladora es almacenar valores numéricos que generalmente se suman (o multiplican) en cada iteración.
La variable debe ser de tipo entero o real.
56
Variables bandera
Utilizada dentro de la condición de un ciclo, para determinar cuándo un Ciclo se sigue iterando o cuando no.
Debe ser de tipo booleano o entero.
57
Para
Sintaxis
Para <variable> ← <valor_inicial> hasta <valor_final> [ incremento <valor_incremento> ] hacer
<bloque_de_instrucciones>
fin_Para
58
Ejemplo: Imprime los primeros 10 números naturales
Nombre del algoritmo: Numeros_del_1_al_10Variables: contador Tipo entero inicio para contador ← 1 hasta 10 incremento 1 hacer escribir( contador ) fin_para fin
59
Mientras
Ejecuta un bloque de instrucciones, mientras una expresión lógica dada se cumpla.
60
Mientras
Si la condición se cumple, el bloque se ejecuta, después, la condición se vuelve a evaluar.
Si la condición se evalúa la primera vez como falsa, el bloque de instrucciones no será ejecutado.
61
Mientras
mientras ( <expresión_lógica> )
<bloque_de_instrucciones>
fin_mientras
AREA PROGRAMACIÓN 62
Ejemplo: Escribe los primeros 10 números enteros
Nombre del algoritmo: Numeros_del_1_al_10Variables: contador Tipo entero inicio contador ← 1 /* Inicialización del contador */ mientras ( contador <= 10 ) /* Condición */ escribir( contador ) /* Salida */ contador ← contador + 1 /* Incremento */ fin_mientras fin
AREA PROGRAMACIÓN 63
Hacer..Mientras
Se ejecuta el bloque de instrucciones y después se evalúa la condición.
AREA PROGRAMACIÓN 64
Hacer..Mientras
Si es verdadera, se vuelve a ejecutar el bloque de instrucciones.
Y así sucesivamente, hasta que, la condición sea falsa.
65
Hacer Mientras
Hacer <bloque_de_instrucciones>
Mientras ( <expresión_lógica> )
66
Ejemplo: Escribe los primeros 10 números enteros
Nombre del algoritmo: Números_del_1_al_10Variables: contador Tipo entero inicio contador ← 1 /* Inicialización del contador */ hacer escribir ( contador ) /* Salida */ contador ← contador + 1 /* Incremento */ mientras ( contador <= 10 ) /* Condición */ fin