SlideShare una empresa de Scribd logo
1 de 72
Desarrollo de lógica
algorítmica

Algoritmos y lenguajes de programación
M.C. Edgar Omar Bañuelos Lozoya
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
2
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

¡Un lenguaje de programación es tan sólo un medio para expresar
Spaghetti recipe y una computadora es sólo un procesador para
un algoritmo
ejecutarlo!
Spaghetti recette
3
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.
4
Características de los algoritmos (cont.)
La definición de un algoritmo debe describir tres partes:
1. Entrada
2. Proceso
3. Salida
Por ejemplo para el algoritmo de la receta:
1. Entrada
2. Proceso
3. Salida

Ingredientes y utensilios empleados
Elaboración de la receta en la cocina
Terminación del plato, el platillo en sí
5
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.

6
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. inicio
2.
leer el pedido
3.
examinar la ficha del cliente
4.
si el cliente es solvente:
5.
aceptar pedido
6.
si no:
7.
rechazar pedido
8.
fin si
9. fin
7
Características de los algoritmos (cont.)
• Algoritmo para saber si un número es primo o no:
1. inicio
2.
leer el número (num)
3.
establecer una variable x a 2
4.
mientras x < num hacer:
5.
si el resultado de num/x es entero:
6.
escribir num no es un número primo
7.
ir al paso 12
8.
fin si
9.
aumentar x en 1
10.
fin mientras
11.
escribir num es un número primo
12. fin

8
Características de los algoritmos (cont.)
• Algoritmo para obtener el número mayor de tres números dados por el usuario:
1. inicio
2.
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 mayor
7.
si no si num2>=num1 y num2>=num3:
8.
escribir num2 es el número mayor
9.
si no:
10.
escribir num3 es el número mayor
11.
fin si
12. fin

9
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.
10
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:

Problema original

Subproblemas

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

Refinamiento

1. leer valores de los lados

2. calcular perímetro
3. calcular semiperimetro
4. calcular área
5. escribir resultados

11
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.

12
Diseño del algoritmo (cont.)

Diseño de un algoritmo

Escritura del algoritmo:

Diseño descendente

Refinamiento por casos

-pseudocódigo

(1)

(2)

-diagrama de flujo
-diagrama N-S
(3)
13
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.
14
Pseudocódigo (cont.)
• Ejemplo, cálculo del salario de un trabajador:

INICIO
// Cálculo del salario:
LEER nombre, horas_trabajadas, pago_por_hora,
deducciones
salario = horas_trabajadas * pago_por_hora
salario_neto = salario – deducciones
ESCRIBIR nombre, salario, salario_neto
FIN

15
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
16
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.

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

sí

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.

18
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.

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

cálculo del salario
leer nombre,
horas_trabajadas,
pago_por_hora,
deducciones

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

salario = horas_trabajadas * pago_por_hora
salario = horas_trabajadas * pago_por_hora
salario_neto = salario – deducciones
salario_neto = salario – deducciones
escribir nombre,
salario, salario_neto
fin

20
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.

21
Diagrama de flujo (cont.)
Determinar si un número es primo.

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

23
Diagrama de flujo (cont.)
Sumar números pares entre dos números.

24
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.
25
Diagrama de Nassi-Schneiderman (N-S)
(cont.)
• Ejemplo, cálculo del salario de un trabajador:
Algoritmo cálculo del salario
leer nombre, horas_trabajadas, pago_por_hora, deducciones
calcular salario = horas_trabajadas * pago_por_hora
calcular salario_neto = salario – deducciones
escribir nombre, salario, salario_neto
fin

26
Sentencias

27
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.

28
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.

29
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
30
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.1416
LEER radio
area = PI * r * r
ESCRIBIR area
FIN
31
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.

32
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

33
Sentencias selectivas
• Principales sentencias selectivas:
• Sentencia SI
• Sentencia CASO

