Está en la página 1de 15

Captulo IV Seleccin

(IF ,CICLOS: IF Then Go To, Case)

RESULTADOS DEL APRENDIZAJE:


El alumno: Sabr aplicar los estatutos de seleccin simples y mltiples en procesos cclicos. Y Desarrollar programas para el manejo y seleccin de alternativas dentro de un proceso cclico.

Contenido :

OPERADORES RELACIONALES TRANSFERENCIA INCONDICIONAL ( Sencilla y Mltiple) [If then] TRANSFERENCIA CONDICIONAL ( Sencilla y Anidada) TRANSFERENCIA SELECTIVA ( Casos) [case] CICLOS : ( Anidamiento Instruccional)

Pregunta Gua
Cmo Para qu se usan los ciclos dentro de un programa?

66

Sesin Presencial:
PROPOSICIONES DE CONTROL 1 Operadores RELACIONALES. Se utilizan para formar condiciones o expresiones lgicas que cuyo resultado es verdadero o falso (este resultado se considera de tipo entero). O tambin (Estilo Anterior) Smbolo Significado Smbolo Anterior > mayor que .GT. < menor que .LT. >= mayor o igual que .GT. <= menor o igual que .LT. == igual que .EQ. /= no igual que .NE. 4.1) Ejemplo 1 .- Escriba expresiones donde se utilicen estos operadores y diga cul ser el resultado.
Expresin 11 < 200 (4+1) >= 5 7/= 7 (9+2.5) <= 10 1950 == 1980 55 >= 40*(9+8.5) Resultado true verdadero true verdadero false falso false falso false falso false falso

Las principales instrucciones bsicas que se utilizan en los ciclos son: - IF (Estatuto de transferencia condicional _ lgico) - GO TO (Estatuto de transferencia incondicional, est en des-uso) - Expresiones lgicas. - CASE (Estatuto de transferencia mltiple) ESTATUTO GO TO (Transferencia incondicional) Iniciaremos por presentar el caso del estatuto GOTO que significa ir a. transfiere el proceso de ir a una direccin lgica asignada por el programador. Este estatuto, que a pesar de estar en desuso (obsoleto), es de importancia conocerlo, pues es la base para los estatutos cclicos automatizados (DOS), que se vern en el prximo capitulo. Forma: GO TO # etiqueta Donde: # Etiqueta Es una direccin lgica asignada por el programador y Corresponde a un nmero entero determinado. Smbolo: #

67

Ejemplo: Se desea sumar, restar y multiplicar los valores a y b ledos durante repetidas ocasiones.
Program VAS_a Implicit none Integer:: a,b,s,r,p 15 Read (*,*) a , b s=a+b r=ab p=a*b write (*,*) s , r , p goto 15 End PROGRAM Vas_a

Observe que siempre se seguir solicitando datos, y la ejecucin no terminar nunca. Este tipo de programas ya cay en des uso, es decir, actualmente los programadores tienden a no hacer uso de esta instruccin, aunque el lenguaje an la acepta. Se presenta en este libro como una base para el conocimiento y mejor comprensin del estatuto cclico _ contable........ DO-[contador], el cual se estructura en base al estatuto IF, al de transferencia incondicional y a un incrementador mejor conocido como contador. Esto se presenta en el siguiente Captulo Cinco. Proposicin IF THEN (Estatuto De Transferencia Condicional) La proposicin IF se utiliza para ejecutar una instruccin o una serie de instrucciones dependiendo de que si se cumple o no una condicin o expresin lgica dada. Representacin diagramtico Expresin Condicional Lgica

68

