Funkce Přednáška č. 5. Funkce (functions)  posloupnost příkazů uvedená hlavičkou  využití – opakovaně volaná sekvence – strukturování programu – ošetření.

Slides:



Advertisements
Podobné prezentace
A1PRG - Programování – Seminář Ing. Michal Typová konverze, oblast platnosti, paměťové třídy 9 Verze
Advertisements

Standardní knihovní funkce pro práci s textovými řetězci
Programování v C jazyku - SEMINÁŘ
Počítače a programování 1 Přednáška 13 Jiří Šebesta.
Programovací jazyk C++
Přednáška 11 Jiří Šebesta
Programování 2 Cvičení 5.
Příkazy Přednáška č. 4. Příkazy (statements)  Příkaz – dílčí krok programu (část kódu – zpravidla jeden řádek)  Program – posloupnost příkazů  Příkazy.
25/08/20141 Typ struktura (1) Datový typ struktura ( struct ) je agrego- vaný heterogenní datový typ Jedná se o skupinu několika proměnných, které mohou.
Pole, ukazatele a odkazy
BLIŽŠÍ POHLED NA TŘÍDY, DĚDIČNOST - úvod
Počítače a programování 1. Obsah přednášky Výjimky - základní typy výjimek Způsoby zpracování výjimek.
C++ Přednáška 3 Konstantní a statické členy tříd, ukazatel this, konstantní instance třídy Ing. Jiří Kulhánek , kat. 352, VŠB TU Ostrava 2004.
Preprocess Úvod do tvorby funkcí Princip preprocesoringu Direktivy preprocesoru Podmíněný překlad Základy tvorby funkcí Zjednodušený popis principu předávaní.
Programování v C++ Cvičení.
Algoritmizace a programování
J a v a Začínáme programovat Lucie Žoltá metody, objekty, konstruktor.
8. přednáška typedef - preprocesor Studijní materiály najdete na adrese:
Datové typy 6 A1PRG - Programování – Seminář
Informatika I 3. přednáška
A1PRG - Programování – Seminář Ing. Michal Standardní knihovní funkce pro práci se soubory 13 Verze
Vyučovací hodina 1 vyučovací hodina: Opakování z minulé hodiny 5 min Nová látka 20 min Procvičení nové látky 15 min Shrnutí 5 min 2 vyučovací hodiny: Opakování.
OSNOVA: a) Řetězce v C b) Funkce stdio.h pro řetězce c) Funkce string.h pro řetězce d) Příklad Jiří Šebesta Ústav radioelektroniky, FEKT VUT v Brně Počítače.
A1PRG - Programování – Seminář Ing. Michal Operátory (2. část) 4 Verze
C – strukturované příkazy
Seminář C cvičení Obsluha výjimek Ing. Jan Mikulka.
Příklady v jazyku C – část 6
Současný svět Projekt č. CZ /3. 1
A1PRG - Programování – Seminář Ing. Michal Ukazatele a pole 10 Verze
Počítače a programování 1
Cvičení.
KIV/PPA1 cvičení 8 Cvičící: Pavel Bžoch. Osnova cvičení Objekty v Javě Třída Konstruktor Metody Metody a proměnné třídy x instance Program sestávající.
Příklady v jazyku C – část 4
Příklady v jazyku C – část 3
A1PRG - Programování – Seminář Ing. Michal Standardní knihovní funkce pro vstup a výstup 12 Verze
C# - předávání parametrů Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T.G. Masaryka, Kostelec nad Orlicí.
Napište program v C pro výpočet plochy obdélníka se stranami A=3 a B=2. Výsledek vytiskněte s patřičným komentářem na obrazovku formátovým příkazem printf.
OSNOVA: a) Příkazy pro větvení b) Příkazy pro cykly c) Příkazy pro řízení přenosu d) Příklad Jiří Šebesta Ústav radioelektroniky, FEKT VUT v Brně Počítače.
OSNOVA: a)Funkce – úvod b) Hlavičky funkcí c) Rekurze funkcí d)Knihovny funkcí e)Příklady Jiří Šebesta Ústav radioelektroniky, FEKT VUT v Brně Počítače.
C – jak na procedury Mgr. Lenka Švancarová. C – procedury #include int main() { printf("Ahoj\n"); return(0); } #include void pozdrav(void) { printf("Ahoj\n");
Pokročilé programování v C++ (část B)
Vazby dynamických proměnných,databázové systémy Přednáška č. 10.
Ukazatele, řetězce Přednáška č. 3. Ukazatele  Ukazatel (pointer) – typ o velikosti 4 bajty (v 32bit. systémech) pro uložení adresy objektu na který ukazuje.
Soubory BI-PA1 Programování a algoritmizace 1, ZS Katedra teoretické informatiky © Miroslav Balík Fakulta informačních technologií České vysoké.
Příklady v jazyku C – část 2
Jazyk C A0B36PRI - PROGRAMOVÁNÍ Část II.
Jazyk C A0B36PRI - PROGRAMOVÁNÍ Část I.
C – procedury Mgr. Lenka Švancarová.
C – cyklus do-while Mgr. Lenka Švancarová.
Vícerozměrná pole (1) Jazyk C povoluje, aby pole mělo více rozměrů (dimenzí) než jeden Z vícerozměrných polí bývá nejčastěji použí-váno pole dvourozměrné.
Funkce, intuitivní chápání složitosti
Podprogramy (subroutines) Pojmenované kousky programu, které –tvoří logicky ucelené části –se v programu opakují Jsou zapsány na jednom místě a v případě.
Pokročilé datové typy (struktury, unie, dynamické proměnné)
Programování KONSTANTY, ČTENÍ PO JEDNOM ZNAKU GETCHAR() FORMÁTOVANÝ VÝSTUP POMOCÍ PRINTF, VÝVOJOVÉ DIAGRAMY, CYKLY.
Programování OPERÁTOR SIZEOF, FUNKCE, POLE JAKO PARAMETRY FUNKCÍ ERIK KRÁL.
Počítače a programování 2
Typ struktura (1) Datový typ struktura (struct) je agrego-vaný heterogenní datový typ Jedná se o skupinu několika proměnných, které mohou mít různé datové.
Y36PJC Programování v jazyce C/C++
Programování ENUM, SWITCH,pole jednorozměrná a vícerozměrná, deklarace, inicializace, kopírování, porovnání Erik Král.
Vícerozměrná pole (1) Jazyk C povoluje, aby pole mělo více rozměrů (dimenzí) než jeden Z vícerozměrných polí bývá nejčastěji použí-váno pole dvourozměrné.
Programovací jazyk C++
Vzorové řešení zápočtového testu
Řetězce (24) Funkce strchr: deklarována v: string.h
Oblast platnosti identifikátoru (1)
Opakování základních příkazů a syntaxí v programovacím jazyce Pascal
MU002 – Informační technologie Základy algoritmizace 5/13
Opakování ze 3. cvičení deklarace proměnných výpis na monitor (výstup)
C# přehled vlastností.
Funkce s proměnným počtem parametrů
Opakování ze 4. cvičení int a; printf("Zadej číslo: ");
Transkript prezentace:

