Title: Presentaci
1Programación de Computadores Lenguaje Pascal
Sesión 2 Algoritmos ProfEridan Otto
2Programación de Computadores Lenguaje Pascal
Sesión 2 Algoritmos
- TEMARIO
- Estructuras de control
- Introducción
- Selección
- Repetición
- Problemas resueltos
- Quiz 1
3Programación de Computadores Lenguaje Pascal
Estructuras de control Selección y
Repetición Introducción
La ejecución un paso tras otro de un algoritmo
sigue una cierta pauta o estructura, ya se vió la
estructura secuencial. Esta estructura es la
más simple, pero muy rígida, sólo da a la
capacidad de procesamiento, de una calculadora
sencilla. (Hasta las calculadoras modernas hacen
algo mas....). A veces es necesario ejecutar un
grupo de sentencias u otro (Boloques en PASCAL),
dependiendo de diversos factores condicionantes,
o en función del valor que tome una variable de
entre un conjunto de ellos. O tal vez
necesitemos ejecutar unas sentencias determinadas
un número dado de veces antes de que continúe la
ejecución secuencial normal del código. Es en
éste entorno en el que toman toda su importancia
las estructuras de control, ya que nos van a
permitir hacer precisamente eso, detener o
condicionar ésta ejecución secuencial
predeterminada en función de unos requisitos que
podemos configurar a nuestra conveniencia. Las
estructuras de control podemos dividirlas en dos
clases fundamentales las estructuras
condicionales y los bucles (lo mismo que
selección y repetición).
4Programación de Computadores Lenguaje Pascal
Estructuras de control Selección y
Repetición Selección
Ejemplo diseñar un algoritmo que ingresada una
edad de una persona, entregue por pantalla si
esta persona es mayor o menor de edad. Con las
instrucciones hasta ahora aprendidas, no se puede
realizar esto, pues se necesita una bifurcación
en la secuencia. Para lograr esto se introduce
una nueva clase de instrucciones de tipo
selección que permiten ejecutar un conjunto de
sentencias u otras dependiendo de las condiciones
que fijemos. Formato en pseudocódigo
SI ltcondicióngt ENTONCES instrucción 1
instrucción 2 ...................
instrucción n SI-NO instrucción a
instrucción b ...................
instrucción z FIN-SI
La instrucción que permite tomar una decisión,
basada en una condición es Si...Entonces. Al
evaluar la condición, Si...entonces puede
devolver solo dos resultados posibles Verdadero
o Falso es decir, Si o No.
5Programación de Computadores Lenguaje Pascal
Estructuras de control Selección y
Repetición Selección, diagrama de flujo
Inicio
Inicio
Instrucciones antes de la bifircación
Instrucciones antes de la bifircación
VERDADERO
FALSO
condición
Todo este complejo se puede considerar como un
bloque
Instrucción 1
Instrucción a
Instrucción 2
Instrucción b
.......
.......
Instrucción n
Instrucción xx
Instrucciones después de la bifircación
Instrucciones después de la bifircación
Fin
Fin
6Programación de Computadores Lenguaje Pascal
Estructuras de control Selección y
Repetición Selección Algoritmo que resuelve el
problema planteado
ALGORITMO mayor de edad VARIABLES edad
ENTERO INICIO ingresar(por favor ingrese edad
persona,edad) SI (edad lt 18) ENTONCES
escribir(La persona es menor de edad ) SI-NO
escribir(La persona es mayor de edad
) FIN-SI FIN.
Operador relacional
Esta instrucción se ejecuta si la condición es
VERDADERA
Esta instrucción se ejecuta si la condición es
FALSA. Es opcional.
7Programación de Computadores Lenguaje Pascal
- Estructuras de control Selección y Repetición
- Selección
- Operadores relacionales estos operadores
funcionan con lógica booleana estándar y generan
después de la evaluación de una expresión
condicional un valor de verdad último, este
evaluado permite ,en caso de ser verdadera
,bifurcar el control a un grupo de instrucciones
y seguir ( SI xxx ENTONCES) el flujo normal o a
un grupo alternativo en caso de ser falsa (SI
.... SI-NO xxx FIN-SI). - Los operadores relacionales se evaluan siempre
entre tipos enteros , reales y en algunos casos
de carácter. El resultado es booleanoy se puede
combinar en expresiones con operadores booleanos
(AND,OR y NOT) - gt mayor que
- lt menor que
- igual a
- ltgt distinto
- gt mayor o igual que
- lt menor o igual que
- Paréntesis para agrupar condiciones simples en
exprsiones condicionales (, )
8Programación de Computadores Lenguaje Pascal
Estructuras de control Selección y
Repetición Selección
Ejemplo 2. Dados dos números, establecer cuál es
mayor . Comenzamos leyendo ambos números, que en
el ejemplo se llamarán NumeroA y NumeroB. Luego
debemos comparar como es uno contra el otro
(puede ser NumeroA contra NumeroB o bien comparar
NumeroB contra NumeroA)
ALGORITMO comparaciones VARIABLES NumeroA ,
NumeroB ENTERO INICIO ingresar(por favor
ingrese valor primer número, NumeroA
) ingresar(por favor ingrese valor segundo
número, NumeroB ) SI (NumeroA gt NumeroB )
ENTONCES escribir(primer número es el
mayor) SI-NO SI (NumeroA ltgt NumeroB )
ENTONCES escribir(segundo número es el
mayor) SI-NO escribir(los números
son iguales) FIN-SI FIN-SI FIN.
9Programación de Computadores Lenguaje Pascal
Estructuras de control Selección y
Repetición Repetición
La estructura repetitiva se utiliza cuando se
quiere que un conjunto de instrucciones se
ejecuten un cierto número finito de veces.
Llamamos bucle o ciclo a todo proceso que se
repite un cierto número de veces dentro de un
pseudocódigo o un programa. Existen varias
estructuras de control que realizan ciclos, por
el momento nos concentraremos en una clase que se
divide en dos sentencias. Mientras La primera
es una estructura de bucle que nos permite
ejecutar un conjunto de instrucciones mientras se
cumpla una condición, no siendo necesario conocer
el número de veces que se tiene que iterar. Se
producirá la iteración una y otra vez mientras se
cumpla la condición fijada. Formato en
pseudocódigo
MIENTRAS (condición) instrucción 1
instrucción 2 instrucción 3 .....
instrucción n FIN MIENTRAS
NOTA El ciclo puede repetirce 0, 1 o más veces
dependiendo de la condición (si siempre es
verdadera se da una anomalía llamada loop
infinito)
10Programación de Computadores Lenguaje Pascal
Estructuras de control Selección y
Repetición Repetición, diagrama de flujo, mientras
Inicio
Inicio
Instrucciones antes de mientras
Instrucciones antes de mientras
VERDADERO
condición
Todo este complejo se puede considerar como un
bloque
Instrucción 1
FALSO
Instrucción 2
.......
Instrucción n
Instrucciones después de mientras
Instrucciones después de mientras
Fin
Fin
11Programación de Computadores Lenguaje Pascal
Estructuras de control Selección y
Repetición Repetición
Repita La segunda es una estructura de bucle
cumple la misma función que la estructura
mientras. La diferencia está en que la estructura
mientras comprueba la condición al inicio y
repetir lo hace al final por eso la estructura
repetir se ejecuta por lo menos una
vez.. Formato en pseudocódigo
REPITA istrucción 1 istrucción 2
istrucción 3 ..... istrucción n HASTA
(condición)
NOTA Las repeticiones terminan cuando la
condición es FALSA
12Programación de Computadores Lenguaje Pascal
Estructuras de control Selección y
Repetición Repetición, diagrama de flujo,
repita-hasta
Inicio
Inicio
Instrucciones antes de repita
Instrucciones antes de repita
Instrucción 1
Instrucción 2
Todo este complejo se puede considerar como un
bloque
.......
Instrucción n
FALSO
condición
VERDADERO
Instrucciones después de repita
Instrucciones después de repita
Fin
Fin
13Programación de Computadores Lenguaje Pascal
Estructuras de control Selección y
Repetición Repetición, diagrama de flujo,
repita-hasta
Ejercicio1 Leer una serie de notas que deben
finalizar con 9999. Calcular e imprimir el
promedio de las notas ingresadas. No se requiere
validar ingreso.
ALGORITMO media VARIABLES N,contador, suma
ENTERO promedioREAL
INICIO contador ?0 escribir(Ingrese notas
0..100, para terminar ingrese número -9999
) ingresar( N) MIENTRAS (N ltgt -9999)
contador ? contador 1 suma ? suma N
ingresar (N) FIN MIENTRAS SI (contador 0)
entonces
promedio ? 0 SI-NO promedio ? suma /
contador FIN-SI escribir (El promedio de los
números ingresados es , promedio) FIN
14Programación de Computadores Lenguaje Pascal
Estructuras de control Selección y
Repetición Repetición
Ejercicio2 Escribir un pseudocódigo que
determine si un número ingresado es primo. Un
número es primo cuando es divisible solamente por
sí mismo y por 1. Haga un ruteo para 2, 4 y 5.
Puede escibirse otro algoritmo que haga lo
mismo?? Para resolver este problema, se usará la
función RESTO, pues si el resto de la división
de el número por un numero inferior es 0, no es,
entonces primo.
ALGORITMO media VARIABLES Bandera,contador,
numero ENTERO INICIO Bandera ? 0
contador ? 2
ingresar(Ingrese entero para verificar si es
primo, numero ) REPITA SI (numero
MOD contador 0 AND numero ltgt contador )
ENTONCES Bandera ? 1 FIN-SI
contador ? contador
1 HASTA (contador gt numero OR Bandera1) SI
(Bandera 1 ) ENTONCES escribir (El número
no es primo) SIN-NO escribir (El número es
primo) FIN-SI FIN
15Programación de Computadores Lenguaje Pascal
- Estructuras de control Selección y Repetición
- Ruteo
- Def Es una técnica ordenada que permite seguir
los valores de las variables paso a paso,
suponiendo la ejecución del algoritmo. Sirve para
saber qé hace un algoritmo y también para
comprobar su correctitud. - Para numero5
Variables
Bandera contador numero
Valores iniciales
2
5
0
Sale de repita Y como Bandera no es 1 se ejecuta
la instrucción SI-NO, esto es, escribe en
pantallael número es primo
3
0
4
0
5
0
Sale de repita Y como Bandera es 1 se ejecuta la
instrucción SI ENTONCES, esto es, escribe en
pantallael número no es primo
2
4
0
3
1
2
2
0
3
0
Sale de repita Y como Bandera no es 1 se ejecuta
la instrucción SI-NO, esto es, escribe en
pantallael número es primo
16Programación de Computadores Lenguaje Pascal
Estructuras de control Selección y
Repetición Repetición
Puede escibirse otro algoritmo que haga lo
mismo??. Si, usando la instrucción mientras.
ALGORITMO media VARIABLES Bandera,contador,
numero ENTERO INICIO Bandera ? 0
contador ? 2
ingresar(Ingrese entero para verificar si es
primo, numero ) MIENTRAS (contador lt
numero AND Bandera0) SI (numero MOD
contador 0) ENTONCES Bandera ? 1
FIN-SI contador ?
contador 1 FIN
MIENTRAS SI (bandera 1) ENTONCES
escribir (El número no es
primo) SI-NO escribir (El número es
primo) FIN-SI FIN
17Programación de Computadores Lenguaje Pascal
Estructuras de control Selección y
Repetición Ejercicios (Hoja, nombre, rol, fecha)
1. Leer un número entero positivo menor que 35 y
calcular su factorial. Rutee su algoritmo para
entero 1, 3 y 4. Está correcto???
18ALGORITMO factorial VARIABLES N,producto, I
ENTERO INICIO ingresar(N) MIENTRAS (N
gt 35 OR N lt 0) escribir (El numero
debe ser positivo y menor que 35 !!)
ingresar (N) FIN MIENTRAS producto ? 1
I ? 1 MIENTRAS (I lt N)
producto ? producto I I ? I1
FIN MIENTRAS escribir (El factorial de,
N, es , producto) FIN
Fin Clase 2