Tema 3.
Estructuras de
Control
Objetivos
Estudiar las estructuras básicas de control (secuenciales,
condicionales y repetitivas)
Aprender a diseñar algoritmos utilizando el pseudocódigo y
organigramas (diagramas de flujo) como notación para
describirlos
Reconocer la importancia de diseñar algoritmos como paso previo
a la resolución de problemas mediante la programación
Resolver los primeros problemas a través de técnicas de
programación básicas
Tema 3. Estructuras de control 2
Tema 3. Estructuras de control
1. Estructuras secuenciales
1. Asignación
2. Lectura / Entrada
3. Escritura / Salida
4. Ejemplos
2. Estructuras condicionales
1. Simple
2. Anidada
3. Múltiple
4. Ejemplos
3. Estructuras repetitivas
1. Bucle MIENTRAS
2. Bucle REPETIR-HASTA
3. Bucle PARA
4. Bucles infinitos y bucles anidados
5. Ejemplos
Tema 3. Estructuras de control 3
Tipos de estructuras de control
Estructuras secuenciales
Sentencias que se realizan una a continuación de otra en el orden en
el que están escritas
Estructuras Condicionales
Sentencias que dependiendo de la evaluación de una expresión lógica
(una condición), se realiza una opción u otra
Estructuras Repetitivas o Iterativas (Bucles o Ciclos)
Sentencias que permiten la repetición de un grupo de acciones
Las acciones incluidas en un bucle se pueden repetir un número fijo de
veces o bien un número variable determinado por la evaluación de una
expresión lógica (una condición)
Tema 3. Estructuras de control 4
Estructuras secuenciales -
Asignación
Permite asignar un valor determinado a una variable
var
exp
var exp
El valor de la variable “var” será el resultado de evaluar la
expresión “exp”
El tipo de la variable implicada en la operación de asignación debe
ser compatible con el tipo del resultado de evaluar la expresión
La asignación es una operación destructiva
Ejemplos:
a 3.0
b (2.0*c+4)/8
c (d+2)<7
menor_ej1 (ej1<ej2) AND (ej1<ej3)
hipotenusa SQRT(cat1*cat1+cat2*cat2)
Tema 3. Estructuras de control 5
Ejemplos
A ← 3 A ← 30 A ← 10 A ← 13 A ← 8
B ← 5 B ← 10 B ← 5*A B ← 15 B ← A*(3-A)
C ← 2 C ← 7 C ← B*2 C ← 12 C ← A-B
A ← B A ← A DIV C A ← C MOD 3 A ← (C-B) *(B-A) A ← B MOD A
B ← C B ← A*3 DIV C+2 B ← C DIV 3 B ← A B ← -C-(B-A)
C ← A*B C ← A DIV B DIV C C ← A+2*2 C ← A*B C ← A*B
A ← B
A=2 A=4 A=1 A = -6 A=0
B=2 B=3 B = 33 B = -6 B = -8
C = 10 C=0 C=5 C = 36 C=0
Tema 3. Estructuras de control 6
Ejemplo
¿En cuáles de los siguientes pares es importante
el orden de los enunciados? Es decir, si se
modifica el orden ¿cambian los resultados
finales? (Suponemos que X≠Y≠Z)
a) X←Y b) X←Z
Y←Z X←Y
c) X←Y d) Z←Y
Z←X X←Y
Tema 3. Estructuras de control 7
Estructuras secuenciales –
Lectura/Entrada
Mediante la operación de entrada se asigna a una variable un valor dado
desde el exterior
LEER(var) LEER(var)
Se utiliza para que el usuario pueda introducir los datos requeridos por
un algoritmo
El tipo de dato suministrado desde el exterior debe ser compatible con el
tipo de la variable “var”
Tras la operación de lectura, la variable “var” contiene el valor dado por
el usuario a través de un dispositivo de entrada
LEER(cateto1)
La operación de lectura es destructiva
Es posible leer los valores de varias variables en una misma operación de
entrada (separando con comas)
LEER(nota1, nota2)
es equivalente a las siguientes dos sentencias
LEER(nota1)
LEER(nota2)
Tema 3. Estructuras de control 8
Estructuras secuenciales –
Escritura/Salida
Mediante la operación de salida se transfiere el valor de una
expresión a un dispositivo de salida
ESCRIBIR(exp) ESCRIBIR(exp)
Se utiliza para mostrar al usuario los resultados obtenidos
Ejemplos:
ESCRIBIR(hipotenusa)
ESCRIBIR(b+3)
Se suele utilizar también para mostrar mensajes informativos al
usuario que estarán delimitados por comillas
ESCRIBIR(“Hola”)
También es posible, combinar expresiones y cadenas de
caracteres encerradas entre comillas en una misma operación de
salida siempre que se separen por comas
ESCRIBIR(“La media de las notas es “,media)
Tema 3. Estructuras de control 9
Estructura básica de un algoritmo
ALGORITMO nombre. ALGORITMO triangulo.
Entrada Entrada: cat1 y cat2
Salida Salida: hipotenusa
Proceso (Descripción) Proceso: Calcula la hipotenusa de un triángulo rectángulo
tomando como entrada el valor de los dos catetos
CONSTANTES
VARIABLES
id_cte1 = valor1
………………………… cat1, cat2 : REAL
…………………………
………………………… hipotenusa : REAL
id_cteN = valorN
1. [Entrada de datos]
VARIABLES
ESCRIBIR(‘Introduzca cateto 1: ’)
id_var1 : tipo1
………………………… LEER(cat1)
…………………………
………………………… ESCRIBIR(‘Introduzca cateto 2: ’)
id_varM : tipoM
LEER(cat2)
1. [Inicio]
………………………… 2. [Cálculo de la hipotenusa]
…………………………
………………………… hipotenusaSQRT(cat1*cat1+cat2*cat2)
Sentencias
………………………… 3. [Mostrar el resultado]
…………………………
………………………… ESCRIBIR(‘La hipotenusa es’,hipotenusa)
F. [Fin]
4. [Fin]
Tema 3. Estructuras de control 10
Escribir un algoritmo para leer un valor entero, doblarlo, multiplicarlo
por 25 y visualizar el resultado
ALGORITMO operacionesbasicas. Inicio
VARIABLES
A,B: ENTERO LEER(A)
1.[Entrada de un valor entero]
LEER(A)
B (A+A)*25
2.[Realizar las operaciones]
B (A+A)*25
3.[Mostrar el resultado] ESCRIBIR(B)
ESCRIBIR(‘El resultado es ’,B)
4.[Fin]
Fin
Tema 3. Estructuras de control 11
Diseñar un algoritmo que lea cuatro calificaciones de un alumno y
calcule la calificación promedio
ALGORITMO media_calificacion.
VARIABLES
Inicio
A,B,C,D,media: REAL
1. [Entrada de datos]
ESCRIBIR(‘Introduzca las 4 calificaciones’) LEER(A,B,C,D)
LEER(A,B,C,D)
2. [Calcular el promedio] media (A+B+C+D)/4
media (A+B+C+D)/4
3. [Mostrar el resultado]
ESCRIBIR(media)
ESCRIBIR(‘La media es ’,media)
4. [Fin]
Fin
Tema 3. Estructuras de control 12
Realizar un algoritmo para pasar de grados Centígrados (ºC) a grados
Fahrenheit (ºF) sabiendo que ºF= 9/5 ºC+32
ALGORITMO grados.
VARIABLES
C,F: REAL
1. [Entrada de los grados centígrados]
ESCRIBIR(‘Introduzca los grados centígrados’)
LEER(C)
2. [Calcular los grados Fahrenheit]
F 9/5*C+32
3. [Mostrar el resultado]
ESCRIBIR(C,‘ grados centígrados son ’,F, ‘grados Fahrenheit’)
4. [Fin]
Tema 3. Estructuras de control 13
Realizar un algoritmo para intercambiar los valores de dos variables
ALGORITMO intercambio_var. Inicio
VARIABLES
A,B,aux: ENTERO
LEER(A,B)
1. [Entrada del valor de las variables]
LEER(A,B)
2. [Intercambiar las variables] aux A
aux A
A B AB
B aux
3. [Mostrar el resultado]
ESCRIBIR(‘El valor de A es ’,A) B aux
ESCRIBIR(‘El valor de B es ’,B)
4. [Fin] ESCRIBIR(A,B)
Fin
Tema 3. Estructuras de control 14
Seminario 1
Estructuras secuenciales
Jueves 11 de octubre de 8’30 a 9’30 (grupo A), y
de 15’30 a 16’30 (grupo B)
Relación de ejercicios del tema 3
Ejercicios 9, 10, 15 y 16
Tema 3. Estructuras de control 15
Estructuras condicionales
En una estructura condicional se evalúa una expresión lógica y
dependiendo del resultado se ejecutan unas sentencias u otras
SI condición ENTONCES
Falso Verdad
Sentencias en caso de verdad Condición
SI_NO Sentencias Sentencias
Sentencias en caso de falso caso falso caso verdad
FIN_SI
Si la condición resulta verdadera sólo se realizan las operaciones
correspondientes al ENTONCES y si la condición resulta falsa sólo
se realizan las del SI_NO. En ningún caso se ejecutarán ambos
grupos de sentencias
Verdad
La parte SI_NO es opcional Condición
SI condición ENTONCES Sentencias
Falso caso verdad
Sentencias en caso de verdad
FIN_SI
Tema 3. Estructuras de control 16
Estructuras condicionales
SI-ENTONCES-SINO Falso Verdad
a<b
SI (a<b) ENTONCES
Mayor b Mayor a Mayor b
ESCRIBIR(‘El valor mayor es b=’,b)
SI_NO
Mayor a ESCRIBIR(a) ESCRIBIR(b)
ESCRIBIR(‘El valor mayor es a=’,a)
FIN_SI
SI-ENTONCES
SI (longitud<=0) ENTONCES
ESCRIBIR(‘Imposible hacer el cálculo. Verdad
La longitud debe ser un número Longitud<=0
positivo’) ESCRIBIR(‘Imposible
Falso hacer el cálculo’)
FIN_SI
Tema 3. Estructuras de control 17
Condiciones
Una condición o expresión booleana puede ser:
Una variable booleana
TEST T
Una expresión aritmética seguida de un operador relacional,
seguido de otra expresión aritmética
TEST 3<5
Una expresión booleana, seguida de un operador booleano,
seguido de una expresión booleana
TEST A AND NOT B OR C
Se pueden utilizar condiciones tan complejas como se
quiera siempre que estén bien formadas
Tema 3. Estructuras de control 18
Estructuras condicionales anidadas
Se pueden anidar varias sentencias condicionales para formar
condiciones complejas
Encontrar el mayor de 3 números
SI cond1 ENTONCES
SI cond2 ENTONCES SI (a<b) ENTONCES
sentecias1 SI (b<c) ENTONCES
SI_NO Mayor c
sentencias2 SI_NO
Mayor b
FIN_SI
FIN_SI
SI_NO SI_NO
SI cond3 ENTONCES SI (a<c) ENTONCES
sentencias3 Mayor c
SI_NO SI_NO
sentencias4 Mayor a
FIN_SI FIN_SI
FIN_SI FIN_SI
Tema 3. Estructuras de control 19
Estructuras condicionales múltiples
La sentencia multicondicional CASO se puede ver como un estructura
condicional simple, pero en lugar de haber dos alternativas, ahora hay
múltiples alternativas
CASO var
Valor_1: S1
Valor_2: S2 var=? Acciones para
… otros valores
de var
Valor_n: Sn var=valor_1 var=valor_2 var=valor_n
EN OTRO CASO Sc ………
S1 S2 Sn Sc
FIN_CASO
CASO num
1: ESCRIBIR(‘El número es 1’)
2: ESCRIBIR(‘El número es 2’)
3,4: ESCRIBIR(‘El número es 3 o 4’)
EN OTRO CASO ESCRIBIR(‘Entrada no válida’)
FIN_CASO
Tema 3. Estructuras de control 20
Ejemplo. Determinar el mayor de 4 números
(con condiciones simples)
…
SI (A<B) ENTONCES
SI_NO
SI (B<C) ENTONCES
SI (A<C) ENTONCES
SI (C<D) ENTONCES
SI (C<D) ENTONCES
mayor D
mayor D
SI_NO
SI_NO
mayor C
mayor C
FIN_SI
FIN_SI
SI_NO
SI_NO
SI (B<D) ENTONCES
SI (A<D) ENTONCES
mayor D
mayor D
SI_NO
SI_NO
mayor B
mayor A
FIN_SI
FIN_SI
FIN_SI
FIN_SI
SI_NO
FIN_SI
…
Tema 3. Estructuras de control 21
Ejemplo. Determinar el mayor de 4 números
(con condiciones compuestas)
SI (A>B) AND (A>C) AND (A>D) ENTONCES
mayor A
FIN_SI
SI (B>A) AND (B>C) AND (B>D) ENTONCES
mayor B
FIN_SI
SI (C>A) AND (C>B) AND (C>D) ENTONCES
mayor C
FIN_SI
SI (D>A) AND (D>B) AND (D>C) ENTONCES
mayor D
FIN_SI
Tema 3. Estructuras de control 22
Diseñar un algoritmo que lea tres puntuaciones de un alumno y calcule la
media. Si la media del alumno no supera los 4 puntos el alumno está suspenso y
el algoritmo deberá imprimir un mensaje indicándolo. En caso de que el alumno
tenga una media superior o igual a 4 puntos pero inferior a 5, el alumno estará
‘aprobado pero dudoso’. Si el alumno supera los 5 puntos el mensaje a imprimir
será ‘Aprobado’
ALGORITMO notas.
VARIABLES
N1,N2,N3,media: REAL
1. [Entrada de datos]
ESCRIBIR(‘Introduzca las 3 notas: ’)
LEER(N1,N2,N3)
2. [Calcular la media]
media (N1+N2+N3)/3
3.[Comprobar la calificación final]
SI (media<=4) ENTONCES
ESCRIBIR(‘SUSPENSO’)
SI_NO
SI (media<5) ENTONCES
ESCRIBIR(‘APROBADO PERO DUDOSO’)
SI_NO
ESCRIBIR(‘APROBADO’)
FIN_SI
FIN_SI
4.[Fin]
Tema 3. Estructuras de control 23
Diseñar un algoritmo que lea tres puntuaciones de un alumno y calcule la
media. Si la media del alumno no supera los 4 puntos el alumno está suspenso y
el algoritmo deberá imprimir un mensaje indicándolo. En caso de que el alumno
tenga una media superior o igual a 4 puntos pero inferior a 5, el alumno estará
‘aprobado pero dudoso’. Si el alumno supera los 5 puntos el mensaje a imprimir
será ‘Aprobado’
Inicio
LEER(N1,N2,N3)
media (N1+N2+N3)/3
falso falso
media<=4 media<5 ESCRIBIR(“APROBADO)
verdad verdad
ESCRIBIR(“APROBADO-
ESCRIBIR(“SUSPENSO”)
DUDOSO”)
Fin
Tema 3. Estructuras de control 24
Seminario 2
Estructuras condicionales
Jueves 25 de octubre de 8’30 a 9’30 (grupo A) y
de 15’30 a 16’30 (grupo B)
Relación de ejercicios del tema 3
Ejercicios 18, 26 y 27
Tema 3. Estructuras de control 25
Estructuras repetitivas
Ámbito o Cuerpo del Bucle: sentencias que se repiten durante la
ejecución del bucle
Tipos de bucles:
Bucles controlados por contador
El cuerpo del bucle se repite un número fijo de iteraciones dependiendo de una
variable de control
Bucles controlados por condición
El número de veces que se ejecuta el bucle depende de una condición
Estructuras repetitivas
Bucle MIENTRAS
Bucle REPETIR-HASTA
Bucle PARA
Tema 3. Estructuras de control 26
Bucle MIENTRAS
MIENTRAS condición HACER
Sentencias del bucle (cuerpo del bucle)
FIN_MIENTRAS
El cuerpo del bucle se repite mientras la condición sea verdadera
Falso Verdad
Condición
Cuerpo del
Bucle
Sentencias
Tema 3. Estructuras de control 27
Bucle REPETIR-HASTA
REPETIR
Cuerpo del bucle
HASTA condición Cuerpo del
Bucle
El cuerpo del bucle se repite hasta que
la condición sea verdadera (es decir, Falso
mientras la condición sea falsa) Condición
El cuerpo del bucle siempre se ejecuta al Verdad
menos una vez
Sentencias
Tema 3. Estructuras de control 28
Bucles infinitos
La condición de terminación nunca se cumple
Debe haber alguna sentencia dentro del cuerpo del bucle que
haga que el valor de la condición que controla el bucle varíe
i 1
MIENTRAS (i>0) HACER
i i+1
i i-1
FIN_MIENTRAS
ESCRIBIR(‘El valor de i es ’,i)
Tema 3. Estructuras de control 29
Bucles anidados
El cuerpo de un bucle puede incluir cualquier tipo de
sentencias, incluidas otras sentencias repetitivas
La estructura interna debe estar completamente dentro de
la estructura externa, no pudiendo existir solapamientos
Correctos Incorrecto
Tema 3. Estructuras de control 30
Bucle PARA
PARA var=inicio HASTA fin HACER
Cuerpo del bucle
FIN_PARA var <- inicio
El cuerpo del bucle se repite un número Falso Verdad
fijo de iteraciones
var<=fin
Variable de control
Controla el número de iteraciones
Se le asignan automáticamente valores Cuerpo del
sucesivos Bucle
Al comienzo del bucle se debe especificar su
valor inicial y su valor final
Debe ser de tipo entero, carácter o
enumerado y su valor NO puede ser var <- var+1
modificado dentro del bucle
Cuando el bucle termina, su valor es
indeterminado
Sentencias
Tema 3. Estructuras de control 31
Equivalencia PARA - MIENTRAS
PARA var=inicio HASTA fin HACER
Sentencias
FIN_PARA
var inicio
MIENTRAS (var<=fin) HACER
Sentencias
var var + 1
FIN_MIENTRAS
Tema 3. Estructuras de control 32
Ejemplo: Factorial
ALGORITMO factorial_mientras.
ALGORITMO factorial_para. Entrada: N
Entrada: N Salida: fact
Proceso: calcula el factorial de N
Salida: fact usando un bucle MIENTRAS
Proceso: calcula el factorial VARIABLES
de N usando un bucle PARA N, i, fact: ENTERO
VARIABLES 1. [Entrada del número N]
N, i, fact: ENTERO LEER(N)
1. [Entrada del número N] 2. [Calcular el factorial]
LEER(N) fact 1
2. [Calcular el factorial] i 1
fact 1 MIENTRAS (i<=N) HACER
PARA i=1 HASTA N HACER fact fact * i
fact fact * i i i + 1
FIN_PARA FIN_MIENTRAS
3. [Mostrar el resultado] 3. [Mostrar el resultado]
ESCRIBIR(‘Factorial de’,N,‘es’,fact) ESCRIBIR(‘Factorial de’,N,‘es’,fact)
4. [Fin] 4. [Fin]
Tema 3. Estructuras de control 33
Validación de datos de entrada
ALGORITMO validacion_mientras.
ALGORITMO validacion_repetir. Entrada: nota
Entrada: nota
Salida: nota
Salida: nota
Proceso: Validación de los datos de
Proceso: Validación de los datos entrada con un bucle MIENTRAS
de entrada con un bucle REPETIR-
VARIABLES
HASTA
nota: REAL
VARIABLES
1. [Entrada de datos]
nota: REAL
ESCRIBIR(‘Introduzca la nota: ’)
1. [Entrada de datos]
LEER(nota)
REPETIR
MIENTRAS (nota<0.0) OR (nota >10.0) HACER
ESCRIBIR(‘Introduzca la nota: ’)
LEER(nota) ESCRIBIR(‘La nota debe ser un nº real
HASTA (nota>=0.0) AND (nota<=10.0) entre 0 y 10. Inténtelo de nuevo: ’)
2. [Salida de datos] LEER(nota)
ESCRIBIR(‘La nota es ’, nota) FIN_MIENTRAS
3. [Fin] 2. [Salida de datos]
ESCRIBIR(‘La nota es ’, nota)
3. [Fin]
Tema 3. Estructuras de control 34
Fin de ejecución controlada
por el usuario
ALGORITMO repeticion.
Entrada: respuesta
Salida:
Proceso: repite la ejecución de un algoritmo hasta que el usuario pulse
la letra ‘n’
VARIABLES
respuesta: CARACTER
1. [Inicio]
REPETIR
Desarrollo del algoritmo
ESCRIBIR(‘Desea volver a ejecutar el programa (S/N)? ’)
LEER(respuesta)
HASTA (respuesta=‘N’) OR (respuesta=‘n’)
F. [Fin]
Tema 3. Estructuras de control 35
Indicar en cada uno de los siguientes segmentos de algoritmos
cuándo el bucle termina y cuándo no lo hace. En este último caso
señálense las razones. Supóngase que todas las variables son enteras
a) contador ← 0
total ← 0
MIENTRAS contador >= 0 HACER
total ← total + 2
FIN_MIENTRAS
b) contador ← 0
total ← 0
MIENTRAS contador <= 0 HACER
total ← total + 2
contador ← contador + 2
FIN_MIENTRAS
c) contador ← 0
total ← 0
MIENTRAS contador <= 10 HACER
total ← total + 2
contador ← contador +1
FIN_MIENTRAS
Tema 3. Estructuras de control 36
Indíquese el valor que se imprime para VAR. Supóngase que
todas las variables son enteras
a) var ← 0
PARA num=1 HASTA 10 HACER
var ← var + 1
FIN_PARA
ESCRIBIR (var)
b) var ← 0
PARA num=4 HASTA 16 HACER
var ← var + 1
FIN_PARA
ESCRIBIR (var)
c) var ← 0
PARA num=1 HASTA 5 HACER
PARA mult=1 HASTA 8 HACER
var ← var + 1
FIN_PARA
FIN_PARA
ESCRIBIR (var)
Tema 3. Estructuras de control 37
Indíquese el valor que se imprime para cada uno de los
siguientes segmentos de algoritmos
PARA i=1 HASTA 10 HACER
ESCRIBIR (i)
FIN_PARA
PARA i=1 HASTA 10 HACER
ESCRIBIR (i+i)
FIN_PARA
PARA i=1 HASTA 10 HACER
ESCRIBIR (2*i)
FIN_PARA
PARA i=1 HASTA 10 HACER
ESCRIBIR (3*i)
FIN_PARA
Tema 3. Estructuras de control 38
Indíquese el valor que se imprime para cada uno de los
siguientes segmentos de algoritmos
LEER(n)
PARA i=1 HASTA 10 HACER
ESCRIBIR (n*i)
FIN_PARA
S ← 0
PARA i=1 HASTA 10 HACER
S ← i
FIN_PARA
ESCRIBIR (S)
S ← 0
PARA i=1 HASTA 10 HACER
S ← S +1
FIN_PARA
ESCRIBIR (S)
Tema 3. Estructuras de control 39
Diseñar un algoritmo para calcular la suma de los N primeros
pares
ALGORITMO suma_pares. Inicio
VARIABLES
i,n,suma:ENTERO
1.[Entrada de datos] LEER(N)
REPETIR falso
ESCRIBIR(‘Introduzca un entero:’) N>0
LEER(N) verdad
HASTA (N>0)
suma 0
2.[Sumar los n primeros pares] i2
suma 0
i 2 i<=N
MIENTRAS (i<=2*n) HACER verdad falso
suma suma + i
i i+2 sum suma+i ESCRIBIR(suma)
FIN_MIENTRAS i i+2
ESCRIBIR(‘La suma es’,suma)
3.[Fin] Fin
Tema 3. Estructuras de control 40
Diseñar un algoritmo para calcular las N primeras potencias
de 2
ALGORITMO potencias_2.
VARIABLES
I,N,POT:ENTERO
1.[Entrada de datos]
REPETIR
ESCRIBIR(‘Introduzca un número entero:’)
LEER(N)
HASTA (N>=0)
2.[Mostrar las primeras N potencias de 2]
POT 1
PARA I=0 HASTA N HACER
ESCRIBIR(‘2 elevado a ’,I,‘ es ’,POT)
POT POT*2
FIN_PARA
3.[Fin]
¿Cómo cambiaría el algoritmo si se desea calcula Xy ?
Tema 3. Estructuras de control 41
Diseñar un algoritmo que tome cada hora la temperatura
exterior, leyéndola durante un periodo de 24 horas. Encontrar
la temperatura media para el día, y la temperatura más alta y
más baja
ALGORITMO temperatura.
VARIABLES SI (temp>max) ENTONCES
media,temp,max,min:REAL max temp
i: ENTERO FIN_SI
1.[Inicializaciones] SI (temp<min) ENTONCES
media 0 min temp
max -50 FIN_SI
min 50 FIN_PARA
2.[Leer datos y calcular resultados] media media / 24
PARA i=1 HASTA 24 HACER 3.[Mostrar resultados]
REPETIR ESCRIBIR(‘La media es ’,media)
ESCRIBIR(‘Introduzca la temperatura:’) ESCRIBIR(‘La máxima es ’,max)
LEER(temp) ESCRIBIR(‘La mínima es ’,min)
HASTA (temp>-50.0) AND (temp<50.0) 4.[Fin]
media media + temp
¿Cómo cambiaría el algoritmo si la lectura no tuviera un nº fijo de datos, y en su
lugar, hubiera que leer datos hasta introducir el valor -100?
Tema 3. Estructuras de control 42
Realizar un algoritmo que lea desde teclado valores positivos
y los vaya contando hasta que se introduzca un cero para
terminar
ALGORITMO leer_positivos.
VARIABLES
cont,num:ENTERO
1.[Entrada de datos]
cont 0
REPETIR
2.[Comprobar que el número es válido]
REPETIR
ESCRIBIR(‘Introduzca un nº positivo (cero para terminar):’)
LEER(num)
HASTA (num>=0)
3.[Incrementar contador si el nº es positivo]
SI (num<>0) ENTONCES
cont cont +1
FIN_SI
4.[Terminar cuando se introduce 0]
HASTA (num=0)
ESCRIBIR(‘Se han leído ’,cont,‘ números positivos’)
5.[Fin]
Tema 3. Estructuras de control 43
Seminario 3
Estructuras repetitivas
Jueves 8 de noviembre de 8’30 a 9’30 (grupo A)
y de 15’30 a 16’30 (grupo B)
Relación de ejercicios del tema 3
Ejercicios 37, 40, 41 y 43
Tema 3. Estructuras de control 44
Resumen Pseudocódigo
Estructuras secuenciales Estructuras Repetitivas
Asignación: var exp PARA var=inicio HASTA fin HACER
Entrada: LEER (var) Cuerpo del bucle
Salida: ESCRIBIR (exp) FIN_PARA
Estructura Condicional
SI condición ENTONCES MIENTRAS condición HACER
Sentencias en caso de verdad Cuerpo del bucle
SI_NO FIN_MIENTRAS
Sentencias en caso de falso
FIN_SI REPETIR
Cuerpo del bucle
HASTA condición
Tema 3. Estructuras de control 45
Resumen Diagramas de flujo
INICIO
Inicio/Fin Secuencial var
exp
FIN
Entrada/Salida Condicional
Cond
LEER(var)
falso
verdad
Sentencias Verdad Sentencias Falso
ESCRIBIR(exp)
Bucle MIENTRAS Bucle REPETIR
Cuerpo Bucle
falso
Cond
falso
verdad
Cond
Cuerpo Bucle
verdad
Sentencias Sentencias
Tema 3. Estructuras de control 46
Resumen Codificación en C
Estructuras secuenciales Estructuras Repetitivas
Asignación: var = exp;
for( inicialización; condición;
Entrada: scanf(“form”,var);
Salida: printf(exp); incremento){
Estructura Condicional Cuerpo del bucle
Condicional simple }
if (condición) {
Sentencias en caso de verdad
} else { while (condición) {
Sentencias en caso de falso Cuerpo del bucle
} }
Condicional múltiple
switch(var){
do{
case v1:
sentencias Cuerpo del bucle
break; }while (condición);
…
case vn:
sentencias
break;
default: sentencias
}
Tema 3. Estructuras de control 47