87
Curso Básico de Intel Visual FORTRAN

Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled

Embed Size (px)

Citation preview

Page 1: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled

Curso Básico de Intel Visual FORTRAN

Page 2: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled

Contenido

• Antecedentes• Entrada y Salida de Datos• Programación en FORTRAN• Códigos Fuente• Tipo de Datos• Datos Intrínsicos• Variables• Arreglos• Control de Ejecución• Funciones, Subrutinas, Módulos y Bloques de datos

Page 3: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled

Antecedentes

• FORTRAN (Formula Translator)• Lenguaje orientado a procedimientos que tienen una gramática bien definida• Desarrollado para describir e implementar algoritmos, en especial, aquellos de naturaleza ingenieril o científica.

• Muy estable y transportable• Primer lenguaje de programación de alto nivel

Page 4: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled

Antecedentes

• FORTRAN I• Aparece en 1954. El grupo que desarrollo el lenguaje fue encabezado por John Backs.

• FORTRAN II• Aparece en 1958

• FORTRAN III• Nunca se popularizó

• FORTRAN IV• Aparece en 1956 y se convirtió en el lenguaje más popular. Fue el primer lenguaje que se estandarizó, facilitando la transportabilidad.

Page 5: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled

Antecedentes

• FORTRAN 66• Primer documento estándar que describía la existencia del FORTRAN IV (1966).

• FORTRAN 77• (~1975) Actualización del documento del FORTRAN 66, agregando nuevas características al FORTRAN IV.

• FORTRAN 90• Nueva versión sacada en 1992 e incluye FORTRAN 77 más otros estándares.

• FORTRAN 95• Se agregan algunas pequeñas mejoras al FORTRAN 90

• FORTRAN 2003• 30 de noviembre de 2004 Historia Lenguajes

Page 6: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled

Intel Visual Fortran

Page 7: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled

IVF

Page 8: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled

IVF

Page 9: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled

IVF

Page 10: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled

IVF

Page 11: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled

Entrada y Salida de Datos

• Existen tres métodos para especificar como los datos son transferidos:

• READ (lectura de datos)• WRITE (escritura de datos)• PRINT (escritura de datos)

Page 12: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled

Entrada y Salida de DatosREAD• READ ([UNIT=]unit,[FMT=]fmt) iolist

• Unidades (unit): archivos, teclado y pantalla(*) o (0), teclado (5), pantalla(6)• Formato (fmt): label del FORMAT• Lista de variables de entrada (iolist)

• Ejemplos:• READ(*,*) a, b, c• READ(2,*) a, b, c    ! Lee de la unidad 2

Page 13: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled

Entrada y Salida de DatosWRITE• WRITE([UNIT=]unit,[FMT=]fmt) iolist

• Unidades (unit): archivos, teclado y pantalla(*) o (0), teclado (5), pantalla(6)• Formato (fmt): label del FORMAT• Lista de variables de entrada (iolist)

• EjemplosWRITE(*,*) ‘Hola’, aWRITE(2,*) a, 23.2, ‘Hola’   ! Escribe en la unidad 2WRITE(*,20) a

20 FORMAT(‘a =‘,\)WRITE(*,’(A\)’) ‘a =‘WRITE(*,30) a, b

30 FORMAT(‘a=‘,I2,’   b=‘, F6.1)

Page 14: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled

Entrada y Salida de DatosPRINT• Tiene la misma función que el WRITE, sólo que imprime nada más en la pantalla.

• Ejemplos similaresPRINT xWRITE(*,*) x

Page 15: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled

Entrada y Salida de DatosFORMAT[r]Iw[.m] Integer values[r]Bw[.m] Binary values[r]Ow[.m] Octal values[r]Zw[.m] Hexadecimal values[r]Fw.d Real values[r]Ew.d[Ee] Real values with exponents[r]Enw.d[Ee] Real values in engineering notation[r]Esw.d[Ee] Real values in scientific notation[r]Gw.d[Ee] Real values, extended notation[r]Dw.d Double‐precision real values[r]Lw Logical values[r]A[w] Character values

r = veces que se repite, w = ancho de campo, m = número de ceros que preceden, d = número de dígitos después del punto decimal, e = exponente

