programación estructurada: tema 2. estructuras de control · diagrama de flujo. 3.2 hacer-mientras...

47
Programación Estructurada: Tema 2. Estructuras de Control David Martínez Torres Instituto de Computación Universidad Tecnológica de la Mixteca dtorres@mixteco .utm.mx Oficina 37

Upload: others

Post on 16-Mar-2020

7 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Programación Estructurada: Tema 2. Estructuras de Control · Diagrama de flujo. 3.2 hacer-mientras en C do ... Ejemplo del ciclo for con un do-while anidado Ejemplo 11. Realice una

Programación Estructurada:

Tema 2. Estructuras de

ControlDavid Martínez Torres

Instituto de Computación

Universidad Tecnológica de la Mixteca

[email protected]

Oficina 37

Page 2: Programación Estructurada: Tema 2. Estructuras de Control · Diagrama de flujo. 3.2 hacer-mientras en C do ... Ejemplo del ciclo for con un do-while anidado Ejemplo 11. Realice una

Contenido

1. Secuencial

2. Selectivas

3. Iterativas

Page 3: Programación Estructurada: Tema 2. Estructuras de Control · Diagrama de flujo. 3.2 hacer-mientras en C do ... Ejemplo del ciclo for con un do-while anidado Ejemplo 11. Realice una

Introducción

Bohm y Jacopini [1][2][3] 1966,

demostraron que todos los programas

podrían ser escritos usando solo tres

estructuras de control con una sola entrada

y una sola salida:

• De secuencia

• De selección y,

• De repetición.

Page 4: Programación Estructurada: Tema 2. Estructuras de Control · Diagrama de flujo. 3.2 hacer-mientras en C do ... Ejemplo del ciclo for con un do-while anidado Ejemplo 11. Realice una

Introducción

Teorema de la programación estructurada:

• “Un programa propio es aquel que cumple el uso de las

estructuras de control: secuenciales, selectivas, y

repetitivas.”

• Posee un solo punto de entrada y salida.

• Se puede recorrer toda la estructura del programa

modular.

• Todas las instrucciones son ejecutables y no existen

bucles infinitos.

Page 5: Programación Estructurada: Tema 2. Estructuras de Control · Diagrama de flujo. 3.2 hacer-mientras en C do ... Ejemplo del ciclo for con un do-while anidado Ejemplo 11. Realice una

1. Estructura de control Secuencial

Son instrucciones que se ejecutan una detrás de otras. En

problemas complejos, también se pueden identificar estas

estructuras de control.

Ejemplo 1. Instrucciones secuenciales

int main(){

int cont;

printf(“Programa que calcula el promedio de calificaciones

introducidas por teclado”);

}

Page 6: Programación Estructurada: Tema 2. Estructuras de Control · Diagrama de flujo. 3.2 hacer-mientras en C do ... Ejemplo del ciclo for con un do-while anidado Ejemplo 11. Realice una

1. Estructura de control Secuencial

Ejercicio 1. Escriba un programa que dado el radio de un

círculo por teclado, calcule e imprima su correspondiente

área y perímetro.

area=pi*radio2

perimetro=2*pi*radio

Page 7: Programación Estructurada: Tema 2. Estructuras de Control · Diagrama de flujo. 3.2 hacer-mientras en C do ... Ejemplo del ciclo for con un do-while anidado Ejemplo 11. Realice una

2. Estructura de control Selectiva

Estructura de control que se utiliza cuando se tiene que evaluar una expresión y el resultado se ejecuta una sola vez

Se clasifican en: selectivas simples, selectivas dobles(binarias) y, selectivas múltiples.

Page 8: Programación Estructurada: Tema 2. Estructuras de Control · Diagrama de flujo. 3.2 hacer-mientras en C do ... Ejemplo del ciclo for con un do-while anidado Ejemplo 11. Realice una

2.1 Selectivas simples

Se utilizan cuando se tiene

que evaluar una expresión y

solo tiene acciones en caso

que sea verdadera la

expresión.

Sintaxis

if(condControl)

sentencia 1;

O bien:

if (condControl){

sentencia 1;

sentencia n;

}

Page 9: Programación Estructurada: Tema 2. Estructuras de Control · Diagrama de flujo. 3.2 hacer-mientras en C do ... Ejemplo del ciclo for con un do-while anidado Ejemplo 11. Realice una

2.1 Selectiva simple

Ejercicio 2. Dado un número real por teclado,

determine si es positivo.

Ejercicio 3. Dada una calificación de una materia de

un alumno, determinar si aprobó.

