PP 4, Podstawy programowania


4. OGÓLNA BUDOWA PROGRAMU I JEGO ELEMENTY

4.1. Struktura programu

W programie napisanym w Turbo Pascalu można wydzielić następujące bloki:

Z kolei blok programu składa się z dwóch zasadniczych części. Są nimi:

Początek każdej części programu jest wyróżniony odpowiednim słowem kluczowym. Pokazuje to rysunek 4.1. Poniżej omówimy szczegółowo poszczególne elementy struktury programu. Pominiemy definicje typów, funkcji i procedur, które będą opisane w innych rozdziałach.

{NAGŁÓWEK PROGRAMU}

program {nazwa programu}

{DEKLARACJA MODUŁÓW}

uses {lista nazw użytych modułów}

{BLOK PROGRAMU}

{1. Sekcja deklaracji}

const {definicje stałych}

type {definicje typów}

var {deklaracje zmiennych}

const {deklaracje zmiennych inicjowanych}

function (definicja funkcji 1}

function {definicja funkcji 2}

{---------------------}

procedure {definicja procedury 1}

procedure {definicja procedury 2}

{---------------------}

{2. Sekcja instrukcji (program główny}}

begin

{instrukcja 1}

{instrukcja 2}

{---------}

{instrukcja k}

end.

Rys. 4.1 Ogólna struktura programu w Turbo Pascalu

4.2. Nagłówek programu

Nagłówek rozpoczyna się słowem kluczowym program, po którym wpisuje się nazwę, nadaną programowi, kończąc zapis średnikiem, na przykład:

program Silnia;

Nazwa programu, tak jak wszystkie nazwy Turbo Pascala, musi rozpoczynać się od litery lub znaku `_'. Dalsze znaki nazwy mogą być literami, cyframi, lub znakiem `_'. Inne znaki nie są dozwolone. Turbo Pascal nie odróżnia dużych liter od małych - nazwy czy też słowa kluczowe są interpretowane niezależnie od tego, czy zostały napisane dużymi, czy małymi literami.

Nagłówek nie jest obowiązkową częścią programu. Po jego usunięciu program działa tak samo. Nagłówek jest jednak przydatny ze względów porządkowych - widząc nagłówek z nazwą programu, można szybko zorientować się, czy jest to ten program, którego szukamy.

4.3. Deklarowanie modułów używanych przez program

W zasobach Turbo Pascala znajduje się bardzo dużo gotowych podprogramów, czyli funkcji oraz procedur standardowych. Korzystamy z nich przy budowie programu. Ze względów praktycznych podprogramy standardowe zostały pogrupowane w tzw. moduły (ang. units) o nazwach: Crt, Dos, Graph, Overlay, Printer, Strings, Windos. Chcąc wykorzystać w programie określoną procedurę lub funkcję, trzeba koniecznie zadeklarować odpowiedni moduł, w którym jest zawarta jej definicja. Nazwy modułów oddziela się przecinkami, a na końcu listy modułów stawia się średnik, jak w przykładzie poniżej:

uses Crt,Dos;

Jeżeli nie będzie deklaracji modułu, zawierającego użytą w programie procedurę lub funkcję, to wystąpi błąd kompilacji z komunikatem:

Error 3: Unknown identifier.

Niektóre procedury i funkcje standardowe (np. Write, Read) zawarte są w podstawowym module System, którego nie trzeba i nie wolno deklarować.

4.4. Deklarowanie zmiennych

Liczba i typ zmiennych użytych w programie zależy od zadania i przyjętego algorytmu. Załóżmy, że dla potrzeb pewnego obliczenia trzeba przechować, jako dane wejściowe, dwie wartości całkowite, których wartość jest zawarta w przedziale [-1000..1000]. Najlepiej tym założeniom odpowiada typ Integer. (Można zastosować także typ Longint, ale ze względu na oszczędność pamięci nie jest to wskazane). Załóżmy ponadto, że jako rezultat obliczeń otrzymamy dwie wartości rzeczywiste.

W tej sytuacji trzeba zadeklarować w programie cztery zmienne - dwie typu Integer i dwie typu Real. Po wybraniu dla nich nazw D1, D2 oraz Wynik1, Wynik2, deklaracja zmiennych będzie miała postać pokazaną na rysunku 4.2.

var D1:Integer;

D2:Integer;

Wynik1:Real;

Wynik2:Real;

var D1,D2:Integer;

Wynik1,Wynik2:Real;

Rys. 4.2. Dwa sposoby deklarowania zmiennych

Zauważmy, że:

Deklaracja zmiennej jest tylko rezerwacją odpowiedniego obszaru pamięci. Jeżeli zmienną deklarujemy po słowie var, to jej wartość po deklaracji jest nieokreślona lub zerowa. Konkretne wartości będą przypisywane zmiennej w czasie wykonywania programu.

Często trzeba zmienną zainicjować, czyli nadać jej określoną wartość początkową, by prawidłowo rozpocząć proces obliczeń. Można to uczynić, stosując odpowiednią instrukcję w programie. Innym sposobem jest deklarowanie zmiennej po słowie const, zamiast po słowie var. Tak deklarowaną zmienną należy zainicjować odpowiednią wartością. Pokazano to na rysunku 4.3, dla czterech zmiennych różnych typów. Po podaniu typu zmiennej piszemy znak równości, następnie wartość, którą ma przyjąć zmienna, a na końcu średnik.

const I:Integer=100;

X:Real=3.14;

Znak:Char='A';

B:Boolean=False;

Rys. 4.3. Deklarowanie zmiennych z nadawaniem wartości początkowych

4.5. Definiowanie stałych

