C2115 Praktický úvod do superpočítání

Podobné dokumenty
EVROPSKÝ SOCIÁLNÍ FOND. Úvod do PHP PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI

Pascal. Katedra aplikované kybernetiky. Ing. Miroslav Vavroušek. Verze 7

Operační systémy. Cvičení 3: Programování v C pod Unixem

Vyučovací hodina. 1vyučovací hodina: 2vyučovací hodiny: Opakování z minulé hodiny. Procvičení nové látky

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15

Programovací jazyk Pascal

C2110 Operační systém UNIX a základy programování

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Programování v C++ 1, 1. cvičení

C2115 Praktický úvod do superpočítání

- znakové konstanty v apostrofech, např. a, +, (znak mezera) - proměnná zabírá 1 byte, obsahuje kód příslušného znaku

C2110 Operační systém UNIX a základy programování

Základy algoritmizace a programování

Základy algoritmizace a programování

Programování v jazyce C pro chemiky (C2160) 3. Příkaz switch, příkaz cyklu for, operátory ++ a --, pole

Matematika v programovacích

Úvod do programování. Lekce 1

2 Datové typy v jazyce C

Úvod do programování - Java. Cvičení č.4

Maturitní otázky z předmětu PROGRAMOVÁNÍ

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:

7 Formátovaný výstup, třídy, objekty, pole, chyby v programech

Úvod do programování. Lekce 3

Příklady: (y + (sin(2*x) + 1)*2)/ /2 * 5 = 8.5 (1+3)/2 * 5 = /(2 * 5) = 1.3. Pavel Töpfer, 2017 Programování 1-3 1

IUJCE 07/08 Přednáška č. 4. v paměti neexistuje. v paměti existuje

DUM 07 téma: Proměnné, konstanty a pohyb po buňkách ve VBA

Programování 2 (NMIN102) Soubory. RNDr. Michal Žemlička, Ph.D.

Preprocesor. Karel Richta a kol. katedra počítačů FEL ČVUT v Praze. Karel Richta, Martin Hořeňovský, Aleš Hrabalík, 2016

cyklus s daným počtem opakování cyklus s podmínkou na začátku (cyklus bez udání počtu opakování)

5a. Makra Visual Basic pro Microsoft Escel. Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Kalina

DUM 06 téma: Tvorba makra pomocí VBA

Zápis programu v jazyce C#

POČÍTAČE A PROGRAMOVÁNÍ

ZPRO v "C" Ing. Vít Hanousek. verze 0.3

4a. Makra Visual Basic pro Microsoft Excel Cyklické odkazy a iterace Makra funkce a metody

MAXScript výukový kurz

Algoritmizace a programování

2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu.

Správné vytvoření a otevření textového souboru pro čtení a zápis představuje

Programování v C++ Úplnej úvod. Peta (maj@arcig.cz, SPR AG )

- speciální symboly + - * / =., < > <> <= >= a další. Klíčová slova jsou chráněnými útvary, které nelze použít ve významu identifikátorů.

Aplikovaná informatika. Podklady předmětu Aplikovaná informatika pro akademický rok 2006/2007 Radim Farana. Obsah. Obsah předmětu

Algoritmizace a programování

C2115 Praktický úvod do superpočítání

1.1 Struktura programu v Pascalu Vstup a výstup Operátory a některé matematické funkce 5

Operační systémy. Cvičení 4: Programování v C pod Unixem

Stručný návod k programu Octave

Martin Flusser. Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague. October 17, 2016

8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek

6. lekce Úvod do jazyka C knihovny datové typy, definice proměnných základní struktura programu a jeho editace Miroslav Jílek

IUJCE 07/08 Přednáška č. 1

type Obdelnik = array [1..3, 1..4] of integer; var M: Obdelnik;

Logické operace. Datový typ bool. Relační operátory. Logické operátory. IAJCE Přednáška č. 3. může nabýt hodnot: o true o false

Úvod do programování

Test z programování v jazyce VBA v rámci předmětu Počítače II Vzorová zadání a vypracování

Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí)

Programovací jazyk. - norma PASCAL (1974) - implementace Turbo Pascal, Borland Pascal FreePascal Object Pascal (Delphi)

