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.

Slides:



Advertisements
Podobné prezentace
(instance konkrétní třídy)
Advertisements

Modulární systém dalšího vzdělávání pedagogických pracovníků JmK v přírodních vědách a informatice CZ.1.07/1.3.10/ Průchod grafu do šířky.
Počítače a programování 1 Přednáška 13 Jiří Šebesta.
Programovací jazyk C++
Třída SIMSET je druhou standardní systémovou třídou, která obsahuje prostředky pro práci se spojovými seznamy. KRUHOVÉ SPOJOVÉ SEZNAMY Spojový seznam –
Přednáška 11 Jiří Šebesta
Programování 2 Cvičení 5.
10. Dynamické datové struktury
Spojové struktury Spojová struktura ( linked structure ):
Zásobník (LiFo) Fronta (FiFo)
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.
Fronta - a)Implementace s využitím statických struktur (pole) b)Implementace s využitím dynamických struktur (spojového seznamu) odebírá se ze začátku.
BLIŽŠÍ POHLED NA TŘÍDY, DĚDIČNOST - úvod
Generování mezikódu Jakub Yaghob
ADT Strom.
Skip-List je datová struktura, která může být použita jako náhrada za vyvážené stromy. představují pravděpodobnostní alternativu k vyváženým stromům (struktura.
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.
PB071 – Programování v jazyce C Jaro 2013
B-strom je dynamická indexová struktura.
A1PRG - Programování – Seminář Ing. Michal Operátory (2. část) 4 Verze
Sémantická analýza Jakub Yaghob
Algoritmy vyhledávání a řazení
A1PRG - Programování – Seminář Ing. Michal Ukazatele a pole 10 Verze
Další abstraktní datové typy
Počítače a programování 1
OSNOVA: a)Programování se soubory b)Záloha databáze v souboru c) Příklady Jiří Šebesta Ústav radioelektroniky, FEKT VUT v Brně Počítače a programování.
Abstraktní datové typy doc. Dr. Ing. Miroslav Beneš  katedra informatiky, A-1007 
Proměnná typu "pole" Mezi proměnné typu "pole" patří všechny superglobální proměnné. Mezi proměnné typu "pole" patří všechny superglobální proměnné. To.
KIV/PPA1 cvičení 8 Cvičící: Pavel Bžoch. Osnova cvičení Objekty v Javě Třída Konstruktor Metody Metody a proměnné třídy x instance Program sestávající.
Datové typy a struktury
Algoritmizace a programování Objektově orientované programování - 16 Mgr. Josef Nožička IKT Algoritmizace a programování
Spojové struktury BI-PA1 Programování a algoritmizace 1, ZS
Gymnázium prof. Jana Patočky Jindřišská Praha 1 „Praha & EU: Investujeme do vaší.
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ý.
Ukazatele BI-PA1 Programování a algoritmizace 1, ZS Katedra teoretické informatiky © Miroslav Balík Fakulta informačních technologií České vysoké.
Real time jádro operačního systému Lukáš Hamáček.
Uživatelem definované typy Ing. Lumír Návrat  katedra informatiky, A 1018 
Počítače a programování 1 7.přednáška. Základy Pole ve třídách a metodách Pole Arrays.
Databázové systémy Přednáška č. 5 Datové typy a Fyzická organizace dat.
FEL Komunikátor. Memory Leak program konsumuje operační paměť, kterou neumožňuje uvolnit o uvolnění paměti stará Garbage Collector ▫plně v režii Java.
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.
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é.
Datové typy IB111: Datové typy. Data a algoritmizace jaká data potřebuji pro vyřešení problému? jak budu data reprezentovat? jaké operaci s nimi potřebuji.
Pokročilé datové typy (struktury, unie, dynamické proměnné)
PROGRAMOVÁNÍ 3ITA,3ITB Jaroslav Burdys Hlavní zdroj:
Překladače 6. Sémantická analýza
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++
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++
Y36PJC Programování v jazyce C/C++
Překladače Syntaktická analýza
Abstraktní datové typy
Vzorové řešení zápočtového testu
Programování 2. hodina RNDr. Jan Lánský, Ph.D.
Programování v jazyce C++
Funkce výstupu (2) Funkce printf: deklarována v: stdio.h
Reálné typy (1) Zahrnují konečnou podmnožinu těch reálných čísel, která jsou zobrazitelná v paměti počítače (v jistém rozsahu a s jistou přesností) Hodnoty.
Abstraktní datové typy
Příkazy cyklu (1) Umožňují vícekrát (nebo ani jednou) pro-vést určitý příkaz Jazyk C rozlišuje příkaz cyklu: s podmínkou na začátku: obecný tvar: while.
Oblast platnosti identifikátoru (1)
Typ pole (1) Proměnná typu pole představuje kolekci proměnných stejného datového typu, které mohou být označovány společným jménem (identifikátorem) Pole.
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.
Fronta (1) Dynamická datová struktura typu FIFO (First In First Out)
Typ ukazatel (1) Proměnné typu ukazatel (pointer) uchovávají paměťovou adresu Hodnota ukazatele říká, kde (na jaké adrese) se v paměti nachází nějaký objekt.
Cyklus for (1) Obecný tvar: for (výraz1; výraz2; výraz3) příkaz
ZAL – 7. cvičení 2016.
Union neboli sjednocení Bitová pole
Algoritmizace a datové struktury (14ASD)
Transkript prezentace:

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 vytvářet, zpřístup-ňovat a rušit pomocí proměnných datového typu ukazatel Dynamické proměnné nemají vlastní identifi-kátor a přístup k nim se provádí zprostředko-vaně přes hodnotu typu ukazatel 27/06/2018

