Programovací jazyk C++

Slides:



Advertisements
Podobné prezentace
Pro začátek něco lehčího
Advertisements

Počítače a programování 1 Přednáška 13 Jiří Šebesta.
Třída SIMSET je druhou standardní systémovou třídou, která obsahuje prostředky pro práci se spojovými seznamy. KRUHOVÉ SPOJOVÉ SEZNAMY Spojový seznam –
Přednáška 11 Jiří Šebesta
Programování 2 Cvičení 5.
1 Vnitřní řazení s využitím dynamických struktur Tvorba spojového seznamu je vcelku triviální záležitostí: a)Vytvořím prázdný seznam příkazem LIST:=nil.
10. Dynamické datové struktury
Spojové struktury Spojová struktura ( linked structure ):
Fronta - a)Implementace s využitím statických struktur (pole) b)Implementace s využitím dynamických struktur (spojového seznamu) odebírá se ze začátku.
Pole, ukazatele a odkazy
BLIŽŠÍ POHLED NA TŘÍDY, DĚDIČNOST - úvod
Informační systémy Realizace uložených procedur a spouští, jejich praktické využití.
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.
Programování v C++ Cvičení.
Principy překladačů Běhová podpora Jakub Yaghob. Běhová podpora Statická podpora jazyka Překladač Interface na knihovny Hlavičkové soubory Dynamická podpora.
Algoritmizace a programování
Skip-List je datová struktura, která může být použita jako náhrada za vyvážené stromy. představují pravděpodobnostní alternativu k vyváženým stromům (struktura.
8. přednáška typedef - preprocesor Studijní materiály najdete na adrese:
Datové struktury. 2 Co je datová struktura v C datový typ složený z jiných datových typů nejjednodušší datová struktura je pole. všechny jeho prvky jsou.
Datové typy 6 A1PRG - Programování – Seminář
Seminář C++ 9. cvičení Šablony Ing. Jan Mikulka. Šablony ► template – vzory, podle kterých může překladač tvořit skupiny podobných tříd nebo funkcí, které.
Práce se soubory. * soubory patří k základním datovým prvkům v počítači * převážná většina programovacích jazyků má podporu určité formy práce se soubory.
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í.
Algoritmy a programovací techniky
Algoritmy vyhledávání a řazení
Současný svět Projekt č. CZ /3. 1
Strategy. Strategy – „All-in-1“ na začátek class AStrategy { public: virtual void Algorithm()=0; protected: AStrategy(); }; class SpecificStrategy: public.
A1PRG - Programování – Seminář Ing. Michal Ukazatele a pole 10 Verze
Další abstraktní datové typy
OSNOVA: a)Programování se soubory b)Záloha databáze v souboru c) Příklady Jiří Šebesta Ústav radioelektroniky, FEKT VUT v Brně Počítače a programování.
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í.
Spojové struktury BI-PA1 Programování a algoritmizace 1, ZS
STROMY Datová struktura sestávající z uzlů
10. Dynamické proměnné Dynamická proměnná se nezavádí deklarací proměnných, ale vzniká za běhu programu provedením speciálního příkazu. Nemá přidělen žádný.
7. Typ soubor Souborem dat běžně rozumíme uspořádanou množinu dat, uloženou mimo operační paměť počítače (na disku). Pascalský soubor je abstrakcí skutečného.
Uživatelem definované typy Ing. Lumír Návrat  katedra informatiky, A 1018 
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.
Soubory BI-PA1 Programování a algoritmizace 1, ZS Katedra teoretické informatiky © Miroslav Balík Fakulta informačních technologií České vysoké.
Jazyk C A0B36PRI - PROGRAMOVÁNÍ Část II.
Jazyk C A0B36PRI - PROGRAMOVÁNÍ Část I.
C – procedury 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é.
Pokročilé datové typy (struktury, unie, dynamické proměnné)
Funkce Přednáška č. 5. Funkce (functions)  posloupnost příkazů uvedená hlavičkou  využití – opakovaně volaná sekvence – strukturování programu – ošetření.
PROGRAMOVÁNÍ 3ITA,3ITB Jaroslav Burdys Hlavní zdroj:
Programování OPERÁTOR SIZEOF, FUNKCE, POLE JAKO PARAMETRY FUNKCÍ ERIK KRÁL.
Programování v jazyce C++ Speciality jazyka C++, úvod do OOP.
Alokace paměti v C++ Funkce v C++ a parametry typu reference, implicitní parametry funkcí.
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++
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++
Y36PJC Programování v jazyce C/C++
Překladače Syntaktická analýza
Vzorové řešení zápočtového testu
Programovací jazyk C Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Ing. Jitka Vlčková. Dostupné z Metodického portálu ISSN.
Struktury.
Programování 2. hodina RNDr. Jan Lánský, Ph.D.
Programování v jazyce C++
Abstraktní datové typy
Databázové systémy a SQL
Dynamické proměnné (1) Proměnné, jejichž počet a (nebo) velikost pa-měti využívané těmito proměnnými se v prů-běhu programu mění Dynamické proměnné lze.
Oblast platnosti identifikátoru (1)
Opakování základních příkazů a syntaxí v programovacím jazyce Pascal
Fronta (1) Dynamická datová struktura typu FIFO (First In First Out)
C# přehled vlastností.
Funkce s proměnným počtem parametrů
Transkript prezentace:

