Fundamentos de Informática

Documentos relacionados
Estructuras de Control

Estructuras de control

TEMA 4: Programación estructurada

Lección 3 Sentencias de control

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

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

Esquemas repetitivos en Fortran 90

Dobles: Es el caso de la instrucción if-else (punto 1.2).

Tema 3. Estructuras de Datos

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

Tema 3. Estructuras de control

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

6. Estructuras básicas de control 1. Pseudocódigo

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

Programación: Estructuras de Control

Estructuras de control. Dept. Ciencias de la Computación e I.A. Universidad de Granada

TEMA 4. ESTRUCTURAS DE CONTROL

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

ESTRUCTURAS DE CONTROL

Índice general 7. Presentación 15

Esquemas repetitivos en Fortran 90. Esquemas repetitivos en Fortran 90. Esquemas repetitivos en Fortran 90. Tipos de Esquema

TEMA 4: Estructuras de Control

Programación Estructurada

ESTRUCTURA SECUENCIAL ESTRUCTURA SELECTIVA

Sentencias de control de flujo

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

Tema 4. Control de flujo. Programación Programación - Tema 4: Control de Flujo

Estructuras de Programación

Valentín Moreno Programación en FORTRAN ESQUEMA DE SELECCIÓN

Introducción a la Programación

Introducción a la Algorítmica Transparencias correspondientes a las clases impartidas por los profesores: Lourdes Miró Amarante Ignacio García Vargas

Autor: Ing. Nahuel González INTRODUCCIÓN A C. Clase 1

2. Estructuras condicionales

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

Programación. Test Autoevaluación Tema 4

Operadores aritméticos

Palabras reservadas de C++ y C. Una palabra reservada no puede declararse como un identificador, esto haría un conflicto entre conectores y funciones.

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Curso Informática Lección 4. Instrucciones de control

la solución a una ecuación cuadrática solicitando al usuario los términos de dicha ecuación.

1. Detalle de los Comandos:

Estructuras de Control 3

Fundamentos de programación

Tema 06: Estructuras y sentencias de control en C

Introducción a la Programación IV. Estructuras de Control. Orden de ejecución. Transferencia de Control. Transferencia de Control II 12/3/10

Objetivos de la práctica: - Trabajar las estructuras de control repetitivas en la realización de programas.

ESTRUCTURAS REPETITIVAS EN PHP

Introducción a Fortran

Resolución de Problemas y Algoritmos Clase 6: Repetición (continuación)

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

Estructuras de repetición

FUNDAMENTOS PARA LA CONSTRUCCIÓN DEL CÓDIGO A PARTIR DEL ALGORITMO

Parte 4: Estructuras de Control

UNIDAD ACADÉMICA PROFESIONAL TIANGUISTENCO

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

PROGRAMACIÓN CON VBA: MACROS EXCEL Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE

Dados dos números naturales n m 0 se define el número combinatorio n sobre m como

SESIÓN DE EJERCICIOS E1

Repetición Condicional

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

Fundamentos de Programación

LENGUAJE FORTRAN. ESTRUCTURAS Y SENTENCIAS

SESIÓN DE EJERCICIOS E1

INTRODUCCIÓN A FORTRAN 77

Guía práctica de estudio 06: Estructuras de repetición

Repaso Visual Basic Interfaz Gráfica

BREAK: FORZAR SALIDA BUCLES FOR, WHILE, DO EN C. LOOP. STATEMENT NOT WITHIN LOOP OR SWITCH (CU00545F)

ESTRUCTURAS REPETITIVAS

La resolución de problemas es una tarea únicamente humana comprobable en todos los casos con los mismos resultados.

Tema: Estructuras de Selección en C#.

ESTRUCTURAS DE CONTROL

Codificación de Estructuras Repetitivas

Diseño de bases de datos

fundamentos de programación (unidad 4) programación estructurada en Java

ELEMENTOS BÁSICOS PARA LA PROGRAMACIÓN DE FUNCIONES TIPOS DE DATOS. Constantes

Centro Universitario UAEM Zumpango! Ingeniería en Computación! Programación estructurada

Dra. Jessica Andrea Carballido

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Introducción a la. Programación con

Introducción a PL/SQL

1.9. SENTENCIAS DE CONTROL DE PROGRAMA