Funcionamiento: Si la condicin expresin lgico es verdadera diferente de cero, se ejecuta por, el THEN (Salida Verdadera), si es falsa o cero, se ejecutara por ELSE. La parte (ELSE o THEN) es optativa, una vez ejecutada cualquiera de las 2 proposiciones, la ejecucin continua en la siguiente instruccin del programa despus ser END IF Nombre ( El nombre viene ha ser una etiqueta que identifica la Transferencia Condicional) El estatuto condicional puede contener uno o mas estatutos dentro de su rango de esta manera constituye el anidamiento condicional. 4.2) Ejemplo llamadas: if (n< 100 ) then write (*,7) 7 format (5x, No Hay Cargos Extras) Else write (*,8) 8 format (5x, Si Hay Cargos Extras end if llamadas

Si N<100
Si
No Hay Cargos Extras

No
Si Hay Cargos Extras

Aspectos a tomar en cuenta acerca del If- else 1.- En la instruccin IF-ELSE, la parte ELSE en algunos casos puede ser opcional, ya que puede ir o no ir, si no se pone la instruccin queda: If (exp) then prop1 endif Si el ELSE no se pone, el IF funciona de la siguiente manera: si la expresin lgica es verdadera, entonces se ejecuta la proposicin 1, y se contina la ejecucin del programa, si prop1 no es verdadera, simplemente se contina la ejecucin del programa. 2- Se debe evitar la comparacin con una igualdad o desigualdad entre 2 valores reales, ya que el resultado puede ser inseguro, debido a la inexactitud cuando la computadora traduce los valores para almacenarlos. 3.- Cuando una expresin lgica la componen 2 cadenas, los caracteres de cada una de ellas se comparan carcter por carcter comenzando desde el principio, la cadena mas corta se considera menor que la mas larga, por ejemplo: 'Juan' > 'JuanJose' dar resultado = falso La comparacin caracter a caracter se hace de acuerdo al cdigo ASCII (Apndice Dos A.2) 4.3)

69

Ejemplo:En una tienda departamental se desea elaborar una promocin en la cual, cuando el cliente adquiera productos por un monto menor a $5000 pesos se le otorgue el 10% de descuento, pero si son mayores se le otorgue el 20%. Elabore un programa que cobre efectuando el descuento.

70

Codificacin: PROGRAM CONDICIONAL IMPLICIT NONE REAL:: MONTO WRITE(*,500) 500 FORMAT (' DAME EL MONTO DE LA COMPRA') READ(*,1000)MONTO 1000 FORMAT (F14.3) OFERTA: IF ( MONTO < 5000. ) THEN MONTO = MONTO * 0.9 ELSE MONTO = MONTO * 0.8 end if OFERTA WRITE (*,2000) MONTO 2000 FORMAT ( 5X, TOTAL A PAGAR ES $ , F14.3) END PROGRAM CONDICIONAL Diagrama De Flujo:

4.5)Ejemplo Diagrame y codifique un programa para que dados 2 nmeros enteros, se sumen, se resten. se multipliquen, y se dividan a entre b solo si b es diferente de cero.
PROGRAM ARITMETICA IMPLICIT NONE INTEGER: A,B,S,R,P REAL:: D WRITE(',*)'DAME LOS VALORES DE A Y DE B" READ(*,*) A,B S=A+B R = A-B P = A*B COCIENTE:IF (B>0) THEN D=REAL (A) / REAL(B) WRITE(*,5) S,R,P,D 5 FORMAT(3L5,F5.1) ELSE WRITE(*,6) S,R,P 6 FORMAT(3L5) ENDIF COCIENTE END PROGRAM ARITMTICA

71

ANIDAMIENTO DEL IFS

(Es colocar un If dentro de otro If.)

Jerarqua operacional del IF usando operadores relacionales 1) Simblicos Funciones **, * , /, + o ==, /==, <>, =<, => . not. , .and. , .or. , .eqv. , .neqv. 2) Posicional.- De izquierda a derecha. 3) Asociativa.- Haciendo uso de parntesis y utilizando las reglas anteriores. 4.11)Ejemplo.-Cul ser el orden jerrquico de ejecucin de la expresin:

( a + b > a b ) .and. ( a ** 2 + b ** 2 ) .or. ( a ** 2 b ** 2 )


