Język PASCAL – podstawy Turbo Pascal: procedury, funkcje

Slides:



Advertisements
Podobne prezentacje
Katarzyna Szafrańska kl. II ti
Advertisements

PASCAL (3) dr Anna Kwiatkowska.
typy całkowite (całkowitoliczbowe)
PROGRAMOWANIE STRUKTURALNE
PROGRAMOWANIE STRUKTURALNE
ZŁOŻONOŚĆ OBLICZENIOWA
Turbo pascal – instrukcje warunkowe, iteracyjne,…
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 3: Podstawowe elementy języka.
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 7: Procedury i funkcje © Jan Kaczmarek.
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 8: Wykorzystanie procedur i funkcji © Jan Kaczmarek.
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 6: Tablice, rekordy, zbiory.
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 2: Wstęp do programowania w Pascalu © Jan Kaczmarek.
Rekurencja Copyright, 2000 © Jerzy R. Nawrocki Wprowadzenie do informatyki Wykład.
Imperatywne modele obliczeń Copyright, 2003 © Jerzy R. Nawrocki Teoretyczne podstawy.
Programowanie imperatywne i granice obliczalności Copyright, 2004 © Jerzy R. Nawrocki
Rekursja Copyright, 2004 © Jerzy R. Nawrocki Teoretyczne podstawy informatyki.
Programowanie imperatywne i język C Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie.
Kurs Pascala – spis treści
Obliczanie miar ortogonalnych.
Kartowanie pikiet pomierzonych metodą biegunową.
pomierzonych metodą ortogonalną
Wykład 2 struktura programu elementy języka typy zmienne
Instrukcja skoku GO TO etykieta Np. GO TO 100 ….. 100WRITE (*,*) Przeskok do instrukcji 100 Uwaga! NIE WOLNO skakać do wnętrzna złożonych instrukcji warunkowych.
PASCAL Dr Anna Kwiatkowska.
Wprowadzenie do programowania w języku Turbo Pascal
Algorytmy Marek Pudełko
Pliki. Pliki Pliki jako pamięć nieulotna Pliki jako pamięć nieulotna Nazwy, atrybuty i prawa dostępu Nazwy, atrybuty i prawa dostępu atrybuty atrybuty.
Typy wyrażenia, schematy blokowe, writeln, readln, if, pętle
Podprogramy.
Typy złożone, case, stałe. Typ zbiorowy type typ_zb = set of typ_podstawowy; Typem podstawowym może być tylko typ porządkowy. Typem podstawowym może być
PROGRAMOWANIE STRUKTURALNE
PROGRAMOWANIE STRUKTURALNE WYKŁAD 2
ALGORYTMY.
Podstawy programowania
AWK Zastosowania Informatyki Wykład 1 Copyright, 2003 © Adam Czajka.
Programowanie imperatywne i język C Copyright, 2006 © Jerzy R. Nawrocki Wstęp do.
Podstawy programowania
Podstawy programowania
Programowanie strukturalne i obiektowe
Pliki tekstowe. Operacje na plikach. mgr inż. Agata Pacek.
Andrzej Jędryczkowski Nie da się napisać większego programu bez podziału go na części zwane podprogramami. Podprogram to wyróżniona część programu.
Turbo Pascal Turbo Pascal - jedna z popularniejszych implementacji kompilatorów języka PASCAL, zintegrowane srodowisko programistyczne, produkt firmy Borland.
Funkcje w Pascalu Przypomnienie wiadomości o procedurach Prowadzący: Anna Kaleta Piotr Chojnacki.
Algorytmy z przykładami w Turbo Pascal 7.0
20 września 2003r. Centrum Kształcenia Ustawicznego im. St. Staszica w Koszalinie Wstęp do algorytmiki Autor: Marek Magiera.
Podstawy programowania w języku C i C++
Struktura programu w Turbo Pascalu.
© A. Jędryczkowski – 2006 r. © A. Jędryczkowski – 2006 r.
Metody matematyczne w inżynierii chemicznej
Wyrażenia w Turbo Pascalu.
Procedury i funkcje.
Definicja pliku tekstowego Operacje wykonywane na plikach tekstowych
Pliki Pojęcie i rodzaje plików Definicja typu plikowego Operacje wykonywane na plikach elementowych.
Pliki tekstowe – A. Jędryczkowski © 2007 Turbo Pascal umożliwia wykorzystanie w programach plików tekstowych. Pliki takie zawierają informację niezakodowaną
1 Wykład 8 Podprogramy. 2 Pojęcie i istota stosowania dzielenie programu na części (logicznie spójne) - nazwane - niezależne od pozostałych części - z.
Programowanie strukturalne i obiektowe
Zbiory i rekordy mgr inż. Agata Pacek. Deklaracja typu zbiorowego (określa ilość elementów w zbiorze) type biegi=set of 0..6; Definiowanie zmiennej typu.
Programowanie strukturalne i obiektowe
Informatyka MPZI Wykład 4 Podprogramy Pliki Typ zbiorowy Rekurencja.
Informatyka MZT1 Wykład 6 Iteracje while i repeat Tablice Rekordy
Wykład 10 typ zbiorowy rekurencja.
Ogólna struktura programu w TP
Informatyka 2 MPDI Wykład 9 Delphi tablice, rekordy.
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski 1 informatyka +
Programowanie imperatywne i język C Copyright, 2007 © Jerzy R. Nawrocki Wstęp do.
Podsumowanie wiedzy MPDI2 sem.3 INFORMATYKA. tworzenie nowego pliku i katalogu, nawigacja po katalogach, listowanie zawartości katalogu, zmiana nazw,
Switch. Instrukcja switch Składnia instrukcji: switch (wyrażenie){ case wyrażenie_stałe1: ciąg instrukcji dla wariantu 1; break; case wyrażenie_stałe2:
P ASCAL Definicje, deklaracje, podstawowe instrukcje 1.
Wykład 1 Informatyka II MPZI2 sem.letni. Tablice Tablice deklarujemy array [ lista typów indeksów ] of typ bazowy (składowych) np. var t1,t2:array [1..5,
Zapis prezentacji:

Język PASCAL – podstawy Turbo Pascal: procedury, funkcje Język PASCAL – podstawy Turbo Pascal: procedury, funkcje. Przykłady programów geodezyjnych Cele nauczania: Podstawowe zasady programowania. Zastosowanie procedur i funkcji. Oprogramowanie prostych zadań z geodezji Osiągnięcia: Praktyczna znajomość elementów programowania w języku Pascal

Procedury i funkcje Wiele problemów algorytmicznych (programistycznych) łatwiej się rozwiązuje po podzieleniu ich na podproblemy (podprogramy). Takimi podprogramami w języku Pascal są procedury i funkcje. Dzięki procedurom i funkcjom program staje się czytelniejszy i krótszy - często występujące czynności są opatrzone nazwą i wywoływane w zależności od potrzeb. Języki programowania umożliwiające tworzenie programów z podprogramów, noszą nazwę języków strukturalnych.

Procedury Składnia definicji procedury: procedure nazwa (parametry); deklaracje; begin {treść procedury} end; Procedurę wywołujemy podając jej nazwę i ewentualnie parametry wywołania (w przypadku procedur z parametrami).

Przykłady – program bez procedury i z procedurą program procedury1; uses crt; var x,y,z : integer; {Procedura – bez parametrów} procedure podaj_dane; {Nagłówek procedury} begin writeln ('Podaj trzy liczby'); read (x); {treść procedury} read (y); read (z) end; {end ze średnikiem!!!} {Program główny} Begin clrscr; podaj_dane; {Procedura bez parametrów} writeln ('x=',x,' y=',y, ' z=',z); writeln ('Suma liczb ',x+y+z); podaj_dane; writeln ('Roznica liczb z-y-x=: ', z-y-x); readln; End. program bezprocedury; var x,y,z : integer; Begin writeln ('Podaj trzy liczby całkowite'); read (x); read (y); read (z); writeln ('Suma liczb: ',x+y+z); writeln ('Podaj trzy liczby'); writeln ('Roznica liczb: ', z-y-x); End. Powtarzanie tego samego schematu nie jest właściwym wyborem. Można temu zaradzić pisząc własną procedurę, która nie tylko ułatwi nam pracę, ale też skróci cały zapis. Procedurę umieszczamy ją przed programem głównym (przed Begin).

Przykład. Program z procedurą program Szlaczki; var i : integer; { licznik wierszy } procedure Szlaczek(Znak : char; Ile : integer); begin for i := 1 to Ile do { wypisz szlaczek } write(Znak); { złożony z iluś znaków } writeln end; for i := 1 to 20 do { wypisz 20 szlaczków } Szlaczek('*', i); end.

Begin {Wlasciwy program} start('Pierwiastki rownania kwadratowego'); program Rownkwadratowe; {program rozwiazuje rownanie kwadratowe} uses Crt; var a,b,c: real; procedure start(tytul:string); begin ClrScr; Writeln('Autor: Jan Anonim'); Writeln(tytul); Writeln end; procedure liczPierwiastki(a,b,c: real); var delta: real; Write('Rownanie '); delta:=b*b-4*a*c; if delta<0 then Writeln('nie ma pierwiastkow.') else if delta=0 then Writeln('ma jeden pierwiastek x1=',-b/(2*a):8:2) else {if delta >0} Writeln('ma dwa pierwiastki:'); Writeln('x1=',(-b-Sqrt(delta))/(2*a):8:2); Writeln('x2=',(-b+Sqrt(delta))/(2*a):8:2) end {delta>0} procedure czytajDane(var a,b,c: real); Write('Podaj wspolczynnik a: '); Readln(a); Write('Podaj wspolczynnik b: '); Readln(b); Write('Podaj wspolczynnik c: '); Readln(c) procedure czekaj; Writeln; Write('Nacisnij klawisz Enter.'); Readln procedure blad(komunikat: string); Writeln; Write(komunikat); czekaj; Halt Begin {Wlasciwy program} start('Pierwiastki rownania kwadratowego'); czytajDane(a,b,c); if a=0 then blad('Zle dane.'); liczPierwiastki(a,b,c); czekaj End.

Korzystanie z procedur Przy dużych programach korzystanie z procedur jest nieuniknione. Procedura, wygląda bardzo podobnie do programu. Procedura rozpoczyna się słowem procedure i kończy słowem end; (ze średnikiem). End. (z kropką) występuje tylko raz - na samym końcu programu głównego.

Funkcja Funkcja to procedura, która może zwracać jakąś wartość. Przy wywołaniu funkcji należy użyć specjalnej instrukcji przypisania: Zmienna:=nazwa_funkcji(parametry_aktualne); np. zmienna:=Moja_funkcja; lub np. wypisać na ekranie wartość jaką zwraca funkcja (czyli jaką oblicza): write (Moja_funkcja);

Ogólna postać funkcji w jezyku Pascal, wywołanie funkcji function nazwa (lista parametrów formalnych): typ_wyniku; {deklaracje-i-definicje-obiektów lokalnych: stałych, zmiennych i typów} begin {instrukcje-realizujące-treść funkcji} nazwa:=wynik end; Wywołanie funkcji: zmienna:=nazwa(lista parametrów aktualnych);

Przykład programu z funkcją – Wartosc_bezwzgl program Wartosc_Bezwzgl; var x: real; function bezw(a: real): real; begin if a>=0 then bezw:=a else bezw:=-a end; Begin write('Podaj liczbe: '); readln(x); writeln('Wartosc bezwgledna liczby ', x:0:2, ' wynosi: ', bezw(x):0:2); readln End.

program Bisekcja; { Program rozwiązuje równania nieliniowe metodą bisekcji } var a, b, c : real; { granice przedziału i punkt podziału eps : real; { dokładność } function f(x:real):real; { badana funkcja } begin f := 1 - exp(sin(x)*cos(x)); { treść funkcji } end; Begin writeln('Program znajduje miejsce zerowe funkcji'); writeln('w przedziale [a; b]'); write('Podaj wartosc a: '); { wprowadź granice przedzialu } readln(a); write('Podaj wartosc b: '); readln(b); write('Podaj dokladnosc: '); readln(eps); repeat c := (a + b)/2; { podziel przedział na pół } if (f(a)*f(c)) < 0 then b := c { funkcja ma przeciwne znaki w a i c } else a := c; { funkcja ma przeciwne znaki w b i c } writeln(c); until abs(f(c)) < eps; { badamy wartość bezwzględną! } writeln('Miejsce zerowe: c = ',c:12:8); readln; End.

PROCEDURE obliczenia; var r3: real; PROGRAM KULA0; { naglowek programu} { poczatek BLOKU DEKLARACJI} uses crt; VAR r : real; {promien - typu rzeczywistego} v : real; {objetosc - typu rzeczywistego} i: integer; {pomocnicza zmienna typu calkowitego} Procedure wstep; begin clrscr; writeln('Program Kula0.pas'); writeln('Program oblicza pole kuli o podanym promieniu r'); writeln('Wzor: V=4/3*Pi*r^3'); writeln('Nacisnij Enter'); readln; end; PROCEDURE dane; write('Promien kuli='); readln(r); end; {dane} PROCEDURE obliczenia; var r3: real; Begin {pocz bloku operacji procedury obliczenia} r3:=r*r*r; v:=4.0/3.0*pi*r3; End; PROCEDURE wyniki; Begin writeln; writeln('OBJETOSC KULI o promieniu ',r:7:3,' wynosi ',v:10:3); writeln('...Nacisnij ENTER...'); readln; End; {wyniki} { Koniec bloku deklaracji} { Blok operacji - zacznie sie} BEGIN { Kula - program glowny} wstep; dane; obliczenia; wyniki; END. { Kula} {Koniec bloku operacji}

BEGIN { Kula} wstep; dane; obliczenia; wyniki; zapiswyn; END. { Kula} PROGRAM KulaPlik; {zapis wynikow do pliku} uses crt; const wydruk='Wynik1.txt'; {plik wyników} VAR r : real; {promien} v : real; {objetosc} i: integer; {pomocnicza zmienna typu calkowitego} f: text; Procedure wstep; begin clrscr; writeln('Program Kula0.pas'); writeln('Program oblicza pole kuli o podanym promieniu r'); writeln('Wzor: V=4/3*Pi*r^3'); writeln('Program zapisuje wyniki do pliku: Wynik1.txt'); writeln('Nacisnij Enter'); readln; end; PROCEDURE dane; Begin clrscr; write('Promien kuli='); readln(r); end; {dane} PROCEDURE obliczenia; var r3: real; Begin {pocz bloku operacji procedury obliczenia} r3:=r*r*r; v:=4.0/3.0*pi*r3; End; PROCEDURE wyniki; writeln; writeln('OBJETOSC KULI o promieniu ',r:7:3,' wynosi ',v:10:3); writeln('...Nacisnij ENTER...'); readln; End; {wyniki} Procedure zapiswyn; begin assign(f,wydruk); rewrite(f); writeln(f,' Obliczenie objetosci kuli: V=4/3*Pi*r^3'); writeln(f,'Pi=',Pi:3:10, ' r=',r:5:3); writeln(f,'Objetosc kuli o prmieniu ', r:6:3,' = ',v:10:3); close(f); end; BEGIN { Kula} wstep; dane; obliczenia; wyniki; zapiswyn; END. { Kula}

PROCEDURE wyniki(promien,objetosc: real); Begin writeln; PROGRAM KULA; { naglowek programu} CONST PI= 3.1415926536; { gdyby Pi nie było w programie} VAR r : real; {promien - typu rzeczywistego} v : real; {objetosc - typu rzeczywistego} i: integer; PROCEDURE dane (VAR x: real); begin write('Promien='); readln(x); end; {dane} PROCEDURE obliczenia ( x: real; VAR y: real); { x,y - zmienne lokalne x-promien - przekazywany przea wartosc z programu glownego y-objetosc - przekazywany przez zmienna- na zewnatrz procedury do programu glown } var x3: real; { r*r*r - promien do potegi 3 - zmienna lokalna} Begin {pocz bloku operacji procedury obliczenia} x3:=x*x*x; y:=4.0/3.0*pi*x3; End; PROCEDURE wyniki(promien,objetosc: real); Begin writeln; writeln('OBJETOSC KULI o promieniu ',promien:7:3,' wynosi ',objetosc:10:3); writeln('...Nacisnij ENTER...'); readln; End; {wyniki} { Koniec bloku deklaracji} { Blok operacji - zacznie sie} BEGIN { Kula – program główny} dane(r); obliczenia(r,v); { r wchodzi do procedury, a wychodzi z niej v} wyniki(r,v); END. { Kula}

OBLICZENIA POLA PROSTYCH FIGUR GEOMETRYCZNYCH: TRÓJKĄTA, PROSTOKATA, TRAPEZU procedure ptrapezu; {Pole trapezu} var a, b,h, P: real; begin clrscr; writeln('Obliczenie pola prostokąta o bokach a i b i wysokosci h'); write('Podaj a, b, h (oddzielone spacja): '); readln(a, b, h); P:=0.5*a*b*h; writeln('Pole trapezu o bokach a = ', a:5:2, ' i b = ', b:5:3); writeln(' i wysokosci h = ', h:5:3, ' wynosi: ') ; writeln(' P = ', P:10:2); writeln; writeln('Nacisnij Enter'); readln; end; {Program glowny} Begin {Poczatek programu głównego} w:=0; koniec:=0; repeat clrscr; {poczatek repeat} writeln('Program Pola1.pas'); writeln('-----------------'); writeln('Obliczenie pol trójkąta, prostokąta, trapezu '); writeln; writeln('Opcje: '); writeln(' 1 - pole trójkąta na podstawie a i h'); writeln(' 2 - pole prostokąta na podstawie a i b'); writeln(' 3 - pole trapezu na podstawie a, b i h'); writeln(' 0 - koniec programu'); writeln; write('Wybierz opcje:1 ... 3 lub 0 - wyjscie z programu: '); readln(w); case w of 0: koniec:=1; 1: ptrojkata; 2: pprostokata; 3: ptrapezu; end; {end case} until koniec=1; {koniec repeat} End. {Koniec programu głównego} Program pola1; {Naglowek Program i nazwa programu} uses crt; {deklaracja biblioteki - m.in. do uruchomienia clrscr} {Zmienne} var w, koniec: integer; {zmienne calkowite} {Procedury} Procedure ptrojkata; {Pole trójkąta} var a, h, P: real; {zmienne} begin {poczatek procedury} clrscr; writeln('Obliczenie pola trojkata o podstawie a, wysokosci h'); write('a = '); readln(a); write('h = '); readln(h); P:=a*h/2; writeln('Pole trojkata o podstawie a = ', a:5:2, ' i wysokości h = ', h:5:3, ' = ', P:10:2); writeln; writeln('Nacisnij Enter'); readln; {czeka na naciśniecie Enter} end; {Koniec procedury} Procedure pprostokata; {Pole prostokąta} var a, b, P: real; begin writeln('Obliczenie pola prostokąta o bokach a i b'); write('Podaj boki: a i b (oddzielone spacja): '); readln(a, b); P:=a*b; writeln('Pole prostokąta o bokach a = ', a:5:2, ' i b = ', b:5:3, readln; end;

OBLICZENIE AZYMUTU I DŁUGOŚCI ZE WSPÓŁRZĘDNYCH Program azdlug; {Obliczenie azymutu i dlugosci ze wspolrzednych} uses CRT, dos; {deklaracja modułu CRT i DOS przy pomocy USES} var {deklaracja zmiennych} koniec, iw: integer; {zmienne typu integer - calkowite} rok,mc,dz,dzt: word; {rok,m_c,dzien,dzien_tyg} {--------- Procedury i funkcje -----------------} procedure czekaj; {Czeka na nacisniecie Enter i czysci ekran} var i: integer; {Deklaracja zmiennej i typu integer} begin {Poczatek procedury} writeln; write('Nacisnij <Enter> '); {Pisze na ekranie } readln; {Czeka na nacisniecie klawisza} clrscr; {Czysci ekran} end; {Koniec procedury} {Funkcja } FUNCTION dlug (dx: real; dy:real): real; {Funkcja o 2 parametrach: dx, dy typu real i zwraca wynik real} var d: real; {Zmienna dodatkowa w funkcji typu real} Begin d := dx * dx + dy * dy; {Kwadrat dlugosci} d := SQRT(d) {Pierwiastek z kwadratu dlugosci czyli dlugosc} dlug := d; { W funkcji musi byc podstawienie pod nazwe funkcji} end; Procedure DlFun; {Dlugosc z funkcji} var x1,y1, x2, y2, dx, dy, d1: real; Begin clrscr; writeln; writeln( 'Obliczenie dlugosci ze wspolrzednych (z funkcji)'); write('x1 = '); readln(x1); {Czytanie wspolrzednej x1 punktu pierwszego} write('y1 = '); {Czytanie wspolrzednej y1 punktu pierwszego} readln(y1); write('x2 = '); {Czytanie wspolrzednej x2 punktu drugiego} readln(x2); write('y2 = '); {Czytanie wspolrzednej y2 punktu drugiego} readln(y2); dx := x2 - x1; {Obliczenie dx} dy := y2 - y1; {Obliczenie dy} writeln('dx = ',dx:10:3,' dy = ',dy:10:3); d1 := dlug(dx, dy); {Dlugosc z funkcji dlug(dx,dy)} writeln('D = ', d1:10:3); {Wydruk dlug z dokl 10 przed kropka (ew spacje z przodu) i 3 miejsca po kropce} czekaj; {Wywolanie procedury czekaj} end; Str. 1

Str. 2 Procedure Dlugosci; var x1,y1, x2, y2, dx, dy, d1: real; i: integer; Begin clrscr; for i:=1 to 3 do writeln; {3 puste linie} writeln( 'Obliczenie dlugosci ze wspolrzednych '); write ('x1: '); readln(x1); write('y1: '); readln(y1); write('x2: '); readln(x2); write('y2: '); readln(y2); dx := x2 - x1; dy := y2 - y1; d1 := SQRT(dx * dx + dy * dy); writeln; writeln( 'D = ', d1:10:3); czekaj; end; procedure azymut; Var rg, rs, x1, y1, x2, y2, dx, dy, d, a, azg, azs, pi1: real; i: integer; Begin pi1 := 4.0 * arctan(1.0); {Pi obliczone, Pi jest w systemi} rg := 200.0 / pi; {Ro gradowe} rs := 180.0 / pi; {Ro stopniowe} clrscr; {Kasowanie ekranu} for i:=1 to 3 do writeln; {3 razy pusta linia na ekranie} writeln('Program oblicza dlugosc i azymut '); writeln; {pusta linia} writeln('Pi = ', pi, ' Pi_obl = ', pi1); writeln; writeln('Podaj x1 y1 x2 y2 (oddzielone spacja): '); readln(x1, y1, x2, y2); {Czytanie wspołrzednych 2 punktów} dx := x2-x1; { dx } dy := y2-y1; { dy} d :=dlug(dx, dy); {dlugosc} writeln('Wyniki: '); writeln('dx= ', dx:10:3, ' dy= ', dy:10:3, ' d=',d:10:3); if dx = 0 then {Badanie czy dx =0} begin if (dy>0) then {Jesli dx=0 i dy>0 to } a := pi / 2 else {Jesli dx=0 i dy<=0 to } a := 1.5 * pi; end else {Jesli dx <> 0} a := arctan(dy / dx); { obliczenie azymutu w radianach} if (dx < 0) then { Jesli dx<0 } a := a + pi else { Jesli dx >0} if (dy < 0) then {Jesli dx>0 i dy<0} a := a + 2 * pi; end; azg := a * rg; { obliczenie azymutu w gradach} azs := a * rs; { obliczenie azymutu w stopniach} writeln('dx = ', dx:10:3); writeln( 'dy = ', dy:10:3); writeln('azg [grad] =', azg:10:5); {Wydruk azymutu w grad z dokl: 10 poz. na czesc calk. i 5 po kropce dzies} writeln('azs [stopn]=', azs:10:5); writeln('Odleg z funkcji =', dlug(dx, dy):10:4); {Odleglosc obliczona z funckcji dlug(dx,dy)} czekaj; end; {Koniec procedury} Str. 2

writeln('Data: ',dz,' ',mc,' ',rok); {Wydruk daty} writeln; Begin {Obliczenie azymutu i długości ze współrzędnych - program główny} koniec := 0; clrscr; GetDate(rok,mc,dz,dzt); {Ściągniecie daty z systemu - rok, miesiąc, dzien., dzien. tygodnia} writeln('Data: ',dz,' ',mc,' ',rok); {Wydruk daty} writeln; writeln( ' Program DlugAz.pas'); while koniec <> 1 do {Dopóki zmienna koniec rożna od 1} begin {Początek while } repeat {Powtarzaj} writeln(' Obliczenie dlugosci lub azymutu ze wspolrzednych'); writeln(' 0 Koniec obliczen '); writeln(' 1 Dlugosci ze wspolrzednych'); writeln(' 2 Dlugosc z funkcji'); writeln(' 3 Azymut ze wspolrzednych'); write('Wybierz wariant: 0..2 ==> '); readln(iw); until (iw >= 0) and (iw <= 3); {Koniec powtarzaj aż wprowadzone iw >=0 i <= 3} CASE iw of {Przypadek iw – początek CASE} 0: koniec := 1; {przypadek 0 - koniec =1 czyli wyjście z programu} 1: Dlugosci; {Wywołanie procedury Dlugosci} 2: Dlfun; {Wywołanie procedury Dlfun} 3: Azymut; {Wywołanie procedury Azymut} END {case} end; {Koniec while - jeśli koniec =1 to przejście do następnej linii poniżej, wyczyszczenie ekranu i wyjście} End. {Koniec programu głównego} Str. 3