Informatyka 1. Procedury i funkcje, struktura programu w Pascalu

Podobne dokumenty
Informatyka 1. Wyrażenia i instrukcje cd., ręczna symulacja, operacje wejścia/wyjścia

Informatyka 1. Wyrażenia i instrukcje, złożoność obliczeniowa

Informatyka 1. Przetwarzanie tekstów

Algorytmy i struktury danych

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Lekcja 6: Pascal. Procedura i funkcja

PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy.

Informatyka 1. Algorytm, podstawowe notacje, typy danych i wyrażenia

Wstęp do programowania. Procedury i funkcje. Piotr Chrząstowski-Wachtel

Instrukcje podsumowanie. Proste: - przypisania - wejścia-wyjścia (read, readln, write, writeln) - pusta - po prostu ; (średnik) Strukturalne:

Informatyka 1. Dokumentacja programu, moduły programowe, typy tablicowe

Programowanie w Turbo Pascal

Wykład IV Algorytmy metody prezentacji i zapisu Rzut oka na język PASCAL

Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja cz. 1

Referencje do zmiennych i obiektów

20. Pascal i łączenie podprogramów Pascala z programem napisanym w C

Procedury i funkcje. Przykład programu z procedurą. Definicja. Cechy procedury

Podstawy programowania

Wrocław, dn. 19 kwietnia 2006 roku. Anna Kaleta Piotr Chojnacki IV rok, informatyka chemiczna Liceum Ogólnokształcące nr 10 we Wrocławiu

3. Podstawowe funkcje mamematyczne. ZAPOZNAĆ SIĘ!!!

DIAGRAMY SYNTAKTYCZNE JĘZYKA TURBO PASCAL 6.0

Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja, - liczby losowe

INSTRUKCJA PUSTA. Nie składa się z żadnych znaków i symboli, niczego nie robi. for i := 1 to 10 do {tu nic nie ma};

Podstawy Programowania. Składnia wyrażeń i instrukcji, złożoności obliczeniowej, operacje wejścia i wyjścia, definicja

Wprowadzenie do szablonów szablony funkcji

Jerzy Nawrocki, Wprowadzenie do informatyki

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe

Wykład VI PASCAL procedury i funkcje przekazywanie parametrów,

Wprowadzenie komentarzy do programu

Zasady Programowania Strukturalnego

procesów Współbieżność i synchronizacja procesów Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

Procedury i funkcje - powtórzenie i uzupełnienia. Przykład funkcji potęgowanie przy wykładniku naturalnym

Wprowadzenie do szablonów szablony funkcji

FUNKCJA REKURENCYJNA. function s(n:integer):integer; begin if (n>1) then s:=n*s(n-1); else s:=1; end;

typ zakres sposob zapamietania shortint integer bajty (z bitem znaku) longint byte word

Jerzy Nawrocki, Wprowadzenie do informatyki

Informatyka 1. Rekordy, przeszukiwanie i sortowanie tablic

Pascal - wprowadzenie

Pola i metody statyczne

LibreOffice Calc VBA

Przesłanianie nazw, przestrzenie nazw

2.Sprawdzanie czy podana liczba naturalna jest pierwsza Liczba pierwsza to liczba podzielna tylko przez 1 i przez siebie.

Informatyka 1. Wprowadzenie

Wstęp do programowania

TEMAT: Podejmowanie decyzji w programie instrukcja warunkowa (IF).

ForPascal Interpreter języka Pascal

Podprogramy. Procedury

Wyliczanie wyrażenia obiekty tymczasowe

Analiza leksykalna 1. Języki formalne i automaty. Dr inż. Janusz Majewski Katedra Informatyki

Wstęp do programowania. Drzewa. Piotr Chrząstowski-Wachtel

Elementy języka C. ACprogramislikeafastdanceonanewlywaxeddancefloorbypeople carrying razors.

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

Język programowania PASCAL

Wykład I Cyfrowa reprezentacja informacji Algorytmy metody prezentacji i zapisu Tablice (wstęp) Rzut okiem na języki programowania