Trabajo Práctico Nº 4 Iteración

Capítulo 4. Control de flujo. Continuar

Fundamentos de Informática 6. Estructuras de control (y sus algoritmos)

Transcripción:

Fundamentos de Informática Tema 5 Estructuras de Control 1

Contenidos La estructura secuencial La estructura condicional Condicional simple Multicondicional Sentencia SELECT CASE Estructuras de control iterativas Bucles controlados por contador Bucles controlados por condición Bucle DO Implícito 2

Contenidos La estructura secuencial La estructura condicional Condicional Condicional simple Multicondicional Sentencia SELECT CASE Estructuras de control iterativas Bucles controlados por contador Bucles controlados por condición Bucle DO Implícito 3

La estructura secuencial Orden secuencial de ejecución: El que no altera el flujo de control respecto al orden de escritura de las instrucciones. 4 1. PROGRAM ec2grado 2. IMPLICTI NONE 3. REAL:: a, b, c, x1, x2 4. PRINT*,"Dame los coeficientes:" 5. READ*,a,b,c 6. x1=( -b+sqrt(b*b-4*a*c) ) / 2*a 7. x2=( -b-sqrt(b*b-4*a*c) ) / 2*a 8. PRINT*,"Soluciones=",x1," y ",x2 9. END Una tarea es normal tener en cuenta condiciones que decidan sobre el camino que hay que seguir al resolverla. Por ese motivo se utilizan estructuras de control más complejas que la secuencial.

Contenidos La estructura secuencial La estructura condicional Condicional Condicional simple Multicondicional Sentencia SELECT CASE Estructuras de control iterativas Bucles controlados por contador Bucles controlados por condición Bucle DO Implícito 5

La estructura condicional 6

Estructura condicional.f90 IF (<expresión-lógica>) THEN <bloque> ELSE <bloque-else> ENDIF 1. IF (x>4) THEN 2. PRINT*, x, es mayor que 4 3. ELSE 4. PRINT*, x, es menor o igual que 4 5. ENDIF 7

Estructura condicional 1. PROGRAM ec2grado 2. IMPLICIT NONE 3. REAL:: a, b, c, x1, x2 4. PRINT*,"Dame el coeficiente de segundo grado:" 5. READ*,a 6. PRINT*,"Dame el coeficiente de primer grado:" 7. READ*,b 8. PRINT*,"Dame el termino independiente:" 9. READ*,c 10. IF (a.ne.0) THEN 11. x1=( -b+sqrt(b*b-4*a*c) ) / 2*a 12. x2=( -b-sqrt(b*b-4*a*c) ) / 2*a 13. PRINT*,"Soluciones=",x1," y ",x2 14. ELSE 15. x1=-c/b 16. PRINT*,"Solucion=",x1 17. ENDIF 18. END 8

Estructura condicional Simple.f90!LA PARTE ELSE NO ES OBLIGATORIA IF (<expresión-lógica>) THEN <bloque> ENDIF!UNA SÓLA SENTENCIA: IF LÓGICO IF (<expresión-lógica>) <sentencia> 1. IF (Edad > 30) THEN 2. ContMay30 = ContMay30 + 1 3. ENDIF 4. IF (i.ne.0.and. j.ge.9) THEN 5. h=1(2*j+3) 6. k=-h*20 7. ENDIF 8. IF (x.gt.4) y=6 9

Estructura condicional - anidamiento Anidamiento: se pueden incluir condionales unas dentro de otras. 1. IF (x>4) THEN 2. PRINT*, x, es mayor que 4 3. ELSE 4. IF (x<4) THEN 5. PRINT*, x, es menor que 4 6. ELSE 7. PRINT*, x, es igual a 4 8. ENDIF 9. ENDIF 10

Estructura condicional - anidamiento 1. IF (condic_1) THEN 2. inst_1 3. IF (condic_2) THEN 4. inst_2 5. ELSE 6. inst_3 7. ENDIF 8. inst_4 9. ELSE 10. inst_5 11. ENDIF 12. inst_6 condic_1 condic_2 inst_1.true. indistinto inst_2.true..true. inst_3.true..false. inst_4.true. indistinto inst_5.false. indistinto inst_6 indistinto indistinto 11

