PP temat4, Podstawy programowania


PODSTAWY PROGRAMOWANIA

Laboratorium

Temat 4: Definiowanie i wywoływanie funkcji własnych

Zadania do wykonania:

  1. Napisz i zastosuj w programie funkcję, która rysuje na ekranie ramkę o zadanych współrzędnych lewego górnego (X1, Y1) oraz prawego dolnego rogu (X2, Y2) i zwraca wartość pola objętego ramką. Nagłówek funkcji: function Ramka(X1,Y1,X2,Y2:Byte):Word;

  2. Napisz i zastosuj w programie funkcję, która czyta z klawiatury N liczb i zwraca ich średnią wartość. Nagłówek funkcji: function Srednia(N:Byte):Real;

  3. Napisz i zastosuj w programie funkcję, która zwraca parzystą liczbę losową z przedziału A..B. Nagłówek funkcji: function Random_AB(A,B: Integer): Integer;

  4. Napisz i zastosuj w programie funkcję, która zwraca odległość pomiędzy dwoma punktami (X1,Y1) oraz (X2,Y2), leżącymi na płaszczyźnie XY. Nagłówek funkcji:

function Distance(X1,Y1,X2,Y2:Real):Real;

  1. Napisz i zastosuj w programie funkcję, która zwraca przybliżoną wartość całki z funkcji y=sin(x) w przedziale od 0 do Alfa. Nagłówek funkcji: function Calsin(Alfa:Real):Real;

  2. Napisz i zastosuj w programie funkcję, która zwraca wartość pierwiastka kwadratowego z X, obliczoną iteracyjnie z dokładnościa Eps. Do obliczeń wykorzystaj wzór Newtona: P:=(P*P+X)/(2*P);. Nagłówek funkcji:

function Pierwkwad(X,Eps:Real):Real;

  1. Napisz i zastosuj w programie funkcję, która oblicza i zwraca dziesiętną wartość N-pozycyjnej liczby dwójkowej, wprowadzanej z klawiatury cyfra po cyfrze za pomocą instrukcji Readkey. Nagłówek funkcji: function Bin_dec(N:Byte):Longint;

  2. Napisz i zastosuj w programie funkcję, która zwraca wartość silni swojego argumentu A. Nagłówek funkcji: function Silnia(A:Byte):Longint;

  3. Napisz i zastosuj w programie funkcję, która z dokładnością znajduje i zwraca przybliżoną wartość sumy szeregu: 1+1/3+1/5+1/7+... przy założeniu, że ostatni dodany wyraz szeregu jest jest nie mniejszy od Eps.

Nagłówek funkcji: function SumSzer(Eps:Real):Real;

  1. Napisz i wywołaj w programie funkcję, która zwraca N-ty wyraz szeregu Fibonacci: 1, 1, 2, 3, 5, 8, 13, 21, …Nagłówek funkcji: function Fibon(N:Byte):Longint;

  2. Napisz i zastosuj w programie funkcję, która oblicza iteracyjnie i zwraca W-tą potęgę liczby rzeczywistej X. (W jest całkowite, ujemne lub dodatnie). Nagłówek funkcji:

function Power(X:Real; W:Integer):Real;

  1. Napisz i zastosuj w programie funkcję, która rozszerza możliwości standardowej funkcji Readkey w taki sposób, że a/ pisze na ekranie monitora znak odczytany z klawiatury, b/ Akceptuje wyłącznie znaki zawarte w danym przedziale znaków od Zp do Zk. Nagłówek funkcji:

function Czyt_znak(Zp,Zk:Char):Char;

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

Materiał pomocniczy

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

Napisz i wykorzystaj w programie funkcję, która zwraca średnią arytmetyczną z dwóch liczb typu Integer;

Rozwiązanie tego zadania i komentarze umieszczono na odwrocie.


program Example1;

uses Crt;

function Srednia2(X,Y:Integer):Real; {Nagłówek funkcji}

var S:Real; {Zmienna lokalna}

begin

S:=(X+Y)/2 {Obliczenie średniej}

Srednia2:=S; {Przypisanie wyniku do nazwy funkcji}

end;

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

var A,B:Integer;

Wynik:Real;

begin

Clrscr;

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

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

Wynik:=Srednia2(A,B); {Wywołanie funkcji}

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

Readln;

end.

Komentarze

  1. W nagłówku funkcji piszemy jej nazwę. Potem w nawiasach listę argumentów i ich typów. Po każdym argumencie piszemy jego typ. Argumenty różnych typów oddzielamy średnikiem, a jednakowego typu - przecinkiem. Argumenty służą do przekazania funkcji danych we/wy. Żadnych innych wielkości poza danymi (np. zmiennych lokalnych) nie można umieszczać w nawiasie umieszczonym w nagłówku.

  2. Wszystkie zmienne potrzebne (tzw. zmienne lokalne funkcji) definiujemy w następnym wierszu po nagłówku, po słowie var. Zmienne lokalne umieszczone są w innym obszarze pamięci, niż zmienne globalne, a ich czas życia to tylko czas działania funkcji.

  3. Następną częścią definicji funkcji jest jej ciało, zamknięte w klamrze begin end. Po końcowym end pisze się średnik. Ciało funkcji to normalny program, wykonujący jakieś obliczenie i mający postać sekwencji odpowiednich instrukcji.

  4. W ciele funkcji musi wystąpić instrukcja przypisania, która nazwie funkcji przypisuje obliczony wynik. Jeżeli tej instrukcji nie będzie, to kompilator nie wykaże błędu, ale funkcja zamiast prawidłowego wyniku zwróci jakąś przypadkową wartość.

  5. Zdefiniowaną funkcję własną wywołuje się w programie własnym za pomocą jej nazwy, po której w nawiasach podaje się argumenty. Wywołuje się funkcję po prawej stronie instrukcji przypisania, by zwracaną przez nią wartość zapamiętać w odpowiedniej zmiennej programu głównego; można też użyc funkcji w wyrażeniu, lub jako argumentu innej funkcji lub procedury. Przy wywołaniu funkcji jej argumenty można podawać w postaci: stałych jawnych, zmiennych (które przechowują odpowiednie wartości), lub wyrażeń. Dla naszego przykładowego zadania te trzy sposoby mogłyby wyglądać następująco:

Wynik:=Srednia2(A,B); {Argumenty podawane za pomocą zmiennych A,B)

Wynik:=Srednia2(5,17); {Argumenty w postaci stałych jawnych}

Wynik:=Srednia2(Sqr(2)+1,Sqr(4)+1); {Argumenty w postaci wyrażeń)

  1. Funkcję wolno wywołać jako argument innej funkcji lub procedury. W przykładowym programie pokazanym powyżej, można by było zrezygnować ze zmiennej Wynik i wywołać funkcję Srednia2 wewnątrz instrukcji Write:

Write{'Srednia=',Srednia(A,B):0:3); {Wyprowadzenie wyniku}

7, Jeżeli funkcję wywołamy następująco: Srednia(A,B);

to kompilator nie wykaże błędu i funkcja wykona obliczenia, ale rezultat obliczeń funkcji nie zostanie przekazany do programu głównego. W czasie działania funkcji wynik zostaje zapamiętany w jej zmiennej lokalnej S. Jednak zmienne lokalne i argumenty funkcji istnieją tylko tak długo, jak długo funkcja działa i potem są niszczone. Dlatego w przypadku błędnego wywołania funkcji nie potrafimy odzyskać obliczonej przez nią wartości.



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 temat5, 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