Beruflich Dokumente
Kultur Dokumente
CONTENIDO:
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Antecedentes / Normas / Estructuras del programa / estructuras de entrada y salida Secciones Declaracin Ejecucin Terminacin Datos, Carcter, Constante,Variable, Instrucciones De Asignacin Notacin Exponencial y Cientfica Constantes, Cdigo ASCII, Caracter, Lgico Variables Implcitas, Parmetros, Operadores Aritmticos Reglas y pasos en programacin y con expresiones. Operaciones Alfa Numricas Comandos Write, Read Funciones Abs, NINT, SQRT, LOG10, LOG, Exp, Mod Funciones Trigonomtricas Funciones Hiperblicas Funciones Random, INT
Pregunta Gua
Qu se entiende por la estructura gua de un programa en Fortran 90-95?
23
Sesin Presencial:
FORTRAN (Formula Translation) FORTRAN es el lenguaje mayormente utilizado en el mundo de sper computadoras y es el antecesor de los lenguajes cientficos, se desarroll en 1954 y 1957 y desde entonces ha ido evolucionando. Las versiones siguientes del FORTRAN como FORTRAN II, III, IV, MASTER, USASI, 77, etc. mantienen caractersticas de versiones anteriores para su compatibilidad con ellas, al igual stas versiones van captando caractersticas obsoletas para procurar no usarse en nuevas versiones. FORTRAN es un lenguaje con 86 smbolos y es insensible a maysculas y minsculas. FORTRAN es un lenguaje que consta en dos tipos bsicos de enunciados, los enunciados ejecutables y los no ejecutables. Los enunciados ejecutables describen las acciones que el programa haga (suma,resta multiplicacin, divisin).Mientras que los enunciados no ejecutables proveen informacin necesaria para el funcionamiento del programa. FORTRAN 90/95 tiene entrada libre de enunciados por columna pero an tiene compatibilidad con versiones anteriores. En la versin moderna un enunciado puede colocarse en cualquier lugar de la columna, consta de 132 caracteres pero puede continuarse al poner smbolo & al terminar la lnea. Un programa de FORTRAN se divide en tres secciones. Seccin de Declaracin: La cual tiene el nombre del programa, nmero y tipo de variables. (Todos son enumerados enunciados no ejecutables). Seccin de Ejecucin: Es uno o ms enunciados que describen las acciones del programa. Seccin de Terminacin: Enunciados que terminan la ejecucin del programa. Los comentarios pueden ser ingresados en cualquier lugar del programa, antecedindoles el smbolo de admiracin ! Al programar hay constantes, las cuales no cambia su valor durante el programa y tambin hay variables, Las cuales pueden ser alfa numrica utilizando el guin bajo debe de comenzar con una letra y tener hasta 31 caracteres. Tambin se debera de incluir un diccionario de informacin al comienzo del programa para la definicin de variables, aunque es ms conveniente nombrarlas con lo que represente y apoyarse con los comentarios a travs del programa. FORTRAN tiene 5 tipos de constantes y variables, de las cuales tres son numricas: Enteras, Real, y Complejas, una Lgica y una de Caracteres. Cuando una variable empieza con las letras I J K L M N, es definida el sistema automticamente las acomoda como Enteras por declaracin las asignas como real. Algo recomendable es ser consistente con las variables. Cuando se declara una variable como real, constante, entera, etc. Durante el transcurso de nuestro proceso no cambiar su forma, a menos que as se llegue a expresar por medio de un comando que una vez ejecutado, el modo de la variable regresar a como fue declarada inicialmente, (de esto se vern ejemplos captulos mas adelante). El orden de operacin en algn problema se resuelve la base a la jerarqua de operaciones, en modo real hay que usar un punto despus de la cifra para poder utilizar algn signo de operacin. El modo mixto de operacin es una herramienta muy til ya
24
que cuando se requiere hacer una operacin entre enteras y reales es la nica manera de lograrlo aunque esta forma puede llegar a dar resultados engaosos. Hay dos tipos de operadores lgicos: los relacionales y los de combinaciones. Dentro de los relacionales solo se puede hacer dentro del mismo tipo de variables. Para hacer que los operadores de combinacin funcionen se le debe ingresar como un valor lgico ya sea verdadero o falso, ya que si se les ingresan valores numricos marcar error. Las variables de caracteres pueden dividirse en sub. cadenas en las cuales se abre una nueva variable y puede tomar el valor de solo algunas de las partes de una cadena (string) las cuales pueden ser utilizados para manipular y modificar los anteriores o bien para formar largas cadenas utilizando dos diagonales. Al utilizar variables de tipo string en operaciones relacionales, los caracteres toman el valor que tiene asignado en el teclado. Dentro de los clculos matemticos FORTRAN ya tiene incluidas algunas funciones que se utilizan comnmente, en dado caso de necesitarse algunas otras ms complejas se les ingresar manualmente valores de entrada, se les llama argumentos. Hay funciones genricas y funciones especficas. Las genricas pueden usar ms de un tipo de informacin de entrada mientras los especficos requieren cierto tipo de entrada y producen una salida especfica. Las entradas con orientacin a lista es un elemento prctico ya que despus de haber definido el tipo de variables al leerlas las ordena y las categoriza a su vez. De igual manera las salidas orientadas a lista muestran los resultados con el formato que tenan. Algo recomendable para la utilizacin de variables es la de inicializarlas antes de su uso, esto se puede hacer asignndole el valor ya sea al declararlas, durante el programa o bien leyndolas al utilizarla el usuario, ya que de otra manera se le asigna un valor arbitrariamente generar error. El IMPLICIT NONE es una herramienta muy til que ayuda a localizar errores en ves de obtener resultados errneos. Una de las partes ms importantes de hacer un programa es la de eliminar los errores cuando se le conoce como the bug (fallas). Hay tres tipos de errores el primero es el de sintaxis. Este error es acusa de mala escritura y puntuacin. Otro error es el run-time (De tiempo de ejecucin), ste es cuando se efecta una operacin matemtica ilegal, por ejemplo cuando se divide entre cero. El otro tipo de error lgical error (error lgico), ste sucede cuando el programa compila y ejecuta satisfactoriamente, pero produce la respuesta incorrecta. El error ms comn es el error tipogrfico, ste tipo de error comnmente errores de sintaxis que son capturados por el Implicit None, Pero no captura aquellos en los que sustituye una variable legal por otra variable no legal, la mayora de stos sucede cuando las variables son de nombre parecido. Aqu cuando el programador debe hacer la revisin manualmente.
25
Algunas ayudas que se dan para evitar errores son: 1. El dividir enunciados de asignacin muy largos en enunciado mas cortos 2. El uso correcto de parntesis. ( # parntesis abiertos = # parntesis cerrados) 3. La inicializacin de variables. 4. El uso de unidades correctas en las funciones 5. El uso correcto de operaciones entre diferentes tipos de variables. 6. Evitar el uso de la divisin entre cero, cuando se efecta la divisin entre cero ya sea por que se asigna cero como denominador o que el clculo llega a dar como denominador cero, entonces no se puede efectuar la divisin y el equipo se inhiba (Congela el Proceso) enviando un mensaje Divisin entre cero. (inhibir.- el equipo no acepta instrucciones ni realiza ningn proceso). Accin: reiniciar el equipo. *Si aun continan habiendo errores hay que buscar en clculos intermedios, y/o, puede solicitarle al asesor su apoyo para que verifique el programa ya que el aprendiz, mentalmente, se encierra sin ver los errores. .... Existen varios tipos de Errores en Programacin a Saber:
1) 2) 3) 4) Ejecucin Compilacin Estructura de lenguaje Sintaxis de lenguaje
Tambin pueden resumirse como errores) A) Lgicos Del Usuario B) De Gramtica Del Lenguaje C) De Ejecucin
26
1.2) Despus definimos los clculos vamos a necesitar para llegar a esas salidas, es decir el algoritmo las Frmulas (Algoritmo.- Formula(s) condensada que indica una serie de operaciones repetitivas) 1.3) Por ltimo definimos que datos necesitamos en cada calculo, y si no son generados por el programa los asignaremos como ENTRADA (S). 2).-Pseudo cdigo.- Es escribir la serie de instrucciones procedurales de acuerdo al formato esquemtico del lenguaje ( Fortran), y en el idioma Natural programador. (Pseudo cdigo.- Representacin escrita, en lenguaje comn, de los pasos para resolver un problema), (Lenguaje Estructurado.- Aqul que se resuelve por conjuntos de instrucciones que forman "bloques" parciales de la solucin total de un problema). 3).-Diagramacin.- Reconocido el problema y decidido el camino para resolverlo se elabora un diagrama de flujo estructurado para "visualizar" la solucin total. 3.1Diagrama de flujo.- Representacin esquemtica de los pasos para resolver un problema. 3.2Diagrama estructurado.- Aquel que representa en renglones grficos los conjuntos de instrucciones que forman los "bloques" parciales de la solucin total de un problema. 4).-Tabulacin.- Es esquematizar en una tabla en cuyas columnas se anotan cada variable descrita en el programa, y se asignan valores prueba que se seguirn de acuerdo al diagrama de flujo previamente diseado. 5).-Codificacin.- Representacin "escrita" de las instrucciones indicadas en un diagrama de flujo en cualquier cdigo (lenguaje de computadora o sper lenguaje), en nuestro caso ser el Fortran. Ejemplo.-Con apoyo de su asesor, Escriba la codificacin en Fortran para realizar las operaciones indicadas en el diagrama de flujo del final del captulo II. 6).-Depuracin.- Es capturar el programa en la computadora con las instrucciones propias del lenguaje y procesarlo para que d los resultados en su defecto genere los errores cometidos para poder corregirlos. 7).-Documentacin.- Es el proceso de agregarle comentarios a las instrucciones de tal manera que indique para que fin fue creado el programa, por quien, y que significa cada una de las variables utilizadas y frmulas dentro del programa. 8).-Anlisis De Resultados.- Es corroborar en corridas (Procesos), llamados Prueba, y con valores predeterminados, con la finalidad de ver que efectivamente el programa est generando los resultados esperados.
27
9).- Produccin.- Es el proceso de procesar el (Los), programa (s) para generar los resultados para cuyo fin fueron creados. 10).- Retro-Alimentacin.- Se llama al proceso de estar atento a los cambios requeridos en los programas para que estn de acuerdo a las necesidades dinmicas de las organizaciones, en cuyo caso de cambio, se deber seguir los pasos desde el inicio, es decir Definicin..... etc.
Estructura de una instruccin de Entrada (forma general) Nota Read (*.*) Instruccin de lectura Indica que no importa la forma que se del dato, lo lee literalmente (formato libre) Indica que se lee una tecla ( desde un teclado) *Se explica ms detalladamente mas delante en este capitulo. Estructura de una instruccin de Salida (forma general)
Write (*.*) Instruccin de salida datos Indica que de forma automtica desplegara el resultado en forma automtica (formato libre) Indica que se despliega en pantalla
28
La instruccin PROGRAM.- Es la primera lnea de todo programa en Fortran 9095 y su Forma es : PROGRAM nombre Puede tener hasta 31 caracteres de longitud, y sigue las siguientes reglas a saber: Los caracteres pueden ser letras, dgitos o el carcter subrayado ( _ ). El primer carcter debe ser letra. Dentro del nombre no se permiten espacios en blanco.(Es caracter especial) Maysculas o minsculas. El nombre no puede usar palabras reservadas para el lenguaje como lo son entre otras read, write, file, exit, close, integer, real, etc. (Ver Apndice Tres: A.3) SECCIN DE DECLARACIONES En esta seccin se especifica el nombre del programa, y se definen los nombres y tipos de variables que se van a usar. Cmo se declaran las variables? Tipo_de_dato :: var1 [, var2]...
Su Contenido es opcional
LOS COMENTARIOS ! Los comentarios son mensajes o notas escritas para la persona que lea el programa. Todos los caracteres que estn a la derecha del signo de admiracin ! Hasta el final de lnea, son comentarios y son ignorados por el compilador de Fortran. PROGRAM COMENTARIO ! Este programa imprime l numero PI Comentario ! WRITE (*,*) HOLA Comentario WRITE (*,*) 3.141592 Instruccin Activa ! WRITE(*,*) 3,141592 ** 2 Comentario END PROGRAM Si grabamos, compilamos, ligamos y corremos este programa escribe lo siguiente: 3.141592 SECCIN DE EJECUCIN Aqu van una o ms instrucciones que describen las acciones que va a realizar el programa. Los datos deben corresponder a lo especificado en el programa. SECCIN DE TERMINACIN Consiste en las instrucciones STOP y END PROGRAM. STOP.- Este comando indica al compilador que detenga el proceso, normalmente se usaba para que realizara los cambios de discos que se necesitaran. END PROGRAM dice al compilador que ya no hay ms instrucciones en l programa y le ordena terminar el programa. Cuando la instruccin STOP va
29
inmediatamente antes de la instruccin END PROGRAM, es opcional. El compilador genera automticamente una instruccin STOP cuando llega a la instruccin END PROGRAM. Por eso, la instruccin STOP se usa rara vez ya que no es necesario.
EXPRESIN: Es la representacin de una orden a la computadora a travs del uso de variables, constantes y operadores lgicos, aritmticos y/o comandos propios del lenguaje. En el caso de las expresiones aritmticas siempre ser a la derecha del signo (=). Expresin Aritmtica Suma= a+b Expresin de Transferencia lgica IF (a>b) then Expresin de Comando del lenguaje (ver apndice III tabla de comandos) Exit Stop open close file print
CARACTER: es un smbolo que se usa para la comunicacin, representacin de especificaciones en FORTRAN y sus tipos son:
Numrico
Alfabtico
0123456789
ABCDEFGHIJKLMN OPQRSTV W X Y Z
CARACTERES:
30
CONSTANTE: expresin cuyo contenido permanece inalterable durante el transcurso de un programa. Sus tipos son:
1950 3.1415
verdadero falso.
VARIABLE: es una expresin cuyo contenido es susceptible de cambios sus representantes son: Enteros:
Numricos VARIABLE Alfanumrico DEF (2) (4) REALES: (2) (4) INTEGER VAR BYTE -32768 -32767 2 -214748 -21474836 4 DEF REAL VGR BYTE +3.4(10) -38_1.1(10)38 4 -3.4(10) -38_1.1(10)38 4 +1.7(10)-308 -2.2(10)308 8 nombre 1 n
CHARACTER ( De cadena) Def: carcter vgr (1) almacn 1 carcter (n) almacn n carcter
CMO NOMBRAR UNA VARIABLE? 1) PUEDE TENER DE 1 32 CARACTERES. 2) EL PRIMER CARCTER DEBE SER ALFABTICO. 3) NO DEBE TENER CARACTERES ESPECIALES. * Excepto _ estando entre otro conjunto de caracteres alfabticos
NOTA: EN UNA EXPRESIN ARITMTICA NO SE DEBE MEZCLAR EL MODO DE LAS VARIABLES NI DE LAS CONSTANTES
31
C=
5 o F 32 9
tan =
2.-Grabar en Disco
3.-Compilar
4.-Ligar
5.-Ejecutar
Programa
Fortran .F90
Archivo
Objeto .obj
Programa
Ejecutable.exe
Resultado
32
TIPOS DE DATOS: FORTRAN utiliza los siguientes tipos de datos: Numricos, Alfa-Numricos, Especiales
Memoria Usada (En bytes) 4 2 4
RANGO INTEGER Enteros (Sin punto) INTEGER2 INTEGER4 Datos Precisin REAL Reales (Con punto)
3.4 x 10 a 1.1 x 10
4 7 8
Datos Alfanumricos
Complejo COMPLEX Lgico LOGICAL Archivo FILE Variable con subndice Tipos de datos derivados
Registros
ENTERA ( Es un numero sin punto decimal ) REAL ( Es un nmero con punto decimal )
ALFANUMRICA LGICA Complejo Lgico Fraccionaria Entera Alfanumrica COMPLEX LOGICAL REAL INTEGER CHARACTER
TIPOS DE VARIABLES
33
Variables enteras (Integer).- Las variables de tipo entero solo pueden almacenar valores enteros, y se pueden escribir 4 sistemas numricos diferentes, dependiendo del tipo de sistema que se necesite usar, estos tipos de variable cuando son adecuados. Permiten que las operaciones de procedimiento y grabado sean ms rpidas y ahorren memoria. 1. Variable entera Decimal.- Las variables de este tipo solo pueden almacenar valores enteros decimales (sin punto decimal) por ejemplo: -40 30 320 etc. 2. Valor entero Binario .- Una constante binaria esta formada por cualquier combinacin de unos y ceros, el primero debe ser la letra B para identificarlo como binario, por ejemplo: B'111010' B'10111 B'111011' 3. Valor entero octal -- Uno o varios dgitos del 0 al 7, el primero debe ser la letra O para identificarlo como octal, su valor mximo es o7777, sea 215-1, Por ejemplo: o'0' 0'143' o'1776 o7777' 4. Valor entero Hexadecimal.- Serie de nmeros del 0 al 9 y/o letras de la A a la F (pueden ser minsculas), pero debe comenzar con Z. Las letras representan las cantidades decimales del 10 al 15 respectivamente (C=12, A=10 etc.), por ejemplo: zBD z7AB zFAB El valor mximo es zZZZZ sea (215-1)
Nota Solo, estos tipos de valores (Binario, Octal y Hexadecimal)pueden ser Enteros Reales. Nota: Se recomienda que cuando introduzca este tipo de datos utilice Read con formato. Nota: Si se OMITE el signo, se sobreentiende que el valor es positivo.
Las variables enteras se declaran como sigue: INTEGER :: A, B, C. Donde: A, B, C son las variables declaradas como de tipo enteras. Ejemplo.- Escriba al menos 3 declaraciones de tipo entero Integer:: d, a, b INTEGER :: x, y, z Integer:: tres, cuatro, cinco
Nota: 1) Todos los estatutos de declaracin de variables deben de ir antes de cualquier estatuto ejecutable. 2) En la declaracin de variables tambin se pueden inicializar estas, por ejemplo: Integer;: a =50, b=230, c=184
Este tipo de variables tambin se puede declarar como: INTEGER(I), INTEGER(2), INTEGER(4). La siguiente tabla muestra los diferentes tipos de enteros, los bytes que ocupan en memoria y el rango de valores que pueden almacenar. Tipo de datos Integer(1) lnteger(2) Integer(4) Bytes 1 2 4 Rango -128 a 127 -32768 a 32767 -2147483648 a 2147 483 647
Nota: Si no se pone el No, de bytes Entre parntesis, entonces por omisin es 4 bytes
Variables Reales (Real).- Son variables a las que se les puede asignar valores que tengan punto decimal, por ejemplo: -970.25 .25 46.234 876.
34
Las variables reales se declaran de la siguiente manera: REAL:: a, b, c Donde: a, b, c son las variables declaradas como de Tipo Real (o que admiten el punto decimal) Ejemplo - Escriba al menos 3 declaraciones de variables de tipo real. Real:: x, y, z REAL:: uno, dos, tres real:: a, b = 18.2, c = 0,2579 Ntese que para el lenguaje Fortran las maysculas son inapreciables. Estas variables necesitan ms memoria para almacenar los valores que los de tipo entero, aunque todos los datos internamente se representan en forma binaria, no se representa igual el 10 (Entero) que el 10.0 (Real), a las variables de tipo real se les puede asignar cualquier tipo de valores enteros o fraccionarios al leer sin formato, pero si se usa un Read con formato se debe tener cuidado (Ms adelante se analizar ste caso el Read con formato). Este tipo de variables tambin se puede declarar como: Real(4), Real(8) Doble Precisin.
La siguiente tabla muestra los diferentes tipos de reales, los bytes que ocupan en memoria y el rango de valores que pueden almacenar. Tipo de datos Bytes Precisin Rango
-1.1754944E-38 3.4028235E+38 - 2.225073858507201 D-308 +1.797693134862316D+308 Real(4) o simple 4 6 dgitos Nmeros negativos -3.4028235E+38 Hasta Nmeros Positivos +1.1754944-38 Hasta Real(8) o Double 8 15 dgitos Nmeros negativos -1.79769313486231D+308 Nmeros positivos +2.225073858507201308 Hasta
Nota: 1) S no se pone el nmero entre parntesis por omisin el valor ser de 4, es conveniente aclarar que con la nueva tecnologa, la capacidad en el tamao del valor a almacenar aumenta cada vez mas. Ejemplo: Dado el valor 0.05 escrbalo en al menos de 5 formas diferentes. 5.D-2 +0.0005E+2 0.05DO 5D-3 0.05
35
2) Si queremos una constante con ms de 7 cifras de precisin, tendr que escribirse despus del numero del carcter subrayado y enseguida el nmero 8. El mismo nmero se logra utilizando la funcin DBLE(expresin, la cual convierte el resultado de la expresin en un nmero real con precisin doble. Ejemplo: REAL :: PI PI = 3.14159654_8 X PI = DBLE (3.14159654) (No precisa Almacena basura despus de la cifra) Los nmeros muy grandes pueden expresarse de la siguiente forma: Forma Exponencial 0.65E+08 0.90E-05 Forma Cientfica 6.5E+07 9.0E-06 En matemticas de Ingeniera 6.5 x 10 7 9.0 x 10 -6 65,000,000 0.000009
Nota: La letra E representa las palabras por 10 elevado a la potencia ASC II (American Standard Code for Information Interchange) Cdigo 130 160 161 162 163 164 165 Carcter que representa *ver apndice A.2, tabla de cdigos ASCII
Constante tipo CHARACTER (ALFANUMRICA) Es una tira de caracteres ASCII encerrados entre apstrofes ( ) o entre comillas ( ). El nmero mnimo de caracteres de la tira es uno. El mximo vara de compilador a compilador debern ir entre dos apstrofes o dos comillas puede ir a cualquier tipo de caracteres. Constante tipo LOGICAL Las constantes tipo LOGICAL rara vez se usan. Pero si se usan las variables y expresiones De estos tipos son las dos siguientes: .TRUE. . FALSE.
Nota: Los puntos antes y despus son necesarios para distinguirlos de nombres de variables.
36
DECLARAR O NO DECLARAR EL TIPO DE LAS VARIABLES Hay dos maneras de declarar el tipo de variables: De forma explcita: IMPLICIT NONE Es opcional INTEGER :: A, I, J, Z REAL:: L, M, B, S COMPLEX:: R, D, F LOGICAL:: BANDERA1, BANDERA2 CHARACTER(10) :: NOM, AP CHARACTER(LEN = 5) :: DIR CHARACTER :: LETRA_INICIAL Cuando se usa IMPLICIT NONE necesariamente se declaran todas las Variables que se usan en el Programa. Si se usan variables no declaradas aparece un mensaje de error.
que son:
INTEGER: Los nombres de las variables que inician con las letras I,J,K,L,M,N. bien se declaran como enteras (Ms adelante se muestra como se declarar variables)
Tipo REAL: Los nombres de las variables que inicien con cualquier otra letra I,J,K,L,N,M
bien se declaran como Reales. Nota: Como se observa, es necesario declarar en forma explcita los tipos: COMPLEX LOGICAL CHARACTER
Puede omitirse la expresin LEN y ponerse el nmero solo, Vgr.: CHARACTER(10) :: NOM, APELLIDO
Nota: Si se omiten los parntesis, las variables podrn almacenar solamente un carcter. Las siguientes dos declaraciones son equivalentes:
Son Equivalentes
37
DECLARACIONES DE CONSTANTES
Forma general: Tipo de dato, PARAMETER :: nombre = valor Excepcin no nos marca error por no darle los parmetros Por ejemplo: REAL (8),PARAMETER:: PI = 3.14159654-8 8 Bytes de precisin
CHARACTER, PARAMETER :: Mensaje = Error desconocido COMPLEX, PARAMETER:: Z = ( 0.9091, -2.7183) Parte Imag. Parte REAL
CODIFICACIN. Debe ser utilizado un solo rengln para cada operacin. Variables y Constantes conviene nombrar segn el contenido para su definicin. No debe de haber mezclas de enteras con fraccionarias (modo mixto). EJEMPLO: Valor1 = A2 - C Lado_Sup = B + B2 Valor2 = A ** 2 / (B + 5 ) - C Raiz1=(B+(B**2-4*A*C)**0.5 / (2*A)
DECODIFICACIN.
Significa convertir del cdigo computacional al matemtico, estos pasos son muy Importantes debido a que pertenecen a una rama de la Ingeniera de aplicacin Electrnica y de circuitos, como se podr apreciar en otras materias curriculares. 1) Es necesario seguir las reglas de la jerarqua de operadores. (Se explican ms adelante) 2) Debe ser identificada cada una de las operaciones que se realizan. 38
EJEMPLO 1.
X= A
**
2 /
2
A
2
B + 5 A B + 5
2
DECODIFICADO
A B + 5 X
Sesin Presencial:
OPERADORES ARITMTICOS
Las expresiones aritmticas hacen uso de los operadores aritmticos y estos siempre van en dos variables y/o constantes: Operador + * / ** Ejemplo a+b ab a*b a/b a**b Descripcin suma resta multiplicacin divisin Exponenciacin (potencia)
39
REGLAS DE LA PROGRAMACION
Resultados Del Aprendizaje:
El alumno conocer y aplicar las reglas y pasos a seguir en la construccin de instrucciones y programas Conocer los caracteres, constantes y variables que constituyen una instruccin Contenido JERARQUIA DE OPERADORES CODIFICACION DECODIFICACION TIPOS DE CARACTERES TIPOS DE CONSTANTES NOMBRAR UNA VARIABLE TIPOS DE VARIABLES ORDEN DE EJECUCIN DE LAS OPERACIONES (JERARQUA) I) OPERACIONAL Cuando se evala una frmula una expresin complicada, FORTRAN realiza las operaciones una por una, segn el siguiente orden de prioridad o jerarqua. 1.- Exponenciacin ** 2.- producto por menos uno 3.- *, / 4.- +, 5.- = = , / =, >,>=,<, <= 6.- NOT. 7.-.AND. 8.-.OR. 9.-. EQV. , .NEQV II) POSICIONAL Cuando las operaciones tienen igual jerarqua, se realizan de izquierda A derecha
Nota: Excepcin a la regla anterior: cuando en una frmula aparecen dos o ms exponenciaciones, Fortran realiza las exponenciaciones de derecha a izquierda
R = 2**3**4
W= (2**3) **4
III) ASOCIATIVIDAD Se puede cambiar la jerarqua por medio de parntesis redondos, al asociar las operaciones, stas se convierten en operandos y su Ejecucin sigue las reglas anteriores.
NOTA: El numero de parntesis que se abre debe es igual al de parntesis que se cierra.
40
2.- Cuando el resultado de una operacin excede el rango del tipo de dato genera un error. (Ver Ejemplo)
PROGRAM Rango IMPLICIT NONE INTEGER :: I I = 9999999 * 9999999 WRITE (*,*) VALOR DE I = , I End Program Rango
(BCD .F 90 (4) ERROR FOR 2154: INTEGER OVERFLOW) 3.- Las operaciones aritmticas que involucran solamente nmeros enteros (sin punto), dan resultados de tipo entero. Esta regla es especialmente importante para las divisiones. En la divisin de enteros no puede haber parte fraccional en el resultado. La parte fraccional se trunca, se pierde. Ejemplo: 1/4 = 0 5/5 = 1 7/4 = 1 5/4 = 1 17/4 = 4 18/9 = 2 11/5 = 2 4.- Las operaciones aritmticas que involucran solamente nmeros reales (con punto), producen resultados de tipo real. Ejemplos:
3./4. =0.750000 8./8. =1.000000 15./12. =1.250000 18./12. = 1.50000 Resultados de RE4 5./5. =1.000000 1/4 = 0 5.*(5* (1./5.)) = 5.000000 7/4. = 1.750000 3/4 = 0 9/4. = 2.250000
PROGRAM FRACCION WRITE (*,*) 5. / 5. = , 5./5. WRITE (*,*) 1 / 4= , 1/4 WRITE (*,*) 5.*(5.*(1. /5 ))= , 5.*(5*1./5.) WRITE (*,*) 7./ 4.= , 7/4 WRITE (*,*) 3/4.= , 3/4. WRITE (*,*) 9/4. = , 9/4 END PROGRAM FRACCION
5.- Cuando se presenta una operacin aritmtica entre un nmero entero y un nmero real, Fortran convierte l numero entero a real y luego realiza la operacin y se obtiene un resultado de tipo real.
41
6.- Cuando el resultado de una operacin es real y se asigna el resultado a una variable de tipo entero, sucede lo siguiente: primero se convierte el resultado a un valor entero (se pierde la fraccin) y luego se almacena en la variable. 7.- Cuando el resultado de una operacin es entero y se asigna el resultado a una variable de tipo Real, sucede lo siguiente: Primero se convierte el resultado a un valor real (con punto) y luego se almacena en la variable.
PROGRAM BUENO IMPLICIT NONE INTEGER :: RESULTADO REAL :: BUENO WRITE(*,*) 9/4+1.25 =, 9/4+7.25 RESULTADO = 9/4 + 7.25 WRITE (*,*) EL RESULTADO es: , RESULTADO BUENO = 9/4 + 2 WRITE (*,*) El valor de BUENO es: ,BUENO END PROGRAM BUENO
8.- La Exponenciacin, cuando el exponente es entero, o real sin parte fraccionaria, la expresin A**n quiere decir utilice A como factor n veces. Entonces es posible elevar un nmero negativo a una potencia entera.
PROGRAM Exponente WRITE (*,*)(-4,0 )**2 =`,(-4,0)**2 WRITE (*,*)(-4,0)**2.0=, (-4,0)**2.0 WRITE (*,*)(-4) **2=, (-4)**2 Escriba Los Resultados
REGLAS PARA EXPRESIONES ALFANUMRICAS Cuando se asigna un dato alfanumrico a una variable alfanumrica pueden darse dos situaciones que necesitan aclararse a saber: 1.- Que el dato alfanumrico sea mas largo que la capacidad de la variable. En este caso se almacena en la variable los primeros caracteres del dato alfanumrico.
PROGRAM GABY Implicit none Character (5) :: nom Nom=Gabriela Write (*,*)nom End program GABY
RESULTADOS:
Gabri
42
2.- Que el dato alfanumrico sea menos largo que la capacidad de la variable. En este caso se almacena el dato alfanumrico alineado a la izquierda.
PROGRAM APELLIDO Implicit none Character (10) ::Apell Apell= Glz Write (*,*) *, Apell, * END PROGRAM APELLIDO
RESULTADOS:
*Glz*
Nota: Como se observa para seleccionar una parte del contenido de las variable alfanumricas, se pone el nombre de la variable y luego enseguida de ella entre parntesis va la posicin a seleccionar. Cuando en una variable van dos nmeros enteros separados por : Estos nmeros indican cual es el primero y cual es el ultimo carcter que se quieren ( Ver Ejercicio ) seleccionar.
EJERCICIO PROGRAM MERO Implicit none Character (8) :: a, b, c = A M E R O T U H I J A=C WRITE(*,*) * , A, * B= 123456 Write (*,*) * , B, * C=A(6:7) B(1:4) = A(2:5) B(5:7) = A(6:7) B(8) = ! WRITE (*,*) *, B(5:7) , *, *,B(1:4) *, *, B(8), * END PROGRAM MERO
*AMEROTUH * * 123456 *
* T U * * MERO !*
43
2.- Encadenar o unir dos o mas datos alfanumricos con el operador // el operador esta formado de dos diagonales // . [Significa: No existe espacio entre ellas.]
PROGRAM TRES_MOSCAS Implicit none Character (6) ::A, B, C Character (18) :: D, E A= Todos B = Para C = Uno D = C // B // A E =A // B //C WRITE (*,*) C // B // A // Y // E End Program TRES_MOSCAS RESULTADOS: Uno Para Todos Y Todos Para Uno
RESULTADOS: Precio de parte 1 = 5.18 Precio de parte 2 = 6.34 Precio de parte 3 = 8.75 Costo de la maquina= 20.27
44
READ (*,*) Lista de datos Esta instruccin asigna a las variables del programa los valores que se escriben en el teclado. Forma General READ(*,*) nombre de variable [, nombre de otra variable] ----(opcional) Cuando se escriben varios datos como respuesta a una instruccin READ, deben ser separados por espacios en blanco por comas. El primer valor que se escribe se guarda en la variable que est en el primer lugar de la instruccin READ. El siguiente valor que se escribe, se guarda en la variable que est en el segundo lugar, y as sucesivamente. (Ver prximo ejemplo)
PROGRAM ALFANUMERICOS IMPLICIT NONE CHARACTER (len=12) :: NOMBRE INTEGER:: CARRERA WRITE(*,*) Nombre y edad? READ(*,*) NOMBRE, CARRERA ! FORMATO LIBRE WRITE(*,10) NOMBRE, CARRERA ! FORMATO RESTRINGIDO 10 FORMAT ( , Nombre: , A12, /, , CARRERA : , I3) END PROGRAM ALFANUMERICOS
Nota:
Cuando se escriban datos alfanumricos como respuesta a una instruccin READ, si estos datos contienen espacios en blanco o comas, deben de ir entre apstrofes entre comillas
ENTRADA/SALIDA CON FORMATO SELECCIONADO READ (*, Nmero entero) lista de datos WRITE (*, Nmero entero) lista de datos. Los asteriscos de la instruccin write (*, *) Pueden ser sustituidos por nmeros enteros La instruccin write (*, numero entero ), presenta en la pantalla los datos o resultados de un programa. El nmero entero corresponde al nmero de la instruccin FORMAT. Esta instruccin indica la forma formato de presentacin de los resultados.
PROGRAM FORMATO_SELECCIONADO IMPLICIT NONE REAL :: FAHRENHEIT, CENTGRADOS CONTA = 5 READ (*,100) FAHRENHEIT 100 FORMAT (DAME UNA TEMPERATURA EN GRADOS FAHRENHEIT= , F 7.3) CENTGRADOS = 5./9.* (FAHRENHEIT - 32.) WRITE (*,200) FAHRENHEIT, CENTGRADOS 200 FORMAT (x,Para,x,F7.3, GRADOS FAHRENHEIT, = F7.3, Celsius)
45
END PROGRAM
FORMATO_SELECCIONADO
valor1, valor2
RESULTADO: Valor1 = 14 valor2 = 28
NOTA:
El resultado saldr por la pantalla del monitor ;Para imprimir en FORTRAN 90-95, es necesario declarar el archivo de salida como impresora. Esto se analizar en el capitulo 9 Manejo de archivos.
46
PROGRAM ALFANUMERICO IMPLICIT NONE CHARACTER:: NOMB1(4), NOMB2(8) READ ( * , 20 ) NOMB1, NOMB2 WRITE ( *,20 ) NOMB1, NOMB2 20 FORMAT (A4,A8) END PROGRAM ALFANUMERICO RESULTADOS : MIKE EDUARDO
RESULTADOS --------------------- UNO ---------- DOS ---------TRES------------CUATRO 1234567890123456789012345678901234567890 _ _18 _ _ _ _1.39 _ _ _203.35 1850.6 _ MIKE_ 497 -0000.09 _23099.84 _ _-0.1 _EDUARDO_ Cuando los # que de quieren escribir no caben en el formato, se DESPLIEGAN asteriscos
FORMATO PARA NOTACIN EXPONENCIAL CIENTFICA __ Format ( , Esw .d ) Donde Es Se refiere a exponencial cientfica w Indica el # total de lugares que se van a dejar en total d Indica el # de dgitos a la derecha del punto decimal El resultado de w- d debe ser mayor o igual a 7
47
PROGRAM NOTACIN_CIENTFICA IMPLICIT NONE REAL::CIENTFICA READ (*.100) CIENTFICA 1000 FORMAT (F14.10) WRITE (*,2000) CIENTFICA, CIENTFICA 2000 FORMAT( , T10, FORMATO REAL, F14.10, FORMATO CON NOTACIN CIENTFICA ES ,ES9.4)
END PROGRAM NOTACIN_CIENTIFICA Formato para notacin Exponencial __ FORMAT (, Ew,d ) Donde: E Se refiere a exponencial w Indica el nmero total de lugares que se van a utilizar d Es el nmero de dgitos a la derecha del punto decimal NOTA : El resultado de w-d debe ser mayor o igual a 6
Ejemplo :
PROGRAM NOTACIN_EXPONENCIAL IMPLICIT NONE REAL:: EXPONENCIAL READ (*,99) EXPONENCIAL 99 FORMAT(F14.10) WRITE (*999) EXPONENCIAL, EXPONENCIAL 999 FORMAT ( , T10,CON FORMATO REAL ES ,F14.10, 10X, CON FORMATO EXPONENCIAL ES , 3X, E9.4) END PROGRAM NOTACIN_EXPONENCIAL
48
Cuando se utiliza la funcin ABS(expresin compleja), el resultado que genera en Fortran es: ABS(expresin compleja) = real2 + imaginario2
Resultado
642 + 182
49
Funcin INT(expresin) Esta funcin elimina la fraccin decimal del resultado de la expresin. La expresin puede ser real, entera o compleja. El resultado es entero. Si la expresin es compleja, se elimina la parte imaginaria y queda la parte real como fraccin.
PROGRAM FUN_INTEGRAL IMPLICIT NONE INTEGER:: HORAS_TRAB, BILLETES REAL:: SUELDOXHORA, SUELDO_TOTAL READ(*,5) HORAS_TRAB, SUELDOXHORA 5 FORMAT (I2, F5.2) SUELDO_TOTAL= SUELDOXHORA*HORAS_TRAB BILLETES=INT(SUELDO_TOTAL) WRITE(*,10) SUELDO_TOTAL, BILLETES 10 FORMAT (10X, EL SUELDO ES , F5.2, EN BILLETES ES $,I5) END PROGRAM FUN_INTEGRAL RESULTADOS $170.50 EN BILLETES ES $170
Funcin TRIM (alfanumricos) La funcin TRIM elimina los espacios en blanco que estn al final de una variable o una constante alfanumrica (tipo character) . Accin de compactar.
50
PROGRAM COMPACTA ! La instruccin trim(alfanumrico) elimina ! De una variable o de una constante alfanumrica ! Los espacios en blanco que van al final. NOM ------CHARACTER(10) :: NOM , SALUDO NOM= MIKE 1.-*MIKE-----* Saludo = Hola 2.- * MIKE * Write (*,*) * , nom * 3.-* Hola------* Write (*,*) * , trim (nom ) , * 4.-* Hola Mike * Write (*,*) * , Saludo, * Write (*,*) * , Trim(Saludo), ,Trim(Nom), * * END PROGRAM COMPACTA
Funcin NINT(Expresin)
(Nearest INTeger: Redondea al entero ms prximo) Redondea el valor de la expresin de la siguiente manera: Si la parte decimal de la expresin es inferior a 0.5 , da como resultado el entero inferior ms cercano. Si la parte decimal de la expresin es mayor o igual a 0.5 el resultado es el entero superior ms cercano. La expresin debe ser real. El resultado es un entero.
PROGRAM FUN_NINT IMPLICIT NONE REAL::PROMEDIO_DE_LLUVIA_X_DECADA INTEGER:: LITROS READ (*,2000) PROMEDIO_DE_LLUVIA_X_DECADA 2000 FORMAT (F14.7) LITROS = NINT (PROMEDIO_DE_LLUVIA_X_DECADA) WRITE (*,3000) LITROS 3000 FORMAT ( 20X, LOS LITROS CAIDOS EN LA DECADA FUERON , I7) END PROGRAM FUN_NINT RESULTADOS LOS LITROS CAIDOS EN LA DECADA FUERON 2 Funcin SQRT(Expresin) (SQUARE ROOT TABLE: TABLA DE RAIZ CUADRADA)
Calcula la raz cuadrada de un nmero positivo. La expresin puede ser real o compleja. Si es real, debe ser mayor o igual a cero. Si es compleja tanto la parte real como la parte imaginaria puede ser cero o mayor que cero o menor que cero.
PROGRAM FUN_SQRT IMPLICIT NONE REAL:: A,B,C, DISCRIMINANTE READ (*,90) A,B,C 90 FORMAT (3 F7.3) DISCRIMINANTE= SQRT (B**2. 4.* A * C) WRITE (*,100) DISCRIMINANTE 100 FORMAT ( 25X , EL VALOR DISCRIMINANTE ES , F7.3) END PROGRAM FUN_SQRT RESULTADOS EL VALOR DISCRIMINANTE ES_________
51
Funcin LOG 10 (Expresin) Nos d el logaritmo comn (base diez) del valor de la expresin. La expresin debe de ser Real, por lo cual el resultado es real.
PROGRAM LOGARITMOX IMPLICIT NONE INTEGER:: LOGARITMOX READ(*,1)LOGARITMOX 1 FORMAT (F6.4) WRITE(*,*) LOG10( LOGARITMOX) WRITE(*,*) LOG10( LOGARITMOX * 10.) WRITE(*,*) LOG10( LOGARITMOX * 100.) WRITE(*,* LOG10( LOGARITMOX * ) END PROGRAM LOGARITMOX
Funcin LOG(expresin)
Nos da el logaritmo natural (base e) del valor de la expresin. La expresin puede ser real o compleja. Si es real, debe ser mayor que cero. Si es compleja, debe ser diferente de cero.
PROGRAM LOGARITMOe IMPLICIT NONE INTEGER:: NUMERO REAL:: LOGARITMO_E READ (*,1) NUMERO 1 FORMAT ( I4) LOGARITMO_E = LOG (REAL(NUMERO)) WRITE(*,1) LOGARITMO_E 11 FORMAT (10X, F14.7) END PROGRAM LOGARITMOe
FUNCION EXP(expresin) Calcula el exponencial del valor de la expresin. Esto es: Calcula el valor de la constante elevada a la potencia especificada en la expresin (real o compleja).La expresin puede ser:
PROGRAM POTENCIA1 IMPLICIT NONE REAL:: NUMERO, POTENCIA READ (*,2) NUMERO 2 FORMAT ( F14.7) POTENCIA = EXP (NUMERO) WRITE(*,22) POTENCIA 22 FORMAT ( 20X, F 14.7) END PROGRAM POTENCIA1
52
FORMATO MAX Y MIN El formato MAX(X,Y) MIN(X, Y) ,Compara los valores contenidos en X y en Y dando como resultado el mayor. De sta manera podemos responder a la pregunta: Cmo podemos saber si un nmero es divisible entre otro? Compara los valores contenidos en X y en Y y da como resultado el menor.
Nota: Los valores comparados deben ser del mismo tipo: los dos enteros o los dos reales. X y Y pueden ser una constante, una variable o una frmula.
PROGRAM COMPARAR IMPLICIT NONE REAL:: X, Y INTEGER::Z, W READ (*,4 ) X,Y 4 FORMAT ( 2F 7.3) READ (*,5 ) Z,W 5 FORMAT ( 2I 7) WRITE(*,44) MIN(X, Y), MIN(Z, W) 10 FORMAT ( , F15.3, I15) END PROGRAM COMPARAR
FUNCIONES TRIGONOMTRICAS SIN(ngulo en radianes) COS(ngulo en radianes) TAN(ngulo en radianes) SIND(ngulo en grados) COSD(ngulo en grados) TAND(ngulo en grados)
53
Estas funciones nos dan respectivamente, el seno, el coseno y la tangente de un ngulo dado en radianes, NO EN GRADOS, El ngulo puede estar dado por una constante, una variable una frmula. Ejemplo: Obtenga el seno de 30 grados, el coseno de 30 grados y la tangente de 45 grados
PROGRAM GRADOS IMPLICIT NONE REAL, PARAMETER::PI = 3.141593 REAL:: A , I I = 30. A= SIN(I*3.141593/180.) WRITE(*,10) A,COS(I*PI/180.), TAN(45.*PI/180.) 10 FORMAT ( , 3F14.7) END PROGRAM GRADOS
Funciones Arco Con estas funciones podemos obtener el ngulo que corresponde a la expresin. El ngulo que se obtiene esta en RADIANES. Estas tres funciones obtienen un resultado inverso al de las tres funciones que estn anteriormente en el ejemplo dado. ASIN (expresin) ACOS (expresin) ATAN (expresin) Tarea : [ Calcula el Arco Seno ] (ngulo en grados) [ Calcula el ArcoCoseno ] (ngulo en grados) [ Calcula el ArcoTangente ] (ngulo en grados)
Elabore un programa para Obtener: el arco seno de 0.5 el arco coseno de 0.866 el arco tangente de 1.0
FUNCIONES HIPERBLICAS Estas funciones nos dan respectivamente, el seno hiperblico, el coseno hiperblico y la tangente hiperblica de un ngulo dado en RADIANES, NO EN GRADOS. SINH(ngulo en radianes) COSH(ngulo en radianes) TANH(ngulo en radianes) [ Calcula el Seno hiperblico ] [ Calcula el Coseno hiperblico ] [ Calcula la Tangente hiperblica ]
54
Ejemplo :
PROGRAM HIPERBOLICAS IMPLICIT NONE REAL, PARAMETER :: PI = 3.141593 ! paremeter : PI = constante REAL :: RADIANES, NUMERO NUMERO = 30. RADIANES = SINH ( NUMERO * 3.141593 / 180 ) WRITE(*,10) RADIANES, COSH (NUMERO * PI / 180. ), TANH (45. * PI / 180. ) 10 FORMAT ( , 3F14.7) END PROGRAM HIPERBOLICAS
FUNCIN RANDOM (NMEROS ALEATORIOS O AL AZAR) Nos permite generar un nmero aleatorio real CALL RANDOM_nmero (variable_de_tipo_real) La subrutina RANDOM_ nmero (variable_de_tipo_real) genera un nmero aleatorio real y lo almacena en la variable_de_tipo_real. El nmero generado es mayor o igual que cero y menor que uno. La forma de usar o llamar a una subrutina es con la palabra CALL, que significa llamar. Esta funcin siempre va precedida de otra llamada RANDOM_SEED , la cual tambin ser llamada por un CALL, y su funcin es que a partir de un nmero llamado Semilla , pueda generar nmeros aleatorios.
PROGRAM AZAR IMPLICIT NONE REAL :: NUM1, NUM2, NUM3 CALL RANDOM_SEED( )!Llamada a generar # aleatorio EN BASE A UN NUMERO SEMILLA CALL RANDOM_0(NUM 1) CALL RANDOM_0(NUM 2) CALL RANDOM_0(NUM 3) WRITE(*,100)NUMI,INT(101* NUM1), NUM2, INT(11*NUM2),NUM3,INT(5*NUM3) 100 FORMAT ( , 3(F12.7,I9)) END PROGRAM AZAR
55
EJEMPLIFICACIN DE UN PROGRAMA DESARROLLADO CON CADA UNO DE LOS PASOS SUGERIDOS PARA UNA PROGRAMACIN EXITOSA. A continuacin se muestra un programa desarrollado, que nos da las distintas soluciones de la ecuacin cuadrtica: AX 2 + BX + C = 0 DEFINICIN. D = Discriminante ( Raz De La Ecuacin)
X1 X2
X1 = X2
Parte_Real
Parte IMAGINARIA
1.2)
CLCULOS A
DISCRIMINANTE ( D = B 4AC )
1.3)
ENTRADAS
56
S D = 0 Si D < 0
3 Dame el valor de "c"
Las races reales son: Raz 1=x1 Raz 2= x2 Este problema tiene dos races idnticas Las races idnticas son: Raz 1=x1 Raz 2= x2
10
11 57
DISCRIMINANTE
1.2) CLCULOS DISCRIMINANTE ( D = B 4AC )
X1 =
4 ac
nte b + Discrimina 2a
X1 =
nte b Discrimina 2a
X1 = X2
X1 =
b 2a
X2 =
discrimina nte 2a
1 2 3
B C
58
2) PSEUDO - CDIGO
Programa races PROGRAMA RAICES COMENTARIOS DECLARACIONES ESCRIBE ( DESPLIEGA) DAME LOS VALORES DE A, B, C LEE A, B, C DISCRIMINANTE = B ** 2 4 * A * C ! Grupo matricula, nombre ! maestro, fecha ! descripcin del problema Variables Implcitas ! declaraciones Real a,b,c, X1, X2, discriminante, pte real, parte imaginaria ! asignar valores Escribe Este programa solucionaasigna los valores de a, b, c Leer A, B, C Escribir "los coeficientes son" a; b, c ! calcula el discriminante discriminante = b ** 2 - 4 * a * c ! Solucione de acuerdo al discriminante S (discriminante >0) entonces X1= (-b + sqrt ( discriminante)) / ( 2 * a) X2= (-b - sqrt ( discriminante)) / ( 2 * a) Escribe la solucin de X1, X2 De lo contrario s ( l discrimnate = 0) entonces X1= (-b) / ( 2*a) Escribe la solucin de X1=X2, X1 De lo contrario ! si existen races complejas Parte real = (-b) / (2*a) parte imaginaria = sqrt (abs (discriminante)) / (*a) Escribe la parte real y la parte imaginaria Fin de s (preguntas) Fin de programa de races 3) DIAGRAMACIN 3.1) DIAGRAMA ESTRUCTURADO:
59
4) TABULACIN: A 2 B 1 C 1 DISCRIMINANTE PR -0.25 PI 6.6614 X1 X2 SALIDAS SALIDA 1 DAME EL VALOR DE A DAME EL VALOR DE B DAME EL VALOR DE C 2X + X + 1= 0 TIENE SOLUCION IMAGINARIA PI= 0.661435 PR= -.025 FIN
60
INICIO
3.2)DIAGRAMA DE FLUJO a, b, c a, b, c
Discriminante = b2 - 4ac
Discriminante < 0
NO SI X1 = (-b+ b 4 ac )/ (2a)
2
Discriminante = Cero
si No Part_real = (-b) / (2a) X1 = X2 Part_imag =
X2 = (-b+ b 4 ac )/ (2a)
2
X1 = (-b) / (2a)
discrimina nte
2a ' Races reales ' Repetidas 'Races Complejas' ' X1 = X2 = ',x1
X1, X2
FIN
61
5) CODIFICACIN PROGRAM CUADRTICA IMPLICIT NONE !PROGRAMA QUE SOLUCIONA LA RAIZ DE UNA ECUACIN CUADRTICA REAL :: X1, X2, A, B ,C REAL :: DISCRIMINANTE, PTE_REAL, PTE_IMAG READ (*,10) A, B, C 10 FORMAT ( 5X, ASIGNE EL VALOR DE A= , F7.2, ASIGNE EL VALOR DE B = , F7.2, ASIGNE EL VALOR DE C= ,F7.2) WRITE (*,20) A, B, C 20 FORMAT (5X, EL VALOR DE A= ,7.2, EL VALOR DE B= ,7.2, EL VALOR DE C= ,7.2) ! CALCULOS DISCRIMINANTE = B**2.-4.*A*C IF(DISCRIMINANTE<0) THEN X1 = (-B)+ SQRT(B**2.-4.A*C)/(2.*A) X2 = (-B) - SQRT(B**2.-4.A*C)/(2.*A) WRITE (*,30)X1,X2 30 FORMAT (5X, RAIZ REAL X1= ,F7.2,5X, RAIZ REAL X2= ,F7.2) ELSE IF (DISCRIMINANTE = 0) THEN X1 = (-B)/(2.*A) X2 = X1 WRITE (*,40)X1,X2 40 FORMAT (5X, RAIZ REAL X1=X2= ,F7.2,5X,F7.2) ELSE PTE_REAL = (-B)/(2.*A) PTE_IMAG = SQRT(ABS(DISCRIMINANTE))/(2.*A) WRITE(*,50) PTE_REAL, PTE_IMAG, PTE_REAL, PTE_IMAG; 50 FORMAT(5X, RAICES IMAGINARIAS ,5X, PARTE REAL=; ,F7.2, + I , 5X, PARTE IMAGINARIA = ,F7.2, 5X, PARTE; REAL 2= ,F7.2, I ,5X, PARTE IMAGINARIA 2 = , F7.2, -I) END IF END PROGRAM CUADRATICA
En esta etapa de su estudio ya conociendo los conceptos bsicos, la simbologa, el proceso de codificacin de frmulas, as como todos los pasos sugeridos para una programacin exitosa. Recomiendo que consulte el Apndice nmero Dos en el cual se muestran grficamente los pasos para instalar el lenguaje FORTRAN 90-95. Una vez practicado lo anterior... ya esta usted en una etapa bsica para iniciarse en la gran aventura creativa del desarrollo y proceso de programar en el lenguaje FORTRAN 90-95.
62
Problemas Resueltos y Prctica Integradora 1.- Diga si las siguientes variables estn correctas, o si hay algn error diga por qu. xyz correcta x.y incorrecta, contiene un carcter especial x123 correcta loco_ incorrecta, contiene un carcter especial 10% incorrecta, comienza con nmero y lleva carcter especial x15 correcta m_o correcta a-18 incorrecta, contiene carcter invlido lluvia correcta uno dos incorrecta, contiene carcter invlido read Incorrecta, identificador ( Palabra Reservada ) 2.- Escriba en Fortran las siguientes expresiones algebraicas Solucin: Frmula matemtica
0
Solucin Codificada
C = 5/9 (0F-32)
Grados Celsius = 5./9. * (grados faren 32) tangente = sin (teta)/ cos (teta)
Evidencia Integradora Para El Aprendizaje: 3.1.- Antecedentes, (cundo se inicio a trabajar con el lenguaje FORTRAN?). 3.2.- Diga cul es la definicin de una variable en Fortran 3.3.- Diga qu es un algoritmo. (Pseudo-Cdigo) 3.4.- Diga cul es la diferencia entre diagrama de flujo y Estructurado. 3.5.- Diga en qu consiste un lenguaje estructurado. 3.6.- Diga qu significa la palabra "codificar". 3.7.- Diga cules son las partes fundamentales de un programa en Fortran. 3.8.- Diga para qu se usan comillas en un programa Fortran. 3.9.- Mencione los tipos de caracteres usados en Fortran y escriba un ejemplo De cada uno. 3.10.-Enuncie el concepto de Variable en un programa en Fortran. 3.11.-Enuncie la definicin de identificador mencione al menos 5 identificadores. 3.12.-Diga cuntos tipos de variables existen en Fortran y diga sus rangos de Aplicacin. 3.13.- Diga para qu se usan las variables de tipo Integer 3.14.- Diga para qu se usan las variables de tipo Real 3.15.- Diga hasta cuntos caracteres puede contener una variable Character3.16.- Diga qu significa "correr" un programa. 3.17.- Diga cul es el orden de prioridad con qu se realizan las operaciones en Una expresin, y diga como se alterara este.(Jerarqua De Operadores) 3.18.- Diga qu es una cadena de caracteres
63
3.19.-Diga qu operacin efecta la siguiente funcin: SQRT ( ) 3.20.-En una proposicin de asignacin diga qu significa la siguiente Representacin: A FI 3.21.- Diga cmo se puede escribir un comentario en un programa Fortran. 3.22.- Describa la estructura de un programa en FORTRAN. 3.23.- Como se define una variable o constante en FORTRAN. 3.24.- Cuales son las reglas para expresiones aritmticas. 3.25.- Diga para que sirve el comando implicit none. 3.26.- Enuncie las reglas de las expresiones no numricas. 3.27.- Cuales son las principales funciones internas de FORTRAN. 3.28.- Codifique las siguientes expresiones. 2 2 P t b b 2 4ac x= V = 1 21 + k 2a P1
seno =
y=
b2 +
(a b)(a + b) (a + b)2
3.29.- Decodifique x = y1 * y2 / (y1 + y2)2 y y = (x1 + x2 ** 2 / (xy + x2) * (x1 x2)) ** 0.5 3.30.- Diga a que modo de variables corresponden los valores a continuacin enunciados. 764.004 987654321 lola nombre 1.7e-3
3.31.-Estn o no correctamente descritas las siguientes variables, de lo contrario diga la razn de ello. X15 program open Bonita sper veloz Chucha _menos luz_electrica gen entero jetx15 delfn avion_z Lucas perico 123lotus parangaricutirimicuaro
3.32.- Despus de consultar y estudiar el Apndice nmero Tres ( A.3) :Diga que Son las palabras reservadas del Fortran 90-95 3.33.- Elabore un esquema de los pasos a seguir para la instalacin del lenguaje FORTRAN 90-95 en una computadora personal. 3.34.- Elabore un esquema de los pasos para editar y procesar un programa en FORTRAN 90-95. 3.35.- Que son y que codifican las utileras contenidas en el lenguaje ? FORTRAN 90-95 que aparecen al instalarse y se denominan lecciones?
64
3.36.- Con todos los pasos sugeridos para una programacin exitosa, solucione: 3.37.- Elabore un programa que lea un valor, calcule y despliegue 1)El logaritmo Base 10, 2) El logaritmo base e, 3)El seno, coseno y tangente de dicho valor. 3.38.- Elabore un programa que lea dos valores, calcule y desligue: 1) Compare si es o no exactamente divisible entre ambos. 2) Calcule su residuo. 3) Genere un nmero al azar entre dichos valores. **De aqu en adelante de todo su texto. Cuando se solicite elaborar un programa, deber hacer uso de todos y cada uno de los pasos sugeridos para una exitosa programacin. 3.39.- Elabore un programa que lea una temperatura en grados Celsius y la convierta en grados Fahrenheit, Kelvin, y Ranking. Si grados K=5/9(grados F-32)+273.15 y grados R= -273.150C.Despliegue temperatura leda en Celsius y sus conversiones. 3.40.- Disee un programa que calcule el rea de un cubo con lados L . 3.41.-Elabore un programa que calcule el rea de un cilindro con radio r y altura h. 3.42.- Haga un programa que calcule el volumen de una esfera de radio r. 3.43.- Escriba un programa que calcule el volumen de un cilindro de radio r y altura h. 3.44.- Escriba un programa que lea y despliegue lo ledo y su promedio. Matricula mat con 8 caracteres enteros Nombre nomb con 30 caracteres alfanumricos. Especialidad esp con 3 caracteres alfanumricos. Nota1 mate con 6 caracteres reales con tres fracciones (incluye el punto) con 6 caracteres reales con tres fracciones Nota2 fin (incluye el punto) Nota3 fsica con 6 caracteres reales con tres fracciones (incluye el punto) Nota4 quim con 6 caracteres reales con tres fracciones (incluye el punto) El promedio se calcula: Con 6 caracteres reales con tres fracciones Promedio Prom. (incluye el punto) 3.45.- Elabore un programa que lea dos valores (x,y) y calcule la suma (x+y), resta (x-y), divisin (x/y), producto (x*y) y potencia (x**y).
65