nX = n espacios en blanco, $ ó \ = continúan en el mismo renglón 

Page 16: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled

Códigos Fuente

• Los códigos se pueden escribir en dos formas de códigos fuente:• Fijo (fixed form source)• Libre (free form source)

• Código Fijo• FORTRAN 77• .FOR• 72 caracteres por renglón• Restricciones de posición‐columna

Page 17: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled

Códigos Fuente

• Código Libre• No tiene restricciones de posición‐columna• Líneas de 132 caracteres• Los espacios son considerados entre nombres, constantes o etiquetas para separarlos de otras palabras

• .F90• Un estatuto puede contener hasta 7200 caracteres ya sea 100 líneas continuas de 72 columnas o 54 líneas continuas de 132 columnas

Page 18: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled

IVF

Page 19: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled

IVF

Page 20: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled

IVF

Page 21: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled

Programación en FORTRAN

• Caracteres especiales:espacio = + ‐ * / ( ) , . ‘ : ! “ % & ; < > ? 

• Nombres• Identifica: variables, arreglos, blocks comunes, funciones, unidades de programa, argumentos dummy, nombre de constantes, lista de grupos, y tipos de derivados

• Primer carácter alfabético o $, resto alfanumérico• 31 caracteres máximo (CVF hasta 63)

Page 22: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled

Programación en FORTRAN

• Constantes• Es un valor que permanece sin cambiar a través de la ejecución de un programa (ejemplo pi)

