Introducción a Fortran

Documentos relacionados
LENGUAJE FORTRAN. FUNCIONES Y SUBRUTINAS

Subprogramas en Fortran 90. Seminario de Computación 2009

Diseño Computarizado 15023

Índice general 7. Presentación 15

Análisis y Programación

Funciones y subrutinas

LENGUAJE FORTRAN. ESTRUCTURAS Y SENTENCIAS

Esquemas repetitivos en Fortran 90

Estructuras de Control

GLOSARIO 1. Qué es bit y byte? Bit: Es la unidad mínima de información. Puede ser 0 o 1. Byte: Es el conjunto de 8 bits. Ejemplo:

Algorítmica y Lenguajes de Programación. Ficheros

Tema 5. Soporte lógico de computadoras.

Ficheros. Introducción. Apertura y cierre de ficheros

Capítulo 3. Subprogramas. 3.1 Subprogramas FUNCTION

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

Apunte Laboratorio ALPI - El lenguaje de programación Pascal

Introducción a la Programación

Operadores aritméticos

Índice general. Capítulo 1 Conceptos básicos. Capítulo 2 Controles básicos I. Pág. N. 1

Conceptos. Generales ALGORITMOS

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

MODULO II PROGRAMACIÓN ORIENTADA A EVENTOS

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

TEMA 4: ALGORITMOS Y PROGRAMAS

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

Programación en Lenguaje C

Introducción al lenguaje C

Algorítmica y Lenguajes de Programación. Punteros Introducción a estructuras dinámicas

Estructuras de control

1. ESTRUCTURA DE UN PROGRAMA PASCAL Todo programa escrito en lenguaje Pascal, del más simple al más complejo, tiene la siguiente estructura:

INTRODUCCIÓN A LA PROGRAMACIÓN. 1º Bachillerato

PROGRAMACIÓN I. Grupo Lunes Miércoles 4PV1 14:00-16:00 14:00-15:00

GENERACIÓN DE CÓDIGO ORIENTADO A OBJETOS

Estructuras de repetición

Elementos de un programa en C

Fundamentos de Informática 4. Primeros Programas, Primeros Diseños

INTRODUCCIÓN A FORTRAN 77

Objetivos. 1. Realizar exitosamente programas que involucren procesos que requieran iteraciones. Antecedentes

Programación Estructurada

Fundamentos de Programación

Introducción a c++ Introducción a la programación EIS Informática III

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

Algorítmica y Lenguajes de Programación. Declaración de variables Sentencias de entrada/salida

TECNOLOGÍA ROBÓTICA. TEMA 6. CONTROL POR ORDENADOR.

Repaso Visual Basic Interfaz Gráfica

WHILE Y DO WHILE BREAK EN LENGUAJE C. BUCLES MIENTRAS. FORZAR SALIDA O TERMINACIÓN. EJEMPLO (CU00534F)

Capítulo 9 ESTRUCTURA DE UN ALGORITMO. Presentación resumen del libro: "EMPEZAR DE CERO A PROGRAMAR EN lenguaje C"

Autoestudio 2: Variables y Operadores

Pseudocódigo. Se puede ejecutar en un computador, por medio de un IDE (pie de página: Entorno de desarrollo integrado).

Diseño descendente. Su ejecución se controla desde alguna otra unidad de programa (que puede ser el programa principal u otro procedimiento externo).

EXAMENES RESUELTOS DE PROGRAMACION I

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

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 (;)

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

Manual de turbo pascal

Es un lenguaje estructurado, tiene una abundante cantidad de operadores y tipos de datos.

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

FUNDAMENTOS DE INFORMÁTICA

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

Aproximación discreta de mínimos cuadrados con lapack

Estructura de Datos Unidad 1: Repaso del Lenguaje Java

Introducción a PL/SQL

Capítulo 3 CICLO DE VIDA DE UN PROGRAMA. Presentación resumen del libro: "EMPEZAR DE CERO A PROGRAMAR EN lenguaje C"

INTRODUCCIÓN A LOS LENGUAJES DE PROGRAMACIÓN (WIN-LOGO)

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

Introducción al lenguaje C

FUNDAMENTOS DE INFORMÁTICA

FUNDAMENTOS DE OBJECT PASCAL

