LÓGICA - DECISIONES. Hay dos tipos de expresiones lógicas: las expresiones lógicas relacionales y las expresiones lógicas combinacionales.

Documentos relacionados
.LE. <= MENOR O IGUAL QUE .GE. >= MAYOR O IGUAL QUE. Tabla 2.1: Operadores lógicos relacionales Fortran

Estructuras de Control. Secuencia y Selección

Estructuras de Control. Secuencia y Selección

Motivación. 4: Control de flujo Condicionales. Motivación. Condicionales

Operadores aritméticos

Operadores. Java es un lenguaje rico en operadores, que son casi idénticos a los de C/C++.

FUNDAMENTOS DE INFORMÁTICA

Variables lógicas y sentencia IF

Variables lógicas y sentencia IF. Seminario de Computación Verano de 2009

LENGUAJE FORTRAN. ESTRUCTURAS Y SENTENCIAS

Estructuras de Control

Fundamentos de Programación

Programación Estructurada en ANSI C

Operadores y Expresiones

INTRODUCCIÓN A LA PROGRAMACIÓN EN FORTRAN. Métodos Numéricos Carlos Zotelo

Resolución de Problemas y Algoritmos

Informática Aplicada I

Tema 3.- Predicados y sentencias condicionales

Tema 4. Operadores y Expresiones

Estatutos de Control C# Estatutos de Decisión (Selección)

Fundamentos de Informática

Programcaión Básica. Secuencias de Control y Repetición. Arturo Vega González.

TEMA 4. ESTRUCTURAS DE CONTROL

Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main.

Tema 3. Estructuras de Datos

4. Operadores Operador asignación

El lenguaje C. 1. Identificadores, constantes y variables

Programación Orientada a Objetos Sentencias Java Parte I Ing. Julio Ernesto Carreño Vargas MsC.

21/03/2018. Variables y Constantes. Los datos de un programa están representados por variables o constantes y tienen asociado un tipo.

Introducción a Fortran

EXPRESIONES Y OPERADORES

LENGUAJE FORTRAN. FUNCIONES Y SUBRUTINAS

Expresiones Aritméticas

Curso de Java Introducción a la Programación III

Capítulo 12 INSTRUCCIONES DE CONTROL ALTERNATIVAS. Presentación resumen del libro: "EMPEZAR DE CERO A PROGRAMAR EN lenguaje C"

24/8/2018. cuota monto/cantcuotas

JavaScript Básico. Elementos Básicos: Comentarios: Literales: Valores que puede tomar una variable o una constante.

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

GUIÓN DE PRÁCTICAS 3: ESTRUCTURAS CONDICIONALES

Programación: Estructuras de Control

Programación n Orientada a Objetos Sentencias Java Parte I. Ing. Julio Ernesto Carreño o Vargas MsC.

Tema 2: Elementos básicos de un programa. Tipos de datos, variables y constantes Asignación Operadores y expresiones

28/08/2018. Dra. Jessica Andrea Carballido. cuota monto/cantcuotas

Curso Completo de Visual Basic 6.0

Programación Orientada Objetos. Estructuras de control if, If else, switch

Programación estructurada. Programación estructurada

Control de Flujo. Estructuras de Control! Experiencia Educativa de Algorítmica CONTROL DE FLUJO

Comprender las diferencias entre tipos de datos primitivos similares, y aprender a elegir el tipo más conveniente en cada caso.

Diagrama de una computadora. Unidad Central de procesamiento (CPU)

