Podstawowy cel wykładu



Pobieranie 126.83 Kb.
Data05.05.2016
Rozmiar126.83 Kb.

Wykład 1/2003 PROGRAMOWANIE MASZYN CYFROWYCH – FORTRAN 90

PROGRAMOWANIE MASZYN CYFROWYCH

FORTRAN 90

wykład: Paweł Rudawy


Podstawowy cel wykładu:


  • zapoznanie z językiem programowania wysokiego poziomu Fortran 90;

  • zapoznawanie z podstawowymi metodami projektowania, pisania oraz uruchamiania własnych programów w języku programowania Fortran 90;




LITERATURA




Lahey Comp. Systems © - Essential Lahey Fortran 90
A.C.Marshall - Modular Programming with Fortran 90
M. Metcalf – Fortran 95/2003 Explained
M. Metcalf – Fortran 90 Tutorial
S. Ramsden i in. - Fortran 90 Students Notes
Press H. i in. - Numerical Recipes in Fortran vol. 1 & 2, Cambridge Univ. Press, 1994.
Pachelski W. - Programowanie strukturalne Fortran 77 dla IBM PC, WNT 1993.
Tannenbaum A.S. - Organizacja maszyn cyfrowych w ujęciu strukturalnym, WNT1980.
Wróblewski P.- Algorytmy, struktury danych i techniki programowania, Helion 1996.

ZESTAW INSTALACYJNY NA CD-ROM



Kompilator Essential Lahey Fortran 90

Elf90_read_this_first.doc
Elf90_reference_manual.pdf

Elf90_compilator_quick_look_manual.htm

Elf90_compilator_instaler.exe



Podręczniki

Fortran 90 First Look Tutorial.html

Fortran 90 for the Fortran 77 Programmer.html

Fortran 90 Live Interactive Tutorial.html

F90_students_notes.ps


Michel Olagnon’s List of the Fortran 90 Resources.html

Fortran77 for Sun Complete Manual.html
Edytor PFE
Program wykładu.html

DEFINICJE I POJĘCIA PODSTAWOWE



Informacje - obiekty abstrakcyjne, które w postaci zakodowanej (jako tzw. dane) mogą być przechowywane, przesyłane, przetwarzane lub też użyte do sterowania.

Dane - informacje wyrażone w pewnym języku naturalnym lub sztucznym.

Dane mogą być proste lub złożone. Dane złożone składają się z danych prostych o określonym wzajemnym usytuowaniu i z określonymi regułami dostępu.


W informatyce dane są obiektami, na których operują programy.

Program komputerowy jest zakodowaną informacją


Informatyka - ogół dyscyplin naukowych i technicznych zajmujących się przetwarzaniem informacji za pomocą komputerów. Teorie informatyczne zajmują się badaniem zjawisk związanych z operowaniem informacją - jej przedstawianiem, przechowywaniem i przetwarzaniem. Informatyka zajmuje się zarówno sprzętem komputerowym jak i narzędziami takimi jak algorytmy, języki programowania itd.

Maszyny cyfrowe (komputery) są to maszyny przeznaczone do automatycznego przetwarzania informacji
według zadanego algorytmu

Historia maszyn cyfrowych (komputerów)
Starożytność - abakus (liczydło)

calculi - kamyczki służące Rzymianom do obliczeń w abakusie.

compute (późna łacina) - nacinanie nacięć/karbów na drzewie.
Cyfry - znaki służące do zapisywania liczb;

Starożytność - znaki proste (kreski) dla poszczególnych jednostek;

Cyfry rzymskie - pochodzenia etruskiego (ok. 500 p.n.e.);

X-III w. - przeniesienie cyfr arabskich do Europy (pochodzą z Indii);

XV w. - rozpowszechnienie cyfr arabskich w Europie;
Cyfry znaczące - w zapisie dziesiętnym danej liczby wszystkie cyfry z wyjątkiem początkowych zer:

15.00245 - 7 cyfr znaczących; 0.000045 - 2 cyfry znaczące. Do cyfr znaczących zalicza się również te zera końcowe, które nie wynikają z zaokrąglenia, lecz z rachunku: 1200 - 4 cyfry znaczące przy dokł. obliczeń 0.5; 1200 - 2 cyfry znaczące przy dokł. 50


1631 - W. Schickard (prof. języków biblijnych i astronomii w Tybindze, 1592-1635) - pierwsza maszyna do dodawania z przeniesieniami.
1642(5) - B. Pascal (1623-1662) - sumator szeregowy (tylko dod. i odejm.)

