PART 1: Instal·lació de Software
1) Instal·lar Fortran i Gnuplot
Ves al Campus Virutal de l’assignatura, a Pràctica 0, a Material del curso, baixa a baix de tot i descarrega’t el fitxer “software_windows.zip”.
Altrament, descarrega-te’l directament des d’aquí.
O encara més directament, aquí tens el fitxer:
Molt bé, ara segueix els següents passos.
- Guarda’t la carpeta descomprimida a on vulguis (Documents per exemple) però no és important, després l’eliminarem.
- Entra a software/gfortran i veuràs dos arxius .zip, si tens un sistema operatiu de 64 bits fixa’t en el que es diu “mingw-w64-bin_x86_64-mingw_20101003_sezero.zip”, si en canvi tens un de 32 bits, fixa’t en l’altre.
- Descomprimeix-lo, i selecciona com a carpeta a on extreure (descomprimir) un directori per sobre de Documents, Escriptori… per exemple en el meu cas seria a “C:\Usuarios\Marti”.
- Quan s’hagi descomprimit se’t hauria d’haver generat allà una carpeta anomenada “gfortran”, si hi entres veuràs que conté diverses carpetes i fitxers que són de caràcter tècnic i permeten al fortran compilar correctament, posarem especial interés en el següent apartat a la carpeta anomenada “bin”.
- Fem el mateix amb el gnuplot, entrem a software/gnuplot i descomprimim l’arixu de 64 o 32 bits corresponent (”gp503-win64-mingw.zip”), el descomprimim a la mateixa carpeta que abans (“C:\Usuarios\Marti”).
2) Afegir-los al Path
- Entrem a la carpeta gfortran/bin
- Copiem la ruta. Hauria de ser al estil “C:\Usuarios\Marti\gfortran\bin”
- Per Windows 8 o 10 cliquem allà dues vegades però un xic més a la dreta de ‘bin’ per tal de no entrar en cap directori, ens mostrarà la ruta com a text i la copiem.
- Per Windows 11 simplement botó dret i cliquem ‘Copia l’adreça’.
Per a fer-ho ens fixem en la part central de dalt de l’explorador d’arxius (on posa la ruta de la carpeta al estil “Este equipo > C: > Usuarios > Marti > gfortran > bin”)
- Busquem al buscador de Windows “variables de entorno” i obrim el programa “editar las variables de entorno del sistema”.
- Cliquem el botó “Variables de entorno” a baix a la dreta, se’ns obrirà una finestreta.
- La finestreta està dividida en dues parts, la part de dalt són “instruccions” que només afectaran al nostre usuari i la part de baix en canvi afectarà a tots els usuaris de l’ordinador (en general tindreu el vostre portàtil o PC amb 1 sol usuari així que és irrellevant), ens fixem en si alguna de les dues té una variable de entorno anomenada ‘Path’. Si és així la cliquem dues vegades. Si no és així (situació bastant rara) vol dir que la deveu haver eliminat sense voler, proveu de seguir el que diuen aquí.
- Se’ns obra una altra finestreta, que conté tots els ‘Paths’ que hem afegit de moment al nostre usuari (si haguéssim treballat amb Python prèviament en tindríem ja 1 o 2 afegits).
Explicació: afegir al Path un programa (indicar la ruta de la carpeta que conté els executables) ens permet des de la terminal, en qualsevol directori (sempre i quan sigui inferior a la carpeta de l’usuari) poder executar comandaments propis d’aquest (com per exemple “gfortran -o”) que altrament només podríem executar des de la carpeta “gfortran/bin”. En altres paraules, ens cal afegir al Path per poder compilar amb la terminal oberta en directoris com ‘Documents’ o ‘Escriptori’ (inferiors a Usuari).
- Li donem a “Nuevo” i enganxem la ruta copiada prèviament, després Enter, Aceptar, Aceptar…
- Repetim el mateix per gnuplot (podem anar a la carpeta gnuplot/bin i obtenir-ne la ruta o simplement canviar la paraula ‘gfortran’ per ‘gnuplot’ a la ruta que ja tenim copiada), de nou des de variables de entorno, Path, li donem a “Nuevo” i enganxem la ruta, Aceptar, Aceptar, Aceptar.
3) Provar de compilar des d’un bloc de notes
Anem a comprovar en aquest apartat que hem instal·lat correctament el fortran. Per a fer-ho compilarem un programa de prova.
Ves a els teus Documents o a l’Escriptori o a on vulguis i crea una carpeta que s’anomeni “Fortran” o “Compu” o “Programes” o “Practiques Compu” o per l’estil, aquest contindrà tots els teus programes.
- Assegura’t que pots veure les extensions dels fitxers (En l’explorador d’arxius cliques “Visualització”, “Mostra”, “Extensions del nom del fitxer”)
- Crea-hi un arxiu anomenat “prova.f90”, per a fer-ho fas:
{botó dret} → Nuevo → Documento de texto (arxiu .txt) → li poses de nom “prova.f90"
→ al haver canviat l’extensió de .txt a f.90 et dirà Seguro? li dius Sí
→ entres al arxiu (Abrir con → Más aplicaciones → Libreta o Bloc de notas (de moment))
→ copies i enganxes el codi que tens aquí sota → Guardes l’arxiu
program helloWorld implicit none print *, 'Hello World!' end program
- Obres la Terminal o cmd o Símbolo de Sistema o PowerShell buscant a baix al buscador de Windows o fent Win+R i escrivint ‘cmd’.
- Et mous mitjançant els comandaments “cd [carpeta]”, “cd..” i “dir” fins a la carpeta on tens el teu programa.
- Compiles des de la terminal fent:
gfortran prova.f90 -o prova.exe
- S’hauria d’haver creat un fitxer “prova.exe”, executa’l fent:
.\prova.exe
Alternativament ves a la carpeta i executa’l manualment (clicant-lo dos cops).
- Si llegeixes un Hello World! a la terminal felicitats, has instal·lat bé el fortran i ja saps compilar i executar des de la terminal.
Una altra manera de comprovar que s’han instal·lat correctament fortran i gnuplot, seria escriure en la terminal
gfortran --version
i us hauria de retornar la versió. I després gnuplot --version
, i també hauria de retornar la versió.4) Provar de generar un gràfic (plot) amb gnuplot
- Crea un fitxer i anomena’l “dades.dat” i enganxa-hi les següents dades:
1 1 2 4 3 9 4 16 5 25 6 36 7 49 8 64 9 81
- Crea un fitxer anomena’t “fig1.gnu” i enganxa-hi el següent codi:
file = 'dades.dat' set term png set out 'fig1.png' plot file
- Des de la terminal, genera el gràfic fent:
gnuplot fig1.gnu
- A la carpeta se’t hauria d’haver generat un fitxer “fig1.png”, obre la imatge i mira si és similar a aquesta:
- Si se’t ha generat la imatge i és com aquesta, ja està, felicitats! Tot et funciona correctament, ja pots procedir a tancar la terminal, els fitxer oberts i descansar una estoneta.
Si no se’t ha generat, comprova que no et surti un missatge de Seguretat de Windows (o del teu antivirus) bloquejant l’accés, si és així hauràs d’afegir una excepció:
Seguretat de Windows —> Historial de Protecció —> Clicar una notificació de “l’accés a les carpetes protegides s’ha bloquejat” —> Segur? Sí —> Configuració d’accés a carpetes controlat —> Permet una aplicació amb l’accés controlat a les carpetes —> Segur? Sí —> Afegeix una aplicació permesa —> Aplicacions bloquejades recentment —> Seleccionar “gnuplot.exe” —> ja pots tancar-ho tot i tornar a provar.
PART 2: Fer-ho més fancy i còmode
Aquesta part és opcional.
Així molt fàcil un/a pot programar còmodament com un/a pro (sense saber-ne massa) amb uns poquets passos.
La idea general és per una banda tenir highlighting tan per fortran com per gnuplot (colorets en el codi), i que prement un botó es compili i executi directament (si ens trobem en un arxiu de fortran), o generi el plot (si ens trobem en un arxiu gnuplot).
1) Instal·lar Visual Studio Code
El descarreguem de la pàgina oficial aquí. Seguim tots els passos de la instal·lació fins al final.
Un cop dins l’editor obrim la carpeta on tenim els nostres programes (amb File > Open Folder).
2) Instal·lar extensions Modern Fortran, gnuplpot, Material Icon Theme, vscode-pdf i Task Runner
- De la barra lateral esquerra de l’editor clicar el símbol d’Extensions (o sinó fer Ctrl+Shift+x), buscar “Modern Fortran” i instal·lar-la.
Podeu comprovar que funciona el highlighting (colorets) creant un arxiu .f90 i escrivint el codi bàsic que hem vist abans (prova.f90).
- Buscar l’extensió “gnuplot” feta per “mammothb” i instal·lar-la, comprovar en un arxiu .gnu (per exemple fig1.gnu) que et fa el highlighting.
- Afegir ara l’extensió “Material Icon Theme” feta per “Philipp Kief”, després clicar el botó blau de l’extensió que posa ‘Set Material Icon Theme’ i comprovar que els arixus fortran i d’altres adquireixen un icona particular.
Nota: segons com potser us agrada més el look de l’extensió “vscode-icons” feta per “VSCode Icon Team”, és una qüestió de gustos.
- Afegir l’extensió “vscode-pdf” by tomoki1207 per tal de previsualitzar pdfs des del propi VScode (útil per tenir allà mateix els els guions de les prepras i pràctiques d’anys anteriors).
- Afegir l’extensió “Task Runner” by Sana Ajani. (Ens servirà per l’apartat 4).
Nota: Potser has de tancar i tornar a obrir el vscode (sobretot per la última) per tal que algunes extensions funcionin correctament.
3) Primer exemple
Prova de crear (dins de la teva carpeta de programes) una carpeta anomenada ‘P1’, no es correspondrà a la pràctica 1, però estem fent un simulacre per veure que és efectiu.
Crea ara dins d’aquesta carpeta un arxiu “programa.f90”, un arxiu “grafic.gnu” i 3 carpetes més, anomenades “out”, “exes” i “data”. La idea és que els executables es generin dins la carpeta ‘exes’, els arxius de dades es generin dins la carpeta ‘data’, i els gràfics dins la carpeta ‘out’.
Afegeix-hi un arxiu .dat a la carpeta “data”. (Normalment el programa .f90 ens generarà l’arxiu .dat però ara el creem manualment)
Per simplicitat agafa el mateix codi bàsic de gnuplot, fortran així com el fitxer de dades, que ja hem vist a la ‘Part 1’.
Prova aviam si te’n surts tu sol/a de compilar, executar i generar el plot des de la terminal (modificant lleugerament els comandaments que utilitzàvem abans).
Solució
Per compilar el fitxer fortran ara hem de tenir en compte que l’executable s’ha de generar en la carpeta ‘exes’.
gfortran programa.f90 -o exes/programa.exe
Nota: la
-o
ve de “output”. Li estem dient al compilador a on ens ha de generar l’executable i quin nom ha de tenir.I l’executarem fent
.\exes\programa.exe
Per generar el gràfic, trauríem les dades de la carpeta ‘dades’ i el generaríem a la carpeta ‘out’.
file = 'data/dades.dat' set term png set out 'out/grafic.png' plot file
Això era un simple exercici per comprovar que entenem com funcionen les rutes al compilar i al indicar-les en el fitxer gnuplot.
Genial, ara que ho tenim organitza’t per carpetes, anem a fer una cosa molt senzilla que ens estalviarà molt de temps, anem a automatitzar-ho tot.
4) Automatització (executar el codi clicant un botó)
- Aconseguir trobar/generar el fitxer tasks.json
- Clicar al buscador a dalt al centre (o Ctrl+Shift+P) i escriure
>Tasks
. - Clicar del desplegable l’opció “Tasks: Configure Default Build Task”.
- Seleccionar “Create tasks.json file from template”.
- Seleccionar “Other” —> Se’t hauria d’obrir un fitxer tasks.json.
- A l’esquerra de l’editor, hi ha d’haver una carpeta “.vscode” i a dins el fitxer “tasks.json”. Borra tot el que contingui.
Alternativament simplement crea tu manualment una carpeta anomenada “.vscode” i a dins un fitxer anomenat “tasks.json”.
- Enganxa-hi el següent codi:
{ "version": "2.0.0", "tasks": [ { "label": "Build & Run Fortran", "type": "shell", "command": "${fileDirname}\\exes\\${fileBasenameNoExtension}.exe", "options": { "cwd": "${fileDirname}" }, "dependsOn": [ "Build Fortran" ] },{ "label": "Build Fortran", "type": "shell", "command": "gfortran", "options": { "cwd": "${fileDirname}" }, "args": [ "${fileDirname}\\${fileBasename}", "-o", "${fileDirname}\\exes\\${fileBasenameNoExtension}.exe" ] },{ "label": "Run Gnuplot", "type": "shell", "command": "gnuplot", "options": { "cwd": "${fileDirname}" }, "args": [ "${fileDirname}\\${fileBasename}" ] }, { "label": "Create Folders", "type": "shell", "command": "if(!(Test-Path ${fileDirname}\\exes)) {md 'exes', 'data', 'out'}", "options": { "cwd": "${fileDirname}" }, "problemMatcher": [], "group": "build" } ] }
Això serien 4 tasques, una et compila i prou, l’altre et compila i executa, l’altre et genera un gràfic i l’altre et genera les 3 carpetes “exes”, “data” i “out”.
- Guarda el fitxer (Ctrl+S) i tanca i torna a obrir el VS Code.
Molt bé, si et fixes a baix a l’esquerra hi ha un desplegable que es diu “TASK RUNNER”
Nota: si vols pots amagar els desplegables Outline i Timeline (que no els utilitzarem) clicant botó dret en ells i traient el tick que tenen.
Si ara obriu el fitxer programa.f90 i cliqueu el botó ‘Build & Run Fortran’ us hauria de compilar i executar (hauríeu de veure un ‘Hello World!’ a la terminal). I també si obriu l’arxiu grafic.gnu i cliqueu el botó ‘Run Gnuplot’ veureu que a dins la carpeta ‘out’ se us ha generat el gràfic (grafic.png).
Nota: segons com us pot sortir una notificació de Seguretat de Windows (o del teu antivirus) bloquejant l’accés a l’executable generat al compilar Fortran. Per permetre aquests executables cal configurar una exclusió per la carpeta on tingueu els programes.
Seguretat de Windows —> Protecció contra virus i amenaces —> Configuració de la protecció contra virus i amenaces —> Administra la configuració —> Exclusions —> Afegeix o sumprimeix exclusions —> (Sí) —> Afegeix una exclusió —> Carpeta —> [Busques la teva carpeta “Fortran” o “Compu” o “Programes” o “Practiques Compu” o similar] —> Ho tornes a provar i ara hauria d’executar-se tot automàticament sense problemes.
És a dir que ara amb un sol click ja podeu executar Fortran i Gnuplot sense escriure res a la terminal.
5) Opcional: Afegir dreceres de teclat
- File>Preferences>Keyboard Shortcuts.
- Clica el següent a dalt a la dreta:
- S’hauria de mostrar un fitxer JSON (keybindings.json), borra el que hi hagi i enganxa-hi el següent codi:
[ // Si vols també pots modificar aquestes dreceres canviant la 'key'. { "key": "F5", "command": "workbench.action.tasks.runTask", "when": "resourceExtname == .f90 || resourceExtname == .f || resourceExtname == .f95", "args": "Build & Run Fortran" }, { "key": "F5", "command": "workbench.action.tasks.runTask", "when": "resourceExtname == .gnu", "args": "Run Gnuplot" }, { "key": "Ctrl+F5", "command": "workbench.action.tasks.runTask", "when": "resourceExtname == .f90 || resourceExtname == .f || resourceExtname == .f95 || resourceExtname == .gnu", "args": "Create Folders" }, ]
Això el que fa és sobreescriure les dreceres de teclat, permetent executar o generar plot amb F5 i crear carpetes amb Ctrl + F5
Nota: si voleu podeu canviar les dreceres de teclat editant l’argument “key” (per exemple també podeu utilitzar Ctrl+Shift+B i Ctrl+Alt+B).
La part bona és que només s’executarà si es troba en un fitxer fortran o .gnu (a diferència dels botons del ‘Task Runner’), i que si les carpetes ja les has creat no les intentarà crear de nou.
Nota: en alguns teclats haureu de fer Fn+F5 i Ctrl+Fn+F5 per activar la drecera, en d’altres simplement F5 i Ctrl+F5.
- Guarda el fitxer (Ctrl+S) i ja estaria.
6) Extra: canviar els colors d’icones i carpetes
Aquest últim apartat és totalment opcional.
Si tenim l’extensió Material Icon Theme, podem personalitzar-ne les carpetes i els fitxers per nom i extensió tal com està explicat aquí.
Nota: aquest apartat s’haurà de modificar d’aquí uns mesos quan es publiqui la nova versió de Material Icon Theme. Seguint la petició que vam fer, un usuari va proposar un disseny d’icona per gnuplot i ja s’ha acceptat. Es publicara en la nova versió de l’extensió al Marketplace de VS Code
Es podria fer el que volguéssim (afegir nous icones com a fitxers SVG, canviar-ne l’opacitat, configurar-ne els colors en funció de si el tema és clar o fosc, etc.).
El canvi visual que nosaltres farem és el següent
Podeu fer els canvis visuals que vosaltres vulgueu (es pot personalitzar completament).
Per a fer-ho farem el següent
- Anem a l’extensió i obrim la seva configuració (Settings).
- Ens fixem en l’opció ‘Custom Clones’ i cliquem ‘Edit in settings.json’. Se’ns obrira un fitxer json que conté els ajustaments de l’usuari (la personalització gràfica del nostre vscode).
Nota: En aquest fitxer hi ha la personalització del VS Code de cada usuari. A continuació esborrarem el codi que sigui que hi hagi, però si per exemple ja hi tinguéssiu personalitzacions d’altres coses que heu fet servir abans no les esborreu, intenteu entendre com funciona un fitxer JSON i afegiu-les al final d’aquest.
- Borra el codi que hi hagi i enganxa-hi el següent
{ "workbench.iconTheme": "material-icon-theme", "material-icon-theme.folders.customClones": [ { "name": "dades-carpeta", "base": "folder-content", // opció alternativa: "folder-database" "color": "#009688", // Blau per 'data' "folderNames": ["data"] }, { "name": "exes-carpeta", "base": "folder-config", // opció alternativa: "folder-command" "color": "#360900", // Vermell fosc per 'exes' "folderNames": ["exes"] }, { "name": "out-carpeta", "base": "folder-environment", // opció alternativa: "folder-images" "color": "#2bb302", // Verd per 'out' "folderNames": ["out"] } ], "material-icon-theme.files.customClones": [ { "name": "imatge-png", "base": "image", "color": "#42ab22", // Verd per les imatges "fileExtensions": ["png","jpg","jpeg","plt","gif","ico"] } // ,{ // JA S'HA AFEGIT L'ICONA DE GNUPLOT :) // "name": "fitxer-gnuplot", // "base": "gleam", // Altres opcions: 'fastlane', 'deepsource', 'sas', 'graphql', // // 'cmake', 'matlab', 'svg', 'julia', 'nuxt', 'gleam', 'prisma', 'proto' // "color": "#b00cc2", // Rosa-púrpura // "fileExtensions": ["gnu"] // } ], "material-icon-theme.folders.color": "#e0c810" // Groc (Color carpeta normal) }
- Guarda el fitxer (Ctrl+S) i ja estaria, hauries de veure els canvis d’icona.
7) Ja podem programar eficientment
Genial, imaginem que ara has de fer la prepràctica 2, doncs a la teva carpeta “Practiques Compu” crees una nova carpeta anomenada “Prepra2” i a dins d’aquesta un fitxer fortran.
- Ctrl+F5 o ‘Create Folders’ i immediatament ja tens les 3 carpetes creades.
- Estàs escrivint el codi fortran i vols provar si funciona, prems F5 o ‘Run & Build Fortran’ i immediatament s’executa el codi.
- El mateix amb gnuplot, prems F5 o ‘Run Gnuplot’ i immediatament set genera el gràfic (a partir de les dades) dins la carpeta ‘out’.
Així doncs, hem aconseguit tenir un entorn de treball més còmode i organitzat que ens permetrà programar les pràctiques i prepràctiques d’una manera més eficient i agradable.
Per exemple la meva barra lateral on hi tinc les diferents pràctiques llueix una mica així:
Per acabar, dir que en general els fitxers de dades els generarem des del programa en fortran, i per tant és important recordar que la ruta del fitxer en el que escriurem és “data/dades.dat” sense deixar-nos el ‘data/’. Per exemple:
program funcio_sinus implicit none integer :: x real :: x_radians open(unit=10, file="data/dades.dat") ! Recordem no deixar-nos el 'data/' do x = -360, 360 x_radians = (x*2*3.14159)/360 write(10,*) x, sin(x_radians) end do close(unit=10) end program
Ah, i última cosa, si us molesten les notificacions pesades de baix a la dreta dins del VSCode, podeu crear un fitxer
settings.json
a dins de la carpeta .vscode
i posar-hi el següent codi:{ "fortran.fortls.disabled": true, "extensions.ignoreRecommendations": true }
Això evitarà la majoria de notificacions molestes.
Ara sí, ja estaria!
Si teniu algun dubte o no us funciona alguna part, deixeu un comentari a la part on us heu encallat i si puc us intento ajudar (Martí).
Relacionat
Per si es vol compilar online sense haver d’instal·lar res (o com a còpia de seguretat), està bé saber que també existeix la següent opció: