Desarrollo de lógica algorítmica

72
Desarrollo de lógica algorítmica Algoritmos y lenguajes de programación M.C. Edgar Omar Bañuelos Lozoya

description

Para la materia de Algoritmos y Lenguajes de Programación, Instituto Tecnológico de Parral.

Transcript of Desarrollo de lógica algorítmica

Page 1: Desarrollo de lógica algorítmica

Desarrollo de lógica algorítmica

Algoritmos y lenguajes de programaciónM.C. Edgar Omar Bañuelos Lozoya

Page 2: Desarrollo de lógica algorítmica

2

Introducción• Algoritmo• Método para resolver un problema.

• Pasos para la resolución de un problema:1. Analizar el problema.2. Diseñar el algoritmo –sin ambigüedades- que conduzca a la solución.3. Expresar el algoritmo como un programa en un lenguaje de programación

(codificación).4. Ejecución y validación del programa.

Problema

Diseño del algoritmo

Programa de computadora

Page 3: Desarrollo de lógica algorítmica

3

Introducción (cont.) • Los algoritmos son independientes tanto del lenguaje de programación como de la

computadora que los ejecuta.

• Ejemplo, analogía ¿cómo preparar espaguetti?

Receta de espaguetti

Spaghetti recipe

Spaghetti recette

¡Un lenguaje de programación es tan sólo un medio para expresar un algoritmo y una computadora es sólo un procesador para ejecutarlo!

Page 4: Desarrollo de lógica algorítmica

4

Características de los algoritmos

• Preciso:• Sin ambigüedades e indicar el orden de realización de cada paso.

• Definido:• Si se sigue dos veces se debe obtener el mismo resultado cada vez.

• Finito:• Se debe terminar en algún momento, debe tener un número finito

de pasos.

Page 5: Desarrollo de lógica algorítmica

5

Características de los algoritmos (cont.)La definición de un algoritmo debe describir tres partes:

1. Entrada2. Proceso3. Salida

Por ejemplo para el algoritmo de la receta:4. Entrada Ingredientes y utensilios empleados5. Proceso Elaboración de la receta en la cocina6. Salida Terminación del plato, el platillo en sí

Page 6: Desarrollo de lógica algorítmica

6

Características de los algoritmos (cont.)• Ejercicios:

1. Un cliente ejecuta un pedido a una fábrica. La fábrica examina en su banco de datos la ficha del cliente, si el cliente es solvente entonces la empresa acepta el pedido; en caso contrario, rechazará el pedido. Redactar el algoritmo correspondiente.

2. Se desea diseñar un algoritmo para saber si un número es primo o no.3. Diseñar un algoritmo para obtener el número mayor de tres números dados

por el usuario.

Page 7: Desarrollo de lógica algorítmica

7

Características de los algoritmos (cont.)• Un cliente ejecuta un pedido a una fábrica. La fábrica examina en su banco de datos la ficha del

cliente, si el cliente es solvente entonces la empresa acepta el pedido; en caso contrario, rechazará el pedido. Algoritmo:

1. inicio2. leer el pedido3. examinar la ficha del cliente4. si el cliente es solvente:5. aceptar pedido6. si no:7. rechazar pedido8. fin si9. fin

Page 8: Desarrollo de lógica algorítmica

8

Características de los algoritmos (cont.)• Algoritmo para saber si un número es primo o no:

1. inicio2. leer el número (num)3. establecer una variable x a 24. mientras x < num hacer:5. si el resultado de num/x es entero:6. escribir num no es un número primo7. ir al paso 128. fin si9. aumentar x en 110. fin mientras11. escribir num es un número primo12. fin

Page 9: Desarrollo de lógica algorítmica

9

Características de los algoritmos (cont.)• Algoritmo para obtener el número mayor de tres números dados por el usuario:

1. inicio2. leer el número 1 (num1)3. leer el número 2 (num2)4. leer el número 3 (num3)5. si num1>=num2 y num1>=num3:6. escribir num1 es el número mayor7. si no si num2>=num1 y num2>=num3:8. escribir num2 es el número mayor9. si no:10. escribir num3 es el número mayor11. fin si12. fin

