Mnoho lidí vnímá Fortran jako archaický a „mrtvý“programovací jazyk. Většina vědeckých a technických kódů je však napsána ve Fortranu. Programování ve F77 a F90 tak zůstává nezbytnou dovedností pro většinu technických programátorů. Nejnovější standardy Fortran (2003, 2008, 2015) navíc umožňují programátorovi psát vysoce účinný kód s minimálním úsilím a využívat všechny moderní jazykové funkce, jako je OOP (objektově orientované programování). FORTRAN je zkratka pro „FORmula TRANslation“a je nejvhodnější pro matematické a numerické aplikace než pro grafické nebo databázové aplikace. Většina kódů fortran přijímá text ze souboru nebo příkazového řádku, nikoli z nabídky nebo rozhraní GUI.
Kroky
Část 1 ze 4: Psaní a kompilace jednoduchého programu
Krok 1. Napište program „Hello World“
Toto je obvykle první program pro psaní v jakémkoli jazyce a na obrazovku vytiskne „Hello world“. Napište následující kód do libovolného textového editoru a uložte jej jako helloworld.f. Dávejte pozor, aby před každým řádkem bylo přesně 6 mezer.
program helloworld implicitně žádný znak*13 hello_string hello_string = "Ahoj, světe!" napište (*, *) hello_string ukončete program helloworld
Spropitné: Mezery jsou nutné pouze ve verzích Fortranu až do FORTRAN 77. Pokud používáte novější verzi, můžete mezery vypustit. Kompilace programů z novější verze s f95, ne f77; použijte.f95 jako příponu souboru namísto pouze.f.
Krok 2. Zkompilujte program
Chcete -li to provést, zadejte do příkazového řádku f77 helloworld.f. Pokud dojde k chybě, pravděpodobně jste ještě nenainstalovali kompilátor Fortran jako například gfortran.
Krok 3. Spusťte program
Kompilátor vytvořil soubor s názvem a.out. Spusťte tento soubor zadáním./a.out.
Krok 4. Pochopte, co jste právě napsali
-
program helloworld
označuje začátek programu „helloworld“. Podobně,
ukončete program helloworld
- označuje jeho konec.
-
Pokud ve výchozím nastavení nedeklarujete typ proměnné, Fortran považuje proměnnou se jménem začínajícím na písmeno od i do n za celé číslo a všechny ostatní za skutečné číslo. Doporučuje se použít
implicitní žádný
- pokud takové chování nepotřebujete.
-
znak*13 hello_string
- deklaruje pole znaků, které se nazývá hello_string.
-
hello_string = "Ahoj, světe!"
- přiřadí hodnotu „Ahoj, světe!“do deklarovaného pole. Na rozdíl od jiných jazyků, jako je C, to nelze provést na stejném řádku jako deklarace pole.
-
napište (*, *) hello_string
- vytiskne hodnotu hello_string na standardní výstup. První * znamená zápis na standardní výstup, na rozdíl od nějakého souboru. Druhý * znamená nepoužívat žádné speciální formátování.
Krok 5. Přidejte komentář
V tak jednoduchém programu to není nutné, ale bude to užitečné, když napíšete něco složitějšího, takže byste měli vědět, jak je přidat. Komentář lze přidat dvěma způsoby.
- Chcete -li přidat komentář, který má celý řádek sám, napište c přímo do nového řádku bez 6 mezer. Poté napište svůj komentář. Pro lepší čitelnost byste měli nechat mezeru mezi c a komentářem, ale není to nutné. Všimněte si, že musíte použít! místo c ve Fortranu 95 a novějších.
- Chcete -li přidat komentář na stejný řádek jako kód, přidejte! kde chcete, aby váš komentář začínal. Opět není zapotřebí mezera, ale zlepšuje čitelnost.
Část 2 ze 4: Použití vstupů a konstrukcí If
Krok 1. Pochopte různé datové typy
- INTEGER se používá pro celá čísla, například 1, 3 nebo -3.
- REAL může také obsahovat číslo, které není celé, například 2,5.
- COMPLEX slouží k ukládání komplexních čísel. První číslo je skutečné a druhé imaginární část.
- CHARACTER se používá pro znaky, jako jsou písmena nebo interpunkce.
- LOGICKÉ může být buď.pravdivé. nebo.false.. To je jako booleovský typ v jiných programovacích jazycích.
Krok 2. Získejte vstup uživatele
V programu „Hello world“, který jste psali dříve, by vstup uživatelů byl zbytečný. Otevřete tedy nový soubor a pojmenujte jej compnum.f. Až to dokončíte, sdělí to uživateli, zda je zadané číslo kladné, záporné nebo rovné nule.
- Zadejte řádky programu compnum a ukončete program compnum.
- Potom deklarujte proměnnou typu REAL. Ujistěte se, že je vaše prohlášení mezi začátkem a koncem programu.
- Vysvětlete uživateli, co má dělat. Napište nějaký text pomocí funkce zápisu.
- Přečtěte si vstup uživatele do proměnné, kterou jste deklarovali pomocí funkce čtení.
program compnum real r write (*, *) "Enter a real number:" read (*, *) r end program
Krok 3. Zpracujte vstup uživatele pomocí konstrukce if
Dejte to mezi
číst (*, *) r
a
ukončení programu
- Porovnání se provádí s.gt. (větší než),.lt. (méně než) a. ekv. (rovná se) ve Fortranu.
- Fortran podporuje if, else if a else
- Stavba Fortran if vždy končí end if.
if (r.gt. 0) then write (*, *) "This number is positive." jinak if (r.lt. 0) then write (*, *) "This number is negative." jinak napište (*, *) „To číslo je 0.“konec pokud
Spropitné: Nemusíte odsazovat kód uvnitř if-konstrukcí s více mezerami, ale zlepšuje čitelnost.
Krok 4. Zkompilujte a spusťte program
Chcete -li to vyzkoušet, zadejte některá čísla. Pokud zadáte písmeno, vyvolá to chybu, ale to je v pořádku, protože program nekontroluje, zda je zadáno písmeno, číslo nebo něco jiného.
Část 3 ze 4: Použití smyček a polí
Krok 1. Otevřete nový soubor
Protože je tento koncept odlišný, budete muset znovu napsat nový program. Pojmenujte soubor addmany.f. Vložte odpovídající program a ukončete programová prohlášení a také implicitní žádné. Když skončíte, tento program přečte 10 čísel a vytiskne jejich součet.
Krok 2. Deklarujte pole o délce 10
Zde budete ukládat čísla. Protože pravděpodobně chcete součet skutečných čísel, měli byste deklarovat pole jako skutečné. Takové pole deklarujete pomocí
reálná čísla (50)
(čísla je název pole, nikoli výraz).
Krok 3. Deklarujte některé proměnné
Deklarovat numSum jako skutečné číslo. Slouží k pozdějšímu uložení částky, ale protože součet je již převzat výrazem Fortran, musíte použít název jako numSum. Nastavte jej na 0. Deklarujte i jako celé číslo a zatím mu nepřiřazujte žádnou hodnotu. To bude provedeno v do-smyčce.
Krok 4. Vytvořte smyčku
Ekvivalentem toho v jiných programovacích jazycích by byla for-loop.
- Do-loop vždy začíná do.
- Na stejném řádku jako do, oddělený mezerou, je štítek, na který program přejde, až skončí. Prozatím stačí napsat 1, štítek nastavíte později.
-
Poté opět pouze oddělené mezerou, zadejte
i = 1, 10
. To způsobí, že proměnná i, kterou jste deklarovali před smyčkou, přejde od 1 do 10 v krocích po 1. Kroky nejsou v tomto výrazu uvedeny, takže Fortran používá výchozí hodnotu 1. Mohli jste také napsat
i = 1, 10, 1
-
Vložte do smyčky nějaký kód (odsazení s mezerami pro lepší čitelnost). U tohoto programu byste měli zvýšit proměnnou numSum s i-tým prvkem čísel polí. To se provádí pomocí výrazu
numSum = numSum + číslo (i)
- Ukončete smyčku příkazem continue, který má popisek. Zadejte pouze 4 mezery. Poté zadejte 1. To je štítek, na který jste řekli do-loop, aby se na něj dostal, až skončí. Potom zadejte mezeru a pokračujte. Výraz continue nic nedělá, ale poskytuje dobré místo pro umístění štítku a také ukazuje, že do-loop skončil.
Vaše smyčka do by nyní měla vypadat takto:
do 1 i = 1, 10 numSum = numSum + čísla (i) 1 pokračujte
Spropitné: Ve Fortranu 95 a novějších nemusíte používat štítky. Jednoduše nevkládejte jeden do příkazu do a smyčku ukončete „end do“místo „continue“.
Krok 5. Vytiskněte numSum
Také by dávalo smysl uvést nějaký kontext, například „Součet vašich čísel je:“. Pro oba použijte funkci zápisu. Celý váš kód by nyní měl vypadat následovně:
program addmany implicitní žádná reálná čísla (10) skutečné numSum celé číslo i numSum = 0 zápis (*, *) "Zadejte 10 čísel:" přečtěte (*, *) čísla do 1 i = 1, 10 numSum = numSum + čísla (i) 1 pokračovat v zápisu (*, *) „Jejich součet je:“zapisovat (*, *) numSum konec programu addmany
Krok 6. Zkompilujte a spusťte kód
Nezapomeňte to vyzkoušet. Můžete buď stisknout ↵ Enter za každým zadaným číslem, nebo zadat více čísel na stejný řádek a oddělit je mezerou.
Část 4 ze 4: Porozumění pokročilým konceptům
Krok 1. Mějte dobrou představu o tom, co bude váš program dělat
Zamyslete se nad tím, jaký druh dat je potřeba jako vstup, jak strukturovat výstup a zahrnout nějaký mezivýstup, abyste mohli sledovat průběh výpočtu. To bude velmi užitečné, pokud víte, že váš výpočet poběží dlouhou dobu nebo zahrnuje několik komplikovaných kroků.
Krok 2. Najděte dobrou referenci Fortranu
Fortran má mnohem více funkcí, než je vysvětleno v tomto článku, a mohou být užitečné pro program, který chcete napsat. Reference uvádí všechny funkce, které programovací jazyk má. Toto je jedno pro Fortran 77 a toto je pro Fortran 90/95.
Krok 3. Přečtěte si o podprogramech a funkcích
Krok 4. Naučte se číst a zapisovat ze/do souborů
Přečtěte si také, jak formátovat vstup/výstup.
Krok 5. Seznamte se s novými funkcemi Fortran 90/95 a novějších
Tento krok přeskočte, pokud víte, že budete pouze psát/udržovat kód Fortran 77.
Pamatujte, že Fortran 90 představil zdrojový kód „Free Form“, který umožňuje psát kód bez mezer a bez limitu 72 znaků
Krok 6. Přečtěte si nebo si vyhledejte nějaké knihy o vědeckém programování
Například kniha „Numerické recepty ve Fortranu“je dobrým textem o vědeckých programovacích algoritmech a dobrým úvodem do sestavování kódů. Novější edice obsahují kapitoly o programování ve smíšeném jazykovém prostředí a paralelním programování. Dalším příkladem je „Modern Fortran in Practice“od Arjena Markuse. Kniha poskytuje pohled na to, jak psát programy Fortran ve stylu dvacátého prvního století v souladu s nejnovějšími standardy Fortranu.
Krok 7. Zjistěte, jak kompilovat program rozložený do více souborů
Předpokládejme, že váš program Fortran je rozložen do souborů main.f a morestuff.f a že chcete, aby výsledný binární soubor byl pojmenován allstuff. Poté budete muset do příkazového řádku napsat následující příkazy:
f77 -c morestuff.f f77 -c main.f f77 -c morestuff.f f77 -o all mainuff.o morestuff.f
Potom spusťte soubor zadáním./allstuff.
Spropitné: To funguje stejným způsobem s novějšími verzemi Fortranu. Stačí nahradit.f správným rozšířením a f77 správnou verzí kompilátoru.
Krok 8. Použijte optimalizaci, kterou poskytuje váš kompilátor
Většina kompilátorů obsahuje optimalizační algoritmy, které zlepšují účinnost vašeho kódu. Ty jsou obvykle zapnuty zahrnutím příznaku -O, -O2 nebo -O3 při kompilaci (opět v závislosti na vaší verzi fortran).
-
Obecně platí, že nejlepší je nejnižší úroveň -O nebo -O2. Uvědomte si, že použití agresivnější možnosti optimalizace může vložit chyby do složitých kódů a dokonce může věci zpomalit! Otestujte si kód.
Tipy
- Začněte s malými programy. Když vytváříte vlastní kód, zkuste identifikovat nejpodstatnější část problému - je to vstup dat nebo volání funkcí, struktura smyčky (to jsou některé velmi elementární příklady) a začněte odtud. Pak na tom stavte v malých krocích.
- Fortran nerozlišuje velká a malá písmena. Můžete například deklarovat proměnnou „skutečné číslo“a do dalšího řádku napsat „num = 1“a přiřadit jí hodnotu. Ale to je špatný styl, takže se tomu vyhněte. Ještě důležitější je, že Fortran se nestará ani o případ funkcí a příkazů. Je zcela běžné zapisovat funkce a příkazy VE VELKÉ Proměnné a proměnné malými písmeny.
- EMACS je dobrý bezplatný textový editor, který lze použít místo programu Poznámkový blok.
- Nejprve může být jednodušší použít online IDE (integrované vývojové prostředí). Dobrou volbou je Coding Ground. Najdete tam mnoho programovacích jazyků, včetně Fortran-95. Další možností je Ideone.