Sentencias iterativas

Tema 2. Concepto de Algoritmo

TECNICO SUPERIOR EN INFORMÁTICA EMPRESARIAL MÓDULO INTRUCCIONAL

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

Ciclo de Vida del Software

ALGORITMOS II PSEUDOCODIGOS INTRODUCCION AL PSEINT CORPODICES VICTOR ANDRES OCHOA CORREA

PHP: Lenguaje de programación

Capítulo 3. Introducción a la programación. Continuar

Fundamentos de Informática

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

Descripción de un Programa

Tema 1 INTRODUCCIÓN A LOS LENGUAJES DE PROGRAMACIÓN

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

CIF 2452 Fundamentos de Programación

III. Generación de Código orientado a objetos

Programación estructurada. Programación estructurada

Algoritmo, Estructuras y Programación I Ing. Marglorie Colina

UNIDAD 7 Recursividad Concepto. Algoritmos recursivos. Seguimiento de la recursión. Algunos métodos recursivos de búsqueda y ordenación: M-Sort y

CÁTEDRA DE MÉTODOS NUMÉRICOS

Introducción al lenguaje C

Primeros pasos programando en Python

GUÍA DE TRABAJO N 1 C# Ing. Néstor Raúl Suarez Perpiñan Página 1 de 13

Programación en C. Guía de Estilo

TEMA 2. LENGUAJE C. CONCEPTOS BÁSICOS Y PROGRAMACIÓN ELEMENTAL.

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

Tema 3. Estructuras de control

: Algorítmica y Estructura de Datos I

LENGUAJES DE PROGRAMACIÓN. Solución al Ejercicio de Autocomprobación 1

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Programación en Mathematica

Transcripción:

mario.merino@upm.es Escuela Técnica Superior de Ingenieros Aeronáuticos Universidad Politécnica de Madrid 4 de marzo de 2011

Índice Introducción 1 Introducción 2 3 4 Fin?

Qué es programar? Un ordenador es una herramienta enormemente tonta, pero increíblemente rápida Programar es dar instrucciones de forma secuencial a un ordenador para que realice por nosotros una tarea. El ordenador sólo entiende instrucciones en forma de unos y ceros (código máquina). No queremos escribir en binario: nos inventamos lenguajes de programación Nosotros escribimos nuestro código o algoritmo en un lenguaje, y un programa (compilador) se encarga de traducirlo a código máquina (.exe ). Cada lenguaje tiene su sintaxis y vocabulario propio. El compilador no admite fallos ni ambigüedades.

Estructura de un programa en Fortran Fortran (de formula translation ) es el lenguaje científico e ingenieril por excelencia. Se inventó por y para el cálculo numérico. Un programa en Fortran es una lista secuencial y finita de instrucciones. El programa empieza y termina siempre así: Fortran no distingue entre mayúsculas y minúsculas, e ignora espacios y líneas en blanco extra. program nombre_del_programa! Declaración de variables! Instrucciones SECUENCIALES! Esto es un comentario end program nombre_del_programa

El entorno de desarrollo Para escribir el código de un programa, sirve cualquier editor de texto. Pero mejor utilizar una herramienta especializada!

Index Introducción 1 Introducción 2 3 4 Fin?

Tipos y declaración I Una variable es un nombre al que le asociamos un número o dato, para poder referirnos a él en el código de forma genérica. Hay que declarar cada variable en la parte inicial del programa, para que el compilador sepa que existe y de qué tipo es. Existen varios tipos de variables: enteras: integer reales, precisión simple: real*4 reales, precisión doble: real*8 Otros tipos (character, logical...)

Tipos y declaración II Se declaran así: program nombre_del_programa implicit none! ponedlo SIEMPRE integer :: i, n real*4 :: s, temp real*8 :: h, x, y end program nombre_del_programa

Asignación de valores y uso I Una vez las variables han sido declaradas, se les puede dar un valor con el operador asignación = : integer :: n real*4 :: x, h real*8 :: y n = 34 h = 4.91234 x = 5.! Los reales SIEMPRE con punto o exponente (1e0) y = 1d0! El exponente con d se utiliza para doble precisión

