Descarga la aplicación para disfrutar aún más
Esta es una vista previa del archivo. Inicie sesión para ver el archivo original
F2008-Apli-F1.F90! Uso de Excel desde Fortran PROGRAM aplicaciones IMPLICIT NONE INTEGER ifail CHARACTER(LEN=60) orden LOGICAL existe PRINT*, 'Crear en Excel un fichero llamado TablaF.prn y guardarlo como' PRINT*, '"Texto con formato delimitado por espacios" *.prn' READ* ! Segun el sistema operativo y aplicaciones instaladas la ruta del ! programa EXCEL.EXE puede ser ligeramente diferente. ! Las dos opciones de invocarla son validas. orden = '"C:\PROGRAM FILES\MICROSOFT OFFICE\OFFICE16\EXCEL.EXE"' !orden = 'C:\PROGRA~1\MICROS~1\OFFICE16\EXCEL' CALL EXECUTE_COMMAND_LINE (orden, CMDSTAT=ifail) READ* INQUIRE (FILE='TablaF.prn', EXIST=existe) IF (existe) THEN PRINT '(/A/)', 'El contenido del fichero Tabla.prn es:' CALL EXECUTE_COMMAND_LINE ('TYPE TablaF.prn', CMDSTAT=ifail) ELSE PRINT*, 'El fichero TablaF.prn no existe' ENDIF ENDPROGRAM aplicaciones F2008-Apli-F2.F90! Invocacion de aplicaciones PROGRAM aplicaciones IMPLICIT NONE INTEGER ifail CHARACTER(LEN=60) orden LOGICAL existe PRINT*, 'Uso de la calculadora' orden = 'c:\windows\system32\calc' CALL EXECUTE_COMMAND_LINE (orden, CMDSTAT=ifail) READ* PRINT*, 'Dibujo con PAINT' orden = 'c:\windows\system32\mspaint' CALL EXECUTE_COMMAND_LINE (orden, CMDSTAT=ifail) READ* PRINT*, 'Crear el fichero DatosF.txt' orden = 'c:\windows\system32\notepad' CALL EXECUTE_COMMAND_LINE (orden, CMDSTAT=ifail) READ* INQUIRE (FILE='DatosF.txt', EXIST=existe) IF (existe) THEN PRINT '(/A/)', 'El contenido del fichero "DatosF.txt" es:' orden = 'TYPE DatosF.txt' CALL EXECUTE_COMMAND_LINE (orden, CMDSTAT=ifail) ELSE PRINT*, 'No has creado el fichero indicado' ENDIF PRINT* PRINT*, 'Salida al Sistema Operativo' orden = 'c:\windows\system32\cmd' CALL EXECUTE_COMMAND_LINE (orden, CMDSTAT=ifail) READ* ENDPROGRAM aplicaciones F2008-SO-F1.F90! Ejecucion de comandos del sistema operativo PROGRAM comandos IMPLICIT NONE INTEGER ifail CHARACTER(LEN=60) orden PRINT*, 'Directorio actual' CALL EXECUTE_COMMAND_LINE ('dir>ficheros.txt') READ* PRINT*, 'Copia de un fichero' orden = 'copy ficheros.txt *.sal' CALL EXECUTE_COMMAND_LINE (orden,CMDSTAT=ifail) PRINT*, 'ifail = ', ifail READ* CALL EXECUTE_COMMAND_LINE ('cls') orden = 'type ficheros.sal' CALL EXECUTE_COMMAND_LINE (orden) PRINT*, 'ifail = ', ifail ENDPROGRAM comandos F2008-SO-F2.F90! Ejecucion de otros programas Fortran PROGRAM comandos IMPLICIT NONE INTEGER ifail CHARACTER(LEN=60) orden PRINT*, 'Calculo del nif. Fichero F-nif.exe' CALL EXECUTE_COMMAND_LINE ('F-nif',CMDSTAT=ifail) PRINT*, 'ifail = ', ifail READ* PRINT*, 'Criba de Eratostenes. Fichero F-criba.exe' orden = 'F-criba' CALL EXECUTE_COMMAND_LINE (orden,CMDSTAT=ifail) PRINT*, 'ifail = ', ifail ENDPROGRAM comandos F2008-SO-F3.F90! Ejecucion de otros programas C PROGRAM comandos IMPLICIT NONE INTEGER ifail CHARACTER(LEN=60) orden PRINT*, 'Calculo del nif. Fichero C-nif.exe' CALL EXECUTE_COMMAND_LINE (CMDSTAT=ifail,COMMAND='C-nif') PRINT*, 'ifail = ', ifail READ* PRINT*, 'Criba de Eratostenes. Fichero C-criba.exe' orden = 'C-criba' CALL EXECUTE_COMMAND_LINE (orden,CMDSTAT=ifail) PRINT*, 'ifail = ', ifail ENDPROGRAM comandos F2008-SO-F4.F90! Ejecucion de comandos y programas en C y Fortran PROGRAM varios IMPLICIT NONE INTEGER ifail CHARACTER(LEN=60) orden PRINT*, 'Tabla de la funcion gamma en Fortran. Fichero F-tablagamma.exe' CALL EXECUTE_COMMAND_LINE ('F-tablagamma',CMDSTAT=ifail) READ* PRINT*, 'Ajuste lineal a la funcion gamma en C. Fichero C-recta.exe' orden = 'C-recta' CALL EXECUTE_COMMAND_LINE (orden,CMDSTAT=ifail) CALL EXECUTE_COMMAND_LINE ('dir f*.*') ENDPROGRAM varios F-criba.F90PROGRAM eratostenes IMPLICIT NONE INTEGER, PARAMETER:: n=10**7 INTEGER i, j, k, p(n) DOUBLE PRECISION t1, t2 OPEN (11, FILE='primos.txt') CALL CPU_TIME (t1) p(1:n) = 0 ; k = 2 DO IF (2*k > n) EXIT p(2*k:n:k) = 1 ! numeros compuestos DO j = k+1, n IF (p(j) == 0) THEN k = j EXIT ENDIF ENDDO ENDDO CALL CPU_TIME (t2) PRINT*, 'tiempo de calculo = ', t2-t1 k = COUNT(p(2:n)==0) PRINT '(/A,I10,A,I10)', 'Hay', k, ' numeros primos no mayores que', n WRITE (11,'(I10)') PACK(MERGE((/(i,i=2,n)/),0,p(2:n)==0),p(2:n)==0) ENDPROGRAM eratostenes F-nif.F90MODULE datos INTEGER dni CHARACTER nif CHARACTER(LEN=23) linea ENDMODULE datos ! Programa principal WINAPP PROGRAM letra_nif USE datos INTEGER, EXTERNAL :: calculo, ayuda i = WINIO@('%ca[Calculo de la letra del NIF]&') i = WINIO@('%mn[&Terminar]&','EXIT') i = WINIO@('%mn[&Ayuda[&Explicación]]&',ayuda) i = WINIO@('%il&',0,99999999) i = WINIO@('DNI= %rd&',dni) i = WINIO@('%ta%`^bt[&Nif]&',calculo) i = WINIO@('%2nl%ob%18st%cb',linea) ENDPROGRAM letra_nif ! Calculo de la letra del NIF INTEGER FUNCTION calculo() USE datos CHARACTER, DIMENSION(0:22), PARAMETER:: letra = & (/ 'T', 'R', 'W', 'A', 'G', 'M', 'Y', 'F', 'P', 'D', 'X', 'B', & 'N', 'J', 'Z', 'S', 'Q', 'V', 'H', 'L', 'C', 'K', 'E' /) nif = letra(MOD(dni,23)) WRITE (linea,'(A,I8,1X,A)') ' El NIF es = ', dni, nif CALL WINDOW_UPDATE@(linea) calculo = 1 ENDFUNCTION calculo ! Ayuda del programa INTEGER FUNCTION ayuda() INTEGER i i = WINIO@('%ca[Instrucciones]&') i = WINIO@('%fn[Times New Roman]%nl&') i = WINIO@('El DNI debe estar entre 0 y 99 999 999&') i = WINIO@('%2nl%cn%5`bt[OK]') ayuda = 1 ENDFUNCTION ayuda F-recta.F90PROGRAM recta_de_regresion IMPLICIT NONE INTERFACE SUBROUTINE recta (x, y, p, q) DOUBLE PRECISION, DIMENSION(:), INTENT(IN):: x, y DOUBLE PRECISION, INTENT(OUT):: p, q ENDSUBROUTINE recta ENDINTERFACE DOUBLE PRECISION x(1000), y(1000) DOUBLE PRECISION:: a, b INTEGER i OPEN (11, FILE='C-tablagamma.txt') READ (11,*) (x(i),y(i),i=1,SIZE(x)) CALL recta (x, y, a, b) PRINT '(A)', 'Recta de regresion: ' PRINT '(2(A,F8.5))', 'Gamma(x) = ', a, '*x +', b ENDPROGRAM recta_de_regresion ! ====================================================================== ! Calculo de la recta de regresion minimo cuadratica SUBROUTINE recta (x, y, p, q) IMPLICIT NONE ! Argumentos DOUBLE PRECISION, DIMENSION(:), INTENT(IN):: x, y DOUBLE PRECISION, INTENT(OUT):: p, q ! Variables locales DOUBLE PRECISION:: xm, ym ! ---------------------------- ! Primera sentencia ejecutable xm = SUM(x) / SIZE(x) ym = SUM(y) / SIZE(y) p = SUM((x-xm)*(y-ym)) / SUM((x-xm)**2) q = ym - p*xm ENDSUBROUTINE recta F-tablagamma.F90! Tabla de la funcion gamma PROGRAM tabla IMPLICIT NONE INTEGER i DOUBLE PRECISION x, g, lgam OPEN (11, FILE='F-tablagamma.txt') DO i = 1, 1000 x = 1.d0 + 1.d-3*i; g = EXP(lgam(x)); WRITE (11, '(F6.3,2X,F25.15)') x, g ENDDO ENDPROGRAM tabla ! ====================================================================== ! Adaptacion de gammln, Numerical Recipes Third Edition. Cap 6.1 DOUBLE PRECISION FUNCTION lgam (x) ! ln[Gamma(xx)] para x > 0 DOUBLE PRECISION, INTENT(IN):: x INTEGER j DOUBLE PRECISION tmp, y, ser DOUBLE PRECISION, PARAMETER:: g=5.2421875d0, & log2pi=0.91893853320467274d0, s0=0.999999999999997092d0 DOUBLE PRECISION, DIMENSION(14), PARAMETER:: c = (/ & 57.1562356658629235d0, -59.5979603554754912d0, & 14.1360979747417471d0, -0.491913816097620199d0, & .339946499848118887d-4, .465236289270485756d-4, & -.983744753048795646d-4, .158088703224912494d-3, & -.210264441724104883d-3, .217439618115212643d-3, & -.164318106536763890d-3, .844182239838527433d-4, & -.261908384015814087d-4, .368991826595316234d-5 /) IF (x <= 0) STOP 'Argumento invalido en in lgam' y = x tmp = x + g tmp = (x+0.5d0)*LOG(tmp) - tmp ser = s0 DO j = 1, 14 y = y + 1.d0 ser = ser + c(j)/y ENDDO lgam = tmp + log2pi + LOG(ser/x) ENDFUNCTION lgam SO-C1.C SO-C1.C/* Ejecucion de comandos del sistema operativo */ #include <stdio.h> #include <stdlib.h> #include <string.h> main () { char orden[60]; printf ("Directorio actual\n"); system ("dir"); getchar(); printf ("Copia de un fichero\n"); strcpy (orden,"copy SO-C1.C copia.txt"); system (orden); getchar(); system ("cls"); strcpy (orden,"type copia.txt"); system (orden); } SO-C2.C SO-C2.C/* Ejecucion de otros programas C */ #include <stdio.h> #include <stdlib.h> main () { int codigo; printf ("Calculo del NIF. Fichero C-nif.exe\n"); codigo = system ("C-nif"); printf ("Codigo = %d", codigo); getchar(); printf ("\nCriba de Eratostenes. Fichero C-criba.exe"); codigo = system ("C-criba"); printf ("Codigo = %d", codigo); getchar(); printf ("Copia de ficheros\n"); codigo = system ("C-copia"); printf ("codigo tras la copia = %d\n", codigo); } SO-C3.C SO-C3.C/* Ejecucion de otros programas Fortran */ #include <stdio.h> #include <stdlib.h> main () { printf ("Calculo del NIF. Fichero F-nif.exe\n"); system ("F-nif"); getchar(); printf ("Criba de Eratostenes. Fichero F-criba.exe\n"); system ("F-criba"); getchar(); } SO-C4.C SO-C4.C/* Ejecucion de comandos y programas en C y Fortran */ #include <stdio.h> #include <stdlib.h> main () { printf ("Tabla de la funcion gamma en C. Fichero C-tablagamma.exe\n"); system ("C-tablagamma"); getchar(); printf ("Ajuste lineal a la funcion gamma en Fortran. Fichero F-recta.exe\n"); system ("F-recta"); system ("del *.obj"); system ("del *.lst"); system ("del ERRORLOG"); system ("del SLINKLOG"); system ("dir/p"); } SO-C5.C SO-C5.C/* Codigo devuelto por el sistema operativo */ #include <stdio.h> #include <stdlib.h> main () { int codigo; codigo = system ("cls"); printf ("codigo tras cls = %d\n", codigo); codigo = system ("abcd"); printf ("codigo tras abcd = %d\n", codigo); } Apli-C1.C Apli-C1.C/* Uso de Excel desde C */ #include <stdio.h> #include <stdlib.h> #include <string.h> main () { int ch; char orden[80]; FILE *f1; printf ("Crear con Excel el fichero TablaC.prn y guardarlo como\n"); printf ("'Texto con formato delimitado por espacios' *.prn\n"); getchar(); /* Segun el sistema operativo y aplicaciones instaladas la ruta del programa EXCEL.EXE puede ser ligeramente diferente. Las dos opciones de invocarla son validas. */ strcpy (orden,"\"C:\\PROGRAM FILES\\MICROSOFT OFFICE\\OFFICE16\\EXCEL\""); /* strcpy (orden,"C:\\PROGRA~1\\MICROS~1\\OFFICE16\\EXCEL"); */ system (orden); getchar(); f1 = fopen ("TablaC.prn", "r"); if (f1) { printf ("El contenido del fichero TablaC.prn es:\n"); system ("TYPE TablaC.prn"); fclose (f1); } else printf ("El fichero TablaC.prn no existe\n"); } Apli-C2.C Apli-C2.C/* Invocacion de aplicaciones */ #include <stdio.h> #include <stdlib.h> #include <string.h> main () { int ch; char orden[60]; FILE *f1; printf ("Uso de la calculadora\n"); strcpy (orden, "c:\\windows\\system32\\calc"); system (orden); getchar(); printf ("Dibujo con PAINT\n"); strcpy (orden, "c:\\windows\\system32\\mspaint"); system (orden); getchar(); printf ("Crear el fichero DatosC.txt\n"); strcpy (orden, "c:\\windows\\system32\\notepad"); system (orden); getchar(); f1 = fopen ("DatosC.txt", "r"); if (f1) { printf ("El contenido del fichero DatosC.txt es:\n"); strcpy (orden,"TYPE DatosC.txt"); system (orden); fclose (f1); } else printf ("No has creado el fichero indicado\n"); printf ("\nSalida al Sistema Operativo\n"); strcpy (orden, "c:\\windows\\system32\\cmd"); system (orden); getchar(); } Arg-C1.C Arg-C1.C/* Llamada desde C a la subrutina DUVMIF(IMSL). Desde DUVMIF se llama a una funcion fimsl escrita en C */ #include <math.h> #include <stdio.h> #include <stdlib.h> extern "C" void DUVMIF ( double (*) (double *), /* f */ double *, /* xguess */ double *, /* step */ double *, /* bound */ double *, /* xacc */ int *, /* maxfn */ double * /* x */ ); extern int ifun; /* Argumentos en linea de comandos: argv[0] = es el nombre del programa ejecutable argv[1] = numero de funcion a minimizar argv[2] = punto inicial x0 */ main (int argc, char *argv[]) { double x0, paso, cota, tol, ximsl, fx; int maxf; double fimsl (double *); extern int ifun; if (argc != 3) { printf ("Uso incorrecto\n"); exit(1); } ifun = atoi (argv[1]); /* numero de funcion */ x0 = atof (argv[2]); /* x0 inicial */ printf ("Funcion objetivo numero %d", ifun); printf ("\nValor inicial de x = %f", x0); tol = 1.e-6 ; cota = 100 ; paso = 1.e-2 ; maxf = 100 ; DUVMIF (fimsl, &x0, &paso, &cota, &tol, &maxf, &ximsl); fx = fimsl(&ximsl); printf ("\nIMSL :\nx = %25.15lf\nf = %25.15lf\n", ximsl, fx); } /* ================================================================== */ /* Funcion a minimizar (IMSL) */ double fimsl (double *x) { double fx; extern int ifun; switch (ifun) { case 1: if (fabs(*x) >= 100) fx = 1.e20; else fx = exp(*x) - 5.0*(*x); break; case 2: if (fabs(*x) <= 1.e-5) fx = 1.; else if (fabs(*x) >= 5.0) fx = 1.e20; else fx = sin(*x)/(*x); break; } printf ("\n x = %20.10lf fx = %20.10lf", *x, fx); return fx; } Arg-F1.F90MODULE funcion INTEGER ifun ENDMODULE funcion ! Minimizacion de una funcion de una variable PROGRAM min1 USE funcion IMPLICIT NONE INTEGER maxf DOUBLE PRECISION cota, fun, fx, paso, x, tol, x0 EXTERNAL fun, duvmif CHARACTER(LEN=80) linea, argumento(2) IF (COMMAND_ARGUMENT_COUNT() /= 2) THEN CALL GET_COMMAND (linea) PRINT*, TRIM(linea) STOP 'Uso incorrecto' ENDIF CALL GET_COMMAND_ARGUMENT (1, argumento(1)) READ (argumento(1),*) ifun CALL GET_COMMAND_ARGUMENT (VALUE=argumento(2), NUMBER=2) READ (argumento(2),*) x0 PRINT '(A,I0)', 'Funcion objetivo numero ', ifun PRINT '(A,F0.5)', 'Valor inicial ', x0 tol = 1.d-6 ; cota = 1.d2 ; paso = 1.d-2 ; maxf = 100 CALL duvmif (fun, x0, paso, cota, tol, maxf, x) fx = fun(x) WRITE (*,'(A,F25.15/A,F25.15)') ' x = ', x, ' f = ', fx ENDPROGRAM min1 ! Funcion a minimizar DOUBLE PRECISION FUNCTION fun (x) USE funcion DOUBLE PRECISION x SELECT CASE (ifun) CASE (1) IF (ABS(x) >= 100) THEN fun = 1.d-20 ELSE fun = EXP(x) - 5.d0*x ENDIF CASE (2) IF (ABS(x) <= 1.d-5) THEN fun = 1.d0 ELSEIF (ABS(x) >= 5.d0) THEN fun = 1.d20 ELSE fun = SIN(x) / x ENDIF ENDSELECT PRINT*, x, fun ENDFUNCTION fun C-copia.C C-copia.C/* Copia un fichero */ #include <stdio.h> #include <stdlib.h> int main() { int ch; char file1[20], file2[20]; FILE *f1, *f2; printf ("Fichero original: ") ; scanf ("%s", file1); f1 = fopen (file1, "r"); if (f1) { printf ("Fichero copia: ") ; scanf ("%s", file2); f2 = fopen (file2, "w"); while ((ch = getc(f1)) != EOF) putc (ch,f2); fclose (f1); fclose (f2); exit(0); } else { printf ("El fichero %s no existe\n", file1); exit(1); } } C-criba.C C-criba.C/* Criba de Eratostenes */ #include <stdio.h> #include <time.h> main () { const int n=10000000; int i, j, k, p[n+1]; float t1, t2; FILE *f1; f1 = fopen ("c-primos.txt", "w"); t1 = clock(); for (i=2; i<=n; i++) p[i]=0; k = 2; for(;;) { if (2*k > n) break; for (j=2*k; j<=n; j+=k) p[j]=1; for (j=k+1; j<=n; j++) { if (p[j]==0) { k = j; break;} } } t2 = clock(); for (k=0,j=2; j<=n; j++) if (p[j]==0) {k++; fprintf(f1, "%10d\n", j);} printf ("\nHay %d numeros primos no mayores que %d\n", k, n); printf ("\ntiempo de calculo = %f\n", t2-t1); } C-nif.C C-nif.C/* Calculo de la letra del NIF */ #include <stdio.h> int main () { int dni, iscan; char letra[] = "TRWAGMYFPDXBNJZSQVHLCKE"; char nif; printf ("Introduce el dni "); iscan = scanf("%d", &dni); if (iscan == 0) return 1; nif = letra[dni%23]; printf ("\nEl NIF es %d%c\n", dni, nif); return 0; } C-recta.C C-recta.C/* Recta de regresion */ #include <stdio.h> #define mmax 1000 main () { int i, m=mmax; double x[mmax], y[mmax], a, b; void regres (double[], double[], int, double*, double*); FILE *f11; f11 = fopen ("F-tablagamma.txt", "r"); /* Lectura de la nube de puntos */ for (i=0; i<m; i++) fscanf (f11,"%lf%lf", &x[i], &y[i]); /* Calculo y escritura de la recta de regresion */ regres (x, y, m, &a, &b); printf ("Recta de regresion: "); printf ("%s%8.5f%s%8.5f\n", "Gamma(x) = ", a, "*x +", b); } /* ------------------------------------------------------------------ */ /* Funcion que calcula la recta de regresion */ void regres (double x[], double y[], int m, double *p, double *q) { /* Variables locales */ int i; double sumx2, sumx, sumxy, sumy, d; /* Calculo de las sumas sumx2, sumx, sumxy, sumy */ sumx2 = 0; sumx = 0; sumxy = 0; sumy = 0; for (i=0; i<m; i++) { sumx2+= x[i]*x[i]; sumx+= x[i]; sumxy+= x[i]*y[i]; sumy+= y[i]; } /* Calculo de p, q */ d = m*sumx2 - sumx*sumx; *p = (m*sumxy - sumx*sumy) / d; *q = (sumy - *p*sumx) / m; } C-tablagamma.C C-tablagamma.C/* Tabla de la funcion gamma */ #include <math.h> #include <stdio.h> #include <stdlib.h> main () { double lgam(double); int i; double x, g; FILE *fsal; fsal = fopen("C-tablagamma.txt", "w"); for (i=1; i<=1000; i++) { x = 1 + 0.001*i; g = exp(lgam(x)); fprintf (fsal, "%6.3f %25.15f\n", x, g);} } /* ===================================================================== Adaptacion de gammln, Numerical Recipes Third Edition. Cap 6.1 */ double lgam (double xx) { /* ln[Gamma(xx)] para xx > 0 */ int j; double x, tmp, y, ser; register const double g=5.24218750000000000, log2pi=0.91893853320467274, s0=0.999999999999997092; register const double c[14] = {57.1562356658629235, -59.5979603554754912, 14.1360979747417471, -0.491913816097620199, .339946499848118887e-4, .465236289270485756e-4, -.983744753048795646e-4, .158088703224912494e-3, -.210264441724104883e-3, .217439618115212643e-3, -.164318106536763890e-3, .844182239838527433e-4, -.261908384015814087e-4, .368991826595316234e-5}; if (xx <= 0) {printf("\nArgumento invalido en in lgam\n");exit(1);} y = x = xx; tmp = x + g; tmp = (x+0.5)*log(tmp) - tmp; ser = s0; for (j=0; j<14; j++) ser += c[j] / ++y; return tmp + log2pi + log(ser/x); } Indice-SISTEMA-OPERATIVO.pdf EJEMPLOS SISTEMA OPERATIVO COMANDOS Y PROGRAMAS LLAMADOS DESDE C SO-C1.C Ejecución de comandos del sistema operativo desde C (dir, copy, …) SO-C2.C Ejecución en C de otros programas en C SO-C3.C Ejecución en C de otros programas en Fortran SO-C4.C Ejecución en C de comandos y programas en Fortran y C SO-C5.C Código devuelto por el sistema operativo COMANDOS Y PROGRAMAS LLAMADOS DESDE Fortran F2008-SO-F1.F90 Ejecución de comandos con NAG Fortran, gfortran (dir, copy, …) F2008-SO-F2.F90 Ejecución con NAG Fortran, gfortran de otros programas en Fortran F2008-SO-F3.F90 Ejecución con NAG Fortran, gfortran de otros programas en C F2008-SO-F4.F90 Ejecución con NAG Fortran, gfortran de comandos y programas en Fortran y C ARGUMENTOS EN EJECUCIÓN Arg-C1.C Argumentos en línea de comando en la ejecución de programas en C Arg-F1.F90 Argumentos en línea de comando en la ejecución de programas en Fortran APLICACIONES Apli-C1.C Uso de Excel desde C F2008-Apli-F1.F90 Uso de Excel desde NAG Fortran, gfortran Apli-C2.C Llamada a aplicaciones desde C F2008-Apli-F2.F90 Llamada a aplicaciones desde NAG Fortran, gfortran PROGRAMAS EN C C-nif.C Calculo de la letra del NIF C-criba.C Criba de Eratóstenes C-tablagamma.C Tabla de la función gamma C-recta.C Recta de regresión C-copia.C Copia de un fichero PROGRAMAS EN Fortran F-nif.F90 Calculo de la letra del NIF F-criba.F90 Criba de Eratóstenes F-tablagamma.F90 Tabla de la función gamma F-recta.F90 Recta de regresión
Compartir