• Operadores• Aritméticas (**, *, /, +, ‐)• String concatenation (//)• Lógica (.AND., .NOT., .OR., .EQV., .NEQV., .XOR.)• Relaciónales (.EQ., .NE., .LT., .LE., .GT., .GE., ==, /=, <, <=, >, >=)

Page 23: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled

Programación en FORTRAN

• Etiquetas (labels)• Es una secuencia de uno o cinco dígitos, al menos uno de ellos deberá ser diferente de cero

• Cualquier estatuto puede empezar con un label (aunque no lo requiera); sin embargo, sólo las etiquetas de ejecución o estatutos FORMAT pueden ser referenciadas.

• El copilador reconoce 99,999 únicas etiquetas.• Una etiqueta no puede ser repetida dentro de un mismo programa

Page 24: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled

Programación en FORTRAN

• Delimitadores• Encierran y separan elementos de una lista• Un par de diagonales, paréntesis o una combinación de ambas.

• ( . . .), / . . . /, [ . . .], (/ . . ./)

• Indicadores! Comentario (se pone en cualquier lugar del código)& Continuación de línea (se pone al final de la línea fuente)

Page 25: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled

Tipos de Datos

• Cada constante, variable, arreglo o función referenciada tiene un tipo de datos

• Las propiedades de los tipos de datos:• Un nombre• Un juego de valores• Una forma de representar los valores constantes• Un juego de operaciones para manipular e interpretar los valores

Page 26: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled

Tipos de Datos

• Ejemplo de un tipo de declaraciónREAL var_real

• Definición de la variablevar_real = 25.44

• Variables Implícitas• Predefinidas por el lenguaje FORTRAN• Empiezan con: enteros (I – N), reales (A – H, O – Z, $)

• Variables Explícitas• Declaradas por el usuario

Page 27: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled

Datos Intrínsecos

• Enteros• INTEGER, INTEGER(1), INTEGER(2), e INTEGER(4).

• Reales• REAL, DOUBLE PRECISION, REAL(4), y REAL(8).

• Complejos• COMPLEX, COMPLEX(4), DOUBLE COMPLEX, y COMPLEX(8)

• Carácter• CHARACTER[*n] donde n es la longitud de la palabra (string)

• Lógica• LOGICAL, LOGICAL(1), LOGICAL(2), y LOGICAL(4)

Page 28: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled

Variables

• Enteros• INTEGER o INTEGER(1) o INTEGER*1

• Bytes = 1, valor = ‐128 a 127• INTEGER(2) o INTEGER*2

• Bytes = 2, valor = ‐32,768 a 32,767• INTEGER(4) o INTEGER*4

• Bytes = 4, valor = ‐2,147,483,684 a 2,147,483,647• INTEGER(8) o INTEGER*8 (sólo sistemas ALPHA)

• Bytes = 8, valor = ‐9,223,372,036,854,775,808 a 9,223,372,036,854,775,807

Page 29: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled

Variables

• Reales• REAL o REAL(4) o REAL*4

• Bytes = 4, precisión = 7 dígitos• Números negativos desde aproximadamente:

‐3.4028235E+38 a ‐1.1754944E‐38 • Cero• Números positivos desde aproximadamente:

+1.1754944e‐38 a +3.4028235e+38• REAL(8) o REAL*8 o DOUBLE PRECISION

• Bytes = 8, precisión = 15 dígitos• Números negativos desde aproximadamente:

‐1.797693134862316D+308 a ‐2.225073858507201D‐308 • Cero• Números positivos desde aproximadamente:

+2.225073858507201D‐308 a +1.797693134862316D+308• REAL(16) o REAL*16 (sólo en unix y vms)

Page 30: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled

Arreglos

• Un arreglo es una variable con al menos una dimensión• Ejemplo de declaración de arreglos

• REAL A(10,2,3)• DIMENSION A(10,2,3)• REAL, DIMENSION (10,2,3) :: A• REAL A(‐1:8, 0:1, ‐1:1)

• mínimo número : máximo número (default mínimo =1)

Page 31: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled

Control de Ejecución

• Blocks de construcción• DO; END DO o CONTINUE• DO WHILE; END DO• SELECT CASE; CASE; END SELECT• IF; END IF• WHERE; END WHERE (usado en arreglos)• Combinación de ellos.

Page 32: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled

Control de EjecuciónDO y DO WHILE• DO

[nombre:] DO [label] variable=bajo,alto[,inc]block

[label]      END DO ó CONTINUE

• DO WHILEDO [label] WHILE (exp‐lógica)

block[label] END DO

Page 33: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled

Control de EjecuciónEjemplos DODO k = ‐30, ‐60, ‐3

int = j / 3isb = ‐9 – karray(isb) = MyFunc (int)

END DO 

LOOP_1: DO I = 1, NA(I) = C * B(I)

END DO LOOP_1 

Page 34: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled

Control de EjecuciónEjemplos DO WHILEDO WHILE (I .GT. J)

ARRAY(I,J) = 1.0I = I ‐ 1 

END DO

DO 10 WHILE (I .GT. J)ARRAY(I,J) = 1.0I = I – 1

10 END DO

CHARACTER(1) inputinput = ' ' DO WHILE ((input .NE. 'n') .AND. (input .NE. 'y')) WRITE (*, '(A)') 'Enter y or n: ' READ (*, '(A)') input 

END DO 

Page 35: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled

Control de EjecuciónSELECT CASE[nombre:] SELECT CASE (expresión)

CASE [selector]block

[CASE DEFAULTblock]

END SELECT [nombre]

expresión – escalar entero, lógico o carácterselector – escalares enteros, lógicos o caracteres que inicializan la expresión. Expresiones enteras o carácter pueden representarse de la siguiente forma:bajo:alto  (bajo <= selector <= alto)bajo:        (selector >= bajo):alto         (selector <= alto)

Page 36: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled

Control de EjecuciónEjemplos SELECT CASECHECK_STATUS: SELECT CASE (I)

CASE (:‐1) STATUS_CODE = ‐1CASE (0) STATUS_CODE = 0CASE (1:) STATUS_CODE = 1

END SELECT CHECK_STATUS

SELECT CASE (J)CASE (1, 3:7, 9)      ! Valores: 1, 3, 4, 5, 6, 7, 9

CALL SUB_ACASE DEFAULT

CALL SUB_BEND SELECT 

Page 37: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled

Control de EjecuciónIF[nombre:] IF (condición) THEN

block[ELSE IF (condición) THENblock]…

[ELSEblock]

END IF [nombre]

Page 38: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled

Control de EjecuciónEjemplos IFIF (i .LT. 10) THEN 

! the next two statements are only executed if i < 10 

j = i slice = TAN (angle)

END IF

Formato Ejemplo

IF (expr) THEN              IF (NAME .LT. 'N') THEN

block1                            IFRONT = IFRONT + 1

FRLET(IFRONT) = NAME(1:2)

ELSE                             ELSE

block2                            IBACK = IBACK + 1

END IF                           END IF

Formato                        Ejemplo

IF (expr) THEN             IF (A .GT. B) THEN

block1                          D = B

F = A – B

ELSE IF (expr) THEN    ELSE IF (A .GT. B/2.) THEN

block2                          D = B/2.

F = A ‐ B/2.

END IF                            END IF 

Page 39: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled

Control de EjecuciónWHERE• Para usarse con arreglos.

[nombre:] WHERE (expresión)asignación

[ELSEWHEREasignación]

END WHERE

Page 40: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled

Control de EjecuciónEjemplos WHEREINTEGER A, B, CDIMENSION A(5), B(5), C(5)DATA A /0,1,1,1,0/DATA B /10,11,12,13,14/C = ‐1WHERE(A .NE. 0) C = B / AEl resultado del arreglo C contiene: ‐1,11,12,13, y ‐1.

DIMENSION PRESSURE(1000), TEMP(1000), PRECIPITATION(1000)WHERE(PRESSURE .GE. 1.0)

PRESSURE = PRESSURE + 1.0TEMP = TEMP ‐ 10.0

ELSEWHEREPRECIPITATION = .TRUE. 

ENDWHERE 

Page 41: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled

Control de Ejecución

• Otros Estatutos• CYCLE [nombre del DO]

• Interrumpe la ejecución del DO• Ejemplo:DO I =1, 10A(I) = C + D(I)IF (D(I) < 0) CYCLE ! If true, the next statement is omittedA(I) = 0 ! from the loop and the loop is tested again. 

END DO

Page 42: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled

Control de EjecuciónEjemplo Cycle

sample_loop: do i = 1, 5print *,iif( i .gt. 3 ) cycle sample_loopprint *,i

end do sample_loop print *,'done!' 

!output: ! 1 ! 1 ! 2 ! 2 ! 3 ! 3 ! 4 ! 5 ! done!

Page 43: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled

Control de EjecuciónOtros Estatutos• EXIT [nombre del DO]

• Termina la ejecución del DO• Ejemplo

LOOP_A : DO I = 1, 15N = N + 1 IF (N > I) EXIT LOOP_A

END DO LOOP_A 

• STOP [mensaje]• Termina la ejecución del un programa antes del END

Page 44: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled

IVF

• Resolver las raíces de una función Cuadrática:ax2+bx+c=0

• Solución:x1=(‐b+sqrt(b2‐4ac))/(2a)x2=(‐b‐sqrt(b2‐4ac))/(2a)

• Condición:b2‐4ac>=0

Page 45: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled

IVF

Page 46: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled

IVF

• Deshabilitar persistencia en salida de windows. Agregar al programa lo siguiente:

USE IFQWIN ! Accesa las librerías gráficas

Implicit none ! Deshabilita las variables de default

Integer(4) i4 ! Variable dommy

I4=setexitqq(qwin$exitnopersist)

• BUILD project…START… • Loop Forever:Do while(.true.) ! Loop forever

End DO

• BUILD project…START…

Page 47: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled
Page 48: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled

Intel Fortran

• Cambiar el título a ventana principal:USE IFWIN !Accesa las librerías de Windows

logical l

l=setwindowtext(gethwndqq(qwin$framewindow), &

“mi ventana”C)

• BUILD project…START…

Page 49: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled
Page 50: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled

Funciones

• Una función es un subprograma que es llamado para ejecutar una operación y regresar un valor (como resultado de la función) y así evaluar la expresión[prefijo] FUNCTION nombre (resultado)

…operaciones…

END

Page 51: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled

Intel Fortran

• Control de la Ventana PrincipalFunction Initialsettings()

USE IFQWIN

type(qwinfo) qwi

qwi%type=qwin$max ! Maximiza el tamaño de la ventana

i=setwsizeqq(qwin$framewindow,qwi) !Pone tamaño ventana

initialsettings=.true.

END

• BUILD project…START…

Page 52: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled
Page 53: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled

• Los qwi%type pueden ser los siguientes:• QWIN$MIN – Minimiza la pantalla• QWIN$MAX – Maximiza la pantalla• QWIN$RESTORE – Regresa la ventana minimizada a su tamaño previo• QWIN$SET – Valores dados por el programador

Page 54: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled

Intel Fortran

• Agregar menú personal a la ventana principallogical(4) r

r=appendmenuqq(1,$menuenabled,’File’C,nul)

r=appendmenuqq(1,$menuenabled,’Print’C,winprint)

r=appendmenuqq(1,$menuseparator,’’C,nul)

r=appendmenuqq(1,$menuenabled,’E&xit’C,winexit)

r=appendmenuqq(2,$menuenabled,’Menu2’C,nul)

• BUILD project…START…

Page 55: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled
Page 56: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled

Opciones de las constantes que indican el estado del menú• $MENUGRAYED – Deshabilita y pone en gris la opción del menú. • $MENUDISABLED – Deshabilita pero no pone en gris las opción del menú. 

• $MENUENABLED – Habilita la opción del menú. • $MENUSEPARATOR – Dibuja una barra separadora. • $MENUCHECKED – Pone una marca de checado a la opción del menú. • $MENUUNCHECKED – Remueve la marca de checado en la opción del menú. 

Page 57: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled

Rutinas predeterminadas para los menús

• WINPRINT ‐ Prints the program. • WINSAVE ‐ Saves the program. • WINEXIT ‐ Terminates the program. • WINSELECTTEXT ‐ Selects text from the current window. • WINSELECTGRAPHICS ‐ Selects graphics from the current window. • WINSELECTALL ‐ Selects the entire contents of the current window. • WINCOPY ‐ Copies the selected text and/or graphics from the current window to the Clipboard. • WINPASTE ‐ Allows the user to paste Clipboard contents (text only) to the current text window of the active window during a READ.

Page 58: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled

Rutinas predeterminadas para los menús

• WINCLEARPASTE ‐ Clears the paste buffer. • WINSIZETOFIT ‐ Sizes output to fit window. • WINFULLSCREEN ‐ Displays output in full screen. • WINSTATE ‐ Toggles between pause and resume states of text output. • WINCASCADE ‐ Cascades active windows. • WINTILE ‐ Tiles active windows. • WINARRANGE ‐ Arranges icons. • WINSTATUS ‐ Enables a status bar. • WININDEX ‐ Displays the index for QuickWin help. • WINUSING ‐ Displays information on how to use Help. • WINABOUT ‐ Displays information about the current QuickWin application. • NUL ‐ No callback routine. 

Page 59: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled
Page 60: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled

Menú “about”

• Para cambiar la información en el menú “about” de la Ayuda (WINABOUT) usar el siguiente comando en el programa principal:i4=aboutboxqq(‘Hecho por mi…’)

• Copilar, Construir, Ejecutar…

Page 61: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled
Page 62: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled
Page 63: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled

Icono

• Para anexar un icono al archivo ejecutable:1. Archivo – Agregar nuevo elemento2. Seleccionar Resource y abrir con nuevo nombre y con extensión .rc3. Seleccionar Edición – Agregar Recursos, agregar un Nuevo Icon4. Seleccionar la pestaña de Recursos.rc5. Nombrar el icono en ID, en Propiedades (Esquina inferior derecha) sustituyendo el nombre 

actual por:a) “frameicon” para la ventana principal (usar comillas)b) “childicon” para las otras ventanas (usar comillas)