Podstawy programowania

Lista dwukierunkowa - przykład implementacji destruktorów

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Podstawy VBA cz. 1. Programowanie komputerowe

INSTRUKCJE PĘTLI, INSTRUKCJA WYBORU. Instrukcja pętli For to do

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++

Wprowadzenie do programowania współbieżnego

OPERACJE NA PLIKACH. Podstawowe pojęcia:

Wstęp do programowania. Różne różności

Planowanie eksperymentu 2 (k p) w 2 r blokach. Stanisław Jaworski, Wojciech Zieliński

Matematyka dyskretna - wykład - część Podstawowe algorytmy kombinatoryczne

Algorytmy. Programowanie Proceduralne 1

PASCAL WPROWADZENIE. 1. Uruchom kompilator. 2. Struktura programu w Pascalu. 3. Komentarze

Wstęp do programowania

Visual Basic for Application (VBA)

INFORMATYKA W SZKOLE. Podyplomowe Studia Pedagogiczne. Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227

Wprowadzenie do programowania w języku C

WIADOMOŚCI WSTĘPNE WPROWADZENIE DO JĘZYKA TURBO PASCAL. Klawisze skrótów. {to jest właśnie komentarz, moŝna tu umieścić dowolny opis}

Bloki anonimowe w PL/SQL

Informatyka 1. Rekordy, przeszukiwanie i sortowanie tablic

Przykład programu Rozwiązanie równania postaci:

Materiały do laboratorium MS ACCESS BASIC

Podstawy programowania

Programowanie obiektowe

Analiza leksykalna 1. Teoria kompilacji. Dr inż. Janusz Majewski Katedra Informatyki

Elementy metod numerycznych - zajęcia 9

Instrukcja standardowa Writeln

KURS PASCAL A. 1.Wprowadzenie

INSTRUKCJA ITERACYJNA REPEAT. repeat Instrukcja_1; Instrukcja_2; {... } Instrukcja_N; until wyr ; INSTRUKCJA ITERACYJNA WHILE

Pascal. 1. Pliki tekstowe. Przykład 1.1. Zapis do pliku tekstowego

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Konstrukcja alternatywy

Style programowania - krótki przeglad

1 Wprowadzenie. program t e s t 3 ; begin. Polecenie program. Różnice między poleceniami write i writeln. writeln ( Witaj, a ) ; end.

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja. 2. Schemat blokowy przedstawia algorytm obliczania

Języki skryptowe w programie Plans

Algorytmy. Programowanie Proceduralne 1

Algorytmika i Programowanie VBA 1 - podstawy

Wstęp do informatyki

ALGORYTMY Algorytm poprawny jednoznaczny szczegółowy uniwersalny skończoność efektywność (sprawność) zmiennych liniowy warunkowy iteracyjny

Podstawy programowania 2. Temat: Wprowadzenie do wskaźników. Przygotował: mgr inż. Tomasz Michno

Informatyka 1. Wprowadzenie

Szablony funkcji i szablony klas

Wstęp do informatyki- wykład 12 Funkcje (przekazywanie parametrów przez wartość i zmienną)

Komputerowe systemy sterowania

W PostgreSQL mamy do dyspozycji nie tylko funkcje wbudowane, ale również możemy tworzyć własne. Są one zapisywane w tabeli systemowej pg_proc.

Transkrypt:

Informatyka 1 Wykład V Procedury i funkcje, struktura programu w Pascalu Robert Muszyński ZPCiR IIAiR PWr Zagadnienia: deklaracje procedury i funkcji, parametry procedur i funkcji, reguły użycia parametrów VAR, podprogramy, struktura programu w Pascalu. Copyright c 2001 2006 Robert Muszyński Niniejszy dokument zawiera materiały do wykładu na temat podstaw programowania w językach wysokiego poziomu. Jest on udostępniony pod warunkiem wykorzystania wyłącznie do własnych, prywatnych potrzeb i może być kopiowany wyłącznie w całości, razem ze stroną tytułową. Skład FoilTEX