Page 10: Desarrollo de lógica algorítmica

10

Diseño del algoritmo

• La técnica de diseño descendente es la más común.• Diseño descendente:

• Descomposición del problema original en subproblemas más simples y a continuación la división de estos subproblemas en otros más simples.

• Al proceso de ampliar la primera descripción del problema en una descripción más detallada con más pasos específicos se le denomina refinamiento por pasos.

• Para problemas complejos se necesitan con frecuencia diferentes niveles de refinamiento antes de que se pueda obtener un algoritmo claro, preciso y completo.

Page 11: Desarrollo de lógica algorítmica

11

Problema original Subproblemas Refinamiento

1. calcular área de un triángulo a partir del valor de sus lados

1. leer valores de los lados

2. calcular perímetro3. calcular semiperimetro4. calcular área5. escribir resultados

1a. leer valor de lado1 (l1)1b. leer valor de lado2 (l2)1c. leer valor de lado3 (l3)2. p = l1 + l2 + l33. s = p / 24. a = 5. escribir p, s y a

Diseño del algoritmo (cont.)

• Diseño descendente (cont.)• Ejemplo, realizar el algoritmo para calcular el área de un triángulo a partir del valor de sus lados:

Page 12: Desarrollo de lógica algorítmica

12

Diseño del algoritmo (cont.)

• Diseño descendente (cont.)• Ventajas:• El problema se comprende mejor al dividirse en partes más simples

denominadas módulos.• Las modificaciones en los módulos son más fáciles.• La comprobación del problema se puede verificar fácilmente.

Page 13: Desarrollo de lógica algorítmica

13

Diseño del algoritmo (cont.)

Diseño de un algoritmo

Diseño descendente(1)

Refinamiento por casos

(2)

Escritura del algoritmo:

-pseudocódigo-diagrama de flujo

-diagrama N-S(3)

Page 14: Desarrollo de lógica algorítmica

14

Pseudocódigo

• Es un lenguaje de especificación (descripción) de algoritmos con una gran similitud al lenguaje natural, pero utilizando ciertas palabras reservadas.

… facilita la traducción a un lenguaje de programación.

• Originalmente se representaban las acciones con palabras reservadas en el idioma inglés:• start, end, read, write, repeat, while…

• El algoritmo comienza con la palabra “inicio” y termina con la palabra “fin”.

• La línea precedida por “//” se denomina comentario.

• La escritura de pseudocódigo exige normalmente la indentación (sangría en el margen izquierdo) de las diferentes líneas acorde al bloque al que pertenecen.

Page 15: Desarrollo de lógica algorítmica

15

Pseudocódigo (cont.)

• Ejemplo, cálculo del salario de un trabajador:

INICIO// Cálculo del salario:LEER nombre, horas_trabajadas, pago_por_hora,

deduccionessalario = horas_trabajadas * pago_por_horasalario_neto = salario – deduccionesESCRIBIR nombre, salario, salario_neto

FIN

Page 16: Desarrollo de lógica algorítmica

16

Diagrama de flujo

• Forma de representación de un algoritmo utilizando símbolos (cajas) estándar unidas por flechas (denominadas líneas de flujo) que indican la secuencia en que se debe ejecutar.

• Los símbolos son normalizados por la ANSI (American National Standars Institute) y son muy variados, los más utilizados representan:• inicio/fin• proceso• decisión• entrada/salida• conectores• dirección del flujo

Page 17: Desarrollo de lógica algorítmica

17

Diagrama de flujo (cont.)

• Plantilla típica para diagramas de flujo:

Terminador, representa el comienzo y final de un algoritmo, puede representar también una parada o interrupción programada.

Entrada/Salida, cualquier tipo de introducción de datos (entrada) o registro de la información procesada en un periférico (salida).

Proceso, cualquier tipo de operación que pueda originar un cambio de valor, formato o posición de la información almacenada en memoria: operaciones aritméticas, de asignación, etc.

Page 18: Desarrollo de lógica algorítmica

18

Diagrama de flujo (cont.)

• Plantilla típica para diagramas de flujo (cont.):

Decisión, indica operaciones lógicas o de comparación entre datos, en función del resultado determina con cuál de los caminos alternativos el algoritmo debe continuar.

