Descripción: Clase 3 de Programación, Prof. Gonzalo Müller
Programación
Clase 3. Composición de Estructuras Prof. Gonzalo Müller
[email protected]
Facultad de Ingeniería Universidad Central de Venezuela
Clase Anterior
Representación de un algoritmo Pseudo Código. Diagramas de Flujo. Diagramas de Rectangulares Estructurados. Estructura Secuencial. Estructura Selectiva: Sencilla Doble Estructura Repetitiva: Mientras Hacer Mientras Corrida en frío Programación – Prof. Gonzalo Müller – Clase 3 – GM - 2
Estructura Compuesta Es una combinación de estructuras secuenciales, condicionales y repetitivas. Compuestas:
Condicional Sencilla + Secuenciales
Condicional Doble + Secuenciales
Mientras + Secuenciales
Hacer Mientras + Secuenciales
Programación – Prof. Gonzalo Müller – Clase 3 – GM - 3
Estructura Selectiva
Estructura Condicional Sencilla: Se ejecutan cierta secuencia de instrucciones dependiendo de la condición dada. PC
DF
DRE
Si (Condición) {
Condición Paso 1 … Paso n
}
V
F
V
Paso 1
Paso 1 Paso n
Condición
... Paso n
Programación – Prof. Gonzalo Müller – Clase 3 – GM - 4
...
Estructura Selectiva
Estructura Condicional Sencilla: Se ejecutan cierta secuencia de instrucciones dependiendo de la condición dada. PC
DF
DRE
Si (Condición) {
Condición Paso 1 … Paso n
}
V
F
V
Paso 1
Paso 1 Paso n
Condición
... Paso n
Programación – Prof. Gonzalo Müller – Clase 3 – GM - 5
...
Estructura Selectiva
Estructura Condicional Doble: Se ejecutan alguna de dos secuencias de instrucciones dependiendo de la condición dada. PC Si (Condición) { Paso 1 … Paso n } sino { Paso 1’ … Paso n’ }
DF V
Condición
DRE F V
Paso 1 Paso n
Paso 1’ Paso n’
Programación – Prof. Gonzalo Müller – Clase 3 – GM - 6
Condición
F
Paso 1
Paso 1’
...
...
Paso n
Paso n’
Estructura Selectiva Ejemplo: Construir el DF, DRE y PC del algoritmo para obtener las raíces de una ecuación cuadrática.
Fase 1: Análisis y Diseño: DES, DF o DRE
Programación – Prof. Gonzalo Müller – Clase 3 – GM - 7
Estructura Repetitiva
Estructura Repetitiva Hacer Mientras: Una secuencia
de paso se repite en forma consecutiva mientras se cumpla una condición dada.
PC
DF
Hacer { Paso 1 … Paso n }
Paso 1
Mientras (Condición)
DRE
Paso 1
Paso n
… Paso n
Condición
V
F Programación – Prof. Gonzalo Müller – Clase 3 – GM - 8
Mientras (Condición)
Estructura Repetitiva
Estructura Repetitiva Mientras: Una secuencia de paso se repite en forma consecutiva dependiendo de una condición dada.
PC Mientras (Condición ) { Paso 1 … Paso n }
DF
DRE
Condición
F
V
Paso 1 Paso n
Programación – Prof. Gonzalo Müller – Clase 3 – GM - 9
Mientras (Condición) Paso 1 … Paso n
Estructura Repetitiva Ejemplo: Construir el DF, DRE y PC del algoritmo para presentar los primeros 4 números enteros a partir de 100. Y realizar una corrida en frío.
Fase 1: Análisis y Diseño: DES, DF o DRE una sola variable
Programación – Prof. Gonzalo Müller – Clase 3 – GM - 10
Estructura Repetitiva Ejemplo: Construir el DF, DRE y PC del algoritmo para presentar los primeros 4 números enteros a partir de 100. Y realizar una corrida en frío. Números Escribir 100 Escribir 101 Escribir 102 Escribir 103 Fin
Programación – Prof. Gonzalo Müller – Clase 3 – GM - 11
Estructura Repetitiva Ejemplo: Construir el DF, DRE y PC del algoritmo para presentar los primeros 4 números enteros a partir de 100. Y realizar una corrida en frío. Números Escribir 100 Escribir 101 Escribir 102 Escribir 103 Fin
Los primeros 100 números ?
Programación – Prof. Gonzalo Müller – Clase 3 – GM - 12
Estructura Repetitiva Ejemplo: Construir el DF, DRE y PC del algoritmo para presentar los primeros 4 números enteros a partir de 100. Y realizar una corrida en frío. 2º DRE 1º DRE
Números
Números
n = 100
Escribir 100
Escribir n
Escribir 101
n=n+1
Escribir 102
Escribir n
Escribir 103
n=n+1
Fin
Escribir n n=n+1 Escribir n Fin
Los primeros 100 números ? Programación – Prof. Gonzalo Müller – Clase 3 – GM - 13
Estructura Repetitiva Ejemplo: Construir el DF, DRE y PC del algoritmo para presentar los primeros 4 números enteros a partir de 100. Y realizar una corrida en frío. 2º DRE 1º DRE
Números
Números
n = 100
Escribir 100
Escribir n
Escribir 101
n=n+1
Escribir 102
Escribir n
Escribir 103
n=n+1
Fin
Escribir n n=n+1 Escribir n Fin Programación – Prof. Gonzalo Müller – Clase 3 – GM - 14
Estructura Repetitiva Ejemplo: Construir el DF, DRE y PC del algoritmo para presentar los primeros 4 números enteros a partir de 100. Y realizar una corrida en frío. 2º DRE 1º DRE
Números
Números
n = 100
Escribir 100
Escribir n
Escribir 101
n=n+1
Escribir 102
Escribir n
Escribir 103
n=n+1
Fin
Escribir n n=n+1 Escribir n Fin Programación – Prof. Gonzalo Müller – Clase 3 – GM - 15
3º DRE Números n = 100 Escribir n n=n+1 Mientras ( Fin
)
Estructura Repetitiva Ejemplo: Construir el DF, DRE y PC del algoritmo para presentar los primeros 4 números enteros a partir de 100. Y realizar una corrida en frío. 2º DRE 1º DRE
Números
Números
n = 100
Escribir 100
Escribir n
Escribir 101
n=n+1
Escribir 102
Escribir n
Escribir 103
n=n+1
Fin
Escribir n
Mientras (n < 104)
n=n+1
Fin
Escribir n Fin Programación – Prof. Gonzalo Müller – Clase 3 – GM - 16
3º DRE Números n = 100 Escribir n n=n+1
Estructura Condicional Compuesta Es una combinación de estructuras condicionales sencillas y dobles. Compuestas: Sencillas + Dobles
Anidadas
Cascadas
Programación – Prof. Gonzalo Müller – Clase 3 – GM - 17
Estructura Condicional Compuesta
Estructura Condicional Anidada: PC Si (Condición 1) { Paso 1 … Paso n } sino Si (Condición 2) { Paso 1’ … Paso n’ }
DF
V
Condición 1
Paso 1 Paso n
F
Condición 2 V
Paso 1’ Paso n’
Programación – Prof. Gonzalo Müller – Clase 3 – GM - 18
F
Estructura Condicional Compuesta DRE
Condición 1
V
Paso 1
V
Condición 2
…
Paso 1’
Paso n
… Paso n’
Programación – Prof. Gonzalo Müller – Clase 3 – GM - 19
F
F
Estructura Condicional Compuesta Ejemplo: Construir un algoritmo para convertir un número dado: sume 2 si es negativo o reste 1 si es positivo.
Fase 1: Análisis y Diseño: DES, DF o DRE una sola variable
Programación – Prof. Gonzalo Müller – Clase 3 – GM - 20
Estructura Condicional Compuesta
Estructura Condicional en Cascada: PC Si (Condición 1) { Secuencia 1 } sino Si (Condición 2) { Secuencia 1’ } sino { Secuencia 1’’ }
DF
Condición 1
V
Secuencia 1
F
Condición 2 F
Secuencia 1’’
Programación – Prof. Gonzalo Müller – Clase 3 – GM - 21
V
Secuencia 1’
Estructura Condicional Compuesta DRE
Condición 1
V
Paso 1
V
F
Condición 2
F
…
Paso 1’
Paso 1’’
Paso n
…
…
Paso n’
Paso n’’
Programación – Prof. Gonzalo Müller – Clase 3 – GM - 22
Estructura Condicional Compuesta Ejemplo: Construir un algoritmo para convertir un número dado: sume 2 si es negativo, reste 1 si es positivo o asigne 10 si es 0.
Fase 1: Análisis y Diseño: DES, DF o DRE una sola variable
Programación – Prof. Gonzalo Müller – Clase 3 – GM - 23
Estructura Condicional Compuesta Ejemplo: Construir el diagrama de flujo para obtener el mayor de 2 números o indique si son iguales.
Fase 1: Análisis y Diseño: DES, DF o DRE
Programación – Prof. Gonzalo Müller – Clase 3 – GM - 24
Estructura Repetitiva Anidada Es una combinación de estructuras repetitivas. PC
DF
Hacer { Hacer
Paso 1
{ …
Paso n
Paso n Condición1
} Mientras (Condición1) } Mientras (Condición2)
F
Condición2 F
Programación – Prof. Gonzalo Müller – Clase 3 – GM - 25
V
V
Estructura Repetitiva Anidada PC
DRE
Mientras (Condición1) { Hacer { … Paso n } Mientras (Condición2)
Mientras (Condición1) Paso 1 … Paso n Mientras (Condición2)
} Programación – Prof. Gonzalo Müller – Clase 3 – GM - 26
Estructura Repetitiva Anidada Ejemplo: Construir un algoritmo que dado N escriba la siguiente secuencia: 1
2
3
…
N–1
1
2
3
…
N–1
N
… 1
Fase 1: Análisis y Diseño: DES, DF o DRE Programación – Prof. Gonzalo Müller – Clase 3 – GM - 27
Representación de un algoritmo Las líneas siempre debe ir del lado derecho.
…
…
…
DERECHA • Condicional Sencilla
DERECHA • Repetitiva Hacer Mientras
• Repetitiva Mientras
IZQUIERDA ÚNICA EXCEPCIÓN • Condicional Doble
LAS LÍNEAS DE FLUJO NO PUEDEN CRUZARSE Programación – Prof. Gonzalo Müller – Clase 3 – GM - 28
Algoritmo Propio Es aquel algoritmo características:
que
posee
la
siguientes
Tiene un punto de entrada. Tiene un sólo punto de salida. Todos los posibles caminos llevan desde el punto de entrada al punto de salida. Termina tras un número finito de pasos. No tiene bucles infinitos. Programación – Prof. Gonzalo Müller – Clase 3 – GM - 29
Algoritmo Propio Es aquel algoritmo características:
que
posee
la
siguientes
Debe producir al menos una salida o efecto. No contiene sentencias muertas. No existen ambigüedades. Teorema de Böhm-Jacopini, 1966
Programación – Prof. Gonzalo Müller – Clase 3 – GM - 30
Algoritmo Propio Puede ser diseño utilizando únicamente tres tipos de estructuras:
Secuencial
Selectiva
Repetitiva
El PC y DRE facilitan el desarrollo de Algoritmos Propios.
Programación – Prof. Gonzalo Müller – Clase 3 – GM - 31
Algoritmo Propio Ejemplo: El siguiente no es un algoritmo propio: Paso 1: Hacer k = 1 Paso 2: Si (no estamos en la librería k) Paso 2.1: Salir del lugar donde estamos. Paso 2.2: Dirigirnos a la librería k. Paso 3: Solicitar el libro Paso 4: Si (no lo tiene) Paso 4.1: Hacer k = k + 1 Paso 4.2: Ir al Paso 2 Paso 5: Cancelar el libro, Detener Programación – Prof. Gonzalo Müller – Clase 3 – GM - 32
Bucle infinito
Algoritmo Propio Ejemplo: Este tampoco es un algoritmo propio: Paso 1: Hacer una lista de n librerías Paso 2: Hacer k = 1 Paso 3: Si ya visitamos todas las librerías (k > n), entonces: Paso 3.1: No es posible encontrar el libro, Detener Paso 4: Si no estamos en la librería k, entonces: Paso 4.1: Salir del lugar donde estamos. Paso 4.2: Dirigirnos a la librería k. Paso 5: Solicitar el libro Puntos de salida Paso 6: Si no lo tiene, entonces: Paso 6.1: Hacer k = k + 1 Paso 6.2: Ir al Paso 3 Paso 7: Cancelar el libro, Detener Programación – Prof. Gonzalo Müller – Clase 3 – GM - 33
Constantes y Variables
Constantes: Tienen un valor fijo a lo largo del algoritmo.
Variables: Pueden tomar diferentes valores a lo largo del algoritmo. Ejemplo 3.6: Constantes
x =
−b ±
2
b − 4 ac Variables 2a
Programación – Prof. Gonzalo Müller – Clase 3 – GM - 34
Asignación Establece un valor para una variable: Un valor constante. El valor de otra variable. Resultado de una expresión aritmética o lógica. Se utiliza el operador asignación = para la asignación: Variable = Valor Siempre a la izquierda
Programación – Prof. Gonzalo Müller – Clase 3 – GM - 35
Asignación Ejemplo: A = 24
← Correcto
A=B
← Correcto (Asigna el valor de B a A)
A = (B + 1)/2 ← Correcto 24 = A
← Incorrecto
B=A
← Correcto (Asigna el valor de A a B)
(B + 1)/2 = A ← Incorrecto Programación – Prof. Gonzalo Müller – Clase 3 – GM - 36
Usos de las Variables
Entre los usos más comunes de las que se utilizan en un algoritmo se encuentran: Contadores. Acumuladores.
Programación – Prof. Gonzalo Müller – Clase 3 – GM - 37
Usos de las Variables
Contadores: Son variables cuyo valor se aumenta o disminuye un valor constante cada vez que se produce un determinado suceso o acción. Son variables enteras. Generalmente se utiliza en estructuras repetitivas. Ejemplo: Número de estudiantes que retiran un bandeja en el comedor universitario. Número de números enteros pares encontrados. Número de intersecciones entre curvas convexas. Programación – Prof. Gonzalo Müller – Clase 3 – GM - 38
Usos de las Variables
El uso de los contadores consta de dos operaciones: Inicialización: se le asigna un valor inicial a la variable. Variable = Valor Inicial
Usualmente antes del bucle.
Conteo: Dadas las condiciones necesarias la variable se aumenta o disminuye un valor constante. Variable = Variable ± Constante
Programación – Prof. Gonzalo Müller – Clase 3 – GM - 39
Usos de las Variables
Acumuladores: Son variables cuyo valor se aumenta o disminuye un valor determinado continuamente a lo largo de un proceso dado. Ejemplo: Cantidad de calorías consumidas en un día. Cantidad de dinero ahorrado en un mes. Cantidad de puntos acumulados en la materia de programación.
Programación – Prof. Gonzalo Müller – Clase 3 – GM - 40
Usos de las Variables
El uso de los acumuladores consta de dos operaciones: Inicialización: se le asigna un valor inicial a la variable. Variable = Valor Inicial
Usualmente al comienzo del proceso.
Programación – Prof. Gonzalo Müller – Clase 3 – GM - 41
Usos de las Variables Acumulación: Dadas las condiciones necesarias se la variable se aumenta o disminuye un valor variable. Variable = Variable ± Variable2 Variable = Variable * Variable2
Programación – Prof. Gonzalo Müller – Clase 3 – GM - 42
Usos de las Variables Ejemplo: La cantidad de bandejas utilizadas en el comedor:
Programación – Prof. Gonzalo Müller – Clase 3 – GM - 43
Usos de las Variables Ejemplo: La cantidad de bandejas utilizadas en el comedor: Variable → bandeja
Programación – Prof. Gonzalo Müller – Clase 3 – GM - 44
Usos de las Variables Ejemplo: La cantidad de bandejas utilizadas en el comedor: Variable → bandeja Inicialmente se han utilizado 0 bandejas: bandeja = 0
Programación – Prof. Gonzalo Müller – Clase 3 – GM - 45
Usos de las Variables Ejemplo: La cantidad de bandejas utilizadas en el comedor: Variable → bandeja Inicialmente se han utilizado 0 bandejas: bandeja = 0 A medida que los usuarios toman una bandeja incrementamos el valor de bandeja. bandeja = bandeja + 1
Programación – Prof. Gonzalo Müller – Clase 3 – GM - 46
Usos de las Variables Ejemplo: La cantidad de bandejas utilizadas en el comedor: Variable → bandeja
Contador
Inicialmente se han utilizado 0 bandejas: bandeja = 0
Inicialización
A medida que los usuarios toman una bandeja incrementamos el valor de bandeja. bandeja = bandeja + 1
Programación – Prof. Gonzalo Müller – Clase 3 – GM - 47
Conteo
Usos de las Variables
Generalmente se utilizan en estructuras repetitivas: Inicialización
Variable = Valor Inicial
… … Conteo o Acumulación Mientras (Condición)
Variable = Variable ± Constante ó Variable = Variable ± Variable2 Variable = Variable * Variable2
Establece la parada del bucle cuando: • Se satisface una condición dada • Se ha alcanzado el valor deseado para el Contador o Acumulador Programación – Prof. Gonzalo Müller – Clase 3 – GM - 48
Usos de las Variables
Generalmente se utilizan en estructuras repetitivas: Inicialización
Variable = Valor Inicial
…
Nuevo Valor
…
Variable = Variable ± Constante ó
Conteo o Acumulación Mientras (Condición)
Viejo Valor
Variable = Variable ± Variable2 Variable = Variable * Variable2 Nuevo Valor
Viejo Valor
Establece la parada del bucle cuando: • Se satisface una condición dada • Se ha alcanzado el valor deseado para el Contador o Acumulador Programación – Prof. Gonzalo Müller – Clase 3 – GM - 49
Usos de las Variables
Generalmente se utilizan en estructuras repetitivas: Inicialización
Variable = Valor Inicial
…
…
…
…
Conteo o Acumulación
Variable = Variable ± Variable2
Mientras (Condición)
Mientras (Condición)
Se satisface una condición dada Programación – Prof. Gonzalo Müller – Clase 3 – GM - 50
Usos de las Variables
Generalmente se utilizan en estructuras repetitivas: Inicialización
Variable = Valor Inicial
…
…
…
…
Conteo o Acumulación
Variable = Variable ± Constante
Mientras (Condición)
Mientras (Variable ? Valor)
Se ha alcanzado el valor deseado para el Contador o Acumulador Programación – Prof. Gonzalo Müller – Clase 3 – GM - 51
Variables
Lista de Variables: Una vez desarrollado el algoritmo es útil para la posterior implementación en el lenguaje construir una lista con todas las variables utilizadas en el algoritmo. Variable
Programación – Prof. Gonzalo Müller – Clase 3 – GM - 52
Variables Ejemplo: Desarrollar un algoritmo para calcular la media armónica de n números positivos.
Fase 1: Análisis y Diseño: DES, DF o DRE y LV Identificar contadores y acumuladores.
Programación – Prof. Gonzalo Müller – Clase 3 – GM - 53
Variables Ejemplo: Desarrollar un algoritmo para calcular la media armónica de n números positivos.
Fase 1: Análisis y Diseño: DES, DF o DRE y LV Identificar contadores y acumuladores. Teoría Asociada:
Leyendo N
media armónica: n/[1/x1+1/x2+···+1/xn] Programación – Prof. Gonzalo Müller – Clase 3 – GM - 54
Sin leer N
Ejercicio 3.1 Para cada uno de los siguientes problemas: a) Comer una hamburguesa. b) Leer un libro. c) Bajar de peso. e) Elaborar un emparedado. f) Comer en el comedor universitario. g) Comprar el Libro 6 de Harry Potter. Fase 1: Análisis y Diseño: DES, DF, DRE y LV. Señalar en DF o DRE: Estructuras Básicas de Programación. Realizar una corrida en frío. Programación – Prof. Gonzalo Müller – Clase 3 – GM - 55
Ejercicio 3.2 Para cada uno de los siguientes problemas: a) Restar el mayor del menor de 2 números b) Sumar 2 números si son iguales y de lo contrario, reste el mayor del menor. c) Dividir 2 números (0?), el menor entre el mayor. Fase 1: Análisis y Diseño: DES, DF, DRE y LV. Señalar en DF o DRE: Estructuras, Contadores, Acumuladores, Inicialización, Conteo y Acumulación. Realizar una corrida en frío. Programación – Prof. Gonzalo Müller – Clase 3 – GM - 56
Ejercicio 3.2 Para cada uno de los siguientes problemas: d) Presentar la secuencia de los N números enteros que preceden al 100: 100, 99, 98, 97, ... e) Leer y escribir números hasta que el leído sea mayor que 5. f) Disminuir un número de 2 en 2 hasta que este sea negativo, presentado la secuencia en la salida. Fase 1: Análisis y Diseño: DES, DF, DRE y LV. Señalar en DF o DRE: Estructuras, Contadores, Acumuladores, Inicialización, Conteo y Acumulación. Realizar una corrida en frío.
Programación – Prof. Gonzalo Müller – Clase 3 – GM - 57
Ejercicio 3.2 Para cada uno de los siguientes problemas: g) Dados 2 números presentar la secuencia de números entre el 1º número y el 2º número. h) Sumar números hasta que los últimos dos números leídos sean negativos. Fase 1: Análisis y Diseño: DES, DF, DRE y LV. Señalar en DF o DRE: Estructuras, Contadores, Acumuladores, Inicialización, Conteo y Acumulación Realizar una corrida en frío. Programación – Prof. Gonzalo Müller – Clase 3 – GM - 58
Ejercicio 3.3 Para cada uno de los siguientes problemas: a) Promediar los negativos y promediar los no negativos de un conjunto de números dados. b) Hallar el producto de los negativos y el producto de los positivos de un conjunto de números dados. Fase 1: Análisis y Diseño: DES, DF, DRE y LV. Señalar en DF o DRE: Estructuras, Contadores, Acumuladores, Inicialización, Conteo y Acumulación Realizar una corrida en frío. Programación – Prof. Gonzalo Müller – Clase 3 – GM - 59
Resumen
Combinación de Estructuras: Condicionales +
Secuenciales, Repetitivas + Secuenciales, Condicional Compuestas: Anidadas y Cascadas, Estructura Repetitiva Anidadas. Algoritmos Propios. Constantes y Variables. Asignación: =. Usos de las Variables: Contadores y Acumuladores. Lista de Variables. Programación – Prof. Gonzalo Müller – Clase 3 – GM - 60