Zasady Programowania Strukturalnego Rafał Jakubowski Zespół Teoretycznej Biofizyki Molekularnej rjakubowski@fizyka.umk.pl www.fizyka.umk.pl/~rjakubowski Tel: 33 46 Konsultacje w sem. letnim 11/12: środa, 10-12, pokój 573
Zasady zaliczenia ćwiczeń Obowiązuje zakres materiału wyłożonego przez prof. Wasilewskiego + informacje przedstawione na ćwiczeniach Obecność: max. 2 nieusprawiedliwione nieobecności Praca na zajęciach 1 kolokwium pod koniec zajęć MOŻLIWE krótkie wejściówki, zadania domowe...
Typy zmiennych w języku Pascal typy całkowite Typ zmiennej Zakres Ilość zajmowanej pamięci SHORTINT <-128; 127> 1 bajt INTEGER <32768;32767> 2 bajty LONGINT <-2147483648;2147483647> 4 bajty BYTE <0;255> 1 bajt WORD <0;65535> 2 bajty
Typy zmiennych w języku Pascal typy rzeczywiste Typ zmiennej Zakres Ilość zajmowanej pamięci REAL <2.9e-39;1.7e38> 6 bajtów SINGLE <1.5e-45;4.0e38> 4 bajty DOUBLE <-5.0e-324 1.7e308> 8 bajtów EXTENDED <3.4e-4932;1.1e4932> 10 bajtów COMP <-9.2e18;9.2e18> 8 bajtów
Typy zmiennych w języku Pascal inne typy zmiennych Nazwa typu CHAR STRING BOOLEAN FILE ARRAY Opis Pojedynczy znak ASCII Łańcuch znaków ASCII Zmienna typu logicznego Zmienna plikowa Tablica zmiennych
Deklaracja zmiennych Wzorzec: var nazwa_zm: typ; np.: var jakas_zmienna: integer; var inna_zmienna: double; Możliwość jednoczesnej deklaracji kilku zmiennych tego samego typu, np.: var jedna_zm, druga_zm: real; var nie, tak: boolean;
Deklaracja zmiennych tablicowych var tab1: array[1..100] of integer; var tab2: array[1..100] of real; const stala M; Stałe a zmienne... Deklaracja stałych
Operatory Arytmetyczne: +, -, *, /, mod, div Operator przypisania: := Operatory relacji: =, <, >, <>, <=, >=, in Operatory logiczne: AND, NOT, OR, XOR
Komentarze Warto (NALEŻY!) komentować... Postaci komentarzy: (* komentarz *) { inny komentarz }
Struktura programu Program nazwa_programu; {deklarujemy nazwe programu} Uses crt; {moduly dodatkowe, których chcemy uzyc} var zmienna: typ; begin end. instrukcja1; instrukcja2; instrukcja2;
Kilka uwag Zanim zaprogramujesz pomyśl. Nie zaczynaj programować dopóki nie przeanalizujesz zadania oraz nie zaplanujesz jego wykonania Wszyscy zapominamy. Komentuj kod aby zachować jego czytelność. Nazwy zmiennych, procedur, funkcji, warto wybierać mądrze... Dbaj o czytelność kodu (wcięcia, podział logiczny poszczególnych partii kodu etc.)
Schemat blokowy Opis problemu za pomocą specyficznego grafu Źródło: http://www.algorytm.org/kurs-algorytmiki/schematy-blokowe.html
write/writeln read/readln Podstawowe instrukcje wejścia/wyjścia Zapis/odczyt do/z pliku lub konsoli np.: var r: real; r:=3.141559 writeln(r:2:4); readln(r); write(r:1:8);
Instrukcje warunkowe if warunek then begin Instrukcje; Instrukcjaa; intrukcja_innna; end else begin intrukcja_alternatywna; jeszcze_jedna; end
Pętle Pętla jest konstrukcją programistyczną pozwalającą na wykonanie pewnego zbioru instrukcji odpowiednią ilość razy (iteracji) Rozmaite warunki startu/stopu Możliwość stosowania liczników inkrementacyjnych lub dekrementacyjnych, a także stanów logicznych (jeżeli jest spełniony jakiś warunek kontynuuj bądź przerwij wykonywanie pętli)
Pętla for przypadek inkrementacyjny Odliczamy w górę, do określonej wartości (to) Składnia: for zm:=wart_pocz TO wart_konc do... np. liczymy silnię dla n=10 for i:=1 to 10 do res:=res*1; writeln('wartosc silni dla n=10 wynosi', res); silnia.pas...
Pętla for przypadek dekrementacyjny Odliczamy w dół (downto) Składnia: for zm:=wart_pocz downto wart_koncowa do... np. silnia liczona w dół : for i:=10 downto 1 do res:=res*i; Wynik... silnia_dol.pas...
Pętla repeat...until Rób COŚ dopóki WARUNEK Składnia: repeat instrukcje until warunek; np. repeat k:=k+1 until k<10 repeat_until.pas... repeat until keypressed;
Pętla while...do Dopóki WARUNEK rób COŚ Składnia: while warunek do begin instrukcje end; np. while k<10 do begin res:=res*i; i:=i+1; end; while_do.pas...
Funkcje i procedury Korzystanie z funkcji/procedur pozwala na organizację logiczną kodu w sposób pozwalający na wielokrotne wykorzystanie pewnych jego części Oszczędzamy czas, miejsce, kod zyskuje na przejrzystości Czas to pieniądz! Planujmy logikę działania aplikacji... Procedury a funkcje...
Funkcje Składnia: function nazwa_funkcji(zmienna: typ):typ_wyniku; var zmienna1: typ1; var zmienna2: typ2; begin instrukcja1; instrukcja2; nazwa_funkcji:=wynik_instrukcji; end; Użycie: k:=nazwa_funkcji(zmienna);
Procedury Składnia: procedure nazwa_procedury(zmienna: typ); var zmienna_wewnetrzna: typ; begin instrukcja1; instrukcja2; end; Użycie: nazwa_procedury(zmienna);
Procedury zmienne i wskaźniki Program test_wsk; var a,b: integer; procedure dodawanie(var a: integer; b: integer); begin a:=a+2; b:=b+7; writeln('a: ',a,', b: ',b); end; begin a:=8; b:=9; writeln('a=',a,', b=',b); dodawanie(a,b); writeln('a=',a,', b=',b); end.
Typy własne type jakis_typ = typ_typu np.: type punkt = Array[1..3] of real; odcinek = Array[1..2] of punkt figura = Array[1..4] of odcinek; wlasny_typ.pas...