Conector, sirve para enlazar dos partes cualesquiera del flujo del diagrama a través de un conector en la salida y otro conector en la entrada. Se refiere a la conexión en la misma página del diagrama.

Conector, conexión entre dos puntos del algoritmo situado en diferentes páginas.

no

Page 19: Desarrollo de lógica algorítmica

19

Diagrama de flujo (cont.)

• Plantilla típica para diagramas de flujo (cont.):

Llamada a subrutina o a un proceso predeterminado, una subrutina es una parte independiente del algoritmo que recibe una entrada, realiza una tarea determinada y regresa, al terminar, al algoritmo principal.

Comentario, se utiliza para añadir comentarios a otros símbolos del diagrama de flujo, se pueden dibujar a cualquier lado del símbolo.

Page 20: Desarrollo de lógica algorítmica

20

Diagrama de flujo (cont.)• Ejemplo, cálculo del salario de un trabajador:

inicio

leer nombre, horas_trabajadas, pago_por_hora,

deducciones

salario = horas_trabajadas * pago_por_hora

salario_neto = salario – deducciones

escribir nombre, salario, salario_neto

fin

cálculo del salario

salario = horas_trabajadas * pago_por_horasalario_neto = salario – deducciones

Es posible agregar varias acciones similares en un solo símbolo:

Page 21: Desarrollo de lógica algorítmica

21

Diagrama de flujo (cont.)

• Ejercicio:1. Realizar los diagramas de flujo de los algoritmos realizados

anteriormente:• Determinar si un número es primo.• Obtener el número mayor de tres números dados por el usuario.

2. Realizar el diagrama de flujo de un algoritmo que sume los números pares entre dos números dados por el usuario.

Page 22: Desarrollo de lógica algorítmica

22

Diagrama de flujo (cont.)

Determinar si un número es primo.

Page 23: Desarrollo de lógica algorítmica

23

Diagrama de flujo (cont.)Obtener el número mayor de tres números.

Page 24: Desarrollo de lógica algorítmica

24

Diagrama de flujo (cont.)

Sumar números pares entre dos números.

Page 25: Desarrollo de lógica algorítmica

25

Diagrama de Nassi-Schneiderman (N-S)• Diagrama N-S también conocido como diagrama de Chapin, es un

diagrama de flujo en el que se omiten las flechas de unión y las cajas son contiguas.

• Las acciones sucesivas se escriben en cajas sucesivas y, como en los diagramas de flujo, se pueden escribir diferentes acciones en una caja.

• Un algoritmo se representa con un rectángulo en el que cada banda es una acción a realizar.

Page 26: Desarrollo de lógica algorítmica

26

Diagrama de Nassi-Schneiderman (N-S) (cont.)• Ejemplo, cálculo del salario de un trabajador:

Algoritmo cálculo del salarioleer nombre, horas_trabajadas, pago_por_hora, deduccionescalcular salario = horas_trabajadas * pago_por_horacalcular salario_neto = salario – deduccionesescribir nombre, salario, salario_netofin

Page 27: Desarrollo de lógica algorítmica

27

Sentencias

Page 28: Desarrollo de lógica algorítmica

28

Sentencia

• Es una instrucción que podemos expresar en un lenguaje de programación.• La precisión de las sentencias determina la precisión de la ejecución

del programa y para conseguirla deben ajustarse a una sintaxis muy concreta.• Por extensión, se denomina también sentencia a las acciones

expresadas en un lenguaje algorítmico.

Page 29: Desarrollo de lógica algorítmica

29

Tipos de sentencias

• Secuenciales: Son aquellas que se ejecutan en secuencia, es decir, después de la anterior y antes de la siguiente.

• Selectivas: son aquellas que permiten condicionar la ejecución de una o más sentencias al cumplimiento de una condición.

• Iterativas: son las que permiten conseguir que una determinada acción (simple o compleja) se ejecute más de una vez.

Page 30: Desarrollo de lógica algorítmica

30

Sentencias secuenciales

• Son aquellas donde el flujo normal del algoritmo proviene de la anterior sentencia, se ejecutan y el flujo continua en la siguiente sentencia:

