Část 1 Struktury a uniony Struktury struct Proměnné se sdílenou pamětí union Příklad
|
|
- Emil Svoboda
- před 6 lety
- Počet zobrazení:
Transkript
1 Struktury a uniony, přesnost výpočtů a vnitřní reprezentace číselných typů Jan Faigl Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Přednáška 07 B0B36PRP Procedurální programování Přehled témat Část 1 Struktury a uniony Struktury struct Proměnné se sdílenou pamětí union Příklad S. G. Kochan: kapitola 9 a 17 P. Herout: kapitola 1 Část 2 Přesnost výpočetů a vnitřní reprezentace číselných typů Přesnost výpočtů a numerická stability Základní číselné typy a jejich reprezentace v počítači Reprezentace celých čísel Reprezentace reálných čísel Typové konverze Matematické funkce Část 3 Zadání 6. domácího úkolu (HW06) S. G. Kochan: kapitola 1 (typové konverze) Appendix B (matematické funkce) P. Herout: kapitola 7 (typové konverze) Část I Část 1 Struktury a uniony Jan Faigl, 2018 B0B36PRP Přednáška 07: Struktury, uniony a číselné typy 1 / 61 Struktura struct Struktura je konečná množina prvků (proměnných), které nemusí být stejného typu Skladba struktury je definovaná uživatelem jako nový typ sestavený z již definovaných typů K prvkům struktury přistupujeme tečkovou notací K prvkům můžeme přistupovat přes ukazatel operátorem > Pro struktury stejného typu je definována operace přiřazení struct1 = struct2; Pro proměnné typu pole není přímé přiřazení definováno, přiřazení pole je tak nutné realizovat po prvcích. Struktury (jako celek) nelze porovnávat relačním operátorem == Struktura může být funkci předávána hodnotou i ukazatelem Struktura může být návratovou hodnotou funkce Jan Faigl, 2018 B0B36PRP Přednáška 07: Struktury, uniony a číselné typy 5 / 61 Příklad struct Inicializace Struktury: ; item; Proměnné typu struktura můžeme inicializovat prvek po prvku struct record r; r.value = 21.; r.number = 7; Podobně jako pole lze inicializovat přímo při definici item i = { 1, 2.3 ; nebo pouze konkrétní položky (ostatní jsou nulovány) struct record r2 = {.value = 10.; Jan Faigl, 2018 B0B36PRP Přednáška 07: Struktury, uniony a číselné typy 8 / 61 Jan Faigl, 2018 B0B36PRP Přednáška 07: Struktury, uniony a číselné typy 2 / 61 Příklad struct Definice Bez zavedení nového typu (typedef) je nutné před identifikátor jména struktury uvádět klíčové slovo struct ; item; record r; /* THIS IS NOT ALLOWED! */ /* Type record is not known */ struct record r; /* Keyword struct is required */ item i; /* type item defined using typedef */ Zavedením nového typu typedef můžeme používat typ struktury již bez uvádění klíčového slova struct Jan Faigl, 2018 B0B36PRP Přednáška 07: Struktury, uniony a číselné typy 6 / 61 Příklad struct jako parametr funkce Struktury můžeme předávat jako parametry funkcí hodnotou void print_record(struct record rec) { printf("record: number(%d), value(%lf)\n", rec.number, rec.value); Nebo ukazatelem void print_item(item *v) { printf("item: n(%d), v(%lf)\n", v->n, v->v); Při předávání parametru hodnotou se vytváří nová proměnná a původní obsah předávané struktury se kopíruje na zásobník ukazatelem se kopíruje pouze hodnota ukazatele (adresa) a pracujeme tak s původní strukturou Jan Faigl, 2018 B0B36PRP Přednáška 07: Struktury, uniony a číselné typy 9 / 61 Jan Faigl, 2018 B0B36PRP Přednáška 07: Struktury, uniony a číselné typy 3 / 61 Definice jména struktury a typu struktury Uvedením struct record zavádíme nové jméno struktury record ; Definujeme idenfikátor record ve jmeném prostoru struktur Definicí typu typedef zavádíme nové jméno typu record typedef struct record record; Definujeme globální idenfikátor record jako jméno typu struct record Obojí můžeme kombinovat v jediné definici jména a typu struktury typedef record; Jan Faigl, 2018 B0B36PRP Přednáška 07: Struktury, uniony a číselné typy 7 / 61 Příklad struct Přiřazení Hodnoty proměnné stejného typu struktury můžeme přiřadit operátorem = ; item; struct record rec1 = { 10, 7.12 ; struct record rec2 = { 5, 13.1 ; item i; print_record(rec1); /* number(10), value( ) */ print_record(rec2); /* number(5), value( ) */ rec1 = rec2; i = rec1; /* THIS IS NOT ALLOWED! */ print_record(rec1); /* number(5), value( ) */ Jan Faigl, 2018 B0B36PRP Přednáška 07: Struktury, uniony a číselné typy 10 / 61
2 Příklad struct Přímá kopie paměti Jsou-li dvě struktury stejně veliké, můžeme přímo kopírovat obsah příslušné paměťové oblasti Například funkcí memcpy() z knihovny string.h struct record r = { 7, 21.; item i = { 1, 2.3 ; print_record(r); /* number(7), value( ) */ print_item(&i); /* n(1), v( ) */ if (sizeof(i) == sizeof(r)) { printf("i and r are of the same size\n"); memcpy(&i, &r, sizeof(i)); print_item(&i); /* n(7), v( ) */ V tomto případě je interpretace hodnot v obou strukturách identická, obecně tomu však být nemusí Jan Faigl, 2018 B0B36PRP Přednáška 07: Struktury, uniony a číselné typy 11 / 61 Struktura struct a velikost 2/2 Nebo typedef struct attribute ((packed)) { Příklad výstupu: item_packed; printf("size of int: %lu size of double: %lu\n", sizeof(int), sizeof(double)); printf("record_packed: %lu\n", sizeof(struct record_packed)); printf("item_packed: %lu\n", sizeof(item_packed)); Size of int: size of double: 8 Size of record_packed: 12 Size of item_packed: 12 Zarovnání zpravidla přináší rychlejší přístup do paměti, ale zvyšuje paměťové nároky Jan Faigl, 2018 B0B36PRP Přednáška 07: Struktury, uniony a číselné typy 1 / 61 Příklad union 2/2 Proměnné sdílejí paměťový prostor 1 numbers.c = a ; 2 printf("\nset the numbers.c to a \n"); 3 printf("numbers c: %d i: %d d: %lf\n", numbers.c, numbers.i, numbers.d); 5 numbers.i = 5; 6 printf("\nset the numbers.i to 5\n"); 7 printf("numbers c: %d i: %d d: %lf\n", numbers.c, numbers.i, numbers.d); 8 9 numbers.d = 3.1; 10 printf("\nset the numbers.d to 3.1\n"); 11 printf("numbers c: %d i: %d d: %lf\n", numbers.c, numbers.i, numbers.d); Příklad výstupu: Set the numbers.c to a Numbers c: 97 i: d: Set the numbers.i to 5 Numbers c: 5 i: 5 d: Set the numbers.d to 3.1 Numbers c: 31 i: d: lec07/union.c Jan Faigl, 2018 B0B36PRP Přednáška 07: Struktury, uniony a číselné typy 18 / 61 Struktura struct a velikost Vnitřní reprezentace struktury nutně nemusí odpovídat součtu velikostí jednotlivých prvků ; item; printf("size of int: %lu size of double: %lu\n", sizeof (int), sizeof(double)); printf("size of record: %lu\n", sizeof(struct record)); printf("size of item: %lu\n", sizeof(item)); Size of int: size of double: 8 Size of record: 16 Size of item: 16 Jan Faigl, 2018 B0B36PRP Přednáška 07: Struktury, uniony a číselné typy 12 / 61 Proměnné se sdílenou pamětí union Union je množina prvků (proměnných), které nemusí být stejného typu Prvky unionu sdílejí společně stejná paměťová místa Velikost unionu je dána velikostí největšího z jeho prvků Překrývají se Skladba unionu je definována uživatelem jako nový typ sestavený z již definovaných typů K prvkům unionu se přistupuje tečkovou notací Pokud nedefinujeme nový typ je nutné k identifikátoru proměnné unionu uvádět klíčové slovo union Podobně jako u struktury struct 1 union Nums { 2 char c; 3 int i; ; 5 Nums nums; /* THIS IS NOT ALLOWED! Type Nums is not known! */ 6 union Nums nums; Jan Faigl, 2018 B0B36PRP Přednáška 07: Struktury, uniony a číselné typy 16 / 61 Inicializace union Proměnnou typu union můžeme inicializovat při definici 1 union { 2 char c; 3 int i; double d; 5 numbers = { a ; Pouze první položka (proměnná) může být inicializována V C99 můžeme inicializovat konkrétní položku (proměnnou) 1 union { 2 char c; 3 int i; double d; 5 numbers = {.d = 10.3 ; Jan Faigl, 2018 B0B36PRP Přednáška 07: Struktury, uniony a číselné typy 19 / 61 Struktura struct a velikost 1/2 Při kompilaci zpravidla dochází k zarovnání prvků na velikost slova příslušné architektury Např. 8 bytů v případě 6-bitové architektury. Můžeme explicitně předepsat kompaktní paměťovou reprezentaci, např. direktivou attribute ((packed)) pro překladače clang a gcc struct record_packed { attribute ((packed)); Jan Faigl, 2018 B0B36PRP Přednáška 07: Struktury, uniony a číselné typy 13 / 61 Příklad union 1/2 Union složený z proměnných typu: char, int a double 1 int main(int argc, char *argv[]) 2 { 3 union Numbers { char c; 5 int i; 6 double d; 7 ; 8 printf("size of char %lu\n", sizeof(char)); 9 printf("size of int %lu\n", sizeof(int )); 10 printf("size of double %lu\n", sizeof(double)); 11 printf("size of Numbers %lu\n", sizeof(union Numbers)); union Numbers numbers; 1 15 printf("numbers c: %d i: %d d: %lf\n", numbers.c, numbers.i, numbers.d); Příklad výstupu: size of char 1 size of int size of double 8 size of Numbers 8 Numbers c: 8 i: d: lec07/union.c Jan Faigl, 2018 B0B36PRP Přednáška 07: Struktury, uniony a číselné typy 17 / 61 Příklad struktura, pole a výčtový typ 1/3 Hodnoty (konstanty) výčtového typu jsou celá čísla, která mohou být použit jako indexy (pole) Také je můžeme použít pro inicializaci pole struktur 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 5 enum weekdays { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY ; char *name; 9 char *abbr; // abbreviation 10 week_day_s; const week_day_s days_en[] = { 13 [MONDAY] = { "Monday", "mon", 1 [TUESDAY] = { "Tuesday", "tue", 15 [WEDNESDAY] = { "Wednesday", "wed", 16 [THURSDAY] = { "Thursday", "thr", 17 [FRIDAY] = { "Friday", "fri", 18 ; lec07/demo-struct.c Jan Faigl, 2018 B0B36PRP Přednáška 07: Struktury, uniony a číselné typy 21 / 61
3 Příklad struktura, pole a výčtový typ 2/3 Připravíme si pole struktur pro konkrétní jazyk Program vytiskne jméno a zkratku dne v týdnu dle čísla dne v týdnu V programu používáme jednotné číslo dne bez ohledu na jazykovou mutaci 19 const week_day_s days_cs[] = { 20 [MONDAY] = { "Pondeli", "po", 21 [TUESDAY] = { "Utery", "ut", 22 [WEDNESDAY] = { "Streda", "st", 23 [THURSDAY] = { "Ctvrtek", "ct", 2 [FRIDAY] = { "Patek", "pa", 25 ; int main(int argc, char *argv[], char **envp) 28 { 29 int day_of_week = argc > 1? atoi(argv[1]) : 1; 30 if (day_of_week < 1 day_of_week > 5) { 31 fprintf(stderr, "(EE) File: %s Line: %d -- Given day of week out of range\n", FILE, LINE ); 32 return 101; 33 3 day_of_week -= 1; // start from 0 lec07/demo-struct.c Jan Faigl, 2018 B0B36PRP Přednáška 07: Struktury, uniony a číselné typy 22 / 61 Příklad struktura, pole a výčtový typ 3/3 Detekci národního prostředí provedeme podle hodnoty proměnné prostředí Pro jednoduchost detekujeme češtinu na základě výskytu řetězce "cs" v hodnotě proměnné prostředí LC_CTYPE. 35 _Bool cz = 0; 36 while (*envp!= NULL) { 37 if (strstr(*envp, "LC_CTYPE") && strstr(*envp, "cs") ) { cz = 1; break; 0 1 envp++; 2 3 const week_day_s *days = cz? days_cs : days_en; 5 printf("%d %s %s\n", 6 day_of_week, 7 days[day_of_week].name, 8 days[day_of_week].abbr); 9 return 0; 50 lec07/demo-struct.c Jan Faigl, 2018 B0B36PRP Přednáška 07: Struktury, uniony a číselné typy 23 / 61 Část II Část 2 Vnitřní reprezentace číselných typů Jan Faigl, 2018 B0B36PRP Přednáška 07: Struktury, uniony a číselné typy 2 / 61 Přesnost výpočtu 1/2 Ztráta přesnosti při aritmetických operacích. Příklad sčítání dvou čísel 1 #include <stdio.h> 2 3 int main(void) { 5 double a = 1e+10; 6 double b = 1e-10; 7 8 printf("a : %2.12lf\n", a); 9 printf("b : %2.12lf\n", b); 10 printf("a+b: %2.12lf\n", a + b); return 0; clang sum.c &&./a.out 16 a : b : a+b: lec07/sum.c Přesnost výpočtu 2/2 Příklad dělení dvou čísel 1 #include <stdio.h> 2 3 int main(void) { 5 const int number = 100; 6 double dv = 0.0; 7 float fv = 0.0f; 8 9 for (int i = 0; i < number; ++i) { 10 dv += 1.0 / 10.0; 11 fv += 1.0 / 10.0; printf("double value: %lf ", dv); 15 printf(" float value: %lf ", fv); return 0; clang division.c &&./a.out 21 double value: float value: lec07/division.c Přesnost výpočtu - strojová přesnost Strojová přesnost ɛ m - nejmenší desetinné číslo, které přičtením k 1.0 dává výsledek různý od 1, pro v < ɛ m, platí v == 1.0. Symbol == odpovídá porovnání dvou hodnot (test na ekvivalenci). Zaokrouhlovací chyba - nejméně ɛ m. Přesnost výpočtu - aditivní chyba roste s počtem operací v řádu N ɛm. Často se však kumuluje preferabilně v jedno směru v řádu N ɛ m. Jan Faigl, 2018 B0B36PRP Přednáška 07: Struktury, uniony a číselné typy 26 / 61 Zdroje a typy chyby Jan Faigl, 2018 B0B36PRP Přednáška 07: Struktury, uniony a číselné typy 27 / 61 Podmíněnost numerických úloh Jan Faigl, 2018 B0B36PRP Přednáška 07: Struktury, uniony a číselné typy 28 / 61 Možnosti zvýšení přesnosti Chyby matematického modelu - matematická aproximace fyzikální situace. Chyby vstupních dat. Chyby numerické metody. Chyby zaokrouhlovací. Absolutní chyba aproximace E(x) = ˆx x, ˆx přesná hodnota, x aproximace. Relativní chyba RE(x) = ˆx x x. Podmíněnost úlohy C p = Dobře podmíněná úloha C p 1. relativní chyba výstupních údajů relativní chyba vstupních údajů Výpočet je dobře podmíněný, je-li málo citlivý na poruchy ve vstupních datech. Numericky stabilní výpočet - vliv zaokrouhlovacích chyb na výsledek je malý. Výpočet je stabilní, je-li dobře podmíněný a numericky stabilní. Reprezentace racionálních čísel - podíl dvou celočíselných hodnot, např. Homogenní souřadnice. Libovolná přesnost - speciální knihovny, např. gmp až do výše volné paměti. souřadnice x,y , Informativní Jan Faigl, 2018 B0B36PRP Přednáška 07: Struktury, uniony a číselné typy 29 / 61 Jan Faigl, 2018 B0B36PRP Přednáška 07: Struktury, uniony a číselné typy 30 / 61 Jan Faigl, 2018 B0B36PRP Přednáška 07: Struktury, uniony a číselné typy 31 / 61
4 Příklady chyb Ariane sekund po startu explodovala. Datová konverze z 6-bitového desetinné reprezentace na 16-ti bitový znaménkový integer. Systém Patriot Systémový čas v desetinách sekundy, převod na sekundy realizován dělením 10, registry pouze 2 bitů. Datové typy Při návrhu algoritmu abstrahujeme od binární podoby paměti počítače S daty pracujeme jako s hodnotami různých datových typů, které jsou uloženy v paměti předepsaným způsobem Datový typ specifikuje: Množinu hodnot, které je možné v počítači uložit Záleží na způsobu reprezentace Množinu operací, které lze s hodnotami typu provádět Jednoduchý typ je takový typ, jehož hodnoty jsou atomické, tj. z hlediska operací dále nedělitelné Příklad číselných typů a vnitřní reprezentace Např. 32-bitový typ int umožňuje uložit celá čísla v intervalu , , pro která můžeme použít aritmetické operace +,,, / s výsledkem hodnota typu int relační operace ==,! =, >, <, >=, <= Inicializovat hodnotou dekadického nebo hexadecimálního literálu 1 int i; // definice promenne typu int 2 int deci = 120; // definice spolu s prirazenim 3 int hexi = 0x78; //pocatecni hodnota v 16-kove soustave 5 int sum = 10 + deci + 0x13; //pocatecni hodnota je vyraz Vnitřní reprezentace typů (např. int, short, double) umožňuje uložit čísla z definovaného rozsahu s různou přesností. Číselné datové typy lze vzájemně převádět implicitní nebo explicitní typovou konverzí Při konverzi nemusí být hodnota zachována viz lec07/demo-types.c Jan Faigl, 2018 B0B36PRP Přednáška 07: Struktury, uniony a číselné typy 32 / 61 Reprezentace dat v počítači V počítači není u datové položky určeno jaký konkrétní datový typ je v paměti uložen Proto musíme přidělení paměti definovat s jakými typy dat budeme pracovat Překladač pak tuto definici hlídá a volí odpovídající strojové instrukce pro práci s datovými položkami například jako s odpovídajícími číselnými typy Např. neceločíselné (float) typy a využití tzv. FPU Příklad ekvivalentních reprezentací v paměti počítače (2) binární zápis jednoho bajtu (8-mi bitů); 65 (10) odpovídající číslo v dekadické soustavě; 1 (16) odpovídající číslo v šestnáctkové soustavě; znak A tentýž obsah paměťového místa (2) o velikosti 1 byte může být interpretován také jako znak A. Jan Faigl, 2018 B0B36PRP Přednáška 07: Struktury, uniony a číselné typy 36 / 61 Více-bajtová reprezentace a pořadí bajtů Číselné typy s více-bajtovou reprezentací mohou mít bajty uloženy v různém pořadí little-endian nejméně významný bajt se ukládá na nejnižší adresu x86, ARM big-endian nejvíce významný bajt se ukládá na nejnižší adresu Motorola, ARM Pořadí je důležité při přenosu hodnot z paměti jako posloupnosti bajtů a jejich následné interpretaci Network byte order je definován pro síťový přenos a není tak nutné řešit konkrétní architekturu Tj. hodnoty z paměti jsou ukládány a přenášeny v tomto pořadí bajtů a na cílové stanici pak zpětně zapsány do konkrétního nativního pořadí big-endian Informativní Jan Faigl, 2018 B0B36PRP Přednáška 07: Struktury, uniony a číselné typy 0 / 61 Jan Faigl, 2018 B0B36PRP Přednáška 07: Struktury, uniony a číselné typy 3 / 61 Číselné soustavy Číselné soustavy poziční číselné soustavy (polyadické) jsou charakterizovány bází udávající kolik číslic lze maximálně použít x d = i=m i= n a i z i, kde a i je číslice a z je základ soustavy Unární např. počet vypitých půllitrů Binární soustava (bin) 2 číslice 0 nebo , 01 (2) = = = 26, 25 Desítková soustava (dec) 10 číslic, znaky 0 až 9 138, 2 (10) = = , 1 + 0, 01 Šestnáctková soustava (hex) 16 číslic, znaky 0 až 9 a A až F 0x7D (16) = D 16 0 = = 125 Jan Faigl, 2018 B0B36PRP Přednáška 07: Struktury, uniony a číselné typy 38 / 61 Příklad reprezentace celých čísel int Na 32-bitových a 6-bitových strojích je celočíselný typ int zpravidla reprezentován 32 bity ( byty) znaménko zápis hodnoty, binárně na 31 bitů Typ int je znaménkový typ Znaménko je zakódováno v 1 bitu a vlastní číselná hodnota pak ve zbývajících 31 bitech Největší číslo je = = Nezapomínat na 0 Nejmenší číslo je 2 31 = už je zahrnuta Pro zobrazení záporných čísel je použit tzv. doplňkový kód Nejmenší číslo v doplňkovém kódu je 2 31 Jan Faigl, 2018 B0B36PRP Přednáška 07: Struktury, uniony a číselné typy 1 / 61 Jan Faigl, 2018 B0B36PRP Přednáška 07: Struktury, uniony a číselné typy 35 / 61 Kódování záporných čísel Přímý kód znaménko je určeno 1. bitem (zleva), snadné stanovení absolutní hodnoty, dvě nuly, příklad reprezentace: 121 (10) (2) -121 (10) (2) 0 (10) (2) -0 (10) (2) Inverzní kód záporné číslo odpovídá bitové negaci kladné hodnoty čísla; dvě nuly; příklad reprezentace: 121 (10) (2) -121 (10) (2) 0 (10) (2) -0 (10) (2) Doplňkový kód záporné číslo je uloženo jako hodnota kladného čísla po bitové negaci zvětšená o 1; jediná reprezentace nuly 121 (10) (2) 121(10) (2) -121 (10) (2) 127 (10) (2) -128 (10) (2) -1 (10) (2) Jan Faigl, 2018 B0B36PRP Přednáška 07: Struktury, uniony a číselné typy 39 / 61 Reprezentace záporných celých čísel Doplňkový kód D(x) Pro 8-mi bitovou reprezentací čísel Můžeme reprezentovat 2 8 =256 čísel Rozsah r = 256 x pro 0 x < r 2 D(x) = (1) r + x pro r 2 x < 0 Příklady Desítkově Doplňkový kód nelze zobrazit na 8 bitů v doplňkovém kódu -128 D( 128) = ( 128) = 128 to je D( 1) = ( 1) = 255 to je D( ) = ( ) = 252 to je Informativní Jan Faigl, 2018 B0B36PRP Přednáška 07: Struktury, uniony a číselné typy 2 / 61
5 Reprezentace reálných čísel Model reprezentace reálných čísel Příklad modelu reprezentace reálných čísel 1/2 Pro uložení čísla vyhrazujeme omezený paměťový prostor Příklad zápis čísla 1 v dekadické soustavě 3 = = 0, 33 0, , 333 V trojkové soustavě: = (0, 1) 3 Nepřesnosti v zobrazení reálných čísel v konečné posloupnosti bitů způsobují Iracionální čísla, např. e, π, 2 1 Čísla, která mají v dané soustavě periodický rozvoj, např. 3 Čísla, která mají příliš dlouhý zápis Reálná čísla se zobrazují jako aproximace daným rozsahem paměťového místa Reálné číslo x se zobrazuje ve tvaru x = mantisa základ exponent x = m z exponent Pro jednoznačnost zobrazení musí být mantisa normalizována 0, 1 m < 1 Ve vyhrazeném paměťovém prostoru je pro zvolený základ uložen exponent a mantisa jako dvě celá čísla exponent mantisa Reprezentace na 7 bajtů Délka mantisy 3 pozice (bajtů) plus znaménko Délka exponentu 2 pozice plus znaménko Základ z = 10 Nula??? Příklad x = 77, 5 = 0, 775 z Jan Faigl, 2018 B0B36PRP Přednáška 07: Struktury, uniony a číselné typy / 61 Příklad modelu reprezentace reálných čísel 2/2 Limitní zobrazitelná čísla Maximální zobrazitelné kladné číslo 0, 999z Minimální zobrazitelné kladné číslo 0, 100z z z z z?? Maximální zobrazitelné záporné číslo 0, 100z Minimální zobrazitelné záporné číslo 0, 999z z z z +99 Jan Faigl, 2018 B0B36PRP Přednáška 07: Struktury, uniony a číselné typy 7 / 61 Příklad reprezentace float hodnot dle IEEE 75 Chyba reprezentace vs Infinity (0x7f800000), -Infinity (0xff800000), a NaN (0x7fffffff) Jan Faigl, 2018 B0B36PRP Přednáška 07: Struktury, uniony a číselné typy 50 / 61 Jan Faigl, 2018 B0B36PRP Přednáška 07: Struktury, uniony a číselné typy 5 / 61 Model reprezentace reálných čísel a vzdálenost mezi aproximacemi Rozsah hodnot pro konkrétní exponent je dán velikostí mantisy Absolutní vzdálenost dvou aproximací tak záleží na exponentu Mezi hodnotou 0 a 1,0 je využít celý rozsah mantisy pro exponenty { 99, 98,..., 0 nula 0.101z z z z?? 0.100z z 12 +maximum Aproximace reálných čísel nejsou na číselné ose rovnoměrně rozloženy nula +maximum Jan Faigl, 2018 B0B36PRP Přednáška 07: Struktury, uniony a číselné typy 8 / 61 Přiřazovací operátor a příkaz Slouží pro nastavení hodnoty proměnné Uložení číselné hodnoty do paměti, kterou proměnná reprezentuje IEEE 75, Tvar přiřazovacího operátoru proměnná = výraz Výraz je literál, proměnná, volání funkce,... Zkrácený zápis proměnná operátor = výraz Přiřazení je výraz Asociativní zprava Přiřazovací příkaz výraz zakončený středníkem ; int x; //definice promenne x int y; //definice promenne y x = 6; y = x = x + 6; int x, y; //definice promennych x a y x = 10; y = 7; y += x + 10; Jan Faigl, 2018 B0B36PRP Přednáška 07: Struktury, uniony a číselné typy 52 / 61 Jan Faigl, 2018 B0B36PRP Přednáška 07: Struktury, uniony a číselné typy 6 / 61 Reprezentace necelých čísel IEEE 75 Reálné číslo x se zobrazuje ve tvaru x = ( 1) s mantisa 2 exponent bias IEEE 75, ISO/IEC/IEEE 60559:2011 float 32 bitů ( bajty): s 1 bit znaménko (+ nebo ), mantisa 23 bitů 16,7 milionu možností; exponent 8 bitů, tj. 256 možností double 6 bitů (8 bajtů) s 1 bit znaménko (+ nebo ) mantisa 52 bitů,5 biliardy možností ( ) exponent 11 bitů, tj. 208 možností Čím větší exponent, tím větší mezery mezi sousedními aproximacemi čísel bias umožňuje reprezentovat exponent vždy jako kladné číslo Lze zvolit, např. bias = 2 eb 1 1, kde eb je počet bitů exponentu Jan Faigl, 2018 B0B36PRP Přednáška 07: Struktury, uniony a číselné typy 9 / 61 Typové konverze Typová konverze je operace převedení hodnoty nějakého typu na hodnotu typu jiného Typová konverze může být implicitní vyvolá se automaticky explicitní je nutné v programu explicitně uvést Konverze typu int na double je implicitní Hodnota typu int může být použita ve výrazu, kde se očekává hodnota typu double, dojde k automatickému převodu na hodnotu typu double. Příklad double x; int i = 1; x = i; // hodnota 1 typu int se automaticky převede // na hodnotu 1.0 typu double Implicitní konverze je bezpečná Jan Faigl, 2018 B0B36PRP Přednáška 07: Struktury, uniony a číselné typy 53 / 61
6 Explicitní typové konverze Převod hodnoty typu double na int je třeba explicitně předepsat Dojde k odseknutí necelé části hodnoty int Příklad double x = 1.2; // definice proměnné typu double int i; // definice proměnné typu int int i = (int)x; // hodnota 1.2 typu double se převede // na hodnotu 1 typu int Explicitní konverze je potenciálně nebezpečná Příklady double d = 1e30; int i = (int)d; // i je // to je asi -2e9 misto 1e30 long l = L; int i = (int)l; // i je // (oříznuté bajty) lec07/demo-type_conversion.c Jan Faigl, 2018 B0B36PRP Přednáška 07: Struktury, uniony a číselné typy 5 / 61 Část III Část 3 Zadání 6. domácího úkolu (HW06) Jan Faigl, 2018 B0B36PRP Přednáška 07: Struktury, uniony a číselné typy 58 / 61 Diskutovaná témata Diskutovaná témata Konverze primitivních číselných typů Primitivní datové typy jsou vzájemně nekompatibilní, ale jejich hodnoty lze převádět long rozšíření přiřazením zúžení přetypováním znaménko 0/1 ~ +/ double exp float int exp short mantisa char mantisa Jan Faigl, 2018 B0B36PRP Přednáška 07: Struktury, uniony a číselné typy 55 / 61 Zadání 6. domácího úkolu HW06 Téma: Maticové počty Povinné zadání: 2b; Volitelné zadání: 3b; Bonusové zadání: 3b Motivace: Získání zkušenosti s dvojrozměrným polem. Cíl: Osvojit si práci s polem variabilní délky a předávání ukazatelů Zadání: Načtení vstupních hodnot dvou matic a znaku operace ( * násobení). Volitelné zadání rozšiřuje úlohu o další operace s maticemi sčítání ( + ) a odčítání ( - ), které mohou být zapsány ve výrazu. Bonusové zadání pak řeší zpracování celého výrazu, ve kterém jsou však jednotlivé matice uvedeny jako symboly, které jsou nejdříve definovány načtením hodnot matic ze standardního vstupu Využití struct a dynamické alokace může být výhodnou, není však nutné. Termín odevzdání: , 23:59:59 PST Bonusová úloha: , 23:59:59 PST PST Pacific Standard Time Jan Faigl, 2018 B0B36PRP Přednáška 07: Struktury, uniony a číselné typy 59 / 61 Matematické funkce <math.h> základní funkce pro práci s reálnými čísly Výpočet odmocniny necelého čísla x double sqrt(double x);, float sqrtf(float x); V C funkce nepřetěžujeme, proto jsou jména odlišena double pow(double x, double y); výpočet obecné mocniny double atan2(double y, double x); výpočet arctan y/x s určením kvadrantu Symbolické konstanty M_PI, M_PI_2, M_PI_, atd. #define M_PI #define M_PI_ #define M_PI_ isfinite(), isnan(), isless(),... makra pro porovnání reálných čísel. round(), ceil(), floor() zaokrouhlování, převod na celá čísla <complex.h> funkce pro počítání s komplexními čísly ISO C99 <fenv.h> funkce pro řízení zaokrouhlování a reprezentaci dle IEEE 75. man math Jan Faigl, 2018 B0B36PRP Přednáška 07: Struktury, uniony a číselné typy 57 / 61 Diskutovaná témata Shrnutí přednášky Jan Faigl, 2018 B0B36PRP Přednáška 07: Struktury, uniony a číselné typy 60 / 61 Struktury, způsoby definování, inicializace a paměťové reprezentace Uniony Přesnost výpočtu Vnitřní paměťová reprezentace celočíslených i neceločíselných číselných typů Knihovna math.h Příště: Standarní knihovny C. Rekurze. Jan Faigl, 2018 B0B36PRP Přednáška 07: Struktury, uniony a číselné typy 61 / 61
Struktury a uniony, přesnost výpočtů a vnitřní reprezentace číselných typů
Struktury a uniony, přesnost výpočtů a vnitřní reprezentace číselných typů Jan Faigl Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Přednáška 07 B0B36PRP Procedurální programování
Struktury a uniony, přesnost výpočtů a vnitřní reprezentace číselných typů
Struktury a uniony, přesnost výpočtů a vnitřní reprezentace číselných typů Jan Faigl Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Přednáška 07 B0B36PRP Procedurální programování
Jak 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
Paměť 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
Obsah. 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é
Racioná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
Java reprezentace dat, výrazy. A0B36PR1-Programování 1 Fakulta elektrotechnická České vysoké učení technické
Java reprezentace dat, výrazy A0B36PR1-Programování 1 Fakulta elektrotechnická České vysoké učení technické Dva základní přístupy k imperativnímu programování Strukturované procedurální Objektové V PR1
Ahoj 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
Racioná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,
Čísla v plovoucířádovéčárce. INP 2008 FIT VUT v Brně
Čísla v plovoucířádovéčárce INP 2008 FIT VUT v Brně Čísla v pevné vs plovoucí řádové čárce Pevnářádováčárka FX bez desetinné části (8 bitů) Přímý kód: 0 až 255 Doplňkový kód: -128 až 127 aj. s desetinnou
Aplikovaná 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
Programová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
Čí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
Algoritmizace 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
Jazyk C Část II. Jan Faigl. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze. Přednáška 9 A0B36PR2 Programování 2
Jazyk C Část II Jan Faigl Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Přednáška 9 A0B36PR2 Programování 2 Jan Faigl, 2016 A0B36PR2 Přednáška 9: Jazyk C Část II 1 / 69
Ú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í
Struktura a architektura počítačů (BI-SAP) 5
Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Struktura a architektura počítačů (BI-SAP) 5 doc. Ing. Hana Kubátová, CSc. Katedra číslicového návrhu Fakulta informačních technologii
Algoritmizace a programování
Algoritmizace a programování Strukturované proměnné Struktura, union Jazyk C České vysoké učení technické Fakulta elektrotechnická A8B14ADP Jazyk C - Strukturované proměnné Ver.1.10 J. Zděnek 20151 Struktura
Algoritmy 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é
Část 1 Příklad Pracujeme s ukazateli. Jazyk C Část II. Část 3 Jazyk C - základní knihovny, dynamická alokace paměti, soubory
Část 1 Příklad Pracujeme s ukazateli Jazyk C Část II Jan Faigl Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Přednáška 9 A0B36PR2 Programování 2 Jan Faigl, 2016 A0B36PR2
Část I. Část 1 Příklad Pracujeme s ukazately
Část 1 Příklad Pracujeme s ukazateli Část 2 Jazyk C - struktury a uniony Jazyk C Část II Jan Faigl Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Přednáška 9 A0B36PR2 Programování
Čísla a číselné soustavy.
Čísla a číselné soustavy. Polyadické soustavy. Převody mezi soustavami. Reprezentace čísel. Tomáš Bayer bayertom@natur.cuni.cz Katedra aplikované geoinformatiky a kartografie, Přírodovědecká fakulta UK.
Jazyk C Část II. Jan Faigl. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze. Přednáška 9 A0B36PR2 Programování 2
Jazyk C Část II Jan Faigl Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Přednáška 9 A0B36PR2 Programování 2 Jan Faigl, 2016 A0B36PR2 Přednáška 9: Jazyk C Část II 1 / 69
Číselné soustavy. Binární číselná soustava
12. Číselné soustavy, binární číselná soustava. Kódování informací, binární váhový kód, kódování záporných čísel. Standardní jednoduché datové typy s pevnou a s pohyblivou řádovou tečkou. Základní strukturované
Opaková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í
Data 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)
Architektury počítačů
Architektury počítačů IEEE754 České vysoké učení technické, Fakulta elektrotechnická A0M36APO Architektury počítačů Ver.1.20 2014 1 Fractional Binary Numbers (zlomková binární čísla / čísla v pevné řádové
9.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
Operač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é
Datové 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
Programování v C++ 1, 1. cvičení
Programování v C++ 1, 1. cvičení opakování látky ze základů programování 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled 1 2 Shrnutí procvičených
Zá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
Algoritmizace 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,
Programovací 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
IUJCE 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
Algoritmizace a programování
Algoritmizace a programování Jazyk C výrazy České vysoké učení technické Fakulta elektrotechnická Ver.1.10 J. Zděnek 2015 Struktura programu (1) Program v C se skládá z následujících součástí: Příkazy
Algoritmizace a programování
Algoritmizace a programování Jazyk C výrazy České vysoké učení technické Fakulta elektrotechnická Ver.1.10 J. Zděnek 2015 Struktura programu (1) Program v C se skládá z následujících součástí: Příkazy
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é
Ú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
Data, 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
IUJCE 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ý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ý,
Základní principy zobrazení čísla Celá čísla s pevnou řádovou čárkou Zobrazení reálných čísel Aritmetika s binárními čísly
Počítačové systémy Zobrazení čísel v počítači Miroslav Flídr Počítačové systémy LS 2007-1/21- Západočeská univerzita v Plzni Vážený poziční kód Obecný předpis čísla vyjádřeného v pozičním systému: C =
Úloha 1 Spojte binární obrazy na obrázku s hodnotami, které reprezentují.
7 Celá čísla Pro práci s celými čísly jsou v Javě typy byte, short, int a long. Všechny jsou znaménkové (připouštějí záporné hodnoty) a všechny používají doplňkový kód. Doplňkový kód definuje, jak jsou
Část I. Část 1 Základy programování v C. Přehled témat. Základy programování v C. Jazyk C
Přehled témat Základy programování v C Jan Faigl Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Přednáška 0 B0B36PRP Procedurální programování Část 1 Základy programování
Zápis programu v C a základní řídicí struktury
Zápis programu v C a základní řídicí struktury Jan Faigl Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Přednáška 03 B0B36PRP Procedurální programování Jan Faigl, 2017 B0B36PRP
PJC 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ší
Základy programování v C
Základy programování v C Jan Faigl Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Přednáška 02 B0B36PRP Procedurální programování Jan Faigl, 2018 B0B36PRP Přednáška 02:
1.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
Zá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č
Zá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í
Základy programování v C
Základy programování v C Jan Faigl Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Přednáška 02 B0B36PRP Procedurální programování Jan Faigl, 2018 B0B36PRP Přednáška 02:
Vý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 -
Y36SAP. Osnova. Číselné soustavy a kódy, převody, aritmetické operace Y36SAP Poziční číselné soustavy a převody.
Y36SAP Číselné soustavy a kódy, převody, aritmetické operace Tomáš Brabec, Miroslav Skrbek - X36SKD-cvičení. Úpravy pro SAP Hana Kubátová Osnova Poziční číselné soustavy a převody Dvojková soust., převod
Zápis programu v C. Zápis programu v C Funkce Literály
Zápis programu v C a základní řídicí struktury Jan Faigl Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Přednáška 03 B0B36PRP Procedurální programování Přehled témat Část
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 Vstup, výstup BI-PA1
Reprezentace základních typů, pole, funkce a procedury
Reprezentace základních typů, pole, funkce a procedury Jan Faigl Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Přednáška 4 A0B36PR1 Programování 1 Jan Faigl, 2015 A0B36PR1
Část 1 Reprezentace základních typů. Reprezentace základních typů, pole, funkce a procedury. Část 3 Funkce a procedury.
Část 1 Reprezentace základních typů Reprezentace základních typů, pole, funkce a procedury Jan Faigl Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Přednáška 4 A0B36PR1
Ú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) -
Formá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é
Část I. Část 1 Zápis programu v C. Přehled témat. Zápis programu v C a základní řídicí struktury. Program je recept
Přehled témat Zápis programu v C a základní řídicí struktury Jan Faigl Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Přednáška 03 B0B36PRP Procedurální programování Část
Informatika 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é
Formá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
C2115 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
Reprezentace základních typů, pole, funkce a procedury
Reprezentace základních typů, pole, funkce a procedury Jan Faigl Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Přednáška 4 A0B36PR1 Programování 1 Jan Faigl, 2015 A0B36PR1
ZPRO 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
Základy algoritmizace 2. Proměnné, datové typy
Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 2 1 Základy algoritmizace 2. Proměnné, datové typy doc. Ing. Jiří Vokřínek, Ph.D. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze
Struktura a architektura počítačů (BI-SAP) 6
Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Struktura a architektura počítačů (BI-SAP) 6 doc. Ing. Hana Kubátová, CSc. Katedra číslicového návrhu Fakulta informačních technologii
Floating Point. Jak je reprezentovaný a proč někdy nefunguje. 2. června 2013
Floating Point Jak je reprezentovaný a proč někdy nefunguje Augustin Žídek augus tin< at>zidek< dot> eu 2. června 2013 Historie Leonardo Torres y Quevedo 1914 Analytical Engine s floating point Historie
Mikroprocesorová technika (BMPT)
Mikroprocesorová technika (BMPT) Přednáška č. 10 Číselné soustavy v mikroprocesorové technice Ing. Tomáš Frýza, Ph.D. Obsah přednášky Číselné soustavy v mikroprocesorové technice Dekadická, binární, hexadecimální
Vý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ý,
Odvozené 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
Elementární datové typy
Elementární datové typy Celočíselné typy (integers) Mohou nabývat množiny hodnot, která je podmnožinou celých čísel (někdy existuje implementační konstanta maxint). Operace: aritmetické, relační, bitové,
Reprezentace dat v informačních systémech. Jaroslav Šmarda
Reprezentace dat v informačních systémech Jaroslav Šmarda Reprezentace dat v informačních systémech Reprezentace dat v počítači Datové typy Proměnná Uživatelské datové typy Datové struktury: pole, zásobník,
NPRG030 Programování I, 2018/19 1 / :25:37
NPRG030 Programování I, 2018/19 1 / 26 24. 9. 2018 10:25:37 Čísla v algoritmech a programech 10 26 Poloměr vesmíru 2651 studujících studentů MFF UK 3.142857... Ludolfovo číslo 10 16 stáří vesmíru v sekundách!!!
5 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í
8. 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
Algoritmizace a programování
Algoritmizace a programování Řídicí struktury, standardní metody Problematika načítání pomocí Scanner Některé poznámky k příkazům Psaní kódu programu Metody třídy Math Obalové třídy primitivních datových
v 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
Operátory, výrazy. Tomáš Pitner, upravil Marek Šabo
Operátory, výrazy Tomáš Pitner, upravil Marek Šabo Operátor "Znaménko operace", pokyn pro vykonání operace při vyhodnocení výrazu. V Javě mají operátory napevno daný význam, nelze je přetěžovat jako v
Exponent. Integer 4 bajty až Double Integer 8 bajtů až
1. Opakování teorie 1.1. Reprezentace čísel v počítači Celá čísla (přesné výpočty, velmi omezený rozsah): INTEGER => 2 byty = 16 bitů => 2 16 čísel LONGINT => 4 byty = 32 bitů => 2 32 čísel
Fz =a z + a z +...+a z +a z =
Polyadické číselné soustavy - převody M-místná skupina prvků se z-stavovou abecedou umožňuje zobrazit z m čísel. Zjistíme, že stačí vhodně zvolit číslo m, abychom mohli zobrazit libovolné číslo menší než
Zá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
Bitové 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í
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ý
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
1. 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.
Algoritmy 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á
Třídy a struktury v C++
katedra informatiky FEI VŠB-TU Ostrava 7. prosince 2015 Odvozené a strukturované typy dat v C základní datové typy součást normy jazyka, preprocesor použití netypových maker, raději voĺıme konstanty d
Jak v Javě příkazy, operace a výrazy. BD6B36PJV 00 Fakulta elektrotechnická České vysoké učení technické
Jak v Javě příkazy, operace a výrazy BD6B36PJV 00 Fakulta elektrotechnická České vysoké učení technické Literály Konstanty Komentáře Přiřazovací příkaz Typové konverze Příkazy výstupu Formátovaný výstup
- speciální symboly + - * / =., < > <> <= >= a další. Klíčová slova jsou chráněnými útvary, které nelze použít ve významu identifikátorů.
Základní symboly - písmena A B C Y Z a b c y z - číslice 0 1 2 9 - speciální symboly + - * / =., < > = a další - klíčová slova and array begin case const a další Klíčová slova jsou chráněnými útvary,
Principy počítačů I Reprezentace dat
Principy počítačů I Reprezentace dat snímek 1 Principy počítačů Část III Reprezentace dat VJJ 1 snímek 2 Symbolika musí být srozumitelná pro stroj, snadno reprezentovatelná pomocí fyzikálních veličin vhodně
- 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
1. Chyby vstupních dat metody převedení úlohy na numerickou (řád použité metody) zaokrouhlovací reprezentace čísel v počítači
1. Chyby vstupních dat metody převedení úlohy na numerickou (řád použité metody) zaokrouhlovací reprezentace čísel v počítači 2. Reprezentace čísel v Pascalu celá čísla Typ Rozsah Formát shortint 128..127
Strukturované 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
24-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
Programovací 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
for (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
Zá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
Algoritmizace 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
Řídicí struktury, výrazy a funkce
Řídicí struktury, výrazy a funkce Jan Faigl Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Přednáška 04 B0B36PRP Procedurální programování Jan Faigl, 2017 B0B36PRP Přednáška