Procedury i funkcje, struktura programu w Pascalu 1 Przykład procedury PROCEDURE CzyscEkran(LiczbaLinii: INTEGER); FOR i := 1 TO LiczbaLinii DO WRITELN; Przykład wywołania: CzyscEkran(32); Terminologia: parametry formalne LiczbaLinii, parametry aktualne 32.

Procedury i funkcje, struktura programu w Pascalu 2 Przykłady funkcji FUNCTION Max(a,b:INTEGER):INTEGER; IF a > b THEN Max := a ELSE Max := b Przykład wywołania: Starszy := Max(WiekTaty,WiekMamy); FUNCTION Porz(a,b:INTEGER):INTEGER; VAR tmp : INTEGER; IF a > b THEN tmp := a; Źle! a := b; b := tmp; {Porz} Terminologia: parametry formalne a, b, parametry aktualne WiekTaty, WiekMamy, zmienne globalne Starszy, WiekTaty, WiekMamy, zmienne lokalne tmp, a, b.

Procedury i funkcje, struktura programu w Pascalu 3 Dalsze przykłady procedur i funkcji FUNCTION JestPierwsza(N: INTEGER): BOOLEAN; { wersja pierwsza -- pojedyncza funkcja } VAR Dzielnik : INTEGER; JestP : BOOLEAN; JestP := TRUE; Dzielnik := 2; WHILE JestP AND (Dzielnik <= (N DIV 2)) DO IF (N MOD Dzielnik) = 0 THEN JestP := FALSE ELSE Dzielnik := Dzielnik + 1; JestPierwsza := JestP { JestPierwsza } Przykład wywołania zmienna := JestPierwsza(13+delta);

Procedury i funkcje, struktura programu w Pascalu 4 Jeszcze dalsze przykłady procedur i funkcji FUNCTION Dzieli(Dzielnik, Dzielna: INTEGER): BOOLEAN; Dzieli := (Dzielna MOD Dzielnik) = 0 { Dzieli } FUNCTION JestPierwsza(N: INTEGER): BOOLEAN; { wersja druga -- z rozbiciem na dwie funkcje } VAR Dzielnik : INTEGER; JestP : BOOLEAN; JestP := TRUE; Dzielnik := 2; WHILE JestP AND (Dzielnik <= (N DIV 2)) DO IF Dzieli(Dzielnik,N) THEN JestP := FALSE ELSE Dzielnik := Dzielnik + 1; JestPierwsza := JestP { JestPierwsza }

Procedury i funkcje, struktura programu w Pascalu 5 PROGRAM pierwsze(input,output); VAR A,B: INTEGER; { deklaracje procedur i funkcji } PROCEDURE DrukujPierwsze(N, M: INTEGER); VAR I: INTEGER; FOR I := N TO M DO IF JestPierwsza(I) THEN WRITELN( Znaleziona liczba pierwsza:, I) { DrukujPierwsze } { program glowny } WRITELN( Wyliczanie liczb pierwszych w przedziale. ); WRITELN( Podaj poczatek przedzialu: ); READLN(A); WRITELN( Podaj koniec przedzialu: ); READLN(B); IF A <= B THEN DrukujPierwsze(A,B) ELSE WRITELN( Blednie podany przedzial:,a, >,B); END.

Procedury i funkcje, struktura programu w Pascalu 6 PROCEDURE Porz(a,b: INTEGER); VAR tmp : INTEGER; {1} IF a > b THEN {2} tmp := a; {3} a := b; {4} b := tmp; END {Porz} Parametry procedur i funkcji {1} x := 5; {2} y := 3; {3} Porz(x,y); {4} IF x > y THEN {5} WRITELN( wartosci nieuporzadkowane ); nr linii x y a b tmp Uwagi????? 1 5 2 3 3 5 3 Wywołanie procedury Porz:1 TRUE Porz:2 5 Porz:3 3 Porz:4 5 4??? TRUE Parametry przekazywane przez wartość

