• DT = datové typy • ADT/ADS = abstraktní datové typy / struktury
Transkript
© Květuše Sýkorová 20.05.2016 • 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í datové typy / struktury © Květuše Sýkorová • poprvé představen 1974, veřejnosti až 1977 – implementačně nezávislá struktura dat s operacemi na této struktuře • určen: množství alokované paměti + druh dat – paměť (B) – dáno programovacím jazykem a typem PC » Java (pevná velikost), C, C++ (dle velikosti registru – ½, 1, 2) – druh dat – způsob manipulace s daty (DT) » celé číslo, řetězec znaků, měna, desetinné číslo, … 1 20.05.2016 • podle historického vývoje IT – klasické DT • jednoduché DT • složené DT • zvláštní DT – klasické ADT © Květuše Sýkorová • základní ZDT • uživatelské UDT – prostředí .NET • hodnotový DT • referenční DT • klasické DT • jednoduché DT – ordinální (ex. předchůdce a následník) » log.hodnota (boolean), c.číslo (integer), znak (char), výč.typ (enum) – neordinální (číslo s plovoucí čárkou) » reálné číslo (real, float, double) – prázdný » void, null, nill © Květuše Sýkorová • složené DT – homogenní » pole, textový řetězec – nehomogenní » seznamy, struktury, záznamy, třídy • zvláštní DT » ukazatel (*pt), soubor (file), ... 2 20.05.2016 • klasické ADT/ADS – ZDT = základní, primitivní, vestavěné (built‐in) • definované programovacím jazykem – celočíselné, s plovoucí desetinnou čárkou, znakové, logická hodnota » Java: byte, short, int, long, float, double, char, String, boolean » C#: s byte, u short, u int, u long, float, double, decimal, char, string, bool, object © Květuše Sýkorová – UDT = uživatelsky definované • definované programátorem • seskupení primitivních ZDT – pole, textový řetězec, fronta, seznam, zásobník, strom, ... » Java: pole array, třída class, výčtový typ enum, rozhraní interface » C#: pole array, třída class, výčtový typ enum, struktura struct, … • v prostředí .NET • předek třídy System.Object – hodnotový datový typ • vytváření dynamicky (složka třídy) nebo v zásobníku (lokální proměnná metody) • Primitivní (atomické) datové typy © Květuše Sýkorová – celá čísla (byte, short, int, long), znaky (char), reálná čísla (float, double), logické hodnoty (bool), prázdný typ (void, null), výčtový typ, struktura – referenční (odkazový) datový typ • vytváření pouze dynamicky • odkazování – reference • rušení – automatická správa paměti – řetězce (String), pole ([]), třídy (class), … 3 20.05.2016 – celá čísla • uložení: znaménko + bin.číslo – byte (1B) • 0 až 255 / ‐128 až +127 • bez znaménka / se znaménkem – unsigned / signed – záporná čísla ‐ doplňkový kód – např. 10000001 – short (2B) • 0 až 65 535 / ‐32 768 až +32 767 – int (4B, 6B) © Květuše Sýkorová • 0 až 4 294 967 295 / ‐2 147 483 648 až +2 147 483 647 – long (8B) • 0 až 18 446 744 073 709 551 615 / ‐9 223 372 036 854 775 808 až +9 223 372 036 854 775 807 – Java : byte, short, int, long ‐ signed – C# : sbyte, byte, short, ushort, int, uint, long, ulong – reálné číslo • reálné číslo = mantisa * 2exponent – mantisa v normalizovaném tvaru (1,23456789) • uložení: znaménko + mantisa + exponent (= pohyblivá čárka) – velikost mantisy = max. počet platných cifer – velikost exponentu = rozsah zobrazovaných hodnot © Květuše Sýkorová – real / float (4B) • s jednoduchou přesností (3B mantisa + 1B exponent) • ± 1.5 x 10‐45 až ± 3.4 x 1038 • přesnost na 7‐8 cifer za desetinnou čárkou – double (8B) • s dvojitou přesností (6B mantisa + 2B exponent) • ± 5.0 x 10‐324 až ± 1.7 x 10308 • přesnost na 15‐16 cifer za desetinnou čárkou 4 20.05.2016 – celočíselná hodnota znakové sady – znaková sada (kódová stránka) + kódování • ASCII (1B) – 256/128 znaků (1 způsob kódování) – kódování EBCDIC (souběžně s ASCII, pro sálové počíteče) – kódové stránky národních abeced latin‐1, latin‐2, Kamenických, Win1250 © Květuše Sýkorová • Unicode (1B,2B,4B) – 1 114 112 znaků (17*65536) – – – – » standardy UCS (až 32b) + Unicode (až 16b) ‐ 1991 kódování UTF‐7 (7b, znaková sada ASCII) kódování UTF‐8 (8‐32b, ISO 8859‐1, Internet + OS GNU/Linux) kódování UCS‐2 (16b), UTF‐16 (16‐32b, LE, BE, OS Windows) kódování UCS‐4, UTF‐32 (32b, LE, BE, neefektivní) » endianita = ukládání vícebajtových DT (0x4A3B2C1D), LE, BE, ME – char (2B) • lze použít jako celočíselný typ bez znaménka (ushort) – boolean (1bit) – 1 / 0 – true / false – pravda / nepravda • uložen často jako 1B © Květuše Sýkorová • existují i další ZDT – různé pro různé programovací jazyky – Java : string – C# : decimal, void, list, … 5 20.05.2016 • proměnná = odkaz na paměťové místo – na paměťovém místě najdeme hodnotu proměnné • název = ukazatel na 1.bajt • datový_typ = velikost paměťového místa (1B, 2B, 4B, …) © Květuše Sýkorová obsah • deklarace: datový_typ název_proměnné ; short obsah; • definice: název_proměnné = hodnota ; obsah = 15; • ukazatel = odkaz na paměťovou adresu – na paměťové adrese najdeme adresu jiné proměnné – velikost adresy v pamě → rychlejší práce pro velké datové struktury – lze použít jako prvek struktury, atribut třídy • adresový operátor & pro získání adresy proměnné • operátor * pro práci s hodnotou proměnné v místě adresy © Květuše Sýkorová obsah • deklarace: datový_typ * název_ukazatele ; short *ptObsah; ptObsah • definice: název_ukazatele = & proměnná ; ptObsah = &obsah; 6 20.05.2016 • pole = odkaz na řadu homogenních paměťových míst – prvek pole = jedno paměťové místo • určen indexem [i] • umístěny v paměti vedle sebe • stejného datového typu – statické pole (při překladu musí být známa fixní velikost pole) – dynamické pole (při běhu programu se může měnit velikost pole) © Květuše Sýkorová obsah[0] obsah[1] obsah[2] • deklarace: datový_typ[] název_pole [počet_prvků] ; short obsah[4]; short[] objem = new short[pocet]; obsah[3] • definice: název_pole[prvek] = hodnota ; obsah[1] = 15; objem[3] = 7; • struktura = odkaz na seskupení heterogenních paměťových míst hodnotový typ ADS – prvek struktury = jedno paměťové místo • různého datového typu • umístěny v paměti vedle sebe • určen instancí a operátorem . © Květuše Sýkorová ABCD.obsah ABCD.nazev[1] ABCD.nazev[0] • deklarace: struct název_str { typ prvek; } prom ; struct ctverec{ short obsah; char nazev[2]; } ABCD, PQRS; PQRS.obsah • definice: název_prom . prvek = hodnota ; ABCD.obsah = 15; ABCD.nazev = "PX"; 7 20.05.2016 • třída = odkaz na seskupení heterogenních paměťových míst referenční typ ADS – prvek třídy = jedno paměťové místo • různého datového typu • umístěny v paměti vedle sebe • určen instancí a operátorem new © Květuše Sýkorová ABCD.obsah ABCD.nazev[1] ABCD.nazev[0] • deklarace: PQRS.obsah • definice: class název_tr { typ prvek; metody } ; class ctverec{ short obsah; char nazev[2]; Constr(…) …}; název_tr prom = new Constr(…) ; ctverec ABCD = new Constr(15,"PX"); ctverec PQRS = new Constr(); • zásobník = způsob seskupení paměťových míst – metoda LIFO (last in, first out) • součást skoro každého programu © Květuše Sýkorová zasobnik[0] vrchol = ‐1 realizace v poli: int velikost = 4; int Zasobnik[velikost]; int vrchol = ‐1; zasobnik[1] zasobnik[2] zasobnik[3] realizace v C#: public class Stack { object[] items; int count; public void Push(object item) {...} public object Pop() {...} } Stack zasobnik = new Stack(); 8 20.05.2016 • zásobník = způsob seskupení paměťových míst – metoda LIFO (last in, first out) Vložení hodnoty 24 do Zásobníku zasobnik[0] zasobnik[1] zasobnik[2] zasobnik[3] © Květuše Sýkorová 24 vrchol = 0 realizace v C#: zasobnik.Push(24); realizace v poli: vrchol = vrchol + 1; Zasobnik[vrchol] = 24; • zásobník = způsob seskupení paměťových míst – metoda LIFO (last in, first out) Vložení hodnoty 59 do Zásobníku zasobnik[0] © Květuše Sýkorová 24 zasobnik[1] zasobnik[2] zasobnik[3] 59 vrchol = 1 realizace v poli: vrchol = vrchol + 1; Zasobnik[vrchol] = 59; realizace v C#: zasobnik.Push(59); 9 20.05.2016 • zásobník = způsob seskupení paměťových míst – metoda LIFO (last in, first out) Vložení hodnoty 11 do Zásobníku zasobnik[0] © Květuše Sýkorová 24 zasobnik[1] 59 zasobnik[2] zasobnik[3] 11 vrchol = 2 realizace v C#: zasobnik.Push(11); realizace v poli: vrchol = vrchol + 1; Zasobnik[vrchol] = 11; • zásobník = způsob seskupení paměťových míst – metoda LIFO (last in, first out) Vložení hodnoty 37 do Zásobníku zasobnik[0] © Květuše Sýkorová 24 59 zasobnik[1] 11 zasobnik[2] zasobnik[3] 37 vrchol = 3 realizace v poli: vrchol = vrchol + 1; Zasobnik[vrchol] = 37; realizace v C#: zasobnik.Push(37); 10 20.05.2016 • zásobník = způsob seskupení paměťových míst – metoda LIFO (last in, first out) Vyjmutí hodnoty 37 ze Zásobníku zasobnik[0] © Květuše Sýkorová 24 zasobnik[1] 59 zasobnik[2] 11 zasobnik[3] 37 vrchol = 2 realizace v poli: pom = Zasobnik[vrchol]; vrchol = vrchol ‐ 1; realizace v C#: int pom = (int) zasobnik.Pop(); • zásobník = způsob seskupení paměťových míst – metoda LIFO (last in, first out) Vyjmutí hodnoty 11 ze Zásobníku zasobnik[0] © Květuše Sýkorová 24 zasobnik[1] 59 11 zasobnik[2] zasobnik[3] 37 vrchol = 1 realizace v poli: pom = Zasobnik[vrchol]; vrchol = vrchol ‐ 1; realizace v C#: int pom = (int) zasobnik.Pop(); 11 20.05.2016 • zásobník = způsob seskupení paměťových míst – metoda LIFO (last in, first out) Vyjmutí hodnoty 59 ze Zásobníku zasobnik[0] © Květuše Sýkorová 24 zasobnik[1] 59 zasobnik[2] 11 zasobnik[3] 37 vrchol = 0 realizace v poli: pom = Zasobnik[vrchol]; vrchol = vrchol ‐ 1; realizace v C#: int pom = (int) zasobnik.Pop(); • zásobník = způsob seskupení paměťových míst – metoda LIFO (last in, first out) Vložení hodnoty 31 do Zásobníku zasobnik[0] © Květuše Sýkorová 24 zasobnik[1] 31 11 zasobnik[2] zasobnik[3] 37 vrchol = 1 realizace v poli: vrchol = vrchol + 1; Zasobnik[vrchol] = 31; realizace v C#: zasobnik.Push(31); 12 20.05.2016 • používané metody / funkce: – je zásobník plný? 1 1 • ano, pokud • ne, pokud – je zásobník prázdný? 1 © Květuše Sýkorová • ano, pokud • ne, pokud 0 – vlož (push) hodnotu do zásobníku. • otestuj, zda již není plný – vyjmi (pop) hodnotu ze zásobníku. • otestuj, zda již není prázdný • fronta = způsob seskupení paměťových míst – metoda FIFO (first in, first out) • cyklická © Květuše Sýkorová fronta[0] zacatek = 0 konec = 0 realizace v poli: int velikost = 4; int Fronta[velikost]; int zacatek = 0; int konec = 0; fronta[1] fronta[2] fronta[3] realizace v C#: public class Queue { object[] items; int start, stop; public void Push(object item) {...} public object Pop() {...} } Queue fronta = new Queue(); 13 20.05.2016 • fronta = způsob seskupení paměťových míst – metoda FIFO (first in, first out) • cyklická Vložení hodnoty 24 do Fronty fronta[0] fronta[1] fronta[2] fronta[3] © Květuše Sýkorová 24 zacatek = 0 konec = 1 realizace v poli: Fronta[konec] = 24; konec = (konec + 1) % velikost; realizace v C#: fronta.Push(24); • fronta = způsob seskupení paměťových míst – metoda FIFO (first in, first out) • cyklická Vložení hodnoty 59 do Fronty fronta[0] © Květuše Sýkorová 24 fronta[1] fronta[2] fronta[3] 59 zacatek = 0 konec = 2 realizace v poli: Fronta[konec] = 59; konec = (konec + 1) % velikost; realizace v C#: fronta.Push(59); 14 20.05.2016 • fronta = způsob seskupení paměťových míst – metoda FIFO (first in, first out) • cyklická Vložení hodnoty 11 do Fronty fronta[0] © Květuše Sýkorová 24 fronta[1] fronta[2] 59 fronta[3] 11 zacatek = 0 konec = 3 realizace v poli: Fronta[konec] = 11; konec = (konec + 1) % velikost; realizace v C#: fronta.Push(11); • fronta = způsob seskupení paměťových míst – metoda FIFO (first in, first out) • cyklická Vyjmutí hodnoty 24 z Fronty fronta[0] © Květuše Sýkorová 24 fronta[1] fronta[2] 59 fronta[3] 11 zacatek = 1 konec = 3 realizace v poli: pom = Fronta[zacatek]; zacatek = (zacatek + 1) % velikost; realizace v C#: int pom = (int) fronta.Pop(); 15 20.05.2016 • fronta = způsob seskupení paměťových míst – metoda FIFO (first in, first out) • cyklická Vyjmutí hodnoty 59 z Fronty fronta[0] © Květuše Sýkorová 24 fronta[1] 59 fronta[2] fronta[3] 11 zacatek = 2 konec = 3 realizace v poli: pom = Fronta[zacatek]; zacatek = (zacatek + 1) % velikost; realizace v C#: int pom = (int) fronta.Pop(); • fronta = způsob seskupení paměťových míst – metoda FIFO (first in, first out) • cyklická Vložení hodnoty 31 do Fronty fronta[0] © Květuše Sýkorová 24 fronta[1] 59 fronta[2] 11 fronta[3] 31 zacatek = 2 konec = 0 realizace v poli: Fronta[konec] = 31; konec = (konec + 1) % velikost; realizace v C#: fronta.Push(31); 16 20.05.2016 • fronta = způsob seskupení paměťových míst – metoda FIFO (first in, first out) • cyklická Vložení hodnoty 47 do Fronty fronta[0] © Květuše Sýkorová 47 fronta[1] fronta[2] 59 11 fronta[3] 31 zacatek = 2 konec = 1 realizace v poli: Fronta[konec] = 47; konec = (konec + 1) % velikost; realizace v C#: fronta.Push(47); • používané metody / funkce: – je fronta plná? • ano, pokud • ne, pokud 1 % 1 % – je fronta prázdná? © Květuše Sýkorová • ano, pokud • ne, pokud – vlož (push) hodnotu do fronty. • otestuj, zda již není plná – vyjmi (pop) hodnotu z fronty. • otestuj, zda již není prázdná 17 20.05.2016 • seznam = způsob seskupení paměťových míst • lineární spojový seznam, zřetězený seznam (list) – dynamická datová struktura » dynamická alokace paměti, tvorba struktur – pole, stromy, grafy – náročnější na čas, paměť a zkušenost programátora prvek » přístup k prvkům složitější (nelze indexy) – jednosměrný data © Květuše Sýkorová • data + odkaz na další prvek – jednodušší, horší procházení – obousměrný (dvoucestný, dvousměrný) • data + odkaz na předchozí a další prvek – složitější, procházení oběma směry dalsi prvek dalsi data predchozi • seznam = způsob seskupení paměťových míst – jednosměrný • data + odkaz na další prvek class Prvek{ private int data; – jednodušší, horší procházení • vkládání prvků private Prvek dalsi; © Květuše Sýkorová – na začátek – na konec – na pozici v seznamu public Prvek(int d) { NastavData(d); dalsi = null; prvek } public int VratData() {…} data public void NastavData(int d) {…} dalsi }; jednosměrně zřetězený seznam 18 20.05.2016 • seznam = způsob seskupení paměťových míst – jednosměrný, vkládání na začátek seznamu Vložení hodnoty 24 do Seznamu 24 null © Květuše Sýkorová zacatek … zacatek = new Prvek(24); … • seznam = způsob seskupení paměťových míst – jednosměrný, vkládání na začátek seznamu Vložení hodnoty 59 do Seznamu uzel © Květuše Sýkorová 24 null 59 null zacatek … uzel = new Prvek(59); … 19 20.05.2016 • seznam = způsob seskupení paměťových míst – jednosměrný, vkládání na začátek seznamu Vložení hodnoty 59 do Seznamu uzel 24 null 59 adr.24 © Květuše Sýkorová zacatek … uzel.dalsi = zacatek; … • seznam = způsob seskupení paměťových míst – jednosměrný, vkládání na začátek seznamu Vložení hodnoty 59 do Seznamu uzel © Květuše Sýkorová 24 null 59 adr.24 zacatek … zacatek = uzel; … 20 20.05.2016 • seznam = způsob seskupení paměťových míst – jednosměrný, vkládání na začátek seznamu Vložení hodnoty 11 do Seznamu uzel 24 null 11 null 59 adr.24 © Květuše Sýkorová zacatek … uzel = new Prvek(11); … • seznam = způsob seskupení paměťových míst – jednosměrný, vkládání na začátek seznamu Vložení hodnoty 11 do Seznamu uzel © Květuše Sýkorová 24 null 11 adr.59 59 adr.24 zacatek … uzel.dalsi = zacatek; … 21 20.05.2016 • seznam = způsob seskupení paměťových míst – jednosměrný, vkládání na začátek seznamu Vložení hodnoty 11 do Seznamu uzel 24 null 11 adr.59 59 adr.24 © Květuše Sýkorová zacatek … zacatek = uzel; … • seznam = způsob seskupení paměťových míst – jednosměrný, vkládání na začátek seznamu Seznam 11 59 24 uzel © Květuše Sýkorová 24 null 11 adr.59 59 adr.24 zacatek 22 20.05.2016 • seznam = způsob seskupení paměťových míst – jednosměrný, vkládání na začátek seznamu Vyjmutí hodnoty 59 ze Seznamu uzel 24 null 11 adr.59 pom 59 adr.24 © Květuše Sýkorová zacatek … uzel = zacatek; pom = uzel.dalsi; while (pom.data != 59) uzel = pom; pom = uzel.dalsi; … • seznam = způsob seskupení paměťových míst – jednosměrný, vkládání na začátek seznamu Vyjmutí hodnoty 59 ze Seznamu uzel © Květuše Sýkorová 24 null 11 adr.59 pom 59 adr.24 zacatek … uzel.dalsi = pom.dalsi; … 23 20.05.2016 • seznam = způsob seskupení paměťových míst – jednosměrný, vkládání na začátek seznamu Vyjmutí hodnoty 59 ze Seznamu uzel 24 null 11 adr.24 pom 59 adr.24 © Květuše Sýkorová zacatek … // zpracuj pom; … • seznam = způsob seskupení paměťových míst – jednosměrný, vkládání na začátek seznamu Seznam 11 24 uzel © Květuše Sýkorová 24 null 11 adr.24 zacatek 24 20.05.2016 • seznam = způsob seskupení paměťových míst – obousměrný • data + odkaz předchozí, další class Prvek{ private int data; – složitější • vkládání prvků © Květuše Sýkorová – na začátek – na konec – na pozici v seznamu prvek private Prvek predchozi, dalsi; public: Prvek(int d) { NastavData(d); dalsi predchozi = null; dalsi = null; } data public int VratData() {…} predchozi obousměrně zřetězený seznam public void NastavData(int d) {…} }; • seznam = způsob seskupení paměťových míst – obousměrný, vkládání na konec seznamu Vložení hodnoty 24 do Seznamu © Květuše Sýkorová 24 predch. dalsi null null zacatek konec … zacatek = new Prvek(24); konec = zacatek; … 25 20.05.2016 • seznam = způsob seskupení paměťových míst – obousměrný, vkládání na konec seznamu Vložení hodnoty 59 do Seznamu uzel 24 predch. dalsi null null 59 predch. dalsi null null © Květuše Sýkorová zacatek konec … uzel = new Prvek(59); … • seznam = způsob seskupení paměťových míst – obousměrný, vkládání na konec seznamu Vložení hodnoty 59 do Seznamu uzel © Květuše Sýkorová 24 predch. dalsi null adr.59 59 predch. dalsi null null zacatek konec … konec.dalsi = uzel; … 26 20.05.2016 • seznam = způsob seskupení paměťových míst – obousměrný, vkládání na konec seznamu Vložení hodnoty 59 do Seznamu uzel 24 predch. dalsi null adr.59 59 predch. dalsi adr.24 null © Květuše Sýkorová zacatek konec … uzel.predchozi = konec; … • seznam = způsob seskupení paměťových míst – obousměrný, vkládání na konec seznamu Vložení hodnoty 59 do Seznamu uzel © Květuše Sýkorová 24 predch. dalsi null adr.59 59 predch. dalsi adr.24 null zacatek konec … konec = uzel; … 27 20.05.2016 • seznam = způsob seskupení paměťových míst – obousměrný, vkládání na konec seznamu Vložení hodnoty 11 do Seznamu uzel 24 predch. dalsi null adr.59 11 predch. dalsi null null 59 predch. dalsi adr.24 null © Květuše Sýkorová zacatek konec … uzel = new Prvek(11); … • seznam = způsob seskupení paměťových míst – obousměrný, vkládání na konec seznamu Vložení hodnoty 11 do Seznamu uzel © Květuše Sýkorová 24 predch. dalsi null adr.59 11 predch. dalsi null null predch. 59 dalsi adr.24 adr.11 zacatek konec … konec.dalsi = uzel; … 28 20.05.2016 • seznam = způsob seskupení paměťových míst – obousměrný, vkládání na konec seznamu Vložení hodnoty 11 do Seznamu uzel 24 predch. dalsi null adr.59 11 predch. dalsi adr.59 null predch. 59 dalsi adr.24 adr.11 © Květuše Sýkorová zacatek konec … uzel.predchozi = konec; … • seznam = způsob seskupení paměťových míst – obousměrný, vkládání na konec seznamu Vložení hodnoty 11 do Seznamu uzel © Květuše Sýkorová 24 predch. dalsi null adr.59 11 predch. dalsi adr.59 null predch. 59 dalsi adr.24 adr.11 zacatek konec … konec = uzel; … 29 20.05.2016 • seznam = způsob seskupení paměťových míst – obousměrný, vkládání na konec seznamu Seznam 24 59 11 uzel 24 predch. dalsi null adr.59 11 predch. dalsi adr.59 null predch. 59 dalsi adr.24 adr.11 © Květuše Sýkorová zacatek konec • seznam = způsob seskupení paměťových míst – obousměrný, vkládání na konec seznamu Vyjmutí hodnoty 59 ze Seznamu uzel © Květuše Sýkorová 24 predch. dalsi null adr.59 11 predch. dalsi adr.59 null predch. 59 dalsi adr.24 adr.11 zacatek konec … uzel = zacatek; while (uzel.data !=59) uzel = uzel.dalsi; … 30 20.05.2016 • seznam = způsob seskupení paměťových míst – obousměrný, vkládání na konec seznamu Vyjmutí hodnoty 59 ze Seznamu pom 24 uzel predch. dalsi null adr.59 11 predch. dalsi adr.59 null predch. 59 dalsi adr.24 adr.11 © Květuše Sýkorová zacatek konec … pom = uzel.predchozi; pom.dalsi = uzel.dalsi; … • seznam = způsob seskupení paměťových míst – obousměrný, vkládání na konec seznamu Vyjmutí hodnoty 59 ze Seznamu pom © Květuše Sýkorová 24 predch. dalsi null adr.11 11 uzel predch. dalsi adr.59 null predch. 59 dalsi adr.24 adr.11 zacatek konec … pom = uzel.dalsi; pom.predchozi = uzel.predchozi; … 31 20.05.2016 • seznam = způsob seskupení paměťových míst – obousměrný, vkládání na konec seznamu Vyjmutí hodnoty 59 ze Seznamu pom 24 predch. dalsi null adr.11 11 uzel predch. dalsi adr.24 null predch. 59 dalsi adr.24 adr.11 © Květuše Sýkorová zacatek konec … // zpracuj uzel; … • seznam = způsob seskupení paměťových míst – obousměrný, vkládání na konec seznamu Seznam 24 11 © Květuše Sýkorová 24 predch. dalsi null adr.11 11 predch. dalsi adr.24 null zacatek konec 32
Podobné dokumenty
ZÁKLADY PROGRAMOVACÍHO JAZYKA TURBO PASCAL
2) číslice 0 až 9,
3) speciální symboly + – . , ‘ ( ) / * <= >= <> = := .. [ ] { } a klíčová slova.
Klíčová slova jsou: and, array, asm, end, case, const, constructor, destruktor, div, do, downto,
...
Návod na vrátného CV
můžeme volit libovolné číslo jako při normálním telefonování. Nelze volit jen
znaky * a #. Stiskem tlačítka * se linka zavěsí. Při použití této funkce
nezavěšuje vrátný automaticky ale musí se vždy...
Úvod
Délka EXPONENTU - tj. počet bitů na exponent - určuje rozsah
Pozn. 1 exponent se zvlášt’ musı́ vyhradit pro 0, která nemá logaritmus,
mantisy u tohoto exponentu lze využı́t pro vyznačenı́...
Zobrazení čísel v počítači
Reálná čísla
Čísla v pevné řádové čárce
➢ používá se pouze pro speciální účely (finanční software)
➢ vhodné pro čísla se známou pevným formátem (např. měna)
➢ zobrazeny jako „přeškálovaná...
rozbor zápočtové úlohy
V sekci
Instrukce a data
zvýšení indexu do pole aby odkazoval na následující
prvek, řídící proměnné cyklu, ...
stávající instrukce umožňují pouze použití konstant
uložených v paměti – např. přičtení 4 k registru $s3
lw $t0...
Distribuované programování na platformě Microsoft .NET
• Máte pevné číslo portu, tj. nemůžete spustit server dvakrát.
• Nemůžete mít víc kanálů stejného typu (např. 2x „http server“ nejde)
• Nemůžete přiřadit