Vous êtes sur la page 1sur 9

1. Hacer un algoritmo que lea los nombres y edades de dos personas e imprima cual de ellas tiene ms edad. 1.

Inicio 2. leer nombre1 y edad1 3. leer nombre2 y edad2 4. comparar edad1 con edad2: 5. Si edad1 > edad2 imprimir ( nombre1, es mayor ) 6. si edad2 > edad1 imprimir ( nombre2, es mayor) 7. Si edad1 = edad2 imprimir (Edades iguales) 8. Fin 2. En una Granja existen N conejos, N1 blancos y N2 negros. Se venden X negros y Y blancos. Hacer un algoritmo que: a) Imprima la cantidad de conejos vendida b) Si P1 es el precio de venta de los conejos blancos y P2 es el precio de venta de los conejos negros, imprima el monto total de la venta. c) Imprima el color de los conejos que se vendieron mas. Solucin: 1. Inicio 2. Leer datos: N, N1,N2,X,Y,P1,P2 3. Calcular la cantidad de conejos vendida: CCV = X + Y 4. Imprimir la cantidad de conejos vendida: Imprimir CCV 5. Calcular el monto de la venta: MVenta = X * P2 + Y * P1 6. Imprimir monto de la venta: Imprimir MVenta 7. Si X > Y entonces Imprimir Se vendieron mas conejos negros en otro caso Imprimir Se vendieron mas conejos blancos 8. Fin 3. Elaborar un algoritmo que lea el importe bruto de una factura y determine el importe neto segn los siguientes criterios: Importe bruto menor de 20.000 -> sin descuento Importe bruto mayor de 20.000 -> 15% de descuento

1. Inicio 2. Leer importeb 3. Calcular descuento: Si importeb >= 20000 entonces descuento =importeb * 0.15; en otro caso descuento = 0 finsi 4. Calcular monto total de la factura: total:=importe descuento 5. Escribir total 6. fin 4. Un decreto presidencial permite el aumento del 10& a aquellos trabajadores que ganen el sueldo mnimo oficial (Sueldomo). Hacer un algoritmo que lea el sueldo de un trabajador e imprima el sueldo a devengar, despus del decreto. Inicio Leer sueldot Si sueldot = sueldomo entonces sueldot = sueldot + (sueldomo*0,10) Imprimir sueldo Fin

Sentencias de control en Fortran


Adems de las sentencias simples, que son ejecutadas en secuencia, existen sentencias de control que permiten modificar el flujo del programa introduciendo ciclos y condicionales. Una secuencia de control incluye otra sentencia dentro de s. Por ejemplo, una sentencia condicional incluye la sentencia que puede o no ejecutarse dependiendo de una condicin. Al escribir las sentencias que van dentro de una sentencia de control, se acostumbra a comenzar el rengln varias columnas ms adelante. Esto se llama indentacin, y es crucial para entender programas complejos. Para indentar, lo tpico es usar cuatro espacios. Todos los ejemplos en esta seccin estn debidamente indentados.

Condicional if-then

La sentencia if-then (en espaol: si-entonces) ejecuta instrucciones slo si se cumple una condicin. Si la condicin es falsa, no se hace nada. La sintaxis es la siguiente:
if (condicin) then ! qu hacer cuando la condicin es verdadera end if

Por ejemplo, el siguente programa felicita a alguien que aprob la asignatura:


program aprobado implicit none integer :: nota print *, 'Que nota obtuvo: ' read *, nota if (nota >= 55) then print *, 'Felicitaciones' end if end program aprobado

Condicional if-then-else
La sentencia if-then-else (si-entonces-o-si-no) decide entre dos secuencias de instrucciones a ejecutar dependiendo si una condicin es verdadera o falsa. La sintaxis es la siguiente:
if (condicin) then ! qu hacer cuando la condicin es verdadera else ! qu hacer cuando la condicin es falsa end if

Por ejemplo, el siguiente programa recibe como entrada un ao e indica si es bisiesto o no:
program bisiesto implicit none integer :: year print *, 'Ingrese el ao: ' read *, year if (mod(year, 4) == 0 .and. (mod(year, 100) /= 0) .or. &

(mod(year, 400) == 0)) then print *, 'El ao ', year, ' es bisiesto' else print *, 'El ao ', year, ' no es bisiesto' end if end program bisiesto

Condicional select-case
La sentencia select-case (seleccionar-caso) decide qu instrucciones ejecutar dependiendo del valor de una expresin. Es una manera abreviada de escribir variosifs uno despus del otro. La sintaxis es la siguiente:
select case (expresin) case (valor1) ! qu hacer cuando expresin == valor1 case (valor2) ! qu hacer cuando expresin == valor2 ... case default ! qu hacer cuando no se cumpli ! ninguno de los caso anteriores end select

Por ejemplo, el siguiente programa recibe un nmero entero como entrada e indica si es par o impar:
program par implicit none integer :: n print *, 'Ingrese un numero' read *, n select case (mod(n, 2)) case (0) print *, 'El numero es par' case (1) print *, 'El numero es impar' end select end program par

