Mnoho ľudí vníma Fortran ako archaický a „mŕtvy“programovací jazyk. Väčšina vedeckého a inžinierskeho kódu je však napísaná vo Fortrane. Programovanie vo F77 a F90 zostáva pre väčšinu technických programátorov nevyhnutnou zručnosťou. Najnovšie štandardy Fortran (2003, 2008, 2015) navyše umožňujú programátorovi písať vysoko efektívny kód s minimálnym úsilím a využívať všetky moderné jazykové funkcie, ako napríklad OOP (objektovo orientované programovanie). FORTRAN je skratka pre „FORmula TRANslation“a je najvhodnejšia pre matematické a numerické aplikácie než pre grafické alebo databázové aplikácie. Väčšina kódov fortran preberá textový vstup zo súboru alebo príkazového riadka, a nie z ponuky alebo rozhrania GUI.
Kroky
Časť 1 zo 4: Písanie a zostavenie jednoduchého programu
Krok 1. Napíšte program „Hello World“
Toto je zvyčajne prvý program na písanie v akomkoľvek jazyku a na obrazovku vytlačí „Hello world“. Napíšte nasledujúci kód do ľubovoľného textového editora a uložte ho ako helloworld.f. Dávajte pozor, aby pred každým riadkom bolo presne 6 medzier.
program helloworld implicitne žiadny znak*13 hello_string hello_string = "Ahoj, svet!" napísať (*, *) hello_string ukončiť program helloworld
Tip: Medzery sú potrebné iba vo verziách Fortranu až do FORTRAN 77. Ak používate novšiu verziu, medzery môžete vypustiť. Kompilujte programy z novšej verzie s f95, nie f77; použite.f95 ako príponu súboru, nie iba.f.
Krok 2. Zostavte program
Za týmto účelom zadajte do príkazového riadka f77 helloworld.f. Ak sa zobrazí chyba, pravdepodobne ste ešte nenainštalovali kompilátor Fortranu, ako je napríklad gfortran.
Krok 3. Spustite program
Kompilátor vytvoril súbor s názvom a.out. Spustite tento súbor zadaním./a.out.
Krok 4. Pochopte, čo ste práve napísali
-
program helloworld
označuje začiatok programu „helloworld“. Podobne,
ukončiť program helloworld
- naznačuje jeho koniec.
-
Ak predvolene nenahlásite typ premennej, Fortran bude považovať premennú s názvom začínajúcim na písmeno od i do n za celé číslo a so všetkými ostatnými za skutočné číslo. Odporúča sa použiť
implicitne žiadny
- ak to správanie nepotrebuješ.
-
znak*13 hello_string
- deklaruje pole znakov, ktoré sa nazýva hello_string.
-
hello_string = "Ahoj, svet!"
- priradí hodnotu „Ahoj, svet!“do deklarovaného poľa. Na rozdiel od iných jazykov, ako je C, to nie je možné vykonať na rovnakom riadku ako deklarácia poľa.
-
napíšte (*, *) reťazec ahoj
- vytlačí hodnotu hello_string na štandardný výstup. Prvý * znamená zápis na štandardný výstup, na rozdiel od niektorých súborov. Druhý * znamená nepoužívať žiadne špeciálne formátovanie.
Krok 5. Pridajte komentár
V takom jednoduchom programe to nie je potrebné, ale bude to užitočné, keď napíšete niečo zložitejšie, takže by ste mali vedieť, ako ich pridať. Existujú dva spôsoby, ako pridať komentár.
- Ak chcete pridať komentár, ktorý má celý riadok sám, napíšte c priamo do nového riadka bez 6 medzier. Potom napíšte svoj komentár. Kvôli lepšej čitateľnosti by ste medzi znakom c a komentárom mali nechať medzeru, nie je to však povinné. Upozorňujeme, že musíte použiť! namiesto c vo Fortrane 95 a novších.
- Ak chcete pridať komentár v rovnakom riadku ako kód, pridajte! kde chcete, aby sa váš komentár začínal. Medzera opäť nie je potrebná, ale zlepšuje čitateľnosť.
Časť 2 zo 4: Použitie vstupov a konštrukcií, ak
Krok 1. Pochopte rôzne typy údajov
- INTEGER sa používa pre celé čísla, napríklad 1, 3 alebo -3.
- REAL môže obsahovať aj číslo, ktoré nie je celé, napríklad 2,5.
- COMPLEX slúži na ukladanie komplexných čísel. Prvé číslo je skutočné a druhé imaginárna časť.
- CHARACTER sa používa pre znaky, ako sú písmená alebo interpunkcia.
- LOGICKÉ môže byť buď.pravdivé. alebo.false.. Toto je ako booleovský typ v iných programovacích jazykoch.
Krok 2. Získajte informácie od používateľa
V programe „Hello world“, ktorý ste písali predtým, by bolo vstupné informácie používateľov zbytočné. Otvorte teda nový súbor a pomenujte ho compnum.f. Keď ho dokončíte, oznámi používateľovi, či je zadané číslo kladné, záporné alebo sa rovná nule.
- Zadajte riadky program compnum a ukončite program compnum.
- Potom deklarujte premennú typu REAL. Zaistite, aby bolo vaše vyhlásenie medzi začiatkom a koncom programu.
- Vysvetlite používateľovi, čo má robiť. Napíšte nejaký text pomocou funkcie zápisu.
- Prečítajte si vstup používateľa do premennej, ktorú ste deklarovali pomocou funkcie čítania.
program compnum real r write (*, *) "Enter a real number:" read (*, *) r end program
Krok 3. Spracujte vstup užívateľa s konštrukciou if
Dajte to medzi
čítať (*, *) r
a
ukončiť program
- Porovnanie sa robí s.gt. (väčšie ako),.lt. (menej ako) a. ekv. (rovná sa) vo Fortrane.
- Fortran podporuje if, else if a else
- Stavba Fortranu, ak sa vždy skončí, ak.
ak (r.gt. 0), napíšte (*, *) „Toto číslo je kladné.“v opačnom prípade, ak (r.lt. 0), napíšte (*, *) „Toto číslo je záporné.“inak napíšte (*, *) „To číslo je 0.“koniec Ak
Tip: V if-konštrukciách s väčším počtom medzier nemusíte odsadiť kód, ale zlepšuje to čitateľnosť.
Krok 4. Skompilovajte a spustite program
Na otestovanie zadajte niekoľko čísel. Ak zadáte písmeno, vyvolá to chybu, ale je to v poriadku, pretože program nekontroluje, či je zadaním písmeno, číslo alebo niečo iné.
Časť 3 zo 4: Používanie slučiek a polí
Krok 1. Otvorte nový súbor
Pretože je tento koncept odlišný, budete musieť znova napísať nový program. Pomenujte súbor addmany.f. Vložte zodpovedajúci program a ukončenie programu, ako aj implicitné žiadne. Keď skončíte, tento program načíta 10 čísel a vytlačí ich súčet.
Krok 2. Deklarujte pole s dĺžkou 10
Tu budete ukladať čísla. Pretože pravdepodobne chcete súčet reálnych čísel, mali by ste pole deklarovať ako skutočné. Také pole deklarujete pomocou
reálne čísla (50)
(čísla je názov poľa, nie výraz).
Krok 3. Deklarujte niektoré premenné
Deklarovať numSum ako skutočné číslo. Sumu použijete na neskoršie uloženie sumy, ale keďže súčet už obsahuje výraz Fortran, musíte použiť názov ako numSum. Nastavte ho na 0. Deklarujte i ako celé číslo a zatiaľ mu nepriraďte žiadnu hodnotu. To sa vykoná v do-loop.
Krok 4. Vytvorte do-loop
Ekvivalentom v iných programovacích jazykoch by bola slučka for-loop.
- Do-loop sa vždy začína do.
- Na tom istom riadku ako do, oddelenom medzerou, je štítok, na ktorý program prejde, keď bude hotový. Zatiaľ napíšte 1 a štítok nastavíte neskôr.
-
Potom znova zadajte iba medzeru
i = 1, 10
. Vďaka tomu bude premenná i, ktorú ste deklarovali pred cyklom, prechádzať od 1 do 10 v krokoch 1. Kroky nie sú v tomto výraze uvedené, takže Fortran používa predvolenú hodnotu 1. Mohli ste tiež napísať
i = 1, 10, 1
-
Vložte do slučky nejaký kód (zarážka s medzerami pre lepšiu čitateľnosť). V prípade tohto programu by ste mali zvýšiť premennú numSum s i-tým prvkom čísel polí. To sa deje s výrazom
numSum = numSum + číslo (i)
- Ukončite slučku príkazom continue, ktorý má označenie. Napíšte iba 4 medzery. Potom zadajte a 1. To je štítok, o ktorom ste povedali, že do-loop má ísť po jeho dokončení. Potom zadajte medzeru a pokračujte. Pokračujúci výraz nerobí nič, ale dáva dobré miesto na umiestnenie štítku a ukazuje, že do-loop sa skončil.
Vaša slučka do by mala teraz vyzerať takto:
urobte 1 i = 1, 10 numSum = numSum + čísla (i) 1 pokračujte
Tip: Vo Fortran 95 a novších nemusíte používať štítky. Jednoducho nevkladajte jeden do príkazu do a ukončite slučku výrazom „end do“namiesto „continue“.
Krok 5. Vytlačte numSum
Tiež by dávalo zmysel uviesť určitý kontext, napríklad „Súčet vašich čísel je:“. Na obidve použite funkciu zápisu. Celý váš kód by teraz mal vyzerať nasledovne:
program addmany implicitné žiadne reálne čísla (10) skutočné numSum celé číslo i numSum = 0 zápis (*, *) "Zadajte 10 čísel:" čítajte (*, *) čísla do 1 i = 1, 10 numSum = numSum + čísla (i) 1 pokračovať v zápise (*, *) „Ich súčet je:“zapísať (*, *) numSum end program addmany
Krok 6. Zostavte a spustite kód
Nezabudnite to otestovať. Môžete buď stlačiť ↵ Enter po každom zadanom čísle, alebo zadať veľa čísel do rovnakého riadka a oddeliť ich medzerou.
Časť 4 zo 4: Pochopenie pokročilých konceptov
Krok 1. Majte dobrú predstavu o tom, čo bude váš program robiť
Zamyslite sa nad tým, aký druh údajov sú potrebné ako vstup, ako štruktúrovať výstup a zahrnúť nejaký medziprodukt, aby ste mohli sledovať priebeh vášho výpočtu. To bude veľmi užitočné, ak viete, že váš výpočet bude trvať dlho alebo zahŕňa niekoľko komplikovaných krokov.
Krok 2. Nájdite dobrú referenciu Fortranu
Fortran má oveľa viac funkcií, ako je vysvetlených v tomto článku, a môžu byť užitočné pre program, ktorý chcete napísať. Referencia uvádza všetky funkcie, ktoré programovací jazyk má. Toto je jedno pre Fortran 77 a toto je pre Fortran 90/95.
Krok 3. Získajte informácie o podprogramoch a funkciách
Krok 4. Naučte sa čítať a písať zo súborov/do nich
Naučte sa tiež formátovať vstup/výstup.
Krok 5. Prečítajte si o nových funkciách Fortranu 90/95 a novších
Tento krok preskočte, ak viete, že budete iba písať/udržiavať kód Fortran 77.
Nezabudnite, že Fortran 90 predstavil zdrojový kód „Voľný formulár“, ktorý umožňuje písať kód bez medzier a bez obmedzenia počtu znakov 72
Krok 6. Prečítajte si alebo si vyhľadajte niektoré knihy o vedeckom programovaní
Napríklad kniha „Numerické recepty vo Fortrane“je dobrým textom o algoritmoch vedeckého programovania a dobrým úvodom do zostavovania kódov. Novšie vydania obsahujú kapitoly o programovaní v prostredí zmiešaných jazykov a paralelnom programovaní. Ďalším príkladom je „Moderný Fortran v praxi“, ktorý napísal Arjen Markus. Kniha prináša pohľad na to, ako písať programy Fortranu v štýle dvadsiateho prvého storočia v súlade s najnovšími štandardmi Fortranu.
Krok 7. Naučte sa zostaviť program rozložený do viacerých súborov
Predpokladajme, že váš program Fortran je rozložený medzi súbormi main.f a morestuff.f a že chcete, aby bol výsledný binárny súbor pomenovaný allstuff. Potom budete musieť do príkazového riadka napísať nasledujúce príkazy:
f77 -c morestuff.f f77 -c main.f f77 -c morestuff.f f77 -o all mainuff.o morestuff.f
Potom spustite súbor zadaním príkazu./allstuff.
Tip: Funguje to rovnako pri novších verziách Fortranu. Stačí nahradiť.f správnym rozšírením a f77 správnou verziou kompilátora.
Krok 8. Použite optimalizáciu, ktorú poskytuje váš kompilátor
Väčšina kompilátorov obsahuje optimalizačné algoritmy, ktoré zlepšujú účinnosť vášho kódu. Spravidla sa zapínajú zahrnutím príznaku -O, -O2 alebo -O3 pri kompilácii (opäť v závislosti od vašej verzie fortranu).
-
Spravidla je najlepšia najnižšia úroveň -O alebo -O2. Uvedomte si, že používanie agresívnejšej možnosti optimalizácie môže spôsobiť chyby v zložitých kódoch a dokonca môže veci spomaliť! Otestujte si kód.
Tipy
- Začnite s malými programami. Pri vytváraní vlastného kódu sa pokúste identifikovať najpodstatnejšiu časť problému - či už ide o vstup údajov alebo volanie funkcií, štruktúru slučky (to sú niektoré veľmi elementárne príklady) a začnite odtiaľ. Potom na tom stavajte v malých krokoch.
- Fortran nerozlišuje malé a veľké písmená. Môžete napríklad deklarovať premennú „skutočné číslo“a do ďalšieho riadka napísať „num = 1“, čím jej priradíte hodnotu. Ale to je zlý štýl, takže sa tomu vyhnite. Čo je dôležitejšie, Fortran sa nestará ani o prípad funkcií a vyhlásení. Je úplne bežné písať funkcie a príkazy UPPERCASE a premenné malými písmenami.
- EMACS je dobrý bezplatný textový editor, ktorý sa používa namiesto programu Poznámkový blok.
- Na začiatku vám môže byť jednoduchšie používať online IDE (integrované vývojové prostredie). Dobrou možnosťou je Coding Ground. Nájdete tam množstvo programovacích jazykov vrátane Fortran-95. Ďalšou možnosťou je Ideone.