Fortran 90/95 wykład 1

Podobne dokumenty
1 Podstawy c++ w pigułce.

Podstawy programowania skrót z wykładów:

Algorytmika i Programowanie VBA 1 - podstawy

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Podstawy VBA cz. 1. Programowanie komputerowe

Historia Kompilatory Podstawy składni Zastosowanie. Język Fortran. Bartosz Radliński. Poznań, 2015

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44

Wstęp do programowania

1 Podstawy c++ w pigułce.

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

INSTRUKCJA PUSTA. Nie składa się z żadnych znaków i symboli, niczego nie robi. for i := 1 to 10 do {tu nic nie ma};

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

Modelowanie Procesów Jądrowych

FORTRAN 90 Ruch planet

Programowanie w języku C++ Grażyna Koba

Języki programowania zasady ich tworzenia

I. KARTA PRZEDMIOTU CEL PRZEDMIOTU WYMAGANIA WSTĘPNE W ZAKRESIE WIEDZY, UMIEJĘTNOŚCI I INNYCH KOMPETENCJI EFEKTY KSZTAŁCENIA

Python wprowadzenie. Warszawa, 24 marca PROGRAMOWANIE I SZKOLENIA

Microsoft IT Academy kurs programowania

2 Przygotował: mgr inż. Maciej Lasota

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 2. Karol Tarnowski A-1 p.

Wstęp do programowania. Wykład 1

Elementy języka C. ACprogramislikeafastdanceonanewlywaxeddancefloorbypeople carrying razors.

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++

Wprowadzenie do programowania w VBA

Podstawy programowania w języku Visual Basic dla Aplikacji (VBA)

Pascal - wprowadzenie

Oczywiście plik musi mieć rozszerzenie *.php

Zmienne, stałe i operatory

LibreOffice Calc VBA

Podstawy Programowania C++

Języki Programowania. Elementy języków programowania. Wojciech Sobieski

Wstęp do programowania. Różne różności

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe

ForPascal Interpreter języka Pascal

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Umieszczanie kodu. kod skryptu

Programowanie w języku Python. Grażyna Koba

Jak napisać program obliczający pola powierzchni różnych figur płaskich?

Wykład 2 Składnia języka C# (cz. 1)

Podstawy Informatyki. Metalurgia, I rok. Wykład 3 Liczby w komputerze

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 10 Kurs C++

ECDL Podstawy programowania Sylabus - wersja 1.0

Komputerowe Obliczenia Równoległe: Wstęp do OpenMP i MPI

Programowanie komputerowe. Zajęcia 1

LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI. Wprowadzenie do środowiska Matlab

Wprowadzenie do programowania w języku FORTRAN

Elementy języków programowania

Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja cz. 1

Podstawy Programowania Podstawowa składnia języka C++

Wykład I. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Wstęp do informatyki- wykład 9 Funkcje

Programowanie strukturalne i obiektowe

Języki skryptowe w programie Plans

Wykład 4. Środowisko programistyczne

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 5 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41

4. Funkcje. Przykłady

Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja, - liczby losowe

Języki i metodyka programowania. Wprowadzenie do języka C

Podstawy programowania

Prof. Danuta Makowiec Instytut Fizyki Teoretycznej i Astrofizyki pok. 353, tel danuta.makowiec at gmail.com

Analiza leksykalna 1. Języki formalne i automaty. Dr inż. Janusz Majewski Katedra Informatyki

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

Podstawy Informatyki. Kompilacja. Historia. Metalurgia, I rok. Kompilatory C++ Pierwszy program. Dyrektywy preprocesora. Darmowe:

Programowanie. Projektowanie funkcje programu tworzenie algorytmu i struktur danych. Programowanie implementacja algorytmu kompilacja programu

Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Ćwiczenie 1. Podstawy. Wprowadzenie do programowania w języku C. Katedra Metrologii AGH

Język C : programowanie dla początkujących : przewodnik dla adeptów programowania / Greg Perry, Dean Miller. Gliwice, cop

Analiza leksykalna 1. Teoria kompilacji. Dr inż. Janusz Majewski Katedra Informatyki

Podstawy Informatyki. Metalurgia, I rok. Wykład 6 Krótki kurs C++

Wstęp do informatyki- wykład 11 Funkcje

Niezwykłe tablice Poznane typy danych pozwalają przechowywać pojedyncze liczby. Dzięki tablicom zgromadzimy wiele wartości w jednym miejscu.