INICIO <acción 1> <acción 2> … <acción n>FIN

Page 31: Desarrollo de lógica algorítmica

31

Sentencias secuenciales (cont.)

• Sentencia de asignación:• Permiten asignar un valor a una variable.• Esta asignación se puede hacer de forma

directa o mediante una expresión.

Ejemplo: calcular el área de un círculo:INICIO

PI = 3.1416LEER radioarea = PI * r * rESCRIBIR area

FIN

Page 32: Desarrollo de lógica algorítmica

32

Sentencias secuenciales (cont.)

• Sentencias de entrada/salida:

• LEER variable1, variable2, …, variableN• Permite asignar a las variables contenidas en la lista los valores dados por el usuario.

• ESCRIBIR variable1, variable2, …, variableN• Permite presentar los valores de las variables contenidas en la lista.• Es posible escribir una cadena de texto incluyéndola entre comillas dentro del listado.

Page 33: Desarrollo de lógica algorítmica

33

Sentencias secuenciales (cont.)• Sentencias de entrada/salida (cont.):Ejemplo: preguntar el nombre y edad e imprimirlos:INICIO

ESCRIBIR “¿Cuál es tu nombre”

LEER nombre

ESCRIBIR “¿Cuál es tu edad?”

LEER edad

ESCRIBIR “Nombre: ”, nombre, “Edad: “, edad

FIN

Page 34: Desarrollo de lógica algorítmica

34

Sentencias selectivas

• Principales sentencias selectivas:• Sentencia SI• Sentencia CASO

Page 35: Desarrollo de lógica algorítmica

35

Sentencia SI

• Sintaxis:SI <expresión condición> ENTONCES

<sentencia si>[SINO

<sentencia no>]FIN SI

• Donde:• <expresión condición>, expresión cuyo resultado sólo puede ser verdadero o falso.• <sentencia si>, sentencia a ejecutar en caso de ser cierta la expresión de la condición.• <sentencia no>, sentencia a ejecutar en caso de no ser cierta la expresión de la condición. Esta parte de la

sentencia es opcional.• Tanto <sentencia si> como <sentencia no> pueden ser sentencias compuestas, es decir, formadas por más de

una sentencia simple.

Page 36: Desarrollo de lógica algorítmica

36

Sentencia SI (cont.)

• Ejemplo, algoritmo para preguntar la edad de una persona e imprimir si es o no mayor de edad:

INICIOLEER edadSI edad >= 18 ENTONCES

ESCRIBIR “Es mayor de edad”SI NO

ESCRIBIR “No es mayor de edad”FIN SI

FIN

Page 37: Desarrollo de lógica algorítmica

37

Sentencia SI (cont.)

• Es posible agregar otra sentencia SI a partir del SI NO de la primera y así sucesivamente.• Tener cuidado con la indentación y la colocación de los FIN SI• Cuando hay anidación de sentencias SI sólo se coloca el FIN SI de la primera.• Ejemplo, algoritmo para leer los lados de un triángulo y determinar e imprimir su tipo:

INICIOLEER lado1, lado2, lado3SI lado1 = lado2 Y lado2 = lado3 ENTONCES

ESCRIBIR “Equilatero”SI NO SI lado1 <> lado2 Y lado2 <> lado3 ENTONCES

ESCRIBIR “Escaleno”SI NO

ESCRIBIR “Isósceles”FIN SI

FIN

Page 38: Desarrollo de lógica algorítmica

38

Sentencia SI (cont.)

• La expresión de la condición puede incluir operadores lógicos.

• Los principales operadores lógicos son:• Y, todas las condiciones se tienen que cumplir para que la expresión sea

verdadera.• O, al menos una condición se tiene que cumplir para que la expresión sea

verdadera.• NO, invierte el valor de verdad de la condición dada.

• Es recomendable el uso de los paréntesis para un mejor entendimiento de la expresión.

Page 39: Desarrollo de lógica algorítmica

39

Sentencia SI (cont.)

• Ejemplo, algoritmo para imprimir “está en el rango” en el caso de que el número dado esté entre los rangos 5-10 o 20-25 y no sea el número 22:

INICIO