(1666 Morland, 1678 Grillet, 1722 Gerten)


1671 - G. Leibnitz (1646-1716) - sumator równoległy (tylko dod. i odejm.)
1679 - Leibnitz opisuje obliczenia w dwójkowym systemie zapisu liczb (Bacon) i proponuje budowę maszyny liczącej w tym systemie
1694 - Leibnitz - arytmometr 4-działaniowy z walcami schodkowymi.
1741 - Vaucason - maszyna tkacka sterowana kartami perforowanymi

1801 - krosno J. Jaquarda sterowane kartami perforowanymi


1812(22) - Ch. Babbage (1792-1871) maszyna różnicowa (obliczanie tablic metoda interpolacji)

1833 - Babbage - maszyna analityczna - uznawana za prototyp współczesnych komputerów.

sterowanie sekwencyjne za pomocą kart perforowanych

pamięć (magazyn) i jednostka licząca (młyn)

wprowadzanie danych za pomocą kart perforowanych lub z tarcz numerycznych
1857 - arytmometr klawiszowy (USA)
1889 - Hollerith - zastosowanie kodowania binarnego na kartach dziurkowanych w czasie spisu narodowego

1889 - f-ma Burroughs - pierwsze urządzenie drukujące


1920 - sumator 4-działaniowy elektryczny.
1933 - Zuse (Niemcy) - automat liczący, przekaźniki, system dwójkowy (maszyna Z1)

- wprowadził "przedstawienie półlogarytmiczne" liczb czyli "postać zmiennopozycyjną"


1944 - G. Stibitz z Bell Tel. Lab. (USA) - Mark 1 i Bell-V: maszyny liczące na przekaźnikach, wprowadzanie danych i programu taśma perforowaną
1939-1946 - Eckert i Mauchly, Univ. Pensylwania (USA) - Eniac:

całkowicie elektroniczna, 18000 lamp

zewnętrzne sterowanie sekwencyjne (taśmy i karty perforowane, tablice połączeń)

pamięć tylko dla przechowywania danych

system dziesiętny.
1945 - John von Neuman (1903-1957) - zasada sterowania wewnętrznego:

1. rozkazy i dane we wspólnej pamięci

2. system dwójkowy

1949 - EDVAC - realizacja pomysłów von Neumanna

1951- UNIVAC - pierwsza maszyna produkowana "masowo", pamięć rtęciowa i taśmowa

1953 - IBM 701 - system dwójkowy, pamięć elektrostatyczna (lampy oscyloskopowe)

1958 - Sietuń (ZSRR) - maszyna trójkowa
Maszyny cyfrowe w Polsce:

Instytut Matematyki PAN - Grupa Aparatów Matematycznych

1950 - GAM-1 - przekaźnikowy

1958 - XYZ (częściowo kopia IMB 701)

1959 - powstaje ELWRO

1960/61 - ODRA 1001 (czyli UMC-1 Z. Pawlaka z 1958)

1964 - ODRA 1003 (tranzystorowa) - produkcja seryjna

1967 - ODRA 1300


Przesyłanie sygnałów:

1791 - Claud Chappe - telegraf optyczny (15min/1000km/znak)

1794 - Linia Paryż-Lille

1825 - telegraf Schillinga z kodem dwójkowym

1837 - kod cyfrowy Morse'a

1841 - taśma perforowana w telegrafie (Wheatstone)

1851 - współczesny kod Morse'a

1999 - rezygnacja z kodu Morse'a, 40 Gb/s w światłowodzie.


Podział maszyn cyfrowych:

analogowe (funkcje ciągłe, pierwowzór: suwak logarytmiczny)

cyfrowe (wartości dyskretne, pierwowzór: liczydło)

hybrydowe


Komputery analogowe: specjalistyczne oraz ogólnego stosowania
Komputer analogowy jest to urządzenie liczące, w którym pomiędzy wartościami poszczególnych zmiennych istnieją ściśle określone związki sformułowane w postaci realizowanych sprzętowo zależności matematycznych. Zmiany wartości funkcji f(t) odwzorowywane są w nim za pomocą zmian ciągłych zmiennych fizycznych, np. napięcia lub ciśnienia. Komputer analogowy zbudowany jest z członów operacyjnych, które sprzętowo realizują konkretne równania matematyczne (np. układy hydrauliczne, elektryczne, pneumatyczne lub optyczne). Typ zastosowanych układów analogowych określa typ komputera (np. elektryczny, hydrauliczny).
Komp. analogowe duże: >60 członów operacyjnych, małe: <30 członów.
Działanie komp. analogowego polega na współdziałaniu odpowiednio połączonych członów operacyjnych - brak jest więc elastyczności logicznej.

