PODPROGRAMY PROCEDURY A FUNKCE

Podobné dokumenty
Vyučovací hodina. 1vyučovací hodina: 2vyučovací hodiny: Opakování z minulé hodiny. Procvičení nové látky

dovolují dělení velkých úloh na menší = dekompozice

NPRG030 Programování I, 2015/16 1 / :25:32

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:

Programovací jazyk Pascal

type Obdelnik = array [1..3, 1..4] of integer; var M: Obdelnik;

ALGORITMIZACE A PROGRAMOVÁNÍ

Sada 1 - Základy programování

Maturitní otázky z předmětu PROGRAMOVÁNÍ

Úvod do programování

Sada 1 - Základy programování

Algoritmizace prostorových úloh

Pascal. Katedra aplikované kybernetiky. Ing. Miroslav Vavroušek. Verze 7

Algoritmizace prostorových úloh

Podprogramy; procedury a funkce

Inovace a zkvalitnění výuky prostřednictvím ICT Základy programování a algoritmizace úloh Jednoduché příkazy jazyka Pascal

2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu.

Algoritmizace, základy programování, VY_32_INOVACE_PRG_ALGO_01

Sdílení dat mezi podprogramy

- speciální symboly + - * / =., < > <> <= >= a další. Klíčová slova jsou chráněnými útvary, které nelze použít ve významu identifikátorů.

Název předmětu: Školní rok: Forma studia: Studijní obory: Ročník: Semestr: Typ předmětu: Rozsah a zakončení předmětu:

Tematický celek Proměnné. Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace Deklarace proměnných

Řídicí struktury. alg3 1

Programovací jazyk. - norma PASCAL (1974) - implementace Turbo Pascal, Borland Pascal FreePascal Object Pascal (Delphi)

PODPROGRAMY. Vyčlenenie podprogramu a jeho pomenovanie robíme v deklarácii programu a aktiváciu vykonáme volaním podprogramu.

2.1 Podmínka typu case Cykly Cyklus s podmínkou na začátku Cyklus s podmínkou na konci... 5

PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1

Je n O(n 2 )? Je n 2 O(n)? Je 3n 5 +2n Θ(n 5 )? Je n 1000 O(2 n )? Je 2 n O(n 2000 )? Cvičení s kartami aneb jak rychle roste exponenciála.

Funkce, intuitivní chápání složitosti

ŠVP Gymnázium Ostrava-Zábřeh Úvod do programování

NPRG030 Programování I, 2018/19 1 / :25:37

Koncepce (větších) programů. Základy programování 2 Tomáš Kühr

Programy na PODMÍNĚNÝ příkaz IF a CASE

Logické operace. Datový typ bool. Relační operátory. Logické operátory. IAJCE Přednáška č. 3. může nabýt hodnot: o true o false

DUM 06 téma: Tvorba makra pomocí VBA

Algoritmizace a programování

Úvod do programování - Java. Cvičení č.4

1.1 Struktura programu v Pascalu Vstup a výstup Operátory a některé matematické funkce 5

Algoritmy a datové struktury 1

Úvod do programování. Lekce 1

Lekce 01 Úvod do algoritmizace

Skripta ke školení. Základy VBA. vypracoval: Tomáš Herout. tel:

LEKCE 6. Operátory. V této lekci najdete:

Martin Flusser. Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague. October 17, 2016

Sada 1 - Základy programování

Binární soubory (datové, typované)

Definice funkcí a procedur. Mnoho operací provozujeme opakovaně, proto je hloupé programovat je při každém použití znovu.

Základní způsoby: -Statické (přidělění paměti v čase překladu) -Dynamické (přiděleno v run time) v zásobníku na haldě

1. D Y N A M I C K É DAT O V É STRUKTUR Y

Strukturu lze funkci předat: (pole[i])+j. switch(výraz) velikost ukazatele

EVROPSKÝ SOCIÁLNÍ FOND. Úvod do PHP PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI

Sada 1 - Základy programování

Rekurze. Pavel Töpfer, 2017 Programování 1-8 1

Identifikátory označují objekty v programu používané (proměnné, typy, podprogramy).

Funkce, podmíněný příkaz if-else, příkaz cyklu for

Algoritmus. Přesné znění definice algoritmu zní: Algoritmus je procedura proveditelná Turingovým strojem.

2 Datové typy v jazyce C

Masarykova střední škola zemědělská a Vyšší odborná škola, Opava, příspěvková organizace

Inovace a zkvalitnění výuky prostřednictvím ICT Programování se strukturovanými údaji Programové jednotky