Příkazy preprocesoru - Před překladem kódu překladačem mu předpřipraví kód preprocesor - Preprocesor vypouští nadbytečné (prázdné) mezery a řádky -

Překladač a jeho struktura

Programovací jazyk C++ Hodina 1

9. lekce Úvod do jazyka C 4. část Funkce, rekurze Editace, kompilace, spuštění Miroslav Jílek

Histogram. 11. února Zadání

Úvod do Matlabu. Praha & EU: Investujeme do vaší budoucnosti. 1 / 24 Úvod do Matlabu

Přednáška 7. Celočíselná aritmetika. Návratový kód. Příkazy pro větvení výpočtu. Cykly. Předčasné ukončení cyklu.

Stručný obsah První týden Druhý týden 211 Třetí týden 451 Rejstřík 787

Programovací jazyk C(++) C++ area->vm_mm->locked_vm -= len >> PAGE_SHIFT;

Algoritmizace a programování

Registrační číslo projektu: CZ.1.07/1.5.00/ Elektronická podpora zkvalitnění výuky CZ.1.07 Vzděláním pro konkurenceschopnost

Basic256 - úvod do programování Příklady. ing. petr polách

Program a životní cyklus programu

LEKCE 6. Operátory. V této lekci najdete:

Programování v C++, 2. cvičení

Opakování programování

Koncepce (větších) programů. Základy programování 2 Tomáš Kühr

Test prvočíselnosti. Úkol: otestovat dané číslo N, zda je prvočíslem

for (i = 0, j = 5; i < 10; i++) { // tělo cyklu }

Sada 1 - Základy programování

Jazyk C Program v jazyku C má následující strukturu: konstanty nebo proměnné musí Jednoduché datové typy: Strukturované datové typy Výrazy operátory

MIKROPROCESORY PRO VÝKONOVÉ SYSTÉMY

PROGRAMOVÁNÍ V C++ CVIČENÍ

Základy programování (IZP)

Preprocesor a koncepce (větších) programů. Úvod do programování 2 Tomáš Kühr

Úvod do programovacích jazyků (Java)

Tematický celek Proměnné. Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace Deklarace proměnných

ČÁST 1. Základy 32bitového programování ve Windows

VISUAL BASIC. Přehled témat

Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí)

Operátory pro maticové operace (operace s celými maticemi) * násobení maticové Pro čísla platí: 2*2

Operátory. Základy programování 1 Martin Kauer (Tomáš Kühr)

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

MPASM a IDE pro vývoj aplikací MCU (Microchip)

Obsah přednášky. Příkaz for neúplný. Příkaz for příklady. Cyklus for each (enhanced for loop) Příkaz for příklady

11. Přehled prog. jazyků

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

dovolují dělení velkých úloh na menší = dekompozice

Úvod z historie. Kompilátory. Kompilace / Kompilátor Compile / Compiler. Pojem kompilátoru. Úvod z historie

Základy programování Proměnné Procedury, funkce, události Operátory a podmínková logika Objekt Range a Cells, odkazy Vlastnosti, metody a události

Transkript:

C2115 Praktický úvod do superpočítání VI. lekce Petr Kulhánek, Tomáš Bouchal kulhanek@chemi.muni.cz Národní centrum pro výzkum biomolekul, Přírodovědecká fakulta, Masarykova univerzita, Kotlářská 2, CZ-61137 Brno C2115 Praktický úvod do superpočítání -1-

Obsah Úvod historie jazyka Fortran, Hello world!, překladače, překládáme, volby překladače Syntaxe program, rozdíly oproti F77, proměnné, řídící struktury, I/O, pole, funkce, procedury Cvičení jednoduché programy, výpočet určitého integrálu Literatura C2115 Praktický úvod do superpočítání -2-

Úvod C2115 Praktický úvod do superpočítání -3-

Historie Fortran (zkratka slov FORmula a TRANslator) je v informatice imperativní programovací jazyk, který v 50. letech 20. století navrhla firma IBM pro vědecké výpočty a numerické aplikace. Zdroj: wikipedia Verze jazyka: Fortran 77 Fortran 90 Fortran 95 Fortran 2003 Fortran 2008 V tomto jazyce nebo pro tento jazyk je napsána celá řada knihoven. Kompilátory jsou schopny vytvářet velmi optimalizovaný kód. Standardní matematické knihovny: BLAS, LAPACK a další na http://www.netlib.org C2115 Praktický úvod do superpočítání -4-

