Umíte pascalsky - 14.lekce ... |
Umíte pascalsky? 14.lekce |
Vytisknout |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Programátorem definované typy Datový typ je definován stanovením množiny hodnot daného typu, stanovením množiny přípustných operací a přiřazením jména daného typu. Dosud jsme se seznámili s tzv. standardními jednoduchými typy - integer, real, char a Boolean. Programátor si ale také může definovat vlastní typy. Výčtový typ má zadanou množinu hodnot explicitním vyjmenováním těchto hodnot. Například při zpracování osobních dotazníků potřebujeme do proměnné stav uložit rodinný stav. Definujeme nový typ TStav a potom již můžeme deklarovat proměnnou stav typu TStav: type TStav =(svobodny,zenaty,rozvedeny,vdovec); var stav : TStav; Výčtový typ je ordinální typ a jsou pro něj definovány relační operace a standardní funkce ord, succ a pred. Žádné další operace nejsou definovány - nelze požít pro načítání příkazu read a výstup write. Je třeba si pro vstup a výstup napsat procedury. Interval má zadanou množinu hodnot jako interval hodnot už definovaného typu. Chceme-li pracovat s proměnnou mesic,nota v obvyklém významu, definujeme nejprve typy TDen, TNota a potom deklarujeme proměnné mesic a nota: type TMesic = 1..12; (přesně dvě tečky) TNota = "'c'..'h'"; var mesic: TMesic: nota:TNota; S proměnnou typu interval je již práce pohodlnější (než s proměnnou typu výčet), protože jsou pro ni definovány tytéž oprace jako pro hostitelský typ - typ z kterého byl interval vybrán. V našem příkladě jako pro typ integer u typu TDen a jako pro typ char a typu TNota. Strukturované datové typy Datovým jednotkám vytvořeným z více položek říkáme strukturovaná data. Jednotlivým položkám říkáme složky (prvky) strukturovaných dat. Každá složka má svůj vlastní typ a existují operace na zpřístupnění složek. Podle typu a počtu složek můžeme rozdělit strukturované datové typy: - pole - záznam - množina - soubor - objekt Pole Pole je homogenní datová struktura skládající se ze složek stejného typu, které se vzájemně rozlišují pomocí indexu. Datový typ pole deklarujeme takto: type <název> = array [typ indexu] of <typ složek> Tedy například: type TVektor = array[1..3] of integer; TKod = array[a..z] of char; Proměnné těchto typů deklarujeme běžným způsobem : var vektor, vektor_new : TVektor; kod: TKod; S každou proměnnou typu pole můžeme pracovat buď jako s celkem nebo s její složkou. Napíšeme-li někde v programu vektor .... představuje všechny tři souřadnice vektoru, která jsou celá čísla vektor[2] .... představuje druhou souřadnici (složku) vektoru a nazývá se indexovaná proměnná Zpřístupnění složek proměnné typu pole provádíme pomocí indexu. Hodnoty proměnných typu pole se definují a mění buď postupně tak, že se přiřazují hodnoty jednotlivým složkám: Například: vektor[1]:=5 ; vektor[2]:=0 ; vektor[3]:=-2; nebo najednou celé proměnné: vektor_new:=vektor; pokud je proměnná vektor_new téhož typu (deklarovaná ve stejné deklaraci) a proměnná vektor již je definovaná. Příklady: Příklad1: Vstupovat bude 10 celých čísel. Sestavte program Maximum_na_konec pro vytvoření posloupnosti, která vznikne z původní posloupnosti tak. že poslední hodnota bude vyměněna s maximální hodnotou. Tedy například: ![]() V tomto příkladě budeme potřebovat proměnnou Cisla typu pole pro uložení všech čísel, protože zadaná čísla se budou procházet dvakrát. Poprvé při hledání maxima a podruhé při výměně maxima s posledním číslem. Myšlenka (hrubý algoritmus): < přečti zadaná čísla a ulož do pole Cisla > - Nacti_Pole < najdi maximální prvek v poli Cisla > - Najdi_Maximum < vyměň maximální prvek s posledním prvkem pole Cisla > - Vymena < napiš prvky pole Cisla > - Tisk_Pole Program Maximum_na_konec může vypadat takto:
Příklad2: Vstupovat bude zadaný počet celých čísel. Sestavte program Minimum_na_zacatek pro vytvoření posloupnosti, která vznikne z původní posloupnosti tak. že první hodnota bude vyměněna s minimální hodnotou. Domácí úkol: Vstupovat bude zadaný počet celých čísel. Sestavte program Minimum_bublej_zacatek pro vytvoření posloupnosti, která vznikne z původní posloupnosti tak. že minimální hodnotou se postupnými výměnami sousedních čísel dostane na první místo. On-line účast na řešení úkolu
Pomocí volby Řešit můžete (po přihlášení) odeslat vaše řešení domácího úkolu (každý úkol smíte řešit jen jednou). Volbou Hodnocení si přečtete hodnocení a komentář od vyučujícího. Dotaz nebo připomínku můžete opakovaně zasílat pomocí tlačítka Dotazy, Komunikace (na levém okraji) zobrazuje příklad možné komunikace s vyučujícím. |