Procedury i funkcje, struktura programu w Pascalu 7 PROCEDURE Porz(VAR a,b: INTEGER); VAR tmp : INTEGER; {1} IF a > b THEN {2} tmp := a; {3} a := b; {4} b := tmp; END {Porz} Parametry procedur i funkcji {1} x := 5; {2} y := 3; {3} Porz(x,y); {4} IF x > y THEN {5} WRITELN( wartosci nieuporzadkowane ); nr linii x a y b tmp Uwagi??? 1 5 2 3 3 Wywołanie procedury Porz:1 TRUE Porz:2 5 Porz:3 3 Porz:4 5 4? FALSE Parametry przekazywane przez zmienną

Procedury i funkcje, struktura programu w Pascalu 8 Reguły użycia parametrów VAR (a) Parametry formalne mogą być dowolnych typów, dowolnie przemieszane, i każdy może być VAR. Jeśli nie jest VAR, to jest zwykłym parametrem. (b) Jeśli dany parametr formalny jest VAR, to odpowiadający mu parametr aktualny musi być zmienną, a nie dowolnym wyrażeniem, jak dla zwykłych parametrów. (c) Jeśli dany parametr formalny jest VAR, to odpowiadający mu parametr aktualny jest utożsamiany z parametrem formalnym jest jego aliasem. Oba te parametry odwołują się do tej samej komórki pamięci. Używać tylko tam gdzie są niezbędne

Procedury i funkcje, struktura programu w Pascalu 9 Przykład użycia parametrów VAR PROCEDURE Podstaw2(VAR X1, X2: REAL; Val1, Val2: REAL); X1 := Val1; X2 := Val2; Przykład wywołania: Podstaw2(pierw1,pierw2,(-b-sqdelta)/(2.0*a),(-b+sqdelta)/(2.0*a)); Porównaj: Podstaw2(pierw1,pierw2,pierw1+pierw2,pierw1*pierw2); Podstaw2(pierw1+pierw2,pierw1*pierw2,pierw1,pierw2); czy nawet: Podstaw2(pierw1,pierw1,pierw1,pierw1);

Procedury i funkcje, struktura programu w Pascalu 10 Deklaracje procedur i funkcji FUNCTION F(X:INTEGER): INTEGER; FORWARD; FUNCTION G(X:INTEGER): INTEGER; VAR... { deklaracja zmiennych }... F(A)... { sekcja operacyjna } FUNCTION F; VAR... { deklaracja zmiennych }... G(B)... { sekcja operacyjna }

Procedury i funkcje, struktura programu w Pascalu 11 Procedury i funkcje zagadnienia Zakres leksykalny zmiennych Zmienne globalne a lokalne Przesłanianie zmiennych Parametry formalne a aktualne Zgodność typu parametrów formalnych i aktualnych Przekazywanie prametrów przez wartość Przekazywanie prametrów przez zmienną aliasy

Procedury i funkcje, struktura programu w Pascalu 12 Procedury i funkcje podsumowanie Dekompozycja problemu: podział problemu na wiele mniejszych i wydzielenie rozwiązań tych mniejszych problemów od rozwiązania problemu głównego jest drogą do zredukowania wielkości i stopnia komplikacji problemu. Czytelność i przejrzystość programu: niezależnie od stopnia złożoności problemu, podział na procedury i funkcje jest drogą do zwiększenia czytelności programu, co zawsze jest celowe. Jednakże dodawanie procedur nie jest celem samym w sobie. Unikanie powtórzeń: często warto wyodrębnić w procedurę/funkcję powtarzający się zestaw instrukcji, wyrażeń, bądź schemat obliczeniowy. Zasada lokalności: określa, że wszystkie elementy mające ze sobą związek powinny znaleźć się jak najbliżej siebie w programie. Wielkość procedur/funkcji: niezbyt duże, np. < 50 linii, ważna jest też spójność.