NPRG030 Programování I, 2010/11

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Tematická oblast: Programování 1 (VY_32_INOVACE_08_1_PR) Anotace: Využití ve výuce: Použité zdroje:

Imagine práce se seznamy (stručný manuál)

NPRG030 Programování I, 2016/17 1 / :58:13

VISUAL BASIC. Přehled témat

Aplikovaná informatika. Podklady předmětu Aplikovaná informatika pro akademický rok 2006/2007 Radim Farana. Obsah. Obsah předmětu

Závěrečná zkouška z informatiky 2011

Programování v jazyce C pro chemiky (C2160) 12. Specifické problémy při vývoji vědeckého softwaru

Program a životní cyklus programu

Vlastnosti algoritmu. elementárnost. determinovanost. rezultativnost. konečnost. hromadnost. efektivnost

Základní způsoby: -Statické (přidělění paměti v čase překladu) -Dynamické (přiděleno v run time) v zásobníku na haldě

Obsah přednášky. programovacího jazyka. Motivace. Princip denotační sémantiky Sémantické funkce Výrazy Příkazy Vstup a výstup Kontinuace Program

2. lekce Algoritmus, cyklus Miroslav Jílek

Pseudonáhodná čísla = algoritmicky generovaná náhrada za náhodná čísla

Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost rozhraním a výjimkám.

Pracovní listy - programování (algoritmy v jazyce Visual Basic) Algoritmus

Úvod do programování. Lekce 3

Správné vytvoření a otevření textového souboru pro čtení a zápis představuje

Systém je citlivý na velikost písmen CASE SENSITIVE rozeznává malá velká písmena, např. PROM=1; PROm=1; PRom=1; Prom=1; prom=1; - 5 různých proměnných

3. přednáška. Obsah: Řídící struktury sekvence, if-else, switch, for, while, do-while. Zpracování posloupnosti

Kritéria hodnocení praktické maturitní zkoušky z databázových systémů

Algoritmizace a programování. Ak. rok 2012/2013 vbp 1. ze 44

Text úlohy. Systémový katalog (DICTIONARY):

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Kombinatorická minimalizace

C# konzole Podíl dvou čísel, podmínka IF

8 Třídy, objekty, metody, předávání argumentů metod

Příklady: (y + (sin(2*x) + 1)*2)/ /2 * 5 = 8.5 (1+3)/2 * 5 = /(2 * 5) = 1.3. Pavel Töpfer, 2017 Programování 1-3 1

Struktura programu v době běhu

Virtuální počítač. Uživatelský program Překladač programovacího jazyka Operační systém Interpret makroinstrukcí Procesor. PGS K.

MIKROPROCESORY PRO VÝKONOVÉ SYSTÉMY

Klasický podprogram, který nazýváme procedura. Jedná se v podstatě o příkaz. 1

Unity a Objekty (NMIN102) RNDr. Michal Žemlička, Ph.D.

Časová a prostorová složitost algoritmů

Ukazka knihy z internetoveho knihkupectvi

Inovace a zkvalitnění výuky prostřednictvím ICT Základy programování a algoritmizace úloh Textové soubory

Dynamické programování

Transkript:

PODPROGRAMY PROCEDURY A FUNKCE Programy bez podprogramů Příklady: a) Napište program, který na obrazovku nakreslí čáru složenou ze znaků pomlčka. program Cara; b) Napište program, který na obrazovku nakreslí X čar složených ze znaků pomlčka (při praktickém použití se jednotlivé čáry mohou vyskytovat na různých místech v programu). program Cary; readln; c) Napište program, který vypočítá N-tou mocninu čísla X (X N, kde X je reálné a N je celé kladné). program Mocnina; Exponent, Vysledek:=1; for i:=1 to Exponent do Vysledek:=Vysledek*Zaklad; Nevýhoda: Opakovaný zápis celého kódu na více místech programu. Podprogramy umožňují rozložit program na dílčí úlohy. Přispívají tak k hierarchické struktuře programu a tím lepší přehlednosti a srozumitelnosti programu. Podprogramy se dělí na procedury a funkce. Procedura je popis algoritmu, který nějakým způsobem transformuje data. Funkce popisuje algoritmus výpočtu jedné hodnoty, která může být použita jako operand ve výrazu. 1