Funkce Přednáška č. 5

Funkce (functions)  posloupnost příkazů uvedená hlavičkou  využití – opakovaně volaná sekvence – strukturování programu – ošetření událostí  funkci lze předávat údaje tzv. parametry a vracet výsledek tzv. návratovou hodnotu

Syntaxe funkce (1)  Funkce bez parametrů a bez návratové hodnoty  Funkce musí být před prvním voláním definována nebo alespoň deklarována  void func_name( void ) { } void ShowText(void) // definice funkce – vcetne tela funkce { printf("Funkce ShowText\r\n"); getchar(); } void ShowNum(void); // deklarce funkce – bez tela, nezapomenout strednik int main(int argc, char* argv[]) { ShowText();// volani funkce ShowText ShowNum();// volani funkce ShowNum return 0; } void ShowNum(void) // definice funkce – vcetne tela funkce { printf("Funkce ShowNum\r\n"); getchar(); }

Syntaxe funkce (2)  Funkce s jedním parametrem a návratovou hodnotou  func_name( jmeno_parametru) { } double Kvadrat(double param) // definice funkce – vcetne tela funkce { double vysl = param * param; return vysl;// okamzite ukonceni funkce, predani navratove hodnoty printf("Toto nikdy nenastane neboť je to za return."); } int main(int argc, char* argv[]) { double x = 2.5; printf("Kvadrat %f = %f\r\n", x, Kvadrat(x)); // volani funkce Kvadrat getchar(); return 0; }