Asignación de valores y uso II Una variable se puede sobreescribir cuantas veces se desee, y utilizar en operaciones y funciones: x = x + x + 124.5d0 - cos(x) Este ejemplo calcula x + x + 124.5 cos (x), y después lo guarda en la variable x, olvidando su valor anterior. Fortran NO tiene constantes físicas ni matemáticas de serie. Hay que escribirlas cada vez. Un buen truco para tener el número π es usar: pi = acos(-1d0)

Index Introducción 1 Introducción 2 3 4 Fin?

Operadores algebraicos (+,-,*,/,**) Suma, resta, producto, cociente y potencia se escriben así: +, -, *, /, **. La potencia tiene prioridad sobre producto y cociente, y estos sobre suma y resta. Se pueden usar paréntesis para establecer el orden de las operaciones: 5.+2.*4.**(-3) es distinto de ((5.+2.)*4.)**(-3) OJO! EL COCIENTE DE ENTEROS PRODUCE COMO RE- SULTADO UN ENTERO. SI SE QUIERE UN RESULTADO REAL, NO OLVIDAR EL PUNTO NUNCA (o usar DBLE). x = 2/3! El resultado es 0 x = 2./3.! El resultado es 0.66666... x = dble(2)/dble(3)! El resultado es 0.66666...

Leer y escribir por pantalla Se puede escribir cualquier cosa por pantalla usando: write(*,*) Hola. El valor de x es:, x Se puede pedir al usuario que introduzca por teclado un valor n con: read(*,*) n

Funciones matemáticas de serie Algunas funciones sólo funcionan con reales real*4 y real*8.

Ejemplo 1: raíz Introducción Practicamos declaración y uso de variables, read y write, y funciones intrínsecas. program ejemplo1 implicit none integer :: n real*8 :: raiz write(*,*) Por favor, introduzca un numero n read(*,*) n raiz = sqrt(dble(n)) write(*,*) El numero introducido es:, n write(*,*) Su raiz cuadrada es:, raiz end program ejemplo1

Index Introducción 1 Introducción 2 3 4 Fin?

Ejecución condicional (if) A veces interesa que una parte del código sólo se ejecute si se verifica una condición. Por ejemplo, si el número n introducido en el ejemplo anterior es negativo, nos gustaría avisar al usuario. Esto puede hacerse con la construcción: if (condición) then... else... end if: write(*,*) Por favor, introduzca un numero n read(*,*) n if (n<0) then write(*,*) Atencion: el numero es negativo else raiz = sqrt(dble(n)) end if

Condiciones Introducción Las condiciones van entre paréntesis. Los operadores de comparación son <, >: menor y mayor que <=, >=: menor o igual y mayor o igual que ==: igual que /=: distinto que Se pueden construir condiciones más complicadas con los operadores lógicos.and.,.or.,.not.: (x<-3..or. x>=7.)

Index Introducción 1 Introducción 2 3 4 Fin?

Tareas repetitivas (do) I Cuando se quiere hacer una operación muchas veces (o un número indeterminado de veces), es muy útil emplear bucles do. do i=1,10 write(*,*) Esta es la iteracion numero, i end do El código comprendido entre el do y el end do se ejecuta tantas veces como se especifique (10) Un bucle do posee un contador (i). El contador va desde el valor inicial hasta el final, de uno en uno.

Tareas repetitivas (do) II La variable contador (i) se puede utilizar en nuestras operaciones si queremos. s = 0 do i=1,10 s = s + i**2 end do En general, se puede especificar también el incremento del contador: do i=20,0,-2 (ve desde i=20 hasta i=0 de -2 en -2). Se pueden anidar varios bucles uno dentro de otro (ver ejercicios).

Ejemplo 2: sumatorios Se realizan con una variable de acumulación, que hay que poner a cero inicialmente. En cada iteración se suma sobre ella la expresión deseada. En este ejemplo, s = n i=1 i: program ejemplo2 implicit none integer :: n, i real*8 :: s write(*,*) Por favor, introduzca un numero n read(*,*) n s = 0d0! Ponemos a cero la variable de acumulación do i=1,n s = s + i! Acumulamos el valor a sumar end do write(*,*) El sumatorio es:, s end program ejemplo2