Estructura condicional - anidamiento 1. IF (nota<5) THEN 2. PRINT*, Suspenso 3. ELSE 4. IF (nota<8)then 5. PRINT*, Aprobado 6. ELSE 7. IF (nota<9) THEN 8. PRINT*, Notable 9. ELSE 10. PRINT*, Matricula 11. ENDIF 12. ENDIF 13. ENDIF 1. IF (nota<5) THEN 2. PRINT*, Suspenso 3. ELSE IF (nota<8) THEN 4. PRINT*, Aprobado 5. ELSE IF (nota<9) THEN 6. PRINT*, Notable 7. ELSE 8. PRINT*, Matricula 9. ENDIF 10. ENDIF 11. ENDIF 12

Estructura multicondicional.f90 IF (<expresión-lógica1>) THEN <bloque1> ELSEIF (<expresión-lógica2>) THEN <bloque2> ELSE <bloque-else> ENDIF 1. IF (x>4) THEN 2. PRINT*, x, es mayor que 4 3. ELSEIF (x<4) THEN 4. PRINT*, x, es menor que 4 5. ELSE 6. PRINT*, x, es igual a 4 7. ENDIF 1. IF (nota<5) THEN 2. PRINT*, Suspenso 3. ELSEIF (nota<8) 4. PRINT*, Aprobado 5. ELSEIF (nota<9) 6. PRINT*, Notable 7. ELSE 8. PRINT*, Matricula 9. ENDIF 13

Sentencia SELECT CASE 14

Sentencia SELECT CASE.f90 SELECT CASE (<expresion>)!expresión tipo ordinal: Lógico, Entero, Carácter!Selector: Un valor:(3) ; Varios :(2,4,6); rango de valores: (3:7), (:5), (5:) CASE (<selector1>) <bloque1> CASE (<selector1>) <bloque1> CASE DEFAULT!! Es opcional, como el ELSE <bloque-def> END SELECT Toda Estructura Mul.Condicional, se puede escribir también: - Con varias condicionales (sin alterna.va) con condiciones compuestas - Con una estructura anidada (condiciones simples) 15

Sentencia SELECT CASE 1. PROGRAM Multicondicional 2. IMPLICIT NONE 3. INTEGER :: x 4. PRINT*, "Dime un número" 5. READ*, x 6. SELECT CASE (x) 7. CASE (1) 8. PRINT*, "x vale 1" 9. CASE (2,3,4) 10. PRINT*, "x vale 2, 3 ó 4" 11. CASE (5:10) 12. PRINT*, "x esta entre 5 y 10" 13. CASE (11:) 14. PRINT*, "x es mayor o igual que 11" 15. CASE DEFAULT 16. PRINT*, "x es menor que 1" 17. END SELECT 18. END 16

Sentencia SELECT CASE 1. PROGRAM Menu 2. IMPLICIT NONE 3. INTEGER :: op 4.! Mostrar menu en pantalla 5. PRINT*, "1 - Listado de alumnos" 6. PRINT*, "2 - Buscar un alumno" 7. PRINT*, "3 - Añadir un alumno" 8. PRINT*, "4 - Borrar un alumno" 9. PRINT*, "5 - Finalizar" 10.! Leer opcion y ejecutar 11. PRINT*, " Que opción quieres ejecutar?" 12. READ*, op 13. SELECT CASE (op) 14. CASE (1) 15. PRINT*, "Has seleccionado listar a los alumnos" 16. CASE (2) 17. PRINT*, "Has seleccionado buscar a un alumno" 18. CASE (3) 19. PRINT*, "Añadirás a alguno" 20. CASE (4) 21. PRINT*, "Cuidado con quien borras" 22. CASE (5) 23. PRINT*, "Hasta la próxima" 24. CASE DEFAULT 25. PRINT*, "Te has equivocado" 26. END SELECT 27. END 17

Ejemplo ecuación segundo grado 1. PROGRAM ec2grado 2. IMPLICTI NONE 3. REAL:: a, b, c, x1, x2, raiz 4. PRINT*,"Dame los coeficientes:" 5. READ*,a,b,c 6. raiz=b**2-4*a*c 7. IF (a==0) THEN 8. IF (b/=0) THEN 9. x1=-c/b 10. PRINT*, "Ecuacion grado 1 con solucion=",x1 11. ELSE 12. PRINT*, "Ecuacion sin sentido",c, "=0" 13. ENDIF 14. ELSE 15. IF (raiz<0) THEN 16. PRINT*, "Ecuacion sin soluciones reales 17. ELSE 18. x1=( -b+sqrt(raiz) ) / 2*a 19. x2=( -b-sqrt(raiz) ) / 2*a 20. PRINT*,"Soluciones=",x1," y ",x2 21. ENDIF 22. ENDIF 23. END 18

