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.

Slides:



Advertisements
Podobne prezentacje
Funkcje w PHP ABK.
Advertisements

Katarzyna Szafrańska kl. II ti
Sortowanie przez scalanie
Język C/C++ Funkcje.
Rekurencja 1 Podprogram lub strukturę danych nazywamy rekurencyjną, (recursive subprogram, recursive data structure) jeżeli częściowo składa się z samej.
Język ANSI C Funkcje Wykład: Programowanie komputerów
Prowadzący: mgr inż. Elżbieta Majka
PASCAL (3) dr Anna Kwiatkowska.
Programowanie I Rekurencja.
typy całkowite (całkowitoliczbowe)
PROGRAMOWANIE STRUKTURALNE
formatowanie kodu źródłowego
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ęść 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.
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 5: Typy porządkowe, wyliczeniowe i okrojone. Definiowanie.
Rekurencja Copyright, 2000 © Jerzy R. Nawrocki Wprowadzenie do informatyki Wykład.
Rekurencja Copyright, 2001 © Jerzy R. Nawrocki Wprowadzenie do informatyki Wykład.
Rekursja Copyright, 2004 © Jerzy R. Nawrocki Teoretyczne podstawy informatyki.
Podstawy informatyki Rekurencja i rekurencja Grupa: 1A
Kurs Pascala – spis treści
1 Dygresja: cztery płyty główne…. 2 Dygresja: osobliwości C /* cos o nieistniejacym typie Boolean */ /* oraz o operatorze przecinkowym */ #include int.
Podprogramy 1 W Adzie mamy dwa rodzaje podprogramów (subprograms, subroutines): funkcje (functions) i procedury (procedures) Deklaracja i treść funkcji 
Ogólne jednostki programowe 1
Tablice jednowymiarowe 1
Wykład 2 struktura programu elementy języka typy zmienne
PASCAL Dr Anna Kwiatkowska.
Wprowadzenie do programowania w języku Turbo Pascal
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 WYKŁAD 2
Podstawy programowania
Podstawy programowania
Podstawy programowania
Rekurencja.
Język PASCAL – podstawy Turbo Pascal: procedury, funkcje
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.
Funkcje w Pascalu Przypomnienie wiadomości o procedurach Prowadzący: Anna Kaleta Piotr Chojnacki.
20 września 2003r. Centrum Kształcenia Ustawicznego im. St. Staszica w Koszalinie Wstęp do algorytmiki Autor: Marek Magiera.
Struktura programu w Turbo Pascalu.
© A. Jędryczkowski – 2006 r. © A. Jędryczkowski – 2006 r.
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.
Jerzy F. Kotowski1 Informatyka I Wykład 8 STRUKTURA PROGRAMU n Funkcje n Klasy zmiennych n Projekt.
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.
Informatyka MPZI Wykład 4 Podprogramy Pliki Typ zbiorowy Rekurencja.
Przekazywanie parametrów do funkcji oraz zmienne globalne i lokalne
Wykład 10 typ zbiorowy rekurencja.
Ogólna struktura programu w TP
Informatyka 2 MPDI Wykład 9 Delphi tablice, rekordy.
Programowanie proceduralne Podstawy Programowania dla geoinformatyków Wykład 3 Rafał Witkowski, 2015.
Rekurencja.
Podsumowanie wiedzy MPDI2 sem.3 INFORMATYKA. tworzenie nowego pliku i katalogu, nawigacja po katalogach, listowanie zawartości katalogu, zmiana nazw,
Programowanie I Rekurencja.
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,
Algorytmy. Co to jest algorytm? Przepis prowadzący do rozwiązania zadania.
Rozdział 5 REKURENCJA.
Współprogramy IV.
Programowanie I Rekurencja.
Dane, zmienne, instrukcje
Zapis prezentacji:

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

Wykorzystanie procedur i funkcji Definicja procedury lub funkcji zamieszona w części {definicje i deklaracje} naszego programu może być przez nas wykorzystana wielokrotnie w części {instrukcje} naszego programu. Aby wykonać czynności opisane przez procedurę, należy użyć instrukcji wywołania procedury, która ma postać: nazwa-procedury (lista-parametrów-aktualnych); nazwa-procedury to identyfikator, który pozwala zidentyfikować daną procedurę lista-parametrów-aktualnych to zestaw aktualnych danych dla procedury i obiektów, za pomocą których zwrócone będą wyniki jej działania (może jej nie być, gdy procedura nie ma parametrów !) Parametry aktualne muszą wystąpić w tej samej ilości i kolejności, a także muszą być tych samych typów, co parametry formalne podane w definicji procedury.

Przykład 1: program pr1; {$APPTYPE CONSOLE} uses SysUtils; var x, y, z : integer; procedure wieksza (a, b : integer; var max : integer); {deklaracja procedury znajdowania większej z dwóch podanych liczb} begin if a>b then max := a else max := b; end; begin readln (x); readln (y); wieksza (x, y, z); {wywołanie procedury wieksza} writeln (wieksza liczba to:, z); readln; end.

Przykład 2: program pr2; {$APPTYPE CONSOLE} uses SysUtils; var n, silnia : integer; procedure iloczyn (n : integer; var il : integer); {procedura znajdowania iloczynu il = 1*2*3*…*n dla danego n} var i : integer; begin il := 1; for i:=1 to n do il := il*i; end; begin readln (n); iloczyn (n, silnia); {wywołanie procedury iloczyn} writeln (iloczyn liczb to:, silnia); readln; end.