Page 10: Programación Estructurada: Tema 2. Estructuras de Control · Diagrama de flujo. 3.2 hacer-mientras en C do ... Ejemplo del ciclo for con un do-while anidado Ejemplo 11. Realice una

2.2 Selectiva doble

Se selecciona cuando se

tiene que evaluar una

expresión y se colocan

acciones tanto cuando la

expresión es verdadera o

falsa.

if (condControl){

sentencia 1;

sentencia n;

}

else {

sentencia 1;

sentencia n;

}

Page 11: Programación Estructurada: Tema 2. Estructuras de Control · Diagrama de flujo. 3.2 hacer-mientras en C do ... Ejemplo del ciclo for con un do-while anidado Ejemplo 11. Realice una

2.2 Selectiva doble (binaria)

Ejemplo 2: Programa que determina si un alumno aprobó un examen

Seudocódigo

si calif>=6 y calif<=10 entonces

escribir(“Aprobaste el examen”)

sino

si calif>=0 y calif<6

escribir(“No aprobaste el examen”)

sino

escribir(“Calificación no válida”)

finSi

finSi

Código …

Page 12: Programación Estructurada: Tema 2. Estructuras de Control · Diagrama de flujo. 3.2 hacer-mientras en C do ... Ejemplo del ciclo for con un do-while anidado Ejemplo 11. Realice una

Codificación del ejemplo de selectiva doble.

Page 13: Programación Estructurada: Tema 2. Estructuras de Control · Diagrama de flujo. 3.2 hacer-mientras en C do ... Ejemplo del ciclo for con un do-while anidado Ejemplo 11. Realice una

Ejemplo 3. Analizar los siguientes fragmentos de código.

Page 14: Programación Estructurada: Tema 2. Estructuras de Control · Diagrama de flujo. 3.2 hacer-mientras en C do ... Ejemplo del ciclo for con un do-while anidado Ejemplo 11. Realice una

2.2 Selectivas múltiples

Ejercicios:

4. Dado un número entero por teclado, determine si es número par o impar.

5. Dados tres números reales por teclado, determine cuál es el mayor de todos.

6. En la UTM aprobar los niveles del idioma Inglés es obligatorio, existen 7 niveles de Ingles que se deben aprobar semestre a semestre durante los 5 años de carrera. Dado por teclado el número de semestre y el nivel de Inglés aprobado, encuentra e imprima los niveles de inglés que le faltan por cursar y el número de semestres que tiene disponibles para terminar en tiempo y forma; de lo contrario imprima los niveles de inglés que le faltan por cursar y el número de semestres que le faltarían para terminar todos los niveles de inglés.

Page 15: Programación Estructurada: Tema 2. Estructuras de Control · Diagrama de flujo. 3.2 hacer-mientras en C do ... Ejemplo del ciclo for con un do-while anidado Ejemplo 11. Realice una

2.3 Selectivas múltiples

Esta estructura de control se utiliza cuando se evalúa

una expresión entera o caracter y pueda tener mas de

dos alternativas.

Es una alternativa de la estructura de control

selectiva doble.

Se suele utilizar cuando la aplicación tiene menú de

opciones.

Page 16: Programación Estructurada: Tema 2. Estructuras de Control · Diagrama de flujo. 3.2 hacer-mientras en C do ... Ejemplo del ciclo for con un do-while anidado Ejemplo 11. Realice una

2.3 Selectiva múltiple (sintaxis en C)

switch (expresion){

case exp-const: sentencia 1;

sentencia n;

break;

case exp-const: sentencia 1;

sentencia n;

break;

default : sentencia 1;

sentencia n;

}

Page 17: Programación Estructurada: Tema 2. Estructuras de Control · Diagrama de flujo. 3.2 hacer-mientras en C do ... Ejemplo del ciclo for con un do-while anidado Ejemplo 11. Realice una

2.3 Selectiva múltiple (sintaxis en C)

Ejercicio 7. Escribir un programa que realice

operaciones aritméticas utilizando la estructura de

control múltiple, considere las validaciones

principales.

Page 18: Programación Estructurada: Tema 2. Estructuras de Control · Diagrama de flujo. 3.2 hacer-mientras en C do ... Ejemplo del ciclo for con un do-while anidado Ejemplo 11. Realice una

2.3 Selectiva múltiple

Ejemplo 3: Resolver ecuaciones de 2º grado por la formula general

𝑥1,2 =−𝑏± 𝑏2−4𝑎𝑐

2𝑎