6. Poner nombre al icono en Filename con extensión .ico7. Salvar el Recurso en Guardar Recursos.rc8. Dibujar el icono o importar un .bmp9. Generar solución

Page 64: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled
Page 65: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled
Page 66: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled
Page 67: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled
Page 68: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled

Control de la Ventana Child

TYPE (qwinfo) qwi

OPEN(1, file='user', title='Mi Ventana 1') ! Abre Ventana 1

qwi%h = 28 ! Altura de la Ventana 1

qwi%w = 97 ! Ancho de la Ventana 1

qwi%type = QWIN$SET ! Establece los valores de la Ventana 1

i4 = SetWSizeQQ(1, qwi) ! Pone el tamaño de la Ventana 1

write(1,*) ' hola'

Page 69: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled
Page 70: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled
Page 71: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled

Diálogos1. En la carpeta de Recursos.rc dar click con el botón derecho del mouse y seleccionar Agregar 

Recurso.2. Seleccionar un nuevo Dialog.3. Guardar Todo.4. Seleccionar Proyecto‐Agregar Elemento Existente, seleccionar en Tipo de Archivos “Todos los 

Archivos (*.*)”, seleccionar el archivo “resouce.h”.5. En el “Explorador de Solución” del lado derecho superior, seleccionar con el botón derecho 

