Programování v C++ 1, 14. cvičení

Podobné dokumenty
Programování v C++ 1, 1. cvičení

Funkce pokročilé možnosti. Úvod do programování 2 Tomáš Kühr

Programování v C++ 3, 3. cvičení

Programování v C++ 1, 6. cvičení

Programování v C++ 1, 5. cvičení

Programování v C++ 1, 17. cvičení

Programování v C++ 2, 8. cvičení

Pole a Funkce. Úvod do programování 1 Tomáš Kühr

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

Programování v C++ 2, 4. cvičení

Jazyk C++ I. Šablony 2

Preprocesor. Karel Richta a kol. katedra počítačů FEL ČVUT v Praze. Karel Richta, Martin Hořeňovský, Aleš Hrabalík, 2016

C++ Akademie SH. 2. Prom nné, podmínky, cykly, funkce, rekurze, operátory. Michal Kvasni ka. 20. b ezna Za áte níci C++

Zpracoval:

Jazyk C++, některá rozšíření oproti C

Funkční objekty v C++.

Základy programování (IZP)

Polymorfismus. Časová náročnost lekce: 3 hodiny Datum ukončení a splnění lekce: 30.března

Více o konstruktorech a destruktorech

Pokročilé programování v jazyce C pro chemiky (C3220) Třídy v C++

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

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

Jazyk C++ I. Šablony

Jazyk C++ 1. Blok 3 Objektové typy jazyka C++ Třída. Studijní cíl. Doba nutná k nastudování. Průvodce studiem

Programování v C++ 1, 16. cvičení

PB161 Programování v jazyce C++ Přednáška 10

PB161 Programování v jazyce C++ Přednáška 10

Mělká a hluboká kopie

Programování v C++, 2. cvičení

Standardní algoritmy vyhledávací.

Úvod do programování. Lekce 5

Lekce 6 IMPLEMENTACE OPERAČNÍHO SYSTÉMU LINUX DO VÝUKY INFORMAČNÍCH TECHNOLOGIÍ JAZYK C

for (int i = 0; i < sizeof(hodnoty) / sizeof(int); i++) { cout<<hodonoty[i]<< endl; } cin.get(); return 0; }

PB přednáška (23. listopadu 2015)

Množina čísel int stl-set-int.cpp

PB161 Programování v jazyce C++ Přednáška 9

PB161 Programování v jazyce C++ Přednáška 4

Programování v C++ 2, 7. cvičení

Pokročilé programování v jazyce C pro chemiky (C3220) Statické proměnné a metody, šablony v C++

ZPRO v "C" Ing. Vít Hanousek. verze 0.3

Úvod do programovacích jazyků (Java)

Základy programování (IZP)

přetížení operátorů (o)

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

Dědičnost. Časová náročnost lekce: 3 hodiny Datum ukončení a splnění lekce: 23.března

int => unsigned int => long => unsigned long => float => double => long double - tj. bude-li:

Pokročilé programování v jazyce C pro chemiky (C3220) Operátory new a delete, virtuální metody

Šablonové metaprogramování v C++ Miroslav Virius KSI FJFI ČVUT

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

Jazyk C++ II. Šablony a implementace

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

PROGRAMOVÁNÍ V C++ CVIČENÍ

Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

Úvod do programování. Lekce 1

Syntaxe vyjímek. #include <iostream> #include <string> using namespace std; // Trida vyjimek class Vyjimka { private:

Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií

V dalších letech se pak začaly objevovat první normy pro jazyk C++ (ISO/IEC 14882:1998; ISO/IEC 9899:1999; ISO/IEC 14882:2003; ISO/IEC 14882:2011).

Vector datový kontejner v C++.

Ukazatele a pole. Chceme-li vyplnit celé pole nulami, použijeme prázdný inicializátor: 207 Čárka na konci seznamu inicializátorů

Aplikace Embedded systémů v Mechatronice. Michal Bastl A2/713a

Základy programování (IZP)

Ukazatel (Pointer) jako datový typ - proměnné jsou umístěny v paměti na určitém místě (adrese) a zabírají určitý prostor (počet bytů), který je daný

Pole a kolekce. v C#, Javě a C++

Zápis programu v jazyce C#

Algoritmy I. Cvičení č. 2, 3 ALGI 2018/19

C++ přetěžování funkcí a operátorů. Jan Hnilica Počítačové modelování 19

Jazyky C a C++ kompletní průvodce 2., aktualizované vydání. Miroslav Virius

Operační systémy. Cvičení 3: Programování v C pod Unixem

Ukazka knihy z internetoveho knihkupectvi

DTP Základy programování Úvod do předmětu

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

Bitové operátory a bitová pole. Úvod do programování 2 Tomáš Kühr

Programování v jazyce C a C++

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

Základy programování (IZP)

Pokročilé programování v jazyce C pro chemiky (C3220) Vstup a výstup v C++

Preprocesor a koncepce (větších) programů. Úvod do programování 2 Tomáš Kühr

PB161 Programování v jazyce C++ Přednáška 7

9. lekce Úvod do jazyka C 4. část Funkce, rekurze Editace, kompilace, spuštění Miroslav Jílek

IUJCE 07/08 Přednáška č. 1

Množina v C++ (set, multiset).

map, multimap - Asociativní pole v C++.