34
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.
35
Sentencia SI (cont.)
• Ejemplo, algoritmo para preguntar la edad de una persona e imprimir si es
o no mayor de edad:
INICIO
LEER edad
SI edad >= 18 ENTONCES
ESCRIBIR “Es mayor de edad”
SI NO
ESCRIBIR “No es mayor de edad”
FIN SI
FIN
36
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:

INICIO
LEER lado1, lado2, lado3
SI 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

37
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.
38
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

39
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”.

40
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 SI
FIN

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.

42
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 dia
FIN

43
Sentencia SI (cont.)
Imprimir el día de la semana de
acuerdo a un número de día leído.

44
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.

2.
3.

<expresión> se evalúa al inicio de la ejecución de la sentencia CASO, obteniéndose un
determinado “valor”.
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.
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.

45
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 CASO
FIN
46
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 CASO
FIN
47
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”:

48
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.
49
Sentencias iterativas (cont.)
• Principales sentencias iterativas:
• Sentencia PARA
• Sentencia MIENTRAS
• Sentencia HACER-MIENTRAS

50
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
51
Sentencia PARA (cont.)
• Ejemplo, imprimir los números del 0 al 100:
PARA i = 0 MIENTRAS i <= 100 SALTO 1 HACER
ESCRIBIR i
FIN PARA
• Ejemplo, imprimir los números del 100 al 0:
PARA i = 100 MIENTRAS i >= 0 SALTO -1 HACER
ESCRIBIR i
FIN PARA
52
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)

53
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 PARA
FIN

54
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 suma
FIN

55
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 suma
FIN

56
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
57
Sentencia MIENTRAS (cont.)
• Ejemplo, imprimir los números del 0 al 100:
i=0
PARA i = 0 MIENTRAS i <= 100 SALTO 1 HACER
MIENTRAS i <= 100 HACER
ESCRIBIR i
ESCRIBIR i
FIN PARA
i = i + 1
FIN MIENTRAS
• Ejemplo, imprimir los números del 100 al 0:
i = 100
MIENTRAS i >= 0 HACER
PARA i = 100 MIENTRAS i >= 0 SALTO -1 HACER
ESCRIBIR i
ESCRIBIR i
i = i - 1
FIN PARA
FIN MIENTRAS
58
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.

59
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 MIENTRAS
FIN

60
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 suma
FIN
61
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 suma
FIN

62
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 SI
FIN

63
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>

64
Sentencia HACER-MIENTRAS (cont.)
• Ejemplo, imprimir los números del 0 al 100:
i=0
i = -1
HACER
HACER
ESCRIBIR i
i = i + 1
i = i + 1
ESCRIBIR i
MIENTRAS i <= 100
MIENTRAS i < 100

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

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

i = 100
MIENTRAS i >= 0 HACER
ESCRIBIR i
i = i - 1
FIN MIENTRAS
65
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.

66
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

67
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 suma
FIN
68
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 suma
FIN

69
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 SI
FIN

70
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:
INICIO
MIENTRAS verdadero HACER
LEER num
SI num = 0 ENTONCES
ROMPER
FIN SI
cuadrado = num * num
ESCRIBIR cuadrado
FIN MIENTRAS
FIN
71
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:
INICIO
PARA i = 2 MIENTRAS i < 100 SALTO 1 HACER
SI i % 2 = 0 ENTONCES
CONTINUAR
FIN SI
ESCRIBIR i
FIN PARA
FIN
72

Más contenido relacionado

La actualidad más candente

Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.
Giancarlo Aguilar
 
Tipos de datos en programacion
Tipos de datos en programacionTipos de datos en programacion
Tipos de datos en programacion
Alfonso
 
Alfabetos-Lenguajes y Automatas 1
Alfabetos-Lenguajes y Automatas 1Alfabetos-Lenguajes y Automatas 1
Alfabetos-Lenguajes y Automatas 1
Osiris Mirerus
 
Ejemplos de proyectos al modelo en cascada
Ejemplos de proyectos  al modelo en cascadaEjemplos de proyectos  al modelo en cascada
Ejemplos de proyectos al modelo en cascada
aics-1986-13-saraguro
 
