program introduccion !///////////////////////////////////////////////////////// !// DECLARAION DE VARIABLES Y TIPOS DE DATO // !// Las expresiones más simples en Fortran son las // !// variables. Una "variable" es una expresion de un // !// "tipo de dato". Se define por un "nombre" y un // !// contenido o "valor" que puede ser alterado en el // !// programa luego. // !///////////////////////////////////////////////////////// real aReal ! declaracion de un real real :: real1 ,real2 ! declaracion de varios reales integer :: anInt = 5 ! declaro e inicializo un entero complex :: aComplex = (1.0,1.2) ! declaro e inicializo un complejo integer,parameter :: const = 5 ! Si agrego el atributo "parameter" luego del ! tipo de dato, defino una "constante", no puedo ! modificarla luego en el programa integer,parameter :: maxInt = const*5 ! puedo definir una const. en base a otra logical :: aBool = .true. ! defino la variable boolean de nombre "aBool" y la ! inicializo on el valor ".true." character aChar ! defino un var de tipo caracter, de un solo caracter character(len=5) :: char='12345' ! defino un caracter de tamano 5 ! declaro, inicializo algunas vars para prueba integer :: i,j,k real :: x, y=8 , z=3 logical :: bool , bool1 , bool2 print*, print*, "ESTE PROGRAMA ES UNA INTRODUCCION A: " print*, " EXPRESIONES, SENTENCIAS y CONTROL DE FLUJO" print*; print*; !///////////////////////////////////////////////////////// !// SENTENCIA DE ASIGNACION Y OPERADORES // !// Se pueden construir expresiones más complejas, en // !// en base a asignaciones y operadores aritmeticos // !// y operadores relacionales // !///////////////////////////////////////////////////////// !--- El operador o sentencia de asignación, asigna una expresion a una variable --- k = i + j ! Operador de asignacion ! Tambien es valido lo siguiente a una var, una expresion que la contiene k = k+2 !--- Operadores aritmeticos --------------------------------------- x = y+z ! suma x = y-z ! resta x = y*z ! multiplicacion x = z/y ! si y,z son enteros la division es entera !--- Operadores relacionales --------------------------------------- bool = z < y ! bool es TRUE si z < y, sino es FALSE bool = z > y ! " TRUE si z > y, " bool = z == y ! " TRUE si z es igual a y, sino FALSE bool = z <= y ! " TRUE si z es igual o menor a y bool = z >= y ! " TRUE si z es igual o mayor a y bool = z /= y ! " TRUE si z es distinto de y ! Algunos ejemplos de expresiones relacionales: print*, "---- EJEMPLO DE EXPRESIONES RELACIONALES ----" print*, print*, "La expresion relacional",z,"<",y,"devuelve:", z<y print*, print* !--- Opeardores logicos ------------- ! Inicializo algunas vars booleanas: bool1 = .true. bool2 = .false. bool = .not.bool1 !Niega a bool1 bool = bool1.and.bool2 !Es TRUE si ambas lo son bool = bool1.or.bool2 !Es TRUE si alguna lo es print*, "---- EJEMPLO DE EXPRESION LOGICA ----" print*, print*, "bool1 =T , bool2 =F , bool1.OR.bool2=",bool print*, print*, !///////////////////////////////////////////////////////// !// CONDICIONALES Y CONTROL DE FLUJO // !// El control de como se ejecutan las instrucciones // !// una tras otra, se da por: el "condicional IF" que // !// permite bifurcar la ejecucion en una o mas posi- // !// -dades y por los "bucles (loops)" "do" // !///////////////////////////////////////////////////////// !--- El condicional if tiene la sintaxis: ------ !| if (expresion-logica) then | !| bloque de sentencias | !| else | !| bloque de sentencias | !| end if | !----------------------------------------------- print*, "---- EJEMPLO DE CONDICIONAL ----" print* print*, "Si x=8, y=3, evalúo la condicion (x<y), dependieno de " print*, "si es True o False, imprimo un mensaje u otro: " print* x = 8 y = 3 if (x < y) then print*, "x es menor que y, la condicion es cierta" else print*, "x no es menor que y, la condicion es falsa" end if print*; print*; !--- la sentencia "do" para efectuar un bucle (loop) es: ------- !| do var = expr-num1,expr-num2,expr-num3 | !| bloque de sentencias | !| end do | !--------------------------------------------------------------- !--- la sentencia "do" para una iteracion condicional ---------- !| do while (expr-logica) | !| bloque de sentencias | !| end do | !--------------------------------------------------------------- ! Ejemplo1: Imprimir en pantalla todos los numeros de 1 al 10 print*, "--- EJEMPLO DE ITERACION DADA POR UN RANGO ---" print*, do i = 1,10 print*, "Estoy imprimiendo la iteración:",i end do print*, print*, !Ejemplo2: Inicialmente x=1 e y=7, evaluo la condicion (x<y), si es TRUE ! itero e imprimo un mensaje, sino salgo de la iteracion. En cada iteracion ! modifico incremento x y decremento y print*,"--- EJEMPLO DE ITERACION CONDICIONAL ---" print*; x = 1 y = 7 do while (x < y) print*,x,"es menor que",y x = x+1 y = y-1 end do end program introduccion