del mouse “resource.h” y seleccionar “Propiedades”.6. Cambiar los siguientes renglones:

Command Line: deftofd resource.h resource.fdDescription: Generating Fortran include file…Outputs: resource.fd

7. Click “Ok”

Page 72: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled
Page 73: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled
Page 74: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled
Page 75: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled

Diálogos

1. Seleccionar Ver – Cuadro de Herramientas. Moverlo a donde no estorbe.2. Seleccionar el diálogo y en propiedades identificar el diálogo con un nombre (ID: 

IDD_Temperaturas)3. Agregar controles al diálogo. Ejemplo

‐ Incrementar el tamaño del diálogo‐ Seleccionar “Group Box” y agregarlo al diálogo‐ Cambiarle el nombre al Group Box en propiedades – Caption (Ej. ponerle: Entrada de Datos)‐ Identificar el Group Box con un nombre (ID: IDC_EntDatos)

4. Cada vez que se anexe un control, en propiedades del control, cambiarle el nombnre en “Caption” e identificarlo en “ID”

Page 76: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled
Page 77: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled
Page 78: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled

Diálogos

• Haciendo uso de los controles “Static Text”, “Edit Control” y “Group Box”, terminar el diálogo e identificarlo los controles de la siguiente forma:

• Edit Text: Temperatura (°C) =; ID: IDC_TTGC• Edit Control: ID: IDC_TGC• Group Box: Resultados; ID: IDC_Resultados• Edit Text: Temperatura (°F) =; ID: IDC_TTGF (Abrir más este cuadro a la derecha para agregar espacio para el resultado)

