7.3 Mělká a hluboká kopie Pochopit správně rozdíly mezi mělkou a hlubokou kopií je velmi důležité, provedeme tedy ještě toto shrnutí.
|
|
- Vilém Bárta
- před 7 lety
- Počet zobrazení:
Transkript
1 Vážení zákazníc, dovolujeme s Vás upozornt, že na tuto ukázku knhy se vztahují autorská práva, tzv. copyrght. To znamená, že ukázka má sloužt výhradnì pro osobní potøebu potencálního kupujícího (aby ètenáø vdìl, jakým zpùsobem je ttul zpracován a mohl se také podle tohoto, jako jednoho z parametrù, rozhodnout, zda ttul koupí è ne). Z toho vyplývá, že není dovoleno tuto ukázku jakýmkolv zpùsobem dále šíøt, veøejnì è neveøejnì napø. ums ováním na datová méda, na jné nternetové stránky (an prostøednctvím odkazù) apod. redakce nakladatelství BEN techncká lteratura redakce@ben.cz
2 7. PŘETĚŽOVÁNÍ OPERÁTORŮ VYLEPŠENÍ TŘÍDY TRETEZ Program vypíše: a=text 1 b= c=text 1 Pokračujte stsknutím lbovolné klávesy... a=text a b=text 1 c=text c Pokračujte stsknutím lbovolné klávesy... a=a: Text a b=b: Text 1 c=c: c Pokračujte stsknutím lbovolné klávesy... a=a: Text ab: Text 1c: c b=b: Text 1 c=c: c Pokračujte stsknutím lbovolné klávesy... a[1]=; a=a; Text ab: Text 1c: c Pokračujte stsknutím lbovolné klávesy... str=a; Text ab: Text 1c: c Pokračujte stsknutím lbovolné klávesy... Zadej retezec: C++ d=c++ Pokračujte stsknutím lbovolné klávesy Mělká a hluboká kope Pochopt správně rozdíly mez mělkou a hlubokou kopí je velm důležté, provedeme tedy ještě toto shrnutí. Mělká kope znamená, že se nstance kopíruje po složkách. Čl atrbuty tak jak jsou, se ze zdrojové nstance zkopírují do cílové nstance. Takové chování je v pořádku, pokud jsou v atrbutech jednoduché datové typy. Dokonce se korektně zkopíruje pole (přpomeňme, že normálně není kope pole možná a musí být provedena po jednotlvých prvcích). Velké problémy nastanou, pokud je některý z atrbutů ukazatel. Adresa uložená v ukazatel se zkopíruje a oba atrbuty v různých nstancích ukazují na stejná data. Pokud se změní jedna nstance, promítnou se změny do druhé. Př destrukc jedné nstance začne ukazatel ve druhé nstanc odkazovat na jž neexsující data. Bohužel, standardní verze operátoru přřazení a kopírovacího konstruktoru provádí právě mělkou kop. Hluboká kope zohledňuje přítomnost ukazatelů tak, že v cílové nstanc vytváří stejná dynamcká data znovu a získanou adresu ukládá do příslušného ukazatele. Mez zdrojovou a cílovou nstancí neexstuje žádná vazba. Každá nstance pracuje se svou kopí dat. Ovšem hlubokou kop musíme sam předepsat tím, že mplementujeme vlastní verze operátoru přřazení a kopírovacího konstruktoru. 7.4 Další možná rozšíření třídy TStrng Regulérní řetězcová třída obvykle obsahuje další operace s řetězc. Mez obvyklé operace patří zejména: stanovení délky řetězce, vkládání podřetězce, mazání část řetězce, kopírování podřetězce. Takové operace není možno zavést ve formě operátorů, ale je nutno defnovat nové metody. 7-7
3 OBJEKTOVÉ PROGRAMOVÁNÍ V C++ V PŘÍKLADECH V následujícím textu se seznámíme s algortmy, které tyto operace realzují. Metoda Length stanovení délky řetězce Tato metoda nejdříve vynuluje počítadlo. Potom prochází řetězcem tak dlouho, dokud nenalezne zarážku. Za každý průchod s zvýší počítadlo o 1. Počet znaků před zarážkou (což je vlastně délka řetězce) je pak uložen v tomto počítadle. Počítadlo je možno současně použít jako ndex právě procházeného prvku uvntř řetězce. Tato metoda patří mez nejjednodušší řetězcové operace. Z hledska standardní řetězcové knhovny j zajšťuje funkce strlen. Př realzac této metody nemusíme testovat žádné chybové stavy, to je v podstatě dáno tím, že metoda nemá vstupní parametry! Doporučená hlavčka: unsgned Length( ) const; =0 =1 =2 =3 =4 'A' 'h' 'o' 'j' 'A' 'h' 'o' 'j' 'A' 'h' 'o' 'j' 'A' 'h' 'o' 'j' 'A' 'h' 'o' 'j' konec Obr Naznačení průchodu řetězcem pro stanovení jeho délky Metoda SubStr získání podřetězce Parametry této metody jsou startovací pozce (start) a počet kopírovaných znaků (count), které defnují podřetězec. Výsledkem je podřetězec zkopírovaný z původního řetězce. Nejdříve se musí vytvořt nová nstance řetězce, do kterého se podřetězec nakopíruje. Celá operace je pak provedtelná cyklem for, který v původním řetězc používá ndex od start do start+count 1 a v cílovém řetězc se pak jedná o ndexy 0 až count 1. Na pozc count ve výsledku musí být umístěna zarážka. původní řetězec 'N' 'e' 'j' 'a' 'k' 5 'y' ' ' 't' 'e' 'x' 10 't' 11 start = 2 count = 3 start start+count 1 výsledek 'j' 'a' 'k' 3 Obr Vysvětlení úlohy parametrů start a count, odpovídající podřetězec Podmínky úspěšného provedení operace: cílový řetězec musí mít fyzckou délku vyšší než je dáno parametrem count (lze vyřešt př jeho vytváření, je to plně v rež této metody), ndexy start start+count 1 musí padnout do rozsahu platných ndexů řetězce (musí být nžší než délka řetězce), count musí být nezáporné číslo (je-l count = 0, je výsledkem prázdný řetězec). 7-8
4 Doporučená hlavčka: 7. PŘETĚŽOVÁNÍ OPERÁTORŮ VYLEPŠENÍ TŘÍDY TRETEZ TStrng SubStr(nt start, nt count) const; Metoda Delete rušení podřetězce Parametry této metody jsou obvykle startovací pozce (start) a počet rušených znaků (count). Celá operace je pak provedtelná cyklem, který startuje od ndexu start a prochází řetězcem až do jeho konce (včetně). Pokud použjeme řídcí ndex zavedený jako, bude se z pravé část řetězce (pozce +count) kopírovat jeden znak do levé část řetězce (pozce ). Index se bude zvyšovat až do nalezení zarážky. I ta se však ještě zkopíruje z pravé část nalevo. 1. krok start = 3 count = 3 'T' 'e' 'n' ' ' 't' 5 'o' ' ' 'r' 'e' 'k' krok 'T' 'e' 'n' ' ' 't' 'o' ' ' 'r' 'e' 'k' +count 3. krok 'T' 'e' 'n' ' ' 'r' 'o' ' ' 'r' 'e' 'k' 4. krok 'T' 'e' 'n' ' ' 'r' 'e' ' ' 'r' 'e' 'k' 5. krok 'T' 'e' 'n' ' ' 'r' 'e' 'k' 'r' 'e' 'k' 6. krok 'T' 'e' 'n' ' ' 'r' 'e' 'k' 'e' 'k' +count nový konec řetězce Obr Naznačení operace rušení podřetězce +count +count +count Podmínky úspěšného provedení operace: ndexy start start+count 1 musí padnout do rozsahu platných ndexů řetězce (musí být nžší než délka řetězce), count musí být nezáporné číslo (je-l count = 0, nezruší se žádný znak). Doporučená hlavčka: vod Delete(nt start, nt count); Metoda Insert vložení podřetězce Parametry této metody jsou obvykle startovací pozce (start) a vkládaný řetězec (SubStr). Operac musíme rozdělt na dvě část: Nejdříve vytvoříme místo pro vkládaný řetězec. Takže znaky počínaje ndexem start musí být odsunuty směrem ke konc řetězce o tolk pozc, kolk udává délka vkládaného řetězce. Znaky je třeba kopírovat od konce a to 7-9
5 OBJEKTOVÉ PROGRAMOVÁNÍ V C++ V PŘÍKLADECH včetně zarážky. Uložíme-l s do proměnné délku původního řetězce a do proměnné len délku vkládaného podřetězce, budeme vždy kopírovat jeden znak zleva (ndex ) napravo (ndex +len). Poslední kope proběhne pro prvek s ndexem start. Druhou částí operace je pak kopírování znaků z řetězce SubStr (ndexy 0 až len 1) do cílového řetězce (ndexy start až start+len 1). 1. krok start = 4 SubStr = " a " 'c' 'u' 'k' 'r' 'b' = Length( ) len = SubStr.Length( ) '' 'c' 2. krok 'c' 'u' 'k' 'r' 'b' '' 'c' 3. krok 'c' 'u' 'k' 'r' 'b' '' 'c' 'c' 4. krok 'c' 'u' 'k' 'r' 'b' '' 'c' '' 'c' 5. krok 'c' 'u' 'k' 'r' 'b' '' 'c' 'b' '' 'c' +len +len +len +len vložení SubStr 0 ' ' 1 'a' 2 ' ' 3 výsledek 'c' 'u' 'k' 'r' ' ' 5 'a' 6 ' ' 'b' '' 'c' 10 Obr Naznačení operace rušení podřetězce Podmínky úspěšného provedení operace: cílový řetězec musí mít fyzckou délku vyšší než je dáno součtem délek obou řetězců, ndex start musí padnout do rozsahu platných ndexů cílového řetězce (musí být nžší nebo roven délce řetězce, pokud je start roven délce řetězce, přdá se vkládaný řetězec na konec). Doporučená hlavčka: vod Insert(nt start, const TStrng& SubStr); 7-10
6 8. PROUDOVÁ KNIHOVNA 8 Proudová knhovna Základní nformace o proudech byly uvedeny v kaptole 1.3. Proudům se budeme nyní věnovat podrobněj. 8.1 Herarche proudů Na obr. 8.1 je uvedena herarche proudových tříd. Na vrcholu stojí třída os, přímým následníky jsou třídy ostream (vstupní proud) a ostream (výstupní proud). Z těchto tříd jsou pak posléze odvozeny souborové a řetězcové proudy. os stream fstreambase strstreambase ostream fstream strstream ostream ostrstream ofstream fstream strstream Obr Herarche tříd proudové knhovny 8.2 Standardně zavedené proudy Prostor jmen std zavádí tř standardní nstance proudů, vz tab 8.1. Tab. 8.1 Standardně defnované proudy Proud Směr Význam cout výstup standardní výstupní proud cn vstup standardní vstupní proud cerr výstup standardní výstup chybových zpráv 8.3 Základní třídy Přpomeňme krátce význam základních tříd herarche. Tyto základní proudové třídy jsou defnovány v hlavčkovém souboru ostream. Výstup ostream Třída ostream je defnována tak, aby operátor << zajstl výstup vestavěných typů. Umožňuje tedy výstup datových typů: char*, char, short, nt, long, double, vod*. Třída je přímým následníkem os. Vstup stream Třída stream je defnována tak, aby operátor >> zajstl vstup vestavěných typů. Třída je přímým následníkem os. 8-1
7 OBJEKTOVÉ PROGRAMOVÁNÍ V C++ V PŘÍKLADECH 8.4 Souborové proudy C++ defnuje tř souborové proudy, vz tab Souborové proudy jsou defnovány v hlavčkovém souboru fstream. Třída fstream ofstream fstream Tab. 8.2 Souborové proudy Význam proud pro vstupní soubor proud pro výstupní soubor proud pro čtení záps do souboru Otevření souboru Každý soubor, se kterým chceme pracovat, je třeba nejdříve otevřít pomocí metody open. Hlavčka: jméno souboru vod open( const char* flename, nt openmode, způsob otevření nt protect=flebuf::openprot ); ochrana souboru Tab. 8.3 Režmy otevření proudu defnované v os (btové pole) Režm Význam os::n otevř pro čtení os::out otevř pro záps os::ate otevř a přesuň se na konec souboru os::app přdej na konec (append) os::trunc zkrať délku souboru na 0 (přeps) os::bnary otevř jako bnární (ne textový) soubor Zavření souboru close Soubor zavíráme metodou close, hlavčka: vod close(); Test úspěšnost poslední operace Úspěšnost poslední operace s proudem lze testovat tak, že proud použjeme v logckém výrazu. Proběhla-l poslední operace korektně, chápe se stav proudu jako pravdvý (true). Pokud došlo k chybě (například neúspěšné otevření souboru nebo dosažení konce souboru), chápe se stav proudu jako nepravdvý (false) PROG_08-01 záps do textového souboru pomocí proudu Zadání: Napšte program, který do souboru DATA.TXT zapíše 1000 náhodně vygenerovaných celých čísel v rozsahu 1 až 100. Každé číslo bude zapsáno na zvláštním řádku. Nejdříve deklarujeme proměnnou typu ofstream s dentfkátorem vystup. Tento proud metodou open napojíme na soubor s názvem DATA.TXT. Úspěšné otevření ověříme tak, že proměnnou vystup použjeme v podmíněném příkazu. Pokud se otevření souboru podařlo, je výraz brán jako pravdvý a provedou se další příkazy. 8-2
8 8. PROUDOVÁ KNIHOVNA Vlastní ukládání čísel je řešeno klascky, operátorem <<. Nakonec musíme zavřít soubor pomocí metody close. #nclude <ostream> #nclude <fstream> #nclude <omanp> #nclude <stdlb.h> usng namespace std; nt man() { ofstream vystup; otevření souboru vystup.open("data.txt",os::out); f(vystup) test úspěšnost otevření { for(nt =1;<=1000;++) vystup<<1+rand()%100<<endl; uložení čísla vystup.close(); výstupní proud zavření souboru } cout<<"data zapsana"<<endl; } else cout<<"soubor nelze otevrt"<<endl; PROG_08-02 čtení z textového souboru pomocí proudu Zadání: Napšte program, který přečte celá čísla uložená v souboru DATA.TXT a vypočítá jejch součet a průměr. Pro tento příklad musíme deklarovat jednak nstanc třídy fstream (označíme j dentfkátorem vstup) a dále proměnnou na načtení jednoho čísla (), proměnnou na výpočet součtu (označíme j soucet a vynulujeme) a proměnnou na počítání čísel (označíme j pocet a vynulujeme j). Následně otevřeme soubor pomocí metody open. Kontrola úspěšného otevření je opět provedena testováním stavu proudu v podmíněném příkaze. Pokud se otevření souboru podaří, je spuštěn cyklus whle. Ten nejdříve přečte jedno číslo ze souboru a okamžtě zkontroluje, zda bylo čtení úspěšné. Úspěšně přečtené číslo zvýší proměnnou pocet o 1 a jeho hodnota je přčtena do součtu čísel představovaných obsahem proměnné soucet. Po přečtení všech čísel zavřeme soubor metodou close. Pokud byl počet čísel nenulový (a tedy lze provést výpočet průměru), zobrazí se jednak součet čísel, jejch počet a dále průměr všech čísel (vzpomeňte s, že pro vyvolání reálného podílu je nutné celočíselné hodnoty přetypovat na typ double). 8-3
Basic256 - úvod do programování Příklady. ing. petr polách
Basic256 - úvod do programování Příklady ing. petr polách 1 Basic 256 input, print Př.: Vytvořte program pro součet dvou čísel: input "Zadej a: ", a input "Zadej b: ", b print a+b input "Zadej a: ", a
Více2.4 Cykly 2. ZÁKLADY JAZYKA C
Vážení zákazníci, dovolujeme si Vás upozornit, že na tuto ukázku knihy se vztahují autorská práva, tzv. copyright. To znamená, že ukázka má sloužit výhradnì pro osobní potøebu potenciálního kupujícího
VícePokročilé programování v jazyce C pro chemiky (C3220) Vstup a výstup v C++
Pokročilé programování v jazyce C pro chemiky (C3220) Vstup a výstup v C++ Proudy pro standardní vstup a výstup V jazyce C++ provádíme textový vstup a výstup prostřednictvím tzv. datových proudů Datové
VíceIterační výpočty. Dokumentace k projektu pro předměty IZP a IUS. 22. listopadu projekt č. 2
Dokumentace k projektu pro předměty IZP a IUS Iterační výpočty projekt č.. lstopadu 1 Autor: Mlan Setler, setl1@stud.ft.vutbr.cz Fakulta Informačních Technologí Vysoké Učení Techncké v Brně Obsah 1 Úvod...
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íceLOGICKÉ OBVODY J I Ř Í K A L O U S E K
LOGICKÉ OBVODY J I Ř Í K A L O U S E K Ostrava 2006 Obsah předmětu 1. ČÍSELNÉ SOUSTAVY... 2 1.1. Číselné soustavy - úvod... 2 1.2. Rozdělení číselných soustav... 2 1.3. Polyadcké číselné soustavy... 2
VícePB161 Programování v C++ Proudy pro standardní zařízení Souborové proudy Paměťové proudy Manipulátory
PB161 Programování v C++ Proudy pro standardní zařízení Souborové proudy Paměťové proudy Manipulátory Výhody objektového řešení Nástroje pro IO operace jsou v C++ součástí knihoven Hierarchie objektových
Více11 Elektrické specifikace Mezní parametry* Okolní teplota pøi zapojeném napájení 40 C až +125 C Skladovací teplota 65 C až +150 C Napájecí napìtí na V
Vážení zákazníci, dovolujeme si Vás upozornit, že na tuto ukázku knihy se vztahují autorská práva, tzv. copyright. To znamená, že ukázka má sloužit výhradnì pro osobní potøebu potenciálního kupujícího
Více= + + R. u 1 = N R R., protože proud: i je protlačován napětím: u 1P ve smyčce
Vážení zákazníc, dovoljeme s Vás pozornt, že na tto kázk knhy se vztahjí atorská práva, tzv copyrght o znamená, že kázka má složt výhradnì pro osobní potøeb potencálního kpjícího (aby ètenáø vdìl, jakým
VíceC# konzole Podíl dvou čísel, podmínka IF
C# konzole Podíl dvou čísel, podmínka IF Tematická oblast Datum vytvoření 2013 Ročník 3 Stručný obsah Způsob využití Autor Kód Internetové technologie, programování Výpočet podílu v konzolové aplikaci
Více2 Základní funkce a operátory V této kapitole se seznámíme s použitím funkce printf, probereme základní operátory a uvedeme nejdůležitější funkce.
Vážení zákazníci, dovolujeme si Vás upozornit, že na tuto ukázku knihy se vztahují autorská práva, tzv copyright To znamená, že ukázka má sloužit výhradnì pro osobní potøebu potenciálního kupujícího (aby
Více8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek
8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek 1/41 Základní příkazy Všechny příkazy se píšou malými písmeny! Za většinou příkazů musí být středník (;)! 2/41 Základní příkazy
VíceÚvod do programování. Lekce 3
Úvod do programování Lekce 3 Řízení běhu programu - pokračování /2 příklad: program vypisuje hodnotu sin x dx pro různé délky integračního kroku 0 #include #include // budeme pouzivat funkci
VíceÚvod do programování. Lekce 1
Úvod do programování Lekce 1 Základní pojmy vytvoření spustitelného kódu editor - psaní zdrojových souborů preprocesor - zpracování zdrojových souborů (vypuštění komentářů atd.) kompilátor (compiler) -
VíceZadání: TÉMA: Zápis algoritmu, čtení textového souboru, porovnání řetězců.
TÉMA: Zápis algoritmu, čtení textového souboru, porovnání řetězců. Zadání: V textovém souboru text.txt je uloženo několik řádků textu. Vytvořte makro, které určí nejdelší řádek z daného souboru. 1. Název
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íceAlgoritmizace a programování
Algoritmizace a programování Typy Základní (primitivní) datové typy Deklarace Verze pro akademický rok 2012/2013 1 Typy v jazyce Java Základní datové typy (primitivní datové typy) Celočíselné byte, short,
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íceIterátory v C++. int pole[20]; for (int *temp = pole, temp!= &pole[20]; temp++) { *temp = 0;
Iterátory v C++. Iterátor v C++ je vlastně taková obdoba ukazatelů pro kontejnery. Dříve, než se dostaneme k bližšímu vysvětlení pojmu iterátor, ukážeme si jednoduchý příklad, jak pracovat s obyčejným
VíceVážení zákazníci, dovolujeme si Vás upozornit, že na tuto ukázku knihy se vztahují autorská práva, tzv. copyright. To znamená, že ukázka má sloužit výhradnì pro osobní potøebu potenciálního kupujícího
Více9. Harmonické proudy pulzních usměrňovačů
Vážení zákazníci, dovolujeme si Vás upozornit, že na tuto ukázku knihy se vztahují autorská práva, tzv. copyright. To znamená, že ukázka má sloužit výhradnì pro osobní potøebu potenciálního kupujícího
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í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íceVýrazy a operátory. Operátory Unární - unární a unární + Např.: a +b
Výrazy a operátory i = 2 i = 2; to je výraz to je příkaz 4. Operátory Unární - unární a unární + Např.: +5-5 -8.345 -a +b - unární ++ - inkrement - zvýší hodnotu proměnné o 1 - unární -- - dekrement -
VíceZáklady programování. Úloha: Eratosthenovo síto. Autor: Josef Hrabal Číslo: HRA0031 Datum: 28.11.2009 Předmět: ZAP
Základy programování Úloha: Eratosthenovo síto Autor: Josef Hrabal Číslo: HRA0031 Datum: 28.11.2009 Předmět: ZAP Obsah 1 Zadání úkolu: 3 1.1 Zadání:............................... 3 1.2 Neformální zápis:.........................
VícePole a Funkce. Úvod do programování 1 Tomáš Kühr
Pole a Funkce Úvod do programování 1 Tomáš Kühr (Jednorozměrné) pole u Datová struktura u Lineární u Homogenní = prvky stejného datového typu u Statická = předem určený počet prvků u Pole umožňuje pohodlně
VíceÚvod do programování 8. hodina
Úvod do programování 8. hodina RNDr. Jan Lánský, Ph.D. Katedra informatiky a matematiky Fakulta ekonomických studií Vysoká škola finanční a správní 2015 Umíme z minulé hodiny Algoritmy Hornerovo schéma
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íceProstory jmen. při vkládání několika hlavičkových souborů může vzniknout kolize. logika.h const int x=5; typedef struct {...
Proudy v C++ Jmenné prostory Prostory jmen při vkládání několika hlavičkových souborů může vzniknout kolize zeleznice.h const int x=10; typedef struct {... } Hradlo; logika.h const int x=5; typedef struct
VíceProgramová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íceProgramovací jazyk Pascal
Programovací jazyk Pascal Syntaktická pravidla (syntaxe jazyka) přesná pravidla pro zápis příkazů Sémantická pravidla (sémantika jazyka) pravidla, která každému příkazu přiřadí přesný význam Všechny konstrukce
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 - operátor je speciální
VíceČísla a aritmetika. Řádová čárka = místo, které odděluje celou část čísla od zlomkové.
Příprava na cvčení č.1 Čísla a artmetka Číselné soustavy Obraz čísla A v soustavě o základu z: m A ( Z ) a z (1) n kde: a je symbol (číslce) z je základ m je počet řádových míst, na kterých má základ kladný
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í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íceJazyk C++, některá rozšíření oproti C
Karel Müller, Josef Vogel (ČVUT FIT) Jazyk C++, některá rozšíření oproti C BI-PA2, 2011, Přednáška 1 1/22 Jazyk C++, některá rozšíření oproti C Ing. Josef Vogel, CSc Katedra softwarového inženýrství Katedra
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íceImplementace LL(1) překladů
Překladače, přednáška č. 6 Ústav informatiky, FPF SU Opava sarka.vavreckova@fpf.slu.cz Poslední aktualizace: 30. října 2007 Postup Programujeme syntaktickou analýzu: 1 Navrhneme vhodnou LL(1) gramatiku
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í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í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íceZáklady PERLu snadno a rychle
Základy PERLu snadno a rychle Začínáme Začneme tak, že si vytvoříme třeba soubor hellopl, do souboru napíšeme: print "Hello world\n"; Pak soubor nastavíme jako spustitelný: $ chmod +x hellopl A teď si
VícePráce se soubory. Základy programování 2 Tomáš Kühr
Práce se soubory Základy programování 2 Tomáš Kühr Soubory z pohledu C Soubor zjednodušeně chápeme jako posloupnost bytů uložených někde na disku Datový proud (anglicky stream) Ještě obecnější přístup
VíceMartin Flusser. Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague. October 17, 2016
ZPRO cvičení 2 Martin Flusser Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague October 17, 2016 Outline I 1 Outline 2 Proměnné 3 Proměnné - cvičení 4 Funkce 5 Funkce
VíceVISUAL BASIC. Práce se soubory
VISUAL BASIC Práce se soubory Práce se soubory 1/2 2 Vstupní data pro programy bývají uloženy do souborů Vstupy pro výpočet, nastavení vzhledu aplikace Výsledky práce programu je potřeba uchovat uložit
Více1.2 Realizace èekání pomocí jednoduché programové smyèky Pøíklad 3: Chceme-li, aby dítì blikalo baterkou v co nejpøesnìjším intervalu, øekneme mu: Roz
Vážení zákazníci, dovolujeme si Vás upozornit, že na tuto ukázku knihy se vztahují autorská práva, tzv. copyright. To znamená, že ukázka má sloužit výhradnì pro osobní potøebu potenciálního kupujícího
Více.include "m32def.inc" // Konstanty.equ N = 5 // Počet prvků v poli.equ PRVNI = 3 // První číslo v poli
Příklad č. 1 Vytvořte v paměti RAM pole, umístěte jen v paměti SRAM od začátku, jeho velikost bude dána konstantou N. Pole naplňte, přičemž hodnota prvního prvku bude dána konstantou PRVNI, a další prvky
VíceProměnná. Datový typ. IAJCE Cvičení č. 3. Pojmenované místo v paměti sloužící pro uložení hodnoty.
Proměnná Pojmenované místo v paměti sloužící pro uložení hodnoty. K pojmenování můžeme použít kombinace alfanumerických znaků, včetně diakritiky a podtržítka Rozlišují se velká malá písmena Název proměnné
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íce9.3.2010 Program převod z desítkové na dvojkovou soustavu: /* Prevod desitkove na binarni */ #include <stdio.h>
9.3.2010 Program převod z desítkové na dvojkovou soustavu: /* Prevod desitkove na binarni */ #include int main(void) { int dcislo, kolikbcislic = 0, mezivysledek = 0, i; int vysledek[1000]; printf("zadejte
VíceMnožina v C++ (set, multiset).
Množina v C++ (set, multiset). Množina je datová struktura, ve které jsou uloženy nějaké prvky. V množině nesmí být dva stejné prvky. Naopak multimnožina může obsahovat i stejné prvky. Nad množinou lze
Více7. Datové typy v Javě
7. Datové typy v Javě Primitivní vs. objektové typy Kategorie primitivních typů: integrální, boolean, čísla s pohyblivou řádovou čárkou Pole: deklarace, vytvoření, naplnění, přístup k prvkům, rozsah indexů
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í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íceProgramování v C++, 2. cvičení
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 Přehled 1 Operátory new a delete 2 3 Operátory new a delete minule
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íceVÝUKOVÝ MATERIÁL. Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632 Číslo projektu
VÝUKOVÝ MATERIÁL Identifikační údaje školy Vyšší odborná škola a Střední škola, Varnsdorf, příspěvková organizace Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632
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íceSpínaèe jsou elektrické pøístroje, které slouží k zapínání, pøepínání a vypínání elektrických obvodù a spotøebièù. Podle funkce, kterou vykonávají, je
Vážení zákazníci, dovolujeme si Vás upozornit, že na tuto ukázku knihy se vztahují autorská práva, tzv. copyright. To znamená, že ukázka má sloužit výhradnì pro osobní potøebu potenciálního kupujícího
VíceIvana Linkeová SPECIÁLNÍ PŘÍPADY NURBS REPREZENTACE. 2 NURBS reprezentace křivek
25. KONFERENCE O GEOMETRII A POČÍTAČOVÉ GRAFICE Ivana Lnkeová SPECIÁLNÍ PŘÍPADY NURBS REPREZENTACE Abstrakt Příspěvek prezentuje B-splne křvku a Coonsovu, Bézerovu a Fergusonovu kubku jako specální případy
VícePřednáška 7. Celočíselná aritmetika. Návratový kód. Příkazy pro větvení výpočtu. Cykly. Předčasné ukončení cyklu.
Přednáška 7 Celočíselná aritmetika. Návratový kód. Příkazy pro větvení výpočtu. Cykly. Předčasné ukončení cyklu. 1 Příkaz expr výraz Celočíselná aritmetika I Zašle na standardní výstup vyhodnocení výrazu
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íceVstupní a vstupní proudy v C++
Programovací jazyk C++ MZLU - PEF - Ústav informatiky 11. října 2007 Vstup na terminál a čtení z něj Používá se knihovna iostream. Pro výstup lze použít standardní výstup cout. nebo chybový výstup cerr.
VícePROGRAMOVÁNÍ V SHELLU
PROGRAMOVÁNÍ V SHELLU Prostředí, jazyk, zdrojový kód chceme-li posloupnost jistých příkazů používat opakovaně, případně z různých míst adresářové struktury, můžeme tuto posloupnost uložit souboru, který
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íceVector datový kontejner v C++.
Vector datový kontejner v C++. Jedná se o datový kontejner z knihovny STL jazyka C++. Vektor je šablona jednorozměrného pole. Na rozdíl od "klasického" pole má vector, mnoho užitečných vlastností a služeb.
VíceVÝUKOVÝ MATERIÁL. Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632 Číslo projektu
VÝUKOVÝ MATERIÁL Identifikační údaje školy Vyšší odborná škola a Střední škola, Varnsdorf, příspěvková organizace Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632
VíceOBJEKTOVÉ PROGRAMOVÁNÍ V C++ V PŘÍKLADECH 8 Proudová knihovna 8.1 Hierarchie proudů... 8-1 8.2 Standardně zavedené proudy... 8-1 8.
David MATOUŠEK OBJEKTOVÉ PROGRAMOVÁNÍ V C++ V PØÍKLADECH Praha 2011 David Matoušek Objektové programování v C++ v pøíkladech Lektoroval Ing. Bohumil Brtník, Ph.D. Bez pøedchozího písemného svolení nakladatelství
VícePráce se soubory. Úvod do programování 2 Tomáš Kühr
Práce se soubory Úvod do programování 2 Tomáš Kühr Soubory z pohledu C u Soubor chápeme jako posloupnost bytů uložených na disku u Datový proud (anglicky stream) u Ještě obecnější přístup u Sjednocuje
VíceDědičnost. Časová náročnost lekce: 3 hodiny Datum ukončení a splnění lekce: 23.března
Dědičnost Cíle lekce Cílem lekce je naučit se pracovat a využívat dědičnosti při návrhu a tvorbě programů. Lekce je zaměřena hlavně na jednoduchou dědičnost. Bude rovněž vysvětlen rozdíl mezi dědičností
VíceSada 1 - Základy programování
S třední škola stavební Jihlava Sada 1 - Základy programování 07. Základní příkazy vstup a výstup hodnot Digitální učební materiál projektu: SŠS Jihlava šablony registrační číslo projektu:cz.1.09/1.5.00/34.0284
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ícekonstruktory a destruktory (o)
konstruktory a destruktory (o) - slouží k ovlivnění vzniku (inicializace) a zániku (úklid) objektu - základní myšlenkou je, že proměnná by měla být inicializována (nastavena do počátečního stavu) a zároveň
Vícecyklus s daným počtem opakování cyklus s podmínkou na začátku (cyklus bez udání počtu opakování)
Řídící příkazy: if podmíněný příkaz switch přepínač for while cyklus s daným počtem opakování cyklus s podmínkou na začátku (cyklus bez udání počtu opakování) if logický_výraz příkaz; příkaz; příkaz; Podmínka
VíceTřetí skupina zadání projektů do předmětu Algoritmy II, letní semestr 2017/2018
Třetí skupina zadání projektů do předmětu Algoritmy II, letní semestr 2017/2018 doc. Mgr. Jiří Dvorský, Ph.D. 24. dubna 2018 Verze zadání 24. dubna 2018 První verze 1 1 Hašovací tabulka V tomto zadání
Více18. února 2015, Brno Připravil: David Procházka. Programovací jazyk C++
18. února 2015, Brno Připravil: David Procházka Vstupní a výstupní proudy v C++ Programovací jazyk C++ Vstup dat do programu Strana 2 / 26 Obsah přednášky 1 Vstup dat do programu 2 Terminál 3 Textový soubor
VíceAPS mini.ed programová nadstavba pro základní vyhodnocení docházky. Příručka uživatele verze 2.2.0.6
APS mini.ed programová nadstavba pro základní vyhodnocení docházky Příručka uživatele verze 2.2.0.6 APS mini.ed Příručka uživatele Obsah Obsah... 2 Instalace a konfigurace programu... 3 Popis programu...
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í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íce6 Příkazy řízení toku
6 Příkazy řízení toku Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost příkazům pro řízení toku programu. Pro všechny tyto základní
Více1. D Y N A M I C K É DAT O V É STRUKTUR Y
1. D Y N A M I C K É DAT O V É STRUKTUR Y Autor: Petr Mik Abychom se mohli pustit do dynamických datových struktur, musíme se nejdřív podívat na datový typ ukazatel. 1. D AT O V Ý TYP U K A Z AT E L Datové
VíceDatové typy v Javě. Tomáš Pitner, upravil Marek Šabo
Datové typy v Javě Tomáš Pitner, upravil Marek Šabo Úvod k datovým typům v Javě Existují dvě základní kategorie datových typů: primitivní a objektové Primitivní v proměnné je uložena přímo hodnota např.
VíceVLASTNOSTI PLOŠNÝCH SPOJÙ
Vážení zákazníci, dovolujeme si Vás upozornit, že na tuto ukázku knihy se vztahují autorská práva, tzv. copyright. To znamená, že ukázka má sloužit výhradnì pro osobní potøebu potenciálního kupujícího
Vícefor (int i = 0; i < sizeof(hodnoty) / sizeof(int); i++) { cout<<hodonoty[i]<< endl; } cin.get(); return 0; }
Pole Kdybychom v jazyce C++chtěli načíst větší počet čísel nebo znaků a všechny bylo by nutné všechny tyto hodnoty nadále uchovávat v paměti počítače, tak by bylo potřeba v paměti počítače alokovat stejný
VíceVkládání pomocí Viterbiho algoritmu
Vkládání pomocí Vterbho algortmu Andrew Kozlk KA MFF UK C Vkládání pomocí Vterbho algortmu Cíl: Využít teor konvolučních kódů. Motvace: Vterbho dekodér je soft-decson dekodér. Každému prvku nosče přřadíme
Vícemap, multimap - Asociativní pole v C++.
map, multimap - Asociativní pole v C++. Jedná se o asociativní pole. V asociativním poli jsou uloženy hodnoty ve tvaru (klíč,hodnota), kde klíč je vlastně "index" prvku. Klíčem může být libovolný objekt,
VíceÚvodem... 9 Kapitola 1 Karetních
Úvodem... 9 Základní znalosti o programovacích jazycích...10 Jazyk C# a platforma.net...10 Visual C# 2010 Express...11 Instalace platformy.net 4.0 a Visual C# 2010 Express...11 Zdrojový kód aplikací...12
VícePříklad : String txt1 = new String( Ahoj vsichni! ); //vytvoří instanci třídy String a přiřadí ji vnitřní hodnotu Ahoj vsichni!
Java práce s řetězci Trochu povídání.. Řetězce jsou v Javě reprezentovány instancemi tříd StringBuffer a String. Tyto třídy jsou součástí balíčku java.lang, tudíž je možno s nimi pracovat ihned bez nutného
VíceProgramování v jazyce C pro chemiky (C2160) 4. Textové řetězce, zápis dat do souboru
Programování v jazyce C pro chemiky (C2160) 4. Textové řetězce, zápis dat do souboru Textové řetězce V jazyce C neexistuje typ proměnné, který by byl určen výhradně pro ukládání textu V jazyce C používáme
VíceÚvod do programování 7. hodina
Úvod do programování 7. hodina RNDr. Jan Lánský, Ph.D. Katedra informatiky a matematiky Fakulta ekonomických studií Vysoká škola finanční a správní 2015 Umíme z minulé hodiny Syntax Znaky Vlastní implementace
VícePřednáška 4. Regulární výrazy. Filtry grep, sed a awk. Úvod do Operačních Systémů Přednáška 4
1 Přednáška 4 Regulární výrazy. Filtry grep, sed a awk. 2 grep grep [přepínače] vzor [soubory] Implicitně vypíše na standardní výstup řádky, které obsahují zadaný vzor. Vzor může být definován základním
Více- znakové konstanty v apostrofech, např. a, +, (znak mezera) - proměnná zabírá 1 byte, obsahuje kód příslušného znaku
Znaky - standardní typ char var Z, W: char; - znakové konstanty v apostrofech, např. a, +, (znak mezera) - proměnná zabírá 1 byte, obsahuje kód příslušného znaku - v TP (často i jinde) se používá kódová
VícePráce s binárními soubory. Základy programování 2 Tomáš Kühr
Práce s binárními soubory Základy programování 2 Tomáš Kühr Binární soubory Mohou mít libovolnou strukturu Data jsou uložena ve stejné podobě jako v paměti za běhu programu Výhody: Pro uložení je potřeba
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íceA7B38UOS Úvod do operačních systémů. 6. Cvičení. Příkazy sed a awk
A7B38UOS Úvod do operačních systémů 6. Cvičení Příkazy sed a awk sed sed [přepínače] 'příkaz' [soubory] sed [přepínače] -f skript [soubory] Stream editor - edituje neinteraktivně jeden nebo více souborů.
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íceVážení zákazníci, dovolujeme si Vás upozornit, že na tuto ukázku knihy se vztahují autorská práva, tzv. copyright. To znamená, že ukázka má sloužit výhradnì pro osobní potøebu potenciálního kupujícího
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í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íce