Programovací jazyk C++ Abstraktní datové typy Spojový seznam

Předávání struktur jako parametr funkcí typedef struct { float x; float y; } TBod; TBod b1; Tbod *b3; b3 = new TBod;

do procedur a funkcí předáváme buď celé struktury nevýhodné, uvědomme si, že se celá struktura kopíruje na zásobník definice funkce float vzdalenost(TBod b) { return sqrt(b.x*b.x+b.y*b.y); } volání vzdalenost(b1); vzdalenost(*b3);

nebo raději přes ukazatele na zásobník se kopíruje pouze adresa, úsporné definice funkce float vzdalenost(TBod *b) { return sqrt(b->x*b->x+b->y*b->y); } volání vzdalenost(&b1); vzdalenost(b3);

strukturu jako parametr lze deklarovat také pomocí reference předá se vlastně také adresa definice funkce float vzdalenost(TBod &b) { return sqrt(b.x*b.x+b.y*b.y); } volání vzdalenost(b1); vzdalenost(*b3);

parametr lze deklarovat také jako konstantní parametr typu reference definice funkce float vzdalenost(const TBod &b) {…} volání je stejné vzdalenost(b1); vzdalenost(*b3); pak není možné ve funkci měnit položky struktury (překladač ohlásí chybu) používá se jako ochrana, aby programátor omylem neměnil hodnotu parametru, který považuje za vstupní

pokud se při deklaraci struktury odkazujeme na ni, napíšeme jméno ještě před „{“ typedef struct TPolozka { int cislo; TPolozka *dalsi; } TPolozka; TPolozka *seznam;

Spojový seznam abstraktní datový typ (data + operace) určen pro dynamický seznam (lexikon), kde není znám počet prvků seznamu a jejich počet se často mění (vkládání, mazání) konec zacatek 3 1 3

implementace v C: typedef struct TPolozka { int prvek; TPolozka *dalsi; } TPolozka; typedef struct { TPolozka *zacatek; TPolozka *konec; } TSeznam;

TSeznam sez1; void Init(TSeznam *seznam) { seznam -> zacatek = NULL; seznam -> konec = NULL; }

Vložení na konec seznamu dynamicky vytvořím novou položku (ukazatel na další položku nastavím na NULL) konec zacatek 3 5 1 3 nova

Vložení na konec seznamu ukazatel dalsi u posledního prvku seznamu nastavím na novou položku konec zacatek 3 1 3 5 nova

Vložení na konec seznamu posunu ukazatel na konec seznamu konec zacatek 3 1 3 5 nova Pozor, vkládám-li do prázdného seznamu

void Vloz_na_konec(TSeznam *seznam, int cislo) { TPolozka *nova; nova = new TPolozka; nova -> prvek = cislo; nova -> dalsi=NULL; if (seznam -> zacatek != NULL) seznam -> konec -> dalsi = nova; seznam -> konec = nova; } else { seznam -> konec = nova; seznam -> zacatek = nova; }

Vložení do seznamu za prvek dynamicky vytvořím novou položku prvek konec zacatek 3 1 3 5 nova

Vložení do seznamu za prvek prováži nový prvek se seznamem prvek konec zacatek 3 1 3 5 nova

Obousměrný spojový seznam položka obsahuje ukazatel na předchůdce i následníka zacatek konec 3 1 3

Úkol naimplementujte spojový seznam (jedno-směrně nebo obousměrně vázaný), do kterého se ukládají jména a telefonní čísla naimplementujte tyto procedury a funkce: inicializace prázdného seznamu test, zda je seznam prázdný vložení záznamu na konec seznamu vložení záznamu za prvek (parametrem je ukazatel na prvek, za který se vkládá, a nové jméno a telefonní číslo)

hledání záznamu (podle jména i telef hledání záznamu (podle jména i telef. čísla) - vrací ukazatel na záznam, pokud není v seznamu, vrací NULL zjištění ukazatele na první záznam zjištění ukazatele na následující záznam výmaz prvku (parametrem je ukazatel na existující prvek, který se má vymazat) zrušení celého seznamu napište jednoduchou konzolovou aplikaci pro otestování implementace seznamu; data zadávejte z klávesnice nemusíte využít všechny funkce