Historie jeden zdrojový řádek Zdroj: wikipedia C2115 Praktický úvod do superpočítání -5-

Hello world! hello.f90 program Hello write(*,*) 'Hello world!' end program Kompilace: $ gfortran hello.f90 -o hello Spuštění: $./hello Kompilace do assembleru: $ gfortran hello.f90 -S hello.s C2115 Praktický úvod do superpočítání -6-

Cvičení 1 1. Vytvořte soubor hello.f90. Zkompilujte jej překladačem gfortran. Ověřte funkci vytvořeného programu. C2115 Praktický úvod do superpočítání -7-

Překladače GNU GCC Překladač: gfortran Typ licence: GNU GPL (volně dostupný) URL: http://gcc.gnu.org/wiki/gfortran Intel Composer XE Překladač: ifort Typ licence: a) komerční (dostupný v MetaCentru, meta moduly: intelcdk) b) zdarma k osobnímu použití proti registraci (linux) URL: http://software.intel.com/en-us/articles/intel-composer-xe/ The Portland Group Překladač: pgf90, pgf77 Typ licence: komerční (dostupný v MetaCentru, meta moduly: pgicdk) URL: http://www.pgroup.com/ C2115 Praktický úvod do superpočítání -8-

Překládáme zdrojový kód zdrojový kód zdrojový kód Přípona:.f90 preprocesor překladač preprocesor překladač preprocesor překladač asembler asembler asembler.s překladač asembleru překladač asembleru překladač asembleru objekt objekt objekt.o Přípona:.so,.a knihovna knihovna linker spustitelný program C2115 Praktický úvod do superpočítání -9-

Užitečné volby překladače Volby překladače: -o název výsledného programu -c přeloží zdrojový kód do objektového kódu -S přeloží zdrojový kód do asembleru -Ox úroveň optimalizace výsledného programu, kde x=0 (žádná), 1, 2, 3 (nejvyšší) -g vloží dodatečné informace a kód pro ladění běhu programu -lname -Lcesta (zpomaluje běh programu) připojení (linkování) knihovny name k výslednému programu cesta ke knihovnám, které nejsou ve standardních cestách Volby překladače (ifort): -trace all kontroluje meze polí, použití neinicializovaných proměnných, atd. C2115 Praktický úvod do superpočítání -10-

Programy napsané ve Fortranu Gaussian http://www.gaussian.com/ Komerční program určený pro kvantově chemické výpočty. AMBER http://www.ambermd.org/ Akademický software určený k molekulárním simulacím za použití molekulové mechaniky a hybridních QM/MM metod. Ve Fortranu jsou napsány programy sander a pmemd. CPMD http://www.cpmd.org/ Akademický software určený pro molekulární simulace za použití metod funkcionálu hustoty. Další software: Turbomole, DALTON, CP2K, ABINIT a další http://en.wikipedia.org/wiki/list_of_quantum_chemistry_and_solid_state_physics_software C2115 Praktický úvod do superpočítání -11-

Syntaxe C2115 Praktický úvod do superpočítání -12-

F77 dialekt fixní formát sloupec 1, pokud začíná písmenem C jedná se o komentář sloupec 1-6 je vyhražen pro návěští (pro I/O formáty, cykly) sloupec 6, pokud obsahuje znak * jedná se o pokračování předchozího řádku sloupec 7-72 obsahuje řádek programu 12345678901234567890123456789001234567891234567890123456789012345678900123456789 C toto je komentar implict none real f integer a, b C --------------------------- C secti cisla a a b a = a + b C dlouhy radek f = a*10.0 + 11.2*b *+ (a+b)**2 100 format(i10) write(*,100) a C2115 Praktický úvod do superpočítání -13-