Aby wykonać czynności prowadzące do uzyskania jednego, konkretnego wyniku, opisane przez funkcję, należy wywołać tę funkcję. Wywołanie funkcji ma postać: nazwa-funkcji (lista-parametrów-aktualnych); nazwa-funkcji to identyfikator, który pozwala zidentyfikować daną funkcję, ten identyfikator zwraca wynik działania funkcji, który jest takiego typu, jak określono to w definicji funkcji podając typ-wyniku, jest to wynik z ostatniego wykonania instrukcji nazwa-funkcji := wyrażenie w części {treść funkcji} lista-parametrów-aktualnych to zestaw aktualnych danych dla funkcji (może jej nie być, gdy funkcja nie ma parametrów !) Wywołanie funkcji zwykle ma miejsce w wyrażeniu po prawej stronie symbolu := w instrukcji przypisania postaci: zmienna := nazwa-funkcji (lista-parametrów-aktualnych); Parametry aktualne muszą wystąpić w tej samej ilości i kolejności, a także muszą być tych samych typów, co parametry formalne podane w definicji funkcji. Zgodnie z tymi zasadami wywołujemy także funkcje standardowe.

Przykład 1: program pr3; {$APPTYPE CONSOLE} uses SysUtils; var x, y, z : integer; function max (a, b : integer) : integer; {funkcja zwracająca jako wynik większą z dwóch podanych liczb} begin if a>b then max := a else max := b; end; begin readln (x); readln (y); z := max (x, y); {wywołanie funkcji max} writeln (wieksza liczba to:, z); readln; end.

Przykład 2: program pr4; {$APPTYPE CONSOLE} uses SysUtils; var n, wynik : integer; function silnia (n : integer) : integer; {funkcja zwracająca jako wynik iloczyn 1*2*3*…*n dla danego n} var i, il : integer; begin il := 1; for i:=1 to n do il := il*i; silnia := il end; begin readln (n); wynik := silnia (n); {wywołanie funkcji silnia} writeln (iloczyn liczb to:, wynik); readln; end.

Przekazywanie parametrów i wyników W momencie zakończenia swego działania procedura przekazuje (zwraca) wyniki do programu przez parametry aktualne, natomiast funkcja przekazuje (zwraca) wynik przez nazwę funkcji. Program przekazuje dane do procedury lub funkcji przez parametry. W zależności od sposobu, w jaki przekazywane są dane i wyniki, parametry dzielimy na parametry przekazywane przez: - wartość - zmienną określonego typu Możliwe są jeszcze inne sposoby przekazywania parametrów.

Parametry przekazywane przez wartość Parametr jest przekazywany przez wartość, gdy na liście parametrów formalnych w definicji procedury lub funkcji nie jest poprzedzony słowem kluczowym var. Parametrem aktualnym może być wówczas dowolne wyrażenie, typ tego wyrażenia musi być zgodny z typem odpowiadającego mu parametru formalnego. Parametr formalny traktowany jest w części {treść procedury} lub {treść funkcji} jak lokalny obiekt (nie istnieje poza procedurą lub funkcją), a wartość parametru aktualnego jest wyłącznie początkową wartością tego obiektu, przypisywaną mu w momencie wywołania procedury lub funkcji. Zatem parametr przekazywany przez wartość nie może być nośnikiem wyniku.

Parametry przekazywane przez zmienną określonego typu Parametr jest przekazywany przez zmienną określonego typu, gdy na liście parametrów formalnych w definicji procedury lub funkcji jest poprzedzony słowem kluczowym var. Parametr aktualny musi być zmienną takiego samego typu, jaki posiada odpowiadający mu parametr formalny. Parametr formalny jest zastępowany w części {treść procedury} lub {treść funkcji} przez parametr aktualny (odwołanie do niego) i na nim, wykonywane są wszelkie działania w procedurze lub funkcji. Zatem jedynie parametr przekazywany przez zmienną określonego typu może być nośnikiem wyniku.

Rekurencja Jedną z bardziej użytecznych własności wybranych algorytmów jest rekurencja, czyli zdolność do wywoływania samego siebie (ze zmienionymi parametrami). Algorytmy rekurencyjne zapisujemy w postaci rekurencyjnych procedur lub funkcji. W części {treść procedury} lub {treść funkcji} występuje wywołanie tejże procedury lub funkcji z odpowiednimi parametrami aktualnymi. Algorytm rekurencyjny można w wielu przypadkach zastąpić, równoważnym mu, algorytmem iteracyjnym, w którym występują pętle. Rekurencja jest narzędziem silnym i użytecznym, ale należy ją stosować z rozwagą.

Przykłady algorytmów rekurencyjnych: - obliczanie n! = 1*2*…*n, (0!=1) wg wzorów: silnia(0)=1 silnia(n)=n*silnia(n-1) - obliczanie n-tej potęgi liczby x wg wzorów: potęga(x,0)=1 potęga(x,n)=x*potęga(x,n-1) - obliczanie n-tego wyrazu ciągu Fibonacciego: F(0)=0 F(1)=1 F(n)=F(n-1)+F(n-2) - przenoszenie krążków dla wież Hanoi

Algorytm obliczania n! = 1*2*…*n function silnia (n: integer) : integer; begin if n=0 then silnia := 1 else silnia := n*silnia(n-1); end; Algorytm obliczania n-tego wyrazu ciągu Fibonacciego function Fib(n: integer) : integer; begin if n=0 then Fib := 0 else if n=1 then Fib := 1 else Fib := Fib(n-1) + Fib(n-2); end;