En un mismo caso es posible poner varios valores separados por comas. Por ejemplo, el siguiente programa recibe como entrada un caracter, y lo clasifica como vocal, consonante, dgito o smbolo:
program clasifica_letras implicit none character :: c print *, 'Ingrese un caracter' read *, c select case (c) case ('a', 'e', 'i', 'o', 'u') print *, c, ' es una vocal minuscula' case ('A', 'E', 'I', 'O', 'U') print *, c, ' es una vocal mayuscula' case ('b', 'c', 'd', 'f', 'g', 'h', 'j', & 'k', 'l', 'm', 'n', 'p', 'q', 'r', & 's', 't', 'v', 'w', 'x', 'y', 'z') print *, c, ' es una consonante minuscula' case ('B', 'C', 'D', 'F', 'G', 'H', 'J', & 'K', 'L', 'M', 'N', 'P', 'Q', 'R', & 'S', 'T', 'V', 'W', 'X', 'Y', 'Z') print *, c, ' es una consonante mayuscula' case ('0', '1', '2', '3', '4', & '5', '6', '7', '8', '9') print *, c, ' es un digito' case default print *, c, ' es un simbolo' end select end program clasifica_letras

Ciclo do-while
El ciclo do-while (hacer mientras) ejecuta una secuencia de instrucciones mientras una condicin sea verdadera. La sintaxis es:
do while (condicin) ! qu hacer mientras la condicin se cumple end do

Por ejemplo, el siguiente cdigo toma un nmero, y lo eleva al cuadrado hasta pasar de mil:

do while (n < 1000) n = n ** 2 end do

En general, el ciclo do while se utiliza cuando no se puede saber de antemano cuntas veces se ejecutar un ciclo, pero s qu es lo que tiene que ocurrir para que se termine. La condicin es evaluada al comienzo de cada iteracin. Si la condicin deja de ser verdadera en medio de la iteracin, el ciclo no termina, sino que contina hasta el final. Por ejemplo, el siguiente ciclo se ejecuta tres veces, a pesar de que la condicin siempre deja de cumplirse despus de la primera asignacin:
n=2 do while (n < 10) n=n*6 n=n-9 end do

Ciclo do
El ciclo do (hacer) ejecuta una secuencia de instrucciones un nmero determinado de veces. Para llevar la cuenta, utiliza una variable de control que toma distintos valores en cada iteracin. La sintaxis es:
do variable = inicio, final ! qu hacer para cada valor de la variable de control end do

En la primera iteracin, la variable de control toma el valor inicio. Al final de cada iteracin, el valor de la variable de control aumenta automticamente. Cuando se pasa de largo del valor final, el ciclo termina. Por ejemplo, el siguiente programa muestra los cubos de los nmeros del 1 al 20:
do i = 1, 20 print *, i, i ** 3 end do

Si el valor final es menor al inicial, el ciclo nunca es ejecutado. Adems, el ciclo do puede recibir un tercer valor que representa el incremento de la variable de control, es decir, en cunto cambiar su valor despus de cada iteracin. Por ejemplo, el siguiente programa muestra los cuadrados de los nmeros imparesmenores que 100:

do i = 1, 100, 2 print *, i, sqrt(real(i)) end do

Tambin es posible hacer ciclos que van hacia atrs:


do i = 10, 1, -1 print *, i end do print *, 'Feliz an~o nuevo!'

Tanto la variable de control como los valores inicial, final y de incremento deben ser de tipo entero. La variable de control es una variable como cualquier otra, y debe ser declarada apropiadamente al comienzo del programa. Un ciclo do es una manera abreviada de escribir un tipo especial de ciclo do while. Los siguientes dos ciclos son equivalentes (cuando inc es positivo):
do i = inicio, fin, inc print *, i end do i = inicio do while (i <= fin) print *, i i = i + inc end do

Salir de un ciclo
Adems de las condiciones de trmino propias de los ciclos do y do while, siempre es posible salir de un ciclo en cualquier momento usando la sentencia exit. Lo lgico es que sea usada dentro de un condicional, para evitar que todos los ciclos se terminen a la primera. Por ejemplo, en el programa para determinar si un nmero es primo o no, la bsqueda de divisores puede ser terminada prematuramente apenas se encuentra el primero de ellos:
es_primo = .true. do d = 2, n - 1 if (mod(n, d) == 0) then es_primo = .false. exit end if end do

Saltar a la siguiente iteracin


La sentencia cycle se usa para saltar a la iteracin siguiente sin llegar al final de la que est en curso. Por ejemplo, el siguiente programa muestra el seno, el coseno y la tangente de los nmeros del 1 al 30, pero omitiendo los que terminan en 7:
do i = 1, 30 if (mod(i, 10) == 7) then cycle end if print *, i print *, 'Seno: ', sin(real(i)) print *, 'Coseno: ', cos(real(i)) print *, 'Tangente:', tan(real(i)) end do

Ciclo infinito
Existe un tercer tipo de ciclo que no tiene ninguna condicin de termino. Se llama ciclo infinito y la sintaxis es:
do ! hacer algo end do

La nica manera de salir de un ciclo infinito es usando la sentencia exit. Por ejemplo, el siguiente cdigo pregunta nmeros al usuario, e indica si el nmero es par o impar, y termina cuando el usuario ingresa un cero:
do read *, n

if (n == 0) then exit end if

select case (mod(n, 2)) case (0) print *, 'Par' case (1) print *, 'Impar' end select end do