LEER num

SI ((num > 5 y num < 10) O (num > 20 y num < 25)) Y NO (num = 22) ENTONCES

ESCRIBIR “está en el rango”

FIN SI

FIN

Page 40: Desarrollo de lógica algorítmica

40

Sentencia SI (cont.)

• Ejercicios, realizar los algoritmos para:1. Leer un año y determinar si es bisiesto. Un año es bisiesto cuando es

múltiplo de 4 y no de 100 o cuando es múltiplo de 400. Por ejemplo, el año 2000 por las dos primeras condiciones no sería bisiesto, pero sí lo es porque es múltiplo de 400; el año 2100 no es bisiesto porque aunque sea múltiplo de 4, también lo es de 100 y no es múltiplo de 400.

2. Imprimir el día de la semana de acuerdo a un número de día leído. Ejemplo, si el número leído es 1 imprimir “lunes”, si es 2 imprimir “martes”, …, si es 7 imprimir “domingo”. Si el número es menor a 1 o mayor que 7 debe imprimir “día no válido”.

Page 41: Desarrollo de lógica algorítmica

41

Sentencia SI (cont.)

Leer un año y determinar si es bisiesto. Un año es bisiesto cuando es múltiplo de 4 y no de 100 o cuando es múltiplo de 400.

INICIO LEER año SI (año % 4 = 0 Y NO año % 100 = 0) O (año % 400 = 0) ENTONCES ESCRIBIR año, “ SI es bisiesto” SI NO ESCRIBIR año, “ NO es bisiesto” FIN SIFIN

Page 42: Desarrollo de lógica algorítmica

42

Sentencia SI (cont.)

Leer un año y determinar si es bisiesto. Un año es bisiesto cuando es múltiplo de 4 y no de 100 o cuando es múltiplo de 400.

Page 43: Desarrollo de lógica algorítmica

43

Sentencia SI (cont.)

Imprimir el día de la semana de acuerdo a un número de día leído.

INICIO LEER numDia SI numDia = 1 ENTONCES dia = “lunes” SI NO SI numDia = 2 ENTONCES dia = “martes” SI NO SI numDia = 3 ENTONCES dia = “miércoles” SI NO SI numDia = 4 ENTONCES dia = “jueves” SI NO SI numDia = 5 ENTONCES dia = “viernes” SI NO SI numDia = 6 ENTONCES dia = “sábado” SI NO SI numDia = 7 ENTONCES dia = “domingo” SI NO dia = “día no válido” FIN SI ESCRIBIR diaFIN

Page 44: Desarrollo de lógica algorítmica

44

Sentencia SI (cont.)

Imprimir el día de la semana de acuerdo a un número de día leído.

Page 45: Desarrollo de lógica algorítmica

45

Sentencia CASO• Útil cuando se evalúan distintos valores de una misma expresión.• De forma general, puede verse como una versión simplificada de tener varios SI anidados

comparando el valor de una misma expresión.• Sintaxis:

CASO <expresión>[<lista de constantes i> : <sentencias i>]1n

[DEFAULT <sentencias default>]FIN CASO

• Donde:1. <expresión> se evalúa al inicio de la ejecución de la sentencia CASO, obteniéndose un determinado

“valor”.2. Se ejecuta <sentencias i>, tal que “valor” sea igual a una de las constantes obtenidas en <lista de

constantes i>. Pueden ser una o varias sentencias.3. Si “valor” no coincide con ninguno de los valores de las constantes de las n listas, se ejecuta

<sentencias default>, si existe y, si no existe, no se realiza ninguna acción.

Page 46: Desarrollo de lógica algorítmica

46

Sentencia CASO (cont.)• Ejemplo, algoritmo para imprimir el día de la semana de acuerdo a un número de día leído. Si el

número leído es 1 imprimir “lunes”, si es 2 imprimir “martes”, …, si es 7 imprimir “domingo”. Si el número es menor a 1 o mayor que 7 debe imprimir “día no válido”.

INICIO LEER numDia CASO numDia 1: ESCRIBIR “lunes” 2: ESCRIBIR “martes” 3: ESCRIBIR “miércoles” 4: ESCRIBIR “jueves” 5: ESCRIBIR “viernes” 6: ESCRIBIR “sábado” 7: ESCRIBIR “domingo” DEFAULT: ESCRIBIR “día no valido” FIN CASOFIN

