teoría tema 3
TRANSCRIPT
Introducción a la ProgramaciónGrado en Ingeniería Informática
Teoría - Curso 2010-2011
Contenido 3 – Programación Estructurada
Contenido 3.- Programación Estructurada
3.1 Características de la Programación Estructurada3.2 Estructura Secuencial3.3 Estructura Selectiva
3.3.1 Simple3.3.2 Doble3.3.3 Múltiple
2
3.3.3 Múltiple3.4 Estructuras Repetitivas
3.4.1 Mientras3.4.2 Repetir3.4.3 Desde
3.5 Estructuras anidadas3.6 Ejercicios propuestos
Contenido 3.- Programación estructurada
3.1.-Características de la Programación Estructurada
Características de la Programación Estructurada:
� La programación estructurada es el conjunto de técnicas que incorporan:
– Recursos abstractos
3
– Recursos abstractos
– Diseño descendente
– Estructuras básicas:
– Secuenciales.
– Selectivas.
– Repetitivas.
Contenido 3.- Programación estructurada
3.2.-Estructura Secuencial
Diagrama de flujo:
Instrucción 1 Instrucción 1
Diagrama N-S:
Instrucción 1
Pseudocódigo:
4
Instrucción 2
Instrucción n
Instrucción 2
…
Instrucción n
Instrucción 1Instrucción 2
…..Instrucción n
Contenido 3.- Programación estructurada
3.2.-Estructura Secuencial
Diagrama de flujo:
Algoritmo suma
Leer (A, B)
Diagrama N-S:
Algoritmo suma_productovarentero : A, B, S, P
Pseudocódigo:
Ejemplo: Cálculo de la suma y producto de dos números
inicio
Leer A y B
5
Leer (A, B)
S�A+ B
P�A* B
Escribir (s, p)
Fin_algoritmo
entero : A, B, S, Pinicio
leer (A, B)S� A+ BP� A* Bescribir (S, P)
fin_algoritmo
S � A + B
P � A * B
Escribir S y P
fin
Contenido 3.- Programación estructurada
3.3.-Estructura Selectiva
El conjunto de instrucciones se ejecutan o no en función de una determinada condición.
Tipos:
– Simple
6
– Simple
– Doble
– Múltiple
Contenido 3.- Programación estructurada
3.3.1-Estructura Selectiva Simple
Diagrama de flujo: Diagrama N-S:
si <condición> entonces
Pseudocódigo:
Condición Falsa
FCondición
v
7
si <condición> entonces<instrucciones>
fin_siInstrucciones
VerdaderaF
Instrucciones
v
Contenido 3.- Programación estructurada
3.3.1-Estructura Selectiva Simple
Diagrama de flujo:
Algoritmo mayor_que_cero
Leer (numero)
Diagrama N-S:
Algoritmo mayor_que_cerovar
Pseudocódigo:
Ejemplo: Leer un número por teclado y comprobar si el número es mayor que cero
inicio
Leer (numero)
8
Leer (numero)
V F
Fin_algoritmo
varentero: numero
inicioleer (numero)si (numero >0) entonces
escribir (“ número mayor que cero”)
fin_sifin_algoritmo
Verdadera
numero > 0
Escribir (numero mayor que cero)
Falsa
fin
Numero > 0
Escribir (“numero mayor que cero”)
Contenido 3.- Programación estructurada
3.3.2.-Estructura Selectiva Doble
Diagrama de flujo: Diagrama N-S:
si <condición> entonces<instrucciones A>
Pseudocódigo:
v
CondiciónVerdadera Falsa
FCondición
9
si_no<instrucciones B>
fin_si
v
InstruccionesA InstruccionesB
F
InstruccionesA InstruccionesB
Contenido 3.- Programación estructurada
3.3.2.-Estructura Selectiva Doble
Diagrama de flujo:
Algoritmo par_impar
Leer (n)
Diagrama N-S:
Algoritmo par_imparvar
entero: n
Pseudocódigo:
Ejemplo: Algoritmo que compruebe si un número introducido por teclado es par o impar
Leer N
inicio
10
Leer (n)
V F
Fin_algoritmo
entero: ninicioleer (n)si (n mod 2 =0) entonces
escribir(“PAR”)si_no
escribir(“IMPAR”)fin_si
fin_algoritmo
N mod 2 = 0
Escribir (“numero PAR”)
Escribir (“numero IMPAR”)
Escribir PAR
Verdadera Falsa
Escribir IMPAR
fin
N mod 2 = 0
Contenido 3.- Programación estructurada
3.3.3.-Estructura Selectiva Múltiple
Diagrama de flujo:
Expresión
11
Instrucción1 Instrucción 2 Instrucción n Instrucción x
Expresión
1 2 n en_otro_caso
Contenido 3.- Programación estructurada
3.3.3.-Estructura Selectiva Múltiple
Diagrama NS:
Expresión
12
1 2 3 …… n
Ins1 Ins 2 Ins 3 …. Ins n Ins x
Expresión
Otro_caso
Contenido 3.- Programación estructurada
3.3.3.-Estructura Selectiva Múltiple
Pseudocódigo:
segun_sea (expresión) hacer1: instrucción/es 1
13
1: instrucción/es 12: instrucción/es 23: instrucción/es 3…..n: instrucción/es nen_otro_caso : instrucción/es x
fin_segun
Contenido 3.- Programación estructurada
3.3.3.-Estructura Selectiva Múltiple
Ejemplo: Se desea diseñar un algoritmo que escriba los nombres de los días
de la semana en función del valor de una variable dia introducida por teclado, que representa su posición dentro de la semana.
Leer dia
inicio
14
EscribirLUNES
dia
EscribirMARTES
EscribirMIERCOLES
EscribirJUEVES
EscribirVIERNES
EscribirSABADO
EscribirDOMINGO
fin
1 2 3 4 5 6 7
EscribirERROR
en_otro_caso
Contenido 3.- Programación estructurada
3.3.3.-Estructura Selectiva Múltiple
día
Diagrama N-S:
15
1 2 3 4 5 6 7 Otro_caso
Escribir(lunes)
Escribir(martes)
Escribir(miércoles)
Escribir(jueves)
Escribir(viernes)
Escribir(sábado)
Escribir(domingo)
Escribir(día incorrecto)
Contenido 3.- Programación estructurada
3.3.3.-Estructura Selectiva Múltiple
Pseudocódigo:
Algoritmo Nombre_diasvar
entero: diainicio
leer (dia)segun_sea (dia) hacer
16
segun_sea (dia) hacer1: escribir (“LUNES”)2: escribir (“MARTES”)3: escribir (“MIERCOLES”)4: escribir (“JUEVES”)5: escribir (“VIERNES”)6: escribir (“SABADO”)7: escribir (“DOMINGO”)en_otro_caso
escribir (“Día incorrecto”)fin_segun
fin_algoritmo
Contenido 3.- Programación estructurada
3.4.-Estructuras Repetitivas
Permiten repetir una o varias instrucciones varias veces en función de la evaluación de una determinada condición. A estas estructuras se les denomina bucles, y se llama iteración a cada repetición de la ejecución de la secuencia de instrucciones que forman el llamado cuerpo del bucle.
17
Tipos:
� Estructura Mientras
� Estructura Repetir_hasta
� Estructura Desde
Contenido 3.- Programación estructurada
3.4.1.-Estructura Repetitiva Mientras
Diagrama de flujo: Diagrama N-S: Pseudocódigo:
En la estructura repetitiva mientras el conjunto de instrucciones que forman el cuerpo del bucle se repite mientras la condición se evalúe como verdadera. La condición se encuentra al principio del bucle
18
mientras (condición) hacerinstrucción 1instrucción 2…….instrucción n
fin_mientras
Contenido 3.- Programación estructurada
Condición
Instrucciones
Falsa
Verdadera
Condiciónmientras
3.4.1-Estructura Repetitiva Mientras
Diagrama de flujo:
Algoritmo producto_sumas
leer a y b
Diagrama N-S:
Algoritmo producto _sumasvar
entero : a,b, cont, prodinicio
Pseudocódigo:
Ejemplo: Realizar el producto de dos números mediante el operador suma
inicio
Leer a y b
19
cont ���� 0prod ���� 0
Mientras (cont<b)
prod ���� prod + acont ���� cont + 1
escribe prod
Fin_algoritmo
inicioleer (a, b)cont� 0prod� 0mientras (cont < B) hacer
prod� prod + Acont � cont + 1
fin_mientrasescribir (prod)
fin_algoritmo
Contenido 3.- Programación estructurada
cont < b
prod� prod + a
F
cont� 0prod� 0
cont � cont + 1
fin
Escribir prodV
3.4.2.-Estructura Repetitiva Repetir
Diagrama de flujo: Diagrama N-S: Pseudocódigo:
En la estructura repetir , la condición se encuentra al final del bucle, y el conjunto de instrucciones que forman el cuerpo del mismo se ejecuta hasta que se cumpla una determinada condición.
20
repetirinstrucción 1instrucción 2…….instrucción n
hasta_que (condición)
Contenido 3.- Programación estructurada
Condición
repetir
CondiciónFalsa
Instrucciones
Hasta_que
Instrucciones
3.4.2-Estructura Repetitiva Repetir
Diagrama de flujo:
Algoritmo factorial
leer num
fact ���� 1
Diagrama N-S:
Algoritmo factorialvar
entero: cont, numreal: fact
Pseudocódigo:
Ejemplo: Realiza el algoritmo necesario para calcular el factorial de un número
fact� 1
inicio
Leer num
21
fact ���� 1cont ���� 1
Repetir fact ���� fact*contcont ���� cont + 1
Hasta_que (cont>num)
escribe fact
Fin_algoritmo
real: factinicio
leer (num)fact� 1cont � 1repetir
fact � fact * contcont � cont + 1
hasta_que ( cont > num)escribir (“factorial”, fact)
fin_algoritmo
Contenido 3.- Programación estructurada
cont > num
fact� 1cont � 1
Falsa
Verdadera
fact� fact * contcont � cont + 1
Escribir fact
fin
3.4.3.-Estructura Repetitiva Desde
Diagrama de flujo: Diagrama N-S: Pseudocódigo:
La estructura desde ejecuta las acciones del cuerpo del bucle un número determinado de veces, controlando de modo automático las iteraciones.
22
desde i ���� Vi hasta Vf hacerinstrucciones
fin_desde
Contenido 3.- Programación estructurada
desde i� Vi hasta Vf hacer
instrucciones
Instrucciones
i > Vf
i� Vi
i� i + 1
V
F
3.4.3-Estructura Repetitiva Desde
Diagrama de flujo:
Ejemplo: Cálculo de la suma de los números enteros comprendidos entre 1 y 100.
suma � 0
inicio
23 Contenido 3.- Programación estructurada
suma� suma + i
i > 100
i� 1
i � i + 1
Verdadera
fin
escribir sumaFalsa
3.4.3-Estructura Repetitiva Desde
Algoritmo suma_cien
suma � 0
desde i ���� 1 hasta 100
Diagrama N-S:
Ejemplo: Cálculo de la suma de los números enteros comprendidos entre 1 y 100.
24
desde i ���� 1 hasta 100
suma ���� suma + i
escribe suma
Fin_algoritmo
Contenido 3.- Programación estructurada
3.4.3-Estructura Repetitiva Desde
Algoritmo suma_cienvar
entero: suma, i
Pseudocódigo:
Ejemplo: Cálculo de la suma de los números enteros comprendidos entre 1 y 100.
25
entero: suma, iiniciosuma � 0desde i ���� 1 hasta 100 hacer
suma � suma + ifin_desde
fin_algoritmo
Contenido 3.- Programación estructurada
3.4.-Estructuras Repetitivas
Sustitución de unas estructuras por otras:
� Podemos sustituir siempre una estructura desde por una estructura repeti r o por una estructura mientras .
� Una estructura repetir o mientras , sin embargo, se puede sustituir por una estructura desde sólo cuándo se conoce de antemano el número de veces que van a ejecutarse las acciones del bucle.
26
� Una estructura mientras puede sustituirse por una estructura repetir cuando no altere el resultado el hecho de que las acciones del bucle se ejecuten al menos una vez.
� Una estructura repetir siempre puede sustituirse por una estructura mientras.En el peor de los casos, también habría que escribir el conjunto de instrucciones del bucle antes del mismo, para que se ejecuten siempre al menos una vez.
� Estas afirmaciones pueden variar en función de cómo estén definidas las diferentes estructuras en cada lenguaje de programación.
Contenido 3.- Programación estructurada
3.5.-Estructuras Anidadas
Tanto las estructuras selectivas como las estructuras repetitivas se pueden
anidar, es decir, estar contenidas unas dentro de otras.
a) CORRECTO b) CORRECTO c) INCORRECTO
27 Contenido 3.- Programación estructurada
3.5.-Estructuras Anidadas
Ejemplo: escribe todos los números primos entre 2 y 1000.Algoritmo primosvar
lógico: encontradoentero : i, divisor
iniciodesde i� 2 hasta i �100 hacer
encontrado � falso
28
divisor � 2mientras (divisor ≤ sqrt(i) and encontrado = falso) hacer
si (i mod divisor = 0) entoncesencontrado � verdaderofin_sidivisor � divisor + 1
fin_mientrassi (encontrado = falso) entonces
escribir (i)fin_desde
fin_algoritmo
Contenido 3.- Programación estructurada