Ejemplo 3: productos También con variable de acumulación, que hay que poner a uno inicialmente. En cada iteración se multiplica con la expresión deseada. En este ejemplo, s = n i=1 i: program ejemplo3 implicit none integer :: n, i real*8 :: p write(*,*) Por favor, introduzca un numero n read(*,*) n p = 1d0! Ponemos a uno la variable de acumulación do i=1,n p = p * i! Acumulamos el valor del producto end do write(*,*) El producto es:, p end program ejemplo3

Index Introducción 1 Introducción 2 3 4 Fin?

Subprogramas Introducción A veces queremos reutilizar un trozo de código en múltiples ocasiones para realizar una misma tarea en distintos lugares de nuestro programa. Las funciones y subrutinas son trozos de código (programas independientes) que pueden ser ejecutados desde el programa principal en cualquier momento. Tienen la misma estructura que un programa. Son cajas negras: mi programa las llama con unos argumentos de entrada, y recibe unos argumentos de salida, sin preocuparse de lo que sucede en ellas. Se escriben fuera del programa principal.

Funciones I Introducción Se escriben entre las instrucciones function y end function. Hay que declararlas en el programa principal como una variable con el atributo external. Devuelven el valor asignado al nombre de la función. Hay que declarar el nombre de la función dentro de la función (no deja de ser una variable más). Una vez creadas, se usan igual que las funciones intrínsecas: e.g.: x = 1. + f(x) * 2.6.

Funciones II Introducción program main implicit none real*8, external :: f write(*,*) f(3.52) end program main function f(x) implicit none real*8 :: f, x f = x**2 +log(x) end function f

Subrutinas I Introducción Se escriben entre las instrucciones subroutine y end subroutine. No hay que declararlas en el programa principal si están en el mismo archivo de texto. Trabajan sobre los argumentos que se les entrega, que pueden ser de entrada, de salida, o de entrada/salida. No hay que declarar su nombre dentro de la subrutina (el nombre no es variable) Se llaman desde el programa principal con la instrucción call: e.g.: call mi_sub(x,y,z)

Subrutinas II Introducción program main implicit none call mi_sub(x,y) write(*,*) y end program main subroutine mi_sub(a,b) implicit none real*8 :: a, b end subroutine mi_sub

Ejercicio guiado 1 Se desea elaborar un programa que pida al usuario un número entero n, y que a partir de él calcule r = 3 n + n, el sumatorio y el factorial n S = i 2 = 1 2 + 2 2 +... + n 2, i=1 n P = n! = i = 1 2 3... n. i=1

Ejercicio guiado 2 Encapsular el código anterior dentro de una subrutina, que sea llamada desde el programa principal para los siguientes valores n: n = 1, 7, 15, 4 Qué sucede en el último caso?

Ejercicios Número 17 (cálculos sencillos) Número 31 (funciones intrínsecas). Intentad encapsular el código en funciones después. Número 46, apartados d), f), i) (bucles) Número 90 (funciones)

Index Introducción Fin? 1 Introducción 2 3 4 Fin?

Fin? Desde luego que no es el fin! Fortran es ampliamente extenso. Os animo a que primero dominéis estos rudimentos, y que según os surja la necesidad, ampliéis vuestro conocimiento de Fortran. En concreto: Vectores y matrices (arrays). Escribir con formato; escribir y leer archivos. Sentencias exit, select case, do while. Argumentos opcionales de las sentencias read, write. Opciones de Plato y cómo usar el debugger. con atributo allocatable, pointer. Modules, interfaces, estructuras.

Fin? Cómo continuar Para más información: Introducción a FORTRAN 90, J.J. Sánchez y C. Vázquez. Ayuda de Plato Fortran 95 language overview. Libros y manuales de Fortran (biblioteca). Búsquedas en internet. Cualquier duda: mario.merino@upm.es (o subid al departamento).

Fin? Imprescindibles No olvidar NUNCA el punto. en real*4 y d en real*8. Usar SIEMPRE implicit none. Leer COMPLETAMENTE los errores del compilador: nos dicen cómo resolverlos. Hacer los bucles do con contadores INTEGER. No hacer líneas demasiado largas. Fortran sólo lee hasta la columna 132 (continuar línea con &). Escribir códigos profusamente comentados (!)