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ý.

Slides:



Advertisements
Podobné prezentace
Gymnázium Vincence Makovského se sportovními třídami Nové Město na Moravě VY_32_INOVACE_INF_RO_17 Digitální učební materiál Sada: Úvod do programování.
Advertisements

Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
Programování funkcí v Excelu (pole)
Programování 2 Cvičení 5.
Programování v Pascalu
Algoritmizace od algoritmu k Pascalu.
Vnitřní řazení v poli (in sito)
1 Vnitřní řazení s využitím dynamických struktur Tvorba spojového seznamu je vcelku triviální záležitostí: a)Vytvořím prázdný seznam příkazem LIST:=nil.
10. Dynamické datové struktury
DATOVÝ TYP POLE.
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.
Programování v Pascalu Přednáška 8
Programování v Pascalu Přednáška 4
Programování v Pascalu Přednáška 10 RNDr. Hana Havelková.
Programování v Pascalu Přednáška 6
Programování v Pascalu Přednáška 3
Programování v Pascalu Přednáška 5 RNDr. Hana Havelková.
Programování v Pascalu Přednáška 9 RNDr. Hana Havelková.
Algoritmizace a programování Podprogramy v Delphi - 10
Algoritmizace a programování Operátory a příkazy v Delphi - 07
Principy překladačů Běhová podpora Jakub Yaghob. Běhová podpora Statická podpora jazyka Překladač Interface na knihovny Hlavičkové soubory Dynamická podpora.
Programování v Pascalu Přednáška 7
JavaScript - 5. část Pole Ústav automatizace inženýrských úloh a informatiky FAST VUT v Brně 0U2 - Základy informatiky a výpočetní techniky 2.
Materiály k přednášce Úvod do programování Ondřej Čepek.
Gymnázium Vincence Makovského se sportovními třídami Nové Město na Moravě VY_32_INOVACE_INF_RO_15 Digitální učební materiál Sada: Úvod do programování.
Informatika I 3. přednáška
Procedury a funkce Základní charakteristika a použití v programu.
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
Vyučovací hodina 1 vyučovací hodina: Opakování z minulé hodiny 5 min Nová látka 20 min Procvičení nové látky 15 min Shrnutí 5 min 2 vyučovací hodiny: Opakování.
Deklarace Radim Štefan. 2 Použité zkratky BP – Borland Pascal De – Delphi.
Gymnázium Vincence Makovského se sportovními třídami Nové Město na Moravě VY_32_INOVACE_INF_RO_03 Digitální učební materiál Sada: Úvod do programování.
Gymnázium Vincence Makovského se sportovními třídami Nové Město na Moravě VY_32_INOVACE_INF_RO_18 Digitální učební materiál Sada: Úvod do programování.
Podmienený príkaz. Kĺúčové slová  Pro podmínky se v Pascalu používají klíčové příkazy IF, THEN a ELSE.  Také se jim říká „príkaz vetvenia"..  Příkaz.
Algoritmy a programovací techniky
Úvod do Pascalu. Co je Pascal? vyšší programovací jazyk poskytuje prostředky pro popis algoritmů, které odrážejí povahu řešených problémů, a nikoliv technickou.
ALGORITMIZACE A ZÁKLADY PROGRAMOVÁNÍ ŘAZENÍ PRVKŮ – OPAKOVANÝM VÝBĚREM NEJVĚTŠÍHO PRVKU (SELECTSORT) Vytvořila: RNDr. Ivanka Dvořáčková Gymnázium K. V.
ALGORITMIZACE A ZÁKLADY PROGRAMOVÁNÍ ŘAZENÍ PRVKŮ – PŘÍMOU VÝMĚNOU (BUBBLESORT) Vytvořila: RNDr. Ivanka Dvořáčková Gymnázium K. V. Raise, Hlinsko, Adámkova.
A1PRG - Programování – Seminář Ing. Michal Ukazatele a pole 10 Verze
3. Příkazy  Příkazy dělíme na jednoduché a strukturované.  Jednoduché příkazy - žádnou jejich dílčí částí neni příkaz - přiřazovací, vstupu a výstupu,
5. Procedury a funkce Procedura je samostatně odladěný algoritmus, v programu může být volána vícekrát. Dvojí terminologie - rozlišujeme procedury a funkce.
Programovací jazyk PASCAL
Algoritmizace a programování Binární soubory - 14 Mgr. Josef Nožička IKT Algoritmizace a programování
2 CYKLUS S PEVNÝM POČTEM OPAKOVÁNÍ Podle řídící proměnné proveď n-krát příkaz P1.
Gymnázium Vincence Makovského se sportovními třídami Nové Město na Moravě VY_32_INOVACE_INF_RO_06 Digitální učební materiál Sada: Úvod do programování.
STROMY Datová struktura sestávající z uzlů
7. Typ soubor Souborem dat běžně rozumíme uspořádanou množinu dat, uloženou mimo operační paměť počítače (na disku). Pascalský soubor je abstrakcí skutečného.
Gymnázium Vincence Makovského se sportovními třídami Nové Město na Moravě VY_32_INOVACE_INF_RO_08 Digitální učební materiál Sada: Úvod do programování.
Gymnázium Vincence Makovského se sportovními třídami Nové Město na Moravě VY_32_INOVACE_INF_RO_20 Digitální učební materiál Sada: Úvod do programování.
NEÚPLNÁ PODMÍNKA V JAVĚ. VÝVOJOVÝ DIAGRAM +- Podmínka Příkaz_1.
Algoritmizace a programování Textové soubory - 13 Mgr. Josef Nožička IKT Algoritmizace a programování
Typy cyklů Do...Loop For...Next For Each...Next.
Gymnázium Vincence Makovského se sportovními třídami Nové Město na Moravě VY_32_INOVACE_INF_RO_16 Digitální učební materiál Sada: Úvod do programování.
GYMNÁZIUM, VLAŠIM, TYLOVA
Gymnázium Vincence Makovského se sportovními třídami Nové Město na Moravě VY_32_INOVACE_INF_RO_19 Digitální učební materiál Sada: Úvod do programování.
Počítače a programování 1 7.přednáška. Základy Pole ve třídách a metodách Pole Arrays.
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.
6. Typ záznam Strukturovaný datový typ - znamená spojení několika elementů stejného nebo různých typů do jedné proměnné. Např. pole je strukturovaný datový.
doc. RNDr. Zdeněk Botek, CSc.
Pascal – if Mgr. Lenka Švancarová.
Informatika I 12. přednáška RNDr. Jiří Dvořák, CSc.
4. Typ pole 4.1 Jednorozměrná pole
doc. RNDr. Zdeněk Botek, CSc.
doc. RNDr. Zdeněk Botek, CSc.
Úvod do programování2 Vyučující: Mgr. Vítězslav Jersák Web: xjv.webnode.cz.
Cvičení 2 Podmíněné příkazy, cykly. Podmíněné příkazy Podmínka – jakýkoliv logický výraz ( a=1,……..) ( a=1,……..) Příkaz – vlastní instrukce, která se.
Cvičení 3-4 Procedury, funkce,řetězce. Procedury Procedura Procedura Procedura je podprogram, který mění stav programu (změnou stavu proměnných nebo změnou.
Strukturované typy proměnných v programovacím jazyce Pascal - 2.hodina
© Copyright Radim Štefan
Opakování základních příkazů a syntaxí v programovacím jazyce Pascal
program TextovySoubor;
Transkript prezentace:

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ý identifikátor, odkazujeme se na ní pomocí speciálního typu - typu ukazatel. Hodnotou proměnné typu ukazatel je adresa umístění dynamické proměnné v paměti. Každý typ ukazatel je vázán na jeden typ dynamické proměnné. type spoj=^objekt; {spoj je ukazatel na proměnnou typu objekt} objekt=record hodnota:integer; dalsi:spoj; end; var p:spoj;

Objekt je typ definovaný pro vytvoření dynamické proměnné, která je typu záznamem. P - je ukazatel na dynamickou proměnnou typu objekt. Procedura new vytváří dynamickou proměnnou v oblasti operační paměti nazývané hromada - heap. Příkaz new(p) vytvoří dynamickou proměnnou typu object a ukazatel na ní uloží do proměnné p. Speciální hodnotou typu ukazatel je hodnota nil, která říká, že ukazatel nikam neukazuje. Po vytvoření má dynamická proměnná nedefinovanou hodnotu. Příklad práce s dynamickou proměnnou:· new(p); p^.hodn:=4; p^.dalsi:=nil

Možné přiřazení: p:=q... proměnné typu ukazatel může být přiřazena hodnota jiné proměnné typu ukazatel, obě budou ukazovat na stejnou dynamickou proměnnou, p^:=q^... hodnota dynamické proměnné, na kterou ukazuje proměnná q se překopíruje do dynamické proměnné, na kterou ukazuje proměnná p.

Proměnné téhož typu ukazatel mohou být použity jako operandy relačních operátorů =,<>; p=q je true, když obě proměnné ukazují na tutéž proměnnou. Operandem v těchto relacích může být také hodnota nil. Zrušení dynamické proměnné se provede příkazem dispose(p). Tímto příkazem se pouze uvolní část paměti zabraná dynamickou proměnnou, obsah proměnné p se nemění. Uvolněnou oblast paměti pak může použít jiná dynamická proměnná. Nevhodným vytvářením a rušením dynamických proměnných mohou v hromadě vzninout díry, což vede k neefektivnímu využití paměti. Př.: Příklad použití dynamické proměnné typu pole pevné velikosti.

program DynamickePole; type TPole=array[1..100] of real; TPole=array[1..100] of real;var i,j,n:integer; i,j,n:integer; a:^TPole; a:^TPole; p:real; p:real; f:text; f:text;begin writeln('Ukazka pouziti dynamicke promenne'); writeln('Ukazka pouziti dynamicke promenne'); writeln('*********************************'); writeln('*********************************'); writeln; writeln; assign(f,'data.txt');reset(f); assign(f,'data.txt');reset(f); new(a); new(a); read(f,n); read(f,n); writeln('Zadana posloupnost:'); writeln; writeln('Zadana posloupnost:'); writeln; for i:=1 to n do begin for i:=1 to n do begin read(f,a^[i]); read(f,a^[i]); write(a^[i]:8:2); write(a^[i]:8:2); end; end; writeln; writeln; writeln; writeln;

for i:=1 to n-1 do for i:=1 to n-1 do for j:=i+1 to n do for j:=i+1 to n do if a^[j]>a^[i] then begin if a^[j]>a^[i] then begin p:=a^[i]; a^[i]:=a^[j]; a^[j]:=p; p:=a^[i]; a^[i]:=a^[j]; a^[j]:=p; end; end; writeln('Setridena posloupnost:'); writeln; writeln('Setridena posloupnost:'); writeln; for i:=1 to n do for i:=1 to n do write(a^[i]:8:2); write(a^[i]:8:2); dispose(a); dispose(a); writeln; writeln; writeln; writeln; writeln('Konec - ENTER!'); writeln('Konec - ENTER!'); readln; readln;end.Př.: Příklad použití dynamické proměnné typu pole proměnné velikosti.

program DynamickePole2; type TPole=array[1..100] of real; TPole=array[1..100] of real;var i,j,n:integer; i,j,n:integer; a:^TPole; a:^TPole; p:real; p:real; f:text; f:text;begin writeln('Ukazka pouziti dynamicke promenne'); writeln('Ukazka pouziti dynamicke promenne'); writeln('*********************************'); writeln('*********************************'); writeln; writeln; assign(f,'data.txt');reset(f); assign(f,'data.txt');reset(f); read(f,n); read(f,n); GetMem(a,n*sizeof(real)); {n < 100 !!!!} GetMem(a,n*sizeof(real)); {n < 100 !!!!} writeln('Zadana posloupnost:'); writeln; writeln('Zadana posloupnost:'); writeln; for i:=1 to n do begin for i:=1 to n do begin read(f,a^[i]); read(f,a^[i]); write(a^[i]:8:2); write(a^[i]:8:2); end; end; writeln; writeln; writeln; writeln;

for i:=1 to n-1 do for j:=i+1 to n do for j:=i+1 to n do if a^[j]>a^[i] then begin if a^[j]>a^[i] then begin p:=a^[i]; a^[i]:=a^[j]; a^[j]:=p; p:=a^[i]; a^[i]:=a^[j]; a^[j]:=p; end; end; writeln('Setridena posloupnost:'); writeln; writeln('Setridena posloupnost:'); writeln; for i:=1 to n do for i:=1 to n do write(a^[i]:8:2); write(a^[i]:8:2); FreeMem(a); FreeMem(a); writeln; writeln; writeln; writeln; writeln('Konec - ENTER!'); writeln('Konec - ENTER!'); readln; readln;end.