Úvod do programování. Lekce 3

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

PB161 Programování v jazyce C++ Přednáška 7

<surface name="pozadi" file="obrazky/pozadi/pozadi.png"/> ****************************************************************************

Struktury, funkce, reference

Jazyk C++ II. Výjimky

Šablony, kontejnery a iterátory

Algoritmizace a programování

Konstruktory a destruktory

Příkazy preprocesoru - Před překladem kódu překladačem mu předpřipraví kód preprocesor - Preprocesor vypouští nadbytečné (prázdné) mezery a řádky -

Objektově orientované programování

Úvod do programovacích jazyků (Java)

Objektově orientované programování. Úvod

NPRG031 Programování II --- 2/2 Z, Zk

PROGRAMOVACÍ JAZYKY A PŘEKLADAČE LEXIKÁLNÍ ANALÝZA

Standardní algoritmy v C++.

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

Transkript:

Programování v C++ 1, 14. cvičení výpustka, přetěžování funkcí, šablony funkcí 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019

Přehled 1 2 funkcí 3

minule procvičené látky 1 funkce main hlavička funkce přístup k parametrům příkazového řádku ukončení programu ukončením funkce main funkce exit a abort funkce atexit 2 rekurze přímá a nepřímá rekurze odstranění rekurze Fibonacciho posloupnost Ackermannova funkce

Přehled funkcí 1 2 funkcí 3

Výpustka funkcí umožňuje vytvářet funkce, které lze volat s různým počtem a typem parametrů výpustka (... ) musí být uvedena jako poslední parametr práce s pomocí maker va_start, va_arg, va_end a ukazatele typu va_list hlavičkový soubor <cstdarg> (resp. <stdarg.h>) procházení parametrů pomocí proměnné typu va_list inicializace této proměnné pomocí makra va_start přístup k hodnotě parametru pomocí makra va_arg úklid pomocí makra va_end v jazyce C++ výpustka vytlačována přetěžováním funkcí

Příklad funkcí 1 #include <cstdarg> 2 3 int soucet(int pocet,...){ 4 int s = 0; 5 va_list ap; 6 va_start(ap, pocet); 7 for(int i = 0; i < pocet; i++) 8 s = s + va_arg(ap, int); 9 return s; 10 } 11 12 int main(){ 13 int s = soucet(5, 1, 2, 4, 3, 5); 14...

funkcí v jednom programu může existovat více funkcí se stejným identifikátorem, které se liší type a/nebo počtem parametrů při volání překladač podle počtu a typu skutečných parametrů rozhodne, kterou z funkcí má zavolat 1 void prohod(int &a, int &b){ 2 int c = a; a = b; b = c; 3 } 4 void prohod(float &a, float &b){ 5 float c = a; a = b; b = c; 6 } 7 8 int main(){ 9 int i1, i2; 10 prohod(i1, i2);

Přehled funkcí 1 2 funkcí 3

Funkce maximum funkcí funkce vracející větší ze svých parametrů 1 int maximum(int a, int b){ 2 if(a > b) return a; 3 else return b; 4 } co když potřebujeme počítat s racionálními čísly? 1 double maximum(double a, double b){ 2 if(a > b) return a; 3 else return b; 4 } využili jsme přetěžování funkcí tělo funkcí je stejné, liší se jen typ paramatrů pozn.: nahradit tělo pomocí operátoru?:

funkcí v jazyce C++ zavedeny šablony umožňují popsat množinu funkcí, které se liší jen typem některých parametrů umožňují popsat množinu tříd, které se liší jen typem některých atributů narozdíl od maker zpracovány překladačem představují vzor, podle kterého překladač sestaví funkci/objektový typ specializace šablony deklarace šablony: template<formalni_parametry> deklarace parametry mohou být hodnotové, typové, šablonové deklarace je definiční nebo informativní deklarace funkce, objektového typu, metody objektového typu,...

Přehled funkcí 1 2 funkcí 3

Příklad: šablona funkce funkcí Příkad: šablona maximum 1 template<class T> 2 T maximum(const T &a, const T &b){ 3 if(a > b) return a; 4 else return b; 5 } některé specializace šablony 1 int main(){ 2 int i=5, j=4; double x=3.14, y=2.71; 3 cout << maximum(i, j) << endl; 4 cout << maximum(x, y) << endl; 5 cout << maximum<int>(i, x) << endl; 6 return 0; 7 }

Přetěžování šablon funkcí pro některé typy T nemusí specializace správně fungovat pro tyto typy napsat stejně pojmenovanou volnou funkci 1 #include <cstring> //kvuli strcmp 2 template<class T> T maximum(const T &a, const T &b){ 3 return a > b? a : b; 4 } 5 6 const char* maximum(const char *a, const char *b){ 7 return (strcmp(a, b) > 0? a : b); 8 } 9 10 int main(){ 11 int a = 1, b =2; 12 double x = 1.414, y = 3.1415; 13 const char *s1 = "hello"; 14 const char *s2 = "cau"; 15 cout << maximum(s1, s2) << endl; 16 cout << maximum<int>(a, x) << endl; 17 return 0; 18 }

Procvičené pojmy 1 funkce s proměnným počtem parametrů výpustka 2 přetěžování funkcí 3 šablony šablony funkcí šablony tříd specializace šablon přetěžování šablon