Page 47: Desarrollo de lógica algorítmica

47

Sentencia CASO (cont.)• Ejercicio, algoritmo que pida un número entero del 1 al 3 e imprima su equivalente en

número romano, si el número no está en el rango imprimir “no pertenece al rango”:

INICIO LEER num CASO num 1: ESCRIBIR “I” 2: ESCRIBIR “II” 3: ESCRIBIR “III” DEFAULT: ESCRIBIR “no pertenece al rango” FIN CASOFIN

Page 48: Desarrollo de lógica algorítmica

48

Sentencia CASO (cont.)

• Ejemplo, algoritmo que pida un número entero del 1 al 3 e imprima su equivalente en número romano, si el número no está en el rango imprimir “no pertenece al rango”:

Page 49: Desarrollo de lógica algorítmica

49

Sentencias iterativas

• Permiten ejecutar más de una vez una o varias sentencias.• Toda sentencia iterativa tiene asociados los siguientes conceptos:

• Sentencia del bucle: sentencia o sentencias que se ejecutarán en cada iteración.

• Condición de ejecución: expresión booleana (que genera falso o verdadero) del resultado de cuya evaluación se deduce la ejecución o no de la sentencia del bucle una vez (más).

• Inicialización: establecimiento del estado inicial o de entrada de las variables, cuyo valor condiciona la ejecución de la sentencia del bucle, antes de ejecutarse éste por primera vez.

• Condición final o de salida: estado de las variables manejadas en el bucle, que determina la no ejecución del bucle ninguna vez más.

Page 50: Desarrollo de lógica algorítmica

50

Sentencias iterativas (cont.)

• Principales sentencias iterativas:• Sentencia PARA• Sentencia MIENTRAS• Sentencia HACER-MIENTRAS

Page 51: Desarrollo de lógica algorítmica

51

Sentencia PARA

• La emplearemos cuando el número de iteraciones del bucle se conozca antes de iniciarse la ejecución de éste.• Una variable de contaje (contador) va contando las pasadas (iteraciones)

por el bucle.• Las sentencias del bucle pueden repetirse cero o más veces.• Sintaxis:

PARA <contador> = <expresión inicial> MIENTRAS <condición de ejecución> SALTO <incremento> HACER <sentencia del bucle>

FIN PARA

Page 52: Desarrollo de lógica algorítmica

52

Sentencia PARA (cont.)

• Ejemplo, imprimir los números del 0 al 100:PARA i = 0 MIENTRAS i <= 100 SALTO 1 HACER

ESCRIBIR iFIN PARA

• Ejemplo, imprimir los números del 100 al 0:PARA i = 100 MIENTRAS i >= 0 SALTO -1 HACER

ESCRIBIR iFIN PARA

Page 53: Desarrollo de lógica algorítmica

53

Sentencia PARA (cont.)

Ejercicios, realizar los algoritmos para:1. Imprimir los múltiplos de tres entre el 1 y el 3000.2. Calcular e imprimir el resultado de la sumatoria de los números pares entre

el -21 y 35.3. Pedir dos números e imprimir el resultado de la suma de los números entre

ellos (incluyéndolos), ejemplo: si los números son 3 y 6 imprimir 18 (3+4+5+6)

Page 54: Desarrollo de lógica algorítmica

54

Sentencia PARA (cont.)

Imprimir los múltiplos de tres entre el 1 y el 3000.

INICIO PARA i = 3 MIENTRAS i < 3000 SALTO 3 HACER ESCRIBIR i FIN PARAFIN

Page 55: Desarrollo de lógica algorítmica

55

Sentencia PARA (cont.)

Calcular e imprimir el resultado de la sumatoria de los números pares entre el -21 y 35.

INICIO suma = 0 PARA i = -20 MIENTRAS i < 35 SALTO 2 HACER suma = suma + i FIN PARA ESCRIBIR sumaFIN

Page 56: Desarrollo de lógica algorítmica

56

Sentencia PARA (cont.)

