Martin Flusser. December 15, 2016

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

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

Martin Flusser. Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague. November 16, 2017

Martin Flusser. November 1, 2016

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

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

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

Konstruktory a destruktory

Spojová implementace lineárních datových struktur

Šablony, kontejnery a iterátory

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

Mělká a hluboká kopie

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

Šablony, kontejnery a iterátory

Soubory. Hung Hoang Dieu. Department of Mathematics Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague 1 / 7

Základy programování (IZP)

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

Více o konstruktorech a destruktorech

Dynamické datové struktury I.

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

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

Základy programování (IZP)

Základy programování (IZP)

Pokročilé programování v jazyce C pro chemiky (C3220) Dědičnost tříd v C++

Jazyk C++ I. Šablony 2

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

Programování v jazyce C a C++

KIV/ZIS cvičení 6. Tomáš Potužák

Základy programování (IZP)

1. Téma 03 - Rozhodování

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

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

Základy C++ I. Jan Hnilica Počítačové modelování 18

Abstraktní třídy, polymorfní struktury

Programování v jazyce C a C++

Lineární spojový seznam (úvod do dynamických datových struktur)

int ii char [16] double dd název adresa / proměnná N = nevyužito xxx xxx xxx N xxx xxx N xxx N

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.

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

Dynamické datové struktury IV.

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

Návrh a tvorba WWW stránek 1/14. PHP a databáze

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

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

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

Např.: // v hlavičkovém souboru nebo na začátku // programu (pod include): typedef struct { char jmeno[20]; char prijmeni[20]; int rok_nar; } CLOVEK;

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

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

Objektov orientované programování. C++ Akademie SH. 7. Objektov orientované programování. Michal Kvasni ka. Za áte níci C++ 2.

Základní datové struktury

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

Základy programování. Úloha: Eratosthenovo síto. Autor: Josef Hrabal Číslo: HRA0031 Datum: Předmět: ZAP

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

Jazyk C# a platforma.net

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

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

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

Abstraktní datové typy

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

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

IB111 Programování a algoritmizace. Objektově orientované programování (OOP)

Dynamická identifikace typů v C++.

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

Struktury a dynamická paměť

Java Cvičení 01. CHARLES UNIVERSITY IN PRAGUE faculty of mathematics and physics

Struktury a dynamické proměnné

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

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

PB071 Programování v jazyce C Jaro 2013

IAJCE Přednáška č. 8. double tprumer = (t1 + t2 + t3 + t4 + t5 + t6 + t7) / 7; Console.Write("\nPrumerna teplota je {0}", tprumer);

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

Stromy. Jan Hnilica Počítačové modelování 14

Kolekce, cyklus foreach

ZÁPOČTOVÝ TEST. Zpracoval Vilém Závodný, #include "stdafx.h" #include "stdio.h"

Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague

Dynamická alokace paměti

Pokročilé programování v jazyce C pro chemiky (C3220) Pokročilá témata jazyka C++

Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague

Programování v C++ První kroky

16. února 2015, Brno Připravil: David Procházka. Konstruktory a destruktory

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

