Pokročilé datové typy (struktury, unie, dynamické proměnné)

Slides:



Advertisements
Podobné prezentace
A1PRG - Programování – Seminář Ing. Michal Typová konverze, oblast platnosti, paměťové třídy 9 Verze
Advertisements

Standardní knihovní funkce pro práci s textovými řetězci
Programování v C jazyku - SEMINÁŘ
Počítače a programování 1 Přednáška 13 Jiří Šebesta.
Seminář C++ 5. cvičení Dědičnost Ing. Jan Mikulka.
Programovací jazyk C++
Přednáška 11 Jiří Šebesta
Programování 2 Cvičení 5.
25/08/20141 Typ struktura (1) Datový typ struktura ( struct ) je agrego- vaný heterogenní datový typ Jedná se o skupinu několika proměnných, které mohou.
Pole, ukazatele a odkazy
BLIŽŠÍ POHLED NA TŘÍDY, DĚDIČNOST - úvod
Algoritmy I Cvičení č. 2. Cíl hodiny Datové typy a přetypování (int, float, double, bool, char, long, short) Konstanty – Celočíselné Desítkové – 15, 0,
Preprocess Úvod do tvorby funkcí Princip preprocesoringu Direktivy preprocesoru Podmíněný překlad Základy tvorby funkcí Zjednodušený popis principu předávaní.
Cvičení 2 Proměnné(jednoduché a složené) a konstanty První program Zápis výrazů.
Programování v C++ Cvičení.
Principy překladačů Běhová podpora Jakub Yaghob. Běhová podpora Statická podpora jazyka Překladač Interface na knihovny Hlavičkové soubory Dynamická podpora.
Algoritmizace a programování
Datové struktury. 2 Co je datová struktura v C datový typ složený z jiných datových typů nejjednodušší datová struktura je pole. všechny jeho prvky jsou.
Datové typy 6 A1PRG - Programování – Seminář
A1PRG - Programování – Seminář Ing. Michal Standardní knihovní funkce pro práci se soubory 13 Verze
Jednoduché datové typy
A1PRG - Programování – Seminář Ing. Michal Operátory (2. část) 4 Verze
Seminář C cvičení STL, Trolltech Ing. Jan Mikulka.
C# - pointery Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T.G. Masaryka, Kostelec nad Orlicí.
Sémantická analýza Jakub Yaghob
DEKLARACE PROMĚNNÝCH A KONSTANT
A1PRG - Programování – Seminář Ing. Michal Ukazatele a pole 10 Verze
Příklady v jazyku C – část 3
A1PRG - Programování – Seminář Ing. Michal Standardní knihovní funkce pro vstup a výstup 12 Verze
Spojové struktury BI-PA1 Programování a algoritmizace 1, ZS
10. Dynamické proměnné Dynamická proměnná se nezavádí deklarací proměnných, ale vzniká za běhu programu provedením speciálního příkazu. Nemá přidělen žádný.
Knihovna GLib ● Multiplatformní nástavba standardní C knihovny (běží na Windows, Linux, Mac,...) ● Naleznete zde nástroje pro komfortní práci s řetězci.
OSNOVA: a)Funkce – úvod b) Hlavičky funkcí c) Rekurze funkcí d)Knihovny funkcí e)Příklady Jiří Šebesta Ústav radioelektroniky, FEKT VUT v Brně Počítače.
Počítače a programování 1 7.přednáška. Základy Pole ve třídách a metodách Pole Arrays.
Vazby dynamických proměnných,databázové systémy Přednáška č. 10.
Ukazatele, řetězce Přednáška č. 3. Ukazatele  Ukazatel (pointer) – typ o velikosti 4 bajty (v 32bit. systémech) pro uložení adresy objektu na který ukazuje.
Soubory BI-PA1 Programování a algoritmizace 1, ZS Katedra teoretické informatiky © Miroslav Balík Fakulta informačních technologií České vysoké.
Jazyk C A0B36PRI - PROGRAMOVÁNÍ Část II.
Jazyk C A0B36PRI - PROGRAMOVÁNÍ Část I.
Vícerozměrná pole (1) Jazyk C povoluje, aby pole mělo více rozměrů (dimenzí) než jeden Z vícerozměrných polí bývá nejčastěji použí-váno pole dvourozměrné.
OSNOVA: a)Struktury b)Unie c)Výčtový typ d)Dynamické proměnné – úvod e)Příklady Jiří Šebesta Ústav radioelektroniky, FEKT VUT v Brně Počítače a programování.
Práce se soubory a řetězci Přednáška č. 9. Práce se soubory v C (1)  Knihovna #include  Knihovna #include  Ukazatel FILE *stream;  Otevření souboru.
POSLOUPNOST test. ZKUSTE ODPOVĚDĚT Co je to komentář? Poznámky, které nám pomohou pochopit, když se k programu vrátíme po delší době, co jsme chtěli tou,
Funkce Přednáška č. 5. Funkce (functions)  posloupnost příkazů uvedená hlavičkou  využití – opakovaně volaná sekvence – strukturování programu – ošetření.
Programování v jazyce C++
Algoritmizace a programování Soubory. Oč jde? Vytvoření externího souboru Vytvoření externího souboru Tento soubor může být: Tento soubor může být: Textový.
Programování KONSTANTY, ČTENÍ PO JEDNOM ZNAKU GETCHAR() FORMÁTOVANÝ VÝSTUP POMOCÍ PRINTF, VÝVOJOVÉ DIAGRAMY, CYKLY.
PROGRAMOVÁNÍ 3ITA,3ITB Jaroslav Burdys Hlavní zdroj:
Programování OPERÁTOR SIZEOF, FUNKCE, POLE JAKO PARAMETRY FUNKCÍ ERIK KRÁL.
Počítače a programování 2
PB071 – Programování v jazyce C Jaro 2017
Typ struktura (1) Datový typ struktura (struct) je agrego-vaný heterogenní datový typ Jedná se o skupinu několika proměnných, které mohou mít různé datové.
Y36PJC Programování v jazyce C/C++
Programování ENUM, SWITCH,pole jednorozměrná a vícerozměrná, deklarace, inicializace, kopírování, porovnání Erik Král.
Vícerozměrná pole (1) Jazyk C povoluje, aby pole mělo více rozměrů (dimenzí) než jeden Z vícerozměrných polí bývá nejčastěji použí-váno pole dvourozměrné.
Programovací jazyk C++
Programování v jazyce C++
Vzorové řešení zápočtového testu
Programovací jazyk C Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Ing. Jitka Vlčková. Dostupné z Metodického portálu ISSN.
Struktury.
Programování v jazyce C++
Funkce výstupu (2) Funkce printf: deklarována v: stdio.h
Dynamické proměnné (1) Proměnné, jejichž počet a (nebo) velikost pa-měti využívané těmito proměnnými se v prů-běhu programu mění Dynamické proměnné lze.
Oblast platnosti identifikátoru (1)
Opakování základních příkazů a syntaxí v programovacím jazyce Pascal
Práce s procesy Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T.G. Masaryka, Kostelec nad Orlicí Autor:
Řetězce (1) Řetězec (string) je posloupnost znaků (hod-not typu char)
C# přehled vlastností.
Union neboli sjednocení Bitová pole
Union neboli sjednocení Bitová pole
Transkript prezentace:

Pokročilé datové typy (struktury, unie, dynamické proměnné) Přednáška č. 6

Struktury (structures) (1) Soubor položek různých typů Syntaxe deklarace struct t_auto // typ struktura { char znacka[21]; // znacka auta unsigned short rok; // rok vyroby double cena; // cena auta } auto1; // promenna typu struct t_auto struct t_auto auto2; // dalsi promenna typu struct t_auto auto1.rok = 1999; // pristup k clenum struktury auto2.rok = 2001; // pristup k clenum struktury printf("Rok vyroby: %d",auto1.rok);

Struktury (structures) (2) Definice typu pomocí typedef typedef struct { char znacka[21]; // znacka auta unsigned short rok; // rok vyroby double cena; // cena auta } t_auto; // typ t_auto t_auto auto1; // promenna typu t_auto

Struktura ve struktuře

Unie Možnost jak do jedné proměnné ukládat více typů V paměti alokuje tolik místa kolik je zapotřebí pro největší použitý typ Má význam, potřebujeme-li šetřit místem – bylo aktuální dříve, dnes jen u jednočipových mikropočítačů Syntaxe deklarace: union t_unie // typ unie { int i; // clen pro pristup k typu int double d; // clen pro pristup k typu double (nejvetsi typ - 8 byte) char c; // clen pro pristup k typu char } U = {'u'}; // promenna typu t_unie a jeji inicializace printf("Char: %c\r\n",U); U.d = 1.5; // pristup k clenum unie, pozor timto se prepise U.c !!! printf("Double: %f\r\n",U); printf("Int: %d\r\n",U);

Výčtový typ (enumeration) (1) Množina striktně definovaných hodnot Odpovídá typu int, jednotlivým hodnotám jsou přiděleny číselné konstanty, lze tedy použít např. v příkazu switch enum karty {sedma, osma, desitka, kral, eso} karta_1, karta_2; enum karty karta_3; // moznost dalsi promenne typu enum karty int i; karta_1 = osma; i = karta_1; printf("Osma: %d", i); enum karty {sedma = 7, osma, desitka, kral = 20, eso = 30} karta_1, karta_2;

Výčtový typ (enumeration) (2) Příklad s příkazem switch enum days {mo,tu,we,th,fr,sa,su} a_day; switch( a_day) { case mo: ...; break; case tu: ...; break; case we: ...; break; case th: ...; break; case fr: ...; break; case sa: ...; break; case su: ...; }

Dynamické proměnné (1) Statické proměnné Alokaci a uvolnění paměťového místa si řídí sám překladač jazyka Velikost alokovaného místa musí být definována v době překladu programu Alokace proměnných na zásobníku, uvolnění na konci bloku/programu Dynamické proměnné Alokaci a uvolnění paměťového místa řídí autor programu pomocí funkcí malloc – alokace paměti a free – uvolnění paměti Velikost alokovaného místa lze za běhu měnit pomocí funkce realloc Funkce jsou definovány v knihovně <stdlib.h> Paměť je alokována z oblasti tzv. halda (heap) – velkou výhodou je že za běhu programu určujeme kolik místa bude alokováno

Dynamické proměnné (2) Příklad #include <stdio.h> #include <stdlib.h> int main(int argc, char* argv[]) { double *x, y; x = (double*) malloc( sizeof( double)); // alokace mista v pameti pro // promennou typu double *x = 3.14; // zapis do dynamicke promenne (pres ukazatel) y = *x; // cteni z dynamicke promenne (pres ukazatel) free( x); // uvolneni pameti (parametrem musi byt ukazatel // ktery vratila funkce malloc) printf("Cislo PI: %f", y); getchar(); return 0; }

Program Vytvořte program, který bude pracovat jako databáze automobilů. Každé auto je popsáno značkou a rokem výroby. Údaje o autech jsou ukládány do dynamických proměnných, ukazatelé jsou ukládány do pole. Přidání je aktivováno klávesou A, mazání údajů klávesou D, přehled zadaných položek klávesou P a program je ukončen stiskem Q. V databázi musí zůstat nejméně jeden údaj.