Este problema es recomendable el uso de estructuras de control selectivas dobles, sin embargo, es una alternativa e involucra otros elementos interesantes.

Page 19: Programación Estructurada: Tema 2. Estructuras de Control · Diagrama de flujo. 3.2 hacer-mientras en C do ... Ejemplo del ciclo for con un do-while anidado Ejemplo 11. Realice una

Ejemplo 4. Analice lo que hace el siguiente código.

Page 20: Programación Estructurada: Tema 2. Estructuras de Control · Diagrama de flujo. 3.2 hacer-mientras en C do ... Ejemplo del ciclo for con un do-while anidado Ejemplo 11. Realice una

3. Repetitivas

Necesarias en gran parte de solución de problemas

Ejecutan un conjunto de operaciones, un número determinado o indeterminado de veces.

Se clasifican en:

while (mientras)

do while (hacer-mientras)

for (para)

Page 21: Programación Estructurada: Tema 2. Estructuras de Control · Diagrama de flujo. 3.2 hacer-mientras en C do ... Ejemplo del ciclo for con un do-while anidado Ejemplo 11. Realice una

3.1 while (mientras)

Las sentencias que forman el cuerpo del bucle se ejecutan

0 o más veces.

Bucle de PREPRUEBA.

Condición verdadero

seguirá ejecutando el cuerpo

Algunos ejemplos de bucles con nombre:

Bucle controlado por contador

Bucle controlado por centinela

Bucle contador

Page 22: Programación Estructurada: Tema 2. Estructuras de Control · Diagrama de flujo. 3.2 hacer-mientras en C do ... Ejemplo del ciclo for con un do-while anidado Ejemplo 11. Realice una

3.1 while (mientras)

while (expresion) {

sentencia 1;

sentencia n;

}

Page 23: Programación Estructurada: Tema 2. Estructuras de Control · Diagrama de flujo. 3.2 hacer-mientras en C do ... Ejemplo del ciclo for con un do-while anidado Ejemplo 11. Realice una

3.1 while (mientras)

Bucle controlado por contador

Variable de control del ciclo

inicialización, evaluación, incremento

Ejemplo 5. Escriba un programa que calcule la suma n números reales dados por teclado, donde n también es dado por teclado.

Posteriormente realice la prueba de escritorio correspondiente.

Page 24: Programación Estructurada: Tema 2. Estructuras de Control · Diagrama de flujo. 3.2 hacer-mientras en C do ... Ejemplo del ciclo for con un do-while anidado Ejemplo 11. Realice una

Ejemplo 6. Escriba un programa que calcule el

promedio de n calificaciones de un alumno, dadas por

teclado. Considere las validaciones necesarias.

Posteriormente, realice la prueba de escritorio

correspondiente.

Page 25: Programación Estructurada: Tema 2. Estructuras de Control · Diagrama de flujo. 3.2 hacer-mientras en C do ... Ejemplo del ciclo for con un do-while anidado Ejemplo 11. Realice una

Código del problema anterior. Realiza una prueba de

escritorio.

Page 26: Programación Estructurada: Tema 2. Estructuras de Control · Diagrama de flujo. 3.2 hacer-mientras en C do ... Ejemplo del ciclo for con un do-while anidado Ejemplo 11. Realice una

3.1 while (mientras)

Bucle controlado por centinela

Centinela es un valor especial que controla el final del

bucle

Ejemplo: –1 para terminar

Lectura adelantada

Es necesario actualizar el centinela en cada iteración

Page 27: Programación Estructurada: Tema 2. Estructuras de Control · Diagrama de flujo. 3.2 hacer-mientras en C do ... Ejemplo del ciclo for con un do-while anidado Ejemplo 11. Realice una

Ejemplo 7. Escriba un programa que realice la suma

de n números enteros dados por teclado. El programa

finaliza cuando se teclea un numero -1 (valor

centinela).

Page 28: Programación Estructurada: Tema 2. Estructuras de Control · Diagrama de flujo. 3.2 hacer-mientras en C do ... Ejemplo del ciclo for con un do-while anidado Ejemplo 11. Realice una

Ejemplo 7. Bucle controlado por centinela.

i ←0

suma← 0

imprimir “Teclea una calificación (-1 para terminar)”

leer(calif) //lectura adelantada

mientras calif!=-1

si calif>=0 y calif<=10 entonces

suma ← suma+calif

i←i+1 //Incremento

finSi

imprimir “Teclea una calificación (-1 para terminar)”

leer(calif) //actualizar

finMientras

prom ← suma/i //validar que i>0

Valor -1, es el valor centinela