Maszyna cyfrowa 




Pamięć operacyjna




Sterowanie




PROCESOR



Wejście/wyjście




Pamięć stała

Klasyczny cykl von Neumanna wykonania programu wynikowego:

1. pobranie rozkazu

2. ustawienie licznika rozkazów

3. analiza rozkazu (wyznaczenie typu rozkazu i ew. adresów niezbędnych danych)

4. pobranie niezbędnych danych

5. wykonanie rozkazu

6. zapis wyniku w pamięci

7. skok do 1


Procesor – urządzenie elektroniczne albo abstrakcyjne urządzenie scharakteryzowane przez zbiór jego operacji elementarnych, tj. operacji, które mogą być wykonane przez procesor.
Wejście/wyjście - urządzenia dokonujące zamiany pomiędzy wewnętrzną reprezentacją informacji w komputerze a wielkościami (zawsze analogowymi) reprezentującymi te same informacje poza komputerem (np. średniowieczny manuskrypt lub sygnał cyfrowy).



Algorytm - metoda rozwiązania zadanego problemu w skończonej ilości operacji elementarnych (kroków algorytmu).

Język sformalizowany - język sztuczny, utworzony droga przyjęcia pewnej liczby aksjomatów i definicji. Charakteryzuje się: alfabetem, zbiorem słów (tzw. słów kluczowych), ściśle określonymi zasadami składni i semantyki (zasad określania znaczenia wyrażeń).



Język programowania - sformalizowany język służący do zapisu algorytmu.


  • Pascal

  • C

  • C++

  • Fortran90...

PROBLEM 1:

JAK NAPISAĆ PROGRAM ?



Problem (zadanie)świadomość



Algorytmwiedza



Język programowanianarzędzie



Program źródłowy


Program źródłowy - zapis algorytmu w języku programowania.

Program wynikowy (wykonywalny) jest to ciąg operacji opisanych przez program źródłowy i przedstawiony w postaci ciągu instrukcji wykonywalnych przez określony komputer.



PROBLEM 2: JAK ZBROBIĆ PROGRAM WYKONYWALNY?
Program źródłowy



Translacja (kompilator lub asembler)



Konsolidacja



Program wynikowy


Ale to jeszcze nie koniec problemów...

PROBLEM 3: TESTOWANIE PROGRAMU


PROBLEM 4: JAK WYKORZYSTYWAĆ PROGRAM?
Dane


Wykonanie programu wynikowego przez komputer



Wynik



POZYCYJNE SYSTEMY LICZBOWE
System zapisu liczb: zbiór cyfr i prawideł przedstawiania liczb (np.: 0,1,...,9 albo X,V,C,I,L,M,D)

Systemy: pozycyjne i nie-pozycyjne (np. rzymski) 1978 = MCMDXXVIII

Każdą liczbę X można przedstawić jako sumę:

X= akpk+ak-1pk-1+...+a1p1+a0p0+a-1p-1+a-2p-2+...+a-sp-s

gdzie p>1 i pN jest podstawą systemu, współczynniki ak (cyfry) mogą przyjmować wartości od 0 do p-1.

Np. w dziesiątkowym systemie pozycyjnym podstawą jest 10: 1978 = 1*103 + 9*102 + 7*101 + 8*100

a3=1, a2=9, a1=7, a0=8


podstawa

Cyfry

2


0 1

8


0 1 2 3 4 5 6 7

10


0 1 2 3 4 5 6 7 8 9

16


0 1 2 3 4 5 6 7 8 9 A B C D E F

Dowolna liczbę X w systemie pozycyjnym o podstawie p zapisujemy jako:

X=(akak-1...a1a0.a-1a-2...a-s)p

np. x=(10001.001)2; x=(A0F)16; x=123.567



10

2

8

16

256


100000000

400

100

3236


110010100100

6244

CA4

1256789222


1001010111010010001010011100110

11272212346

4AE914E6

OPERACJE ARYTMETYCZNE W POZYCYJNYCH SYSTEMACH LICZBOWYCH

4 podstawowe działania = tabliczki mnożenia i dodawania.

System dwójkowy (mamy do dyspozycji cyfry 0 i 1)


+

0