• Button: Calcular; ID: IDC_Calcular• Borrar el botón Cancelar• Cambiar nombre y ID al Botón Aceptar: Terminar; ID: IDCLOSE

• Guardar Todo

Page 79: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled
Page 80: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled

Diálogos

• En la Función “Initialsettings”, cambiamos el nombre del “Menu2” por el de “Temperaturas” y agregamos al menú lo siguiente:r=appendmenuqq(2,$menuenabled,'°C a°F'C,DoDialog)

• Además agregamos el comandoExternal DoDialog

Page 81: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled
Page 82: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled

Diálogos• Creamos la Subrutina DoDialog

SUBROUTINE DoDialog()

USE IFLOGM 

IMPLICIT NONE

INCLUDE 'RESOURCE.FD'

INTEGER retint

LOGICAL retlog

TYPE (dialog) dlg

EXTERNAL ActualizaDlg

IF (.not.DlgInit(idd_Temperaturas,dlg)) THEN

WRITE(*,*) "Error: No hay Diálogo"

ELSE

retlog = DlgSet(dlg,IDC_TGC,"24")

retlog = DlgSetSub(dlg,IDC_Calcular,ActualizaDlg)

retint = DlgModal(dlg)

CALL DlgUninit(dlg)

END IF

END SUBROUTINE DoDialog

Page 83: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled
Page 84: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled

Diálogos

• Creamos la Subrutina ActualizaDlg

Page 85: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled
Page 86: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled

Diálogos• Copilar para obtener el siguiente resultado:

Page 87: Curso Básico Intel Visual FORTRAN - her.itesm.mx · •QWIN$SET –Valores dados por el programador. Intel Fortran •Agregar menú personal a la ventana principal logical(4) r r=appendmenuqq(1,$menuenabled

Curso Básico de Intel Visual FORTRAN