Zdrojové soubory Fortran 90 a výše používá volnou syntaxi (příkazy již není nutné zarovnávat do sloupců jako tomu bylo u Fortran 77). Povolené zakončení názvů zdrojových souborů:.fpp,.f90,.f95,.f03,.f08 Fortran není case-sensitive (tj. nerozlišuje se velikost písma) K odsazovaní není vhodné používat tabulátor. Komentáře mohou začínat kdekoliv, k uvození komentáře se používá vykřičník!. Maximální délka řádku je omezena (typicky 132 znaků). Pro zápis delších výrazů se používá znak ampersand &. implicit none real :: f integer :: A, B! ---------------------------! secti cislo A a B A = A + B f = A*10.0 + 11.2*B & + (A+B)**2! dlouhy radek C2115 Praktický úvod do superpočítání -14-

Preprocesor Zdrojový soubor může obsahovat direktivy CPP preprocesoru (používaného jazyky C a C++) #include <soubor> #include "soubor" #ifdef #ifundef #if #else #endif #define a další... Zpracování souboru preprocesorem lze vynutit volbou kompilátoru, popř. změnou zakončení souboru na:.fpp,.fpp, F90,.F95,.F03,.F08 http://gcc.gnu.org/onlinedocs/gfortran/preprocessing-options.html C2115 Praktický úvod do superpočítání -15-

Sekce Program program Hello! definice promennych! vlastni program write(*,*) 'Hello world!' směr vykonávání programu! Konec programu end program Program může být předčasně ukončen příkazem stop. C2115 Praktický úvod do superpočítání -16-

Proměnné implicit none logical integer real double precision character(len=30) :: f :: a, g :: c, d :: e :: s vypne automatickou deklaraci proměnných reálné číslo v jednoduché přesnosti reálné číslo v dvojnásobné přesnosti řetězec (text) maximální délka řetězce ve znacích Alternativní zápisy: real(4) :: c, d real(8) :: e Proměnné definujeme na začátku programu, funkce nebo procedury. C2115 Praktický úvod do superpočítání -17-

Proměnné implicit none logical :: f!------------------------- f =.TRUE. write(*,*) f f =.FALSE. write(*,*) f implicit none real :: a,b!------------------------- a = 1.0 b = 2.0 b = a + b write(*,*) a, b implicit none character(len=30) :: s!------------------------- s = 'pokusny text' write(*,*) trim(f) Proměnné vždy inicializujeme (tj. přiřadíme jim výchozí hodnotu). funkce trim ořízne řetězec zprava (odstraní prázdné znaky) C2115 Praktický úvod do superpočítání -18-

Proměnné implicit none real :: a = 1.0 real :: b!------------------------- b = 2.0 b = a + b write(*,*) a, b NIKDY neinicializujeme proměnnou během její deklarace. povolená konstrukce, která se překládá jako real,save :: a = 1.0 obdoba klíčového slova "static" z jazyka C a C++ C2115 Praktický úvod do superpočítání -19-

Matematické operace Operátory: + sčítaní - odčítání * násobení / dělení ** umocnění Bez přímé podpory: MOD(n,m) modulo (n % m z jazyka C) real :: a, b, c!------------------------- a = 1.0 b = 2.0 c = 4.0 b = a + b b = a * b / c c = a ** 2 + b ** 2 C2115 Praktický úvod do superpočítání -20-

Cykly I do promenna = pocatecní_hodnota, koncova_hodnota [, krok] prikaz1 prikaz2... end do Proměnná může být pouze celé číslo (integer). integer :: i!------------------------- do i = 1, 10 write(*,*) i end do integer :: i!------------------------- do i = 1, 10, 2 write(*,*) i end do Vypíše čísla: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 Vypíše čísla: 1, 3, 5, 7, 9 Běh cyklů může být řízen příkazy cycle (obdoba continue z jazyka C) a exit (obdoba break). C2115 Praktický úvod do superpočítání -21-

Podmínky if ( logicky_vyraz ) then prikaz1....true. else end if prikaz2....false. integer :: i = 7!------------------------- if( i.gt. 5 ) then write(*,*) 'i je vetsi nez 5' end if Logické operátory:.and. logické ano.or. logické nebo.not. negace Porovnávací operátory (čísla):.eq. rovná se.ne. nerovná se.lt. menší než.le. menší než nebo rovno.gt. větší než.ge. vetší než nebo rovno Porovnávací operátory (logical):.eqv. ekvivalence.neqv. neekvivalence C2115 Praktický úvod do superpočítání -22-

