Ukazatele. Paměť počítače Víte, jak velkou paměť má váš počítač? Ovládací panely/systém Víte, kolik je 1KiB,1kB, 1MB, 1GiB(ČSN IEC , 1998)?
|
|
- Pavel Mareš
- před 7 lety
- Počet zobrazení:
Transkript
1 1 Přírava studijního rogramu Informatika je odorována rojektem financovaným z Evroského sociálního fondu a rozočtu hlavního města Prahy. Praha & EU: Investujeme do vaší budoucnosti roměnná tyu ukazatel oerace reference oerace dereference komatibilita ukazatelů ukazatelová aritmetika ole a ukazatele dynamické roměnné dealokace dynamických roměnných BI-PA1 Programování a algoritmizace 1, ZS Katedra teoretické informatiky Miroslav Balík Fakulta informačních technologií České vysoké učení technické 2/26 Paměť očítače Víte, jak velkou aměť má váš očítač? Ovládací anely/systém Víte, kolik je 1KiB,1kB, 1MB, 1GiB(ČSN IEC , 1998)? Jednotka Značka B kb KiB Kilobyte kb 00 1 ~0,9766 Kibibyte KiB 24 1,024 1 Megabyte MB ~976,6 Mebibyte MiB ~48,6 24 Gigabyte GB ,5 Gibibyte GiB 2 30 bytů ~ rog8-mocniny2.c Jak vysat adresy roměnných? rog8-adresy.c Obsah roměnné tyu ukazatel na T se cháe jako adresa roměnné tyu T (známe již arametry tyu ukazatel) Proměnnou tyu ukazatel na T zavedeme deklarací T *; Tuto roměnnou můžeme inicializovat ukazatelem na roměnnou x tyu int (adresou roměnné x) T * = &x; nebo ji řiřadit ukazatel na roměnnou x tyu int (adresu roměnné x) = &x; Unární refixový oerátor & označuje oeraci reference Je-li X roměnná tyu T, ak výsledkem oerace &X je ukazatel na roměnnou X (adresa roměnné X) a je tyu T*, tzn. ukazatel na T Příklad (rog8-ukazatele1.c) c = &c; 3/26 4/26 Nebudeme se zabývat číselnými adresami Skutečnost, že roměnná tyu ukazatel obsahuje adresu roměnné x vyjádříme šikou z na x Předchozí říklad ještě jednou: c = &c; i i c c *c = &c; Dereference Chceme-li oužít roměnnou, na kterou ukazuje ukazatel, vyjádříme to omocí unárního oerátoru dereference * Je-li X ukazatel tyu T*, ak *X označuje roměnnou tyu T, na kterou ukazuje ukazatel X Příklad (rog8-ukazatele2.c) c = &c; i i *i *i = ; *c = a ; c c a *c 5/26 6/26
2 2 Přiřazení ukazatelů Pro ty ukazatel na T (T*) ty T nazýváme doménovým tyem ukazatele Komatibilními tyy ukazatel jsou takové, které mají stejný doménový ty Proměnné tyu ukazatel je třeba řiřadit komatibilní ukazatel int i, *i; int* char* i = &i; /* komatibilni tyy */ int* i = &c; /* nekomatibilni tyy */ Přiřazení ukazatelů Co může zůsobit, řiřadíme-li roměnné nekomatibilní ukazatel int i, *i; i = &c; /* romenna tyu int* ukazuje na romennou tyu char */ c = &i; /* romenna tyu char* ukazuje na romennou tyu int */ *i = 0; /* vynuluji se 4 byty ocinaje adresou ulozenou v i */ Přiřazení nekomatibilního ukazatele je v C ouze varovné hlášení *c = 0; /* vynuluje se byte na adrese ulozene v c */ viz říklad rog8-ukazatele3.c 7/26 8/26 Přiřazení ukazatelů, oznámka Uložení čísla int 0x4A 3B 2C 1D v aměti očítače: Little endian (Intel) 1D 2C 3B 4A (adresy rostou dorava) Big endian (Motorola, SPARC, IBM) 4A 3B 2C 1D Middle-endian (Mixed endian) 3B 4A 1D 2C nebo 2C 1D 4A 3B Bi-endian (umí řeínat) ARM, PowerPC, Alha, SPARC V9, MIPS, PA-RISC and IA64) NULL ukazatel Jako rázdný, nelatný ukazatel, který neukazuje na žádnou roměnnou, slouží v jazyku C hodnota 0 Symbolickým označením tohoto ukazatele je NULL Dereference rázdného ukazatele zůsobí chybu ři běhu rogramu Příklad rog8-ukazatele4.c: int * = NULL; system( PAUSE ); 9/26 /26 Ukazatelová aritmetika Ukazatelé mohou být oerandy sčítání, odčítání a všech relačních oerátorů Dovolené kombinace a ty výsledku: T* + int -> T* T* - int -> T* T* - T* -> int T* relo T* -> int Přičtení n k ukazateli tyu T* znamená jeho změnu o n-násobek délky tyu T, odobně odečtení a rozdíl ukazatelů int a[], * = &a[0]; *( + 3) = ; /* do a[3] se uloží */ /* vynulování ole a */ for ( = &a[0]; <= &a[9]; ++) * = 0; /* nebo */ for ( = &a[0]; <= &a[9]; *++ = 0); Jméno ole rvků tyu T = konstantní ukazatel tyu T* ukazující na rvek s indexem 0 int a[], *a, i; a = a; totéž co a = &a[0] *(a + 2) = 3; totéž co a[2] = 3 *(a + i) = 4; totéž co a[i] = 4; for (a = a; a <= a + 9; *a++ = 0); a++; Chyba (roč?) Uřesnění indexace: X [ Y ], kde rvní výraz je tyu ukazatel na T a druhý tyu int, výsledek je tyu T Výraz X [ Y ] je ekvivalentní s *( ( X ) + ( Y ) ) a[3] = ; totéž co *(a + 3) = ; 11/26 12/26
3 3 Podívejte se na říklad rog8-vektory1.c skalární součin dvou vektorů, arametry funkcí secifikovány jako ukazatele Podívejte se na říklad rog8-vektory2.c skalární součin dvou vektorů, růchody olem omocí ukazatelové aritmetiky void ctivektor(int *v, int n) { int i; rintf zadejte %d celych cisel\n, n); scanf( %d, &v[i]); void ctivektor(int v[], int n) { int *, *n = v+n; rintf( zadejte %d celych cisel\n, n); for (=v; <n; ++) scanf( %d, ); void ctivektor(int *v, int n) { int i; rintf( zadejte %d celych cisel\n, n); scanf( %d, &v[i]); 13/26 14/26 - PALINDROM Palindrom je alesoň dvojznakové slovo, které vychází stejně čteno odředu i odzadu, nař. kajak Pro zjištění, zda slovo je alindrom, zavedeme funkci #define MAXDELKA 0 int jepalindrom(char *s); char slovo[maxdelka+1]; neochoen neotoen Dne moto: Palindrom i sáchá sí mord, Nil a otom End. rintf( zadejte slovo obsahujici nanejvys %d znaku:, MAXDELKA); scanf( %s, slovo); rintf( zadali jste %s\n, slovo); rintf( toto slovo ); if (jepalindrom(slovo)) rintf( je ); else rintf( neni ); rintf( alindrom\n ); Jak zjistit, že slovo je alindrom slovo délky d bude uloženo v oli s očínaje indexem 0 a konče indexem d-1 (hodnotou rvku s indexem d bude závěrečná nula) aby slovo bylo alindrom, musí latit: s[0] == s[d-1] s[1] == s[d-2] test na rovnost skončíme, až dosáhneme oloviny délky slova Řešení (rog8-alindrom1.c): int delka = strlen(s), olovina = delka/2, i; for (i=0; i<olovina; i++) if (s[i]!=s[delka-i-1]) 15/26 16/26 Testy rovnosti znaků můžeme rovádět omocí dvou roměnných tyu ukazatel na char, z nichž rvní nastavíme na rvní znak a budeme ji zvětšovat a druhou nastavíme na oslední znak a budeme ji zmenšovat Test budeme oakovat, okud rvní ukazatel bude menší než druhý ukazatel Řešení (rog8-alindrom2.c): char *, *q; char =s, q=s+strlen(s)-1; for (=s, q=s+strlen(s)-1; <q; ++,q--) while (<q) if (*!= *q) if (*++!= *q--) 17/26 A něco na závěr řetězců a ukazatelů Literál tvořený oslouností znaků, která je uzavřena do uvozovek, je tyu char* (řiomeňme, že v aměti je rerezentován oslouností znaků zakončenou nulovým bytem) Podívejte se na říklad rog8-alindrom3.c #define SLOVO kajak int jepalindrom(char *s); rintf( slovo %s, SLOVO); if (jepalindrom(slovo)) rintf( je ); else rintf( neni ); rintf( alindrom\n ); jepalindrom( abcd ); 18/26
4 4 Dynamické roměnné v jazyku C slouží ředevším ro: ředávání výstuních arametrů rocedurám a funkcím ředávání ole jako arametru rocedurám a funkcím řístu k dynamickým roměnným Dynamická roměnná není zavedena deklarací, ale je vytvořena seciální funkcí (oerátorem, říkazem) Dynamická roměnná nemá jméno, a roto k ní můžeme řistuovat ouze omocí ukazatele (adresy) V jazyku C vytvoříme dynamickou roměnnou omocí funkce malloc arametrem funkce je očet bytů, které budou vnitřní rerezentací roměnné funkce zařídí, že ve volné aměti je rezervováno místo ro roměnnou s danou velikostí vnitřní rerezentace a jejím výsledkem je adresa tohoto místa (tzn. ukazatel na dynamicky vytvořenou roměnnou) funkce je deklarována tak, že vrací výsledek tyu void*; volání funkce je roto třeba řetyovat Dynamické roměnné Příklad (rog8-dynrom.c) int *; = (int *)malloc(sizeof(int)); rintf( *=%d\n, *); system( PAUSE ); Jak je to v aměti očítače zásobník řetyování na ty int* halda 19/26 20/26 Dynamicky vytvořené ole Dynamicky vytvořené roměnné jednoduchých tyů obvykle nejsou třeba Užitečné je dynamicky vytvořené ole Příklad: skalární součin dvou vektorů, očet složek je dán vstuními daty funkce ctivektor dynamicky vytvoří ole, jehož délka je dána arametrem, a řečte jeho rvky z klávesnice int *ctivektor(int n) { int i, *; = (int *)malloc(sizeof(int)*n); rintf( zadejte %d celych cisel\n, n); scanf( %d, &[i]); return ; Ve funkci main nebudou deklarována ole, ale roměnné tyu ukazatel, do nichž se uloží adresy olí dynamicky vytvořených funkcí ctivektor Dynamicky vytvořené ole rog8-dynole.c int ctiint(int min, int max) { int *ctivektor(int n) { int skalarnisoucin(int x[], int y[], int n) { int *x, *y, n; rintf( zadejte ocet slozek vektoru: ); n = ctiint(1, INT_MAX); rintf( vektor x\n ); x = ctivektor(n); rintf( vektor y\n ); y = ctivektor(n); rintf( skalarni soucin vektoru x a y je %d\n, skalarnisoucin(x, y, n)); 21/26 22/26 Příklad: = (int *)malloc(sizeof(int)); q = (int *)malloc(sizeof(int)); Příklad: = (int *)malloc(sizeof(int)); q = (int *)malloc(sizeof(int)); q = ; Co s dynamicky vytvořenou roměnnou s hodnotu 20, na kterou ukazovala roměnná q (není řístuná)? Před ztrátou ukazatele na ni je třeba ji dealokovat (vrátit aměť, kterou zabírá, zět do volné aměti) 23/26 24/26
5 5 Dealokaci rovádí funkce free = (int*)malloc(sizeof(int)); q = (int*)malloc(sizeof(int)); free(q); q = ; Pamět očítače rogram vytvořený řekladačem jazyka C využívá ěti úseků aměti: aměť kódu aměť konstant aměť globálnich roměnných zásobník ro řidělení aměti arametrům a lokálním roměnným funkcí aměť ro dynamické roměnné Paměť řidělená modře zarámované roměnné se uvolní a je k disozici ro další malloc Podívejte se na rogram rog8-amet.c, který vyíše adresy z těchto úseků 25/26 26/26
BI-PA1 Programování a algoritmizace 1, ZS Katedra teoretické informatiky
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 Ukazatele BI-PA1
VíceBI-PA1 Programování a algoritmizace 1 Katedra teoretické informatiky
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 Ukazatele BI-PA1
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í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í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í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íceBI-PA1 Programování a algoritmizace 1 Katedra teoretické informatiky
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 Pole, řetězce BI-PA1
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íceOperační systémy. Cvičení 4: Programování v C pod Unixem
Operační systémy Cvičení 4: Programování v C pod Unixem 1 Obsah cvičení Řídící struktury Funkce Dynamická alokace paměti Ladění programu Kde najít další informace Poznámka: uvedené příklady jsou dostupné
VíceBI-PA1 Programování a algoritmizace 1, ZS Katedra teoretické informatiky
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 Vstup, výstup BI-PA1
VíceBI-PA1 Programování a algoritmizace 1 Katedra teoretické informatiky
Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Vstup, výstup BI-PA1 Programování a algoritmizace 1 Katedra teoretické informatiky Miroslav Balík Fakulta informačních technologií České
VíceUkazatele #2, dynamická alokace paměti
Ukazatele #2, dynamická alokace paměti BI-PA1 Programování a Algoritmizace 1 Miroslav Baĺık, Ladislav Vagner a Josef Vogel Katedra teoretické informatiky a Katedra softwarového inženýrství Fakulta informačních
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íceAlgoritmizace a programování
Algoritmizace a programování Strukturované proměnné Pole (array), ukazatele (pointer) Jazyk C České vysoké učení technické Fakulta elektrotechnická Ver.1.10 J. Zděnek 2015 Pole (array) (1) Pole je množina
VíceUkazatele #1, struktury
Ukazatele #1, struktury BI-PA1 Programování a Algoritmizace 1 Miroslav Baĺık, Ladislav Vagner a Josef Vogel Katedra teoretické informatiky a Katedra softwarového inženýrství Fakulta informačních technologíı
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í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í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íceDynamické programování
ALG Dynamické rogramování Nejdelší rostoucí odoslounost Otimální ořadí násobení matic Nejdelší rostoucí odoslounost Z dané oslounosti vyberte co nejdelší rostoucí odoslounost. 5 4 9 5 8 6 7 Řešení: 4 5
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í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í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í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í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ÁKLADY INFORMATIKY 14ZINF. Číselné soustavy
ZÁKLADY INFORMATIKY 14ZINF Číselné soustavy Data v číslicových počítačích I. nejčastěji počítače pracují s údaji vyjádřenými ve dvojkové soustavě, tedy pomocí číslic 0 a 1 důvod dvojkové soustavy byl ten,
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) Š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í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íceALGORITMIZACE A DATOVÉ STRUKTURY (14ASD) 1. cvičení
ALGORITMIZACE A DATOVÉ STRUKTURY (14ASD) 1. cvičení Lucie Krčálová Ústav aplikované informatiky v dopravě (K614) email: lkrcalova@fd.cvut.cz místnosti : F211, K109 (semestr - ČT), Horská budova A 4. patro
VíceZpůsobilost. Data a parametry. Menu: QCExpert Způsobilost
Zůsobilost Menu: QExert Zůsobilost Modul očítá na základě dat a zadaných secifikačních mezí hodnoty různých indexů zůsobilosti (caability index, ) a výkonnosti (erformance index, ). Dále jsou vyočítány
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íceAlgoritmizace a programování. Ak. rok 2012/2013 vbp 1. ze 44
Algoritmizace a programování Ak. rok 2012/2013 vbp 1. ze 44 Vladimír Beneš Petrovický K101 katedra matematiky, statistiky a informačních technologií vedoucí katedry E-mail: vbenes@bivs.cz Telefon: 251
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í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íceAbstraktní třídy, polymorfní struktury
Karel Müller, Josef Vogel (ČVUT FIT) Abstraktní třídy, polymorfní struktury BI-PA2, 2011, Přednáška 9 1/32 Abstraktní třídy, polymorfní struktury Ing. Josef Vogel, CSc Katedra softwarového inženýrství
VíceS y s t é m e l e k t r o n i c k é h o b a n k o v n i c t v í. Napojení na účetní systémy popis exportních / importních souborů
S y s t é m e l e k t r o n i c k é h o b a n k o v n i c t v í M u l t i C a s h Naojení na účetní systémy ois exortních / imortních souborů OBSAH OBECNÉ 2 TUZEMSKÉ PLATEBNÍ PŘÍKAZY 3 ZAHRANIČNÍ PLATEBNÍ
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ícePokud světlo prochází prostředím, pak v důsledku elektromagnetické interakce s částicemi obsaženými
1 Pracovní úkoly 1. Změřte závislost indexu lomu vzduchu na tlaku n(). 2. Závislost n() zracujte graficky. Vyneste také závislost závislost vlnové délky sodíkové čáry na indexu lomu vzduchu λ(n). Proveďte
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í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í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íceStruktura programu v době běhu
Struktura programu v době běhu Miroslav Beneš Dušan Kolář Struktura programu v době běhu Vztah mezi zdrojovým programem a činností přeloženého programu reprezentace dat správa paměti aktivace podprogramů
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í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íceJazyk C Program v jazyku C má následující strukturu: konstanty nebo proměnné musí Jednoduché datové typy: Strukturované datové typy Výrazy operátory
Jazyk C Program v jazyku C má následující strukturu: Direktivy procesoru Globální definice (platné a známé v celém programu) Funkce Hlavička funkce Tělo funkce je uzavřeno mezi složené závorky { Lokální
Více3. přednáška. Obsah: Řídící struktury sekvence, if-else, switch, for, while, do-while. Zpracování posloupnosti
Obsah: Řídící struktury sekvence, if-else, switch, for, while, do-while. Zpracování posloupnosti 3. přednáška nalezení největšího prvku, druhého nejvyššího prvku, algoritmus shozeného praporku. Algoritmizace
VíceAnalytická metoda aneb Využití vektorů v geometrii
KM/GVS Geometrické vidění světa (Design) nalytická metoda aneb Využití vektorů v geometrii Použité značky a symboly R, C, Z obor reálných, komleních, celých čísel geometrický vektor R n aritmetický vektor
VíceRacionální čísla, operátory, výrazy, knihovní funkce
Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Racionální čísla, operátory, výrazy, knihovní funkce BI-PA1 Programování a algoritmizace 1 Katedra teoretické informatiky Miroslav Balík
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í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íceSystémové struktury - základní formy spojování systémů
Systémové struktury - základní formy sojování systémů Základní informace Při řešení ať již analytických nebo syntetických úloh se zravidla setkáváme s komlikovanými systémovými strukturami. Tato lekce
VíceBI-EP1 Efektivní programování 1
BI-EP1 Efektivní programování 1 ZS 2011/2012 Ing. Martin Kačer, Ph.D. 2010-11 Martin Kačer Katedra teoretické informatiky Fakulta informačních technologií České vysoké učení technické v Praze Evropský
Více9. lekce Úvod do jazyka C 4. část Funkce, rekurze Editace, kompilace, spuštění Miroslav Jílek
9. lekce Úvod do jazyka C 4. část Funkce, rekurze Editace, kompilace, spuštění Miroslav Jílek 1/24 Editační prostření Kód programu lze editovat v jakémkoli textovém editoru. 2/24 Editační prostření Kód
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íceBI-PA1 Programování a Algoritmizace 1. Miroslav Baĺık, Ladislav Vagner a Josef Vogel. 7., 9. a 10. listopadu 2017
Pole, Řetězce BI-PA1 Programování a Algoritmizace 1 Miroslav Baĺık, Ladislav Vagner a Josef Vogel Katedra teoretické informatiky a Katedra softwarového inženýrství Fakulta informačních technologíı České
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í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íceZÁKLADY AUTOMATICKÉHO ŘÍZENÍ
VYSOKÁ ŠKOLA BÁŇSKÁ TECHNICKÁ UNIVERZITA OSTRAVA FAKULTA STROJNÍ ZÁKLADY AUTOMATICKÉHO ŘÍZENÍ 10. týden doc. Ing. Renata WAGNEROVÁ, Ph.D. Ostrava 2013 doc. Ing. Renata WAGNEROVÁ, Ph.D. Vysoká škola báňská
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íceRozklad problému na podproblémy, rekurze
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 Rozklad problému
VícePreprocesor. Karel Richta a kol. katedra počítačů FEL ČVUT v Praze. Karel Richta, Martin Hořeňovský, Aleš Hrabalík, 2016
Preprocesor Karel Richta a kol. katedra počítačů FEL ČVUT v Praze Karel Richta, Martin Hořeňovský, Aleš Hrabalík, 2016 Programování v C++, A7B36PJC 4/2016, Lekce 9b https://cw.fel.cvut.cz/wiki/courses/a7b36pjc/start
VíceRekurzivní algoritmy
Rekurzivní algoritmy prof. Ing. Pavel Tvrdík CSc. Katedra počítačových systémů Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010 Efektivní algoritmy (BI-EFA) ZS
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íce2) 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.
Informatika 10. 9. 2013 Jméno a příjmení Rodné číslo 1) Napište algoritmus pro rychlé třídění (quicksort). 2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus
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íceÚvod do jazyka C. Ing. Jan Fikejz (KST, FEI) 28. prosince Fakulta elektrotechniky a informatiky Katedra softwarových technologií
9 Fakulta elektrotechniky a informatiky Katedra softwarových technologií 28. prosince 2009 Struktury Struktury heterogenní struktura položky mohou být různých datových typů vystupuje jako jediný objekt
VíceProgramování v jazyce JavaScript
Programování v jazyce JavaScript Katedra softwarového inženýrství Fakulta informačních technologií České vysoké učení technické v Praze Pavel Štěpán, 2011 Operátory a příkazy BI-JSC Evropský sociální fond
VíceBI-PA1 Programování a algoritmizace 1 Katedra teoretické informatiky
Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Spojové struktury BI-PA1 Programování a algoritmizace 1 Katedra teoretické informatiky Miroslav Balík Fakulta informačních technologií
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íceBI-PA1 Programování a Algoritmizace 1. Miroslav Baĺık, Ladislav Vagner a Josef Vogel. 10., 12. a 13. října 2017
Proměnné, základní vstup a výstup BI-PA1 Programování a Algoritmizace 1 Miroslav Baĺık, Ladislav Vagner a Josef Vogel Katedra teoretické informatiky a Katedra softwarového inženýrství Fakulta informačních
Víceint ii char [16] double dd název adresa / proměnná N = nevyužito xxx xxx xxx N xxx xxx N xxx N
Struktura (union) - struktura a union jsou složené typy, které "v sobě" mohou obsahovat více proměnných - struktura obsahuje v každém okamžiku všechny své proměnné, union obsahuje (=je "aktivní") pouze
VíceRacionální čísla, operátory, výrazy, knihovní funkce
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 Racionální čísla,
Více1. série. Různá čísla < 1 44.
série Téma: Termínodeslání: Různá čísla ½ º Ò ½ ½º ÐÓ je řirozené q9+9 q 6+ 9 9 6 ¾º ÐÓ `5+ 6 998 není řirozené º ÐÓ Nechť c je řirozené číslo Rozhodněte, které z čísel c+ c a c c je větší a své tvrzení
VíceŘídící struktury, if, while, switch
Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Řídící struktury, if, while, switch BI-PA1 Programování a algoritmizace 1 Katedra teoretické informatiky Miroslav Balík Fakulta informačních
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íceProgramování v jazyce C pro chemiky (C2160) 3. Příkaz switch, příkaz cyklu for, operátory ++ a --, pole
Programování v jazyce C pro chemiky (C2160) 3. Příkaz switch, příkaz cyklu for, operátory ++ a --, pole Příkaz switch Příkaz switch provede příslušnou skupinu příkazů na základě hodnoty proměnné (celočíselné
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íceNapř.: // v hlavičkovém souboru nebo na začátku // programu (pod include): typedef struct { char jmeno[20]; char prijmeni[20]; int rok_nar; } CLOVEK;
Struktury - složený datový typ. - datový typ jehož položky jsou jiné proměnné: - používá obvykle dohromady s příkazem typedef nechci vypisovat opakovaně složitou deklaraci pomocí typedef udělám nový datový
Více4. Rekurze. BI-EP1 Efektivní programování Martin Kačer
4. Rekurze BI-EP1 Efektivní programování 1 ZS 2011/2012 Ing. Martin Kačer, Ph.D. 2010-11 Martin Kačer Katedra teoretické informatiky Fakulta informačních technologií České vysoké učení technické v Praze
Více2 Datové typy v jazyce C
1 Procedurální programování a strukturované programování Charakteristické pro procedurální programování je organizace programu, který řeší daný problém, do bloků (procedur, funkcí, subrutin). Původně jednolitý,
VíceMichal Krátký. Úvod do programovacích jazyků (Java), 2006/2007
Úvod do programovacích jazyků (Java) Michal Krátký 1 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íce4. Typ ukazatel, strukturované datové typy
Učební cíle a kompetence Anotace kapitoly Časová náročnost 4. Typ ukazatel, strukturované datové typy Po prostudování této kapitoly studující pochopí datový typ ukazatel, speciální ukazatelové operátory,
VíceProgramování v jazyce JavaScript
Programování v jazyce JavaScript Katedra softwarového inženýrství Fakulta informačních technologií České vysoké učení technické v Praze Pavel Štěpán, 2011 Syntaxe 1. část BI-JSC Evropský sociální fond
VíceAplikace Embedded systémů v Mechatronice. Michal Bastl A2/713a
Aplikace Embedded systémů v Mechatronice Michal Bastl A2/713a Aplikace Embedded systémů v Mechatronice Obsah přednášky: Opakování Pointery v C pole a řetězce předání funkci referencí Vlastní datové typy
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í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íceSměrová kalibrace pětiotvorové kuželové sondy
Směrová kalibrace ětiotvorové kuželové sondy Matějka Milan Ing., Ústav mechaniky tekutin a energetiky, Fakulta strojní, ČVUT v Praze, Technická 4, 166 07 Praha 6, milan.matejka@fs.cvut.cz Abstrakt: The
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í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í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í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íceProgramovací jazyk C++ Hodina 1
Programovací jazyk C++ Hodina 1 Používané překladače Bloodshed Dev C++ http://www.bloodshed.net/devcpp.html CodeBlocks http://www.codeblocks.org pokud nemáte již nainstalovaný překladač, stáhněte si instalátor
VíceAplikovaná informatika. Podklady předmětu Aplikovaná informatika pro akademický rok 2013/2014 Radim Farana. Obsah. Strom
8 Podklady ředmětu ro akademický rok 2013/2014 Radim Farana Obsah 2 Dynamické datové struktury. Strom. Binární stromy. Vyhledávací stromy. Vyvážené stromy. AVL stromy. Strom 3 Název z analogie se stromy.
VíceModel tenisového utkání
Model tenisového utkání Jan Šustek Semestrální rojekt do ředmětu Náhodné rocesy 2005 V této ráci se budu zabývat modelem tenisového utkání. Vstuními hodnotami budou úsěšnosti odání jednotlivých hráčů,
VíceImplementace numerických metod v jazyce C a Python
Fakulta elektrotechnická Katedra matematiky Dokumentace k semestrální práci Implementace numerických metod v jazyce C a Python 2013/14 Michal Horáček a Petr Zemek Vyučující: Mgr. Zbyněk Vastl Předmět:
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í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íceÚlohy domácí části I. kola kategorie C
65. ročník Matematické olymiády Úlohy domácí části I. kola kategorie C. Najděte všechny možné hodnoty součinu rvočísel, q, r, ro která latí (q + r) = 637. Řešení. evou stranu dané rovnice rozložíme na
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íce