Está en la página 1de 108

Fundamentos de Programación

INC102

Departamento de Computación
Universidad de Valparaíso
Profesores: Eliana Providel – Roberto Muñoz
Unidad 2: Algoritmos
 Contenidos,
 Definiciones
 Conceptos básicos
 Diagramas de Flujo
 Programa
 Estructuras algorítmicas: Selección
 Estructura selectiva simple
 Estructura selectiva doble
 Estructura selectiva múltiple
 Estructuras Anidadas
 Estructuras algorítmicas: Repetición y ciclos
 Repetir
 Mientras

2
Unidad 2: Algoritmos
 Definiciones

Algoritmo

“Secuencia de pasos finita y ordenada que permite dar


solución a un problema”

3
Unidad 2: Algoritmos
 Definiciones
 Algoritmos,
 características
Secuencia finita de instrucciones
 Realizables
 No son ambiguos
 Su ejecución resuelve una tarea
 Bajo los mismos datos de entrada, arroja siempre el
mismo resultado
 Resultado
 Se obtiene una solución genérica y repetible que
transmitimos e interiorizamos, olvidando la inteligencia
que contienen.

4
Unidad 2: Algoritmos
 Definiciones

 Características de un algoritmo
 Precisión: los pasos a seguir deben ser precisados
claramente

 Determinismo: dado un conjunto de datos idénticos de


entrada, siempre debe arrojar los mismos resultados

 Finitud: independientemente de la complejidad del mismo,


siempre debe ser de longitud finita

5
Unidad 2: Algoritmos
 Definiciones
 Máquinas algorítmicas

 Artefactos
con la capacidad de llevar a cabo un algoritmo
 Ejemplos: calculadoras, celular,........,computadores

 Los algoritmos se representan mediante programas, en un


lenguaje no ambiguo cuya sintaxis y semántica es
comprensible para el computador

6
Unidad 2: Algoritmos
 Definiciones

Descubrir el algoritmo que


permite llevar a cabo un
Conjunto de tareas
Programar un
Computador

Representar el algoritmo en
un lenguaje de programación

7
Unidad 2: Algoritmos
 Definiciones

Problema

Análisis del Construcción Verificación


problema del algoritmo del algoritmo

8
Unidad 2: Algoritmos
 Definiciones

 Todo algoritmo consta de tres secciones

Algoritmo

Datos de Procesamiento Impresión de


entrada de los datos resultados

9
Unidad 2: Algoritmos
 Conceptos Básicos
 Tipos de datos
 Simples: identificador de una variable simple
 Referencia un único valor

 Ejemplos: enteros, reales, caracteres, booleanos, y


enumerados y subrangos

 Estructurados: el identificador de una variable


estructurada
 Referencia a un grupo de casillas de memoria

 Representa varios componentes que pueden ser un dato


simple o estructurado
 Ejemplos: arreglos, registros y conjuntos

10
Unidad 2: Algoritmos
 Conceptos Básicos
 Tipos de datos
 Datos numéricos
 Enteros: 127 -23 -8743 89
 Reales: 7.5 -0.496 198.0 -178.0

 Subrangos: 3..7; -56 ..78; ´a´..´z´,

 Enumerados:
• Ej.
• {Enero, Febrero, Marzo, Abril, Mayo, Junio}
• {Blanco, Rojo, Azul}
• {cara, sello}

11
Unidad 2: Algoritmos
 Conceptos Básicos
 Tipos de datos
 Datos alfanuméricos:
 Carácter simple: ‘1’ ‘&’ ‘a’
 Cadena de caracteres (string): ‘abcxt’ ‘l%u12’ ‘Paulina’

 Datos lógicos
 Booleanos: datos que sólo pueden tomar el valor
verdadero (true) o falso (false)

12
Unidad 2: Algoritmos
 Conceptos Básicos
 Identificadores
 Un identificador es el nombre que sirve para referenciar
casillas de memoria en donde se almaceno algún valor.

 Criterios para nombrarlos (dependen del lenguaje de


programación)
 Su primer carácter debe ser una letra

 Los demás caracteres pueden ser letras, dígitos o el


símbolo _
 Su nombre debe ser representativo de la función que
cumple

13
Unidad 2: Algoritmos
 Conceptos Básicos
 Constante
 Objetos cuyo valor no cambia durante la ejecución de un