1.3 lenguajes de simulacion y simuladores
1.3 lenguajes de simulacion y simuladores1.3 lenguajes de simulacion y simuladores
1.3 lenguajes de simulacion y simuladores
JoOsee Kette
 
P. estructurada vs. programación orientada a objetos
P. estructurada vs. programación orientada a objetosP. estructurada vs. programación orientada a objetos
P. estructurada vs. programación orientada a objetos
Geovanny Yungán
 

La actualidad más candente (20)

Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.
 
Metodologias Para El Analisis Y Diseño De Sistemas.
Metodologias Para El Analisis Y Diseño De Sistemas.Metodologias Para El Analisis Y Diseño De Sistemas.
Metodologias Para El Analisis Y Diseño De Sistemas.
 
Tipos de datos en programacion
Tipos de datos en programacionTipos de datos en programacion
Tipos de datos en programacion
 
Algoritmo
AlgoritmoAlgoritmo
Algoritmo
 
Unidad III generacion de variables aleatorias
Unidad III generacion de variables aleatoriasUnidad III generacion de variables aleatorias
Unidad III generacion de variables aleatorias
 
Indagación de los requerimientos
Indagación de los requerimientosIndagación de los requerimientos
Indagación de los requerimientos
 
Lenguajes de simulacion
Lenguajes de simulacionLenguajes de simulacion
Lenguajes de simulacion
 
Algoritmos y metodología para la solución de problemas
Algoritmos y metodología para la solución de problemasAlgoritmos y metodología para la solución de problemas
Algoritmos y metodología para la solución de problemas
 
Recursividad
RecursividadRecursividad
Recursividad
 
Programación estructurada
Programación estructuradaProgramación estructurada
Programación estructurada
 
Alfabetos-Lenguajes y Automatas 1
Alfabetos-Lenguajes y Automatas 1Alfabetos-Lenguajes y Automatas 1
Alfabetos-Lenguajes y Automatas 1
 
Ejemplos de proyectos al modelo en cascada
Ejemplos de proyectos  al modelo en cascadaEjemplos de proyectos  al modelo en cascada
Ejemplos de proyectos al modelo en cascada
 
Bottom up
Bottom upBottom up
Bottom up
 
1.3 lenguajes de simulacion y simuladores
1.3 lenguajes de simulacion y simuladores1.3 lenguajes de simulacion y simuladores
1.3 lenguajes de simulacion y simuladores
 
Simulación - Algoritmo de productos medios
Simulación - Algoritmo de productos mediosSimulación - Algoritmo de productos medios
Simulación - Algoritmo de productos medios
 
Algoritmos secuenciales resueldos
Algoritmos  secuenciales resueldosAlgoritmos  secuenciales resueldos
Algoritmos secuenciales resueldos
 
Recursividad directa e indirecta
Recursividad directa e indirectaRecursividad directa e indirecta
Recursividad directa e indirecta
 
simulacion numeros pseudoaleatorios
simulacion numeros pseudoaleatoriossimulacion numeros pseudoaleatorios
simulacion numeros pseudoaleatorios
 
P. estructurada vs. programación orientada a objetos
P. estructurada vs. programación orientada a objetosP. estructurada vs. programación orientada a objetos
P. estructurada vs. programación orientada a objetos
 
Tópicos Avanzados de Programación - Unidad 2 componentes y librerias
Tópicos Avanzados de Programación - Unidad 2 componentes y libreriasTópicos Avanzados de Programación - Unidad 2 componentes y librerias
Tópicos Avanzados de Programación - Unidad 2 componentes y librerias
 

Destacado

02 Ejercicios Resueltos diagramas de flujo
02 Ejercicios Resueltos diagramas de flujo02 Ejercicios Resueltos diagramas de flujo
02 Ejercicios Resueltos diagramas de flujo
Tete Alar
 