Programowanie C++ Wykład 2 - podstawy języka C++ dr inż. Jakub Możaryn. Warszawa, Instytut Automatyki i Robotyki

Fortran90 (oraz FORTRAN77) ekspresowo 1

Podstawy programowania. Wykład Pętle. Tablice. Krzysztof Banaś Podstawy programowania 1

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Podstawy VBA cz. 2. Programowanie komputerowe

Podstawy Programowania. Wykład 1

Język ludzki kod maszynowy

Język programowania PASCAL

Wstęp do Programowania, laboratorium 02

Wykład I. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

Wprowadzenie do języka Java

Metody numeryczne Laboratorium 2

1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja. 2. Schemat blokowy przedstawia algorytm obliczania

Podstawy języka C++ Maciej Trzebiński. Praktyki studenckie na LHC IFJ PAN. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. M. Trzebiński C++ 1/16

Podstawy programowania C. dr. Krystyna Łapin

Podstawy programowania w języku C

29. Poprawność składniowa i strukturalna dokumentu XML

Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek].

Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.

Język C część 1. Sformułuj problem Zanalizuj go znajdź metodę rozwiązania (pomocny może byd algorytm) Napisz program Uruchom i przetestuj czy działa

KARTA KURSU. Wstęp do programowania

Technologie informacyjne - wykład 12 -

2. Zmienne i stałe. Przykłady Napisz program, który wypisze na ekran wynik dzielenia 281 i 117 w postaci liczby mieszanej (tj. 2 47/117).

Instrukcje sterujące. wer. 11 z drobnymi modyfikacjami! Wojciech Myszka :53:

KURS C/C++ WYKŁAD 2. char znak; znak = a ; Program 2 #include<stdio.h> void main() { char znak; while( (znak = getchar() )!= t ) putchar(znak); }

Podstawy Programowania

Cw.12 JAVAScript w dokumentach HTML

Transkrypt:

Fortran 90/95 wykład 1 Janusz Andrzejewski 05/03/13

PLAN Historia Co złego w FORTRANie 77 Co nowego w Fortranie 90/95 Nowy styl Typy danych, deklaracja zmiennych i stałych Struktury danych Przekazywanie argumentów 2

Historia FORTRAN I 1954-57 jako jeden z pierwszych języków wysokiego poziomu w laboratorium IBM pod kierownictwem John'a Backusa powstał FORTRAN I (akronim od FORmula TRANslation) jako język który w łatwy sposób pozwalał zapisywać i obliczć matematyczne formuły. Był pierwszym językiem który posiadał kompilator. Dzięki niemu można było 5 razy szybciej pisać programy, przy okolo 20% spowolnienu w porównaniu z programem napisanym w języku maszynowym. FORTRAN I przez 20 lat posiadał najlepszy kompilator. W 1977 John Backus otrzymał nagrodę TURINGA za: głęboki, wpływowy i trwały wkład do projektowania praktycznych systemów programowania wysokiego poziomu, w szczególności poprzez pracę nad FORTRAN'em i za przełomową publikację nt. formalnych procedur specyfikacji John Backus języków programowania (3.12.1924-17.03.2007) 3

Historia Skład grupy tworzącej kompilator FORTRANu (zdjęcie z 1982r). W skład wchodzili: inżynierowie, naukowcy, matematycy, szyfrant, szachista 4

Historia złote lata 1957 FORTRAN I zawierał 32 instrukcje 1958 FORTRAN II znacząco udoskonalony, pozwalał na osobną kompilację modułów. Dodano możliwość pisania procedur oraz funkcji. Później dodano także typ DOUBLE PRECISION oraz COMPLEX 1958 Fortran III nigdy publicznie nie opublikowany, posiadał możliwość wstawiania kodu maszynowego. 1961 Fortran IV dalsze udoskonalenia, dodatnie COMMON oraz EQUIVALENCE. Dodano typ LOGICAL oraz stworzono możliwość budowania wyrażeń logicznych. Usunięto instrukcje niskopoziomowe. Wersja ta stała się nieformalnym standardem języka. 5

Historia złote lata Maj 1962 ASA (American Standards Association teraz znana jako American National Standards Institute) zaczeła pracę na standaryzacją języka 1966 FORTRAN 66 pierwszy standard języka został opublikowany. Był to też pierwszy jakikolwiek standard dotyczący języków programowania. Wersja FORTRAN oparta na wersji FORTRAN IV Wersja Basic FORTRAN oparta na wersji FORTRAN II 6

