PP temat5, Podstawy programowania


PODSTAWY PROGRAMOWANIA

Laboratorium

Temat 5: Definiowanie i wywoływanie procedur własnych

Zadania do wykonania:

  1. Napisz i zastosuj w programie procedurę, która rysuje na ekranie ramkę o zadanych współrzędnych lewego górnego (X1, Y1) oraz prawego dolnego rogu (X2, Y2) i przekazuje przez argument wyjściowy wartość pola objętego ramką. Nagłówek:

procedure Ramka(X1,Y1,X2,Y2:Byte; var S:Word);

  1. Napisz i zastosuj w programie procedurę, która czyta z klawiatury N liczb, a następnie przekazuje przez argumenty wyjściowe ich sumę oraz średnią wartość. Nagłówek:

procedure SumSred(N:Byte; var Suma:Word; var Sr:Real);

  1. Napisz i zastosuj w programie procedurę, która przekazuje przez argument wyjściowy parzystą liczbę losową typu Integer, zawarta w przedziale A..B. Nagłówek:

procedure Random_AB(A,B: Integer; var L:Integer);

  1. Napisz i zastosuj w programie procedurę, która oblicza i przekazuje przez argument wyjściowy odległość pomiędzy dwoma punktami (X1,Y1) oraz (X2,Y2), leżącymi na płaszczyźnie XY. Nagłówek : procedure Distance(X1,Y1,X2,Y2:Real; var D:Real);

  2. Napisz i zastosuj w programie procedurę, która oblicza przybliżoną wartość całki z funkcji y=sin(x) w przedziale od 0 do Alfa. Nagłówek:

procedure Calsin(Alfa:Real; var C:Real);

  1. Napisz i zastosuj w programie procedurę, która oblicza i przekazuje przez argument wyjściowy wartość pierwiastka kwadratowego z X, obliczoną iteracyjnie z dokładnością Eps. Do obliczeń wykorzystaj wzór Newtona: P:=(P*P+X)/(2*P);. Nagłówek:

procedure Pierwkwad(X,Eps:Real; var P:Real);

  1. Napisz i zastosuj w programie procedurę, która oblicza i przekazuje przez argument wyjściowy dziesiętną wartość N-pozycyjnej liczby dwójkowej, wprowadzanej z klawiatury cyfra po cyfrze za pomocą instrukcji Readkey. Nagłówek:

procedure Bin_dec(N:Byte; var X:Longint);

  1. Napisz i zastosuj w programie procedurę, która oblicza i przekazuje przez argument S wartość silni argumentu A. Nagłówek: procedure Silnia(A:Byte; var S:Longint);

  2. Napisz i zastosuj w programie procedurę, która z dokładnością Eps znajduje i przekazuje przez argument wyjściowy przybliżoną wartość sumy szeregu: 1+1/3+1/5+1/7+...

Nagłówek: procedure SumSzer(Eps:Real; var Suma:Real);

  1. Napisz i wywołaj w programie procedurę, która znajduje i przekazuje przez argument wyjściowy N-ty wyraz szeregu Fibonacci: 1, 1, 2, 3, 5, 8, 13, 21, …Nagłówek:

procedure Fibon(N:Byte; var W:Longint);

  1. Napisz i zastosuj w programie procedurę, która oblicza iteracyjnie i przekazuje przez argument wyjściowy W-tą potęgę liczby rzeczywistej X. (W jest całkowite, ujemne lub dodatnie). Nagłówek: procedure Power(X:Real; W:Integer; var P:Real);

  2. Napisz i zastosuj w programie procedurę, która tak długo powtarza pobieranie z klawiatury liczby typu Integer, dopóki jej wartość nie znajdzie się w dopuszczalnym przedziale A..B. Odczytana liczba zostaje przekazana przez argument wyjściowy. Nagłówek:

procedure Czyt_liczbe(A,B:Integer; var L:Integer);

Uwaga: Tylko procedury z zadań 1, 7 oraz 12 mogą wyprowadzać dane na ekran. Tylko procedury z zadań 2, 7 oraz 12 mogą czytać dane z klawiatury. W pozostałych zadaniach przygotowanie danych dla procedury i wyprowadzanie na ekran wyników obliczonych przez procedurę musi odbywać się w programie głównym!

Materiał pomocniczy

Definiowanie i użycie procedury własnej pokażemy, rozwiązując następujące proste zadanie:

Napisz i wykorzystaj w programie procedurę, która oblicza i przekazuje przez argument wyjściowy średnią arytmetyczną trzech liczb typu Integer;

