Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Fundamentos de Programación 1
EXPLICACION
EJEMPLO
Fundamentos de Programación 1
inicialización
valor
inicialización inicial
E
JEM
PLO para ivariable
vi hasta vfnohacer valor
de final
control
D sentencia1
cuerpo
ise sentencia2 del
si
ñar ... ciclo
sentenciaX
un cuerpo del
fin_para
incremento de la
variable
Nota : Nodeescontrol
necesaria una sentencia de
actualización en un ciclo desde. La
actualización se realiza automáticamente
al finalizar cada iteración.
algoritmo que calcule y muestre la tabla de
multiplicar del 5.
Algoritmo Desde02
Variables
entero : num, multi
inicio
desde num 1 hasta 10 hacer
multi 5 * num
escribir ( num, " x 5 = ", multi)
fin_desde
fin
PREGUNTAS DE REVISIÓN
Fundamentos de Programación 1
En general los ciclos mientras y los ciclos desde son similares en cuanto al orden en el
que se ejecutan las sentencias, pero el cuerpo del ciclo es diferente : En los ciclos
mientras, es indispensable que una de las sentencias del cuerpo del ciclo sea la
actualización de la variable de control, ya sea a través de una operación de lectura o a
través de una operación de asignación, en cambio, en los ciclos desde, no debe
modificarse el valor de la variable de control dentro del cuerpo del ciclo, esto alteraría
por completo el funcionamiento normal de un ciclo desde.
EJEMPLO
Modelaje :
Fundamentos de Programación 1
Especificación :
POS : { promedio ∈ { R}
Procesos
Suma = (∑ nota)
promedio = suma/n
Algoritmo Promedio
variables
entero : estudiante, n
real : nota, promedio, suma
inicio
escribir (" Cuántos estudiantes hay en el grupo ?")
leer ( n )
suma 0
desde estudiante 1 hasta n hacer
escribir ("Nota del estudiante ", estudiante)
leer (nota)
suma suma + nota
fin_desde
promedio suma / n
escribir (" El promedio del grupo es : ", promedio)
fin
EJEMPLO
Diseñar un algoritmo que sume todos los números enteros en un intervalo definido por
el usuario.
Modelaje :
Identificad Tipo Descripción
E/S/A
or
enter
E A Límite del intervalo
o
enter
E B Límite del intervalo
o
S suma enter Acumulador usado para sumar todos los números del
Luís Fernando González Alvarán Ciclos
4 / 16
POLITÉCNICO COLOMBNIANO JAIME ISAZA CADAVID
Fundamentos de Programación 1
o intervalo
enter Contador, generador de los números del intervalo. Controla
A i
o el ciclo desde
enter Variable usada temporalmente para intercambiar los
A aux
o valores de a y b
Especificación :
PRE :
POS :
Suma ∈ {Z}
Procesos
i = 0,
aux = 0
suma = (∑ i ), a >= i >=b }
Algoritmo SumaDesde
variables
entero : a, b, suma, i, aux
inicio
escribir (" Límite del intervalo ?")
leer ( a )
escribir (" Límite del intervalo ?")
leer ( b )
suma 0
si (b > a) entonces
aux a
a b
b aux
fin_si
desde i b hasta a hacer
suma suma + i
fin_desde
escribir (" La suma es : ", suma)
fin
Fundamentos de Programación 1
SINTAXIS
valor
inicialización inicial
fin_para
EJEMPLO
Fundamentos de Programación 1
fin
CICLOS ANIDADOS
Al igual que con las otras estructuras de control, los ciclos pueden anidarse, es decir,
las instrucciones dentro del cuerpo de un ciclo pueden a su vez ser estructuras
repetitivas. Al utilizar estructuras anidadas, la estructura interna debe estar
completamente contenida en la estructura externa, no puede haber solapamiento o
cruces ente estas estructuras.
Al utilizar ciclos anidados debe tenerse en cuenta que no deben confundirse las
variables de control de cada uno de los ciclos. El ciclo o los ciclos internos se ejecutan
y terminan por completo en cada iteración del ciclo externo.
En ningún caso pueden cruzarse las líneas que indican el inicio y el fin de dos ciclos
diferentes.
EJEMPLO
Análisis:
Para obtener el promedio de notas de los estudiantes de un semestre determinado,
debe tenerse primero el promedio de cada uno de los estudiantes, teniendo en cuenta
cada una de las materias que el estudiante haya tomado en el semestre.
Pueden usarse dos ciclos anidados: El ciclo externo se usa para los estudiantes y
dentro de él se usa un ciclo para calcular el promedio de un solo estudiante en todo el
semestre. En el ciclo externo, se van acumulando estos promedios individuales para
finalmente calcular el promedio del semestre.
Modelaje :
Fundamentos de Programación 1
Especificación :
PRE : { n / n ∈ Z, n > 0, m / m ∈ Z, m > 0, nota / nota ∈ R, 0.0 <= nota <= 5.0 }
Algoritmo
Algoritmo PromedioSemestre
Variables
real : nota, suma, promedio, prom_estu
entero : estudiante, materia, m, n
inicio
escribir ("Cuántos estudiantes hay en segundo semestre ?")
leer (n)
suma 0
desde estudiante 1 hasta n hacer
escribir ("Materias del estudiante ", estudiante, " ? " )
leer ( m )
prom_estu 0
desde materia 1 hasta m hacer
escribir("Nota del estudiante",estudiante,"en la materia",
materia)
leer (nota)
prom_estu prom_estu + nota
fin_desde
prom_estu prom_estu / m
suma suma + prom_estu
fin_desde
promedio suma / n
escribir ("Promedio semestre = ", promedio)
fin
Prueba de escritorio
Fundamentos de Programación 1
materi
n estudiante m suma prom_estu nota promedio pantalla
a
# # # # # # # # Cuantos estudiantes ? 4
4 0
Materias estudiante 1 ?
1
2
2
0
Nota estudiante 1 en
1
materia 1 ? 3.2
3.2
3.2
Nota estudiante 1 en
2
materia 2 ? 4.8
4.8
8.0
3
4.0
4.0
Materias estudiante 2 ?
2
1
materi
n estudiante m suma prom_estu nota promedio pantalla
a
1
0
1
Nota estudiante 2 en
materia 1 ? 4.5
4.5
4.5
2
4.5
8.5
Materias estudiante 3 ?
3
3
PREGUNTAS DE REVISIÓN.
Termine el seguimiento (prueba de escritorio del algoritmo). Note que por cada
iteración del ciclo externo (controlado por estudiante), se realizan TODAS las
iteraciones del ciclo interno (controlado por materia).
Con qué valores finalizan las variables de control ?
Modifique el algoritmo, para que adicionalmente, muestre el promedio de cada
estudiante.
EJEMPLO
Fundamentos de Programación 1
Cuando se anidan ciclos, pueden combinarse los distintos tipos de ciclos. En este
ejemplo, se modifica el ejemplo anterior para validar las notas ingresadas por el
usuario, utilizando un ciclo mientras.
Algoritmo PromedioSemestreValidacion
Variables
real : nota, suma, promedio, prom_estu
entero : estudiante, materia, m, n
inicio
escribir ("Cuántos estudiantes hay en segundo semestre ?")
leer (n)
suma 0
desde estudiante 1 hasta n hacer
escribir ("Materias del estudiante ", estudiante, " ? " )
leer ( m )
prom_estu 0
desde materia 1 hasta m hacer
escribir("Nota del estudiante",estudiante,"en la materia",
materia)
leer (nota)
mientras (nota > 5.0 o nota < 0.0) hacer
escribir ("Nota incorrecta, ingrese una nota válida")
leer (nota)
fin_mientras
prom_estu prom_estu + nota
fin_desde
prom_estu prom_estu / m
suma suma + prom_estu
fin_desde
promedio suma / n
escribir ("Promedio semestre = ", promedio)
fin
En este ejemplo, se lee la nota y sólo se ejecuta el ciclo mientras si la nota está fuera
del rango válido, éste ciclo se sigue ejecutando si se siguen presentando notas por
fuera del rango válido. El ciclo deja de ejecutarse cuando la nota ingresada está en el
rango válido.
Fundamentos de Programación 1
Análisis.
Se deben leer todos los datos correspondientes a estaturas y pesos de los estudiantes,
todos estos datos deben ser positivos. Deben compararse entre sí para determinar
cuál de todos los datos correspondientes a las estaturas es el mayor y cuál de todos
los datos correspondientes a los pesos es el menor.
Modelaje.
Especificación :
Plan de Solución
inicio
preguntar cuántos estudiantes hay en el grupo
validar la cantidad de estudiantes para garantizar que sea un valor positivo
pedir la estatura y el peso del primer estudiante
validar los datos para garantizar que son valores positivos
suponer que esos datos corresponden a la mayor estatura y al menor peso,
inicializando maxh y minw
utilizar un ciclo, controlado por contador (i), de 2 a n (desde el segundo estudiante,
hasta el último)
pedir la estatura y el peso para el estudiante i
validar los datos de estatura y peso
comparar el peso (w) con el valor minw: Si w < minw entonces
minw w
Fundamentos de Programación 1
fin_si
comparar la estatura (h) con el valor maxh. Si h > maxh entonces
maxh h
fin_si
fin del ciclo.
mostrar los resultados almacenados en minw y maxh
fin
Algoritmo
Algoritmo Máximo_y_Minimo
Variables
entero : i, n
real : h, w, minw, maxh
inicio
escribir ("Cuántos estudiantes hay en el grupo ?)
leer (n)
mientras (n<=0) hacer
escribir ("La cantidad de estudiantes debe ser mayor que cero")
escribir("Cuántos estudiantes hay en el grupo ?")
leer (n)
fin_mientras
escribir ("Estatura del estudiante 1")
leer (h)
mientras ( h <=0 ) hacer
escribir ( "La estatura debe ser un valor mayor que cero" )
escribir ("Estatura del estudiante 1")
leer ( h )
fin_mientras
escribir ("Peso del estudiante 1")
leer (w)
mientras ( w <=0 ) hacer
escribir ( "El peso debe ser un valor mayor que cero" )
escribir ("Peso del estudiante 1")
leer ( w )
fin_mientras
maxh h
minw w
desde i 2 hasta n hacer
escribir ("Estatura del estudiante ", i)
leer (h)
mientras ( h <=0 ) hacer
Luís Fernando González Alvarán Ciclos
12 / 16
POLITÉCNICO COLOMBNIANO JAIME ISAZA CADAVID
Fundamentos de Programación 1
GENERACIÓN DE SERIES
Análisis.
Al enfrentarse a problemas que involucran series, debe buscarse la relación entre los
términos. Cuando se trata de series recursivas, un término puede generarse a partir
de los anteriores.
Por la definición de la serie se sabe que el primer término es 15, el segundo término es
17, el tercer término es 14, pero debe encontrarse la forma de calcular el n-ésimo
término. En este caso, se puede ver que el segundo término se genera restando dos al
primero y el siguiente se genera sumando tres al anterior y se repite la secuencia :
primero se resta dos y luego se suma tres.
Modelaje:
Fundamentos de Programación 1
Especificación:
PRE : { n / n ∈ Z }
POS : { n = ∅, t ∈ Z }
Plan de Solución
inicio
pedir al usuario el valor de n : El término que desea calcular
leer (n)
si n < 1 entonces
mostrar un mensaje de error
si_no
inicializar t en 15 (el valor para el primer término de la serie)
inicializar incremento en 2
utilizar un ciclo desde que vaya entre 1 y n, utilizando i como contador
escribir (t)
t t + incremento
si incremento = 2 entonces
incremento -3
si_no
incremento 2
fin_si
finalizar el ciclo
finalizar el primer condicional.
fin
Algoritmo
Algoritmo Serie1
Variables :
entero : n, i, incremento, t
inicio
escribir ("Cuántos términos desea de esta serie ?")
leer (n)
si n < 1 entonces
escribir ("Pueden calcularse desde el término 1 en adelante")
si_no
t 15
incremento 2
desde i 1 hasta n hacer
escribir (t)
t t + incremento
si incremento = 2 entonces
Luís Fernando González Alvarán Ciclos
14 / 16
POLITÉCNICO COLOMBNIANO JAIME ISAZA CADAVID
Fundamentos de Programación 1
incremento -3
si_no
incremento 2
fin_si
fin_desde
fin_si
fin
Prueba de Escritorio.
n i incremen t Pantalla
to
¿@# ¿@# ¿@# ¿@# Cuántos términos desea de esta serie ? 0
0 Puede calcularse desde el término 1 en
adelante
n i incremen t Pantalla
to
¿@# ¿@# ¿@# ¿@# Cuántos términos desea de esta serie ? 4
4
15
2
1 15
17
-3
2 17
14
2
3 14
16
-3
4 16
13
2
5
PREGUNTAS DE REVISIÒN
a = 2;
b = a++;
c = --a;
d += a;
e -= b;
a *= 3;
Fundamentos de Programación 1
Al ejecutarse éste segmento de programa, cuál será el valor final de cada una de las
variables involucradas ?
supon
En una estación meteorológica se registra la temperatura de una zona cada hora del
día. Es necesario diseñar un algoritmo que permita calcular el promedio de
temperaturas del día y el promedio del mes , así como el día en el que se registró un
mayor promedio de temperatura. (Suponga que el mes tiene 30 días, si hay varios días
en los que se presenta un mismo promedio de temperaturas y éste corresponde al
mayor promedio, sólo debe indicarse uno de los días)
BIBLIOGRAFÍA