Iterátory v C++. int pole[20]; for (int *temp = pole, temp!= &pole[20]; temp++) { *temp = 0;

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

Používejte jen ty konstrukty jazyka C/C++, které jsme doposud probírali (nepoužívejte STL apod.)

Programování v jazyce C pro chemiky (C2160) 3. Příkaz switch, příkaz cyklu for, operátory ++ a --, pole

Správa paměti. Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta, 2016

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15

Pokud zadání nerozumíte nebo se vám zdá nejednoznačné, zeptejte se. Pište čitelně, nečitelná řešení nebudeme uznávat.

Pokud zadání nerozumíte nebo se vám zdá nejednoznačné, zeptejte se. Pište čitelně, nečitelná řešení nebudeme uznávat.

Ukazatele, dynamická alokace

Základy programování (IZP)

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


Dynamické datové struktury III.

PROGRAMOVÁNÍ V C++ URČENO PRO VZDĚLÁVÁNÍ V AKREDITOVANÝCH STUDIJNÍCH PROGRAMECH ROSTISLAV FOJTÍK

Dynamická vícerozměrná pole. Základy programování 2 Tomáš Kühr

Objektově orientované programování. Úvod

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

Pokud zadání nerozumíte nebo se vám zdá nejednoznačné, zeptejte se. Pište čitelně, nečitelná řešení nebudeme uznávat.

Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague

Transkript:

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ý seznam 5 Lineární spojový seznam cvičení 6 Domácí úkol 7 Zdroje

Struktura Umožní spojit několik datových typů do jednoho a pracovat s nimi jako s celkem Na jistý typ úloh velmi potřebné Nejčastěji deklarujeme nad main, případně do extra souborů

Ukázka 1 // Deklarace 2 struct clovek 3 { 4 char jmeno [10]; 5 int vek ; 6 double vyska ; 7 };

Ukázka 1 // Deklarace 2 struct clovek 3 { 4 char jmeno [10]; 5 int vek ; 6 double vyska ; 7 }; 1 // Inicializace 2 clovek ales = 3 { 4 " Ales ", // jmeno 5 22, // vek 6 11. 49 // vyska 7 };

Ukázka 1 // Pristup 2 cout << ales. vek ;

Dynamicka alokace struktury 1 clovek * uk_clovek = new clovek ; 2 zkopiruj ( uk_clovek -> jmeno," Tom "); 3 uk_clovek -> vek =30; 4 uk_clovek -> vyska =1.56;

Pole struktur 1 lide holky_ z_ kruhu [ 3]; // Vytvori pole 2 holky_ z_ kruhu [ 0]. vek ; // Pristup k polozkam

Struktury cv 1 Warm up: Vytvořte vlastní strukturu člověk, naplňte (stačí v kódu) a vypište do konzloe. 2 Zopakujte to samé, ale použijte dynamickou alokaci 3 Vytvořte pole struktur, naplňte a vypište. 4 Bonus: použijte cyklus pro naplnění i vypsání většího pole struktur. 5 Bonus: Napište funkci pro vypsání dynamicky alokované strktury

cv1 1 struct clovek 2 { 3 char jmeno [30]; 4 int vek ; 5 double vyska ; 6 }; 1 clovek martin = 2 { 3 " Martin ", 18, 2.05 4 }; 5 6 cout << " Jmeno : " << martin. jmeno << endl ; 7 cout <<" Vek : " << martin. vek << endl ; 8 cout <<" Vyska " << martin. vyska << endl < < endl ;

pomocna funkce Není naplní cvičení, jen zkopírujte 1 // http :// www. sallyx. org / sally /c/ c15. php 2 3 void zkopiruj ( char *v1, char *v2) 4 { 5 size_ t i = 0; 6 do { 7 v1[i] = v2[i]; 8 } while (v2[i ++]); 9 }

cv2 1 clovek * uk_clovek = new clovek ; 2 zkopiruj ( uk_clovek -> jmeno," Tom "); 3 uk_clovek -> vek =30; 4 uk_clovek -> vyska =1.56; 5 6 cout << " Jmeno : " << uk_clovek -> jmeno << endl ; 7 cout <<" Vek : " << uk_ clovek - > vek << endl ; 8 cout <<" Vyska " << uk_ clovek - > vyska << endl << en 9 10 delete uk_clovek ;

cv3 1 // vytvareni pole struktur 2 clovek borci [ 3]; 3 borci [ 0] = martin ; // pouziju z predchoziho 4 5 zkopiruj ( borci [1]. jmeno," Martinuv_druhej_kamos "); 6 borci [1]. vek =19; 7 borci [1]. vyska =2.10; 8 9 zkopiruj ( borci [2]. jmeno," Martinuv_kamos "); 10 borci [2]. vek =20; 11 borci [2]. vyska =1.89;

cv3 1 // vypis vsech 2 cout << " Vypis celeho pole :" << endl << endl ; 3 for ( int i = 0; i <=2; i ++) 4 { 5 cout << " Jmeno : " << borci [i]. jmeno << endl ; 6 cout <<" Vek : " << borci [i]. vek << endl ; 7 cout <<" Vyska " << borci [ i]. vyska << endl << 8 }

Lineární spojový seznam Dynamická datová struktura Vhodná i pro uchování většího počtu dat Lze zvětšovat podobně jako dynamicky alokované pole z minulé hodiny

Lineární spojový seznam Dynamická datová struktura Vhodná i pro uchování většího počtu dat Lze zvětšovat podobně jako dynamicky alokované pole z minulé hodiny Narozdíl od pole se... při přidání nemusí manipulovat s už existujícími záznamy pro přístup k některému prvku musí prohledat velká část záznamů

Realizace 1 struct node { 2 int x; 3 node * next ; 4 }; 5... 6 int main () 7 { 8 node * root ; 9...

Přidávání prvků 1 node * root ; 2 node * last ; 3 4 // pridani prvniho prvku 5 root = last = new node ; 6 root -> next = NULL ; 7 root ->x = 5; 8 9 // pridani dalsiho 10 last -> next = new node ; 11 last =last -> next ; 12 last -> next = NULL ; 13 last ->x =8;

Lineární spojový seznam cvičení 1 Vytvořte svůj malý seznam a přidejte pár záznamů 2 Vytvořte kód na výpis prvků 3 Bonus: Vytvořte kód na úplné smazání seznamu 4 Bonus: Napište kód na přidávání na začátek seznamu

cv1 1 struct node 2 { 3 int x; 4 node * next ; 5 };

cv1 1 node * root ; 2 node * last ; 3 4 // pridani prvniho prvku 5 root = last = new node ; 6 root -> next = NULL ; 7 root ->x = 5; 8 9 // pridani dalsiho 10 last -> next = new node ; 11 last =last -> next ; 12 last -> next = NULL ; 13 last ->x =8; 14...

cv2 1 // vypis 2 for ( node *it= root ; it!= NULL ;it=it -> next ) 3 cout << it ->x << endl ;

Domácí úkol 1 Dobře si rozmyslete mechanizmus spojového seznamu 2 kód na přidání dalšího prvku a výpisu obalte do funkcí 3 Když máme funkce na přidání a výpis, má chování programu podobné vlastnosti jako na minulém cvičení. Obalte ho do stejného UI. 4 mazání zatím nemusíte řešit.

Zdorje 1 http :// www. sallyx. org / sally /c/ c15. php 2 http :// programujte. com / clanek /2005041409 -c-5 - lekc 3 http :// www. cprogramming. com / tutorial / lesson15. htm