Syntaxe funkce (3)  Funkce s více parametry a návratovou hodnotou  func_name( jmeno_P1, jmeno_P2 … ) { } double CelocisMocnina(double zaklad, unsigned int exponent ) // definice funkce { double vysl = zaklad; if (!exponent) return 1; // okamzite ukonceni funkce, predani navratove // hodnoty 1, je-li exponent 0 while (--exponent) vysl*=zaklad; return vysl;// ukonceni funkce, predani navratove hodnoty } int main(int argc, char* argv[]) { double x = 2.5; unsigned int y = 3; printf("%f ^ %d = %f\r\n", x, y, CelocisMocnina(x,y)); getchar(); return 0; }

Syntaxe funkce (4)  Parametr předaný hodnotou – výchozí stav  func_name( jmeno_param ) { }  Parametr předaný odkazem POZOR jen v C++  func_name( &jmeno_param ) { } int Hodnotou(int param ) // definice funkce { return ++param;// ukonceni funkce, predani navratove hodnoty } int Odkazem(int &param ) // definice funkce { return ++param;// ukonceni funkce, predani navratove hodnoty } int main(int argc, char* argv[]) { int x = 3, y; y = Hodnotou (x); printf("Po volani Hodnotou x = %d y = %d\r\n", x, y); y = Odkazem (x); printf("Po volani Odkazem x = %d y = %d\r\n", x, y); getchar(); return 0; }

Parametr předaný odkazem v C  Řeší se tak, že se nepředává proměnná (parametr), ale adresa proměnné  Pozn. Řetězce jsou ukazatele na první písmeno, jsou tedy vlastně předávány odkazem int Hodnotou(int param ) // definice funkce { return ++param;// ukonceni funkce, predani navratove hodnoty } int Odkazem(int *param ) // definice funkce, parametrem je ukazatel na int { return ++(*param);// pouzivame dereferenci pro praci s parametrem } int main(int argc, char* argv[]) { int x = 3, y; y = Hodnotou (x); printf("Po volani Hodnotou x = %d y = %d\r\n", x, y); y = Odkazem (&x); // parametrem je adresa proměnné x printf("Po volani Odkazem x = %d y = %d\r\n", x, y); getchar(); return 0; }

Složitější parametry  Pomocí typedef lze předdefinovat složitější typ jako např. matice a ten použít jako typ parametru funkce typedef int t_mtx[3][3] ; void add_mtx( t_mtx A, t_mtx B ) { int m, n; for( m=0; m<3; m++) for( n=0; n<3; n++) A[m][n] = A[m][n] + B[m][n]; } void print_mtx( t_mtx X ) { int m, n; for( m=0; m<3; m++) { for( n=0; n<3; n++) printf( " %d", X[m][n]); printf("\r\n"); } printf("\n\n"); getchar(); } void main( void ) { t_mtx A = { 1, 2, 3, 4, 5, 6, 7, 8, 9}; t_mtx B = {10,20,30,40,50,60,70,80,90}; print_mtx( A); print_mtx( B); add_mtx( A, B); print_mtx ( A); }

Rekurze  Volání sebe sama  Náročné na zásobník  Používat pouze v odůvodněných případech unsigned long factorial( unsigned int n) { if( n ) // n je nenulove return n*factorial( n-1 ); // rekurze else // n je nula return 1; } int main(int argc, char* argv[]) { int x = 5; printf("%d! = %d\r\n", x, factorial(x)); getchar(); return 0; }

Ukazatel na funkci double fce1( double x) { return x*x; } double fce2( double x) { return x+x; } void tisk_fce(double start, double inc, int steps, double func(double)) { // posledni parametr je ukazatel na funkci int i; double x=start; for (i=0;i<steps;i++) { printf("func(%.1lf) = %.2lf\r\n",x,func(x)); x+=inc; } int main(int argc, char* argv[]) { tisk_fce(0.5,0.2,5,fce1); // predani ukazatele na funkci fce1 printf(" \r\n"); tisk_fce(0.5,0.2,5,fce2); // predani ukazatele na funkci fce2 getchar(); return 0; }

Hlavičkový soubor  my_lib.cpp: soubor obsahující zdrojové kódy našich funkcí (implementaci – definici funkcí)  my_lib.h: soubor obsahující hlavičky našich funkcí ze stejnojmenného souboru (deklarace funkcí)  Include “my_lib.h“: vložení souboru s deklaracemi funkcí zpřístupňujícího funkce z my_lib.c ( v mém programu pak mohu volat funkce ze souboru my_lib.cpp )

Příklad – knihovna geom. objektů  Vytvořte funkce, které budou počítat plochu obdélníka, elipsy a trojúhelníka.  Funkce soustřeďte do nezávislé knihovny.