Informatica II - 2 Metodologia de Solucion de Problemas
Informatica II - 2 Metodologia de Solucion de ProblemasInformatica II - 2 Metodologia de Solucion de Problemas
Informatica II - 2 Metodologia de Solucion de Problemas
Gabriel Ruiz
 
Logica de programacion de algoritmos
Logica de programacion de algoritmosLogica de programacion de algoritmos
Logica de programacion de algoritmos
David Ramos
 
Ejemplos de Algoritmos
Ejemplos de AlgoritmosEjemplos de Algoritmos
Ejemplos de Algoritmos
Pepe Xdsasda
 
Bottom up top down
Bottom up top downBottom up top down
Bottom up top down
Zaira Avila
 
Introducción a la programación en c++
Introducción a la programación en c++Introducción a la programación en c++
Introducción a la programación en c++
empirreamm
 

Destacado (20)

METODOLOGÍA PARA LA SOLUCIÓN DE PROBLEMAS
METODOLOGÍA PARA LA SOLUCIÓN DE PROBLEMASMETODOLOGÍA PARA LA SOLUCIÓN DE PROBLEMAS
METODOLOGÍA PARA LA SOLUCIÓN DE PROBLEMAS
 
METODOLOGÍA PARA EL DISEÑO DE SOFTWARE
METODOLOGÍA PARA EL DISEÑO DE SOFTWAREMETODOLOGÍA PARA EL DISEÑO DE SOFTWARE
METODOLOGÍA PARA EL DISEÑO DE SOFTWARE
 
Logica y Algoritmos
Logica y AlgoritmosLogica y Algoritmos
Logica y Algoritmos
 
10 Tips para desarrollar tu lógica de programación
10 Tips para desarrollar tu lógica de programación10 Tips para desarrollar tu lógica de programación
10 Tips para desarrollar tu lógica de programación
 
Logica algoritmos
Logica algoritmosLogica algoritmos
Logica algoritmos
 
02 Ejercicios Resueltos diagramas de flujo
02 Ejercicios Resueltos diagramas de flujo02 Ejercicios Resueltos diagramas de flujo
02 Ejercicios Resueltos diagramas de flujo
 
Informatica II - 2 Metodologia de Solucion de Problemas
Informatica II - 2 Metodologia de Solucion de ProblemasInformatica II - 2 Metodologia de Solucion de Problemas
Informatica II - 2 Metodologia de Solucion de Problemas
 
DEFINICIÓN DE LENGUAJES ALGORÍTMICOS
DEFINICIÓN DE LENGUAJES ALGORÍTMICOSDEFINICIÓN DE LENGUAJES ALGORÍTMICOS
DEFINICIÓN DE LENGUAJES ALGORÍTMICOS
 
Diagramas de flujo
Diagramas de flujoDiagramas de flujo
Diagramas de flujo
 
Diagrama de Flujos Ejemplos.
Diagrama de Flujos Ejemplos.Diagrama de Flujos Ejemplos.
Diagrama de Flujos Ejemplos.
 
Logica de programacion de algoritmos
Logica de programacion de algoritmosLogica de programacion de algoritmos
Logica de programacion de algoritmos
 
Ejemplos de Algoritmos
Ejemplos de AlgoritmosEjemplos de Algoritmos
Ejemplos de Algoritmos
 
Diagrama estructurado-pseudocódigo
Diagrama estructurado-pseudocódigoDiagrama estructurado-pseudocódigo
Diagrama estructurado-pseudocódigo
 
Bottom up top down
Bottom up top downBottom up top down
Bottom up top down
 
Logica de la Programación Problemas y Soluciones
Logica de la  Programación  Problemas y SolucionesLogica de la  Programación  Problemas y Soluciones
Logica de la Programación Problemas y Soluciones
 
52 ejercicios-resueltos-en-pseudocodigo
52 ejercicios-resueltos-en-pseudocodigo52 ejercicios-resueltos-en-pseudocodigo
52 ejercicios-resueltos-en-pseudocodigo
 