Pedir dos números e imprimir el resultado de la suma de los números entre ellos (incluyéndolos), ejemplo: si los números son 3 y 6 imprimir 18 (3+4+5+6)

INICIO LEER num1, num2 suma = 0 PARA i = num1 MIENTRAS i <= num2 SALTO 1 HACER suma = suma + i FIN PARA ESCRIBIR sumaFIN

Page 57: Desarrollo de lógica algorítmica

57

Sentencia MIENTRAS

• Utilizada cuando no se conoce el número exacto de veces que se deben ejecutar las sentencias del bucle.• El número de iteraciones depende de la evaluación de la condición.• Las sentencias del bucle pueden repetirse cero o más veces.• Sintaxis:

MIENTRAS <condición de ejecución> HACER<sentencia del bucle>

FIN MIENTRAS

Page 58: Desarrollo de lógica algorítmica

58

Sentencia MIENTRAS (cont.)• Ejemplo, imprimir los números del 0 al 100:

i = 0MIENTRAS i <= 100 HACERESCRIBIR ii = i + 1FIN MIENTRAS

• Ejemplo, imprimir los números del 100 al 0:i = 100MIENTRAS i >= 0 HACERESCRIBIR ii = i - 1FIN MIENTRAS

PARA i = 0 MIENTRAS i <= 100 SALTO 1 HACER

ESCRIBIR iFIN PARA

PARA i = 100 MIENTRAS i >= 0 SALTO -1 HACER

ESCRIBIR iFIN PARA

Page 59: Desarrollo de lógica algorítmica

59

Sentencia MIENTRAS (cont.)

• Ejercicio, realizar los algoritmos para:1. Imprimir los múltiplos de tres entre el 1 y el 3000.2. Calcular e imprimir el resultado de la sumatoria de los números pares entre

el -21 y 35.3. Pedir dos números e imprimir el resultado de la suma de los números entre

ellos (incluyéndolos), ejemplo: si los números son 3 y 6 imprimir 18 (3+4+5+6)

4. Pedir calificaciones hasta que la calificación dada sea -1, calcular el promedio e imprimir el resultado.

Page 60: Desarrollo de lógica algorítmica

60

Sentencia MIENTRAS (cont.)

Imprimir los múltiplos de tres entre el 1 y el 3000.

INICIO i = 3 MIENTRAS i < 3000 HACER ESCRIBIR i i = i + 3 FIN MIENTRASFIN

Page 61: Desarrollo de lógica algorítmica

61

Sentencia MIENTRAS (cont.)

Calcular e imprimir el resultado de la sumatoria de los números pares entre el -21 y 35.

INICIO suma = 0 i = -20 MIENTRAS i < 35 HACER suma = suma + i i = i + 2 FIN MIENTRAS ESCRIBIR sumaFIN

Page 62: Desarrollo de lógica algorítmica

62

Sentencia MIENTRAS (cont.)

Pedir dos números e imprimir el resultado de la suma de los números entre ellos (incluyéndolos), ejemplo: si los números son 3 y 6 imprimir 18 (3+4+5+6)

INICIO LEER num1, num2 suma = 0 i = num1 MIENTRAS i <= num2 HACER suma = suma + i i = i + 1 FIN MIENTRAS ESCRIBIR sumaFIN

Page 63: Desarrollo de lógica algorítmica

63

Sentencia MIENTRAS (cont.)

Pedir calificaciones hasta que la calificación dada sea -1, calcular el promedio e imprimir el resultado.INICIO suma = 0 i = 0 lEER calif MIENTRAS calif <> -1 HACER suma = suma + calif i = i + 1 LEER calif FIN MIENTRAS SI i > 0 ENTONCES promedio = suma / i ESCRIBIR promedio FIN SIFIN

Page 64: Desarrollo de lógica algorítmica

64

Sentencia HACER-MIENTRAS

• Es similar a la sentencia MIENTRAS, las sentencias del bucle se ejecutan una y otra vez mientras que la condición sea verdadera.• La diferencia es que garantiza que las sentencias del bucle se ejecuten

al menos una vez antes de que se evalúe la condición.• Sintaxis:

HACER<sentencia del bucle>