1 3 2 7 4 6 5 11 8 10 9 4) Anidamiento .-Se cierra primero el IF que se abri al final del anidamiento Nota: La Jerarqua de anidamiento solo se aplica cuando los IFs estn etiquetados
Ejemplo: Usando IFs Anidados, elabore un programa que cambie los nmeros por letras segn tabla: NOTA SIGNIFICADO: NOTA >= 100 A EXCELENTE 90 <= NOTA < 100 B MUY BIEN 80 <= NOTA < 90 C BIEN 70 <= NOTA < 80 D ACEPTABLE NOTA < 70 F NO APROBADO

La siguiente codificacin del problema anterior es muy recomendable por el buen acomodo de los IF ya que pueden distinguirse perfectamente donde comienzan y donde terminan. Codificacin.
Q1: IF (NOTA >= 100 ) THEN WRITE ( *,* ) NOTA = A EXCELENTE ELSE Q2: IF (NOTA >= 90) THEN WRITE ( *,* ) NOTA = B MUY BIEN ELSE Q3: IF (NOTA >= 80) THEN WRITE ( *,* ) NOTA = C BIEN ELSE Q4: IF (NOTA >= 70) THEN WRITE ( *,* ) NOTA = D ACEPTABLE ELSE WRITE ( *,* ) NOTA = F NO APROBADO ENDIF Q4 ENDIF Q3 ENDIF Q2 ENDIF Q1

72

DIAGRAMA DE FLUJO UTILIZANDO IFS ANIDADOS

Inicio De Programa

NOTA

>= 100

V
A
NOTA

V
B

F
NOTA >=80

V
C

F
NOTA

>=70

V F
D

Fin De Programa

73

Operadores Lgicos. Operador and El operador and (Y) en Fortran se representa como .and. Regla : Supngase una expresin de la forma ( p .and. q), donde p y q son condiciones. Entonces la expresin tendr valor verdadero solo cuando tanto p como q sean verdaderas, todos los dems casos sern falsos. 4.6)Ejemplo Escriba al menos 2 proposiciones donde se utilice .and.
DEPORTE:IF (TIME < 10 ) .AND. ( FALTAS <3) THEN WRITE (*,*) CALIFICA ELSE WRITE (*,*) NO CALIFICA END IF DEPORTE

Faltas < 3 y Time 10

Califica

No Califica

Operador O (Or ) El operador en Fortran se representa como .Or. Regla: Supngase que una expresin es de la forma p .Or. q donde p y q son condiciones, entonces la expresin ser verdadera si al menos uno de los dos p o q sea verdadera, en caso contrario, la expresin ser falsa. 4.7) EJEMPLO
FRIO: IF (TEMP <0 ) .OR. ( TEMP > 40) THEN WRITE (*,*) TEMPERATURA PELIGROSA ELSE WRITE (*,*) TEMPERATURA SOPORTABLE END IF FRIO

El operador Equivalence se representa Fortran como .EQV. y significa igual a, equivale a. Regla: Suponga que una expresin es de la forma p .EQV. q donde p y q son condiciones, entonces la expresin ser verdadera si p y q son iguales ( Verdaderas Falsas), si son diferentes, la expresin ser Falsa. 4.8) Ejemplo If (sin(teta)) .eqv. ((-) sin (teta+120)) then write (*,*) Angulos Semejantes? Else .....

74

El operador Not Equivalence .NEQV. (Significa diferencia o no equivale a) Regla: Suponga que una expresin es de la forma p .NEQV. q donde p y q son condiciones, entonces la expresin ser verdadera si uno de los 2 p o q sea verdadera y la otra falsa, si son iguales la expresin ser falsa. 4.9) Ejemplo If ( pesos = 14.50 ) .neqv .(euros /14.50) then write (*,*) aguas con el tipo de cambio Else... Operador not (NOT ) En Fortran el operador not se representa como .NOT. Regla : Una expresin (.NOT. p) toma el valor contrario de p, o sea que si p es verdadera, entonces (.NOT. p) ser falsa, si p es falsa, entonces (.NOT. p) ser verdadera 4.10) Ejemplo If (.not. (Denominador > 0)) then write (*,*) division indeterminada Else...

Estatuto de transferencia mltiple