1




*

0

1

0

0

1




0

0

0

1

1

10




1

0

1

Uwaga: zapis 10 oznacza 1*21 + 0*20 (czyl 2+0=2) a nie żadne „dziesięć”

System czwórkowy (mamy do dyspozycji cyfry 0, 1, 2 i 3)



+

0

1

2

3




*

0

1

2

3

0


0

1

2

3




0

0

0

0

0

1


1

2

3

10




1

0

1

2

3

2


2

3

10

11




2

0

2

10

12

3

3

10

11

12




3

0

3

12

21

Uwaga: zapis 10 oznacza 1*41 + 0*40 (czyli 4+0=4) a nie żadne „dziesięć”

zapis 12 oznacza 1*41 + 2*40 (czyli 4+2=6) a nie żadne „dwanaście”


Należy zapamiętać, że 2N = 2N-1+...+2·20
Odejmowanie liczb binarnych: weżmy liczbę osiem

system "porzyczek": 1 0 0 0 (1*23+0*22+0*21+0*20=8 dec)

ß ß ß ß

0 1 1 10 (0*23+1*22+1*21+ 1*21+0*20=8 dec)



["Porzyczka" do 0 daje 10 czyli 2 dec]
np.; 10000000 (128 dec) 11111110

-1111111 (127 dec) Þ - 1111111

= 1 [ 10-1=1 (zapis dwójkowy) ]

11101.101






101101.101



11011.11


+1101.011





-11010.01




*

10.1


11011.000





10011.011




1101111












+ 1101111












1000101.011

____________________________________________________________________________________


LICZBY O SKOŃCZONEJ PRECYZJI
Wielkość komórki pamięci jest zdefiniowana przez hardware lub software

Liczby można wyrażać tylko za pomocą skończonych ciągów cyfr.


LICZBY STAŁOPOZYCYJNE


K bitów

znak (1 bit)


część całkowita (L bitów)

część ułamkowa (K-L-1 bitów)

Znak: 0 dla liczb>0, 1 dla liczb<0.

Liczba największa: 1....1.1....1 = 1...1.1...1 + 0.0...1 - 0.0...1 = 10...0.0 - 0.0...1 = 2L-2-(K-L-1)

Ilość znaków: L K L K L+1

Np. 111.1112 (7 i 7/8) = (7 i 7/8) + 1/8 –1/8 = 10002 – 0.0012 = 23 – 2-3 = 2L – 2(7-3-1)

Liczba najmniejsza: 0.0...1 = 2-(K-L-1)

Np. K=13 L=6 1/6463/64
Uwaga: wystepuja błędy nadmiaru i niedomiaru.

LICZBY ZMIENNOPOZYCYJNE
Liczbę rzeczywistą można przedstawić jako: X=f*10e gdzie f nazywamy mantysą, f<1, e nazywamy cechą.


K bitów

znak liczby (1 bit)


mantysa (R bitów)

znak cechy (1 bit)

cecha (K-R-2 bitów)

Zakres zapisu określa liczba cyfr cechy

Precyzję zapisu określa liczba cyfr mantysy

Liczba największa: 0.1.....1*101...1 = (1.0 - 0.0....1)*101...1 = (1 - 2-R)*22(K-R-2)-1

Liczba najmniejsza: 0.0...1*10-1...1 = 2-2(K-R-2)
Np.: K=13 R=8 1/65536Liczby znormalizowane - liczby, w których pierwszą cyfrą mantysy jest 1. Algebra liczb znormalizowanych jest zamknięta ze względu na 4 działania podstawowe.

Np. cecha 2-cyfrowa, mantysa 3-cyfrowa 0.1 199 rzędów wielkości, 179100 liczb

nadmiar wyrażalne ujemny dodatni wyrażalne nadmiar

ujemny liczby ujemne niedomiar niedomiar liczby dodatnie dodatni

------ -10100 -10-100------------0------------10-100 10099-------

Liczby zmiennopozycyjne nie tworzą kontinuum.

W każdym zbiorze liczb zmiennopozycyjnych o skończonej precyzji jest tylko skończona ilość liczb,
co powoduje błędy zaokrąglenia.

Zbiór liczb o skończonej precyzji nie jest zamknięty ze względu na wszystkie 4 działania podstawowe:

1. występują błędy nadmiaru lub niedomiaru.

2. występują błędy nie należenia do zbioru.

Np.: Z=(000,...,999) ad1: 600+600=1200 (błąd nadmiaru) ad 2: 7/2 nie należy do Z.