MIENTRAS <condición de ejecución>

Page 65: Desarrollo de lógica algorítmica

65

Sentencia HACER-MIENTRAS (cont.)• Ejemplo, imprimir los números del 0 al 100:

i = 0HACER

ESCRIBIR ii = i + 1

MIENTRAS i <= 100

• Ejemplo, imprimir los números del 100 al 0:i = 100HACER

ESCRIBIR ii = i - 1

MIENTRAS i >= 0

i = 0MIENTRAS i <= 100 HACER ESCRIBIR i i = i + 1FIN MIENTRAS

i = 100MIENTRAS i >= 0 HACER ESCRIBIR i i = i - 1FIN MIENTRAS

i = -1HACER

i = i + 1ESCRIBIR i

MIENTRAS i < 100

i = 101HACER

i = i - 1ESCRIBIR i

MIENTRAS i > 0

Page 66: Desarrollo de lógica algorítmica

66

Sentencia HACER-MIENTRAS (cont.)

• Ejercicio, realizar los algoritmos para:1. Imprimir los múltiplos de tres entre el 1 y el 3000.2. Calcular e imprimir el resultado de la sumatoria de los números pares entre

el -21 y 35.3. Pedir dos números e imprimir el resultado de la suma de los números entre

ellos (incluyéndolos), ejemplo: si los números son 3 y 6 imprimir 18 (3+4+5+6)

4. Pedir calificaciones hasta que la calificación dada sea -1, calcular el promedio e imprimir el resultado.

Page 67: Desarrollo de lógica algorítmica

67

Sentencia HACER-MIENTRAS (cont.)

Imprimir los múltiplos de tres entre el 1 y el 3000.

INICIO i = 3 HACER ESCRIBIR i i = i + 3 MIENTRAS i < 3000 FIN

Page 68: Desarrollo de lógica algorítmica

68

Sentencia HACER-MIENTRAS (cont.)

Calcular e imprimir el resultado de la sumatoria de los números pares entre el -21 y 35.

INICIO suma = 0 i = -20 HACER suma = suma + i i = i + 2 MIENTRAS i < 35 ESCRIBIR sumaFIN

Page 69: Desarrollo de lógica algorítmica

69

Sentencia HACER-MIENTRAS (cont.)

Pedir dos números e imprimir el resultado de la suma de los números entre ellos (incluyéndolos), ejemplo: si los números son 3 y 6 imprimir 18 (3+4+5+6)

INICIO LEER num1, num2 suma = 0 i = num1 HACER suma = suma + i i = i + 1 MIENTRAS i <= num2 ESCRIBIR sumaFIN

Page 70: Desarrollo de lógica algorítmica

70

Sentencia HACER-MIENTRAS (cont.)

Pedir calificaciones hasta que la calificación dada sea -1, calcular el promedio e imprimir el resultado.INICIO suma = 0 i = 0 HACER LEER calif SI calif <> -1 suma = suma + calif i = i + 1 FIN SI MIENTRAS calif <> -1 SI i > 0 ENTONCES promedio = suma / i ESCRIBIR promedio FIN SIFIN

Page 71: Desarrollo de lógica algorítmica

71

Sentencias de quiebre y continuación• Sentencia ROMPER:

• Utilizada para salir de un ciclo cuando se considere necesario.• Ejemplo, desarrollar un algoritmo que pida números e imprima su cuadrado, terminar cuando el

número dado sea igual a 0:

INICIOMIENTRAS verdadero HACER

LEER numSI num = 0 ENTONCES

ROMPERFIN SIcuadrado = num * numESCRIBIR cuadrado

FIN MIENTRASFIN

Page 72: Desarrollo de lógica algorítmica

72

Sentencias de quiebre y continuación (cont.)• Sentencia CONTINUAR:

• Utilizada para saltar directamente hasta la siguiente iteración del ciclo.• Ejemplo, desarrollar un algoritmo que imprima los números impares entre el 1 y el 100:

INICIOPARA i = 2 MIENTRAS i < 100 SALTO 1 HACER

SI i % 2 = 0 ENTONCESCONTINUAR

FIN SIESCRIBIR i

FIN PARAFIN