Cykly II do while ( logicky_vyraz ) prikaz1 prikaz2... end do cyklus probíhá dokud logicky_vyraz vraci.true. double precision :: a!------------------------- a = 0.0 do while ( a.le. 5 ) write(*,*) a a = a + 0.1 end do Vypíše čísla od 0 do 5 s krokem 0.1 Běh cyklů může být řízen příkazy cycle (obdoba continue z jazyka C) a exit (obdoba break). C2115 Praktický úvod do superpočítání -23-

Funkce a procedury Funkce je část programu, kterou je možné opakovaně volat z různých míst kódu. Procedura je podobná funkci, ale na rozdíl od funkce nevrací hodnotu. Vhodným použitím funkcí a procedur se zvyšuje čitelnost programu a snižuje se duplicitní kód. program Hello! definice promennych! vlastni program! volani funkce nebo procedury! konec programu contains! definice funkci nebo procedur end program Funkce a procedury lze volat jak z vlastního programu, tak i samotných funkcí a procedur. Argumenty funkcí a procedur se předávají odkazem. C2115 Praktický úvod do superpočítání -24-

Definice funkce function moje_funkce(a,b,c) result(x) implicit none double precision :: a, b, c! argumenty (parametry) funkce double precision :: x! vysledek funkce!---------------------- integer :: j! lokalni promenna!-----------------------------------------------------------! vlastni telo funkce x = a + b + c end function moje_funkce Alternativní zápis: double precision function moje_funkce(a,b,c) moje_funkce = a + b + c end function moje_funkce C2115 Praktický úvod do superpočítání -25-

Definice procedury subroutine moje_procedura(a,b,c) implicit none double precision :: a, b, c! argumenty (parametry) procedury!---------------------- integer :: j! lokalni promenna!-----------------------------------------------------------! vlastni telo procedury a = a + b + c end subroutine moje_procedura Přístupové vlastnosti argumentů funkcí a procedur lze měnit pomocí klíčového slova intent. Defaultní přístupovou vlastností je intent(inout). double precision, intent(in) :: a! argument lze pouze cist double precision, intent(out) :: b! do argumentu lze pouze zapisovat double precision, intent(inout) :: c! s argumentem lze pracovat libovolne C2115 Praktický úvod do superpočítání -26-

Volání funkcí a procedur Volání funkcí: double precision :: a double precision :: d!----------------------------- a = 5.0 d = moje_funkce_2(a) write(*,*) d double precision :: a double precision :: d!----------------------------- a = 5.0 moje_funkce_2(a) Volání procedur: double precision :: a double precision :: d!----------------------------- a = 5.0 d = 2.0 call moje_procedura_3(a,d) Výsledek funkce se musí použít. C2115 Praktický úvod do superpočítání -27-

Předávání argumentů odkazem double precision :: a double precision :: d!----------------------------- a = 5.0 d = 2.0 write(*,*) d call moje_procedura_3(a,d) write(*,*) d 2? subroutine moje_procedura_3(a,b) implicit none double precision :: a, b! argumenty (parametry)!-----------------------------------------------------------! vlastni telo procedury b = a + b end subroutine moje_procedura_3 C2115 Praktický úvod do superpočítání -28-

Předávání argumentů odkazem double precision :: a double precision :: d!----------------------------- a = 5.0 d = 2.0 write(*,*) d call moje_procedura_3(a,d) write(*,*) d 2 7 V jazyce C by byla hodnota rovna 2. subroutine moje_procedura_3(a,b) implicit none double precision :: a, b! argumenty (parametry)!-----------------------------------------------------------! vlastni telo procedury b = a + b end subroutine moje_procedura_3 C2115 Praktický úvod do superpočítání -29-

Některé standardní funkce a procedury Matematické funkce: sin(x) cos(x) sqrt(x) exp(x) log(x) log10(x) Náhodné čísla: druhá odmocnina přirozený logaritmus dekadický logaritmus call random_seed() call random_number(number) Měření času: call cpu_time(time) inicializuje generátor náhodných čísel nastaví proměnou number na náhodné číslo v intervalu <0.0;1.0) nastaví hodnotu proměnné time na čas běhu programu v sekundách (s mikrosekundovým rozlišením) C2115 Praktický úvod do superpočítání -30-

