Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
OpublikowałIzabella Łuszczek Został zmieniony 11 lat temu
1
Andrzej Jędryczkowski - 2006
2
Nie da się napisać większego programu bez podziału go na części zwane podprogramami. Podprogram to wyróżniona część programu komunikująca się z pozostałą jego częścią w ściśle określony sposób. Do komunikacji wykorzystywane są parametry. Podprogram może być wielokrotnie wywoływany z części głównej programu lub innych podprogramów.
3
Andrzej Jędryczkowski - 2006 W języku Turbo Pascal istnieją dwa rodzaje podprogramów: proceduryprocedury funkcjefunkcje
4
Andrzej Jędryczkowski - 2006 Ogólna postać procedury PROCEDURE nazwa_procedury(lista parametrów) {deklaracje stałych, zmiennych, typów – jak w programie} BEGIN {treść procedury – dowolne instrukcje} END; W procedurze nie musi występować lista parametrów
5
Andrzej Jędryczkowski - 2006 PROGRAM tablice2; USES CRT; TYPE wektor= ARRAY[1..10] OF INTEGER; VAR i:INTEGER; tab1:wektor; tab1:wektor;BEGINCLRSCR;RANDOMIZE; FOR i:=1 TO 10 DO {wypełniamy tablicę wart. losowymi} tab1[i]:=RANDOM(100); tab1[i]:=RANDOM(100); FOR i:=1 TO 10 DO {wyświetlamy elementy tablicy} WRITE(tab1[i], ); WRITE(tab1[i], ); REPEAT UNTIL KEYPRESSED; END. Przypomnijmy program z poprzednich zajęć Da się w nim wyróżnić kilka bloków jak wypełnianie i wyświetlanie.
6
Andrzej Jędryczkowski - 2006 Zrealizujmy program za pomocą procedur PROGRAM tablice2; USES CRT; TYPE wektor= ARRAY[1..10] OF INTEGER; VAR i:INTEGER; tab1:wektor; tab1:wektor; PROCEDURE wypelnij; BEGIN FOR i:=1 TO 10 DO {wypełniamy tablicę wart. losowymi} FOR i:=1 TO 10 DO {wypełniamy tablicę wart. losowymi} tab1[i]:=RANDOM(100); tab1[i]:=RANDOM(100);END; PROCEDURE wyswietl; BEGIN FOR i:=1 TO 10 DO {wyświetlamy elementy tablicy} WRITE(tab1[i], ); WRITE(tab1[i], );END;BEGINCLRSCR;RANDOMIZE;wypelnij;wyswietl; REPEAT UNTIL KEYPRESSED; END.
7
Andrzej Jędryczkowski - 2006 Pozornie bardziej skomplikowany program staje się jednak czytelniejszy i znacznie bardziej elastyczny. Procedury możemy wywoływać wielokrotnie w trakcie wykonania programu. Raz zdefiniowaną procedurę możemy używać w innych swoich programach. Podczas testowania i poprawiania programu poprawiamy tylko tę procedurę, która tego wymaga, nie zawracając uwagi na inne części programu. Struktura programu staje się przejrzysta. WNIOSKI
8
Andrzej Jędryczkowski - 2006 Ogólna postać funkcji FUNCTION nazwa_funkcji(lista parametrów):typ_wyniku {deklaracje stałych, zmiennych, typów – jak w programie} BEGIN {treść funkcji – dowolne instrukcje} nazwa_funkcji:=wynik; END; W funkcji nie musi występować lista parametrów. Musi nastąpić natomiast przypisanie wyniku na nazwę funkcji!!!
9
Andrzej Jędryczkowski - 2006 Wywołanie funkcji wygląda nieco inaczej niż procedury. Wywołując funkcję w programie głównym bądź podprogramie można to zrobić np.. tak: WRITELN(nazwa_funkcji(parametry));zmienna:=nazwa_funkcji(parametry); Nie można natomiast wywoływać jej tak jak w przypadku procedury!!!
10
Andrzej Jędryczkowski - 2006
11
Parametry opisane w nagłówku procedury czy funkcji noszą miano parametrów formalnych. W momencie wywołania procedury czy funkcji parametry staja się parametrami aktualnymi. Istnieje dwa sposoby przekazania parametru do podprogramu: 1.przez wartość 2.przez adres (referencje)
12
Andrzej Jędryczkowski - 2006 Przykłady Nagłówek procedury przyjmującej parametr przez wartość: PROCEDURE nazwa(parametr:TYP); W tym przypadku przekazywany parametr może być dowolnie zmieniany przez procedurę, ale po wyjściu z niej będzie miał taką samą wartość jak przed wywołaniem procedury!!!
13
Andrzej Jędryczkowski - 2006 Przykłady Nagłówek procedury przyjmującej parametr przez adres (referencje): PROCEDURE nazwa( VAR parametr:TYP); W tym przypadku przekazywany parametr może być dowolnie zmieniany przez procedurę, ale po wyjściu z niej będzie miał taką wartość jaką nada mu procedura!!!
14
Andrzej Jędryczkowski - 2006 Przykłady PROGRAM test1; USES CRT; VAR i:INTEGER; PROCEDURE zmien(c:INTEGER); BEGIN WRITELN(wartosc parametru po wejściu do proc.:,c); WRITELN(wartosc parametru po wejściu do proc.:,c); c:=c+5; c:=c+5; WRITELN(wartosc parametru po dzialaniu:,c); WRITELN(wartosc parametru po dzialaniu:,c);END;BEGINCLRSCR; WRITE(podaj wartosc i:);READLN(i); WRITELN(wartosc i przed wywolaniem procedury:,i); zmien(i); WRITELN(wartosc i po wyjsciu z procedury:,i); REPEAT UNTIL KEYPRESSED; END. Uruchom program i zapisz wyniki!!!
15
Andrzej Jędryczkowski - 2006 Przykłady PROGRAM test1; USES CRT; VAR i:INTEGER; PROCEDURE zmien(VAR c:INTEGER); BEGIN WRITELN(wartosc parametru po wejściu do proc.:,c); WRITELN(wartosc parametru po wejściu do proc.:,c); c:=c+5; c:=c+5; WRITELN(wartosc parametru po dzialaniu:,c); WRITELN(wartosc parametru po dzialaniu:,c);END;BEGINCLRSCR; WRITE(podaj wartosc i:);READLN(i); WRITELN(wartosc i przed wywolaniem procedury:,i); zmien(i); WRITELN(wartosc i po wyjsciu z procedury:,i); REPEAT UNTIL KEYPRESSED; END. Zmień i uruchom program. Zapisz i porównaj wyniki!!!
16
Andrzej Jędryczkowski - 2006 Ćwiczenia Napisz program, który stworzy tablicę, wypełni ją losowa zawartością oraz zrealizuje następujące funkcje: a)policzy sumę elementów; b)znajdzie element największy; c)znajdzie element największy. Wypełnianie, sumowanie i szukanie elementów maja być zrealizowane za pomocą procedur bądź funkcji.
17
Andrzej Jędryczkowski - 2006
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.