Contenidos La estructura secuencial La estructura condicional Condicional Condicional simple Multicondicional Sentencia SELECT CASE Estructuras de control iterativas Bucles controlados por contador Bucles controlados por condición Bucle DO Implícito 19

Estructuras de control iterativas 1. PROGRAM Media! Cálculo de la media de 5 valores 2. IMPLICIT NONE 3.! Declaración de variables 4. REAL :: v, tot, med 5. tot = 0 6.! Leemos 5 datos por teclado y los vamos acumulando 7. PRINT*, "Dame 5 números reales" 8. READ*, v 9. tot = tot + v 10. READ*, v 11. tot = tot + v 12. READ*, v 13. tot = tot + v 14. READ*, v 15. tot = tot + v 16. READ*, v 17. tot = tot + v 18.! Calculamos e imprimimos la media 19. med = tot / 5.0 20. PRINT*, "La media es ",med 21. END 20

Estructuras de control iterativas 1. PROGRAM Media2 2. IMPLICIT NONE 3.! Cálculo de la media de 5 valores 4.! Declaración de variables 5. REAL :: v, tot, med 6. tot = 0 7.! Leemos 5 datos por teclado y los vamos acumulando 8. PRINT*, "Dame 5 números reales" 9. REPITE 5 VECES: 10. READ*, v 11. tot = tot + v 12. FIN-REPETIR 13.! Calculamos e imprimimos la media de los 5 datos 14. med = tot / 5.0 15. PRINT*, "La media es ",med 16. END 21

Estructuras de control iterativas 1. PROGRAM Media3 2. IMPLICIT NONE 3.! Cálculo de la media de N valores leidos por teclado 4.! Declaración de variables 5. REAL :: v, tot, med 6. INTEGER :: N 7. PRINT*, "Dime cuántos números vamos a procesar" 8. READ*, N 9. tot = 0 10.! Leemos N datos por teclado y los vamos acumulando en tot 11. PRINT*, "Dame ",N," números reales" 12. REPITE N VECES: 13. READ*, v 14. tot = tot + v 15. FIN-REPETIR 16.! Calculamos e imprimimos la media de los N datos 17. med = tot / N 18. PRINT*, "La media es ",med 19. END 22

Bucles controlados por contador DO <varcont>=<exprini>,<exprfin> [,<exprinc>].f90 END DO <Bloque> donde: <varcont> es una variable de tipo entero <exprini> es una expresión (de tipo entero) que indica el primer valor de la variable <varcont> <exprfin> es una expresión (de tipo entero) que indica el último valor que ha de tomar <varcont> <exprinc> es una expresión (de tipo entero) que indica el incremento de la variable <varcont> en cada iteración del bucle. Expresión opcional, cuando se omite se asume que vale 1. Obviamente, no puede tomar el valor 0 en ningún caso. <Bloque> es el ámbito del bucle (el bloque de instrucciones que se ejecuta en cada iteración). 23

Bucles controlados por contador 24

Bucles controlados por contador 1. PROGRAM QueSalida 2. IMPLICIT NONE 3.! Declaración de variables 4. INTEGER :: N, i, k 5. N = 0 6. DO i=1,2,1 7. DO k=5,1,-2 8. N = N + i + k 9. END DO 10. END DO 11. PRINT*, "N vale ",N 12. END 25

Bucles controlados por contador 1. PROGRAM Iteraciones 2. IMPLICIT NONE 3. INTEGER :: c1,c2,c3,c4 4. DO c1=30, 1, -2! Bucle 1 5. PRINT*,c1 6. ENDDO 7. DO c2=30, 1, 2! Bucle 2 8. PRINT*,c2 9. ENDDO 10. DO c3=1, 30! Bucle 3 11. PRINT*,c3 12. ENDDO 13. DO c4=30, 1! Bucle 4 14. PRINT*,c4 15. ENDDO 16. PRINT*,"c1=",c1,"c2=",c2,"c3=",c3,"c4=",c4 17. END 26