Proměnná p datového typu ukazatel Dynamické proměnné (2) Proměnná p datového typu ukazatel Dynamická proměnná Proměnná typu ukazatel obsahuje adresu pa-měti, kde se nachází hodnota dynamické pro-měnné Na jednu dynamickou proměnnou může uka-zovat více ukazatelů, pomocí nichž je možné provést její zpřístupnění 27/06/2018

Dynamické proměnné (3) Pozor! definicí proměnné typu ukazatel ještě nevzniká vlastní dynamická proměnná Paměťové místo pro dynamickou proměnnou lze alokovat pomocí funkce malloc Zpřístupnění dynamické proměnné se realizu-je použitím dereferenčního operátoru (*) Uvolnění paměťového místa vymezeného pro dynamickou proměnnou (zrušení dynamické proměnné) se provádí prostřednictvím funkce free 27/06/2018

Dynamické proměnné (4) Příklad: int *ptrInt1, *ptrInt2; ptrInt1 = (int *)malloc(sizeof(int)); ptrInt2 = (int *)malloc(sizeof(int)); *ptrInt1 = 0; *ptrInt1 = *ptrInt1+1; scanf(”%d”,ptrInt2); printf(”%d, %d\n”,*ptrInt1,*ptrInt2); free(ptrInt1); free(ptrInt2); 27/06/2018

Dynamické datové struktury (1) Datové struktury, jejichž velikost (počet po-ložek) není známa v době překladu progra-mu Jednotlivé položky těchto struktur mohou vznikat a zanikat během činnosti programu Bývají velmi často realizovány pomocí da-tového typu struct, který obsahuje: část nesoucí vlastní datové informace ukazatel(e), dovolující zpřístupnit další položku (resp. položky) dané struktury 27/06/2018

Dynamické datové struktury (2) Ukazatele v typu struct (pro dynamické datové struktury) typicky obsahují odkaz na právě definovanou strukturu Příklad: typedef struct polozka { int hodnota; struct polozka *dalsi; } typPolozka; typPolozka *dynStrukt; 27/06/2018

Dynamické datové struktury (3) Poznámka: jestliže se struktura odkazuje na sebe samu, pak není možné uvnitř struktury použít identifikátor vytvořený pomocí typedef Proměnná dynStrukt (definovaná jako uka-zatel) může následně sloužit pro zpřístupnění některé z položek celé struktury Pro zpřístupnění ostatních položek lze (opako-vaně) využívat ukazatel dalsi 27/06/2018

Dynamické datové struktury (4) Při práci s ukazateli na typ struktura je možné pro přístup k jednotlivým jejím složkám vy-užít operátor -> Je-li ptrStr ukazatel na strukturu, pak zápis: ptrStr->slozka odkazuje na složku slozka struktury, na níž ukazuje ukazatel ptrStr a je ekvivalentní zápisu: (*ptrStr).slozka 27/06/2018

Dynamické datové struktury (5) Příklad: dynStrukt = (typPolozka *) malloc(sizeof(typPolozka)); dynStrukt->hodnota = 10; /* (*dynStrukt).hodnota = 10; */ Příklady dynamických datových struktur: zásobník (stack) fronta (queue) lineární seznam (linear list) různé typy stromů obecné grafy 27/06/2018

Zásobník (1) Dynamická datová struktura typu LIFO (Last In First Out) Dovoluje přidávat (odebírat) data pouze na jednom svém místě – vrcholu zásobníku 10 vrchol zásobníku 5 20 Po postupném přidání hodnot 100 a 15 bude zásobník vypadat takto: 27/06/2018

Zásobník (2) Odebírání hodnot je možné opět pouze z vrcholu zásobníku 15 vrchol zásobníku 100 10 5 20 Odebírání hodnot je možné opět pouze z vrcholu zásobníku Není možné zpřístupnit jinou hodnotu než tu, která je právě na vrcholu zásobníku 27/06/2018

Zásobník (3) Se zásobníkem je obecně možné provádět následující operace: init (Z): provede prvotní inicializaci zásobníku Z (před jeho prvním použitím) push (Z, X): uloží hodnotu X na vrchol zásob-níku Z pop (Z, X): odebere hodnotu z vrcholu zásob-níku Z a vloží ji do proměnné X empty (Z): testuje, zda-li je zásobník Z prázdný či nikoliv 27/06/2018

Zásobník (4) Implementace zásobníku pomocí dynamických proměnných: typedef struct zasobnik { int hodnota; struct zasobnik *naslednik; } typZasobnik; typZasobnik *z; z hodnota NULL 15 100 10 5 20 naslednik 27/06/2018