seleccionado para este programa

Page 29: Programación Estructurada: Tema 2. Estructuras de Control · Diagrama de flujo. 3.2 hacer-mientras en C do ... Ejemplo del ciclo for con un do-while anidado Ejemplo 11. Realice una

Codificación del seudocódigo ciclo while con centinela.

Page 30: Programación Estructurada: Tema 2. Estructuras de Control · Diagrama de flujo. 3.2 hacer-mientras en C do ... Ejemplo del ciclo for con un do-while anidado Ejemplo 11. Realice una

3.1 while (mientras)

Bucle contador

Se utiliza en combinación con el bucle centinela

Útil cuando se quiere contar el número de veces que se

ejecuta el bucle.

La expresión lógica no depende del contador

Page 31: Programación Estructurada: Tema 2. Estructuras de Control · Diagrama de flujo. 3.2 hacer-mientras en C do ... Ejemplo del ciclo for con un do-while anidado Ejemplo 11. Realice una

3.1 Ejemplo 6. Bucle contador.

cont ←0

total← 0

Imprimir “Programa que calcula el total de una compra”

imprimir “Teclea id del producto(menor que 1 para terminar)”

leer(id) //lectura adelantada

mientras id>0

imprimir “Teclea la cantidad de productos:”

leer(cantidad)

imprimir “Teclea el precio:”

leer(precio)

total ← total+cantidad*precio

cont ←cont+1

imprimir “Teclea id del producto(menor que 1 para terminar)”

leer(id) //lectura actualizada

finMientras

imprimir “Se compró”, cont, “tipos de productos”

imprimir “El total de la compra es:”, total

Page 32: Programación Estructurada: Tema 2. Estructuras de Control · Diagrama de flujo. 3.2 hacer-mientras en C do ... Ejemplo del ciclo for con un do-while anidado Ejemplo 11. Realice una

Codificar el ejemplo anterior, e identificar el valor

centinela y el porque es un ejemplo de bucle

contador.

Page 33: Programación Estructurada: Tema 2. Estructuras de Control · Diagrama de flujo. 3.2 hacer-mientras en C do ... Ejemplo del ciclo for con un do-while anidado Ejemplo 11. Realice una

3.2 do while (hacer-mientras)

Sintaxis :

hacer

Acciones

mientras CondControl

Diagrama de flujo

Page 34: Programación Estructurada: Tema 2. Estructuras de Control · Diagrama de flujo. 3.2 hacer-mientras en C do ... Ejemplo del ciclo for con un do-while anidado Ejemplo 11. Realice una

3.2 hacer-mientras en C

do {

sentencia 1;

sentencia n;

} while (expresion);

Page 35: Programación Estructurada: Tema 2. Estructuras de Control · Diagrama de flujo. 3.2 hacer-mientras en C do ... Ejemplo del ciclo for con un do-while anidado Ejemplo 11. Realice una

3.2 hacer-mientras (do-while)

Condición de control del bucle = expresión lógica

Las sentencias que forman el cuerpo del bucle se ejecutan 1 o más veces.

Bucle POSTPRUEBA.

Menos general que el bucle MIENTRAS.

Condición verdadero seguirá ejecutando el cuerpo

Page 36: Programación Estructurada: Tema 2. Estructuras de Control · Diagrama de flujo. 3.2 hacer-mientras en C do ... Ejemplo del ciclo for con un do-while anidado Ejemplo 11. Realice una

3.2 hacer-mientras (do-while)

//codificación

do {

printf(“Teclea una calificación:”);

scanf(“%f”, calif);

}while(calif<0 || calif>10);

Ejemplo 7. Escriba un programa que calcule el promedio de 4 calificaciones de un alumno de la UTM utilizando el ciclo mientras y para la validación de las calificaciones un ciclo do-while.

Page 37: Programación Estructurada: Tema 2. Estructuras de Control · Diagrama de flujo. 3.2 hacer-mientras en C do ... Ejemplo del ciclo for con un do-while anidado Ejemplo 11. Realice una

3.2 hacer-mientras (do-while)

Ejemplo 8. Crear programas interactivos

int main(){

char opcion;

do {

//proceso del programa

printf(“Deseas repetir el programa [s/n]”);

fflush(stdin);

opcion=getchar();

}while(opcion==‘s’ || opcion==‘S’);

return 0;

}

Page 38: Programación Estructurada: Tema 2. Estructuras de Control · Diagrama de flujo. 3.2 hacer-mientras en C do ... Ejemplo del ciclo for con un do-while anidado Ejemplo 11. Realice una

