FORTRAN 77. materiały pomocnicze do wykładów. Opracował: dr Jan Budziński
|
|
- Amelia Kowalczyk
- 9 lat temu
- Przeglądów:
Transkrypt
1 FORTRAN 77 materiały pomocnicze do wykładów Opracował: dr Jan Budziński
2 Spis treści FORTRAN 77 ( RMFORT ) I. Informacje wstępne 1 A. Wprowadzenie 1 B. Struktura programu 1 C. Przygotowanie i uruchomienie programu 3 D. Program graficzny 4 II. Podstawowe elementy języka FORTRAN-u 7 A. Zbiór znaków podstawowych 7 B. Stałe 7 1. Stałe całkowite (INTEGER) 7 2. Stałe rzeczywiste (REAL i DOUBLE 7 PRECISION) 3. Stałe zespolone (COMPLEX 8 i COMPLEX *16) 4. Stałe logiczne (LOGICAL) 8 5. Stałe tekstowe (CHARACTER) 8 C. Nazwy symboliczne 8 D. Zmienne 8 E. WyraŜenia arytmetyczne, logiczne i tekstowe 9 F. Instrukcje 9 III. Instrukcje specyfikacji zmiennych 10 (dyrektywy) A. Instrukcja specyfikacji jawnego opisu typu 10 B. Standardowe uzgodnienia o typie 11 C. Instrukcja IMPLICIT 11 D. Instrukcja DIMENSION 11 E. Przydział pamięci dla zmiennych prostych i 12 tablic IV. WyraŜenia arytmetyczne, logiczne i 13 tekstowe A. WyraŜenia arytmetyczne A 13 B. WyraŜenia logiczne (boolowskie) B 14 C. WyraŜenia tekstowe (łańcuchowe) T 15 V. Instrukcje podstawiania (przypisania) 16 A. Instrukcja podstawiania arytmetyczna 16 B. Instrukcja podstawiania logiczna 16 C. Instrukcja podstawiania tekstowa 16 D. Instrukcja podstawiania typu ASSIGN 17 VI. Instrukcje sterujące 18 A. Instrukcje typu GOTO Bezwarunkowa instrukcja GOTO Obliczana instrukcja GOTO Podstawiana instrukcja GOTO 18 B. Instrukcje typu IF Arytmetyczna instrukcja IF Logiczna instrukcja IF Blokowa instrukcja IF 19 C. Instrukcja CONTINUE 20 D. Instrukcja DO 20 E. Instrukcja PAUSE 22 F. Instrukcja STOP 22 G. Instrukcja END (dyrektywa) 22 VII. Instrukcje wejścia/wyjścia 23 A. Wprowadzenie 23 B. Instrukcje otwarcia i zamknięcia pliku 23 sekwencyjnego C. Instrukcja czytania sekwencyjna 24 D. Instrukcja pisania sekwencyjna 25 E. Instrukcja FORMAT (dyrektywa) 25 F. Instrukcje otwarcia i zamknięcia pliku 27 bezpośredniego dostępu G. Instrukcje pisania i czytania dla pliku 28 bezpośredniego dostępu VIII. Funkcje i podprogramy 29 A. Wprowadzenie 29 B. Funkcje standardowe 29 C. Funkcje lokalne 31 D. Funkcje zewnętrzne 32 E. Podprogramy 33 IX. Uzupełniające instrukcje specyfikacji 35 (dyrektywy) A. Instrukcja COMMON 35 B. Instrukcja EQUIVALENCE 35 C. Instrukcja DATA 36 D. Instrukcja PROGRAM 37 E. Instrukcja PARAMETER 37 F. Segment BLOCK DATA 37 MODUŁ GRAFICZNY EGAB (Dla RMFORT-a) I. Informacje Wstępne 39 A. Wprowadzenie 39 B. Struktura ekranu graficznego 39 II. Podprogramy organizacyjne ekranu 40 A. Inicjowanie trybu graficznego 40 B. Ustawianie parametrów graficznych 40 C. Rysowanie elementów graficznych 41 III. Ekranowe operacje blokowe 42 A. Kopiowanie prostokąta w pamięci karty 42 B. Kopiowanie prostokąta w pamięci RAM 42 C. Kopiowanie prostokąta przez maskę koloru 42 D. Rysowanie prostokąta przez tablicę kolorów 43 IV. Sterowanie myszą i funkcje towarzyszące 44 A. Sterowanie kursorem myszy 44 B. Sterowanie ikoną 44 V. Podprogramy komunikacji z peryferiami 45 A. Podprogramy dla klawiatury 45 B. Podprogram badania stacji dyskiet 45 C. Podprogram uruchomienia programu 45 CHILD PROCESS VI. Podprogramy obsługi plików i katalogów 47 MODUŁ APLIKACJI APLB (Dla RMFORT-a) A. Wprowadzenie 48 B. Inicjowanie palety kolorów 48 C. Pisanie tekstów specjalnymi fontami 49 D. Wizualizacja obrazów 49 II
3 FORTRAN 77 ( RMFORT ) I. Informacje wstępne A. Wprowadzenie Niniejszy tekst jest skrótowym opisem języka programowania FORTRAN opartym na standardzie FORTRAN-u 77. Jedną z realizacyjnych wersji tego języka, przeznaczoną do pracy na komputerach typu IBM PC, jest pakiet RMFORT zawierający kompilator (plik RMFORT.EXE), program łączący (plik PLINK86.EXE), bibliotekę podprogramów i funkcji standardowych (plik RMFORT.LIB) oraz inne programy usługowe i organizacyjne. Uzupełnieniem tego pakietu jest moduł podprogramów graficznych (plik EGAB.OBJ) i moduł podprogramów usługowych (APLB.OBJ) opracowane w celu realizowania funkcji graficznych na monitorach z kartą graficzną typu EGA, VGA i SVGA oraz dla usprawnienia komunikacji z dyskami, klawiaturą i myszą. W tym opracowaniu przyjmuje się, Ŝe wymienione pliki są w katalogu C:\RMFORT wymienionym w ścieŝce dostępu pliku wsadowego AUTOEXEC.BAT. B. Struktura programu Podstawową jednostką programową w FORTRAN-nie jest segment składający się z sekwencji linii programowych zakończonej linią END. Segmentem w tym sensie jest: - program główny, - podprogram, - funkcja niestandardowa, - segment typu BLOCK DATA. Program realizowalny na komputerze musi zawierać co najmniej program główny. Ponadto w jego skład mogą wchodzić pozostałe segmenty stosownie do potrzeb. Poszczególne segmenty mogą być oddzielnymi plikami typu FOR. Mogą teŝ zawierać się w jednym lub więcej wspólnych plikach typu FOR z tym zastrzeŝeniem aby program główny poprzedzał pozostałe segmenty. Ze względu na sposoby kodowania i spełniane funkcje, zawartość linii programowych moŝna podzielić na trzy niŝej krótko scharakteryzowane grupy. Instrukcje. Instrukcje są podstawowymi składnikami segmentów. Koduje się je w przedziale od 7 do 72 pozycji linii. Jeśli instrukcja przekracza ten zakres, moŝna ją kontynuować w następnym wierszu, sygnalizując kontynuację przez umieszczenie znaku róŝnego od 0 lub spacji na 6-tej pozycji. W tym opracowaniu przyjęto, Ŝe jest to znak *. Instrukcja moŝe zawierać do 19-tu linii kontynuacji. Etykiety. Etykieta jest ciągiem od 1 do 5-ciu cyfr zapisanym w pozycjach 1-5 linii instrukcji. Nie moŝna uŝyć etykiety składającej się z samych zer. Wartości liczbowe wszystkich etykiet w ramach segmentu muszą być róŝne. Komentarze. Komentarz moŝe być umieszczony w dowolnym miejscu segmentu jako linia komentarza. W linii komentarza na pozycji 1 musi wystąpić litera C. Treść komentarza w postaci dowolnej informacji dla programisty zapisuje się w pozycjach Komentarz moŝna takŝe umieścić w pozycji linii instrukcji. Komentarze są ignorowane przez kompilator, a zatem nie wpływają na przebieg programu. Dla ilustracji, niŝej podano przykład programu organizującego rozwiązywanie równania kwadratowego (Program główny) i podprogramu obliczania pierwiastków tego równania (Podprogram). 1
4 Program główny C Program "RKWAD" sterujacy obliczaniem rzeczywistych C pierwiastkow rownania kwadratowego C PROGRAM rowkwad REAL a,b,c,x1,x2 302 FORMAT(/' Podaj wspolczynniki A, B, C jako trzy liczby'/ * ' oddzielone spacjami. Po ostatniej liczbie wcisnij Enter'/) WRITE(*,302) C Czytanie wspolczynnikow, wywolanie podprogramu i badanie rozwiazan READ(*,*) a,b,c CALL pierw(a,b,c,x1,x2,i) IF (i.gt.0) GOTO 50 C Jesli brak pierwiastkow rzeczywistych WRITE(*,304) 304 FORMAT(' Brak rozwiazania w R') STOP '0 pierwiastkow' 50 IF (i.gt.1) GOTO 60 C Jesli jeden pierwiastek WRITE(*,300) x1 300 FORMAT(' x=',e12.4) STOP '1 pierwiastek' C Jesli dwa pierwiastki 60 WRITE(*,303) x1,x2 303 FORMAT(' x1=',e12.4,' x2=',e12.4) STOP '2 pierwiastki' END Podprogram C Podprogram "PIERW" oblicza pierwiastki rownania kwadratowego C na wejsciu: u, v, w - wspólczynniki rownania C na wyjsciu: k=0 jesli nie istnieja pierwiaski, C k=1 jesli 1 pierwiastek - w p1, C k=2 jesli 2 pierwiastki - w p1 i p2 C SUBROUTINE pierw(u,v,w,p1,p2,k) REAL u,v,w,p1,p2,delta delta=v*v-4.0*u*w C Jesli delta < 0 IF (delta.lt.0.0) THEN k=0 RETURN ENDIF C Jesli delta = 0 IF (delta.eq.0.0) THEN k=1 p1=-v/(u+u) RETURN ENDIF C Jesli delta > 0 IF (delta.gt.0.0) THEN k=2 delta=sqrt(delta) p1=(-v-delta)/(u+u) p2=(-v+delta)/(u+u) RETURN ENDIF END 2
5 C. Przygotowanie i uruchomienie programu. Zakładając, Ŝe powyŝszy program i podprogram będą oddzielnymi plikami naleŝy wykonać poniŝszy zestaw czynności. 1. Przy pomocy edytora NE (Norton Editor) utworzyć w bieŝącym katalogu plik źródłowy programu głównego RKWAD.FOR oraz plik źródłowy podprogramu PIERW.FOR 2. Wykonać kompilację plików źródłowych wykonując komendy: RMFORT RKWAD/N RMFORT PIERW/N W efekcie, z plików źródłowych RKWAD.FOR, PIERW.FOR otrzymuje się pliki skompilowane RKWAD.OBJ, PIERW.OBJ (Object module). 3. Przeprowadzić łączenie plików skompilowanych za pomocą komendy: PLINK86 FI RKWAD,PIERW LIB C:\RMFORT\RMFORT.LIB W efekcie z plików skompilowanych RKWAD.OBJ i PIERW.OBJ oraz pliku bibliotecznego RMFORT.LIB zostanie utworzony moduł ładowalny (wykonywalny) programu w postaci pliku RKWAD.EXE dalej nazywany krótko programem. Jeśli plik RMFORT.LIB jest umieszczony w katalogu głównym dysku C, powyŝszą instrukcję łączenia moŝna napisać w postaci skróconej: PLINK86 FI RKWAD,PIERW 4. Zainicjować wykonanie programu. W tym celu naleŝy napisać komendę: RKWAD W czasie kompilacji, łączenia i wykonania programu mogą pojawić się na ekranie komunikaty o błędach. Przyczyny błędów muszą być usunięte przez modyfikację plików źródłowych, a tworzenie programu naleŝy powtórzyć. Uwaga: System operacyjny DOS jak teŝ RMFORT nie rozróŝniają małych i duŝych liter. Wyjątkiem są stałe tekstowe FORTRAN-u. Stąd wynika, Ŝe zarówno pliki źródłowe programu jak teŝ komendy mogą być pisane małymi lub duŝymi literami a takŝe w sposób mieszany. Tutaj przyjęto umowę, Ŝe komendy dla DOS-a i słowa kluczowe FORTRANU są pisane duŝymi literami. Inne elementy jak zmienne, nazwy funkcji podprogramów itp. w zasadzie małymi literami. PowyŜszy ciąg czynności moŝe być modyfikowany z uwzględnieniem zmiany nazw plików, liczby podprogramów oraz wymagań specjalnych zawartych w komendach dla kompilatora i programu łączącego. Jednym ze sposobów usprawniających pracę tworzenia programu jest przygotowanie w bieŝącym katalogu pliku wsadowego z zestawem potrzebnych komend, np. pliku KW.BAT jak poniŝej: RMFORT RKWAD/N PAUSE RMFORT PIERW/N PAUSE PLINK86 FI RKWAD,PIERW LIB C:\RMFORT\RMFORT.LIB PAUSE RKWAD 3
6 W efekcie czynności wymienione w p. 2-4 będą kolejno wykonane po napisaniu komendy: KW z przerwami wynikającymi z obecności komend PAUSE w pliku wsadowym. Obecność komend PAUSE pozwala na prześledzenie kolejnych etapów tworzenia programu i zlokalizowanie ewentualnych błędów. W momencie gdy staną się one zbędne moŝna je usunąć bądź przekształcić w komentarze poprzedzając je komendą REM (REM PAUSE). D. Program graficzny W celu zilustrowania niektórych moŝliwości graficznych uzupełnionego pakietu RMFORT niŝej podano przykładowy program GRAF_P w postaci jednego segmentu korzystającego jednak z modułów EGAB.OBJ, APLB.OBJ i biblioteki RMFORT.LIB. C Program "GRAF_P" ilustrujący wybrane funkcje graficzne dla konfiguracji C komputera z kolorowym monitorem i karta graficzna EGA, VGA lub SVGA C PROGRAM grafika PARAMETER ( nszer=120, maxxl=nszer*8-1, maxyl=64800/nszer, * maxxf=639, maxyf=349 ) INTEGER klaw,xk,yk,xpan,ypan,icn,x0,y0,k0,tkur CHARACTER *36 tekstm CHARACTER *45 tfont(2) DATA tfont/' : ; < = > a b c d e', * 'f g h i j k l m n o p r s t u v w x y z { }'/ C CALL init(1) CALL szer(nszer) CALL inipal(3) CALL color(9) CALL border(2) CALL rectab(0,0,maxxl,maxyl,2) CALL color(12) CALL rectab(0,0,maxxf,maxyf,0) CALL moveab(590,410) CALL text('test fontow specjalnych',14,2) iy=440 DO 10 k=1,2 CALL moveab(590,iy) CALL text(tfont(k),15,2) CALL font(6) iy=iy+20 CALL moveab(590,iy) CALL text(tfont(k),12,2) CALL font(1) iy=iy CONTINUE CALL icndef(20,240,66,12,9) CALL iknon() CALL mkursor(1) CALL kurlim(0,0,maxyl+1,maxxl+1) x0=200 y0=100 4
7 k0=0 tkur=0 CALL kurdef(tkur,15,0) CALL kursor(x0,y0) C C Otwarcie petli oczekiwania komend 40 CALL inkey(ia,ib) C Natychmiastowe zakonczenie programu klawiszem <Esc> IF (ia.eq.1) GOTO 50 CALL myszst(klaw,xk,yk,xpan,ypan,icn) C Zmiama typu kursora klawiszem <Ins> IF (ia.eq.82) THEN tkur=tkur+1 IF (tkur.gt.1) tkur=0 CALL kurdef(tkur,15,9) ENDIF C Badanie wcisniecia lewego i prawego klawisza na ikonie IF ((icn.eq.1).and.(klaw.eq.1)) GOTO 80 IF ((icn.eq.1).and.(klaw.eq.2)) GOTO 90 C Opisy stany myszy 44 IF ((x0.eq.xk).and.(y0.eq.yk).and.(klaw.eq.k0)) GOTO 40 write(tekstm,308) klaw,xk,yk,xpan,ypan,icn 308 format(6i6) CALL moveab(340,305) CALL text(' klaw xk yk xpan ypan icn',10,2) CALL moveab(340,325) CALL text(tekstm,7,2) x0=xk y0=yk k0=klaw klaw=0 GOTO 40 C Zakonczenie programu 50 CALL init(0) STOP C C Obsluga funkcji lewego klawisza na ikonie 80 CALL kuroff() CALL kursor(0,0) CALL kuroff() CALL iknoff() CALL obraz('c:\rmfort\kwiaty_m.obr'//char(0),15,360) CALL obraz('c:\rmfort\kwiaty_d.obr'//char(0),15,10) CALL pisztx(15,'witaj w Krainie','EEEEE272AAAAAAA',150,120,2) CALL pisztx(9,'fortran-u','999cccc79',205,200,2) CALL pisztx(17,'^z_o_lwi_atko na _L_ace','F6789ABCDFE9FAAAA', * 20,520,2) tkur=1 CALL kurdef(tkur,15,9) xk=55 yk=250 CALL kursor(xk,yk) CALL iknon() GOTO 44 C 5
8 C Obsluga funkcji prawego klawisza na ikonie 90 CALL kuroff() CALL kursor(0,0) CALL kuroff() CALL color(13) CALL rectab(1,1,638,348,1) CALL pisztx(8,'good Bye','CCCCDAAA',200,240,13) CALL gettim(ih,im,is,ic) i=(ih*3600+im*60+is)*100+ic iy= CALL color(12) CALL rectab(210,iy,220,iy+7,1) 96 CALL gettim(ih,im,is,ic) j=(ih*3600+im*60+is)*100+ic IF ((j-i).lt.5) GOTO 96 i=j CALL color(13) CALL rectab(210,iy,220,iy+7,1) iy=iy+1 IF (iy.lt.346) GOTO 94 GOTO 50 END Po utworzeniu pliku źródłowego tego programu GRAF_P.FOR jego kompilację, łączenie i wykonanie moŝna zrealizować za pomocą pliku wsadowego GR.BAT zawierającego sekwencję komend: RMFORT GRAF_P/N PAUSE PLINK86 FI GRAF_P, C:\RMFORT\EGAB,C:\RMFORT\APLB PAUSE GRAF_P LIB C:\RMFORT\RMFORT.LIB (w poprzedniej linii) Przerwanie pracy tego programu nastąpi: natychmiast po wciśnięciu klawisza <Esc>, lub za pomocą myszy przez naciśnięcie prawego klawisza myszy gdy kursor znajduje się w polu ikony. 6
9 A. Zbiór znaków podstawowych II. Podstawowe elementy języka FORTRAN-u Podstawowymi znakami uŝywanymi do kodowania programów w FORTRAN-ie jest poniŝszy ich podzbiór standardowego zbioru znaków ASCII: - duŝe/małe litery alfabetu łacińskiego A,B,C,...,Z / a,b,c,...,z - cyfry arabskie 0,1,2,...,9 - znaki specjalne + plus - minus = znak równości * gwiazdka / slash ' apostrof ( lewy nawias ) prawy nawias. kropka, przecinek $ znak dolara " cudzysłów! wykrzyknik : dwukropek < bra > ket spacja (brak reprezentacji graficznej) Pozostałe znaki zbioru ASCII mogą wystąpić jedynie w komentarzach i stałych tekstowych (alfanumerycznych). B. Stałe RMFORT rozróŝnia pięć niŝej omówionych typów stałych zajmujących w pamięci operacyjnej komputera róŝne ilości bajtów. Liczba bajtów konieczna do zapamiętania stałej nosi nazwę długości stałej. Stałe róŝnych typów a takŝe stałe tego samego typu mogą róŝnić się długościami. Stałe w segmentach programowych a takŝe w plikach alfanumerycznych są reprezentowane przez ich literały. 1. Stałe całkowite (INTEGER) Stałe całkowite mają długość 2 lub 4 bajty (jeśli jawnie nie zadeklarowano inaczej kompilator przyjmuje długość standardową 4 bajty). Ich literałami są niepuste ciągi cyfr ze znakiem + lub - na początku. Znak + moŝe być pominięty. Np: Stałe rzeczywiste (REAL i DOUBLE PRECISION) Stałe rzeczywiste mają długość 4 bajty dla REAL i 8 bajtów dla DOUBLE PRECISION i róŝnią się literałami. Literał stałej rzeczywistej REAL składa się ze znaku + lub -, części całkowitej, kropki dziesiętnej i części ułamkowej. Po części ułamkowej moŝe nastąpić wykładnik dziesiętny składający się ze znaku + lub - (+ moŝna pominąć) litery E i co najwyŝej dwu cyfr cechy dziesiętnej. Literał stałej rzeczywistej DOUBLE PRECISION składa się ze znaku + lub -, części całkowitej, kropki dziesiętnej i części ułamkowej. Po części ułamkowej musi nastąpić wykładnik dziesiętny składający się ze znaku + lub - (+ moŝna pominąć), litery D i co najwyŝej trzech cyfr cechy dziesiętnej. Przykłady: E-3 1.0E E+10 są stałymi typu REAL, 0.0D D D-24 są stałymi typu DOUBLE PRECISION. 7
10 3. Stałe zespolone (COMPLEX i COMPLEX *16) Stałe zespolone są długości 8 bajtów dla COMPLEX i 16 bajtów dla COMPLEX *16. Literałami dla tych stałych są pary stałych typu REAL ujęte w nawiasy i rozdzielone przecinkiem dla COMPLEX i pary stałych typu DOUBLE PRECISION ujęte w nawiasy i rozdzielone przecinkiem. Pierwsza liczba w parze jest częścią rzeczywistą a druga, częścią urojoną liczby zespolonej. Przykłady: (0.0,20.33) (-75.4,2.0E37) (2.0E-10,-22.23E-11) dla COMPLEX, (0.0D0,20.33D0) (-75.4D0,2.0D37) (2.0D-10,-22.23D-11) dla COMPLEX * Stałe logiczne (LOGICAL) Stałe logiczne mają długość 1 lub 4 bajty (jeśli jawnie nie zadeklarowano inaczej kompilator przyjmuje długość standardową 4 bajty). RozróŜnia się dwie stałe logiczne: prawda lub fałsz. Ich literały mają postać:.true. - prawda,.false. - fałsz. 5. Stałe tekstowe (CHARACTER) Stałe tekstowe są ciągami, w skład których mogą wchodzić wszystkie znaki zbioru ASCII, o długości od 1 do 255 znaków. Dopuszcza się dwie postacie literałów dla tych stałych: - łańcuchy, czyli ciągi znakowe ujęte w parę apostrofów, np: 'To jest stała znakowa' 'ILE?' 'Stop programu' 'Q' - stałe typu H (Hollerith-a), czyli ciągi znakowe poprzedzone liczbą znaków w ciągu i duŝą literą H, np: 6HKoniec 10Hpodaj date 17H"NEW YORK" USA? C. Nazwy symboliczne Nazwa symboliczna (lub krótko nazwa) jest ciągiem od 1 do 6 liter i cyfr, przy czym pierwszy znak musi być literą. Nazwy symboliczne słuŝą do identyfikowania elementów języka takich, jak: zmienne, funkcje, podprogramy i inne. Uwaga: RMFORT dopuszcza nazwy od 1 do 31 znaków z moŝliwością uŝywania dodatkowo znaku podkreślenia i znaku dolara. Znak dolara traktowany jest jako znak literowy. Przykłady: a X1 droga J23 prog Fun3 Miasto D. Zmienne Zmienna_stanu_poczatkowego $K_max rebus_$a Zmienna jest nazwą wprowadzoną celem identyfikacji obszaru pamięci operacyjnej w którym zapamiętuje się stałą. Odpowiednio do typów stałych, rozróŝnia się zmienne typu całkowitego, rzeczywistego, zespolonego, logicznego lub tekstowego. Analogicznie jak dla stałych, zmiennym przyporządkowuje 8
11 się róŝne długości przez uŝycie symbolu *s (gdzie s=1,2,4,8,16,n) nazywanego specyfikatorem długości. Pominięcie specyfikatora długości oznacza przyjęcie standardu długości. NiŜej, w tabeli, zebrano dopuszczalne typy zmiennych. Typ zmiennej Długość Znaczenie Standard INTEGER *2 2 zmienna całkowita INTEGER *4 4 zmienna całkowita INTEGER REAL *4 4 zmienna rzeczywista REAL REAL *8 8 zmienna rzeczywista DOUBLE PRECISION COMPLEX *8 8 zmienna zespolona COMPLEX COMPLEX *16 16 zmienna zespolona LOGICAL *1 1 zmienna logiczna LOGICAL *4 4 zmienna logiczna LOGICAL CHARACTER *n n (1¾n¾255) zmienna tekstowa CHARACTER (dla n=1) Nazwy zmiennych tworzy się dowolnie (ale zgodnie z p. C), natomiast typ i długość ustala się za pomocą instrukcji specyfikacji. Przy pomocy tych instrukcji precyzuje się czy dana zmienna reprezentuje jedną stałą (zmienna prosta) czy zbiór stałych jednakowego typu i jednakowej długości (tablica). E. WyraŜenia arytmetyczne, logiczne i tekstowe WyraŜenia te są tworzone zgodnie z regułami algebry dla wyraŝeń arytmetycznych, zgodnie z regułami algebry Boole'a dla wyraŝeń logicznych oraz specyficznymi regułami FORTRAN-u dla wyraŝeń tekstowych. Dalej, reguły te zostaną omówione obszerniej. F. Instrukcje Są to elementarne konstrukcje języka F77 słuŝące opisowi algorytmu obliczeniowego realizowanego przez program. Zasadniczo wyróŝnia się dwa rodzaje instrukcji: - instrukcje realizowalne (executable) wyraŝające określone ciągi działań w trakcie realizacji programu, - instrukcje nierealizowalne (specification) które są informacjami dla kompilatora w trakcie generowania pliku skompilowanego. Instrukcje tego typu nazywa się dyrektywami. Instrukcje składają się na ogół z pewnych słów kluczowych FORTRAN-u w połączeniu z pozostałymi elementami języka jak stałe, zmienne, nazwy, operatory i inne. 9
12 III. Instrukcje specyfikacji zmiennych (dyrektywy) A. Instrukcja specyfikacji jawnego opisu typu Instrukcja specyfikacji jawnego opisu typu definiuje typ i długość zmiennych prostych oraz dodatkowo dla tablic liczbę ich wymiarów i liczbę elementów. Instrukcja ta ma postać: Typ *S 1 Nazwa 1 (G 11, G 12,...), Nazwa 2 (G 21,G 22,...),... gdzie: Typ - jeden ze specyfikatorów typu, tj. INTEGER, REAL, DOUBLE PRECISION, COMPLEX, LOGICAL, CHARACTER *S - specyfikator długości; specyfikator moŝe być opuszczony, wtedy kompilator przyjmuje długości standardowe, G ij - para indeksów granicznych d:g w której d jest indeksem dolnym, g indeksem górnym; jeśli indeks dolny jest równy 1 wtedy część d: moŝe być pominięta, Nazwa - nazwa zmiennej prostej lub tablicy; dokładniej, jeŝeli za nazwą nie wystąpi wykaz par granicznych ujętych w nawiasy wówczas nazwa reprezentuje ona zmienną prostą, w przeciwnym razie tablicę. Liczba par indeksów definiuje wymiar tablicy. Indeksami, górnym i dolnym mogą być: - stałe typu INTEGER, - zmienne typu INTEGER zdefiniowane przez dyrektywę PARAMETER, - zmienne typu INTEGER będące parametrami formalnymi podprogramu lub funkcji zewnętrznej. Liczba elementów tablicy dla danego wymiaru wynosi: g d + 1, ponumerowanych kolejno: d, d+1,...,g-1, g. Pominięcie indeksu dolnego oznacza numerowanie elementów od 1 do g. Przykład: INTEGER i, j, n, m3(12,10) REAL a,b,c,x1,x2 DOUBLE PRECISION p, q, wek1(10),wek2(10) COMPLEX *16 wt(-1:4,3,5), k LOGICAL *1 l1, l2, l3 CHARACTER *30 nazwisko, imie PowyŜsze instrukcje oznaczają kolejno zdefiniowanie: - zmiennych prostych i, j, n typu INTEGER *4 i tablicy m3 o liczbie elementów 12*10 z których kaŝdy jest typu INTEGER *4, - zmiennych prostych a, b, c, x1, x2 typu REAL *4, - zmiennych prostych p, q typu DOUBLE PRECISION i dwu tablic wek1, wek1 kaŝda o liczbie elementów 10 z których kaŝdy jest typu DOUBLE PRESISION, - tablicy wt typu COMPLEX *16 o liczbie elementów 6*3*5, - zmiennych prostych l1, l2, l3 typu LOGICAL *1, - zmiennych prostych nazwisko, imie typu CHARACTER *30, co oznacza, Ŝe w kaŝdej z tych zmiennych moŝna umieścić łańcuchy znakowe (stałe tekstowe) do 30-tu znaków. Instrukcja jawnego opisu typu odnosi się wyłącznie do zmiennych prostych i tablic których nazwy zostały w niej wymienione. Dla nazw nie wymienionych w tej instrukcji obowiązują niŝej 10
13 omówione standardowe uzgodnienia o typie lub ustalenia wynikające z instrukcji IMPLICIT. Jednak w szczególności uŝycie instrukcji IMPLICIT NONE na początku programu (podprogramu lub funkcji) oznacza, Ŝe wszystkie zmienne uŝyte w danym segmencie muszą być jawnie zadeklarowane. Komentarz: Posługiwanie się specyfikacjami jawnego opisu typu dla deklarowania zmiennych prostych i tablic poprzedzone instrukcją IMPLICIT NONE jest najbardziej jednoznacznym i czytelnym postępowaniem ułatwiającym programowanie. Ponadto, ten sposób postępowania pozwala na uniknięcie błędów niezgodności typów zmiennych przy wywołaniu podprogramu lub funkcji zewnętrznej. B. Standardowe uzgodnienia o typie Zgodnie ze standardowymi uzgodnieniami o typie zwanymi regułami pierwszej litery, przyjmuje się, Ŝe: - zmienne których nazwy rozpoczynają się od liter I,J, K, L, M, N są zmiennymi typu INTEGER, - zmienne których nazwy rozpoczynają się od liter A - H oraz O - Z są zmiennymi typu REAL. Komentarz: Standardowe uzgodnienia o typie nie wymagają uŝycia jakiejkolwiek instrukcji. Są one wystarczające w takich programach w których uŝywa się wyłącznie zmiennych całkowitych i rzeczywistych standardowej tj. 4-ro bajtowej długości. C. Instrukcja IMPLICIT Instrukcja IMPLICIT zmienia standardowe uzgodnienia o typie wynikające z reguły pierwszej litery. Ma ona następującą postać: IMPLICIT Typ 1 *S 1 (Litery 1 ), Typ 2 *S 2 (Litery 2 ),... gdzie: Typ oraz S mają analogiczne znaczenie jak w instrukcji jawnego opisu typu (punkt A), Litery - lista tych liter których umieszczenie na początku nazw zmiennych nadaje tym zmiennym nowy typ i długość. Litery nie wymienione w instrukcji IMPLICIT zachowują swoje standardowe znaczenie. Przykład: IMPLICIT REAL (A-C,J), INTEGER *2 (D,L-P), CHARACTER *60 (W) PowyŜsza instrukcja definiuje, Ŝe wszystkie zmienne o nazwach zaczynających się od liter A, B, C, J są typu REAL; zmienne o nazwach zaczynających się od liter D, L, M, N, O, P są typu INTEGER *2, zmienne o nazwach zaczynających się od litery W są typu CHARACTER *60, tj. słuŝą do pamiętania łańcuchów o długości do 60-ciu znaków. D. Instrukcja DIMENSION Instrukcja DIMENSION specyfikuje tablice których typ jest zdeterminowany pierwszą literą nazwy na podstawie standardowych uzgodnień o typie lub instrukcją IMPLICIT. Ma ona postać: DIMENSION Nazwa 1 (G 11, G 12,...), Nazwa 2 (G 21,G 22,...),... gdzie: Nazwa oraz pary graniczne G i,j mają analogiczne znaczenie jak w instrukcji jawnego opisu typu. 11
14 Przykład: Jeśli wcześniej nie wystąpiła instrukcja IMPLICIT (obowiązują standardowe uzgodnienia o typie to instrukcja: DIMENSION tab(-1:8,5), w(10), m3(3,-3:3,5) oznacza zadeklarowanie tablic typu REAL: - dwuindeksowej (macierzy) tab o liczbie elementów 10*5, - jednoindeksowej (wektora) w o 10-ciu elementach, oraz - trójindeksowej tablicy m3 typu INTEGER o liczbie elementów 3*7*5. Komentarz: Standardowe uzgodnienia o typie, instrukcja IMPLICIT i instrukcja DIMENSION naleŝą do przestarzałych elementów FOTRANU i nie zaleca się ich stosowania. Jak podkreślono wcześniej pełną aktualność zachowała jedyna forma instrukcji IMPLICIT tj. IMPLICIT NONE wymuszająca jawne deklarowanie wszystkich zmiennych. E. Przydział pamięci dla zmiennych prostych i tablic KaŜdej zmiennej prostej przyporządkowany jest obszar pamięci operacyjnej o liczbie bajtów równej specyfikacji długości tej zmiennej, tj. zmiennej INTEGER *4 przyporządkowuje się 4 bajty, zmiennej LOGICAL *1, 1 bajt, a zmiennej typu COMPLEX 8 bajtów itd. KaŜdej tablicy przyporządkowany jest ciągły obszar pamięci operacyjnej o liczbie bajtów równej iloczynowi liczby elementów tej tablicy i długości elementu tablicy wynikającej ze specyfikacji. Kolejność elementów ustala się według reguły: najszybciej zmienia się indeks pierwszy, następnie drugi itd. (odwrotnie niŝ w zwykłej algebrze). Np. dla tablicy REAL tr(-1:2,2,3) kolejne 4 bajty pamięci przypisywane są elementom tej tablicy w porządku: tr(-1,1,1), tr(0,1,1), tr(1,1,1), tr(2,1,1), tr(-1,2,1), tr(0,2,1), tr(1,2,1), tr(2,2,1), tr(-1,1,2), tr(0,1,2), tr(-1,2,3), tr(0,2,3), tr(1,2,3), tr(2,2,3) 12
15 IV. WyraŜenia arytmetyczne, logiczne i tekstowe A. WyraŜenia arytmetyczne A WyraŜenia arytmetyczne A są tworzone z arytmetycznych wyraŝeń pierwotnych oraz operatorów arytmetycznych. Arytmetycznymi wyraŝeniami pierwotnymi są: - stałe arytmetyczne, czyli stałe całkowite, rzeczywiste, zespolone, - zmienne arytmetyczne, czyli zmienne proste lub elementy tablic typu INTEGER, REAL, DOUBLE PRECISION lub COMPLEX, - funkcje standardowe i niestandardowe, - wyraŝenia arytmetyczne ujęte w parę nawiasów. Operatorami arytmetycznymi są: ** potęgowanie, * mnoŝenie, / dzielenie, + dodawanie, - odejmowanie. Przy tworzeniu wyraŝeń arytmetycznych obowiązują następujące zasady: - wszystkie operatory arytmetyczne są dwuargumentowymi, tzn. kaŝdy z nich wymaga dwu operandów, np. a + b ; wyjatkiem jest uŝycie + lub - jako znaku prefiksowego (poprzedzającego), - wszystkie operatory arytmetyczne muszą wystąpić w sposób jawny, tzn. zamiast a * b nie moŝna napisać ab, mimo to, Ŝe a i b są róŝnymi zmiennymi prostymi, - dwa operatory nie mogą występować obok siebie, np. zamiast błędnego b/-a naleŝy napisać b/(-a) lub inaczej -b/a, - w wyraŝeniu pierwotnym zawierającym kilka operacji arytmetycznych kolejność wykonywanych działań wynika z następujących priorytetów operatorów: 1. obliczanie wartości funkcji, 2. potęgowanie, 3. mnoŝenie i dzielenie, 4. dodawanie i odejmowanie. Nawiasy, podobnie jak w algebrze, mogą być stosowane do jawnego zdefiniowania kolejności wykonywania działań. W przypadku uŝycia pary nawiasów część wyraŝenia w nich zawarta jest obliczana przed wykonaniem operacji na zewnątrz nawiasów. Uzasadnia to zaliczanie wyraŝeń w parze nawiasów do wyraŝeń pierwotnych. Dopuszcza się stosowanie zbędnych par nawiasów nie zmieniających kolejności działań, poprawiając w ten sposób czytelność wyraŝenia arytmetycznego. Typ wyraŝenia arytmetycznego wynika z typów wyraŝeń pierwotnych i operatorów arytmetycznych. Dla mnoŝenia, dzielenia, dodawania i odejmowania obowiązuje następujący priorytet typów : INTEGER, REAL, DOUBLE PRECISION, COMPLEX. 13
16 Oznacza to, Ŝe jeŝeli np. w wyraŝeniu występuje przynajmniej jedna stała lub zmienna DOUBLE PRECISION, a pozostałe są typu INTEGER i/lub REAL to wyraŝenie arytmetyczne jest typu DOUBLE PRECISION. Typ wyraŝenia dla operatora potęgowania wynika z typu podstawy i typu wykładnika zgodnie z poniŝszą tabelą ** INTEGER REAL DOUBLE PR. COMPLEX INTEGER INTEGER REAL DOUBLE PR. COMPLEX REAL REAL REAL DOUBLE PR. COMPLEX DOUBLE PR. DOUBLE PR. DOUBLE PR. DOUBLE PR. COMPLEX COMPLEX COMPLEX COMPLEX COMPLEX COMPLEX Jeśli podstawa i wykładnik są zerami, wynik potęgowania jest nieokreślony. Ponadto dla wykładników typu REAL, DOUBLE PRECISION, COMPLEX podstawa typu INTEGER, REAL lub DOUBLE PRECISION musi być dodatnia. OstrzeŜenie: Wynikiem ilorazu stałych i zmiennych typu INTEGER jest część całkowita ilorazu. Np., jeśli i=2 to wartością wyraŝenia: /i jest liczba rzeczywista 6.5, bo 3/2=1, natomiast wartością wyraŝenia: /i lub /(1.0*i) jest liczba rzeczywista 7.0. Nieuwzględnienie specyfiki dzielenia stałych i zmiennych typu całkowitego jest częstą przyczyną błędów programowych. B. WyraŜenia logiczne (boolowskie) B WyraŜenia logiczne B są tworzone z logicznych wyraŝeń pierwotnych i operatorów logicznych. Logicznymi wyraŝeniami pierwotnymi są: - stałe logiczne.true. i.false., - logiczne zmienne proste i elementy tablic logicznych, - relacje, - funkcje logiczne, - wyraŝenie logiczne ujęte w parę nawiasów. Operatorami logicznymi są:.and..or..xor..eqv..not. - koniunkcja (iloczyn logiczny), - alternatywa (suma logiczna), - exclusive OR (róŝnica symetryczna), - ekwiwalentność logiczna, - negacja. Relacja jest parą wyraŝeń arytmetycznych lub łańcuchowych oddzielonych operatorem relacji. Operatorami relacji są :.LT..LE. - mniejszy (less), - mniejszy lub równy (less or equal), 14
17 .EQ. - równy (equal),.ne. - nierówny (not equal),.gt. - wiekszy (greater),.ge. - wiekszy lub równy (greater or equal). W relacjach, których operandami są wyraŝenia arytmetyczne, następuje obliczenie tych wyraŝeń, a następnie ich porównanie. Jeśli porównanie daje wynik zgodny z operatorem relacji to wartość logiczna relacji jest.true., a w przeciwnym razie.false.. Np., niech w = 7.4, i = 5, wówczas relacja: (w+3.le. i+4) ma wartość logiczną.false. W relacjach, których operandami są stałe lub zmienne tekstowe następuje porównanie kodów ASCII dla kolejnych znaków, do pierwszego róŝnego znaku. Np. relacja: ('ALA'.GT. 'ADAM') ma wartość logiczną.true., gdyŝ kodem ASCII litery L jest 76 a kodem ASCII litery D jest 68. Uwaga: W skład literałów stałych logicznych, operatorów logicznych i operatorów relacji wchodzą ograniczające je kropki, tzn..true.,.le. jest zapisem poprawnym w odróŝnieniu od niepoprawnego zapisu TRUE, LE. Kolejność (priorytet) działań w wyraŝeniach logicznych ustala się według następującego porządku: 1. obliczanie wyraŝeń logicznych ujętych w pary nawiasów, 2. obliczanie funkcji logicznych, 3. obliczanie relacji, 4. wykonanie negacji (.NOT.), 5. wykonanie koniunkcji (.AND.), 6. wykonanie alternatywy (.OR.), 7. wykonanie exclusiv OR i ekwiwalentności (.XOR.,.EQV.). Dopuszcza się stosowanie zbędnych nawiasów dla polepszenia czytelności wyraŝenia logicznego. C. WyraŜenia tekstowe (łańcuchowe) T WyraŜenia tekstowe T są tworzone z tekstowych wyraŝeń pierwotnych przy pomocy operatora konkatenacji. Tekstowymi wyraŝeniami pierwotnymi są: - stałe tekstowe, - zmienne tekstowe lub/i elementy tablic tekstowych, - funkcje tekstowe. Operator konkatenacji (łączenia) ma postać: // (podwojony slash). Przykład: 'Stefan '//'Kowalski' jest wyraŝeniem tekstowym łączenia dwóch stałych tekstowych w jedną 'Stefan Kowalski' 15
18 V. Instrukcje podstawiania (przypisania) Instrukcja podstawiania nazywana teŝ instrukcją przypisania słuŝy do nadania nowej wartości zmiennej prostej lub elementowi tablicy (ogólnie zmiennej Z), przy czym dotychczasowa wartość tej zmiennej lub elementu tablicy zostaje zastąpiona nową wartością. Instrukcja ta ma postać: zmienna = wyraŝenie Zapis ten wyraŝa czynność obliczenia wyraŝenia stojącego po prawej stronie znaku = i podstawienie wyniku do zmiennej po lewej stronie tego znaku. A. Instrukcja podstawiania arytmetyczna Z = A W powyŝszej instrukcji Z oznacza arytmetyczną zmienną prostą lub element tablicy arytmetycznej, natomiast A jest wyraŝeniem arytmetycznym. Na ogół typ zmiennej Z moŝe być róŝny od typu wyraŝenia arytmetycznego, dlatego przed wykonaniem podstawienia następuje konwersja (przekształcenie) typu wyraŝenia arytmetycznego do typu zgodnego z typem zmiennej. W szczególności, jeŝeli Z jest typu INTEGER, REAL lub DOUBLE PRECISION natomiast A jest typu COMPLEX, konwersja dotyczy części rzeczywistej liczby zespolonej a część urojona jest pomijana. W sytuacji odwrotnej, część rzeczywista zmiennej Z jest równa wyraŝeniu arytmetycznemu A po ewentualnej konwersji, natomiast części urojonej jest nadawana wartość zerowa. B. Instrukcja podstawiania logiczna Z = B W tej instrukcji Z oznacza logiczną zmienną prostą lub element tablicy logicznej, natomiast B jest wyraŝeniem logicznym. Po wykonaniu tej instrukcji zmiennej Z nadana zostaje wartość.true. lub.false. zgodnie z wynikiem obliczenia wartości logicznej wyraŝenia B. C. Instrukcja podstawiania tekstowa Z (e1:e2) = T lub Z = T Tutaj Z oznacza tekstową zmienną prostą lub element tablicy tekstowej, a T jest wyraŝeniem tekstowym. Zawarte w parze nawiasów ograniczniki e1 i e2 wskazują początkową i końcową pozycję w zmiennej tekstowej dokąd ma zostać wpisane wyraŝenie tekstowe. Pominięcie ograniczników oznacza zapis od pierwszej do ostatniej pozycji zmiennej tekstowej. JeŜeli wyraŝenie tekstowe liczy mniej znaków niŝ liczba wynikająca z ograniczników e1 i e2 lub długości zmiennej, brakujące znaki uzupełnia się spacjami. W odwrotnym przypadku, nadliczbowe znaki są pomijane. Np.: Niech t1 jest zmienną typu CHARACTER *5, t2 zmienną typu CHARACTER *12, wówczas wykonanie następujących instrukcji: t1 = 'Lampa' t2 = 'Knot i ' t2 (8:12) = t1 umieszcza w t2 tekst 'Knot i Lampa'. 16
19 Ten sam wynik moŝna otrzymać posługując się konkatenacją. Niech zmienne t1,t2 i t3 są, odpowiednio, typu CHARACTER *5, CHARACTER *7 i CHARACTER *12. Wówczas instrukcje równowaŝne powyŝej wymienionym mają postać: t1 = 'Lampa' t2 = 'Knot i ' t3 = t2 // t1 D. Instrukcja podstawiania typu ASSIGN Instrukcja ta ma postać: ASSIGN f TO In Wykonanie tej instrukcji oznacza podstawienie etykiety f do zmiennej In typu INTEGER. Etykieta f musi być związana z wykonywalną instrukcją lub instrukcją FORMAT w tym samym segmencie. Np. instrukcja: ASSIGN 105 TO j23 wiąŝe zmienną j23 z etykietą 105. Instrukcja podstawiania typu ASSIGN najczęściej jest uŝywana we współpracy z tzw. podstawianą instrukcją GOTO. 17
20 VI. Instrukcje sterujące Normalną kolejnością realizacji instrukcji w segmencie fortranowskim jest kolejność sekwencyjna tj. zgodna z porządkiem ich zapisu w segmencie. Kolejność ta jednak moŝe być zmieniona jako efekt decyzji związanych z realizacją instrukcji sterujących przekazujących sterowanie do innej sekwencji instrukcji w odpowiednio wskazane miejsce. Funkcje te spełniają niŝej omówione instrukcje sterujące. A. Instrukcje typu GOTO 1. Bezwarunkowa instrukcja GOTO GOTO f W wyniku wykonania tej instrukcji sterowanie jest przekazywane do instrukcji poprzedzonej etykietą o numerze f, pod warunkiem, Ŝe jest to instrukcja realizowalna a nie dyrektywa jak np. FORMAT. 2. Obliczana instrukcja GOTO GOTO (f1,f2,...), Ia W powyŝszej instrukcji f1,f2,... jest listą etykiet, Ia jest wyraŝeniem arytmetycznym typu INTEGER. Instrukcja ta powoduje przekazanie sterowania według etykiety stojącej na tej pozycji, której numer określa aktualna wartość wyraŝenia Ia. JeŜeli obliczona wartość Ia jest mniejsza niŝ 1 lub większa od liczby etykiet w liście wówczas obliczana instrukcja GOTO jest ignorowana. Np.: niech j = 3 wówczas po wykonaniu GOTO (7,13,107,25), j-1 sterowanie jest przekazywane do instrukcji opatrzonej etykietą Podstawiana instrukcja GOTO Podstawiana instrukcja GOTO jest dwuczęściową instrukcją składającą się z omówionej w p. V.D instrukcji przypisania ASSIGN i podstawianej instrukcji GOTO, tj.: ASSIGN f TO In GOTO In, (f1,f2,...) W powyŝszej parze instrukcji f1,f2,... jest listą etykiet, In jest zmienną typu INTEGER do której została podstawiona etykieta f. Wykonanie drugiej części tej instrukcji powoduje przekazanie sterowania do instrukcji oznaczonej etykietą f, pod warunkiem, Ŝe jest ona wymieniona w liście etykiet. JeŜeli Ŝadna etykieta z listy etykiet f1,f2,... nie równa się etykiecie f, wówczas instrukcja GOTO In, (f1,f2,...) jest ignorowana. Obie części tej instrukcji nie muszą następować kolejno jedna po drugiej, jednak w trakcie wykonywania programu część ASSIGN f TO In musi być wykonana wcześniej. Przykład: JeŜeli w niŝej podanym fragmencie programu 18
21 ASSIGN 15 TO k 21 GOTO k, (7,15,25,4) r=2.0**j 15 ASSIGN 7 TO k a=b+1.0 GOTO 21 7 a=a+b-3.14 ponumerujemy instrukcje od 1 do 7, to kolejność ich wykonania będzie następująca 1,2,4,5,6,2,7. Proszę sprawdzić! B. Instrukcje typu IF 1. Arytmetyczna instrukcja IF IF (A) f1,f2,f3 W tej instrukcji po obliczeniu wartości wyraŝenia arytmetycznego A sprawdzany jest jego znak. JeŜeli: A < 0 sterowanie zostaje przekazane do instrukcji z etykietą f1, A = 0 " " " " " " " f2, A > 0 " " " " " " " f3. W instrukcji muszą wystąpić wszystkie trzy etykiety f1,f2 i f3 lecz nie muszą być róŝne. 2. Logiczna instrukcja IF IF (B) I Po obliczeniu wyraŝenia logicznego B, sprawdzana jest jego wartość logiczna. JeŜeli: B =.TRUE. następuje wykonanie instrukcji I, B =.FALSE. instrukcja I jest ignorowana, a sterowanie jest przekazywane do następnej instrukcji po IF. Instrukcja I reprezentuje jedną z instrukcji zgodną ze składnią FORTRAN-u z wyjątkiem instrukcji DO, instrukcji END oraz instrukcji typu IF. Przykłady: IF ((a.lt.b).and.(j.gt.0)) a=a+5.0 IF (v.and.u) GOTO 70 W drugim przykładzie, jeŝeli zmienne logiczne v i u mają wartość.true. nastąpi skok do instrukcji z etykietą Blokowa instrukcja IF Podstawowa postać blokowej instrukcji IF ma następującą składnię : IF (B) THEN blok1 ELSE blok2 ENDIF 19
22 W tej instrukcji B jest wyraŝeniem logicznym, natomiast blok1 i blok2 są ciągami instrukcji zgodnymi ze składnią FORTRAN-u nie zawierającymi instrukcji END. Zarówno blok1 jak i blok2 mogą być ciągami pustymi. Wewnątrz ciągów instrukcji blok1 lub blok2 mogą wystąpić instrukcje przekazujące sterowanie na zewnątrz instrukcji blokowej IF. Nie moŝna natomiast przekazać sterowania do wnętrza ciągów blok1 lub blok2 spoza instrukcji IF. Działanie tej instrukcji opiera się na wyniku badania wartości wyraŝenia logicznego B. I tak, jeŝeli: B =.TRUE. wykonywany jest ciąg instrukcji blok1, B =.FALSE. " " " " blok2. Przykład zastosowania instrukcji blokowej IF: IF (a.lt.b) THEN x1=(a-b)**2 x2=0 ELSE x1=(a+b)**2 x2=a ENDIF Instrukcja blokowa IF moŝe przyjmować postać skróconą przez ominięcie słowa kluczowego ELSE i ciągu blok2, lub rozwiniętą przez zmultiplikowanie warunku IF (B) THEN po słowie kluczowym ELSE. NiŜej podano ich składnie: forma skrócona IF (B) THEN Blok ENDIF forma rozwinięta IF (B1) THEN blok1 ELSE IF (B2) THEN blok2 ELSE blok ENDIF C. Instrukcja CONTINUE CONTINUE Instrukcja ta nie wywołuje Ŝadnej akcji. Zazwyczaj jest ona wykorzystywana jako graniczna instrukcja w instrukcji DO lub zamiast bloku pustego w instrukcji blokowej IF. D. Instrukcja DO Instrukcja DO, zwana instrukcją pętli, zezwala na cykliczne powtarzanie bloku instrukcji zawartego w jej obszarze działania. Postać instrukcji: DO f Z=A1, A2, A3 blok f Ig 20
23 W powyŝszej definicji f jest etykietą instrukcji granicznej Ig, która wraz z poprzedzającym ją blokiem instrukcji blok stanowi obszar działania instrukcji DO. Instrukcją graniczną nie moŝe być instrukcja typu GOTO, arytmetyczna lub blokowa instrukcja IF, instrukcja END, instrukcja RETURN ani inna instrukcja DO. Ze względu na duŝą liczbę wyjątków, zazwyczaj jako instrukcję graniczną przyjmuje się CONTINUE, która nie wywołuje Ŝadnej akcji podnosząc jednocześnie czytelność i przejrzystość programu. W instrukcji DO, zmienna Z jest arytmetyczną zmienną prostą nazywaną zmienną sterująca; A1, A2, A3 są wyraŝeniami arytmetycznymi zwanymi parametrami instrukcji DO. Dokładniej: - A1 jest parametrem wartości początkowej, - A2 parametrem wartości końcowej, - A3 parametrem przyrostu zmiennej sterującej Z. Jeśli A3=1, parametr A3 moŝe być pominięty. W pierwszym wykonaniu instrukcji DO obliczana jest wartość wyraŝenia A1, która zostaje podstawiona do zmiennej sterującej Z. Następnie dokonuje się porównania zmiennej Z z wartością wyraŝenia A2. JeŜeli : a). Z jest mniejsze lub równe A2 przy wartości A3 > 0, b). Z jest większe lub równe A2 przy wartości A3 < 0 to wykonywany jest blok instrukcji z obszaru działania instrukcji DO, a po wykonaniu instrukcji granicznej sterowanie jest przekazywane do początku instrukcji DO. W kaŝdym następnym wykonaniu, do zmiennej sterującej Z dodaje się wartość parametru przyrostu A3, po czym następuje porównanie zmiennej Z z parametrem A2 i sprawdzany jest warunek a) lub b). Niespełnienie warunku a) lub b) zarówno w pierwszym jak w kaŝdym następnym wykonaniu instrukcji DO powoduje przekazanie sterowania do instrukcji następnej po instrukcji granicznej. Instrukcje DO mogą zawierać się jedna w drugiej, czyli mogą być zagnieŝdŝone w sobie, przy czym krotność zagnieŝdŝenia moŝe być dowolnie duŝa, pod warunkiem jednak, Ŝe obszary działania takich instrukcji nie będą się przecinać. NiŜej podane są przykłady poprawnego uŝycia zagnieŝdŝonych instrukcji DO. DO 40 i=1,10 DO 75 i=1,-7,-1 DO 100 a=1.0,24+r DO 30 j=-1,20,3 DO 24 j=4,24 DO 48 b=w+l,r,-2.0 Blok DO 24 k=-5,5 blok 30 CONTINUE blok 48 CONTINUE blok 24 CONTINUE blok 40 CONTINUE DO 36 w=7-i,j+k DO 100 i=1,11 blok blok 36 CONTINUE 100 CONTINUE blok 75 CONTINUE Dla instrukcji DO przyjęto następujące dodatkowe ustalenia będące jednocześnie jej ograniczeniami: - obszar działania instrukcji DO nie moŝe zawierać Ŝadnej instrukcji zmieniającej wartość zmiennej sterującej Z ani wartości parametrów A1, A2, A3, 21
24 - instrukcje DO wzajemnie zagnieŝdŝone muszą mieć róŝne zmienne sterujące, - niedozwolone jest przekazanie sterowania z zewnątrz instrukcji DO do jej obszaru działania, np. instrukcją typu GOTO, - przekazanie sterowania z instrukcji DO na zewnątrz jej obszaru działania jest zawsze dozwolone, - dopuszcza się bez ograniczeń przeniesienie sterowania poza obszar działania instrukcji DO do innych segmentów przez wywołanie funkcji i podprogramów oraz powrotów z nich. E. Instrukcja PAUSE PAUSE komunikat Instrukcja ta powoduje druk komunikatu na ekranie monitora i wstrzymanie pracy programu. Wznowienie pracy następuje przez naciśnięcie klucza <Enter>. Komunikatem moŝe być co najwyŝej pięciocyfrowa liczba lub łańcuch tekstowy. Np.: PAUSE 999 lub PAUSE ' Przygotuj Drukarke'. Komunikat nie musi wystąpić; w tym przypadku jednak nie będzie znana przyczyna wstrzymania pracy programu. F. Instrukcja STOP STOP komunikat Instrukcja STOP działa jak PAUSE z ta róŝnicą, Ŝe po jej wykonaniu nie moŝna wznowić pracy programu. Typowym przykładem jest: STOP ' KONIEC PROGRAMU' G. Instrukcja END (dyrektywa) END Instrukcja ta jest ostatnią instrukcją segmentu, po której moŝe nastąpić co najwyŝej następny segment. Po END w ostatnim segmencie nie naleŝy umieszczać Ŝadnej instrukcji, nawet pustej czy komentarza, gdyŝ będzie to potraktowane przez kompilator jako początek następnego segmentu nie zakończonego instrukcją END. 22
25 VII. Instrukcje wejścia/wyjścia A. Wprowadzenie Instrukcje wejścia/wyjścia słuŝą do przesyłania danych między pamięcią operacyjną komputera a urządzeniami zewnętrznymi jak monitory, drukarki, klawiatura oraz pamięciami zewnętrznymi jak dyski, dyskietki czy taśmy magnetyczne. Ze względu na róŝnorodność urządzeń współpracujących z komputerem, dla ujednolicenia sposobu wymiany danych, wprowadzono podstawową jednostkę organizacyjną postaci danych jako pliku danych (Data File). Dla instrukcji wejścia/wyjścia plik danych jest identyfikowany poprzez tzw. numer logiczny pliku danych. Numer logiczny pliku, w ramach danego programu, jednoznacznie przyporządkowuje się do pliku za pomocą dyrektywy specyfikacji plików. Jednostką wymiany informacji między plikami danych a pamięcią operacyjną komputera jest rekord lub inaczej zapis. Wielkość rekordu, mierzona liczbą bajtów jest zaleŝna od nośnika pliku. Wielkość ta dla pewnych urządzeń jest ustalona, dla innych moŝe być definiowana przez programistę. Typowym przykładem rekordu jest linijka tekstu na wydruku z drukarki lub ciąg znaków napisany na klawiaturze monitora zakończony naciśnięciem klawisza <Enter>. Rekordy mogą zawierać dane w postaci zredagowanej (alfanumerycznej, formatowej) lub w postaci niezredagowanej (dwójkowej, bezformatowej). Zredagowane rekordy otrzymuje się w wyniku współpracy instrukcji FORMAT i stosuje się je dla nadania czytelnej postaci danych na drukarkach, monitorach itp. Rekordy niezredagowane stosuje się przy zapisie danych na magnetycznych nośnikach informacji i są one na ogół kopią odpowiedniego obszaru pamięci operacyjnej komputera. NiŜej omówione zostaną podstawowe i niezbędne instrukcje wejścia/wyjścia dla rekordów w postaci zredagowanej i niezredagownaej. Ponadto instrukcje otwarcia i zamknięcia dla plików o sekwencyjnej (sequentional) strukturze organizacyjnej, oraz dla plików o strukturze bezpośredniego dostępu (direct access). B. Instrukcje otwarcia i zamknięcia pliku sekwencyjnego Pliki sekwencyjne składają się z ciągów tekstowych róŝnej długości zakończonych znakami przejścia do nowej linii (Cr, Lf). Instrukcja otwarcia pliku sekwencyjnego ma postać: OPEN(u, FILE=nazwa, uf) gdzie: u - numer logiczny pliku w postaci stałej typu INTEGER, nazwa - stała lub zmienna tekstowa określająca ścieŝkę dostępu i nazwę pliku, uf - jest listą precyzującą typ pliku i jego parametry; w przypadku plików sekwencyjnych uf moŝe być pominięte, co oznacza otwarcie pliku od nowa, lub zastąpione dyrektywą: ACCESS= append, co oznacza otwarcie istniejącego pliku z moŝliwością dopisywania nowych informacji do tego pliku. NiŜej podano przykłady otwarcia nowych plików sekwencyjnych: OPEN (4,FILE='DANE.DAT') OPEN (1,FILE='C:\STUDENT\WYNIKI.OBL') tx='c:\student\moje_dan.dat' OPEN (12,FILE=tx) W ostatnim przykładzie tx musi być zmienną zadeklarowaną co najmniej jako CHARACTER *23. Otwarcie pliku od nowa powoduje usunięcie zawartości istniejącego pliku o tej samej nazwie jak plik otwierany. Pominięcie ścieŝki dostępu przed nazwą pliku oznacza, Ŝe plik będzie otwierany w bieŝącym katalogu. 23
26 Rozpatrzmy jeszcze przykład warunkowanego otwierania pliku. Niech jak jest zmienną typu INTEGER. ZałóŜmy, Ŝe jeŝeli wartością tej zmiennej będzie zero to naleŝy otworzyć plik od nowa, w przeciwnym razie z moŝliwością dopisywania do istniejącego pliku. IF (jak.eq.0) THEN OPEN(1,FILE= wynik.dat ) ELSE OPEN(1,FILE= wynik.dat,access= append ) ENDIF Instrukcja zamknięcia pliku ma postać: CLOSE(u) gdzie u jest numerem logicznym wcześniej otwartego pliku. C. Instrukcja czytania - sekwencyjna Instrukcja czytania sekwencyjna ma następującą postać: READ(u, f, END=fd, ERR=fr) lista gdzie: u - logiczny numer pliku danych; zastąpienie u znakiem * oznacza czytanie z klawiatury, f - etykieta instrukcji FORMAT; zastąpienie f znakiem * oznacza czytanie wg tzw. swobodnego formatu (bezformatowe), fd - etykieta instrukcji do której jest przekazywane sterowanie po napotkaniu końca pliku, fr - etykieta instrukcji do której jest przekazywane sterowanie w przypadku wystąpienia błędu czytania, lista - wykaz zmiennych prostych, elementów tablic oraz instrukcji typu DO - implikowane. W instrukcji READ elementy END=fd i ERR=fr moŝna pominąć. Otrzymujemy wówczas najczęściej uŝywaną postać tej instrukcji: READ(u, f) lista W przypadku czytania danych z klawiatury najwygodniejszą metodą wprowadzania danych jest czytanie bezformatowe, tj. za pomocą instrukcji: READ(*,*) lista kończąc kaŝdą daną wejściową co najmniej jedną spacją lub wciśnięciem klawisza <Enter>; po ostatniej danej - obowiązkowo <Enter>. Element listy, instrukcja DO - implikowane, ma postać: (lista, Z=A1, A2, A3) gdzie: lista - jest zdefiniowana jak wyŝej (czyli jej elementem mogą być zmienne proste, elementy tablic i ponownie DO - implikowane), Z - jest zmienną sterującą instrukcji DO - implikowane, A1, A2, A3 - są wyraŝeniami arytmetycznymi pełniącymi identyczną rolę jak parametry zwykłej instrukcji DO. Przykłady: READ(6,304) a,b,j,i,t(i,j) 24
27 oznacza czytanie danych z pliku o numerze logicznym 6 za pomocą instrukcji FORMAT opatrzonej etykietą 304 do zmiennych a, b, j, i oraz do elementu tablicy t o indeksach (i,j), wcześniej w tej instrukcji przeczytanych. READ(4,38) n,(a(i),b(i),i=1,n) oznacza czytanie danych (u=4, f=38) do elementów tablic a oraz b od 1 do n, gdzie n zostało wcześniej przeczytane. READ(1,205,ERR=30) ((t(i,j),i=1,20),j=1,10) oznacza czytanie danych (u=1, f=205) 20-tu wierszy i 10-ciu kolumn z dwuindeksowej tablicy t. W przypadku błędu czytania sterowanie zostanie przekazane do instrukcji z etykietą 30. D. Instrukcja pisania - sekwencyjna Instrukcja pisania sekwencyjna ma postać: WRITE(u, f, ERR=fr) lista gdzie u - logiczny numer pliku danych; zastąpienie u znakiem * oznacza pisanie na ekran, f - etykieta instrukcji FORMAT; zastąpienie f znakiem * oznacza pisanie w formacie standardowym (nie zaleca się uŝywać), fr - etykieta instrukcji do której jest przekazywane sterowanie w przypadku wystąpienia błędu, lista - wykaz zmiennych prostych, elementów tablic, tablic i instrukcji DO - implikowane. Przykłady: WRITE(5,100) a,b,x oznacza zapis zawartości zmiennych a, b, x do pliku danych o numerze logicznym 5 za pomocą instrukcji FORMAT opatrzonej etykietą 100. WRITE(1,24) ((t(i,k),i=1,10),j=1,n) oznacza zapis zawartości 10-ciu wierszy i n kolumn tablicy t do pliku danych o numerze logicznym 1 za pomocą instrukcji FORMAT opatrzonej etykietą 24. WRITE(4,10,ERR=40) (a,b,c,i=1,3) oznacza trzykrotny zapis zawartości zmiennych a, b, c do pliku 4 za pomocą instrukcji FORMAT opatrzonej etykietą 10. W przypadku wystąpienia błędu sterowanie jest przekazywane do instrukcji z etykietą 40. Instrukcja ta jest równowaŝna poniŝszej: WRITE(4,10,ERR=40) a,b,c,a,b,c,a,b,c E. Instrukcja FORMAT (dyrektywa) Instrukcja FORMAT moŝe być umieszczona w dowolnym miejscu programu lub segmentu i ma postać: f FORMAT(lista opisów) gdzie: f - jest etykietą wiąŝącą instrukcję FORMAT z instrukcjami READ i WRITE, 25
Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki
Informatyka I Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2019 1 Plan wykładu
Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu
Programowanie strukturalne Opis ogólny programu w Turbo Pascalu STRUKTURA PROGRAMU W TURBO PASCALU Program nazwa; } nagłówek programu uses nazwy modułów; } blok deklaracji modułów const } blok deklaracji
Podstawy programowania skrót z wykładów:
Podstawy programowania skrót z wykładów: // komentarz jednowierszowy. /* */ komentarz wielowierszowy. # include dyrektywa preprocesora, załączająca biblioteki (pliki nagłówkowe). using namespace
1 Podstawy c++ w pigułce.
1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,
Programowanie w języku Python. Grażyna Koba
Programowanie w języku Python Grażyna Koba Kilka definicji Program komputerowy to ciąg instrukcji języka programowania, realizujący dany algorytm. Język programowania to zbiór określonych instrukcji i
Algorytmika i Programowanie VBA 1 - podstawy
Algorytmika i Programowanie VBA 1 - podstawy Tomasz Sokół ZZI, IL, PW Czas START uruchamianie środowiska VBA w Excelu Alt-F11 lub Narzędzia / Makra / Edytor Visual Basic konfiguracja środowiska VBA przy
PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy.
PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy. 1. Instrukcję case t of... w przedstawionym fragmencie programu moŝna zastąpić: var t : integer; write( Podaj
Elementy języków programowania
Elementy języków programowania Olsztyn 2007-2012 Wojciech Sobieski Języki programowania wymyślono po to, by można było dzięki nim tworzyć różnorodne programy komputerowe. Oczekuje się również, że tworzone
METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02
METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE Wykład 02 NAJPROSTSZY PROGRAM /* (Prawie) najprostszy przykład programu w C */ /*==================*/ /* Między tymi znaczkami można pisać, co się
WIADOMOŚCI WSTĘPNE WPROWADZENIE DO JĘZYKA TURBO PASCAL. Klawisze skrótów. {to jest właśnie komentarz, moŝna tu umieścić dowolny opis}
1 WIADOMOŚCI WSTĘPNE Programowanie komputerów najogólniej mówiąc polega na zapisaniu pewniej listy poleceń do wykonania przez komputer w pewnym umownym języku Taką listę poleceń nazywamy programem Program
Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek].
ABAP/4 Instrukcja IF Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek]. [ELSEIF warunek. ] [ELSE. ] ENDIF. gdzie: warunek dowolne wyrażenie logiczne o wartości
Zmienne powłoki. Wywołanie wartości następuje poprzez umieszczenie przed nazwą zmiennej znaku dolara ($ZMIENNA), np. ZMIENNA=wartosc.
Zmienne powłoki Zmienne powłoki (shell variables) to tymczasowe zmienne, które mogą przechowywać wartości liczbowe lub ciągi znaków. Związane są z powłoką, Przypisania wartości do zmiennej następuje poprzez
Temat 1: Podstawowe pojęcia: program, kompilacja, kod
Temat 1: Podstawowe pojęcia: program, kompilacja, kod wynikowy. Przykłady najprostszych programów. Definiowanie zmiennych. Typy proste. Operatory: arytmetyczne, przypisania, inkrementacji, dekrementacji,
Język ludzki kod maszynowy
Język ludzki kod maszynowy poziom wysoki Język ludzki (mowa) Język programowania wysokiego poziomu Jeśli liczba punktów jest większa niż 50, test zostaje zaliczony; w przeciwnym razie testu nie zalicza
Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)
Uwagi dotyczące notacji kodu! Wyrazy drukiem prostym -- słowami języka VBA. Wyrazy drukiem pochyłym -- inne fragmenty kodu. Wyrazy w [nawiasach kwadratowych] opcjonalne fragmenty kodu (mogą być, ale nie
Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1
Podstawy programowania. Wykład Funkcje Krzysztof Banaś Podstawy programowania 1 Programowanie proceduralne Pojęcie procedury (funkcji) programowanie proceduralne realizacja określonego zadania specyfikacja
1 Podstawy c++ w pigułce.
1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,
Algorytm. a programowanie -
Algorytm a programowanie - Program komputerowy: Program komputerowy można rozumieć jako: kod źródłowy - program komputerowy zapisany w pewnym języku programowania, zestaw poszczególnych instrukcji, plik
Zadanie analizy leksykalnej
Analiza leksykalna 1 Teoria kompilacji Dr inŝ. Janusz Majewski Katedra Informatyki Zadanie analizy leksykalnej Przykład: We: COST := ( PRICE + TAX ) * 0.98 Wy: id 1 := ( id 2 + id 3 ) * num 4 Tablica symboli:
Podstawy programowania w języku Visual Basic dla Aplikacji (VBA)
Podstawy programowania w języku Visual Basic dla Aplikacji (VBA) Instrukcje Język Basic został stworzony w 1964 roku przez J.G. Kemeny ego i T.F. Kurtza z Uniwersytetu w Darthmouth (USA). Nazwa Basic jest
Język programowania DELPHI / Andrzej Marciniak. Poznań, Spis treści
Język programowania DELPHI / Andrzej Marciniak. Poznań, 2012 Spis treści Przedmowa 11 Przyjęta notacja 13 Rozdział 1. Wprowadzenie 15 1.1. Ogólne zasady programowania zorientowanego obiektowo 15 1.2. Historia
Zmienne, stałe i operatory
Zmienne, stałe i operatory Przemysław Gawroński D-10, p. 234 Wykład 2 4 marca 2019 (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 1 / 21 Outline 1 Zmienne 2 Stałe 3 Operatory (Wykład 2) Zmienne, stałe
Mikrokontroler ATmega32. Język symboliczny
Mikrokontroler ATmega32 Język symboliczny 1 Język symboliczny (asembler) jest językiem niskiego poziomu - pozwala pisać programy złożone z instrukcji procesora. Kody instrukcji są reprezentowane nazwami
Pliki. Operacje na plikach w Pascalu
Pliki. Operacje na plikach w Pascalu ścieżka zapisu, pliki elementowe, tekstowe, operacja plikowa, etapy, assign, zmienna plikowa, skojarzenie, tryby otwarcia, reset, rewrite, append, read, write, buforowanie
Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane
Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane Stałe Oprócz zmiennych w programie mamy też stałe, które jak sama nazwa mówi, zachowują swoją wartość przez cały czas działania programu. Można
Analiza leksykalna 1. Teoria kompilacji. Dr inż. Janusz Majewski Katedra Informatyki
Analiza leksykalna 1 Teoria kompilacji Dr inż. Janusz Majewski Katedra Informatyki Zadanie analizy leksykalnej Kod źródłowy (ciąg znaków) Analizator leksykalny SKANER Ciąg symboli leksykalnych (tokenów)
Instrukcja standardowa Writeln
Instrukcja standardowa Writeln Instrukcja Writeln umożliwia wprowadzenie danych na ekran monitora powodując automatycznie późniejsze przejście kursora do nowej linii. Jest to ustawienie domyślne w działaniu
Programowanie C++ Wykład 2 - podstawy języka C++ dr inż. Jakub Możaryn. Warszawa, Instytut Automatyki i Robotyki
Wykład 2 - podstawy języka C++ Instytut Automatyki i Robotyki Warszawa, 2014 Wstęp Plan wykładu Struktura programu. Zmienne i ich nazwy, podstawowe typy: całkowite, rzeczywiste, znakowe i napisowe. Instrukcje:
Wykład PASCAL - Pliki tekstowe
Podstawy programowania Wykład PASCAL - Pliki tekstowe 1 dr Artur Bartoszewski - Podstawy prograowania, sem. 1- WYKŁAD Rodzaje plików Dane przechowywane w pliku mogą mieć reprezentację binarną (taką samą,
Podstawy Programowania C++
Wykład 3 - podstawowe konstrukcje Instytut Automatyki i Robotyki Warszawa, 2014 Wstęp Plan wykładu Struktura programu, instrukcja przypisania, podstawowe typy danych, zapis i odczyt danych, wyrażenia:
Języki Programowania. Elementy języków programowania. Wojciech Sobieski
Języki Programowania Elementy języków programowania Wojciech Sobieski Olsztyn, 2001-2016 Definicja Elementy języków programowania cechy i funkcjonalności charakterystyczne dla różnych (tu: arytmetycznych)
ForPascal Interpreter języka Pascal
Akademia Podlaska w Siedlcach Wydział Nauk Ścisłych Instytut Informatyki ForPascal Interpreter języka Pascal Przedmiot: Sieci i Systemy Wirtualne Informatyka IV Prowadzący: dr Krzysztof Trojanowski Grupa:
Języki programowania zasady ich tworzenia
Strona 1 z 18 Języki programowania zasady ich tworzenia Definicja 5 Językami formalnymi nazywamy każdy system, w którym stosując dobrze określone reguły należące do ustalonego zbioru, możemy uzyskać wszystkie
Pascal typy danych. Typy pascalowe. Zmienna i typ. Podział typów danych:
Zmienna i typ Pascal typy danych Zmienna to obiekt, który może przybierać różne wartości. Typ zmiennej to zakres wartości, które może przybierać zmienna. Deklarujemy je w nagłówku poprzedzając słowem kluczowym
Język C zajęcia nr 11. Funkcje
Język C zajęcia nr 11 Funkcje W języku C idea podprogramów realizowana jest wyłącznie poprzez definiowanie i wywołanie funkcji. Każda funkcja musi być przed wywołaniem zadeklarowana. Deklaracja funkcji
Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki
Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki Turbo Pascal jest językiem wysokiego poziomu, czyli nie jest rozumiany bezpośrednio dla komputera, ale jednocześnie jest wygodny dla programisty,
Warsztaty dla nauczycieli
WPROWADZENIE Wyprowadzanie danych: Wyprowadzanie na ekran komunikatów i wyników umożliwia instrukcja wyjścia funkcja print(). Argumentami funkcji (podanymi w nawiasach) mogą być teksty, wyrażenia arytmetyczne
Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie
Część X C++ Typ znakowy służy do reprezentacji pojedynczych znaków ASCII, czyli liter, cyfr, znaków przestankowych i innych specjalnych znaków widocznych na naszej klawiaturze (oraz wielu innych, których
Wprowadzania liczb. Aby uniknąć wprowadzania ułamka jako daty, należy poprzedzać ułamki cyfrą 0 (zero); np.: wpisać 0 1/2
Wprowadzania liczb Liczby wpisywane w komórce są wartościami stałymi. W Excel'u liczba może zawierać tylko następujące znaki: 0 1 2 3 4 5 6 7 8 9 + - ( ), / $ %. E e Excel ignoruje znaki plus (+) umieszczone
1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja. 2. Schemat blokowy przedstawia algorytm obliczania
1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja nie ma parametru i zwraca wartość na zewnątrz. nie ma parametru i nie zwraca wartości na zewnątrz. ma parametr o nazwie void i zwraca
Algorytmy i struktury danych
Algorytmy i struktury danych Zmienne Proste typy danych Strukturalne typy danych Witold Marańda maranda@dmcs.p.lodz.pl 1 Zmienne Liczby (i struktury danych) występują w algorytmach i programach komputerowych
Adresowanie obiektów. Adresowanie bitów. Adresowanie bajtów i słów. Adresowanie bajtów i słów. Adresowanie timerów i liczników. Adresowanie timerów
Adresowanie obiektów Bit - stan pojedynczego sygnału - wejście lub wyjście dyskretne, bit pamięci Bajt - 8 bitów - wartość od -128 do +127 Słowo - 16 bitów - wartość od -32768 do 32767 -wejście lub wyjście
Wprowadzenie do programowania w języku FORTRAN
Wprowadzenie do programowania w języku FORTRAN Wprowadzenie Fortran jest językiem programowania zorientowanym głównie na zagadnienia matematyczne i zastosowania inżynierskie. Nazwa jest akronimem słów
Instrukcja do ćwiczenia P4 Analiza semantyczna i generowanie kodu Język: Ada
Instrukcja do ćwiczenia P4 Analiza semantyczna i generowanie kodu Język: Ada Spis treści 1 Wprowadzenie 1 2 Dane i kod 2 3 Wyrażenia 2 3.1 Operacje arytmetyczne i logiczne.................. 2 3.2 Podstawowe
Elementy języka C. ACprogramislikeafastdanceonanewlywaxeddancefloorbypeople carrying razors.
Wykład 3 ACprogramislikeafastdanceonanewlywaxeddancefloorbypeople carrying razors. Waldi Ravens J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 75 / 146 deklaracje zmiennych instrukcja podstawienia
Programowania w Javie
Programowania w Javie Działanie kaŝdego programu polega na przetwarzaniu danych. Zaczniemy więc od zapoznania się z typami danych Javy. Aby przetwarzać dane, trzeba umieć na nich operować. Do tego słuŝą
Wstęp do programowania
Wstęp do programowania wykład 2 Piotr Cybula Wydział Matematyki i Informatyki UŁ 2012/2013 http://www.math.uni.lodz.pl/~cybula Język programowania Każdy język ma swoją składnię: słowa kluczowe instrukcje
Mathcad c.d. - Macierze, wykresy 3D, rozwiązywanie równań, pochodne i całki, animacje
Mathcad c.d. - Macierze, wykresy 3D, rozwiązywanie równań, pochodne i całki, animacje Opracował: Zbigniew Rudnicki Powtórka z poprzedniego wykładu 2 1 Dokument, regiony, klawisze: Dokument Mathcada realizuje
dr inż. Jarosław Forenc
Informatyka Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr II, studia stacjonarne I stopnia Rok akademicki 8/9 Wykład nr 4 (.3.9) Rok akademicki 8/9, Wykład nr 4 /33 Plan wykładu
Cw.12 JAVAScript w dokumentach HTML
Cw.12 JAVAScript w dokumentach HTML Wstawienie skryptu do dokumentu HTML JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania.skrypty Java- Script mogą być zagnieżdżane
Podstawy programowania. Wykład: 9. Łańcuchy znaków. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD
Podstawy programowania Wykład: 9 Łańcuchy znaków 1 dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD Rodzaje plików Dane przechowywane w pliku mogą mieć reprezentację binarną (taką samą, jak
METODY KOMPUTEROWE W OBLICZENIACH INŻYNIERSKICH
METODY KOMPUTEROWE W OBLICZENIACH INŻYNIERSKICH ĆWICZENIE NR 9 WYRAŻENIA LOGICZNE, INSTRUKCJE WARUNKOWE I INSTRUKCJE ITERACYJNE W PROGRAMIE KOMPUTEROWYM MATLAB Dr inż. Sergiusz Sienkowski ĆWICZENIE NR
4. Funkcje. Przykłady
4. Funkcje Przykłady 4.1. Napisz funkcję kwadrat, która przyjmuje jeden argument: długość boku kwadratu i zwraca pole jego powierzchni. Używając tej funkcji napisz program, który obliczy pole powierzchni
Metodyki i Techniki Programowania 1 1 1. MECHANIZM POWSTAWANIA PROGRAMU W JĘZYKU C PODSTAWOWE POJĘCIA
Metodyki i Techniki Programowania 1 1 ZAJ CIA 3. 1. MECHANIZM POWSTAWANIA PROGRAMU W JĘZYKU C PODSTAWOWE POJĘCIA IDE zintegrowane środowisko programistyczne, zawierające kompilator, edytor tekstu i linker,
Pascal - wprowadzenie
Pascal - wprowadzenie Ogólne informacje o specyfice języka i budowaniu programów Filip Jarmuszczak kl. III c Historia Pascal dawniej jeden z najpopularniejszych języków programowania, uniwersalny, wysokiego
Arytmetyka liczb binarnych
Wartość dwójkowej liczby stałoprzecinkowej Wartość dziesiętna stałoprzecinkowej liczby binarnej Arytmetyka liczb binarnych b n-1...b 1 b 0,b -1 b -2...b -m = b n-1 2 n-1 +... + b 1 2 1 + b 0 2 0 + b -1
Program 14. #include <iostream> #include <ctime> using namespace std;
Program 14 Napisać: * funkcję słuŝącą do losowego wypełniania tablicy liczbami całkowitymi z podanego zakresu (*). Parametrami funkcji mają być tablica, jej długość oraz dwie liczby stanowiące krańce przedziału
Tablice (jedno i wielowymiarowe), łańcuchy znaków
Tablice (jedno i wielowymiarowe), łańcuchy znaków wer. 8 z drobnymi modyfikacjami! Wojciech Myszka Katedra Mechaniki i Inżynierii Materiałowej 2017-04-07 09:35:32 +0200 Zmienne Przypomnienie/podsumowanie
LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI. Wprowadzenie do środowiska Matlab
LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI Wprowadzenie do środowiska Matlab 1. Podstawowe informacje Przedstawione poniżej informacje maja wprowadzić i zapoznać ze środowiskiem
Modelowanie Procesów Jądrowych
Modelowanie Procesów Jądrowych Wykład 1: Wstęp do programowania w języku FORTRAN WF PW Warszawa, dn. 01.03.2010r. 1 Źródła: http://www.chem.ug.edu.pl/~adam/fortran/index.html R.K. Kott, K. Walczak. Programowanie
Podstawy programowania w języku C
Podstawy programowania w języku C WYKŁAD 1 Proces tworzenia i uruchamiania programów Algorytm, program Algorytm przepis postępowania prowadzący do rozwiązania określonego zadania. Program zapis algorytmu
Podstawowe operacje arytmetyczne i logiczne dla liczb binarnych
1 Podstawowe operacje arytmetyczne i logiczne dla liczb binarnych 1. Podstawowe operacje logiczne dla cyfr binarnych Jeśli cyfry 0 i 1 potraktujemy tak, jak wartości logiczne fałsz i prawda, to działanie
Baltie 3. Podręcznik do nauki programowania dla klas I III gimnazjum. Tadeusz Sołtys, Bohumír Soukup
Baltie 3 Podręcznik do nauki programowania dla klas I III gimnazjum Tadeusz Sołtys, Bohumír Soukup Czytanie klawisza lub przycisku myszy Czytaj klawisz lub przycisk myszy - czekaj na naciśnięcie Polecenie
Podstawy Informatyki. Metalurgia, I rok. Wykład 3 Liczby w komputerze
Podstawy Informatyki Metalurgia, I rok Wykład 3 Liczby w komputerze Jednostki informacji Bit (ang. bit) (Shannon, 1948) Najmniejsza ilość informacji potrzebna do określenia, który z dwóch równie prawdopodobnych
Podstawy programowania Laboratorium. Ćwiczenie 2 Programowanie strukturalne podstawowe rodzaje instrukcji
Podstawy programowania Laboratorium Ćwiczenie 2 Programowanie strukturalne podstawowe rodzaje instrukcji Instrukcja warunkowa if Format instrukcji warunkowej Przykład 1. if (warunek) instrukcja albo zestaw
typ zakres sposob zapamietania shortint integer bajty (z bitem znaku) longint byte word
Pascal - powtórka Alfabet, Nazwy W odróŝnieniu do C w Pascal nie odróŝnia małych i duŝych liter. Zapisy ALA i ala oznaczają tę samą nazwę. Podobnie np. słowo kluczowe for moŝe być zapisane: FOR. W Pascalu
PASCAL. Etapy pisania programu. Analiza potrzeb i wymagań (treści zadania) Opracowanie algorytmu Kodowanie Kompilacja Testowanie Stosowanie
PASCAL Język programowania wysokiego poziomu Opracowany przez Mikołaja Wirtha na początku lat 70 XX wieku Prosty, z silną kontrolą poprawności Stosowany prawie wyłącznie na uczelniach do nauki programowania
Ćwiczenie 1. Matlab podstawy (1) Matlab firmy MathWorks to uniwersalny pakiet do obliczeń naukowych i inżynierskich, analiz układów statycznych
1. Matlab podstawy (1) Matlab firmy MathWorks to uniwersalny pakiet do obliczeń naukowych i inżynierskich, analiz układów statycznych i dynamicznych, symulacji procesów, przekształceń i obliczeń symbolicznych
Niezwykłe tablice Poznane typy danych pozwalają przechowywać pojedyncze liczby. Dzięki tablicom zgromadzimy wiele wartości w jednym miejscu.
Część XIX C++ w Każda poznana do tej pory zmienna może przechowywać jedną liczbę. Jeśli zaczniemy pisać bardziej rozbudowane programy, okaże się to niewystarczające. Warto więc poznać zmienne, które mogą
AKADEMIA MORSKA W SZCZECINIE WI-ET / IIT / ZTT. Instrukcja do zajęc laboratoryjnych nr 1 AUTOMATYZACJA I ROBOTYZACJA PROCESÓW PRODUKCYJNYCH
AKADEMIA MORSKA W SZCZECINIE WI-ET / IIT / ZTT Instrukcja do zajęc laboratoryjnych nr 1 AUTOMATYZACJA I ROBOTYZACJA PROCESÓW PRODUKCYJNYCH II rok Kierunek Logistyka Temat: Zajęcia wprowadzające. BHP stanowisk
Kod znak-moduł. Wartość liczby wynosi. Reprezentacja liczb w kodzie ZM w 8-bitowym formacie:
Wykład 3 3-1 Reprezentacja liczb całkowitych ze znakiem Do przedstawienia liczb całkowitych ze znakiem stosowane są następujące kody: - ZM (znak-moduł) - U1 (uzupełnienie do 1) - U2 (uzupełnienie do 2)
Programowanie w Turbo Pascal
Skróty: ALT + F9 Kompilacja CTRL + F9 Uruchomienie Struktura programu: Programowanie w Turbo Pascal Program nazwa; - nagłówek programu - blok deklaracji (tu znajduje się VAR lub CONST) - blok instrukcji
JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6
JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM Wykład 6 1 SPECYFIKATOR static Specyfikator static: Specyfikator ten powoduje, że zmienna lokalna definiowana w obrębie danej funkcji nie jest niszczona
Instrukcje warunkowe i skoku. Spotkanie 2. Wyrażenia i operatory logiczne. Instrukcje warunkowe: if else, switch.
Instrukcje warunkowe i skoku. Spotkanie 2 Dr inż. Dariusz JĘDRZEJCZYK Wyrażenia i operatory logiczne Instrukcje warunkowe: if else, switch Przykłady 11/3/2016 AGH, Katedra Informatyki Stosowanej i Modelowania
znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.
Część XVI C++ Funkcje Jeśli nasz program rozrósł się już do kilkudziesięciu linijek, warto pomyśleć o jego podziale na mniejsze części. Poznajmy więc funkcje. Szybko się przekonamy, że funkcja to bardzo
Podstawy Programowania Podstawowa składnia języka C++
Podstawy Programowania Podstawowa składnia języka C++ Katedra Analizy Nieliniowej, WMiI UŁ Łódź, 3 października 2013 r. Szablon programu w C++ Najprostszy program w C++ ma postać: #include #include
1. Wprowadzanie danych z klawiatury funkcja scanf
1. Wprowadzanie danych z klawiatury funkcja scanf Deklaracja int scanf ( const char *format, wskaźnik, wskaźnik,... ) ; Biblioteka Działanie stdio.h Funkcja scanf wczytuje kolejne pola (ciągi znaków),
Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat
Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Program, to lista poleceń zapisana w jednym języku programowania zgodnie z obowiązującymi w nim zasadami. Celem programu jest przetwarzanie
Programowanie. Projektowanie funkcje programu tworzenie algorytmu i struktur danych. Programowanie implementacja algorytmu kompilacja programu
Programowanie V Dariusz Skibicki Wydział Inżynierii Mechanicznej Uniwersytet Technologiczno-Przyrodniczy im. Jana i Jędrzeja Śniadeckich w Bydgoszczy dariusz.skibicki(at)utp.edu.pl Programowanie Projektowanie
wagi cyfry 7 5 8 2 pozycje 3 2 1 0
Wartość liczby pozycyjnej System dziesiętny W rozdziale opiszemy pozycyjne systemy liczbowe. Wiedza ta znakomicie ułatwi nam zrozumienie sposobu przechowywania liczb w pamięci komputerów. Na pierwszy ogień
Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach?
Część XVIII C++ Funkcje Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach? Umiemy już podzielić nasz
Systemy liczbowe. 1. Przedstawić w postaci sumy wag poszczególnych cyfr liczbę rzeczywistą R = (10).
Wprowadzenie do inżynierii przetwarzania informacji. Ćwiczenie 1. Systemy liczbowe Cel dydaktyczny: Poznanie zasad reprezentacji liczb w systemach pozycyjnych o różnych podstawach. Kodowanie liczb dziesiętnych
Analiza leksykalna 1. Języki formalne i automaty. Dr inż. Janusz Majewski Katedra Informatyki
Analiza leksykalna 1 Języki formalne i automaty Dr inż. Janusz Majewski Katedra Informatyki Zadanie analizy leksykalnej Kod źródłowy (ciąg znaków) Analizator leksykalny SKANER Ciąg symboli leksykalnych
Instrukcja warunkowa i złoŝona.
Instrukcja warunkowa i złoŝona. Budowa pętli warunkowej. JeŜeli mielibyśmy przetłumaczyć instrukcję warunkową to brzmiałoby to mniej więcej tak: jeŝeli warunek jest spełniony, to wykonaj jakąś operację
Autor: dr inż. Katarzyna Rudnik
Bazy danych Wykład 2 MS Access Obiekty programu, Reprezentacja danych w tabeli, Indeksy, Relacje i ich sprzężenia Autor: dr inż. Katarzyna Rudnik Obiekty programu MS ACCESS Obiekty typu Tabela są podstawowe
Programowanie strukturalne i obiektowe
Programowanie strukturalne i obiektowe Język C część I Opracował: Grzegorz Flesik Literatura: A. Majczak, Programowanie strukturalne i obiektowe, Helion, Gliwice 2010 P. Domka, M. Łokińska, Programowanie
Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Podstawy VBA cz. 1. Programowanie komputerowe
Wydział Zarządzania AGH Katedra Informatyki Stosowanej Podstawy VBA cz. 1 Programowanie 1 Program wykładu Struktura programu Instrukcja przypisania Wprowadzanie danych Wyprowadzanie wyników Instrukcja
Zadania do wykonania. Rozwiązując poniższe zadania użyj pętlę for.
Zadania do wykonania Rozwiązując poniższe zadania użyj pętlę for. 1. apisz program, który przesuwa w prawo o dwie pozycje zawartość tablicy 10-cio elementowej liczb całkowitych tzn. element t[i] dla i=2,..,9
Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Podstawy VBA cz. 2. Programowanie komputerowe
Wydział Zarządzania AGH Katedra Informatyki Stosowanej Podstawy VBA cz. 2 Programowanie 1 Program wykładu Typy danych Wyrażenia Operatory 2 VBA Visual Basic dla aplikacji (VBA) firmy Microsoft jest językiem
Ćwiczenie 2 Wczytywanie i zapisywanie do plików tekstowych
Ćwiczenie 2 Wczytywanie i zapisywanie do plików tekstowych 1. Wczytywanie z plików tekstowych. Wczytywanie z pliku tekstowego wymaga: a) skojarzenia zmiennej plikowej z plikiem procedura assignfile b)
SQL - Structured Query Language -strukturalny język zapytań SQL SQL SQL SQL
Wprowadzenie do SQL SQL - Structured Query Language -strukturalny język zapytań Światowy standard przeznaczony do definiowania, operowania i sterowania danymi w relacyjnych bazach danych Powstał w firmie
Katedra Elektrotechniki Teoretycznej i Informatyki. wykład 12 - sem.iii. M. Czyżak
Katedra Elektrotechniki Teoretycznej i Informatyki wykład 12 - sem.iii M. Czyżak Język C - preprocesor Preprocesor C i C++ (cpp) jest programem, który przetwarza tekst programu przed przekazaniem go kompilatorowi.
2 Przygotował: mgr inż. Maciej Lasota
Laboratorium nr 2 1/7 Język C Instrukcja laboratoryjna Temat: Wprowadzenie do języka C 2 Przygotował: mgr inż. Maciej Lasota 1) Wprowadzenie do języka C. Język C jest językiem programowania ogólnego zastosowania
Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja, - liczby losowe
Podstawy programowania Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja, - liczby losowe 1 I. Składnia Składnia programu Program nazwa; Uses biblioteki; Var deklaracje zmiennych;
Polcode Code Contest PHP-10.09
Polcode Code Contest PHP-10.09 Przedmiotem konkursu jest napisanie w języku PHP programu, którego wykonanie spowoduje rozwiązanie zadanego problemu i wyświetlenie rezultatu. Zadanie konkursowe Celem zadania
Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka
Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka 1. Kompilacja aplikacji konsolowych w środowisku programistycznym Microsoft Visual Basic. Odszukaj w menu startowym systemu
Programowanie w języku C++ Grażyna Koba
Programowanie w języku C++ Grażyna Koba Kilka definicji: Program komputerowy to ciąg instrukcji języka programowania, realizujący dany algorytm. Język programowania to zbiór określonych instrukcji i zasad
Operacje wykonywane są na operandach (argumentach operatorów). Przy operacji dodawania: argumentami operatora dodawania + są dwa operandy 2 i 5.
Operatory w Javie W Javie występują następujące typy operatorów: Arytmetyczne. Inkrementacji/Dekrementacji Przypisania. Porównania. Bitowe. Logiczne. Pozostałe. Operacje wykonywane są na operandach (argumentach
Operatory cd. Relacyjne: ==!= < > <= >= bool b; int i =10, j =20; dzielenie całkowitych wynik jest całkowity! Łączenie tekstu: + string s = "Ala ma ";
1 2 Operacje na zmiennych Kolejność operacji: deklaracja, inicjacja bool decyzja; int licznik, lp; double stvat, wartpi; char Znak; string S1, S2 = "Kowalski"; przypisanie wartości podstawienie decyzja