Procedury a) Procedura bez parametrů program Cary; procedure Výhoda: pro opakované použití procedury na více místech programu pouze zavolám jméno procedury. Procedura se skládá z hlavičky (klíčového slova procedure, jména procedury, případně lokální deklarace) a těla ukončeného středníkem. U procedury s parametry (viz dále) se v hlavičce ještě uvede seznam specifikací parametrů. Jednotlivé specifikace parametrů se oddělují středníkem. procedure Identifikátor (seznam specifikací parametrů); lokální deklarace posloupnost příkazů Pro vyvolání procedury se použije příkaz procedury, který je tvořen jménem procedury (a případně seznamem skutečných parametrů u procedury s parametry). program Mocnina1; Exponent, procedure Mocnina; Vysledek:=1; for i:=1 to Exponent do Vysledek:=Vysledek*Zaklad; Mocnina; Použití proměnných z hlavního programu (tzv. globálních proměnných) v proceduře není dobré řešení. Vnitřek procedury by měl být nezávislý na globálních proměnných (globální proměnné by neměly být procedurou ovlivňovány ani používány). Procedura by měla mít všechny proměnné, které používá, deklarovány lokálně. Globální proměnné existují po celou dobu provádění programu, lokální pouze po dobu provádění dané procedury. 2

b) Procedura s parametry Parametry volané hodnotou se používají pro vstup, vytváří se jejich kopie, se kterou procedura pracuje. Obsah proměnných dosazených jako parametry zůstane nedotčen. Parametry volané odkazem se obvykle používají pro výstup, procedura pracuje přímo s dosazenými (například se do nich ukládá výsledek operace). Teoreticky bychom mohli používat pouze parametry volané odkazem, ale není dobré během provádění procedury měnit původní vstupní hodnoty, které můžeme ještě v programu potřebovat. Jako parametry volané hodnotou mohou být dosazeny i konstanty, což u parametrů volaných odkazem není možné. Např. Mocnina(10, 3, Vysledek); program Mocnina2; Exponent, procedure Mocnina(Z: real; E: integer; V: real); Z, E a V je tzv. formální parametry (zástupné, za které se dosadí skutečné parametry v okamžiku volání procedury). Při volání funkce Mocnina jsou Základ, Exponent a Výsledek tzv. skutečné parametry. Použití proměnné i z hlavního programu (tzv. globálních proměnných) v proceduře opět není dobré řešení. Zejména proměnné cyklu by procedury měly mít deklarované lokálně, aby nedošlo k nechtěné změně proměnné cyklu (mohla by způsobit např. nekonečný cyklus). Procedura s parametry + lokální deklarace program Mocnina3; procedure Mocnina(Z: real; E: integer; V: real); 3

Opakované volání procedury program Mocnina4; procedure Mocnina(Z: real; E: integer; V: real); Zaklad := 10; Exponent := 3; Mocnina(10, 3, Vysledek); writeln('3. mocnina cisla 15 je ', Vysledek:10:2); Funkce Použití funkce na pravé straně jakéhokoli výrazu, kde se očekává hodnota daného typu program Mocnina5; function Mocnina(Z: real; E: integer) : real; V: real; Mocnina := V; Vysledek := Mocnina(Zaklad, Exponent); 4

Funkce je algoritmus, jehož provedením se vypočte hodnota určitého typu. Funkce se skládá z hlavičky (klíčového slova function, jména funkce, specifikace parametrů a typu funkce typ hodnoty, kterou funkce počítá a lokální deklarace) a těla ukončeného středníkem. Typ funkce nesmí být strukturovaný typ. V těle funkce se musí vyskytovat přiřazovací příkaz, kterým se přiřazuje hodnota identifikátoru (jména) funkce a jehož provedením se definuje výsledná hodnota. function Identifikátor (seznam specifikací parametrů):typ funkce; lokální deklarace posloupnost příkazů Pro vyvolání funkce se použije zápis funkce, který je tvořen jménem funkce (a případně seznamem skutečných parametrů u procedury s parametry). Zápis funkce musí být použit vždy v nějaké konstrukci, která předepisuje, co se s výslednou funkční hodnotou provede. Výhoda: pro opakované použití funkce na více místech programu pouze zavolám jméno funkce. Použití funkce přímo ve výstupu program Mocnina6; Zaklad: real; function Mocnina(Z: real; E: integer) : real; V: real; Mocnina := V; writeln(exponent, '. mocnina cisla ', Zaklad:10:2, ' je ', Mocnina(Zaklad, Exponent):10:2); 5

Použití funkce a procedury program Mocnina7; Zaklad: real; function Mocnina(Z: real; E: integer) : real; V: real; Mocnina := V; procedure writeln(exponent, '. mocnina cisla ', Zaklad:10:2, ' je ', Mocnina(Zaklad, Exponent):10:2); readln; Zpracovala: Ing. Simona Martínková, březen 2007 6