Jeżeli w tekście źródłowym tego samego programu często występuje jawnie pewna stała wartość (konkretna liczba, znak, napis itp.), to opłaca się nadać tej stałej nazwę i potem używać tej nazwy w programie, zamiast wielokrotnie przepisywać stałą jawną. Czynność utożsamienia stałej wartości z wybraną dla niej nazwą nazywa się definiowaniem stałej. Dowolną liczbę stałych definiujemy po jednym słowie kluczowym const. Po nazwie stałej i znaku równości piszemy odpowiednią wartość, kończąc zapis średnikiem. Na rysunku 4.4 pokazano przykład definicji czterech stałych różnego typu.

const Delta = 0.000001;

I = -1;

Znak = 'A';

N = 'Nacisnij klawisz';

Rys. 4.4. Przykład definiowania stałych

Nie należy mylić deklarowania zmiennych inicjowanych z definiowaniem stałych. I tu i tam rozpoczynamy od słowa kluczowego const. Jednak, deklarując stałą, nie podaje się jej typu!

Pomiędzy stałymi i zmiennymi występuje zasadnicza różnica. Stała jawna to konkretna wartość. Stała definiowana to nazwa, pod którą kryje się konkretna wartość. Natomiast zmienna jest obszarem w pamięci, o określonej nazwie, w którym można przechowywać dowolne dane określonego typu. Dlatego stałe nie mogą zmieniać swojej wartości w czasie działania programu, natomiast wartości zmiennych mogą ulegać zmianom w zależności od przebiegu obliczeń.

4.6. Sekcja instrukcji (program główny)

Sekcja instrukcji, zwana też programem głównym, jest tą częścią, w której są zawarte kolejno wykonywane instrukcje programu. Program główny zaczyna się od słowa kluczowego begin i kończy słowem kluczowym end, po którym należy postawić kropkę.

Po napotkaniu zapisu „end.” kompilator przerywa tłumaczenie tekstu programu na język wewnętrzny, ignorując ewentualne dalsze fragmenty tekstu, znajdujące się w oknie edycji. Brak właściwego zakończenia programu uniemożliwia jego kompilację. W przypadku pominięcia słowa „end.” wystąpi błąd kompilacji i zostanie wyprowadzony komunikat:

Error 10: Unexpected end of file.

Instrukcje programu głównego, to w większości instrukcje wywołania procedur i funkcji, zarówno standardowych, jak zdefiniowanych w programie. Struktura programu głównego rzadko jest tak prosta, jak pokazano na rysunku 4.1. Częściej występują w niej zagnieżdżenia instrukcji - wewnątrz jednych instrukcji są umieszczone inne instrukcje. Przekonamy się o tym, analizując przykłady programów umieszczone w dalszych rozdziałach.

W odróżnieniu od nagłówka oraz elementów sekcji deklaracji (rys. 4.1), których obecność zależy od potrzeby, program główny jest konieczną częścią programu. Poniżej pokazano poprawnie kompilujący się program, zawierający tylko nagłówek i pustą sekcję instrukcji. Program ten jest oczywiście w praktyce bezużyteczny, bo nie wykonuje żadnej operacji.

Przykład 4.1. Najprostszy program, który nic nie robi

program Ex4_1;

begin

end.

Ilustrację omówionych elementów programu stanowi przykład 4.2. Pokazany tam program zawiera nagłówek, deklarację modułu, definicję stałej, definicję typu, deklaracje zmiennych globalnych, definicje procedury i funkcji oraz sekcję instrukcji. Szczegóły pokazanego programu i jego działanie staną się zrozumiałe po przeczytaniu kolejnych rozdziałów podręcznika.

Przykład 4.2. Ilustracja struktury programu w Turbo Pascalu

program Ex4_2;

uses Crt;

const N=19;

type Tab=array [0..N] of Shortint;

var T:Tab; Z:Char;

procedure ZapLos(var T:Tab;A,B:Integer);

var I:Integer;

begin

Randomize;

for I:=Low(T) to High(T) do

T[I]:=A+Random(B-A+1);

end;

function LiczUjemne(var T:Tab):Word;

var L:Word; I:Integer;

begin

L:=0;

for I:=Low(T) to High(T) do

if T[I]<0 then L:=L+1;

LiczUjemne:=L;

end;

Przykład 4.2. c. d.

{---------------------------------------}

begin

Clrscr;

ZapLos(T,-128,127);

repeat

Writeln('Wybierz opcje:');

Writeln('<1> - liczba elementow ujemnych');

Writeln('<Esc> - wyjscie z programu');

repeat

Z:=Readkey;

until (Z='1')or(Z=#27);

Clrscr;

case Z of

'1' : Writeln('Liczba ujemnych: ',LiczUjemne(T));

#27 : break;

end;

Gotoxy(40,24); Write('O.K. Nacisnij <Enter.>');

Readln;

Clrscr;

until False;

end.

15



Wyszukiwarka

Podobne podstrony:
pp, Podstawy programowania
PP 0, Podstawy programowania
PP 3, Podstawy programowania
PP 7, Podstawy programowania
PP 1, Podstawy programowania
PP 2, Podstawy programowania
PP 6, Podstawy programowania
PP 9, Podstawy programowania
PP 5, Podstawy programowania
PP temat6, Podstawy programowania
zasady zaliczeń PP IG, Politechnika Białostocka, ZiIP (PB), Semestr 1, Podstawy programowania, Progr
PP 11, Podstawy programowania
pp projekty2004, wisisz, wydzial informatyki, studia zaoczne inzynierskie, podstawy programowania
pp program wykladu zaoczne 03, wisisz, wydzial informatyki, studia zaoczne inzynierskie, podstawy pr
PP W7, Podstawy programowania
PP W6, Podstawy programowania
PP temat3, Podstawy programowania
PP W1, Podstawy programowania

więcej podobnych podstron