Proposicin Select case Cuando se tiene que tomar una decisin con ms de 2 alternativas, se utiliza la proposicin Select case, la cul puede transferir la ejecucin a una lnea determinada entre una serie de instrucciones, dependiendo del valor del selector K. su forma general es: Select Case (K )case (a) proposicin(s) Case (K) Proposicin(s) [K1,K2,K3 ] Case default: proposicin(s) End select Representacin : K.- Variable cuyo valor debe ser entero carcter (ya que los caracteres individuales tienen valores enteros), una expresin lgica. Proposicin(s).- Proposicin o grupo de proposiciones que se ejecutan segn el valor de K. Cada opcin debe tener una etiqueta CASE. A,B,C,... = valores lista de valores posibles que puede tomar K Funcionamiento.- La computadora elige la proposicin grupo de proposiciones a ejecutar segn coincida el valor de K en la instruccin case con el valor k1,k2,k3, etc,

75

Puntos a tomar en cuenta acerca del estatuto Select case 1.- La etiqueta default se selecciona si ninguna de las etiquetas case coincide con el valor de K en la instruccin select case, y sirve para generar mensajes de error. 2.- Default ( Por Omisin) puede ir en cualquier lugar de la proposicin Select Case, y no necesariamente colocada al final, adems es opcional. 3.- Si ninguna etiqueta case coincide con el valor de K y no hay grupo por Omisin, la proposicin select case no har nada. 4.- En el Case (k), el valor de k puede ser un rango de valores posibles, por ejemplo (1:100) significa " entre 1 y 100 ', ( :0 ) significa: Para nmeros menores que cero, ( 1000:) significa: para nmeros mayores de 1000, etc. La actual forma es el llamado constructor de casos SELECT CASE y su estructura general es [etiqueta] SELECT CASE (expresin del caso) case ( primera seleccin del caso) [etiqueta] estatuto1 estatuto2 case (segunda.....) ------------------case default [etiqueta] end select [etiqueta] 4.11) Ejemplo. Se desea cambiar una nota leda por letra, de acuerdo con la tabla a continuacin mostrada ENTRADA 100 Desde 90 Y Menor que 80 70 Menor a SOLUCIN: PROGRAM CASOS IMPLICIT NONE INTEGER :: NOTA WRITE ( *,1) NOTA 1 FORMAT ( 5X, DIGITE UNA NOTA ENTERA ENTRE 0 Y 100) READ ( *,2) NOTA 2 FORMAT ( I3) CALIFAS: SELCT CASE (NOTA) CASE (100.) WRITE (*,100)NOTA SALIDA A B C D E

100 90 80 70

76

100 FORMAT(5X, LA NOTA CASE (90:100) WRITE (*,90)NOTA 90 FORMAT ( 5X, LA NOTA CASE (80:90) WRITE (*, 80) NOTA 80 FORMAT ( 5X, LA NOTA CASE (70:80) WRITE (*,70)NOTA 70 FORMAT ( 5X, LA NOTA CASE (:70) WRITE (*,60) NOTA 60 FORMAT ( 5X, LA NOTA END SELECT CALIFAS END PROGRAM CASOS

= ,I3, EQUIVALE A A) = ,I3, EQUIVALE A B) = ,I3, EQUIVALE A C) = ,I3, EQUIVALE A D) = ,I3, EQUIVALE A E)

Diagramando Tenemos:

77

Evidencia Integradora

(Preguntas sobre Conceptos Bsicos)

