|
Master
en Artes Digitales (IUA-UPF) |
Estructuras
de Control de Flujo
Condicionales | Bucles | Ejercicios
Los programas no siempre fluyen de forma lineal. A veces hay que tomar decisiones y a veces hay que hacer tareas repetitivas.
|
if(<condición>)
{ |
![]() |
|
Ejemplos de "if" a programar en el entorno EP-NAR-6 Ejemplo 1 : Leer un número y decidir si es menor que 10 Ejemplo 2 : Modificar el anterior para ver si el número es mayor o igual a 10 (dos formas). Ejemplo 3 : Modificar el anterior para ver si el número es mayor o igual a 5 y menor que 10. Ejemplo 4 : Modificar el anterior para ver si el número es: mayor o igual a 5 y menor que 10 o si es mayor que 25 y menor que 32. Ejemplo 5 : Leer un texto y decir si es igual a: Marc |
|
switch
(<variable>)
{ default:
<acción(es)> |
![]() |
|
Ejemplos de "switch" a programar en el entorno EP-NAR-6 Ejemplo 1 : Leer un texto por teclado y decidir si es els nombre de una de las siguientes frutas: naranja, fresa, banana, manzana, pera o melón. Si coincide con alguna, escribir en cada caso una pequeña descripció de esa fruta. Ejemplo 2 : Modificar el anterior de forma que si el nombre dado no coincide con ninguna de las frutas especificadas se escriba un mensaje avisando que no se conoce esa fruta. |
![]() |
|
| for(<inicializar
variable>; <condición de fin>; <incremento variable>)
{ <acción(es)> } |
|
Ejemplos de "for" a programar en el entorno EP-NAR-6 Ejemplo 1 : Escribir
100 veces: Hello World! Ejemplo 2 : Escribir
100 veces: Hello World! Ejemplo 3 : Modificar el anterior para escribir un mensaje entrado por teclado. Ejemplo 4 : Leer caracter a caracter, una frase de 10 caracteres de largo, e irla escribiendo en la salida. Ejemplo 5 : Modificar el anterior para contar la cantidad de caracteres "a" que aparecen. Ejemplo 6 : Leer 10 nombres por teclado e irlos guardando cada uno en una posición consecutiva de un Array. Finalmente escribir el contenido del Array para verificar que los nombres leídos se han guardado correctamente. |
| while(<condición(es)>)
{ <acción(es)> } |
![]() |
|
Ejemplos de "while" a programar en el entorno EP-NAR-6 Ejemplo 1 : Escribir
100 veces: Hello World! Ejemplo 2 : Modificar el anterior para escribir un mensaje entrado por teclado. Ejemplo 3 : Leer caracter a caracter, una frase terminada en punto, e irla escribiendo en la salida. Ejemplo 4 : Modificar el anterior para contar la cantidad de caracteres "a" que aparecen. Ejemplo 5 : Leer 10 nombres por teclado e irlos guardando cada uno en una posición consecutiva de un Array. Finalmente escribir el contenido del Array para verificar que los nombres leídos se han guardado correctamente. |
| do
{ <acción(es)> }while(<condición(es)>) |
![]() |
Ejemplos de estructuras de control de flujo a programar en el entorno EP-NAR-6
|
Ejemplo 1 : Leer caracter a caracter una frase terminada en un punto. Irla escribiendo por pantalla sin ninguna vocal. Ejemplo 2 : Se darán letras por teclado hasta finalizar con un punto. Se quiere saber cuantas veces aparece cada vocal y el tanto por ciento que representa cada una del total de letras. Ejemplo 3 : Dadas 5
letras por teclado, escribir (en líneas distintas) todas las combinaciones
(sin repretición de letra) posibles de esas 5 letras en grupos
de 3. Ejemplo 4 : Se dará una frase por teclado y se quiere escribir por pantalla en sentido inverso. (Nota: la frase no será más larga de 200 caracteres). |
Ejemplo 1 :
function main(){ letra = "" letra = readchr() while(letra != "."){ if(letra != "a" && letra != "e" && letra != "i" && letra != "o" && letra != "u"){ write(letra) } letra = readchr() } }o bien:
function main(){ letra = "" letra = readchr() while(letra != "."){ switch(letra) { case "a": case "e": case "i": case "o": case "u": break default: write(letra) } letra = readchr() } }
Ejemplo 2 :
function main(){
letra = ""
total_a = 0
total_e = 0
total_i = 0
total_o = 0
total_u = 0
total_letras = 0
letra = readchr()
while(letra != "."){
total_letras++
switch(letra) {
case "a": total_a++
break
case "e": total_e++
break
case "i": total_i++
break
case "o": total_o++
break
case "u": total_u++
break
}
letra = readchr()
}
write("Total de letras: " + total_letras + "\n")
write("Total de a: " + total_a + "\n")
write("% de a: " + (total_a / total_letras * 100) + "\n")
write("Total de e: " + total_e + "\n")
write("% de e: " + (total_e / total_letras * 100) + "\n")
write("Total de i: " + total_i + "\n")
write("% de i: " + (total_i / total_letras * 100) + "\n")
write("Total de o: " + total_o + "\n")
write("% de o: " + (total_o / total_letras * 100) + "\n")
write("Total de u: " + total_u + "\n")
write("% de u: " + (total_u / total_letras * 100) + "\n")
}
Ejemplo 3 :
function main(){
letras = new Array(5)
for(i = 0; i < 5; i++){
letras[i] = readchr()
}
for(i = 0; i < 5; i++){
for(j = i+1; j < 5; j++){
for(k = j+1; k < 5; k++){
write(letras[i]+letras[j]+letras[k]+"\n")
}
}
}
}
Ejemplo 4 :
function main(){
frase = new Array(200)
i = 0
frase[i] = readchr()
while(frase[i] != "."){
i++
frase[i] = readchr()
}
for(j = i; j >= 0; j--){
write(frase[j])
}
}