Programacion
ProgramacionProgramacion
Programacion
 
Pre logica
Pre logicaPre logica
Pre logica
 
Temario
TemarioTemario
Temario
 
Introducción a la programación en c++
Introducción a la programación en c++Introducción a la programación en c++
Introducción a la programación en c++
 

Similar a Desarrollo de lógica algorítmica

Algoritmos y clase
Algoritmos y claseAlgoritmos y clase
Algoritmos y clase
daosma
 
Diseno dealgoritmos
Diseno dealgoritmosDiseno dealgoritmos
Diseno dealgoritmos
Deyvid Atens
 
Algoritmos y programas datos importantes
Algoritmos y programas datos importantesAlgoritmos y programas datos importantes
Algoritmos y programas datos importantes
Esteban Bedoya
 

Similar a Desarrollo de lógica algorítmica (20)

Desarrollo de lógica algorítmica_PARTE 1.PPTX
Desarrollo de lógica algorítmica_PARTE 1.PPTXDesarrollo de lógica algorítmica_PARTE 1.PPTX
Desarrollo de lógica algorítmica_PARTE 1.PPTX
 
01_IntroduccionAlgoritmos (1).pdf
01_IntroduccionAlgoritmos (1).pdf01_IntroduccionAlgoritmos (1).pdf
01_IntroduccionAlgoritmos (1).pdf
 
Tema 4 -_introduccion_a_razonamiento_algoritmico
Tema 4 -_introduccion_a_razonamiento_algoritmicoTema 4 -_introduccion_a_razonamiento_algoritmico
Tema 4 -_introduccion_a_razonamiento_algoritmico
 
Computacion ii cap i
Computacion ii cap iComputacion ii cap i
Computacion ii cap i
 
computacion
computacioncomputacion
computacion
 
Algoritmos y clase
Algoritmos y claseAlgoritmos y clase
Algoritmos y clase
 
Diseno dealgoritmos
Diseno dealgoritmosDiseno dealgoritmos
Diseno dealgoritmos
 
Diagrama de flujo
Diagrama de flujoDiagrama de flujo
Diagrama de flujo
 
Unidad 2 introducción a los algoritmos
Unidad 2 introducción a los algoritmosUnidad 2 introducción a los algoritmos
Unidad 2 introducción a los algoritmos
 
Unidad 1 Introducción a los Algoritmos.ppt
Unidad 1 Introducción a los Algoritmos.pptUnidad 1 Introducción a los Algoritmos.ppt
Unidad 1 Introducción a los Algoritmos.ppt
 
Manual de java_3
Manual de java_3Manual de java_3
Manual de java_3
 
Manual de javaa2
Manual de javaa2Manual de javaa2
Manual de javaa2
 
Manual de java
Manual de java Manual de java
Manual de java
 
manual 10
manual 10manual 10
manual 10
 
Manual de java 3
Manual de java 3Manual de java 3
Manual de java 3
 
MANUAL DE JAVA 1
MANUAL DE JAVA 1MANUAL DE JAVA 1
MANUAL DE JAVA 1
 
Algoritmos Y Programas Unidad1
Algoritmos Y  Programas Unidad1Algoritmos Y  Programas Unidad1
Algoritmos Y Programas Unidad1
 
Foro de integracion
Foro de integracionForo de integracion
Foro de integracion
 
Algoritmos y programacion en C++
Algoritmos y programacion en C++Algoritmos y programacion en C++
Algoritmos y programacion en C++
 
Algoritmos y programas datos importantes
Algoritmos y programas datos importantesAlgoritmos y programas datos importantes
Algoritmos y programas datos importantes
 

