BI-PA1 Programování a Algoritmizace 1. Miroslav Baĺık, Ladislav Vagner a Josef Vogel. 10., 12. a 13. října 2017
|
|
- Filip Valenta
- před 5 lety
- Počet zobrazení:
Transkript
1 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 technologíı České vysoké učení technické v Praze xvagner@fit.cvut.cz, vogeljos@fit.cvut.cz 10., 12. a 13. října 2017
2 Přehled Bity (bits), bajty (bytes), pamět počítače. Od bajtů k informacím. Datový typ int. Kódování celých čísel, dvojkový doplněk. Datový typ char. M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Proměnné, I/O, BI-PA1 2/46
3 Bity, bajty, pamět Bit nejmenší jednotka informace: hodnota 0 nebo 1, jednoduše implementovatelný v reálném světě (vyšší nebo nižší napětí, bistabilní klopný obvod, nabitý nebo nenabitý kondenzátor,... ). Bajt (byte) typicky 8 bitů: 2 8 = 256 různých hodnot, procesor má typicky přístup k bajtům, nikoli k jednotlivým bitům. Adresa jednoznačná identifikace bajtu v paměti: pořadové číslo bajtu (pozice bajtu), počítaná od počátku pamět ového prostoru, pamět ového čipu,.... Kapacita paměti celkový počet bajtů: Metrika: 1 KB = 1000 B, 1 MB = 1000 KB = B, 1 GB = 1000 MB = KB = B,..., Binárně - základem 2 10 = 1024 (IEC ): 1 KiB = 1024 B, 1 MiB = 1024 KiB = B, 1 GiB = 1024 MiB = KiB = B,.... M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Proměnné, I/O, BI-PA1 3/46
4 Pamět Operační pamět uchovává program a data v době běhu programu: velmi rychlá, obsah paměti je ztracen při výpadku napájení (volatile), drahá (cena za bajt). Externí pamět disk, CD/DVD, páska,... : o několik řádů pomalejší, obsah paměti zůstává zachován při vypnutí napájení (non-volatile), komplikovanější přístup k datům, levnější (cena za bajt). M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Proměnné, I/O, BI-PA1 4/46
5 Od bajtů k informacím Počítač (strojový kód) pracuje s bajty: nestará se o význam hodnot, nesnaží se jim porozumět, má přesná pravidla, jak bajty zpracovat (např. jak je sečíst). Uživatelé (lidé) potřebují ukládat informace (celá čísla, dekadická čísla, znaky, znakové řetězce,... ): aby mohla být informace uložena do paměti, musí být zakódována do jednoho či více bajtů, zakódovaná informace může umožňovat jen některé operace (např. znakové řetězce nelze odmocňovat). Vyšší programovací jazyky obvykle poskytují systém typů. Typ: reprezentuje nějaký druh informací (číslo, řetězec,... ), definuje množinu možných hodnot, definuje množinu dovolených operací, definuje kódování (jak je informace uložena v bajtech, kolik bajtů je třeba pro uložení informace). M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Proměnné, I/O, BI-PA1 5/46
6 Datové typy Programátor se ve vyšších programovacích jazycích nemusí starat o vnitřní reprezentaci informací: informace jsou uloženy v proměnných, proměnné mohou obsahovat určité typy hodnot, typicky proměnné mají určitý datový typ, který se v průběhu existence proměnné nemůže měnit. Příklad datový typ int v jazyku C: množinou hodnot je interval celých čísel od do (proč?), povolené operace jsou: aritmetické operace (+,,, /,... ), relační operace (<, <=, ==,... ), přiřazení hodnoty (=, + =,... ), další operace. Programovací jazyky mají obvykle několik primitivních datových typů (např. int). Další datové typy mohou být definovány programátorem (strukturované datové typy, pole,... ). M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Proměnné, I/O, BI-PA1 6/46
7 Proměnné Proměnná je pojmenovaný datový objekt obsahující nějakou hodnotu. Hodnota uložená v proměnné se v průběhu života proměnné může měnit. Proměnné jsou identifikovány svými jmény jednoznačnými identifikátory. Deklarace proměnné (jazyk C): int alpha; /* alpha je jméno proměnné */ Následující příkaz vypíše hodnotu proměnné typu int: printf ( "%d\n", alpha ); /* \n přidá nový řádek */ M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Proměnné, I/O, BI-PA1 7/46
8 Proměnné (pokračování) Přiřazení se použije pro změnu hodnoty uložené v proměnné: /* alpha má nějakou hodnotu */ alpha = 20; /* hodnota proměnné alpha je nyní 20, původní hodnota je zapomenuta */ Operátor přiřazení není rovnost: /* alpha má nějakou hodnotu */ alpha = 20; /* hodnota alpha je nyní 20 */ alpha = alpha + 1; /* ok, hodnota alpha je nyní 21 */ M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Proměnné, I/O, BI-PA1 8/46
9 Proměnné (pokračování) #include <stdio.h> int main ( void ) { int alpha = 0; } printf("%d\n", alpha); alpha = 37; printf("%d\n", alpha); return 0; M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Proměnné, I/O, BI-PA1 9/46
10 Proměnné inicializace #include <stdio.h> int main ( void ) { int alpha; /* proměnná alpha není inicializovaná! */ printf("%d\n", alpha); /* co je výstupem? */ alpha = 37; printf("%d\n", alpha); /* výstup je nyní 37 */ return 0; } M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Proměnné, I/O, BI-PA1 10/46
11 Globální proměnné #include <stdio.h> int alpha; /* globální proměnné jsou vždy inicializovány nulovými bajty */ int main ( void ) { printf("%d\n", alpha); /* výstup iniciální hodnoty globální proměnné je 0 */ alpha = 37; printf("%d\n", alpha); /* výstup je nyní 37 */ return 0; } M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Proměnné, I/O, BI-PA1 11/46
12 Funkce printf Knihovní funkce printf se používá pro: výpis fixního řetězce znaků, výpis hodnoty proměnné (hodnot proměnných), výpis hodnoty proměnné (hodnot proměnných) ve formátu definovaném uživatelem, výpis hodnoty výrazu (nikoli pouze hodnoty uložené v proměnné). Funkce printf konvertuje binární hodnotu(y) proměnné(ých) či výrazu(ů) do znakové podoby. M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Proměnné, I/O, BI-PA1 12/46
13 Funkce printf, typ int #include <stdio.h> int main ( void ) { int a, b; } a = 10; b = 20; printf("a = %d\n", a); /* a = 10 */ printf("%d + %d = %d\n", a, b, a + b); /* = 30 */ printf("%3d + %3d = %05d\n", a, b, a + b); /* = */ return 0; M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Proměnné, I/O, BI-PA1 13/46
14 Funkce scanf Standardní funkce scanf: čte znaky (např. stisky kláves klávesnice), konvertuje je, ukládá binární hodnotu(y) do proměnné(ých). M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Proměnné, I/O, BI-PA1 14/46
15 Funkce scanf, typ int #include <stdio.h> int main ( void ) { int x; } printf("napis cislo:\n"); scanf( "%d", &x ); /* povšimněme si & */ printf("cislo bylo %d\n", x ); return 0; M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Proměnné, I/O, BI-PA1 15/46
16 Funkce scanf Jak pracuje funkce scanf (datový typ int): přeskočí (ignoruje) všechny bílé znaky ze vstupu (mezery, nové řádky, tabelátory), pokusí se přečíst hodnotu (začne prvním znakem, jež není bílý; pro typ int musí být první znak bud dekadická číslice nebo znaménko + či, přečte všechny dekadické číslice, uloží binární reprezentaci čísla do uvedené proměnné, čtení končí na prvním znaku, který není dekadickou číslicí (pro typ int). To je např. mezera, odřádkování, písmeno,... M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Proměnné, I/O, BI-PA1 16/46
17 Funkce scanf #include <stdio.h> int main ( void ) { int x, y; } printf("vstup souradnic:\n"); scanf( "%d %d", &x, &y ); /* všimněme si, že jsou čteny hodnoty dvou proměnných */ printf("souradnice jsou (%d,%d)\n", x, y ); return 0; M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Proměnné, I/O, BI-PA1 17/46
18 Funkce scanf časté otázky Jak funkce scanf pracuje za specifických podmínek: Co se stane, když na vstupu nejsou žádné znaky? Funkce prostě čeká na vstup znaků. Kdy je vstup vlastně čten? Vypadá to, že nic není přečteno, dokud není stisknuta klávesa Enter. Skutečně, vstup je zpracován funkcí scanf teprve po stisknutí klávesy Enter. Důvodem je operační systém (OS). Znaky jsou OS ukládány do vyrovnávací paměti (bufferu) řádku a celý řádek je předán ke zpracování až po stisknutí klávesy Enter. Toto chování OS může být změněno zákazem bufferování. Mohu zjistit, že vstup je špatně (např. na vstupu je nějaký text místo čísla)? Ano, funkce scanf vrací počet úspěšných konverzí jako svou funkční (návratovou) hodnotu. M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Proměnné, I/O, BI-PA1 18/46
19 Funkce scanf časté otázky Jak funkce scanf pracuje za specifických podmínek: Co se stane, když zavolám funkci scanf na konci souboru (tzn. není už co číst - end-of-file)?. Funkce jednoduše skončí se čtením proměnných a vrátí počet úspěšných konverzí. Ten je ovšem menší, než bylo požadováno. Konec vstupu je signalizován nejen pro diskové soubory (přečtením posledního znaku), ale i při vstupu z klávesnice, a to stiskem Ctrl-D (UNIX) / Ctrl-Z (Win). Přeskočí funkce scanf chybné znaky (např. text, když se očekává číslo) ze vstupu? Když funkce scanf nemůže zkonvertovat vstupní znaky do předepsaného datového typu, nepřeskočí tyto znaky na vstupu. Čtení skončí na prvním znaku, který do znakové podoby dané konverzí nepatří. Toto chování může vést k nekonečnému cyklu (zacyklení), pokud funkce scanf není použita korektně. M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Proměnné, I/O, BI-PA1 19/46
20 Funkce scanf ošetření chyb... /* obsluha bankomatu */ int balance, x;... balance =...;... /* balance obsahuje zůstatek na účtu */ printf ( "Zadejte castku pro vyber:\n"); scanf ( "%d", &x );... /* vydat peníze - celkem x */ balance -= x; printf ( "Novy zustatek: %d\n", balance ); M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Proměnné, I/O, BI-PA1 20/46
21 Funkce scanf ošetření chyb... /* obsluha bankomatu */ int balance, x;... balance =...;... /* balance obsahuje zůstatek na účtu */ printf ( "Zadejte castku pro vyber:\n"); scanf ( "%d", &x );... /* vydat peníze - celkem x */ balance -= x; printf ( "Novy zustatek: %d\n", balance ); Co když bude výběr větší než zůstatek? M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Proměnné, I/O, BI-PA1 20/46
22 Funkce scanf ošetření chyb... /* obsluha bankomatu */ int balance, x;... balance =...;... /* balance obsahuje zůstatek na účtu */ printf ( "Zadejte castku pro vyber:\n"); scanf ( "%d", &x );... /* vydat peníze - celkem x */ balance -= x; printf ( "Novy zustatek: %d\n", balance ); Co když bude výběr větší než zůstatek? Co když budeme vybírat zápornou částku? M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Proměnné, I/O, BI-PA1 20/46
23 Funkce scanf ošetření chyb... /* obsluha bankomatu */ int balance, x;... balance =...;... /* balance obsahuje zůstatek na účtu */ printf ( "Zadejte castku pro vyber:\n"); scanf ( "%d", &x );... /* vydat peníze - celkem x */ balance -= x; printf ( "Novy zustatek: %d\n", balance ); Co když bude výběr větší než zůstatek? Co když budeme vybírat zápornou částku? Co když se uživatel při zadávání splete (nečíselný vstup)? M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Proměnné, I/O, BI-PA1 20/46
24 Funkce scanf ošetření chyb... /* obsluha bankomatu */ int balance, x;... /* balance obsahuje zůstatek na účtu */ printf ( "Zadejte castku pro vyber:\n"); if ( scanf ( "%d", &x )!= 1 x <= 0 x > balance ) {... /* upozornění na chybu, oprava zadaní */ } else {... /* vydat peníze - celkem x */ balance -= x; printf ( "Novy zustatek: %d\n", balance ); } M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Proměnné, I/O, BI-PA1 21/46
25 Funkce scanf #include <stdio.h> int main ( void ) { int x, y; printf("vstup souradnic:\n"); while ( scanf( "%d %d", &x, &y )!= 2 ) { /* Konverze se nezdařila */ printf ( "Spatny vstup. Prosim zopakovat.\n" ); } /* oops - nekonečný cyklus při špatném vstupu */ printf("souradnice jsou (%d,%d)\n", x, y ); return 0; } M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Proměnné, I/O, BI-PA1 22/46
26 Funkce scanf oprava #include <stdio.h> int main ( void ) { int x, y; printf("vstup souradnic:\n"); while ( scanf( "%d %d", &x, &y )!= 2 ) { /* Konverze se nezdařila */ printf ( "Spatny vstup. Prosim zopakovat.\n" ); /* Odstranit ze vstupu chybně zadané znaky */ /* (cyklus a funkce fgetc) */ } /* ok, data načtena správně */ printf("souradnice jsou (%d,%d)\n", x, y ); return 0; } M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Proměnné, I/O, BI-PA1 23/46
27 Kontrola vstupů Programy potřebují mít jistotu, že pracují s platnými daty. Dnes běžné zranitelnosti (buffer overflow, code injection, XSS,... ) jsou speciální případy neošetřených vstupů. Neošetřené vstupy ročně stojí miliardy dolarů. Ošetřování vstupů je nudné a pracné. Přesto si zvykněte psát programy tak, aby vždy kontrolovaly správnost vstupu. M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Proměnné, I/O, BI-PA1 24/46
28 Kontrola vstupů Programy potřebují mít jistotu, že pracují s platnými daty. Dnes běžné zranitelnosti (buffer overflow, code injection, XSS,... ) jsou speciální případy neošetřených vstupů. Neošetřené vstupy ročně stojí miliardy dolarů. Ošetřování vstupů je nudné a pracné. Přesto si zvykněte psát programy tak, aby vždy kontrolovaly správnost vstupu. Na slidech budeme ošetření vstupů vynechávat. Důvodem je omezený prostor slide. Při ostatních příležitostech (programy na proseminářích, cvičeních,... ) ošetření vstupů nevynecháme. Vaše programy budeme kontrolovat, zda ošetřují nesprávné vstupy. M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Proměnné, I/O, BI-PA1 24/46
29 Kontrola vstupů (de)motivace Za obrázek děkujeme Randallu Munroe, XKCD comics #327 (xkcd.com). M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Proměnné, I/O, BI-PA1 25/46
30 Celočíselné datové typy v C Jméno alternativní jména B min max char signed char unsigned char short short int signed short signed short int unsigned short unsigned short int int signed signed int unsigned unsigned int long long int signed long signed long int unsigned long unsigned long int Poznámka: tabulka shrnuje celočíselné typy a jejich vlastnosti tak, jak jsou obvykle definovány v dvojkovém doplňku pro reprezentaci záporných čísel. M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Proměnné, I/O, BI-PA1 26/46
31 Celočíselné datové typy v C Pamět ová reprezentace a rozsahy standardních datových typů nejsou v normě jazyka C definovány. Místo definice v normě jsou reprezentace a rozsahy dány implementací. Proč? Rozsahy dat jsou přístupné programátorovi ve standardních hlavičkových souborech (limits.h, float.h) např. INT MAX, INT BITS,... Norma jazyka C zaručuje pouze: sizeof(short int) <= sizeof(int) <= sizeof(long int) Některé kompilátory zavádějí vlastní celočíselné datové typy: long long 64 bitové celé číslo, v gcc/g++, int8,..., int64 8/16/32/64 bitová celá čísla v MSVC. M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Proměnné, I/O, BI-PA1 27/46
32 Celočíselné datové typy v C Celočíselné literály: dekadický: 123, 45678, šestnáctkový: 0x123Ab, 0X569Fd (na začátku je 0x nebo 0X), osmičkový: 0123, 0765 (na začátku je 0), bez znaménka: 1234u, 5678U, long: l, unsigned long: lu, long long (gcc): LL, 0x12345LLu, int64 (MSVC): i64, 0x12345ui64, numerické literály jsou považovány za signed int, není-li použita přípona. M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Proměnné, I/O, BI-PA1 28/46
33 Celočíselné datové typy vnitřní reprezentace Hodnoty bez znaménka jsou uloženy v binárním kódu, datové typy delší než 8 bitů zaujímají několik bajtů za sebou, pořadí bajtů: little-endian (lohi, Intel), big-endian (hilo, Motorola). /* předpokládáme 32-bitová celá čísla */ unsigned int a = 1000; 1000 = 0x3e8 = (bin) počítač s little-endian: e počítač s big-endian: e8 M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Proměnné, I/O, BI-PA1 29/46
34 Celočíselné datové typy vnitřní reprezentace Hodnoty se znaménkem musí nějak znaménko obsahovat je třeba použít vhodný kód, Nejobvyklejší je dvojkový doplněk, jiné kódy: jednotkový doplněk, posunutá nula, znaménko a absolutní hodnota,... Jak dvojkový doplněk pracuje? Je-li je hodnota kladná nebo nulová: hodnota je v binárním kódu, binární kód je výsledek. Je-li hodnota záporná: vezme se binární kód absolutní hodnoty, znegují se všechny bity, k tomuto číslu se přičte 1. M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Proměnné, I/O, BI-PA1 30/46
35 Celočíselné datové typy vnitřní reprezentace /* předpokládáme 8-bitovou hodnotu */ signed char x = 53; 53 >= 0, 53 = 0x35 = (bin) dvojkový doplněk 53: (bin) signed char x = -45; -45 < 0, pro výpočet použijeme abs(-45): 45 = 0x2d = (bin) negace bitů: (bin) přičtení 1: +1 dvojkový doplněk -45: (bin) M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Proměnné, I/O, BI-PA1 31/46
36 Celočíselné datové typy vnitřní reprezentace Dvojkový doplněk x je: (bin). Jaká je hodnota x? Bit nejvíce vlevo (nejvýznamnější bit) je 0: x >= (bin) = 0x5b = 91 (dec). x = 91 Dvojkový doplněk x je: (bin). Jaká je hodnota x? Nejvýznamnější bit je 1: x < 0. negace bitů reprezentace: (bin) přičtení 1: +1 absolutní hodnota x: (bin) x = (bin) = - 0x24 = -36 (dec) M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Proměnné, I/O, BI-PA1 32/46
37 Celočíselné datové typy výstupní konverze #include <stdio.h> int main ( void ) { int x = -1; } printf ( "x = %d (signed,dec)\n", x ); printf ( "x = %i (signed,dec)\n", x ); printf ( "x = %u (unsigned,dec)\n", x ); printf ( "x = %x (unsigned,hex)\n", x ); printf ( "x = %X (unsigned,hex)\n", x ); printf ( "x = %o (unsigned,oct)\n", x ); return 0; M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Proměnné, I/O, BI-PA1 33/46
38 Celočíselné datové typy výstupní konverze Program zobrazí: %d M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Proměnné, I/O, BI-PA1 34/46
39 Celočíselné datové typy výstupní konverze Program zobrazí: %d x = -1 (signed,dec) %i M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Proměnné, I/O, BI-PA1 34/46
40 Celočíselné datové typy výstupní konverze Program zobrazí: %d x = -1 (signed,dec) %i x = -1 (signed,dec) %u M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Proměnné, I/O, BI-PA1 34/46
41 Celočíselné datové typy výstupní konverze Program zobrazí: %d x = -1 (signed,dec) %i x = -1 (signed,dec) %u x = (unsigned,dec) %x M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Proměnné, I/O, BI-PA1 34/46
42 Celočíselné datové typy výstupní konverze Program zobrazí: %d x = -1 (signed,dec) %i x = -1 (signed,dec) %u x = (unsigned,dec) %x x = ffffffff (unsigned,hex) %X M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Proměnné, I/O, BI-PA1 34/46
43 Celočíselné datové typy výstupní konverze Program zobrazí: %d x = -1 (signed,dec) %i x = -1 (signed,dec) %u x = (unsigned,dec) %x x = ffffffff (unsigned,hex) %X x = FFFFFFFF (unsigned,hex) %o M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Proměnné, I/O, BI-PA1 34/46
44 Celočíselné datové typy výstupní konverze Program zobrazí: %d x = -1 (signed,dec) %i x = -1 (signed,dec) %u x = (unsigned,dec) %x x = ffffffff (unsigned,hex) %X x = FFFFFFFF (unsigned,hex) %o x = (unsigned,oct) M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Proměnné, I/O, BI-PA1 34/46
45 Celočíselné datové typy více o přiřazení Na rozdíl od jazyka Ada lze do celočíselné proměnné přiřadit i hodnotu odlišného typu. Když je neceločíselná hodnota (např. hodnota v pohyblivé řádové čárce) přiřazena celočíselné proměnné, je hodnota před přiřazením zkonvertována na celé číslo (tzn. desetinná část je odseknuta). Mohou nastat tři různé případy přiřazení celočíselné hodnoty celočíselné proměnné: sizeof(var) = sizeof(value) binární reprezentace je jednoduše zkopírována, sizeof(var) < sizeof(value) vyšší bajty navíc jsou ztraceny, nižší zkopírovány, sizeof(var) > sizeof(value) hodnota je rozšířena o vyšší bajty tak, aby vyplnila celou proměnnou. Předchozí pravidla jsou rozumná, avšak výsledky mohou být překvapující. M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Proměnné, I/O, BI-PA1 35/46
46 Celočíselné datové typy více o přiřazení #include <stdio.h> int main ( void ) { int x, y; unsigned int ux = 1000, uy = 0xffffffff; /* stejný počet bajtů - int, unsigned int */ x = ux; printf ( "ux = %u, x = %d\n", ux, x ); y = uy; printf ( "uy = %u, y = %d\n", uy, y ); } ux = -100; printf ( "ux = %u\n", ux ); return 0; M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Proměnné, I/O, BI-PA1 36/46
47 Celočíselné datové typy více o přiřazení #include <stdio.h> int main ( void ) { int x, y; unsigned int ux = 1000, uy = 0xffffffff; /* stejný počet bajtů - int, unsigned int */ x = ux; printf ( "ux = %u, x = %d\n", ux, x ); /* ux = 1000, x = 1000 */ y = uy; printf ( "uy = %u, y = %d\n", uy, y ); } ux = -100; printf ( "ux = %u\n", ux ); return 0; M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Proměnné, I/O, BI-PA1 36/46
48 Celočíselné datové typy více o přiřazení #include <stdio.h> int main ( void ) { int x, y; unsigned int ux = 1000, uy = 0xffffffff; /* stejný počet bajtů - int, unsigned int */ x = ux; /* */ printf ( "ux = %u, x = %d\n", ux, x ); /* ux = 1000, x = 1000 */ y = uy; printf ( "uy = %u, y = %d\n", uy, y ); } ux = -100; printf ( "ux = %u\n", ux ); return 0; M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Proměnné, I/O, BI-PA1 36/46
49 Celočíselné datové typy více o přiřazení #include <stdio.h> int main ( void ) { int x, y; unsigned int ux = 1000, uy = 0xffffffff; /* stejný počet bajtů - int, unsigned int */ x = ux; /* */ printf ( "ux = %u, x = %d\n", ux, x ); /* ux = 1000, x = 1000 */ } y = uy; printf ( "uy = %u, y = %d\n", uy, y ); /* uy = , y = -1 */ ux = -100; printf ( "ux = %u\n", ux ); return 0; M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Proměnné, I/O, BI-PA1 36/46
50 Celočíselné datové typy více o přiřazení #include <stdio.h> int main ( void ) { int x, y; unsigned int ux = 1000, uy = 0xffffffff; /* stejný počet bajtů - int, unsigned int */ x = ux; /* */ printf ( "ux = %u, x = %d\n", ux, x ); /* ux = 1000, x = 1000 */ } y = uy; /* */ printf ( "uy = %u, y = %d\n", uy, y ); /* uy = , y = -1 */ ux = -100; printf ( "ux = %u\n", ux ); return 0; M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Proměnné, I/O, BI-PA1 36/46
51 Celočíselné datové typy více o přiřazení #include <stdio.h> int main ( void ) { int x, y; unsigned int ux = 1000, uy = 0xffffffff; /* stejný počet bajtů - int, unsigned int */ x = ux; /* */ printf ( "ux = %u, x = %d\n", ux, x ); /* ux = 1000, x = 1000 */ } y = uy; /* */ printf ( "uy = %u, y = %d\n", uy, y ); /* uy = , y = -1 */ ux = -100; printf ( "ux = %u\n", ux ); /* ux = */ return 0; M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Proměnné, I/O, BI-PA1 36/46
52 Celočíselné datové typy více o přiřazení #include <stdio.h> int main ( void ) { int x, y; unsigned int ux = 1000, uy = 0xffffffff; /* stejný počet bajtů - int, unsigned int */ x = ux; /* */ printf ( "ux = %u, x = %d\n", ux, x ); /* ux = 1000, x = 1000 */ } y = uy; /* */ printf ( "uy = %u, y = %d\n", uy, y ); /* uy = , y = -1 */ ux = -100; /* */ printf ( "ux = %u\n", ux ); /* ux = */ return 0; M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Proměnné, I/O, BI-PA1 36/46
53 Celočíselné datové typy více o přiřazení #include <stdio.h> int main ( void ) { int x = 1000, y = 767; signed char cx, cy; /* char je kratší než int */ cx = x; printf ( "x = %d, cx = %d\n", x, cx ); cy = y; printf ( "y = %d, cy = %d\n", y, cy ); } return 0; M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Proměnné, I/O, BI-PA1 37/46
54 Celočíselné datové typy více o přiřazení #include <stdio.h> int main ( void ) { int x = 1000, y = 767; signed char cx, cy; /* char je kratší než int */ cx = x; printf ( "x = %d, cx = %d\n", x, cx ); /* x = 1000, cx = -24 */ cy = y; printf ( "y = %d, cy = %d\n", y, cy ); } return 0; M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Proměnné, I/O, BI-PA1 37/46
55 Celočíselné datové typy více o přiřazení #include <stdio.h> int main ( void ) { int x = 1000, y = 767; signed char cx, cy; /* char je kratší než int */ cx = x; /* < */ printf ( "x = %d, cx = %d\n", x, cx ); /* x = 1000, cx = -24 */ cy = y; printf ( "y = %d, cy = %d\n", y, cy ); } return 0; M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Proměnné, I/O, BI-PA1 37/46
56 Celočíselné datové typy více o přiřazení #include <stdio.h> int main ( void ) { int x = 1000, y = 767; signed char cx, cy; } /* char je kratší než int */ cx = x; /* < */ printf ( "x = %d, cx = %d\n", x, cx ); /* x = 1000, cx = -24 */ cy = y; printf ( "y = %d, cy = %d\n", y, cy ); /* y = 767, cy = -1 */ return 0; M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Proměnné, I/O, BI-PA1 37/46
57 Celočíselné datové typy více o přiřazení #include <stdio.h> int main ( void ) { int x = 1000, y = 767; signed char cx, cy; } /* char je kratší než int */ cx = x; /* < */ printf ( "x = %d, cx = %d\n", x, cx ); /* x = 1000, cx = -24 */ cy = y; /* < */ printf ( "y = %d, cy = %d\n", y, cy ); /* y = 767, cy = -1 */ return 0; M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Proměnné, I/O, BI-PA1 37/46
58 Celočíselné datové typy více o přiřazení #include <stdio.h> int main ( void ) { int x, y, z = 128; unsigned char cx = 128; signed char cy = -10, cz; } x = cx; printf ( "x = %d\n", x); y = cy; printf ( "y = %d\n", y); cz = z; z = cz; printf ( "z = %d\n", z); return 0; M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Proměnné, I/O, BI-PA1 38/46
59 Celočíselné datové typy více o přiřazení #include <stdio.h> int main ( void ) { int x, y, z = 128; unsigned char cx = 128; signed char cy = -10, cz; } x = cx; printf ( "x = %d\n", x); /* x = 128 */ y = cy; printf ( "y = %d\n", y); cz = z; z = cz; printf ( "z = %d\n", z); return 0; M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Proměnné, I/O, BI-PA1 38/46
60 Celočíselné datové typy více o přiřazení #include <stdio.h> int main ( void ) { int x, y, z = 128; unsigned char cx = 128; signed char cy = -10, cz; } x = cx; /* < */ printf ( "x = %d\n", x); /* x = 128 */ y = cy; printf ( "y = %d\n", y); cz = z; z = cz; printf ( "z = %d\n", z); return 0; M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Proměnné, I/O, BI-PA1 38/46
61 Celočíselné datové typy více o přiřazení #include <stdio.h> int main ( void ) { int x, y, z = 128; unsigned char cx = 128; signed char cy = -10, cz; } x = cx; /* < */ printf ( "x = %d\n", x); /* x = 128 */ y = cy; printf ( "y = %d\n", y); /* y = -10 */ cz = z; z = cz; printf ( "z = %d\n", z); return 0; M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Proměnné, I/O, BI-PA1 38/46
62 Celočíselné datové typy více o přiřazení #include <stdio.h> int main ( void ) { int x, y, z = 128; unsigned char cx = 128; signed char cy = -10, cz; } x = cx; /* < */ printf ( "x = %d\n", x); /* x = 128 */ y = cy; /* < */ printf ( "y = %d\n", y); /* y = -10 */ cz = z; z = cz; printf ( "z = %d\n", z); return 0; M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Proměnné, I/O, BI-PA1 38/46
63 Celočíselné datové typy více o přiřazení #include <stdio.h> int main ( void ) { int x, y, z = 128; unsigned char cx = 128; signed char cy = -10, cz; } x = cx; /* < */ printf ( "x = %d\n", x); /* x = 128 */ y = cy; /* < */ printf ( "y = %d\n", y); /* y = -10 */ cz = z; z = cz; printf ( "z = %d\n", z); /* z = -128 */ return 0; M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Proměnné, I/O, BI-PA1 38/46
64 Celočíselné datové typy více o přiřazení #include <stdio.h> int main ( void ) { int x, y, z = 128; unsigned char cx = 128; signed char cy = -10, cz; } x = cx; /* < */ printf ( "x = %d\n", x); /* x = 128 */ y = cy; /* < */ printf ( "y = %d\n", y); /* y = -10 */ cz = z; /* < */ z = cz; printf ( "z = %d\n", z); /* z = -128 */ return 0; M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Proměnné, I/O, BI-PA1 38/46
65 Celočíselné datové typy více o přiřazení #include <stdio.h> int main ( void ) { int x, y, z = 128; unsigned char cx = 128; signed char cy = -10, cz; } x = cx; /* < */ printf ( "x = %d\n", x); /* x = 128 */ y = cy; /* < */ printf ( "y = %d\n", y); /* y = -10 */ cz = z; /* < */ z = cz; /* < */ printf ( "z = %d\n", z); /* z = -128 */ return 0; M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Proměnné, I/O, BI-PA1 38/46
66 Celočíselné datové typy (de)motivace If androids some day DO dream of electric sheep, do not forget to declare sheepcount as a long int. Za obrázek děkujeme Randallu Munroe, XKCD comics #571 (xkcd.com). M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Proměnné, I/O, BI-PA1 39/46
67 Znakový datový typ (char) Znaky jsou kódovány jako čísla. Jsou používány různé standardy pro kódování znaků: ASCII (7 bit), 128 kódů, pouze pro anglickou množinu znaků, ASCII extended (8 bit), horních 128 kódů je použito pro národní znaky (ISO až ISO , kódové stránky Windows 1250/1251/1252,... ), UNICODE (až znaků), různé kódování do bajtů (UTF-8, UTF-16, UTF-32, UCS2, UCS4), EBCDIC (8 bitů, velké počítače IBM). Originální 7-bitový kód ASCII je společný pro všechny kódy (s výjimkou EBCDIC): 0 31 řídící kódy (jako \n nový řádek, ASCII 0x0A), 32 mezera (0x20), symboly, číslice, písmena (anglická abeceda), digits 0 9 (0x30 0x39), písmena A Z (0x41 0x5a), písmena a z (0x61 0x7a). M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Proměnné, I/O, BI-PA1 40/46
68 Znakové literály Jednoduché znaky znak mezi apostrofy: a, *, 1,... Na rozdíl od PHP, jazyky C/C++/Java rozlišují: znaky (právě jediný znak), v apostrofech, řetězce (žádný nebo více znaků), v uvozovkách. Netisknutelné znaky se zapíší pomocí tzv. escape sekvencí: \12 (oktalově 012 = 10 (dekadicky) = LF), \xa (hexadecimálně 0xA = 10 (dekadicky) = LF). Zkrácené escape sekvence pro často používané znaky: \n (LF = 0x0A), \t (TAB = 0x09), \ (apostrof = 0x27), \" (uvozovky = 0x22), \\ (zpětné lomítko = 0x5c). M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Proměnné, I/O, BI-PA1 41/46
69 Znakový vstup a výstup Funkce printf a scanf používají znakovou konverzi %c. printf vypíše jeden znak, který je dán odpovídajícím parametrem. Funkce scanf přečte ze vstupu jeden znak, jehož kód uloží do proměnné typu char. Funkce scanf přeskočí bílé znaky (mezery, tabelátory, nové řádky). Funkce scanf nemůže být použita pro čtení těchto znaků (v tomto případě je třeba použít funkci getc). Poznamenejme, že C/C++ nerozlišuje znaky (typu char) a malá celá čísla (opět typu char). Vnitřní reprezentace a výpočty jsou stejné, jen vstup a výstup je jiný. M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Proměnné, I/O, BI-PA1 42/46
70 Příklad znakového vstupu a výstupu #include <stdio.h> int main ( void ) { char c; } printf ( "Napis znak:\n" ); scanf ( "%c", &c ); printf ( "Napsal jsi: %c, code %d\n ", c, c ); return 0; M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Proměnné, I/O, BI-PA1 43/46
71 Znakový vstup a výstup #include <stdio.h> int main ( void ) { char c ; int i = 0x40; unsigned int u = 0xff40; } printf ( "c = %x %d %c\n ", c, c, c ); printf ( "i = %x %d %c\n ", i, i, i ); printf ( "u = %x %d %c\n ", u, u, u ); return 0; M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Proměnné, I/O, BI-PA1 44/46
72 Znakový vstup a výstup Výstup programu: c = M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Proměnné, I/O, BI-PA1 45/46
73 Znakový vstup a výstup Výstup programu: c = i = 40 M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Proměnné, I/O, BI-PA1 45/46
74 Znakový vstup a výstup Výstup programu: c = i = u = M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Proměnné, I/O, BI-PA1 45/46
75 Znakový vstup a výstup Výstup programu: c = i = u = ff40 M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Proměnné, I/O, BI-PA1 45/46
76 Otázky a odpovědi Otázky... M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Proměnné, I/O, BI-PA1 46/46
BI-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í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íce- jak udělat konstantu long int: L long velka = 78L;
Konstanty (konstatní hodnoty) Např.: - desítkové: 25, 45, 567, 45.678 - osmičkové: 045, 023, 03 vždy začínají 0 - šestnáctkové: 0x12, 0xF2, 0Xcd, 0xff, 0xFF - jak udělat konstantu long int: 245566553L
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í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íceFormátové specifikace formátovací řetězce
27.2.2007 Formátové specifikace formátovací řetězce - je to posloupnost podle které překladač pozná jaký formát má výstup mít - posloupnosti začínají znakem % a určující formát vstupu/výstupu - pokud chcete
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íceZákladní datové typy, proměnné - deklarujeme předem - C je case sensitive rozlišuje malá a velká písmena v názvech proměnných a funkcí
02 Jazyk C - je imperativní říkáme, co se má udělat, voláme příkazy - další imperativní jazyky: Pascal, Java, C/C++ apod. - na rozdíl od jazyků deklarativních např. Prolog, Haskell, Scheme, Lisp (funkcionální
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íceZáklady jazyka C. Základy programování 1 Martin Kauer (Tomáš Kühr)
Základy jazyka C Základy programování 1 Martin Kauer (Tomáš Kühr) Organizační záležitosti Konzultace Pracovna 5.076 Úterý 15:00 16:30 Emailem martin.kauer@upol.cz Web předmětu http://tux.inf.upol.cz/~kauer/index.php?content=var&class=zp1
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í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í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í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íceIUJCE 07/08 Přednáška č. 1
Úvod do předmětu Literatura Záznamy přednášek a vaše poznámky Harbison, S. P., Steele, G. L.: Referenční příručka jazyka C Herout, P.: Učebnice jazyka C Kernighan, B. W., Ritchie, D. M.: The C Programming
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íce1.1 Struktura programu v Pascalu Vstup a výstup Operátory a některé matematické funkce 5
Obsah Obsah 1 Programovací jazyk Pascal 1 1.1 Struktura programu v Pascalu.................... 1 2 Proměnné 2 2.1 Vstup a výstup............................ 3 3 Operátory a některé matematické funkce 5
VíceJak v Javě primitivní datové typy a jejich reprezentace. BD6B36PJV 002 Fakulta elektrotechnická České vysoké učení technické
Jak v Javě primitivní datové typy a jejich reprezentace BD6B36PJV 002 Fakulta elektrotechnická České vysoké učení technické Obsah Celočíselný datový typ Reálný datový typ Logický datový typ, typ Boolean
VíceAhoj mami. Uložení dat v počítači. Příklady kódování dat. IAJCE Přednáška č. 4
Uložení dat v počítači Data = užitečné, zpracovávané informace Kódování (formát) dat = způsob uložení v počítači (nutno vše převést na čísla ve dvojkové soustavě) Příklady kódování dat Text každému znaku
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í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íceLekce 6 IMPLEMENTACE OPERAČNÍHO SYSTÉMU LINUX DO VÝUKY INFORMAČNÍCH TECHNOLOGIÍ JAZYK C
Identifikační údaje školy Číslo projektu Název projektu Číslo a název šablony Autor Tematická oblast Číslo a název materiálu Anotace Vyšší odborná škola a Střední škola, Varnsdorf, příspěvková organizace
VíceProměnná a její uložení v paměti
Proměnná a její uložení v paměti Počítačová paměť - řada buněk uložených za sebou, každá buňka má velikost 1 bajt (byte, B) - buňky jsou očíslovány, tato čísla se nazývají adresy Proměnná - data, se kterými
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íceVÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Čí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íceFormátová specifikace má tvar (některé sekce nemají smysl pro načítání) %
vstup a výstup na konzolu - vstupním zařízením je klávesnice, výstupním monitor (přístup jako k sériovým zařízením) - spojení s konzolami je nastaveno automaticky na začátku programu - ke konzole je možné
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íceC2115 Praktický úvod do superpočítání
C2115 Praktický úvod do superpočítání IX. lekce Petr Kulhánek, Tomáš Bouchal kulhanek@chemi.muni.cz Národní centrum pro výzkum biomolekul, Přírodovědecká fakulta, Masarykova univerzita, Kotlářská 2, CZ-61137
Více3 Jednoduché datové typy 2 3.1 Interpretace čísel v paměti počítače... 3. 4 Problémy s matematickými operacemi 5
Obsah Obsah 1 Číselné soustavy 1 2 Paměť počítače 1 2.1 Měření objemu paměti počítače................... 1 3 Jednoduché datové typy 2 3.1 Interpretace čísel v paměti počítače................. 3 4 Problémy
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í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í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íceAplikovaná informatika. Podklady předmětu Aplikovaná informatika pro akademický rok 2006/2007 Radim Farana. Obsah. Obsah předmětu
1 Podklady předmětu pro akademický rok 2006/2007 Radim Farana Obsah 2 Obsah předmětu, Požadavky kreditového systému, Datové typy jednoduché, složené, Programové struktury, Předávání dat. Obsah předmětu
VíceZáklady jazyka C. Základy programování 1 Tomáš Kühr
Základy jazyka C Základy programování 1 Tomáš Kühr Organizační záležitosti Konzultace Osobně v pracovně 5.043 Pondělí 15.00 16.00 Úterý 14.00 16.00 Čtvrtek 13.00 15.00 Pátek 9.30 11.30 Něco jde vyřešit
Více24-2-2 PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: 23.7.2013 KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1
24-2-2 PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE AUTOR DOKUMENTU: MGR. MARTINA SUKOVÁ DATUM VYTVOŘENÍ: 23.7.2013 KLÍČOVÁ AKTIVITA: 02 UČIVO: STUDIJNÍ OBOR: PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) INFORMAČNÍ TECHNOLOGIE
VíceAlgoritmy a datové struktury
Algoritmy a datové struktury Data a datové typy 1 / 28 Obsah přednášky Základní datové typy Celá čísla Reálná čísla Znaky 2 / 28 Organizace dat Výběr vhodné datvé struktry různá paměťová náročnost různá
VíceOperační systémy. Cvičení 3: Programování v C pod Unixem
Operační systémy Cvičení 3: Programování v C pod Unixem 1 Obsah cvičení Editace zdrojového kódu Překlad zdrojového kódu Základní datové typy, struktura, ukazatel, pole Načtení vstupních dat Poznámka: uvedené
Ví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í (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íceInformatika Datové formáty
Informatika Datové formáty Radim Farana Podklady předmětu Informatika pro akademický rok 2007/2008 Obsah Datové formáty (datové typy). Textové formáty, vlastnosti zdroje zpráv. Číselné formáty, číselné
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íceJazyk C# a platforma.net
Jazyk C# a platforma.net Katedra softwarového inženýrství Fakulta informačních technologií České vysoké učení technické v Praze Pavel Štěpán, 2011 Syntaxe jazyka C# - 1. část BI-DNP Evropský sociální fond
VíceJazyk C práce se soubory. Jan Hnilica Počítačové modelování 16
Jazyk C práce se soubory 1 Soubory Použití souborů pro vstup většího množství dat do programu (uživatel nezadává z klávesnice ručně tisíce údajů...) pro uložení většího množství výsledků, např. k pozdějšímu
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íceOpakování programování
Opakování programování HW návaznost - procesor sběrnice, instrukční sada, optimalizace rychlosti, datové typy, operace (matematické, logické, podmínky, skoky, podprogram ) - paměti a periferie - adresování
VíceStandardní vstup a výstup
Standardní vstup a výstup Trochu teorie S pojmy standardní vstup/výstup (I/O, input/output) jste se již pravděpodobně setkali, pokud ale ne, zde je krátké vysvětlení. Standardní vstup a výstup jsou vlastně
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í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í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í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íceData v počítači. Informační data. Logické hodnoty. Znakové hodnoty
Data v počítači Informační data (elementární datové typy) Logické hodnoty Znaky Čísla v pevné řádové čárce (celá čísla) v pohyblivé (plovoucí) řád. čárce (reálná čísla) Povelová data (instrukce programu)
VíceProgramování v jazyce C pro chemiky (C2160) 12. Specifické problémy při vývoji vědeckého softwaru
Programování v jazyce C pro chemiky (C2160) 12. Specifické problémy při vývoji vědeckého softwaru Reprezentace reálnách čísel v počítači Reálná čísla jsou v počítači reprezentována jako čísla tvaru ±x
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í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í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ícePJC Cvičení #2. Číselné soustavy a binární reprezentace proměnných
PJC Cvičení #2 Číselné soustavy a binární reprezentace proměnných Číselné soustavy Desítková (decimální) kdo nezná, tak...!!! Dvojková (binární) - nejjednodušší Šestnáctková (hexadecimální) - nejpoužívanější
VíceVstup a výstup datové proudy v C
Vstup a výstup datové proudy v C Petr Šaloun katedra informatiky FEI VŠB-TU Ostrava 24. října 2011 Petr Šaloun (katedra informatiky FEI VŠB-TU Ostrava) Vstup a výstup 24. října 2011 1 / 37 Přehled, rozdělení
VíceZáklady programování (IZP)
Základy programování (IZP) Čtvrté počítačové cvičení Brno University of Technology, Faculty of Information Technology Božetěchova 1/2, 612 66 Brno - Královo Pole Petr Veigend, iveigend@fit.vutbr.cz 4.
Ví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íceČíselné soustavy v mikroprocesorové technice Mikroprocesorová technika a embedded systémy
Ústav radioelektroniky Vysoké učení technické v Brně Číselné soustavy v mikroprocesorové technice Mikroprocesorová technika a embedded systémy Přednáška 8 doc. Ing. Tomáš Frýza, Ph.D. listopad 2012 Obsah
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íceZačínáme vážně programovat. Řídící struktury Přetypování Vstupně výstupní operace Vlastní tvorba programů
Začínáme vážně programovat Řídící struktury Přetypování Vstupně výstupní operace Vlastní tvorba programů Podmínky a cykly Dokončení stručného přehledu řídících struktur jazyka C. Složený příkaz, blok Pascalské
VíceDatové typy a jejich reprezentace v počítači.
Datové typy a jejich reprezentace v počítači. Celá čísla. Reálná čísla. Semilogaritmický tvar. Komplexní čísla. Řetězce. Tomáš Bayer bayertom@natur.cuni.cz Katedra aplikované geoinformatiky a kartografie,
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í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í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 Ukazatele BI-PA1
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íceMQL4 COURSE. By Coders guru www.forex-tsd.com -3 DATA TYPES. Doufám, že předchozí lekce SYNTAX se vám líbila. V té jsme se pokoušeli zodpovědět:
MQL4 COURSE By Coders guru www.forex-tsd.com -3 DATA TYPES Vítám vás ve třetí lekci svého MQL4 kurzu. Doufám, že předchozí lekce SYNTAX se vám líbila. V té jsme se pokoušeli zodpovědět: Jaký formát můžete
VíceZnaky. IAJCE Přednáška č. 10. každému znaku je nutné přiřadit nějaké číslo (nezáporné přímé mapování znak <->
Znaky každému znaku je nutné přiřadit nějaké číslo (nezáporné přímé mapování znak číslo) kódování jiný příklad kódování existuje mnoho kódů pojmy: morseova abeceda problémy o znaková sada které znaky
VícePOČÍTAČE A PROGRAMOVÁNÍ
POČÍTAČE A PROGRAMOVÁNÍ Práce se soubory, čtení dat ze souboru a zapis dat do souboru Miroslav Vavroušek PPI 10 V1.1 Opakovaní z minulé přednášky Moderní metody vývoje softwaru Složení softwaroveho vývojového
VíceFunkce, procedury, složitost
Funkce, procedury, složitost 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í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íceDatové typy pro reálná čísla
Datové typy pro reálná čísla KAPITOLA 3 V této kapitole: Vlastnosti datových typů pro reálná čísla v jazyce C/ C++ Vstupně/výstupní operace z pohledu reálných čísel Aritmetické operace s reálnými čísly
VíceZáklady jazyka C. Základy programování 1 Martin Kauer (Tomáš Kühr)
Základy jazyka C Základy programování 1 Martin Kauer (Tomáš Kühr) Organizační záležitosti Konzultace Pracovna 5.076 Středa 10:30 12:00 Emailem martin.kauer@upol.cz Web předmětu http://tux.inf.upol.cz/~kauer/index.php?content=var&class=zp1
VíceBitové operátory a bitová pole. Úvod do programování 2 Tomáš Kühr
Bitové operátory a bitová pole Úvod do programování 2 Tomáš Kühr Bitové operátory Provádějí danou operaci s jednotlivými bity svých operandů Operandy bitových operátorů mohou být pouze celočíselné Vyhodnocení
VíceIng. Igor Kopetschke TUL, NTI
ALGORITMY A DATOVÉ STRUKTURY 1. Organizace dat v paměti, datové typy Ing. Igor Kopetschke TUL, NTI http://www.nti.tul.cz Jednotlivé body Ukládání a a organizace dat Vnitřní paměť Vnější paměť Přístup k
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ícePříklad: Součet náhodných čísel ve vektoru s počtem prvků, které zadá uživatel, pomocí sum() a pomocí cyklu for. Ověříme, že příliš výpisů na
Příklad: Součet náhodných čísel ve vektoru s počtem prvků, které zadá uživatel, pomocí sum() a pomocí cyklu for. Ověříme, že příliš výpisů na obrazovku zpomaluje tím, že zobrazíme okno (proužek) o stavu
VíceOdvozené a strukturované typy dat
Odvozené a strukturované typy dat Petr Šaloun katedra informatiky FEI VŠB-TU Ostrava 14. listopadu 2011 Petr Šaloun (katedra informatiky FEI VŠB-TU Ostrava) Odvozené a strukturované typy dat 14. listopadu
Vícev aritmetické jednotce počíta
v aritmetické jednotce počíta tače (Opakování) Dvojková, osmičková a šestnáctková soustava () Osmičková nebo šestnáctková soustava se používá ke snadnému zápisu binárních čísel. 2 A 3 Doplněné nuly B Číslo
VíceZáklady algoritmizace a programování
Základy algoritmizace a programování Přednáška 1 Olga Majlingová Katedra matematiky, ČVUT v Praze 19. září 2011 Obsah Úvodní informace 1 Úvodní informace 2 3 4 Doporučená literatura web: http://marian.fsik.cvut.cz/zapg
VíceTextové soubory. alg9 1
Textové soubory Textový soubor je posloupnost znaků členěná na řádky každý znak je reprezentován jedním bytem, jehož obsah je dán nějakým kódováním znaků členění na řádky je závislé na platformě a obvykle
Více1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme: Ukončí program. Nula znamená, že vše proběhlo bez chyby.
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í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íceAlgoritmus. Přesné znění definice algoritmu zní: Algoritmus je procedura proveditelná Turingovým strojem.
Algoritmus Algoritmus je schematický postup pro řešení určitého druhu problémů, který je prováděn pomocí konečného množství přesně definovaných kroků. nebo Algoritmus lze definovat jako jednoznačně určenou
VíceAlgoritmy I. Číselné soustavy přečíst!!! ALGI 2018/19
Algoritmy I Číselné soustavy přečíst!!! Číselné soustavy Každé číslo lze zapsat v poziční číselné soustavě ve tvaru: a n *z n +a n-1 *z n-1 +. +a 1 *z 1 +a 0 *z 0 +a -1 *z n-1 +a -2 *z -2 +.. V dekadické
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ícePříkazy if, while, do-while, for, switch
Příkazy if, while, do-while, for, switch BI-PA1 Programování a Algoritmizace 1 Ladislav Vagner, Josef Vogel Katedra teoretické informatiky a Katedra softwarového inženýrství Fakulta informačních technologíı
VíceData, výrazy, příkazy
Data, výrazy, příkazy Karel Richta a kol. katedra počítačů FEL ČVUT v Praze Přednášky byly připraveny s pomocí materiálů, které vyrobili Ladislav Vágner, Pavel Strnad, Martin Hořeňovský, Aleš Hrabalík
Ví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 Algoritmus Daniela Szturcová Tento
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í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íceZáklady algoritmizace a programování
Základy algoritmizace a programování Přednáška 1 Olga Majlingová Katedra matematiky, ČVUT v Praze 21. září 2009 Obsah Úvodní informace 1 Úvodní informace 2 3 4 Organizace předmětu Přednášky 1. 5. Základní
VícePROGRAMOVACÍ JAZYKY A PŘEKLADAČE REALIZACE PŘEKLADAČE I
PROGRAMOVACÍ JAZYKY A PŘEKLADAČE REALIZACE PŘEKLADAČE I 2011 Jan Janoušek BI-PJP Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Programová realizace DKA typedef enum {q0, q1,... qn,
VíceŠifrování/Dešifrování s použitím hesla
Fakulta elektrotechnická Katedra teoretické elektrotechniky Dokumentace k semestrální práci Šifrování/Dešifrování s použitím hesla 2012/13 Petr Zemek Vyučující: Ing. Petr Kropík, Ph.D Předmět: Základy
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íceSada 1 - Základy programování
S třední škola stavební Jihlava Sada 1 - Základy programování 04. Datové typy, operace, logické operátory Digitální učební materiál projektu: SŠS Jihlava šablony registrační číslo projektu:cz.1.09/1.5.00/34.0284
VíceTelemetrický komunikační protokol JETI
Dokument se bude zabývat popisem komunikačního protokolu senzorů JETI model. Telemetrické informace se přenášejí komunikační sběrnicí ze senzorů do přijímače a bezdrátově se přenášejí do zařízení, např.
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í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íce