Rozwiązanie tego zadania i komentarze umieszczono poniżej.

program Example2;

uses Crt;

procedure Sumsred(X,Y,Z:Integer; var Srednia:Real); {Nagłówek fuinkcji}

var Suma:Longint; {Zmienna lokalna}

begin

Suma:=X+Y+Z; {Obliczenie sumy}

Srednia:=Suma/3; {Obliczenie średniej i jej przekazanie na wyjście }

end;

{program główny===================}

var A,B,C:Integer;

Wynik:Real;

begin

Clrscr;

Write('Podaj argumenty A,B,C: `);

Readln(A,B,C); {Wczytanie argumentów procedury}

Sumsred(A,B,C,Wynik); {Wywołanie procedury}

Write{'Srednia=',Wynik:0:3); {Wyprowadzenie wyniku}

Readln;

end.

Komentarze

  1. W nagłówku procedury piszemy jej nazwę. Potem w nawiasach listę argumentów. Po każdej liście argumentów piszemy odpowiedni typ. Listy argumentów (lub argumenty) różnych typów oddzielamy średnikiem. Średnikiem też oddziela się argumenty wejściowe od wyjściowych. Argumenty wejściowe służą do przekazania funkcji danych wejściowych do obliczeń. Argumenty wyjściowe przekazują wyniki działania procedury do programu głównego. Każdy argument wyjściowy musi być poprzedzony słowem var. Żadnych innych wielkości poza argumentami we/wy nie należy umieszczać w nagłówku.

  2. Wszystkie zmienne potrzebne do obliczeń deklarujemy jako zmienne lokalne w następnym wierszu po nagłówku, po słowie var. Zmienne lokalne i argumenty wejściowe umieszczone są w innym obszarze pamięci, niż zmienne globalne. Ich czas życia to tylko czas działania funkcji. Zakresem ważności ich deklaracji jest ciało procedury. W tym zakresie zmienna lokalna przesłania zmienną programu głównego, mającą tę samą nazwę. W ciele procedury należy używać wyłącznie argumentów i zmiennych lokalnych. Użycie zmiennej lub stałej globalnej w procedurze własnej jest poważnym błędem, mimo że procedura będzie w takim przypadku działać poprawnie.

  3. Zmienne lokalne i argumenty wejściowe procedury istnieją one tylko w czasie działania procedury, a po jej zakończeniu są natychmiast usuwane. Dlatego przez argumenty wejściowe nie można do programu głównego przekazać żadnych wyników. Argument poprzedzony słowem var jest argumentem wyjściowym. Wszelkie odwołania w ciele procedury do takiego argumentu dotyczą tej zmiennej programu głównego, której użyto na pozycji argumentu wyjściowego w instrukcji wywołania procedury. Na przykład, w pokazanym powyżej programie procedura Sumsred, zamiast do argumentu Srednia, będzie w rzeczywistości odwoływać się do zmiennej Wynik programu głównego.

  4. Instrukcja wywołania procedury własnej, użyta w programie głównym, to po prostu nazwa tej procedury i dalej, w nawiasach, lista argumentów we/wy (bez określania typów!). Argumenty oddziela się przecinkami, a ich kolejność i typy muszą być takie, jak w definicji procedury. Argumenty wejściowe w instrukcji wywołania mogą mieć (podobnie, jak w przypadku funkcji) postać zmiennych, stałych jawnych lub wyrażeń. Natomiast argumenty wyjściowe muszą mieć zawsze postać zmiennych programu głównego.



Wyszukiwarka

Podobne podstrony:
PP temat6, Podstawy programowania
PP 11, Podstawy programowania
PP W7, Podstawy programowania
PP W6, Podstawy programowania
PP temat3, Podstawy programowania
PP W1, Podstawy programowania
PP W4, Podstawy programowania
PP 10, Podstawy programowania
PP W5, Podstawy programowania
PP W8, Podstawy programowania
PP temat2, Podstawy programowania
PP W9, Podstawy programowania
PP temat4, Podstawy programowania
PP W2, Podstawy programowania
PP W10, Podstawy programowania
PP temat6, Podstawy programowania
zasady zaliczeń PP IG, Politechnika Białostocka, ZiIP (PB), Semestr 1, Podstawy programowania, Progr
pp projekty2004, wisisz, wydzial informatyki, studia zaoczne inzynierskie, podstawy programowania

więcej podobnych podstron