Desarrollo de lógica algorítmica

  • 1. Desarrollo de lógica algorítmica Algoritmos y lenguajes de programación M.C. Edgar Omar Bañuelos Lozoya
  • 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 2
  • 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 ¡Un lenguaje de programación es tan sólo un medio para expresar Spaghetti recipe y una computadora es sólo un procesador para un algoritmo ejecutarlo! Spaghetti recette 3
  • 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. 4
  • 5. Características de los algoritmos (cont.) La definición de un algoritmo debe describir tres partes: 1. Entrada 2. Proceso 3. Salida Por ejemplo para el algoritmo de la receta: 1. Entrada 2. Proceso 3. Salida Ingredientes y utensilios empleados Elaboración de la receta en la cocina Terminación del plato, el platillo en sí 5
  • 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. 6
  • 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. inicio 2. leer el pedido 3. examinar la ficha del cliente 4. si el cliente es solvente: 5. aceptar pedido 6. si no: 7. rechazar pedido 8. fin si 9. fin 7
  • 8. Características de los algoritmos (cont.) • Algoritmo para saber si un número es primo o no: 1. inicio 2. leer el número (num) 3. establecer una variable x a 2 4. mientras x < num hacer: 5. si el resultado de num/x es entero: 6. escribir num no es un número primo 7. ir al paso 12 8. fin si 9. aumentar x en 1 10. fin mientras 11. escribir num es un número primo 12. fin 8
  • 9. Características de los algoritmos (cont.) • Algoritmo para obtener el número mayor de tres números dados por el usuario: 1. inicio 2. 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 mayor 7. si no si num2>=num1 y num2>=num3: 8. escribir num2 es el número mayor 9. si no: 10. escribir num3 es el número mayor 11. fin si 12. fin 9
  • 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. 10
  • 11. 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: Problema original Subproblemas 1. calcular área de un triángulo a partir del valor de sus lados Refinamiento 1. leer valores de los lados 2. calcular perímetro 3. calcular semiperimetro 4. calcular área 5. escribir resultados 11
  • 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. 12
  • 13. Diseño del algoritmo (cont.) Diseño de un algoritmo Escritura del algoritmo: Diseño descendente Refinamiento por casos -pseudocódigo (1) (2) -diagrama de flujo -diagrama N-S (3) 13
  • 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. 14
  • 15. Pseudocódigo (cont.) • Ejemplo, cálculo del salario de un trabajador: INICIO // Cálculo del salario: LEER nombre, horas_trabajadas, pago_por_hora, deducciones salario = horas_trabajadas * pago_por_hora salario_neto = salario – deducciones ESCRIBIR nombre, salario, salario_neto FIN 15
  • 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 16
  • 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. 17
  • 18. Diagrama de flujo (cont.) • Plantilla típica para diagramas de flujo (cont.): no sí 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. 18
  • 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. 19
  • 20. Diagrama de flujo (cont.) • Ejemplo, cálculo del salario de un trabajador: inicio cálculo del salario leer nombre, horas_trabajadas, pago_por_hora, deducciones Es posible agregar varias acciones similares en un solo símbolo: salario = horas_trabajadas * pago_por_hora salario = horas_trabajadas * pago_por_hora salario_neto = salario – deducciones salario_neto = salario – deducciones escribir nombre, salario, salario_neto fin 20
  • 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. 21
  • 22. Diagrama de flujo (cont.) Determinar si un número es primo. 22
  • 23. Diagrama de flujo (cont.) Obtener el número mayor de tres números. 23
  • 24. Diagrama de flujo (cont.) Sumar números pares entre dos números. 24
  • 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. 25
  • 26. Diagrama de Nassi-Schneiderman (N-S) (cont.) • Ejemplo, cálculo del salario de un trabajador: Algoritmo cálculo del salario leer nombre, horas_trabajadas, pago_por_hora, deducciones calcular salario = horas_trabajadas * pago_por_hora calcular salario_neto = salario – deducciones escribir nombre, salario, salario_neto fin 26
  • 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. 28
  • 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. 29
  • 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 30
  • 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.1416 LEER radio area = PI * r * r ESCRIBIR area FIN 31
  • 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. 32
  • 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 33
  • 34. Sentencias selectivas • Principales sentencias selectivas: • Sentencia SI • Sentencia CASO 34
  • 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. 35
  • 36. Sentencia SI (cont.) • Ejemplo, algoritmo para preguntar la edad de una persona e imprimir si es o no mayor de edad: INICIO LEER edad SI edad >= 18 ENTONCES ESCRIBIR “Es mayor de edad” SI NO ESCRIBIR “No es mayor de edad” FIN SI FIN 36
  • 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: INICIO LEER lado1, lado2, lado3 SI 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 37
  • 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. 38
  • 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 39
  • 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”. 40
  • 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 SI FIN 41
  • 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. 42
  • 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 dia FIN 43
  • 44. Sentencia SI (cont.) Imprimir el día de la semana de acuerdo a un número de día leído. 44
  • 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. 2. 3. <expresión> se evalúa al inicio de la ejecución de la sentencia CASO, obteniéndose un determinado “valor”. 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. 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. 45
  • 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 CASO FIN 46
  • 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 CASO FIN 47
  • 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”: 48
  • 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. 49
  • 50. Sentencias iterativas (cont.) • Principales sentencias iterativas: • Sentencia PARA • Sentencia MIENTRAS • Sentencia HACER-MIENTRAS 50
  • 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 51
  • 52. Sentencia PARA (cont.) • Ejemplo, imprimir los números del 0 al 100: PARA i = 0 MIENTRAS i <= 100 SALTO 1 HACER ESCRIBIR i FIN PARA • Ejemplo, imprimir los números del 100 al 0: PARA i = 100 MIENTRAS i >= 0 SALTO -1 HACER ESCRIBIR i FIN PARA 52
  • 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) 53
  • 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 PARA FIN 54
  • 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 suma FIN 55
  • 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 suma FIN 56
  • 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 57
  • 58. Sentencia MIENTRAS (cont.) • Ejemplo, imprimir los números del 0 al 100: i=0 PARA i = 0 MIENTRAS i <= 100 SALTO 1 HACER MIENTRAS i <= 100 HACER ESCRIBIR i ESCRIBIR i FIN PARA i = i + 1 FIN MIENTRAS • Ejemplo, imprimir los números del 100 al 0: i = 100 MIENTRAS i >= 0 HACER PARA i = 100 MIENTRAS i >= 0 SALTO -1 HACER ESCRIBIR i ESCRIBIR i i = i - 1 FIN PARA FIN MIENTRAS 58
  • 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. 59
  • 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 MIENTRAS FIN 60
  • 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 suma FIN 61
  • 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 suma FIN 62
  • 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 SI FIN 63
  • 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> 64
  • 65. Sentencia HACER-MIENTRAS (cont.) • Ejemplo, imprimir los números del 0 al 100: i=0 i = -1 HACER HACER ESCRIBIR i i = i + 1 i = i + 1 ESCRIBIR i MIENTRAS i <= 100 MIENTRAS i < 100 i = 0 MIENTRAS i <= 100 HACER ESCRIBIR i i = i + 1 FIN MIENTRAS • Ejemplo, imprimir los números del 100 al 0: i = 100 i = 101 HACER HACER ESCRIBIR i i = i - 1 i = i - 1 ESCRIBIR i MIENTRAS i >= 0 MIENTRAS i > 0 i = 100 MIENTRAS i >= 0 HACER ESCRIBIR i i = i - 1 FIN MIENTRAS 65
  • 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. 66
  • 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 67
  • 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 suma FIN 68
  • 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 suma FIN 69
  • 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 SI FIN 70
  • 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: INICIO MIENTRAS verdadero HACER LEER num SI num = 0 ENTONCES ROMPER FIN SI cuadrado = num * num ESCRIBIR cuadrado FIN MIENTRAS FIN 71
  • 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: INICIO PARA i = 2 MIENTRAS i < 100 SALTO 1 HACER SI i % 2 = 0 ENTONCES CONTINUAR FIN SI ESCRIBIR i FIN PARA FIN 72