3.3 para (for)

Número de veces determinado a priori.

Sintaxis :

para i←vi hasta vf ( Paso p)

acciones

fin_para

Diagrama de flujo

Page 39: Programación Estructurada: Tema 2. Estructuras de Control · Diagrama de flujo. 3.2 hacer-mientras en C do ... Ejemplo del ciclo for con un do-while anidado Ejemplo 11. Realice una

3.3 para (for) en C

for (expr1;expr2;expr3){

sentencia 1;

sentencia n;

}

Donde:

expr1: variable de control de inicialización

expr2: condición de control

expr3: incremento o decremento

Page 40: Programación Estructurada: Tema 2. Estructuras de Control · Diagrama de flujo. 3.2 hacer-mientras en C do ... Ejemplo del ciclo for con un do-while anidado Ejemplo 11. Realice una

3.3 para (for) en C

Ejemplo 9. Realice una prueba de escritorio cuando n=5

Ejemplo 10. Realice una prueba de escritorio

Page 41: Programación Estructurada: Tema 2. Estructuras de Control · Diagrama de flujo. 3.2 hacer-mientras en C do ... Ejemplo del ciclo for con un do-while anidado Ejemplo 11. Realice una

Ejemplo del ciclo for con un do-while anidado

Ejemplo 11. Realice una prueba de escritorio para n=3,

y calif: -2, 8.2, 9.5, 10.5, -0.2, 7.2, 13

Page 42: Programación Estructurada: Tema 2. Estructuras de Control · Diagrama de flujo. 3.2 hacer-mientras en C do ... Ejemplo del ciclo for con un do-while anidado Ejemplo 11. Realice una

Ejemplos

Recomendación, utilizar la definición completa de las estructuras for,while y do-while.

Page 43: Programación Estructurada: Tema 2. Estructuras de Control · Diagrama de flujo. 3.2 hacer-mientras en C do ... Ejemplo del ciclo for con un do-while anidado Ejemplo 11. Realice una

3.3 para (for)

Escriba un programa que calcule el total de la compra de n productos que realizó un cliente.

Escribir los programas del 1erParcial ver homepage.

Page 44: Programación Estructurada: Tema 2. Estructuras de Control · Diagrama de flujo. 3.2 hacer-mientras en C do ... Ejemplo del ciclo for con un do-while anidado Ejemplo 11. Realice una

Variables de control

Acumulador

Contador

Banderas

Page 45: Programación Estructurada: Tema 2. Estructuras de Control · Diagrama de flujo. 3.2 hacer-mientras en C do ... Ejemplo del ciclo for con un do-while anidado Ejemplo 11. Realice una

Variables de control

Un Acumulador es una variable cuya misión esalmacernar cantidades distintas, resultantes de sumassucesivas.

Un Contador es una variable cuyo valor se incrementao decrementa en una cantidad constante en cadaiteración.

Una bandera (flag, Interruptor, conmutador) es unavariable que puede tomar diversos valores durante la ejecución de un programa y que permite comunicarinformación desde una parte a otra del mismo, normalmente booleana.

Page 46: Programación Estructurada: Tema 2. Estructuras de Control · Diagrama de flujo. 3.2 hacer-mientras en C do ... Ejemplo del ciclo for con un do-while anidado Ejemplo 11. Realice una

Conclusiones

El uso correcto de las tres estructuras de control,

definidas como la base de la programación

estructurada, en alguna de las herramientas de

diseño de algoritmos, permite la resolución de

problemas en computadora de forma fácil, entendible

y correcta.

De ahí que hoy en día nuevas métodos de

programación se basan en la programación

estructurada.

Page 47: Programación Estructurada: Tema 2. Estructuras de Control · Diagrama de flujo. 3.2 hacer-mientras en C do ... Ejemplo del ciclo for con un do-while anidado Ejemplo 11. Realice una

Referencias

1. Joyanes Aguilar, Luis (1996) Fundamentos de programación, Algoritmos y Estructura de datos.McGraw-Hill, México.

2. Deitel Deitel (2001) C++ Como programar en C/C++. Prentice Hall

3. Kerrighan y Ritchie “El lenguaje de programación”. Prentice Hall

4. Gottfried, Byron (1999) “Programación en C” McGrawHill, México.

5. Levine Gutierrez, Guillermo (1990) Introducción a la computación y a la programación estructurada. McGraw-Hill, México.

6. Levine Gutierrez, Guillermo (1990) Introducción a la computación y a la programación estructurada. McGraw-Hill, México.