Procedury i funkcje, struktura programu w Pascalu 13 Struktura programu w Pascalu program = naglowek-programu ";" blok-programu ".". naglowek-programu = "PROGRAM" identyfikator [ "(" parametry-programu ")" ]. parametry-programu = lista-identyfikatorow. lista-identyfikatorow = identyfikator {"," identyfikator}. blok-programu = blok blok = sekcja-deklaracji-etykiet sekcja-deklaracji-stalych sekcja-definicji-typow sekcja-deklaracji-zmiennych sekcja-deklaracji-procedur-i-funkcji sekcja-operacyjna. sekcja-deklaracji-procedur-i-funkcji = { ( deklaracja-procedury deklaracja-funkcji) ";" }. sekcja-operacyjna = instrukcja-zlozona. instrukcja-zlozona = "" ciag-instrukcji "END".

Procedury i funkcje, struktura programu w Pascalu 14 Zakres leksykalny i przesłanianie zmiennych przykłady PROGRAM podstawianie; VAR x: INTEGER; PROGRAM podstawianie; VAR x: INTEGER; PROCEDURE podstaw (x : INTEGER); x := 13; x := 21; podstaw(x);... PROGRAM podstawianie; VAR x: INTEGER; PROCEDURE podstaw (VAR x : INTEGER); x := 13; x := 21; podstaw(x);... PROGRAM podstawianie; VAR x: INTEGER; PROCEDURE podstaw (z : INTEGER); x := 13; x := 21; podstaw(x);... PROCEDURE podstaw (VAR z : INTEGER); z := 13; x := 21; podstaw(x);...

Procedury i funkcje, struktura programu w Pascalu 15 PROGRAM podstawianie; VAR x: INTEGER; PROGRAM podstawianie; VAR x: INTEGER; PROCEDURE podstaw (z : INTEGER); VAR x: INTEGER; z := 13; x := 14; x := 21; podstaw(x);... PROGRAM podstawianie; VAR x: INTEGER; PROCEDURE podstaw (VAR z : INTEGER); VAR x: INTEGER; z := 13; x := 14; x := 21; podstaw(x);... PROGRAM podstawianie; VAR x: INTEGER; PROCEDURE podstaw (z : INTEGER); PROCEDURE podstaw (VAR z : INTEGER); z := 13; x := 14; x := 21; podstaw(x);... z := 13; x := 14; x := 21; podstaw(x);...

Procedury i funkcje, struktura programu w Pascalu 16 Deklaracje i wywołania procedur przykłady PROGRAM przyklad (OUTPUT); VAR x,y,v,z : INTEGER; PROCEDURE Proc(VAR a,b : INTEGER; c,d : INTEGER); b:=2*b; c:=2*c; a:=b+c; d:=b; WRITELN( a=,a, b=,b, c=,c, d=,d) x:=1; y:=10; v:=100; z:=1000; Proc(x,y,v,z); WRITELN( x=,x, y=,y, v=,v, z=,z);...

Procedury i funkcje, struktura programu w Pascalu 17 FUNCTION nsum(a,b,n : INTEGER): INTEGER; VAR i : INTEGER; FOR i := 1 TO n DO a:=a+b; nsum:=a FUNCTION ndif(a,b,n : INTEGER): INTEGER; VAR i : INTEGER; FOR i := 1 TO n DO a:=a-b; ndif:=a nsum(5,3,2) + ndif(10,2,3) = 15; nsum(4,1,nsum(2,2,2)) = 8; ndif(a,b,c) - ndif(d,b,e) = ndif(a-d,b,c-e);

Procedury i funkcje, struktura programu w Pascalu 18 PROGRAM przyklad; VAR x,y : INTEGER; PROCEDURE Zamien(VAR a,b:integer; c,d:integer);... Zamien(x,y,2,1); Zamien(x,1,y,2); Zamien(x,y,x,y); Zamien(x,x,x,x); Zamien(x,y,x+y,y); Zamien(x+y,y,x,y);

Procedury i funkcje, struktura programu w Pascalu 19 PROGRAM przyklad; VAR x,y,z : INTEGER; FUNCTION Suma( skl1, skl2 :INTEGER): INTEGER;... Suma(x,y); x := Suma(Trunc(Sin(x)),4); x := Suma(Suma(x,y),z); z := Suma(x/y, y div x); if Suma(x,y)+z > 0 then z := 0;