Pole Staticky definovaná pole: Jednorozměrné pole o velikosti 10 prvků. double precision :: a(10) double precision :: d(14,13) Dynamicky deklarovaná pole: double precision,allocatable :: a(:) double precision,allocatable :: d(:,:)! -------------------------------------------------------! alokace pameti pro pole allocate(a(10000), d(200,300))! pouziti pole! uvolneni pameti deallocate(a,d) Dvourozměrné pole o velikosti 14x13 prvků. (14 řádků a 13 sloupců) Jednorozměrné pole- Dvourozměrné pole. Rozměry polí mohou být definovány i pomocí celočíselných proměnných. C2115 Praktický úvod do superpočítání -31-

Práce s polem double precision :: a(10) double precision :: d(14,13) integer :: i!------------------------------------- a(:) = 0.0! lze zapsat i jako a = 0.0 do i=1, 10 write(*,*) i, '- ty prvek pole je', a(i) end do a = d(:,1)! zapiše první sloupec z! matice d do vectoru a a(5) = 2.3456 d(1,5) = 1.23 write(*,*) d(1,5) Prvky pole se indexují od jedné.* Velikost pole lze zjistit funkci size. * rozsahy indexů pro jednotlivé rozměry lze však měnit C2115 Praktický úvod do superpočítání -32-

Pole paměťový model Fortran a(i,j) C/C++ A[i][j] Prvky jsou za sebou ve sloupcích (column based). Prvky jsou za sebou v řádcích (row based). uspořádání prvků matice v paměti Pokud voláme funkce z knihoven BLAS či LAPACK nutno počítat s rozdílným indexováním vícerozměrných polí. C2115 Praktický úvod do superpočítání -33-

Pole paměťový model Fortran double precision :: d(10,10) double precision :: sum integer :: i,j!------------------------------------- sum = 0.0d0 do i=1, 10 do j=1,10 sum = sum + d(j,i) end do end do C/C++ double* d[]; double sum; //------------------------------------- sum = 0.0; for(int i=0; i < 10; i++){ for(int j=0; j < 10; j++){ sum += d[i][j]; } } index se mění nejrychleji pro řádky index se mění nejrychleji pro sloupce Poznámka: uvedené uspořádání nemá vliv na funkci, ale na rychlost vykonávání C2115 Praktický úvod do superpočítání -34-

I/O operace Zápis dat: write(*,*) a, b, c kam, * - standardní výstup co se má zapsat, seznam proměnných, textových řetězců jak, * - standardní formátování Čtení dat: odkud, * - standardní vstup read(*,*) a, b, c co se má načíst, seznam proměnných jak, * - standardní formátování Soubory se otevírají příkazem open. Zavírají příkazem close. C2115 Praktický úvod do superpočítání -35-

I/O operace - formátování Formátovaný výstup: write(*,10) a, b, c 10 format('hodnota a=',f10.6,' hodnota b=',f10.6, ' hodnota c=',f10.6) formát může být uveden před i za příkazem write či read formátovací typy: F reálné číslo ve fixním formátu E reálné číslo ve vědeckém formátu I celé číslo A - řetězec Zápis dat bez vypsaní znaku konce řádku: write(*,10,advance='no') a, b, c musí být uveden formát C2115 Praktický úvod do superpočítání -36-

Další vlastnosti jazyka 1. podpora pointerů 2. struktury 3. objektově orientované programování C2115 Praktický úvod do superpočítání -37-

Domácí úkol Nepovinné. C2115 Praktický úvod do superpočítání -38-

Cvičení 2 1. Napište program, který vypočte určitý integrál uvedený níže. K integraci použijte obdélníkovou metodu. 1 4 I 1 x 0 2 dx 2. Čemu se integrál rovná? Zjištění zdůvodněte. C2115 Praktický úvod do superpočítání -39-

Literatura http://www.root.cz/serialy/fortran-pro-vsechny/ http://gcc.gnu.org/onlinedocs/gfortran/ Dokumentace ke kompilátoru ifort Clerman, N. S. Modern Fortran: style and usage; Cambridge University Press: New York, 2012. C2115 Praktický úvod do superpočítání -40-