Komputer działając poprawnie może dawać wyniki błędne

z punktu widzenia matematyki klasycznej.
Sposoby zapisu liczb (kodowanie):

- kod bezpośredni (moduł-znak)

- kod samo-uzupełnieniowy (uzupełnieniowy do 1)

- kod uzupełnieniowy (do 2)

- kod z nadmiarem 2M-1 dla liczb M-bitowych


Kod samo-uzupełnieniowy (wyk. w operacjach dodawania i odejmowania):

Kodowanie liczb: znajdowanie liczby ujemnej Þ negacja wszystkich bitów w liczbie dodatniej


10 dec = 0 00001010 bin; 12 dec =0 00001100 bin;

10-12=10+(-12) 0 00001010

+ 1 11110011

____________________

1 11111101

____________________

dekod: 1 00000010 = -2
Dekodowanie: liczby dodatnie Þ kod jest identyczny z liczbą

liczby ujemne Þ należy zanegować wszystkie bity oprócz bitu znaku


Kod z nadmiarem 2M-1 dla liczb M-bitowych:
Liczba reprezentowana jest jako suma jej samej i liczby 2M-1.

Dla M=8 liczba -3 zapisywana jest jako -3+128=125 czyli liczbie -3 odpowiada kod binarny liczby 125 czyli 01111101. Liczby od -128 do 127 odwzorowywane sa na liczby w zakresie od 0 do 255.

_________________________________________________________________________________

ALFABET FORTRANU F90:
Niemal wszystkie drukowalne znaki kodu ASCII, tj.:
litery:

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

a b c d e f g h i j k l m n o p q r s t u v w x y z
• cyfry:

0 1 2 3 4 5 6 7 8 9
• znaki specjalne:

_ = + - * / ( ) , . ' : ! " % & ; < > ? $

Znaki alfanumeryczne: litery, cyfry, _ (podkreślenie)
Ze znaków alfabetu F90 tworzy się kod źródłowy, a w szczególności:


  • Tworzy się nazwy przetwarzanych/używanych obiektów (zmiennej, tablicy, procedury, modułu etc.);

  • Zapisuje słowa kluczowe, operatory, instrukcje języka F90.

Znaki specjalne używane są jako symbole operatorów, oznaczeń oraz do grupowania elementów.



  • Spacja służy w szczególności do rozdzielania elementarnych jednostek informacji F90 w instrukcjach

  • Kilka spacji jest równoważne jednej spacji


Spacje mają znaczenie dla treści instrukcji

Użycie dużych i małych liter nie ma znaczenia dla treści instrukcji (za wyjątkiem stałych znakowych).


NAZWY OBIEKTÓW
Każdy z obiektów występujących w programie (zmienna, tablica, funkcja, procedura) identyfikowany jest poprzez nadaną mu nazwę.
· Nazwa składa się z ciągu liter, cyfr i znaków _

· Nazwa musi zaczynać się od litery

· Długość nazwy do 31 znaków

· Wielkość liter jest ignorowana (użycie dużych i małych liter nie ma znaczenia dla znaczenia nazwy)

prawidłowe nazwy: ala_ma kota NaZwA masa_galaktyki

błędne nazwy: 1dwatrzy _start_ masa_gala ktyki

Typy nazw: globalne i lokalne.

Nazwy globalne: identyfikowane (rozpoznawane) w całym programie. Są to nazwy procedur, funkcji, bloków common.



Nazwy lokalne: rozpoznawane są tylko w ramach segmentu, w którym są zadeklarowane. Są to nazwy zmiennych, tablic, argumentów i funkcji lokalnych.
SŁOWA KLUCZOWE
Zbiór (niewielki) słów, które mają ściśle zdefiniowane znaczenie (np. STOP, DO itd.).Z reguły są poleceniami wykonania pewnej operacji (np. zadeklarowania zmiennej czy wykonania skoku), służą do deklaracji zmiennych i stałych itp.
Słowa kluczowe nie są zarezerwowane, ale zaleca się nie używać słów kluczowych dla oznaczania innych obiektów.
Przykłady: DO, STOP, CASE, IF


OPERATORY
Operatory:

= przypisania (podstawienie)

+, -, /, * cztery działania podstawowe

< > ... operatory relacji

.and. .or. ... operatory logiczne

NIECH MOC (PROCESORA) BĘDZIE Z WAMI!!




©absta.pl 2016
wyślij wiadomość

    Strona główna