Bucles controlados por contador 1. PROGRAM Test 2. IMPLICIT NONE 3. INTEGER :: a,c 4. c=5 5. DO a=1,c 6. c=c-1 7. PRINT*,a,"",c 8. ENDDO 9.!! Aunque C se modifique dentro, se 10.!! hacen todas las iteraciones 11.!! A no se puede modificar en el Bucle 12. END 27

Bucles controlados por condición Y si, en lugar de ejecutar el bloque un número predefinido de veces, controlamos su ejecución en relación con una determinada condición?.f90.f90 28

Bucles controlados por condición.f90 DO WHILE <condición> END DO <Bloque> donde: <condición> es la condición (expresión lógica) que se comprueba en cada iteración. <Bloque> es el bloque de instrucciones que se ejecuta en cada iteración. ES EL BUCLE MAS GENERAL. TODOS OTROS BUCLES SE PUEDEN ESCRIBIR DE ESTA FORMA Condición: Inicializar ANTES de Evaluarla Modificar DENTRO del Bucle Valores de las Variables son válidos Después Bucle Puede no ejecutarse nunca 29

Bucles controlados por condición 1. PROGRAM Divisores 2. IMPLICIT NONE 3.! Calcular los divisores de un número 4.! Declaración de variables 5. INTEGER :: c,n 6.! Leer número por teclado 7. PRINT*, "Dime un número" 8. READ*, n 9.! Calcular divisores e ir escribiéndolos en pantalla 10. PRINT*, "Los divisores son:" 11. c = n 12. DO WHILE (c>0) 13. IF (MOD(n,c).EQ.0) PRINT*, c 14. c = c - 1 15. ENDDO 16. END 30

Bucles controlados por condición 1. PROGRAM Factorial_1 2. IMPLICIT NONE 3.! Cálculo del factorial de un número 4.! Declaración de variables 5. INTEGER :: f,n,c 6.! Leer el número 7. PRINT*, "Dime un número«8. READ*, n 9.! Calcular el factorial 10. f = 1 11. c = 1 12. DO WHILE (c<n) 13. c = c + 1 14. f = f * c 15. ENDDO 16.! Escribir resultado 17. PRINT*, "El factorial es ",f 18. END 31

Bucles controlados por condición 1. PROGRAM Factorial_2 2. IMPLICIT NONE 3.! Cálculo del factorial de un número 4.! Declaración de variables 5. INTEGER :: f,n,c 6.! Leer el número 7. PRINT*, "Dime un número" 8. READ*, n 9.! Calcular el factorial 10. f = 1 11. DO c=1,n 12. f = f * c 13. ENDDO 14.! Escribir resultado 15. PRINT*, "El factorial es ",f 16. END 32

Bucles controlados por condición: REPITE HASTA (Con Do While) El bucle REPITE HASTA no existe en Fortran, pero se puede implementar. Se ejecuta siempre una vez al menos. La condición se evalúa después (POSTEST).f90.f90 REPITE Acciones HASTA (Condición) REPITE MIENTRAS (No Condicion) Acciones FINREPITE!! Entrar la primera vez 33

Bucles controlados por condición: REPITE HASTA (Con Do While) 1. REAL:: Nota = 11 2. CHARACTER (25):: Alum 3. DO WHILE (Nota < 0.or. Nota > 10) 4. PRINT*, Introduce alumno y nota 5. READ*, Alum, Nota 6. ENDDO 7. PRINT*, La nota de `, Alum, es, Nota Inicializar la condición para que la primera vez se entre en el bucle (antes del bucle). 34

Bucle DO Implícito.f90 ( <lista_expr>, <var>=<ini>,<fin>,<inc> ) donde: <lista_expr> es una lista de expresiones separadas por comas <var> es una variable que se utiliza como contador <ini>es una expresión (de tipo entero), primer valor de la variable <var> <fin> es una expresión (de tipo entero), último valor que ha de tomar <var> <inc> es una expresión (de tipo entero), incremento de la variable <var> en cada iteración del bucle. SE USA SOLO CON READ O PRINT 1. PRINT*, "Listado = ", (I, I=1,7,2) 2. PRINT*, (" 3x",I,"=", 3*I, I=1,10) 35