Estructura de un programa en Java. Tipos de datos básicos. class miprimerprograma{ // comentario, no es parte del programa

GENERACIÓN DE CÓDIGO ORIENTADO A OBJETOS

Tema 3. Estructuras de control

Lección 3 Sentencias de control

Operaciones aritméticas

Expresiones y sentencias

INFORMATICA TECNICATURA DE NIVEL SUPERIOR ALGUNOS EJERCICIOS DE SELECCIÓN E ITERACION

Estructuras de control

Introducción a C++ Algoritmos y Estructuras de datos II Dra. Carmen Mezura Godoy. Febrero 2009

Introducción al lenguaje C

Análisis y Programación

UNIDAD 2 Descripción de un programa

Capítulo 3. Sentencias condicionales

Componentes Básicos. InCo. InCo Componentes Básicos 1 / 28

ALGORÍTMICA. Dpto. Ingeniería de Sistemas y Automática Facultad de Ciencias Universidad de Valladolid.

Fundamentos PHP. El término puntuación nos referimos a la sintaxis usada en PHP para la terminación de una línea de código (;)

5. Sentencias selectivas o condicionales

Apunte Laboratorio ALPI - El lenguaje de programación Pascal

Tema 2. El lenguaje JAVA

Control de Flujo. Estructuras de Control! Experiencia Educativa de Algorítmica CONTROL DE FLUJO

Centro Universitario UAEM Zumpango Ingeniería en Computación

Sumador con comprobación (1)

Introducción a la Programación

PASCAL y TURBO PASCAL

JavaScript: Operadores

Tema 05: Elementos de un programa en C

$0 Representa al parámetro cero o nombre del programa $1 Representa al parámetro uno $2 Representa al parámetro dos

Informática. Tema4- Estructuras de Control en C: Estructuras selectivas o condicionales

Tema 2: Desarrollo de Algoritmos. E.E. de Algorítmica

TEMA 4: Estructuras de Control

Programación - Algorítmica

Laboratorio de Arquitectura de Redes. Sentencias de control en lenguaje C

Una expresión es una combinación de uno o más operandos y operadores para obtener un resultado.

SELECCION SELECCION

Expresiones Aritméticas. Programación digital I Escuela de Sistemas Facultad de Ingeniería Gilberto Diaz

Estructuras de repetición

Informática Ingeniería en Electrónica y Automática Industrial

PASCAL y TURBO PASCAL

Tema: Estructuras de Selección en C#.

Sistemas Combinacionales y mas Verilog. Diseño de Sistemas con FPGA Patricia Borensztejn

Conocer los tipos de esquemas condicionales. Entender su funcionamiento y sus diferencias. 1. Introducción. 3. Esquemas condicionales en C

LABORATORIO DE CIRCUITOS DIGITALES (2005-II) SEGUNDA CLASE DE VHDL

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas

TEMA 4: Programación estructurada

TEMA 3. OPERADORES Y EXPRESIONES.

Tipos y Estructuras de Control. Dpto. de Ciencias e Ingeniería de la Computación UNIVERSIDAD NACIONAL DEL SUR

FUNDAMENTOS DE INFORMÁTICA PROGRAMACIÓN EN FORTRAN. Pilar Bernardos Llorente

Transcripción:

LÓGICA - DECIONES Los valores lógicos: constantes, variables y expresiones lógicas, permiten controlar la ejecución de las sentencias de un programa. Hay dos tipos de expresiones lógicas: las expresiones lógicas relacionales y las expresiones lógicas combinacionales. Las expresiones lógicas relacionales comparan los valores de dos expresiones aritméticas o dos expresiones de tipo carácter. Las expresiones lógicas combinacionales representan operaciones lógicas entre constantes, variables y otras expresiones lógicas.

Expresiones lógicas relacionales Las expresiones lógicas relacionales comparan los valores de dos expresiones aritméticas o dos expresiones de tipo carácter. La evaluación de una expresión lógica relacional produce un resultado de tipo lógico:.true. o.false. Sintaxis: operando1 OPERADOR_LÓGICO_RELACIONAL operando2 operando es una expresión, variable o constante aritmética o de tipo carácter. Operador LÓGICO relacional F77 F90/95.EQ. = = Igual.NE. /= Distinto Significado.LT. < Menor que.le. <= Menor o igual que.gt. > Mayor que.ge. >= Mayor o igual que Los operadores lógicos relacionales de Fortran 77 han sobrevivido y funcionan en los compiladores de Fortran 90/95. Por ello, es interesante que el programador los reconozca en los programas, sin embargo, es preferible que utilice la forma de Fortran 90 en sus programas nuevos, que es mucho más intuitiva.

Expresiones lógicas relacionales (ejemplos) Sea la sentencia de declaración de tipos: INTEGER :: I=3, J=5 OPERACIÓN RESULTADO 3 <= I.TRUE. J**2-1 >= 0.TRUE. I = = J.FALSE. I /= 10.TRUE. ANA < PEPE.TRUE. No son válidas las siguientes expresiones lógicas relacionales: <= 5 (falta operando 1) 8.44 /= 'XYZ' (no se pueden comparar reales con caracteres) I = 3 (es una sentencia de asignación) No confundir el operador lógico relacional de igualdad con el operador de asignación.

Expresiones lógicas combinacionales Las expresiones lógicas combinacionales representan operaciones lógicas entre constantes, variables y otras expresiones lógicas. La evaluación de una expresión lógica combinacional produce un resultado de tipo lógico:.true. o.false. Sintaxis: operando1 OPERADOR_LÓGICO_COMBINACIONAL operando2 operando es una expresión relacional, variable lógica o constante lógica. Operando1 no existe cuando el operador lógico usado es unario. Operador TIPO GNIFICADO.T. Unario Es lo opuesto a operando2.and. Binario Es.true. si y sólo si operando1 y operando2 son.true..or. Binario Es.true. si uno de los dos operandos ES.true..EQV. Binario Es.true. si y sólo si los dos operandos son.true. o los dos operandos son.false..neqv. Binario Es.true. si y sólo si los dos operandos tienen valores distintos

Sea: Expresiones lógicas combinacionales (ejemplos) LOGICAL:: L1=.TRUE., L2=.TRUE., L3=.FALSE. OPERACIÓN RESULTADO.T.L1 L1.AND.L3 L1.OR.L3 L1.AND.L2.OR.L3.FALSE..FALSE..TRUE..TRUE. No es válida la siguiente expresión: 4.AND.3 da error al compilar

Expresiones lógicas combinacionales Precedencias lógicas-aritméticas Mayor Prioridad Menor Combinación de expresiones Mayor Prioridad Menor Operador ( ).T..AND..OR..EQV.,.NEQV. Operador ** *, / +, -.GT.,.GE.,.LT.,.LE.,.EQ.,.NE..T..AND..OR..EQV.,.NEQV. Si una expresión lógica contiene dos o más operadores de la misma precedencia se siguen las siguientes reglas: Cuando tiene paréntesis anidados, éstos se evalúan desde el más interno hasta el más externo. Si hay varios operadores.eqv. y/o.neqv. se evalúan de izquierda a derecha. Operadores aritméticos Operadores lógicos relacionales Operadores lógicos combinacionales

Bloque IF (I) Permite que un bloque de sentencias (puede ser sólo una) sea ejecutado si y sólo si el valor de una expresión lógica es cierta. Si la expresión lógica es falsa se salta ese bloque de sentencias y se ejecuta la siguiente primera sentencia ejecutable. Sintaxis: IF (expresión lógica) THEN bloque de sentencias END IF ENDIF marca la terminación de la sentencia de bloque IF. El bloque de sentencias suele dentarse varios espacios para facilitar la lectura del bloque IF, aunque no es obligatorio hacerlo. La estructura del bloque IF puede ser más complicada. A veces, se quiere ejecutar diferentes bloques de sentencias dependiendo de que otras tantas condiciones sean ciertas. Por ejemplo: IF (expresión lógica 1) THEN bloque de sentencias 1 ELSE IF (expresión lógica 2) THEN bloque de sentencias 2 ELSE bloque de sentencias 3 END IF

Bloque IF (II) La forma general responde a la siguiente sintaxis: IF (expresión lógica 1) THEN bloque de sentencias 1 [ELSE IF (expresión lógica 2) THEN bloque de sentencias 2]... [ELSE bloque de sentencias n] END IF Cuando una expresión lógica es cierta se ejecuta el bloque de sentencias correspondiente y se salta a la primera sentencia ejecutable por debajo de END IF. Cuando todas las expresiones son falsas y el bloque IF incluye la cláusula ELSE se ejecuta su bloque de sentencias. Cuando el bloque IF no incluye la cláusula ELSE y ninguna de las expresiones lógicas sean ciertas no se ejecuta ninguno de los bloques de sentencias dados.

Bloque IF con nombre Es posible asignar un nombre a un bloque IF. La sintaxis general de un bloque IF con nombre es: [nombre:] IF (expresión lógica 1) THEN bloque de sentencias 1 [ELSE IF (expresión lógica 2) THEN [nombre] bloque de sentencias 2] [ELSE [nombre] bloque de sentencias n] END IF [nombre] Es recomendable usar nombres en los bloque IF largos y complicados. Por un lado, el programador estructura mejor los programas y, por otro, el compilador encuentra errores en su código de forma más precisa. Además, los bloques IF pueden estar anidados. Dos bloques IF se dice que están anidados cuando uno de ellos se encuentra dentro de otro. En este caso, cada uno de los bloques IF requiere su propia sentencia ENDIF. Ejemplo [nombre_externo:] IF (expresión lógica 1) THEN bloque de sentencias 1 [nombre_interno:]if (expresión lógica 2) THEN bloque de sentencias 2 END IF [nombre_interno] END IF [nombre_externo]

Ejemplo de bloque IF I (Valor absoluto) Principio IF (expresión lógica 1) THEN bloque de sentencias END IF Leer n n = - n n < 0 n Fin

b r1 = 2a r1 Ejemplo de bloque IF II (Ecuación de 2º grado) Principio Leer a, b y c 2 d = b 4ac d = 0 d > 0 b pr = 2a d pi = 2a pr y pi b + d r1 = 2a b d r2 = 2a r1 y r2 IF (expresión lógica 1) THEN bloque de sentencias 1 [ELSE IF (expresión lógica 2) THEN bloque de sentencias 2] [ELSE bloque de sentencias n] END IF Fin

Ejemplo de IF lógico I (Valor absoluto) Principio IF (expresión lógica 1) sentencia Leer n n = - n n < 0 n Fin

PRECAUCIÓN! TÉNGASE MUCHO CUIDADO AL REALIZAR COMPROBACIONES EN UN IF CON VARIABLES REALES: POR ERROR DE REDONDEO PUEDE TENER RESULTADOS INCORRECTOS. USAR EMPRE VARIABLES ENTERAS

Bloque SELECT CASE El bloque SELECT CASE aparece en Fortran 90/95 como otra forma de controlar, junto con el bloque IF, la ejecución de determinados bloques de sentencias. Su sintaxis general es: El bloque SELECT CASE ejecuta un bloque determinado de sentencias cuando el valor de la expresión caso coincide o pertenece al rango dado de su correspondiente selector de caso. Opcionalmente puede existir un CASE DEFAULT en un bloque SELECT CASE. El bloque de sentencias de este caso por defecto se ejecuta cuando el valor de la expresión caso no coincide con [nombre:] SELECT CASE (expresión caso) CASE (selector de caso 1) [nombre] bloque de sentencias 1 [CASE (selector de caso 2) [nombre] bloque de sentencias 2] [CASE DEFAULT [nombre] bloque de sentencias n] END SELECT [nombre] ningún selector de caso. expresión caso es una expresión entera, lógica o de caracteres. Selector de caso es una lista de uno o más valores posibles del mismo tipo que la expresión caso. Cada selector de caso debe ser mutuamente excluyente. Los valores pueden escribirse como: valor Es recomendable poner nombre a un bloque SELECT CASE cuando sea largo y complicado valormin: valormax : valormax valormin: o una combinación de estas formas separadas por comas.

Bloque SELECT CASE (Ejemplo) Principio Fin 2 no vale b '/' 0. c = a / b Leer a, b y oper otro caso oper = '*' c = a * b '+' '-' c = a - b c = a + b imposible Fin 1 c Fin

Bloque SELECT CASE (Otros ejemplos) Determinar si un número entero entre 1 y 10 es par o impar y visualizar un mensaje adecuado. INTEGER :: temp friocalor: SELECT CASE (temp) CASE (:-1) WRITE (*,*) Por debajo de 0 Celsius CASE (0) WRITE (*,*) Está helando CASE (1:10) WRITE (*,*) Hace frío CASE (11:20) WRITE (*,*) Templado CASE (21:) WRITE (*,*) Hace calor END SELECT friocalor INTEGER :: valor parimpar: SELECT CASE (valor) CASE (1, 3, 5, 7, 9) WRITE (*,*) el valor es impar CASE (2, 4, 6, 8, 10) WRITE (*,*) el valor es par CASE (11:) WRITE (*,*) el valor es demasiado grande CASE DEFAULT WRITE (*,*) el valor es negativo o cero END SELECT parimpar Visualizar un mensaje de acuerdo con el valor de la temperatura dada.

Ejercicio resuelto nº 1 Pedir un número real por teclado y escribir si es positivo o no Principio Leer num POTIVO num > 0 NEGATIVO o CERO Fin

Ejercicio resuelto nº 2 Pedir un número real por teclado y escribir si es positivo, negativo o cero. Principio Leer num POTIVO num > 0 NEGATIVO num < 0 CERO Fin

Ejercicio resuelto nº 4 Principio Leer a, b y c Resolver una ecuación de 2º grado con A, B y C cualquier valor. INDET. c 0 IMPOS. b 0 c r = b r a 0 2 d = b 4ac d = 0 b r1 = 2a d > 0 b + d r1 = 2a b d r2 = 2a b pr = 2a d pi = 2a r1 r1 y r2 pr y pi Fin

Principio Leer nota nota < 5 Susp. nota < 7 Ejercicio resuelto nº 5 Dada una calificación numérica obtener la correspondiente alfabética según la siguiente clasificación: nota < 9 0 Nota < 5 5 Nota < 7 7 Nota < 9 9 Nota < 10 Nota = 10 Suspenso Aprobado Notable Sobresaliente Matricula de Honor Aprob. nota < 10 Notab. Sobres. Mat. H. Fin