Historia - stagnacja Przełom lat 60 i 70 FORTRAN przestał być w awangardzie, nie wytyczał/adoptował nowych idei jak tzw. programowanie strukturalne 1978 FORTRAN 77 (w skrócie F77) nowy standard języka (norma ANSI X3.9-1978) Pętla DO mogła posiadać malejący indeks pętli Blokowa instrukcja IF... THEN... ELSE... ENDIF. Przed F77 była tylko IF GOTO instrukcja powodująca tzw. spaghetti program pre-testowanie pętli DO. Przed F77 pętle DO zawsze się przynajmniej raz wykonywały, co powodowało konieczność użycia instrukcji IF GOTO jeśli chciało się mieć oczekiwane zachowanie Nowy typ CHARACTER. Przed F77 znaki były przechowywane w zmiennych typu INTEGER Apostrof mógł zaczynać i kończyć łańcuch znaków Główny segment mógł się kończyć bez instrukcji STOP 7

Historia - stagnacja 1978 rozszerzona wersja F77 opublikowana, rozszerzenie MIL- STD-1753 Dodano instrukcje DO WHILE oraz END DO Dodano instrukcje INCLUDE Dodano IMPLICIT NONE (wariant instrukcji IMPLICIT) Dodano operacje na bitach 1980 międzynarodowy standard, norma ISO 1539-1980 8

Co złego w FORTRAN'ie 77 Nie ma dynamicznych struktur danych Nie ma możliwości zdefiniowania typów danych Nie ma wbudowanych struktur danych Nie ma kontroli nad poprawnością przekazywania argumentów Mała gama instrukcji sterujących, powodujących powstawanie tzw. spagetti programu Archaiczność kodu Sztywny format zapisu programu Tylko duże litery Zmienne mogą mieć długość 6 znaków 9

Co nowego w Fortranie 90 Wolny styl pisania programów Tablice operacje na tablicach stają się podstawą języka Dynamiczne struktury danych Możliwość definiowania własnych struktur danych, przeciążania operatorów lub definiowania własnych MODULE nowy sposób grupowania zmiennych, funkcji i procedur Nowe instrukcje kontrolujące przebieg programu Możliwość używania rekurencji Możliwość używania opcjonalnych argumentów... 10

Nowy wygląd Małe litery mogą być używane, jednak Fortran jest nieczuły na wielkość liter Nazwy zmiennych mogą mieć długość 31 znaków, znakami mogą być także znak podkreślenia oraz cyfry W jednej linii może być kilka instrukcji oddzielonych średnikiem suma=0.0; iloczyn=0.0; iloraz=0; Komentarz może zaczynać się w dowolnym miejscu lini Suma_czesciowa=0.0! pomocnicza zmienna Stałe znakowe mogą być zamknięte poprzez pojedynczy jak i podwójny cudzysłów write(*,*) It isn't broke. Don't fixed it 11

Wolny styl pisania programów Instrukcje mogą pojawić sie w dowolnym miejscu linii, linie mogą mieć 132 znaki długości Znak! służy do zaznaczania komentarza Znak & służy jak znak kontynuacji linii call moja(a, b &! najwazniejsze argumenty c, d)! mniej ważne argumenty Nie w każdym miejscu można użyć komentarzy write(*,*) To jest lancuch & & i jego dalsza czesc! Miedzy tymi liniami nie! nie moze byc komentarza Spacje są istotne liczba=1 000 000! Poprawnie tylko dla sztywnego stylu 12

Program Hallo world PROGRAM pierwszy WRITE(*,*)'Czesc' END PROGRAM pierwszy Każdy segment składa się z 2 części Bloku instrukcji biernych (BIB) Bloku instrukcji czynnych (BIC) Przed BIB jest nagłówek (np. PROGRAM), koniec segmentu zakończony jest słowem kluczowym END 13

Typ całkowity Standardowy sposób (F77): INTEGER Nowy sposób określania typu całkowitego (F90) selected_int_kind(r) Funkcja zwraca tzw. kind wartość (o domyślnym typie integer) taką, że typ ten może reprezentować wszystkie liczby całkowite z zakresu -10^r < n < 10^r. W przypadku kiedy wiele typów całkowitych może reprezentować dany zakres, wybierany jest najmniejszy typ. W przypadku gdy nie ma takiego typu który był by w stanie reprezentować wszystkie liczby całkowite, funkcja zwraca wartość -1 14