4.1.- Diga cules son y para qu se utilizan los operadores relacinales. 4.2.- Diga por qu se recomienda no utilizar una igualdad o una desigualdad Entre 2 nmeros reales4.3.- Diga cul es et funcionamiento de una proposicin IF-ELSE 4.4.- Diga para qu sirven los operadores lgicos and, or, y not. y .eqv. 4.5. -Diga cul es la jerarqua de operaciones, incluyendo los operadores Relacionales y lgicos 4.6.- Dado que la condicin en un IF puede ser una condicin con mezcla de Operadores relacinales y/o lgicos, diga de qu tipo es su resultado. 4.7- Diga como escribir en un IF el siguiente rango de valores Si: 20 < Edad < 30. 4.8. Diga si se puede asignar una expresin lgica a una variable character e imprimirla, de ser posible esto, de un ejemplo. 4.9.- Diga cul es el funcionamiento de la proposicin select case. 4.10.-Diga de cules tipos de variable puede ser la variable o expresin en Una instruccin Select Case . 4.11.-Diga cul debe ser la ltima instruccin de una instruccin select case. 4.12.-Diga qu pasa si el valor de la variable o expresin no est en ningn Valor de la lista de posibles valores dentro de la instruccin Select Case (Se marcar error?). ** Haciendo uso de todos los pasos sugeridos para una programacin exitosa solucione los siguientes problemas. 4.13.- Un programa que lea n valores temperatura en grados Celsius y la Convierta a grados Fahrenheit, kelvin y Ranquin si las frmulas fueran: 0 0 f = 9/5( 0c+32) 0k = 5/9(0f-32)+273.15 r 3000k 4.14.-Haciendo uso de los operadores relacionales, localice el valor mayor entre tres nmeros ledos. 4.15.-Elabore un programa que lea n valores de l de tal forma que calcule el rea de dichos cuadrados. 4.16.-Un submarino amarillo viaj por las turbulentas aguas del ro Chuvscar, durante n ocasiones, y en cada ocasin su distancia viajada fue distinta y se ley en millas marinas, se desea conocer el equivalente en millas terrestres, yardas y metros.(milla marina = 1852.9m = 2025 yardas, milla terrestre = 1609.3m = 1760 yardas) 4.17.-En una piscina de clavados con 10m de profundidad mxima; una serie de n competidores se lanzan y cada uno llega a distinta profundidad (p); se desea conocer la presin mxima que se sometieron, si la alberca tenia una temperatura de 16.6 grados centgrados.( a esa temperatura un centmetro de mercurio = 0.01358 kilogramos/ cm 2 = 13.58 cms de agua). Suponga la profundidad p en cms.

78

4.18.-Una flotilla de camiones llevan diferentes pesos de carga medida en kilogramos, al cruzar la frontera, la aduana solicita el equivalente en toneladas largas, cortas y en libras. Elabore un programa, si la flotilla consta de x camiones (tonelada corta = 2000 lbs = 807.2 kg y la tonelada larga = 2240lbs = 1.0161 tns = 1016kg) 4.19.- Los buques petroleros llevan combustible de Tampico a Inglaterra, se cargan con medidas en litros y al llegar le solicitan el equivalente en Bushel. Cada buque lleva una carga n y son c buques (bushel = 2150.42 pulgadas cbicas x 352379 = Hectolitro = 100 lts ) 4.20.- Disee un programa que lea y despliegue lo ledo y el promedio de cada alumno y el promedio general de todos los alumnos si se tiene: Datos Matricula Nombre Especialidad Nota1 Variable Mat Nomb Esp Mate Tamao (caracteres) 8 30 3 6 Tipo Entero Alfanumrico Real Real con 3 fracciones
(incluye punto)

Nota2

Fin

Real con 3 fracciones


(incluye punto)

Nota3

Fsica

Real con 3 fracciones


(incluye punto)

Nota4

Quim

Real con 3 fracciones


(incluye punto)

*(promedio alumno) *(promedio grupo)

Prom

Real con 3 fracciones


(incluye punto)

Pgpo

Real con 3 fracciones


(incluye punto)

*Estos promedios se calculan en el programa.

79

4.21.-Haga un programa que calcule el valor de ngulo expresado en radianes, para la funcin seno lo cual es una serie infinita, se calculan solo 5 trminos.
n

Seno = (-1)n-1 2n-1 (2n-1)! i=1

(recuerde el ejemplo resuelto de factorial)

La formula quedara: seno_teta= teta3 + teta5 - teta7 3! 5! 7! 4.22.- Suponga que se desea calcular el promedio d las races medias cuadrticas de un modelo estocstico si se dan n valores y xi observaciones.

80

También podría gustarte