Programování v C++, 2. cvičení
|
|
- Gabriela Šmídová
- před 5 lety
- Počet zobrazení:
Transkript
1 Programování v C++, 2. cvičení 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019
2 Přehled 1 Operátory new a delete 2 3
3 Operátory new a delete minule procvičených pojmů opakování základních pojmů příkazy datové typy práce s funkcemi seznámení s IDE QtCreator jednoduché příklady Eukleidův algoritmus směnárníkova úloha
4 Přehled Operátory new a delete 1 Operátory new a delete 2 3
5 Zadání úlohy Operátory new a delete Zadání Napište program, ve kterém uživatel za běhu zadá počet prvků pole. Poté rezervujte potřebnou pamět a pole naplňte náhodnými celými čísly. Napište funkci pro nalezení nejmenšího prvku pole a pole vypište na standardní výpis. Náhodná čísla funkce rand: vrací náhodné celé číslo mezi 0 a RAND_MAX funkce srand: inicializace generátoru náhodných čísel aktuální čas jako semínko (funkce time)
6 Ukazatel Operátory new a delete proměnná, jejíž hodnota představuje adresu v paměti ukazatel na data ukazatel na funkci ukazatel zadán identifikátorem a doménovým typem příklad: int *ui; deklaruje ui jako ukazatel na typ int operátor &: získání adresy proměnné příklad: mějme deklaraci int i;, pak adresu proměnné i do ukazatele ui získáme příkazem ui = &i; operátor *: přístup k paměti, na kterou ukazatel ukazuje (dereference) operátor má vyšší prioritu než aritmetické operátory, lze tedy psát *ui = *ui + 1; ekvivalentní zápisu i = i + 1;
7 Práce s ukazateli Operátory new a delete ukazatel nikam neukazuje na žádnou platnou adresu v C++ hodnota nullptr (dříve 0), v C předdefinovaná konstanta NULL automatická konverze na logickou hodnotu ukazatel lze použít kdekoliv, kde se očekává logická hodnota ukazatel nikam se konvertuje na false nenulový ukazatel se konvertuje na true ukazatel bez doménového typu: void *v lze mu přiřadit hodnotu libovolného ukazatele: v = &i; pro opačné přiřazení je nutné použít přetypování: int *ui = (int *)v; nelze dereferencovat
8 Ukazatelová aritmetika Operátory new a delete 1 porovnání ukazatelů u1, u2 stejného typu u1, u2 jsou si rovny, pokud ukazují na stejnou adresu u1 < u2, jestliže u1 ukazuje na nižší adresu než u2 2 ukazatel + celé číslo k ukazateli u na typ T lze přičíst celé číslo n u+n zvětší adresu, na kterou u ukazuje o n*velikost typu T (lze zjistit operátorem sizeof) lze použít operátory ++ a -- 3 rozdíl ukazatelů rozdílem ukazatelů téhož typu, které ukazují na různé prvky stejného pole, je číslo udávající rozdíl indexů prvků, na které ukazují dané ukazatele
9 Ukazatele a pole Operátory new a delete mějme pole: int pole[100]; int *upole = pole; uloží do ukazatele upole adresu prvního prvku pole, tj. pole[0] z pointerové aritmetiky plyne: pole[j] == *(upole+j) 1 for(int *upole = pole; upole < &pole[n]; upole++) 2 *upole = 0; 3 //efektivnejsi nez "klasicky" zapis 4 for(int i = 0; i < n; i++) 5 pole[i] = 0;
10 Operátory new a delete : dynamické proměnné nevznikají deklarací, ale jsou alokovány a rušeny práce prostřednictvím ukazatelů alokace proměnné: operátor new operátor vyhradí v paměti místo pro proměnnou požadovaného typu a vrátí ukazatel na toto místo alokace jedné proměnné: int *ui = new int; alokace pole: int *upole = new int[10]; zrušení proměnné operátor delete delete ui; zrušení pole: delete [] pole; uvolní pamět, na kterou ukazuje ui, ale ui nevynuluje detekce úniků paměti - například nástoj memcheck: valgrind --tool=memcheck --leak-check=full soubor
11 Řešení Operátory new a delete hledání minima v poli: 1 int minimum(int *p, unsigned int n){ 2 int min = p[0]; 3 for(unsigned int i = 1; i < n; i++){ 4 if(min > p[i]){ min = p[i];} 5 } 6 return min; 7 } naplnění pole 1 void napln(int *p, unsigned int n){ 2 srand(time(nullptr)); 3 for(unsigned int i = 1; i < n; i++){ 4 p[i] = rand() % 100; //nahodne cislo mezi 0 a 99 5 } 6 }
12 Přehled 1 Operátory new a delete 2 3
13 Motivace dynamická datová struktura počet prvků není potřeba znát v době překladu prvky jsou vytvářeny za běhu podle potřeby prostřednictvím operátoru new a rušeny prostřednictvím operátoru delete prvky téhož typu, obecně nemusí být v paměti za sebou prvky umístěny v haldě seznam z hlediska složitosti rychlé vkládání nového prvku na požadovanou pozici (u pole pomalé ) pomalý přístup k požadovanému prvku (u pole rychlý ) velmi často používaná datová struktura součástí standardních knihoven (C++, Java,... )
14 Terminologie Typy seznamů: jednosměrně zřetězený seznam jednosměrně zřetězený seznam se zarážkou obousměrně zřetězený seznam se zarážkou Struktura prvku: vlastní data ukazatel na další prvek Klasifikace prvků: hlava (angl. head) první prvek seznamu, představuje výchozí bod pro práci se seznamem ohon (angl. tail) prvky seznamu za hlavou zarážka poslední prvek, ukazatel na následující prvek obsahuje nullptr
15 Zadání Zadání příkladu Napište jednosměrně zřetězený seznam se zarážkou. Implementujte následující operace: vytvoření a zrušení seznamu tisk obsahu seznamu přidání položky na začátek seznamu na konec seznamu za zadaný prvek odstranění položky nalezení položky s požadovanými daty test prázdnosti seznamu
16 Přehled 1 Operátory new a delete 2 3
17 Struktury skupina proměnných různých typů, se kterou se zachází jako s celkem obdoba typu záznam (record) z Pascalu Deklarace struktury struct identifikátor {deklarace_složek} seznam_deklarátorů složkou může být proměnná libovolného typu seznam deklarátorů jsou proměnné, pole, ukazatele deklarované struktury
18 Prvek obsahuje: 1 užitečná data 2 ukazatel na další prvek Struktura prvku: 1 struct Prvek{ 2 Data data; 3 Prvek *dalsi; 4 }; : 1 struct Seznam{ 2 Prvek *hlava; 3 Prvek *zarazka; 4 bool vytvoren = false; 5 };
19 Přehled 1 Operátory new a delete 2 3
20 Vytvoření a zrušení seznamu vytvoření prázdného seznamu: 1 vytvoření nového prvku 2 nastavení složky dalsi tohoto prvku na nullptr 3 uložení adresy tohoto prvku do hlavy seznamu 4 uložení adresy hlavy do zarážky seznamu zrušení seznamu 1 vymazání všech prvků seznamu 2 vymazání zarážky
21 Vytvoření a zrušení seznamu 1 void vytvorseznam(seznam *us){ 2 us->hlava = new Prvek; 3 us->zarazka = us->hlava; 4 us->hlava->dalsi = nullptr; 5 us->vytvoren = true; 6 } 7 8 void zrusseznam(seznam *us){ 9 vycistiseznam(us); 10 delete us->hlava; 11 us->hlava = nullptr; 12 us->vytvoren = false; 13 }
22 Vymazání všech prvků seznamu Dokud seznam není prázdný: 1 do pomocného ukazatele ulož adresu hlavy 2 hlavu posuň na druhý prvek 3 původní hlavu odstraň (pomocí operátoru delete) 1 void smazprvni(seznam *us){ 2 //1. poznamenej si adresu hlavy 3 Prvek *prvni = us->hlava; 4 //2. posun hlavu na druhy prvek 5 us->hlava = prvni->dalsi; 6 //3. odstran puvodni prvni prvek 7 delete prvni; 8 }
23 Vymazání všech prvků seznamu Dokud seznam není prázdný: 1 smaž první prvek 1 bool jeprazdny(seznam *us){ 2 return (us->hlava == us->zarazka); 3 } 4 5 void vycistiseznam(seznam *us){ 6 while(!jeprazdny(us)) 7 smazprvni(us); 8 }
24 Tisk obsahu seznamu na standardní výstup získej ukazatel na hlavu seznamu dokud se s tímto ukazatelem nedostaneš k zarážce, opakuj: 1 vytiskni obsah prvku, na který ukazuje pomocný ukazatel 2 pomocný ukazatel posuň na následující prvek seznamu 1 void vypisseznam(seznam *us){ 2 Prvek *up = us->hlava; //vyjdi od hlavy 3 while(up!=us->zarazka){ 4 std::cout << up->data << "\n"; 5 up = up->dalsi; 6 } 7 }
25 Přidání nového prvku na začátek seznamu 1 vytvoř nový prvek 2 jako následníka tohoto prvku nastav hlavu seznamu 3 do hlavy seznamu ulož ukazatel na nově vytvořený prvek na konec seznamu 1 užitečná data ulož do zarážky 2 vytvoř nový prvek, do jeho položky dalsi ulož nullptr 3 do položky dalsi zarážky ulož ukazatel na nově vytvořený prvek 4 z nově vytvořeného prvku vytvoř zarážku
26 Přidání nového prvku na konec a na začátek seznamu 1 void vloznazacatek(seznam *us, Data co){ 2 Prvek *novy = new Prvek; 3 novy->data = co; 4 novy->dalsi = us->hlava; 5 us->hlava = novy; 6 } 7 8 void vloznakonec(seznam *us, Data co){ 9 us->zarazka->data = co; 10 us->zarazka->dalsi = new Prvek; 11 us->zarazka = us->zarazka->dalsi; 12 us->zarazka->dalsi = nullptr; 13 }
27 Podmíněný výraz 1 if(up == us->zarazka) 2 return nullptr; 3 else 4 return up; použití podmíněného výrazu?: syntaxe: C? E1 : E2 je-li hodnota C převedena na true, je výsledek E1, jinak je výsledkem podmíněného výrazu E2 1 return (up == us->zarazka? nullptr : up);
28 Hledání prvku se zadanými daty 1 hledaná data ulož do zarážky 2 vyjdi od hlavy, seznam procházej prvek po prvku od hlavy 3 procházení zastav při nalezení hledaných dat 4 otestuj, zda byla data nalezena až v zarážce 1 Prvek* najdi(seznam *us, Data co){ 2 Prvek *up = us->hlava; 3 up->zarazka->data = co; 4 while(up!=us->zarazka){ 5 up = up->dalsi; 6 } 7 //pouziti podmineneho vyrazu 8 return (up == us->zarazka? nullptr : up); 9 }
29 Procvičené pojmy práce se strukturami práce s textovými řetězci práce s operátory new a delete spojový seznam vytvoření a zrušení seznamu přidání prvku na začátek seznamu odstranění prvku ze začátku seznamu odstranění všech prvků tisk seznamu na obrazovku hledání prvku s požadovanými daty
Programování v C++ 1, 1. cvičení
Programování v C++ 1, 1. cvičení opakování látky ze základů programování 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 Shrnutí procvičených
VíceProgramování v C++ 3, 3. cvičení
Programování v C++ 3, 3. cvičení úvod do objektově orientovaného programování 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled Dokončení spojového
VíceProgramování v C++ 2, 8. cvičení
Programování v C++ 2, 8. cvičení návrhový vzor iterátor 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 Shrnutí minule procvičené látky
VíceProgramování v C++ 2, 4. cvičení
Programování v C++ 2, 4. cvičení statické atributy a metody, konstruktory 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled Přístupová práva
VíceProgramování v C++ 2, 7. cvičení
Programování v C++ 2, 7. cvičení spojový seznam 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 Shrnutí minule procvičené látky Dědění
VíceProgramování v C++ 1, 16. cvičení
Programování v C++ 1, 16. cvičení binární vyhledávací strom 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 Shrnutí minule procvičené
VíceSpojová implementace lineárních datových struktur
Spojová implementace lineárních datových struktur doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 13. března 2017 Jiří Dvorský (VŠB
VíceObsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15
Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15 KAPITOLA 1 Úvod do programo vání v jazyce C++ 17 Základní pojmy 17 Proměnné a konstanty 18 Typy příkazů 18 IDE integrované vývojové
VíceDynamické datové struktury I.
Dynamické datové struktury I. Seznam. Fronta. Zásobník. Tomáš Bayer bayertom@natur.cuni.cz Katedra aplikované geoinformatiky a kartografie, Přírodovědecká fakulta UK. Tomáš Bayer bayertom@natur.cuni.cz
VíceUkazatel (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ý
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ý typem proměnné - ukazatel je tedy adresa společně s
VíceIUJCE 07/08 Přednáška č. 4. v paměti neexistuje. v paměti existuje
Konstanty I možnosti: přednostně v paměti neexistuje žádný ; o preprocesor (deklarace) #define KONSTANTA 10 o konstantní proměnná (definice) const int KONSTANTA = 10; příklad #include v paměti
VícePole a kolekce. v C#, Javě a C++
Pole a kolekce v C#, Javě a C++ C# Deklarace pole typ_prvku_pole[] jmeno_pole; Vytvoření pole jmeno_pole = new typ_prvku_pole[pocet_prvku_pole]; Inicializace pole double[] poled = 4.8, 8.2, 7.3, 8.0; Java
VíceZPRO v "C" Ing. Vít Hanousek. verze 0.3
verze 0.3 Hello World Nejjednoduší program ukazující vypsání textu. #include using namespace std; int main(void) { cout
VíceKonstruktory a destruktory
Konstruktory a destruktory Nedostatek atributy po vytvoření objektu nejsou automaticky inicializovány hodnota atributů je náhodná vytvoření metody pro inicializaci, kterou musí programátor explicitně zavolat,
VíceZákladní datové struktury
Základní datové struktury Martin Trnečka Katedra informatiky, Přírodovědecká fakulta Univerzita Palackého v Olomouci 4. listopadu 2013 Martin Trnečka (UPOL) Algoritmická matematika 1 4. listopadu 2013
VíceLineární datové struktury
Lineární datové struktury doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 13. března 2017 Jiří Dvorský (VŠB TUO) Lineární datové
VíceLineární spojový seznam (úvod do dynamických datových struktur)
Lineární spojový seznam (úvod do dynamických datových struktur) Jan Hnilica Počítačové modelování 11 1 Dynamické datové struktury Definice dynamické struktury jsou vytvářeny za běhu programu z dynamicky
Více24-2-2 PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: 23.7.2013 KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1
24-2-2 PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE AUTOR DOKUMENTU: MGR. MARTINA SUKOVÁ DATUM VYTVOŘENÍ: 23.7.2013 KLÍČOVÁ AKTIVITA: 02 UČIVO: STUDIJNÍ OBOR: PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) INFORMAČNÍ TECHNOLOGIE
VíceÚvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií
1 Fakulta elektrotechniky a informatiky Katedra softwarových technologií 12. října 2009 Organizace výuky Přednášky Teoretické základy dle normy jazyka C Cvičení Praktické úlohy odpřednášené látky Prostřední
VíceVíce o konstruktorech a destruktorech
Více o konstruktorech a destruktorech Více o konstruktorech a o přiřazení... inicializovat objekt lze i pomocí jiného objektu lze provést přiřazení mezi objekty v původním C nebylo možné provést přiřazení
VíceZáklady programování (IZP)
Základy programování (IZP) Šesté počítačové cvičení Brno University of Technology, Faculty of Information Technology Božetěchova 1/2, 612 66 Brno - Královo Pole Petr Veigend, iveigend@fit.vutbr.cz 6. týden
VíceMartin Flusser. December 15, 2016
ZPRO cvičení 9 Martin Flusser Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague December 15, 2016 Outline I 1 Outline 2 Struktura 3 Struktury cv 4 Lineární spojový
VícePaměť počítače. alg2 1
Paměť počítače Výpočetní proces je posloupnost akcí nad daty uloženými v paměti počítače Data jsou v paměti reprezentována posloupnostmi bitů (bit = 0 nebo 1) Připomeňme: paměť je tvořena řadou 8-mi bitových
VíceZáklady programování (IZP)
Základy programování (IZP) Jedenácté počítačové cvičení Brno University of Technology, Faculty of Information Technology Božetěchova 1/2, 612 66 Brno - Královo Pole Gabriela Nečasová, inecasova@fit.vutbr.cz
VíceZáklady programování (IZP)
Základy programování (IZP) Deváté počítačové cvičení Brno University of Technology, Faculty of Information Technology Božetěchova 1/2, 612 66 Brno - Královo Pole Petr Veigend, iveigend@fit.vutbr.cz 27.11.2017,
VíceProgramování v C++ 1, 17. cvičení
Programování v C++ 1, 17. cvičení výjimky 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 Shrnutí minule procvičené látky Binární vyhledávací
VíceADT/ADS = abstraktní datové typy / struktury
DT = datové typy obor hodnot, které může proměnná nabývat, s operacemi na tomto oboru určen: obor hodnot + výpočetní operace např. INT = { 2 147 483 648 až +2 147 483 647} + {+,,*,/,} ADT/ADS = abstraktní
VíceMartin Flusser. Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague. December 7, 2016
ZPRO cvičení 8 Martin Flusser Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague December 7, 2016 Outline I 1 Outline 2 Dynamické alokování paměti 3 Dynamická alokace
VíceProgramování v C++ 1, 5. cvičení
Programování v C++ 1, 5. cvičení konstruktory, nevirtuální dědění 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 3 Shrnutí minule procvičené
VíceZáklady programování (IZP)
Základy programování (IZP) Osmé počítačové cvičení Brno University of Technology, Faculty of Information Technology Božetěchova 1/2, 612 66 Brno - Královo Pole Petr Veigend, iveigend@fit.vutbr.cz 20.11.2017,
VíceUkazatele, dynamická alokace
Ukazatele, dynamická alokace Karel Richta a kol. katedra počítačů FEL ČVUT v Praze Přednášky byly připraveny s pomocí materiálů, které vyrobili Ladislav Vágner, Pavel Strnad, Martin Mazanec Karel Richta,
VíceZáklady C++ I. Jan Hnilica Počítačové modelování 18
Základy C++ I 1 Přechod z C na C++ jazyk C++ je nadmnožinou jazyka C z hlediska syntaxe se jedná o velmi podobné jazyky, spolu s dalšími jazyky "céčkovské" rodiny, jako je např. C# každý platný program
VíceZápis programu v jazyce C#
Zápis programu v jazyce C# Základní syntaktická pravidla C# = case sensitive jazyk rozlišuje velikost písmen Tzv. bílé znaky (Enter, mezera, tab ) ve ZK překladač ignoruje každý příkaz končí ; oddělovač
VíceAbstraktní datové typy
Karel Müller, Josef Vogel (ČVUT FIT) Abstraktní datové typy BI-PA2, 2011, Přednáška 10 1/27 Abstraktní datové typy Ing. Josef Vogel, CSc Katedra softwarového inženýrství Katedra teoretické informatiky,
VíceStřední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace
Programování v jazyce C a C# část I. Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace Předmět: Algoritmizace a programování Téma: Programování Vyučující: Ing. Milan Káža
VíceDynamická alokace paměti
Dynamická alokace paměti doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 13. března 2017 Jiří Dvorský (VŠB TUO) Dynamická alokace
VíceAlgoritmizace a programování
Algoritmizace a programování Řídicí struktury jazyka Java Struktura programu Příkazy jazyka Blok příkazů Logické příkazy Ternární logický operátor Verze pro akademický rok 2012/2013 1 Struktura programu
VíceÚvod do programování - Java. Cvičení č.4
Úvod do programování - Java Cvičení č.4 1 Sekvence (posloupnost) Sekvence je tvořena posloupností jednoho nebo více příkazů, které se provádějí v pevně daném pořadí. Příkaz se začne provádět až po ukončení
VícePŘETĚŽOVÁNÍ OPERÁTORŮ
PŘETĚŽOVÁNÍ OPERÁTORŮ Jazyk C# podobně jako jazyk C++ umožňuje přetěžovat operátory, tj. rozšířit definice některých standardních operátorů na uživatelem definované typy (třídy a struktury). Stejně jako
VícePokročilé programování v jazyce C pro chemiky (C3220) Operátory new a delete, virtuální metody
Pokročilé programování v jazyce C pro chemiky (C3220) Operátory new a delete, virtuální metody Dynamická alokace paměti Jazyky C a C++ poskytují programu možnost vyžádat si část volné operační paměti pro
VíceUkazka knihy z internetoveho knihkupectvi www.kosmas.cz
Ukazka knihy z internetoveho knihkupectvi www.kosmas.cz Upozornění pro čtenáře a uživatele této knihy Všechna práva vyhrazena. Žádná část této tištěné či elektronické knihy nesmí být reprodukována a šířena
VíceVýrazy, operace, příkazy
Výrazy, operace, příkazy Karel Richta a kol. katedra počítačů FEL ČVUT v Praze Přednášky byly připraveny s pomocí materiálů, které vyrobili Ladislav Vágner, Pavel Strnad Karel Richta, Martin Hořeňovský,
VíceStrukturované typy a ukazatele. Úvod do programování 1 Tomáš Kühr
Strukturované typy a ukazatele Úvod do programování 1 Tomáš Kühr Motivace Se základními datovými typy si sice vystačíme Někdy to ale může být nepříjemně nepřehledné Příklady: long double soucet(const long
VíceV 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).
Jazyk C++ 1 Blok 1 Úvod do programovacího jazyka C++ Studijní cíl První blok kurzu je věnován úvodu do problematiky programovacího jazyka C++. V bloku budou rozebrány historické souvislosti programovacích
VíceUkazatele a pole. Chceme-li vyplnit celé pole nulami, použijeme prázdný inicializátor: 207 Čárka na konci seznamu inicializátorů
Ukazatele a pole 204 Deklarace jednorozměrného pole s inicializací Chceme-li pole v deklaraci inicializovat, zapíšeme seznam inicializátorů jednotlivých prvků do složených závorek: #define N 5 int A[N]
VíceFronta (Queue) Úvod do programování. Fronta implementace. Fronta implementace pomocí pole 1/4. Fronta implementace pomocí pole 3/4
Fronta (Queue) Úvod do programování Michal Krátký 1,Jiří Dvorský 1 1 Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programování, 2004/2005 Fronta uplatňuje mechanismus přístupu FIFO first
VícePř. další použití pointerů
Př. další použití pointerů char *p_ch; int *p_i; p_ch = (char *) p_i; // konverze int * na char * 8 int i = 5; int *p_i; p_i = &i; POZOR!!!! scanf("%d", p_i); printf("%d", *p_i); Obecný pointer na cokoliv:
VíceDynamická vícerozměrná pole. Základy programování 2 Tomáš Kühr
Dynamická vícerozměrná pole Základy programování 2 Tomáš Kühr Statická pole připomenutí Příklad definice: int polea[2][3]; Nejjednodušší způsob vytvoření pole Pole je statické oba rozměry se zadávají konstantou
VícePointery II. Jan Hnilica Počítačové modelování 17
Pointery II 1 Pointery a pole Dosavadní způsob práce s poli zahrnoval: definici pole jakožto kolekce proměnných (prvků) jednoho typu, umístěných v paměti za sebou int pole[10]; práci s jednotlivými prvky
VíceProgramování v C++ 1, 6. cvičení
Programování v C++ 1, 6. cvičení dědičnost, polymorfismus 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 3 Shrnutí minule procvičené
VíceÚvod do programovacích jazyků (Java)
Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2007/2008 c 2006 2008 Michal Krátký Úvod do programovacích
VíceIAJCE Přednáška č. 8. double tprumer = (t1 + t2 + t3 + t4 + t5 + t6 + t7) / 7; Console.Write("\nPrumerna teplota je {0}", tprumer);
Pole (array) Motivace Častá úloha práce s větším množstvím dat stejného typu o Př.: průměrná teplota za týden a odchylka od průměru v jednotlivých dnech Console.Write("Zadej T pro.den: "); double t = Double.Parse(Console.ReadLine());
VíceZákladní pojmy. Úvod do programování. Základní pojmy. Zápis algoritmu. Výraz. Základní pojmy
Úvod do programování Michal Krátký 1,Jiří Dvorský 1 1 Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programování, 2004/2005 Procesor Procesorem je objekt, který vykonává algoritmem popisovanou
VíceOperační systémy. Cvičení 3: Programování v C pod Unixem
Operační systémy Cvičení 3: Programování v C pod Unixem 1 Obsah cvičení Editace zdrojového kódu Překlad zdrojového kódu Základní datové typy, struktura, ukazatel, pole Načtení vstupních dat Poznámka: uvedené
VíceMělká a hluboká kopie
Karel Müller, Josef Vogel (ČVUT FIT) Mělká a hluboká kopie BI-PA2, 2011, Přednáška 5 1/28 Mělká a hluboká kopie Ing. Josef Vogel, CSc Katedra softwarového inženýrství Katedra teoretické informatiky, Fakulta
VíceStřední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace
Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace Předmět: Vývoj aplikací Téma: Pole Vyučující: Ing. Milan Káža Třída: EK3 Hodina: 14 Číslo: V/5 Programování v jazyce
Vícetypová konverze typová inference
Seminář Java Programování v Javě II Radek Kočí Fakulta informačních technologií VUT Únor 2008 Radek Kočí Seminář Java Programování v Javě (2) 1/ 36 Téma přednášky Rozhraní: použití, dědičnost Hierarchie
Více5 Přehled operátorů, příkazy, přetypování
5 Přehled operátorů, příkazy, přetypování Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně budou uvedeny detaily týkající se operátorů. Doba nutná k nastudování
VíceAlgoritmizace řazení Bubble Sort
Algoritmizace řazení Bubble Sort Cílem této kapitoly je seznámit studenta s třídícím algoritmem Bubble Sort, popíšeme zde tuto metodu a porovnáme s jinými algoritmy. Klíčové pojmy: Třídění, Bubble Sort,
VíceIB111 Programování a algoritmizace. Objektově orientované programování (OOP)
IB111 Programování a algoritmizace Objektově orientované programování (OOP) OP a OOP Objekt Kombinuje data a funkce a poskytuje určité rozhraní. OP = objektové programování Vše musí být objekty Např. Smalltalk,
VíceMichal Krátký. Úvod do programovacích jazyků (Java), 2006/2007
Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků
Vícefor (i = 0, j = 5; i < 10; i++) { // tělo cyklu }
5. Operátor čárka, - slouží k jistému určení pořadí vykonání dvou příkazů - oddělím-li čárkou dva příkazy, je jisté, že ten první bude vykonán dříve než příkaz druhý. Např.: i = 5; j = 8; - po překladu
VíceZáklady programování (IZP)
Základy programování (IZP) Čtvrté počítačové cvičení Brno University of Technology, Faculty of Information Technology Božetěchova 1/2, 612 66 Brno - Královo Pole Petr Veigend, iveigend@fit.vutbr.cz 4.
VíceLogické 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
Logické operace Datový typ bool může nabýt hodnot: o true o false Relační operátory pravda, 1, nepravda, 0, hodnoty všech primitivních datových typů (int, double ) jsou uspořádané lze je porovnávat binární
VíceSpráva paměti. Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta, 2016
Správa paměti Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta, 2016 Objektové modelování, B36OMO 10/2016, Lekce 2 https://cw.fel.cvut.cz/wiki/courses/xxb36omo/start
VíceBitové operátory a bitová pole. Úvod do programování 2 Tomáš Kühr
Bitové operátory a bitová pole Úvod do programování 2 Tomáš Kühr Bitové operátory Provádějí danou operaci s jednotlivými bity svých operandů Operandy bitových operátorů mohou být pouze celočíselné Vyhodnocení
VíceAlgoritmizace a programování
Algoritmizace a programování Výrazy Operátory Výrazy Verze pro akademický rok 2012/2013 1 Operace, operátory Unární jeden operand, operátor se zapisuje ve většině případů před operand, v některých případech
Více1 2 3 4 5 6 součet cvičení celkem. známka. Úloha č.: max. bodů: skut. bodů:
Úloha č.: max. bodů: skut. bodů: 1 2 3 4 5 6 součet cvičení celkem 20 12 20 20 14 14 100 známka UPOZORNĚNÍ : a) Písemná zkouška obsahuje 6 úloh, jejichž řešení musí být vepsáno do připraveného formuláře.
VíceC++ Akademie SH. 2. Prom nné, podmínky, cykly, funkce, rekurze, operátory. Michal Kvasni ka. 20. b ezna Za áte níci C++
C++ Akademie SH 2. Prom nné, podmínky, cykly, funkce, rekurze, operátory Za áte níci C++ 20. b ezna 2011 Obsah 1 Prom nné - primitivní typy Celá ísla ƒísla s pohyblivou desetinnou árkou, typ bool 2 Podmínka
VíceAbstraktní datové typy FRONTA
Abstraktní datové typy FRONTA Fronta je lineární datová struktura tzn., že ke každému prvku s výjimkou posledního náleží jeden následník a ke každému prvku s výjimkou prvního náleží jeden předchůdce. Do
VíceIUJCE 07/08 Přednáška č. 6
Správa paměti Motivace a úvod v C (skoro vždy) ručně statické proměnné o datový typ, počet znám v době překladu o zabírají paměť po celou dobu běhu programu problém velikosti definovaných proměnných jak
VíceAlgoritmizace prostorových úloh
INOVACE BAKALÁŘSKÝCH A MAGISTERSKÝCH STUDIJNÍCH OBORŮ NA HORNICKO-GEOLOGICKÉ FAKULTĚ VYSOKÉ ŠKOLY BÁŇSKÉ - TECHNICKÉ UNIVERZITY OSTRAVA Algoritmizace prostorových úloh Datové struktury Daniela Szturcová
VíceAlgoritmizace a programování
Algoritmizace a programování Vyhledávání, vkládání, odstraňování Vyhledání hodnoty v nesetříděném poli Vyhledání hodnoty v setříděném poli Odstranění hodnoty z pole Vkládání hodnoty do pole Verze pro akademický
VíceStandardní algoritmy vyhledávací.
Standardní algoritmy vyhledávací. Vyhledávací algoritmy v C++ nám umožňují vyhledávat prvky v datových kontejnerech podle různých kritérií. Také se podíváme na vyhledávání metodou půlením intervalu (binární
VíceNMIN102 Programování /2 Z, Zk
NMIN102 Programování 2 --- 2/2 Z, Zk Pavel Töpfer Katedra softwaru a výuky informatiky MFF UK MFF Malostranské nám., 4. patro, pracovna 404 pavel.topfer@mff.cuni.cz http://ksvi.mff.cuni.cz/~topfer Pavel
VíceDynamické datové struktury IV.
Dynamické datové struktury IV. Prioritní fronta. Tomáš Bayer bayertom@natur.cuni.cz Katedra aplikované geoinformatiky a kartografie, Přírodovědecká fakulta UK. Tomáš Bayer bayertom@natur.cuni.cz (Katedra
VíceZáklady programování (IZP)
Základy programování (IZP) Páté počítačové cvičení Brno University of Technology, Faculty of Information Technology Božetěchova 1/2, 612 66 Brno - Královo Pole Petr Veigend, iveigend@fit.vutbr.cz 5. týden
VíceSprávné vytvoření a otevření textového souboru pro čtení a zápis představuje
f1(&pole[4]); funkci f1 předáváme hodnotu 4. prvku adresu 4. prvku adresu 5. prvku hodnotu 5. prvku symbolická konstanta pro konec souboru je eof EOF FEOF feof Správné vytvoření a otevření textového souboru
VíceFunkce, intuitivní chápání složitosti
Příprava studijního programu Informatika je podporována projektem financovaným z Evropského sociálního fondu a rozpočtu hlavního města Prahy. Praha & EU: Investujeme do vaší budoucnosti Funkce, intuitivní
VíceData, výrazy, příkazy
Data, výrazy, příkazy Karel Richta a kol. katedra počítačů FEL ČVUT v Praze Přednášky byly připraveny s pomocí materiálů, které vyrobili Ladislav Vágner, Pavel Strnad, Martin Hořeňovský, Aleš Hrabalík
VícePráce s polem a pamětí
3 Práce s polem a pamětí Inicializace jednorozměrného pole Jednorozměrné pole lze inicializovat přímo v deklaraci. int array[length] = {1, 5, 8, 9; array1d Prvky pole umístíte do složených závorek a oddělíte
Více1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:
1. lekce 1. Minimální program do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme: #include #include int main() { printf("hello world!\n"); return 0; 2.
VíceSada 1 - PHP. 03. Proměnné, konstanty
S třední škola stavební Jihlava Sada 1 - PHP 03. Proměnné, konstanty Digitální učební materiál projektu: SŠS Jihlava šablony registrační číslo projektu:cz.1.09/1.5.00/34.0284 Šablona: III/2 - inovace a
VíceDatové struktury. alg12 1
Datové struktury Jedna z klasických knih o programování (autor prof. Wirth) má název Algorithms + Data structures = Programs Datová struktura je množina dat (prvků, složek, datových objektů), pro kterou
VíceLineární datové struktury
Lineární datové struktury doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 5. března 2019 Jiří Dvorský (VŠB TUO) Lineární datové
Víceint t1, t2, t3, t4, t5, t6, t7, prumer; t1=sys.readint();... t7=sys.readint(); prume pru r = r = ( 1+t 1+t t3+ t3+ t4 t5+ t5+ +t7 +t7 )/ ;
Pole Příklad: přečíst teploty naměřené v jednotlivých dnech týdnu, vypočítat průměrnou teplotu a pro každý den vypsat odchylku od průměrné teploty Řešení s proměnnými typu int: int t1, t2, t3, t4, t5,
VíceProgramování v C++ 1, 14. cvičení
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í
VíceVyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 21.
Vyhledávání doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 21. září 2018 Jiří Dvorský (VŠB TUO) Vyhledávání 242 / 433 Osnova přednášky
VíceMaturitní otázky z předmětu PROGRAMOVÁNÍ
Wichterlovo gymnázium, Ostrava-Poruba, příspěvková organizace Maturitní otázky z předmětu PROGRAMOVÁNÍ 1. Algoritmus a jeho vlastnosti algoritmus a jeho vlastnosti, formy zápisu algoritmu ověřování správnosti
VíceJak v Javě primitivní datové typy a jejich reprezentace. BD6B36PJV 002 Fakulta elektrotechnická České vysoké učení technické
Jak v Javě primitivní datové typy a jejich reprezentace BD6B36PJV 002 Fakulta elektrotechnická České vysoké učení technické Obsah Celočíselný datový typ Reálný datový typ Logický datový typ, typ Boolean
VíceDynamické datové struktury III.
Dynamické datové struktury III. Halda. Tomáš Bayer bayertom@natur.cuni.cz Katedra aplikované geoinformatiky a kartografie, Přírodovědecká fakulta UK. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované
VíceSeznamy a iterátory. Kolekce obecně. Rozhraní kolekce. Procházení kolekcí
Kolekce obecně Seznamy a iterátory doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Kolekce ::= homogenní sada prvků
VíceVýrazy, operace, příkazy
Výrazy, operace, příkazy Karel Richta a kol. katedra počítačů FEL ČVUT v Praze Přednášky byly připraveny i s pomocí materiálů, které vyrobili Ladislav Vágner, Pavel Strnad Karel Richta, Martin Hořeňovský,
Více6. lekce Úvod do jazyka C knihovny datové typy, definice proměnných základní struktura programu a jeho editace Miroslav Jílek
6. lekce Úvod do jazyka C knihovny datové typy, definice proměnných základní struktura programu a jeho editace Miroslav Jílek 1/73 https://en.cppreference.com internetová stránka s referencemi https://gedit.en.softonic.com/download
VíceDatové typy a struktury
atové typy a struktury Jednoduché datové typy oolean = logická hodnota (true / false) K uložení stačí 1 bit často celé slovo (1 byte) haracter = znak Pro 8-bitový SII kód stačí 1 byte (256 možností) Pro
VíceOdvozené a strukturované typy dat
Odvozené a strukturované typy dat Petr Šaloun katedra informatiky FEI VŠB-TU Ostrava 14. listopadu 2011 Petr Šaloun (katedra informatiky FEI VŠB-TU Ostrava) Odvozené a strukturované typy dat 14. listopadu
VícePří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 -
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 - Preprocesor je možné ovládat pomocí příkazů - řádky začínající
Vícepřetížení operátorů (o)
přetížení operátorů (o) - pro vlastní typy je možné přetížit i operátory (tj. definovat vlastní) - pro definici slouží klíčové slovo operator následované typem/znakem operátoru - deklarace pomocí funkčního
VíceIAJCE Přednáška č. 9. int[] pole = new int[pocet] int max = pole[0]; int id; for(int i =1; i< pole.length; i++) { // nikoli 0 if (Pole[i] > max) {
Vyhledání extrému v poli použito v algoritmech řazení hledání maxima int[] pole = new int[pocet] int max = pole[0]; int id; for(int i =1; i< pole.length; i++) // nikoli 0 if (Pole[i] > max) max = pole[i];
VíceDa D to t v o é v ty t py IB111: Datové typy
Datové typy IB111: Datové typy Data a algoritmizace jaká data potřebuji pro vyřešení problému? jak budu data reprezentovat? jaké operaci s nimi potřebuji provádět? Navržení práce s daty je velice důležité
Více