Przykład INTEGER nn, na integer, parameter :: k6=selected_int_kind(6) integer(k6) :: i, j; integer(2) :: l, m! ryzykownie integer(kind=k6) :: k! Sposoby deklaracji stałych całkowitych 23-456 23_k6! deklaracja stałej liczbowej o typie określonym przez! kind value wynoszaca k6 kind(1) - funkcja zwracjąca kind value dla domyślnego typu całkowitego kind(2_k6) - wartość kind dla typu o kind=k6 15

Typ zmiennoprzecinkowy Standardowy sposób (F77) REAL, DOUBLE PRECISION Do określania typów zmiennoprzecinkowych używamy: selected_real_kind(p, r) Funkcja ta zwraca liczbę całkowitą (o domyślnym typie całkowitym) której wartością jest typ (kind value) jaki ma liczba rzeczywista o precyzji określonej przez argument p i o zakresie określonej przez argument r. Przynajmniej jeden z argumentów musi być podany. W przypadku gdy nie ma odpowiedniego typu danych zwracana jest: -1 gdy nie ma odpowiedniej precyzji -2 gdy nie ma odpowiedniego zakresu -3 gdy nie ma ani zakresu ani precyzji 16

Przykład integer, parameter ::long=selected_real_kind(9, 99) DOUBLE PRECISION dx, dy REAL rx, ry real :: a, b real(long):: c, d real(kind=long) :: e, f real(8) :: x, y! Ryzykownie, najprawdopodobniej jest to double!precision A=1.0 c=2.0_long X=4.0_8! ryzykownie 17

Typ COMPLEX Typ COMPLEX składa się z 2 licz rzeczywistych, więc do określenia typu COMPLEX używa się tego samego sposobu co do określenia typu dla licz rzeczywistych COMPLEX cz DOUBLE COMPLEX dz, zz integer, parameter :: lzsp=selected_real_kind(9, 99) complex :: z1 complex(lzsp) :: z2 Z1=(1.0, 2.0) z2=(1.0_lzsp, 3.0_lzsp) 18

Struktury danych W Fortranie 90/95 można definiować własne nowe struktury danych. Postać: type nazwa_sd typ_zmiennej :: nazwa_zmiennej... end type nazwa_sd Przykład: type osoba character(len=20) :: imie real :: wiek integer :: id end type osoba 19

Struktury danych Deklaracja zmiennych o własnym typie danych type(osoba) :: me Operacje na strukturach danych. Dostęp do poszczególnych pól SD poprzez operator % me%imie= Janusz me%wiek=podaj_wiek() me%id+9! jako wyrażenie 20

Przekazywanie argumentów W Fortranie 90/95 jest możliwość dookreślenia sposobu przekazywania argumentów do procedur i funkcji. W deklaracji argumentów formalnych, należ podać dodatkowy atrybut INTENT z odpowiednimi opcjami Atrybut INTENT(IN) argument formalny na wejściu do segmentu ma ustaloną wartość, wartości tego argumentu (zmiennej) nie można i nie wolno zmieniać Atrybut INTENT(OUT) argument formalny na wejściu do segmentu nie ma ustalonej wartości, w segmencie można i należy ustalić wartość tego argumentu Atrybut INTENT(INOUT) argument formalny na wejściu do segmentu ma ustaloną wartość oraz w segmencie wartość tego argumentu można zmieniać 21

Przykład SUBROUTINE oblicz(a, wym, b) INTEGER, INTENT(IN) :: wym REAL, INTENT(IN), DIMENSION(:) :: a REAL, INTENT(OUT) :: b INTEGER :: i b=0.0 DO i=1, wym Program test INTEGER, PARAMETER :: wym=20 REAL :: a(wym), b INTEGER i DO i=1, wym; a(i)=0.0+i; END DO CALL oblicz(a, wym, b) END b=b+a(i); END DO END SUBROUTINE oblicz 22

Przykład (2) SUBROUTINE ktoryraz(k) INTEGER, INTENT(INOUT) :: k k=k+1 Write(*,*)'Wywolales & &procedurke ',k,' razy' END SUBROUTINE Program dwa INTEGER :: i, k K=0 DO i=1, 10 CALL ktoryraz(k) End do END PROGRAM dwa 23

Dziękuję za uwagę 24