programa
 Se denominan mediante identificadores
 Ejemplos:
 PI 3,14

 NOMBRE `Jose´

 LETRA ´k´

 VERDADERO

 100

14
Unidad 2: Algoritmos
 Conceptos Básicos
 Variables
 Son objetos que pueden cambiar su valor durante la
ejecución de un programa
 Normalmente aceptan valores de su tipo (en algunos
lenguajes se puede realizar una conversión a otros tipos)
 Se denominan mediante identificadores
 Ejemplos:
 base /* tipo entero*/
 nombre /* tipo string*/
 velocidad /* tipo real*/
 cumple /* tipo booleano*/
 días /* tipo enumerado*/
 Letra /* tipo caracter*/

15
Unidad 2: Algoritmos
 Conceptos Básicos
 Operaciones Aritméticas

Operación Operador aritmético

Potencia **

Multiplicación *

División /

Suma +

Resta -

Módulo (residuo) mod

División entera div

16
Unidad 2: Algoritmos
 Conceptos Básicos
 Jerarquía de los operadores Aritméticos

Operador Jerarquía
** Mayor
*, /, mod, div
+, - menor
 Los operadores aritméticos se aplican teniendo en cuenta la
jerarquía, y de izquierda a derecha
 Si una expresión contiene subexpresiones entre paréntesis,
éstas se evalúan primero
 Si las subexpresiones se encuentran anidadas por
paréntesis, primero se evalúan las expresiones de último
nivel de anidamiento

17
Unidad 2: Algoritmos
 Conceptos Básicos
 Jerarquía de los operadores Aritméticos
7 * 8 * ( 160 mod 3 ** 3 ) div 5 * 13 – 28

7 * 8 * ( 160 mod 27 ) div 5 * 13 – 28

7 * 8 * ( 25 ) div 5 * 13 – 28

56 * ( 25 ) div 5 * 13 – 28

1400 div 5 * 13 – 28

280 * 13 – 28
3640 – 28 = 3612

18
Unidad 2: Algoritmos
 Conceptos Básicos
 Expresiones lógicas
 Están constituidas por números, constantes o variables y
operadores lógicos o relaciones

 Sólo pueden tomar el valor verdadero o falso

19
Unidad 2: Algoritmos
 Conceptos Básicos
 Operadores Lógicos

 Permiten formular condiciones complejas a partir de


condiciones simples

Negación NO
Conjunción Y
Disyunción O

20
Unidad 2: Algoritmos
 Conceptos Básicos
 Operadores Relacionales
 Permiten comparar dos operandos (números,
alfanuméricos, constantes o variables)
 Su resultado es verdadero o falso

Operación Operador
Igual que =
Distinto que <>
Menor que <
Mayor que >
Menor igual que <=
Mayor igual que >=

21
Unidad 2: Algoritmos
 Conceptos Básicos
 Jerarquía de operadores
 Permiten comparar dos operandos (números,
alfanuméricos, constantes o variables)
 Su resultado es verdadero o falso
Operador Jerarquía

() (mayor)

**

*,/,mod,div

+,-

=, <>, <, >, <=, >=

No

O (menor)

22
Unidad 2: Algoritmos
 Conceptos Básicos
 Bloque de asignación
 Se utiliza para asignar valores o expresiones a una variable
 Es una operación destructiva
 <variable>  <expresión>
 La expresión puede ser aritmética o lógica, o una constante o
una variable

23
Unidad 2: Algoritmos
 Conceptos Básicos
 Bloque de asignación
 Ejemplo
 Se tienen las siguientes variables:
 i, ACUM y J que son de tipo entero.

 REA y SUM que son de tipo Real

 C que es de tipo carácter

 BAND que es de tipo Booleano

24
Unidad 2: Algoritmos
Tabla de ruta del bloque de asignación

 Conceptos Básicos int int int real real char bool


 Bloque de asignación # i j ACUM REA SUM C BAND
1 0
Ejemplo
1. i  0 2 1
2. ii+1 3 0
3. ACUM  0
4 8
4. J  5 ** 2 div 3
5. C  ´a´ 5 `a`
6. ACUM  J div i 6 8
7. REA  ACUM / 3
8. BAND  (8 > 5) y (15 < 2 **3) 7 2,66
9. SUM  (ACUM * 5) /( J ** 2) 8 Falso
10. ii*3 9 0,625
11. REA REA / 5
12. BAND BAND o (i =J) 10 3
13. i  REA 11 0,532
14. Cj
12 Falso
13 error
14 error
25
Unidad 2: Algoritmos
 Diagramas de Flujo

 Representa gráficamente los pasos o procedimientos a seguir


para alcanzar la solución de un problema (un algoritmo)

 A partir del mismo se escribe un programa en algún lenguaje


de programación

26
Unidad 2: Algoritmos
 Diagramas de Flujo

27
Unidad 2: Algoritmos
 Diagramas de Flujo

Inicio y fin del diagrama de flujo

Lectura: introducción de datos de entrada

Proceso: expresa asignaciones, operaciones


aritméticas, etc.

Decisión: Almacena una condición, cuyo resultado


define el siguiente curso de acción

28
Unidad 2: Algoritmos
 Diagramas de Flujo

Decisión múltiple: almacena un selector, cuyo


valor define el siguiente curso de acción

Dirección del flujo del diagrama

Escritura: impresión de un resultado

Conexión dentro Conexión entre


de una misma páginas
página

29
Unidad 2: Algoritmos
 Diagramas de Flujo

 Reglas para la construcción de un diagrama de flujo

1. Todo diagrama de flujo debe tener un inicio y un fin


2. Las líneas utilizadas indican la dirección del flujo del
diagrama deben ser rectas, verticales y horizontales
3. Todas las líneas utilizadas deben estar conectadas
4. El diagrama debe ser construido de arriba hacia abajo (top-
down) y de izquierda a derecha
5. La notación empleada debe ser independiente del lenguaje
de programación

30
Unidad 2: Algoritmos
 Diagramas de Flujo

 Reglas para la construcción de un diagrama de flujo

6. Cuando se representa una tarea compleja, es recomendable


agregar comentarios que ayuden a comprender el diagrama
7. Si el diagrama requiere más de una hoja deben usarse los
conectores apropiados
8. A un símbolo no puede llegar más de una línea

31
Unidad 2: Algoritmos
 Diagramas de Flujo

Inicio

Lectura de
datos

Procesamiento
de datos

Impresión de
resultados

fin

32
Unidad 2: Algoritmos
 Construcción de diagrama de flujo
 Ejemplo
 Dada las dos notas de
los certámenes de Fundamentos
Inicio
de Programación.
Construya un diagrama de flujo
Nota1, Nota2
que imprima el promedio
de las notas.
Promedio  (Nota1+ Nota2) / 2

Promedio

fin

33
Unidad 2: Algoritmos
 Construcción de diagrama de flujo
 Ejemplo
 Ejemplo (1/2)
Inicio
Construya el diagrama de flujo
que dado los datos enteros
A, B, C
A, B y C escriba el resultado
de la siguiente expresión.
Suma1 A+ B
(A+B)+(C+B)² Suma2  (C+B)**2
2 Suma3  Suma1 +Suma2
Res  suma3 DIV 2
A, B y C variables de tipo entero
Suma1, suma2 y suma3 variables de tipos Res
entero que almacenan resultados de las
diferentes sumas.
Res variable de tipo entero que almacena el fin
resultado de la expresión
34
Unidad 2: Algoritmos
 Construcción de diagrama de flujo

Inicio

Ejemplo Ejecución 1 del programa


A, B, C # A B C Suma1 Suma2 Suma3 Res

1 2 3 4
Suma1 A+ B
Suma2  (C+B)**2 2 5 49 54 27
Suma3  Suma1 +Suma2
Res  suma3 DIV 2
Ejemplo Ejecución 2 del programa
# A B C Suma1 Suma2 Suma3 Res
Res

1 1 5 2

fin 2 6 49 55 27

35
Unidad 2: Algoritmos
 Programa

 “Es un conjunto de instrucciones que sigue el computador


para alcanzar un resultado especifico”.

 Concepto desarrollado por Von Neumann en 1946.

 Lenguaje de programación:
 esta constituido por un conjunto de reglas sintácticas y
semánticas que hacen posible escribir un programa

36
Unidad 2: Algoritmos
 Programa

 Estudiaremos lenguajes de programación estructurada

 Los programas se leen de arriba hacia abajo jerárquicamente


(top-down)

 Se utiliza un conjunto de estructuras de control en cada


nivel.

 Utilizaremos un lenguaje algorítmico de pseudo


pseudo--código

37
Unidad 2: Algoritmos
 Programa

Símbolo Instrucción Ejemplo

Leer…
B, C

Leer B, C

Hacer …
A  B +C

Hacer AB+C

Escribir
A

Escribir A

38
Unidad 2: Algoritmos
 Programa

Inicio

Inicio

Nota1, Nota2 1. Leer Nota1, Nota2

Promedio  (Nota1+ Nota2) / 2 2. Hacer Promedio  (Nota1 + Nota2) / 2

Promedio 3. Escribir Promedio


Fin programa

fin

39
Unidad 2: Algoritmos
 Programa
 Ejemplo: Programa que calcula el promedio y lo imprime en
lenguaje algorítmico.

 Calcula_Promedio
 {El programa, dado Nota1, Nota2 calcula el promedio de las
variables}
 {Nota1, Nota2 y Promedio son de tipo Real}
1. Leer Nota1, Nota2

2. Hacer Promedio  (Nota1 + Nota2) / 2

3. Escribir Promedio

40
Unidad 2: Algoritmos
 Programa
 Ejemplo: Describa mediante un diagrama de flujo y pseudo-
código un programa que permita calcular e imprimir el
cuadrado y cubo de un entero positivo NUM

Inicio
Cuadrado_cubo

Num {El programa, dado como dato un número entero


positivo, calcula el cuadrado y el cubo de dicho
número }
Cuad  Num * Num
{Cub, Cuad, Num son variables de tipo entero}
Cub  Num** 3
Inicio
“El cuadrado es”, Cuad 1. Leer Nun
“El cubo es”, Cub
2. Hacer Cuad  Nun*Num y Cub  Num**3
3. Escribir Cuad, Cub
fin Fin programa

41
Unidad 2: Algoritmos
 Estructuras Selectivas, Introducción

 Se utilizan cuando en la estructura del programa se debe


tomar una decisión, que indicará el camino a seguir.

 La decisión se basa en la evolución de una o más condiciones.

 Es posible tomar decisiones en cascada.

42
Unidad 2: Algoritmos
 Estructuras Selectivas, Introducción

 Las estructuras algorítmicas selectivas que se utilizan son:


 SI ENTONCES Estructura selectiva simple.
 SI ENTONCES / SINO Estructura selectiva doble.
 SI MULTIPLE Estructura selectiva Múltiple.

43
Unidad 2: Algoritmos
 Estructuras Selectivas, Simple

 Permite que el flujo del diagrama siga por un camino


específico si se cumple una condición lógica o conjunto de
condiciones lógicas.

 Si el resultado de la condición o condiciones lógicas es


verdadero, entonces se ejecutan ciertas operaciones.

 Posteriormente se continua la ejecución normal del


diagrama.

44
Unidad 2: Algoritmos
 Estructuras Selectivas, Simple

Falso Donde:
Condición Condición: Expresa la condición o
lógica conjunto de condiciones
NO
lógicas a evaluar
SI Verdadero Operación: expresa la operación
o conjunto de operaciones a
realizar si la condición resulta
operación verdadera

45
Unidad 2: Algoritmos
 Estructuras Selectivas, Simple
 SI ENTONCES en Pseudo-código



Si condición entonces
hacer Operaciones

{Fin de la condición}

46
Unidad 2: Algoritmos
 Estructuras Selectivas, Simple
 SI ENTONCES en Pseudo-código

 Ejemplo
 Dada las dos notas de los certámenes de Fundamentos de
Programación. Construya un programa que calcule el
promedio de las dos notas y si el promedio es mayor o igual
a 4,0 escriba que el alumno esta aprobado.

47
Unidad 2: Algoritmos
 Estructuras Selectivas, Simple
 Ejemplo
 Diagrama de Flujo
Inicio

Nota1, Nota2

Promedio  (Nota1+ Nota2) / 2

No (Falso)
Promedio >= 4,0

SI (Verdadero)

“Aprobado”

fin
48
Unidad 2: Algoritmos
 Estructuras Selectivas, Simple
 Ejemplo
 Seudo código
 Calcula_Promedio
 {El programa, dado Nota1, Nota2 calcula el promedio
de las variables}
 {Nota1, Nota2 y Promedio son de tipo Real}
 Inicio
 1. Leer Nota1, Nota2
 2. Hacer Promedio  (Nota1 + Nota2) / 2
 3. Si Promedio >= 4,0 entonces
• 3.1 Escribir “Aprobado”
 4. {Fin de la condición Paso 3 }
 Fin programa

49
Unidad 2: Algoritmos
 Estructuras Selectivas, Simple
 Ejemplo
 Una persona va a comprar un computador y cuenta con
$250.000, al revisar la lista de precios se da cuenta que en el
precio no esta incluido el IVA.
 Además el vendedor le dice que existe un descuento de un
5% sobre el precio con IVA.
 Desarrolle un programa que dado un valor (precio) calcule el
precio final que incluye el IVA y aplique el descuento de el
5% si es que el precio con IVA es menor que el presupuesto
de la persona y debe mostrar el precio final del producto
 El IVA equivale al 18% del precio neto.

50
Unidad 2: Algoritmos
 Estructuras Selectivas, Simple
 Ejemplo
Inicio
 DFD
Precio, pres

IVA  precio * 0,18


precio_final  precio + IVA

No (falso)
precio_final <= pres

Si (verdadero)

precio_final  precio_final – (precio_final*0.05)

“El precio final es”, precio_final

51 fin
Unidad 2: Algoritmos
 Estructuras Selectivas, Simple
 Ejemplo
 Seudo código
 Calcula_IVA
 {el programa, dado como dato el precio de un producto calcula el IVA
del precio que equivale al 18%, si el presupuesto es mayor al precio con
IVA aplica un descuento de un 5%}
 {pres, Precio, precio_final e IVA son variables enteras}
 Inicio
 1. Leer Precio, pres
 2. Hacer IVA precio * 0,18 y precio_final  precio + IVA
 3. Si precio_final <= pres entonces
 Hacer precio_final  precio_final – (precio_final * 0.05)
 Escribir “El precio final es”, Precio_final
 4. {Fin condición paso 3 }
 Fin Programa

52
Unidad 2: Algoritmos
 Estructuras Selectiva Doble
 Si entonces / sino

 Permite que el flujo del diagrama bifurque en dos ramas


diferentes en el punto de la toma de decisión.
 Si el resultado de la evaluación de la condición lógica es
verdadero, se sigue el camino indicado por ella y se ejecutan
ciertas operaciones.
 En caso contrario si el resultado de la evaluación de la
condición es falso, entonces sigue otro camino y se ejecutan
otras condiciones.
 Para ambos casos luego de ejecutarse las operaciones
indicadas, se continua con la secuencia normal del
diagrama.

53
Unidad 2: Algoritmos
 Estructuras Selectiva Doble
 Diagrama de Flujo si entonces / sino

Donde:
Condición: Expresa la condición
Verdadera Falsa o conjunto de condiciones a
Condición evaluar
SI NO Operación1: expresa la
operación o conjunto de
operaciones a realizar si la
condición resulta verdadera
operación2 Operación2: expresa la
operación1
operación o conjunto de
operaciones a realizar si la
condición resulta falsa

54
Unidad 2: Algoritmos
 Estructuras Selectiva Doble
 Pseudo- código Si entonces / sino
...
Si condición Entonces
Hacer Operación1
....
Hacer Operación k
Sino
Hacer Operación 2
...
Hacer Operación j
{Fin condición}

55
Unidad 2: Algoritmos
 Estructuras Selectiva Doble
 Ejemplo 1,
 Dada las dos notas de los certámenes de Fundamentos de
Programación. Construya un programa que calcule el
promedio de las dos notas y si el promedio es mayor o igual
a 4,0 escriba que el alumno esta aprobado en caso contrario
que esta reprobado.

56
Unidad 2: Algoritmos
 Estructuras Selectiva Doble
 Ejemplo 1, diagrama de flujo
Inicio

Nota1, Nota2

Promedio  (Nota1+ Nota2) / 2

Promedio >= 4,0

SI (Verdadero) No (Falso)

“Aprobado” “Reprobado”

fin

57
Unidad 2: Algoritmos
 Estructuras Selectiva Doble
 Ejemplo 1, seudo código
 Calcula_Promedio
 {El programa, dado Nota1, Nota2 calcula el promedio de las
variables}
 {Nota1, Nota2 y Promedio son de tipo Real}
 Inicio
1. Leer Nota1, Nota2
2. Hacer Promedio  (Nota1 + Nota2) / 2
3. Si Promedio >= 4,0 entonces
Escribir “Aprobado”
sino
Escribir “Reprobado”
4. {Fin de la condición Paso 3 }
 Fin Programa

58
Unidad 2: Algoritmos
 Estructuras Selectiva Múltiple
 Si múltiple
 Permite que el flujo se bifurque por varias ramas en el punto
de toma de decisión.
 Dependiendo del valor del selector es cual operación se
realizara
 Ejemplo
 Selector = 1 => operación 1

 Selector = 2 => operación 2

 Selector = N => operación n

 Y si toma un valor distinto entre 1 y N continua el flujo


con la acción n+1

59
Unidad 2: Algoritmos
 Estructuras Selectiva Múltiple
 Si múltiple
 Características
 Selector Es la variable o expresión a evaluar y por la
cual se toma la decisión.
 Acción 1 expresa una operación al tomar el selector el
valor 1
 Acción 2 expresa una operación al tomar el selector el
valor 2
 Acción N expresa una operación al tomar el selector el
valor N
 Acción N+1 expresa la operación a realizar cuando se
continúe con el flujo normal del diagrama acción n+1

60
Unidad 2: Algoritmos
 Estructuras Selectiva Múltiple
 Si múltiple, diagrama de flujo

Selector

Valor 1 Valor 2 Valor n

Acción 1 Acción 2 Acción N

Acción N+1

61
Unidad 2: Algoritmos
 Estructuras Selectiva Múltiple
 Si múltiple, seudo código
 Si SELECTOR igual
 valor 1: hacer Acción 1

 valor 2: hacer Acción 2

 ...

 valor n: hacer Acción N

 {Fin del condicional}


 Hacer Acción N + 1

62
Unidad 2: Algoritmos
 Estructuras Selectiva Múltiple
 Ejemplo
 Dado la categoría y sueldo de un trabajador, calcule el
aumento y el nuevo sueldo de un trabajador
 calcular el aumento correspondiente teniendo en cuenta la
siguiente tabla:

 Construir un diagrama de flujo y seudocodigo


categoría Sueldo
1 15%
2 10%
3 8%
4 7%

63
Unidad 2: Algoritmos
 Estructuras Selectiva Múltiple
 Ejemplo, DFD inicio

cate, sue

{NUM, V variables de tipo


Entero}
cate

1 2 4
3
nsue sue* 1,15 nsuesue * 1,10 nsue sue* 1,08 nsuesue * 1,07

cate, nsue

fin
64
Unidad 2: Algoritmos
 Estructuras Selectiva Múltiple
 Ejemplo, seudo código
 aumento_sel_múltiple
 {El programa calcula el aumento de sueldo de los trabajadores.
considerando la categoría. El aumento se incorpora al salario}
 {cate es una variable de tipo entero. sue y nsue son variables de
tipo real}
 1. leer cate, sue
 2. si cate igual
 1: hacer nsue  sue * 1,15
 2: hacer nsue  sue * 1,10
 3: hacer nsue  sue * 1,08
 4: hacer nsue  sue * 1,07
 {Fin condición paso 2}
 4. Escribir cate, nsue

65
Unidad 2: Algoritmos
 Estructuras Selectiva Múltiple

 ¿Qué pasa si Categoría es 5?


 ¿Cual será la salida del programa?

 La estructura selectiva si múltiple es flexible por lo que se


puede aplicar de diferentes formas

66
Unidad 2: Algoritmos
 Estructuras Selectiva Múltiple
 Aplicación para si múltiple

Selector
de
otra
forma
1 2 3
acción 1 acción 2 acción 3 acción X

acción Y

67
Unidad 2: Algoritmos
 Estructuras Selectiva Múltiple
 Aplicación para si múltiple
 Seudo código

Si Selector igual
1: hacer acción 1
2: hacer acción 2
3: hacer acción 3
de otra forma: hacer acción X
{Fin del condicional}
Hacer acción Y

68
Unidad 2: Algoritmos
 Estructuras Selectiva Múltiple
 Aplicación para si múltiple

Selector
de
otra
forma
1,2 3,4,5,6 7
acción 1 acción 2 acción 3 acción 4

acción Y

69
Unidad 2: Algoritmos
 Estructuras Selectiva Múltiple
 Aplicación para si múltiple
 Seudo código

Si Selector igual
1,2: hacer acción 1
3,4,5,6: hacer acción 2
7: hacer acción 3
de otra forma: hacer acción 5
{Fin del condicional}
Hacer acción Y

70
Unidad 2: Algoritmos
 Estructuras Selectiva en cascada (anidadas)

 Se utilizan cuado al tomar una decisión y marcar el camino


correspondiente a seguir, es necesario hacer una nueva
decisión.

 Este proceso puede repetirse numerosas veces, dentro de


una estructura Selectiva.

71
Unidad 2: Algoritmos
 Estructuras Selectiva en cascada (anidadas)

Estructura Simple NO
SI ENTONCES
Condición 1
Estructura Doble
SI ENTONCES / SINO SI

SI NO
Condición 2

operación 2.1 operación 2.2

72
Unidad 2: Algoritmos
 Estructuras Selectiva en cascada (anidadas)
 Primer caso - seudo-código
1. Si condición1 entonces
1.1 si condición2 entonces
hacer operación 2.1
sino
hacer operación 2.2
1. 2 {fin de condición del paso 1.1 }
2. {fin de condicional paso 1}

73
Unidad 2: Algoritmos
 Estructuras Selectiva en cascada (anidadas)
 segundo caso - DFD
Estructura Doble
SI ENTONCES / SINO SI NO
Condición 1

Estructura Simple
SI ENTONCES
SI NO
Condición2 Condición3
NO
SI

operación2,1 operación2,2 operación3,1

74
Unidad 2: Algoritmos
 Estructuras Selectiva en cascada (anidadas)
 segundo caso – Seudo-código
...
N. Si condición 1 entonces
N.1. si condicion2 entonces
hacer operación 2.1
Sino
hacer operación 2.2
N.2. {fin condicional N.1 }
Sino
N.3. si condición3 entonces
hacer operación 3.1
N.4 {fin condicional del paso N.3}
N+1. {fin condicional del paso N

75
Unidad 2: Algoritmos
 Estructuras Selectiva en cascada (anidadas)
 tercer caso – DFD
Estructura Doble
SI ENTONCES / SINO
Estructura Múltiple
SI MULTIPLE
SI NO
CONDICION1

NO
SELECTOR
CONDICION5

V2 D.O.F
V1 SI
NO SI NO
OPERACION2.1 CONDICION3 CONDICION4 OPERACION5.1

SI

OPERACION3.1 OPERACION4.1 OPERACION4.2


Estructura
Simple
SI ENTONCES

OBS: D.O.F. = DE OTRA FORMA 76


Unidad 2: Algoritmos
 Estructuras Selectiva en cascada (anidadas)
 tercer caso – Seudo-código
...
N si condicion1 entonces
N.1 Si selector igual
V1: hacer operación 2.1
V2:
N.1.1 si condicion3 entonces
hacer operación 3.1
N.1.2 {fin condicional paso N.1.1}
D.O.F.
N.1.3 si condicion4 entonces
hacer operación 4.1
sino
hacer operación 4.2
N.1.4 {fin del condicional N.1.3}
N.2 {fin condicional paso N.1}
sino
N.3 si condición5 entonces
hacer operación 5.1
N.4 {fin condicional paso N.3}
N+1 {fin condicional paso N}

77
Unidad 2: Algoritmos
 Estructuras Selectiva en cascada (anidadas)
 Ejemplo
 Diseñar un algoritmo que lea las longitudes de los tres lados
de un triángulo (A, B, C) y determine qué tipo de triángulo
es, de acuerdo a los siguientes casos. Suponiendo que A
determina el mayor de los tres lados y, B y C corresponden a
los otros dos, entonces:
 Si A >= (B + C) No se trata de un triángulo
 Si A**2 = B**2 + C**2 Es un triángulo rectángulo
 Si A**2 > B**2 + C**2 Es un triángulo con ángulo
obtuso
 Si A**2 < B**2 + C**2 Es un triángulo con ángulo
agudo

78
Unidad 2: Algoritmos Inicio

 Ejemplo A,B,C

si no
A> = (B + C)

no
“No es un triángulo” si
A**2 = B**2 + C**2

“es un triángulo
con angulo recto” si no
A**2 > B**2 + C**2

“es un triángulo
con ángulo obtuso
“es un triángulo
con ángulo
agudo”

79
Fin
Unidad 2: Algoritmos
 Estructuras Selectiva en cascada (anidadas)
 Ejemplo Programa _ triángulo

{Este programa determina de que tipo es un determinado triángulo}

{A, B y C son variables de tipo entera}


Inicio
1. Leer A, B, C
2. Si A>B+C entonces
3. Escribir “No se trata de un triángulo”
4. Sino
5. Si A**2 =B**2 +C**2 entonces
6. Escribir “Es un triángulo con ángulo recto”
7. Sino
8. Si A**2 > B**2 + C**2 entonces
9. Escribir “Es un triángulo con ángulo obtuso”
10. Sino
11. Escribir “Es un triángulo con ángulo agudo”
12. {Fin condicional paso 8}
13. {fin condicional paso 5}
14. {Fin condicional paso 2}
16. Fin _ programa
80
Unidad 2: Algoritmos
 Estructuras Selectiva en cascada (anidadas)
 Ejemplo
 Diseñar un algoritmo que tiene como entradas dos enteros
positivos y un carácter.
 El algoritmo deberá sumar, restar, multiplicar o dividir los
valores de los dos primeros parámetros dependiendo del
tercer parámetro, y devolver el resultado.

 El tercer parámetro es la letra inicial de la operación a


realizar, por ejemplo si es ‘s’ la operación es suma.

81
Unidad 2: Algoritmos inicio

 Estructuras Selectiva Num1, Num2 ,


OPERACION
en cascada (anidadas)
 Ejemplo Control 0

OPERACION

‘ ’r’ ’d’ ’m’


s’ d.o.f
RESNum1 +Num2 RES Num1-Num2 RESNum1 div Num2 RES Num1 * Num2 Control  -1

no
Control= - RES
1

si

Escribir “Error”

82 fin
Unidad 2: Algoritmos
 Estructuras Selectiva en cascada (anidadas)
 Ejemplo
Programa _ menú
{Num1, Num2, RES, control son variables de tipo entera, OPERACION es del tipo carácter.}
1. Inicio
2. Leer Num1, Num2, OPERACION
3. hacer Control0;
4. Si OPERACION igual
5. ‘s’ : Hacer RES  Num1 + Num2
6. ‘r’ : Hacer RES  Num1 – Num2
7. ‘d’ : Hacer RES  Num1 div Num2
8. ‘m’: Hacer RES  Num1 * Num2
9. d.o.f.: Hacer Control  -1
10. {Fin selector línea 4}
11. Si Control = -1 Entonces
12. Escribir “Error”
13. Sino
14. Escribir RES
15. {fin condicional línea 11}
16. Fin_programa

83
Unidad 2: Algoritmos
 Estructuras Algorítmicas Repetitivas,

 Existen algoritmos en los que el conjunto de operaciones


deben ser ejecutadas varias veces.
 Las instrucciones son las mismas, pero los datos sobre los
que operan varían.
 El conjunto de operaciones que se ejecuta repetidamente se
llama ciclo.
 Algunas condiciones que se deben cumplir son:
 El ciclo debe ejecutarse un numero finito de veces
 Cada vez que se ejecuta el algoritmo se evalúan condiciones
necesarias que determinan si se continúa con la ejecución
del ciclo.

84
Unidad 2: Algoritmos
 Estructuras Algorítmicas Repetitivas,

 Ejemplo
 Construya un diagrama de flujo tal que dados como
datos los sueldos de empleados de una empresa, obtenga
el total de los sueldos.

85
Unidad 2: Algoritmos
 Estructuras Algorítmicas Repetitivas,

INICIO
Donde:
SUE1 .. SUE5: variables de tipo real
SUE1, SUE2, SUE3, SUE4, SUE5 NOMINA : variable de tipo real.
Almacena la suma de los sueldos de los
empleados.
NOMINA SUE1+ SUE2+ SUE3+ SUE4+ SUE5

NOMINA
¿Que pasa si la empresa tuviese mas de cinco
empleados, ej. 100 o 1000…etc.?
El problema se resuelve utilizando estructuras
FIN
algorítmicas repetitivas

86
Unidad 2: Algoritmos
 Estructuras Algorítmicas Repetitivas,

 Clasificación
 a) repetir (For-to)
 b) Mientras (while)

87
Unidad 2: Algoritmos
 Estructuras Algorítmicas Repetitivas,
 a) repetir (Para-a o For-to)
 Se utiliza cuando se conoce a priori cuantas veces se debe
ejecutar el algoritmo

 La estructura algorítmica que se repite un número definido


de veces se llama repetir

 El número de veces no depende de las proposiciones que


se encuentran dentro del ciclo.

 Para utilizar la estructura algorítmica se debe conocer y


entender bien el problema, para determinar la cantidad de
iteraciones que debe realizar el problema.

88
Unidad 2: Algoritmos
 Estructuras Algorítmicas Repetitivas,
 a.1) repetir ascendente DFD

V  VI

NO

Donde:
V <= VF
SI V es la variable de control del
ciclo.
VI es el valor inicial.
PROCESO VF es el valor final.
INC es el incremento cuando la
V  V + INC
estructura repetir es ascendente.

89
Unidad 2: Algoritmos
 Estructuras Algorítmicas Repetitivas,
 a.1) repetir ascendente, seudo código

Hacer V VI
Repetir con V desde VI hasta VF

{Proceso}

Hacer V  V + INC
{Fin ciclo}

90
Unidad 2: Algoritmos
 Estructuras Algorítmicas Repetitivas,
 a.2) repetir descendente, DFD

V  VI

NO
Donde:
V >= VF V es la variable de control del
SI ciclo.
VI es el valor inicial.
VF es el valor final.
PROCESO
DEC es el decremento cuando la
estructura repetir es descendente.
V  V - DEC

91
Unidad 2: Algoritmos
 Estructuras Algorítmicas Repetitivas,
 a.2) repetir descendente, Seudo Código

Hacer V VI
Repetir con V desde VI hasta VF

{Proceso}

Hacer V  V - DEC
{Fin ciclo}

92
Unidad 2: Algoritmos
 Estructuras Algorítmicas Repetitivas,
 a) Repetir

 Ejemplo
 Construya un diagrama de flujo tal que dados como
datos los sueldos de cinco empleados de una empresa,
obtenga el total de los sueldos.
 Utilizando estructuras repetitivas

93
INICIO

Unidad 2: Algoritmos NOMINA  0

 Estructuras Algorítmicas Repetitivas,


I 1
 a) Repetir
NO
I <= 5
 Ejemplo: DFD
SI
Explicación de las variables
SUE
I: Variable tipo entero que controla el ciclo.
Contabiliza el número de veces que ha de
repetirse determinada acción.
El contador toma un valor inicial
(generalmente 0 ó 1) y se incrementa en la NOMINA NOMINA + SUE
mayoría de los casos en una unidad en cada
vuelta del ciclo.
NOMINA: Es una variable de tipo entero que II+1
representa un acumulador. Este se utiliza
cuando debemos obtener el total acumulado
de un conjunto de cantidades. Generalmente
se inicializa de cero.
SUE: Es una variable de tipo entero. NOMINA
Representa el sueldo del trabajador.

94 FIN
Unidad 2: Algoritmos
 Estructuras Algorítmicas Repetitivas,
 a) Repetir
 Ejemplo: Seudo código
Programa _ nómina
{ El programa calcula el total de la nómina de un grupo de 5 empleados}
Inicio _ programa
{I es una variable de tipo entero. SUE y NOMINA son variables de tipo enterol}
1. Hacer NOMINA  0 e I1
2. repetir con I desde 1 hasta 5
Leer SUE
Hacer NOMINA  NOMINA + SUE
Hacer I  I + 1
3. {fin del ciclo}
4. Escribir NOMINA
Fin _ programa

95
Unidad 2: Algoritmos
 Estructuras Algorítmicas Repetitivas,
INICIO
 a) Repetir
res 0
 Ejemplo:
 Sumar 10 números consecutivos. i 0

• DFD

NO
i <= 9

SI
resres+ I

ii+1

res

FIN

96
Unidad 2: Algoritmos
 Estructuras Algorítmicas Repetitivas,
 a) Repetir
 Ejemplo:
 Sumar 10 números consecutivos.
• Seudo código

Programa_NOMINA
{ El progrma suma los primeros 10 números consecutivos}
Inicio_Programa
{res e I son variables de tipo entero}
Hacer res  0 e I0
Repetir con I desde 0 hasta 9
Inicio
Hacer res  res + I
Hacer I  I + 1
{fin del ciclo}
Escribir res
Fin_programa

97
Unidad 2: Algoritmos
 Estructuras Algorítmicas Repetitivas,
 b) Mientras (while)
 Estructura que es útil cuando NO se conoce la cantidad
de veces que se debe repetir un ciclo

 Estructura algorítmica que se ejecuta hasta que la


condición evaluada resulta falsa

 El número de repeticiones depende de las proposiciones


dentro del ciclo.

98
Unidad 2: Algoritmos
 Estructuras Algorítmicas Repetitivas,
 b) Mientras (while)
 En el Mientras se distinguen dos partes:

 Ciclo: conjunto de instrucciones que se ejecutarán


repetidamente.

 Condición de término: La evaluación de esta


condición permite decidir cuándo finalizará la ejecución
del ciclo. La condición se evalúa al inicio del mismo.

99
Unidad 2: Algoritmos
 Estructuras Algorítmicas Repetitivas,
 b) Mientras (while)

P  PROPOSICION INICIAL

DONDE:
P : La proposición inicial, debe tener
un valor verdadero inicialmente. Si el
NO valor de P es falso, entonces el
EVALUACIÓN DE
ciclo no se ejecuta.
P

SI

P  MODIFICACIÓN INICIAL

100
Unidad 2: Algoritmos
 Estructuras Algorítmicas Repetitivas,
 b) Mientras (while)

 Importante:
Debe existir también un enunciado dentro del ciclo que
afecte la condición para evitar que el ciclo se ejecute
infinitamente.

101
Unidad 2: Algoritmos
 Estructuras Algorítmicas Repetitivas,
 b) Mientras (while)

...
Hacer P  Proposición inicial
Mientras P es verdadero repetir

...
{PROCESO}
...
Hacer P  modificación de P
{fin del ciclo}

102
Unidad 2: Algoritmos
 Estructuras Algorítmicas Repetitivas,
 b) Mientras (while)
 Ejemplo:
 Hacer un algoritmo que permita obtener la suma de los
gastos que se hicieron en un viaje, pero no se sabe
exactamente cuántos fueron. Los datos son expresados en
forma:
 Datos: gasto_1, gasto_2,...,-1
• Donde: gasto_i es una variable de tipo real que representa
el gasto número i.

103
INICIO

Unidad 2: Algoritmos
SUMGAS0
 Estructuras Algorítmicas Repetitivas,
 b) Mientras (while)
GASTO
 Ejemplo:
NO
GASTO > 0

SI
MIENTRAS
SUMGAS SUMGAS + GASTO

Explicación de las variables


SUMGAS: Es una variable de tipo real. GASTO

Acumula los datos efectuados.


GASTO: Es una variable de tipo real. Su valor
en la primera lectura debe ser verdadero, es
decir mayor que 0.. Su valor se modifica en
SUMGAS
cada vuelta de ciclo. Cuando gasto tome un
valor menor o igual que 0, entonces el ciclo
se detendrá.

FIN
104
Unidad 2: Algoritmos
 Estructuras Algorítmicas Repetitivas,
 b) Mientras (while)
 Ejemplo:
Programa_SUMA_GASTOS
{El programa obtiene el total de gastos de un viaje}
{GASTO y SUMGAS son variables de tipo real}
Inicio
Hacer SUMGAS  0
Leer GASTO
Mientras GASTO > 0 repetir
Hacer SUMGAS  SUMGAS + GASTO
Leer GASTO
{fin del ciclo}
Escribir “El gasto total es:”, SUMGAS
Fin_programa

105
Unidad 2: Algoritmos
 Estructuras Algorítmicas Repetitivas,
 Ejemplo:
 Una persona esta estudiando un plan de ahorro para los
próximos 20 años. La persona estima que podrá ahorrar
mensualmente una cantidad de $100.000. Además, al final
de cada año piensa agregar $200.000 al monto acumulado.
El banco le ofrece un interés mensual de 1, 5% los cuales son
agregados al capital al final de cada mes. De esta manera, al
final del primer mes tendrá 100.000 *1, 015; al final del
segundo mes tendrá (100,000* 1, 015 + 100.000) *1, 015; y
así sucesivamente.

 Desarrolle un Algoritmo que permita calcular el monto total


acumulado al cabo de los 20 años indicando además la
cantidad ganada en intereses.

106
Unidad 2: Algoritmos
 Estructuras Algorítmicas Repetitivas,
 Ejemplo:
PROGRAMA calcular_ahorros;
ahorro_mensual 100000 { Definición de Constantes}
ahorro_anual 200000, m 20, n 12
{i, j son variables enteras, monto, intereses son variables reales}
INICIO
monto  0
Repetir con i desde 1 hasta m
repetir con j desde 1 a n
Hacer monto  monto + ahorro_mensual;
Hacer monto  monto * 1.015
Hacer j  j + 1
Fin_repetir
Hacer monto  monto + ahorro_anual
Hacer i  i + 1
Fin repetir
Escribir monto {Mostrar monto total e intereses}
Hacer intereses  monto - (ahorro_mensual*m*n + ahorro_anual*n)
Escribir intereses
Fin_Programa

107
Consultas ?