Typ množina: pascal vie pracovať aj s dátovýmiobjektmi, ktorých hodnoty sú množiny. Typ množina je zložený z ordinárnychtypov. Množina nesmie mať viac ako 255 prvkov. V rámci triedy množina súdefinované množinové a relačné operácie: A+B <=> zjednoteniemnožín A a B A=B <=> rovnosťmnožín A a BA-B <=> rozdielmnožín A a B A<>B <=> nerovnosťmnožín A a BA*B <=> prienikmnožín A a B A<=B <=> Aje podmnožinou B
A>=B <=> Aobsahuje B
xin A <=> prvokx je prvkom AMedzi jednoduchéprípady použitia množín patrí vyjadrovanie podmienok príslušnosti nejakejhodnoty do určitej množiny hodnôt, kde dlhé logické výrazy nahradím relácious operátorom in.V praxi môžepoužitie množín vyzerať nasledovne: USES crt;TYPE znaky =SET OF char;const velke :znaky = ['A'..'Z']; pismenko : znaky = ['A'..'Z']+['a'..'z']; cislica : znaky = ['0'..'9'];var a : char;beginwriteln('Stlaclubovolny klaves');a:=readkey;if a in velke then writeln('Velkepismenko');if a in pismenko-velke then writeln('Malepismenko');if a in cislica+pismenko then writeln('Cislica,pismenko');end.
Typ súbor: Je síce pekné, akprogram spracuje množstvo dát, vyhodnotí údaje a poskytne výsledky. Ako náhlepočítač vypneme, výsledky sú nenávratne preč. Bolo by teda vhodné mať možnosť,uchovať výsledky aj po vypnutí počítača. A na to sú stvorené súbory, súhrny informáciíuložené na pevnom disku počítača, ktoré sa uchovávajú aj po vypnutí počítača.Turbo Pascalrozpoznáva celkom tri druhy premenných typu súbor (file). Sú to súbory s udanýmtypom, bez udaného typu a súborytypu text. Ukážme si, ako sa pracujeso súborom s udaným typom a so súborom typu text. Súbor s udaným typom pracujes položkami, ktoré sú všetky rovnakého typu (integer, real, record...). Toznamená, že zápis ale aj čítanie so súbory prebieha vždy po položkách. Takýtosúbor je bez toho aby sme niečo vedeli o type položky v podstate nečitateľný(napr. v Norton Commanderi príkazom F3). Súbor typu text obsahuje textovéinformácie (premenná typu string je definovaná ako array[0..255] of char).Tento súbor sa dá veľmi jednoducho prezerať aj v NC. Nasledujúci programdemonštruje prácu so súbormi: uses crt;var c:file ofinteger; t:text;varcislo:integer; retazec:string; znak : char;beginassign(c,'subor.num');rewrite(c);assign(t,'subor.txt');rewrite(t);repeat writeln('Zadaj cele cislo'); readln(cislo); write(c,cislo); writeln('Dalsi vstup? a/n'); znak := readkey;untilznak='n';repeat writeln('Zadaj text'); readln(retazec); writeln(t,retazec); writeln('Dalsi vstup? a/n'); znak := readkey;untilznak='n';close(t);append(t);writeln(t,'Textna konci suboru');writeln('Pripojeniena koniec suboru');repeat writeln('Zadaj text');readln(retazec); writeln(t,retazec); writeln('Dalsi vstup? a/n'); znak := readkey;untilznak='n';reset(c);reset(t);writeln('Obsahsubor.num:');while noteof(c) do begin read(c,cislo); writeln(cislo); end;writeln('Obsahsubor.txt:');while noteof(t) do begin read(t,znak); write(znak); if eoln(t) then begin readln(t); writeln; end; end;close(t);close(c);end.
PROCEDÚRY a FUNKCIE: každýzložitejší mechanizmus je potrebné riadiť hierarchickým spôsobom. Hierarchiaspočíva v tom, že horné vrstvy (šéfovia, vedúci, velitelia) sa zaoberajúvšeobecnými problémami a informáciami a dolné vrstvy (podriadení, robotníci,vojaci) sa zaoberajú detailmi. Generál vie ako vyhrať boj, ale nie veľmi hozaujíma ako ženista postaví most cez rieku. Jedno však spraviť musí: prikázaťženistovi "postav_most".Takže, náš generál začal používať príkaz: "postav_most". Všetko bolo v poriadku až do chvíle, keď samali vojaci preplaviť v mieste, kde tiekli dve rieky. Chudák ženista nevedel naktorej rieke má most postaviť. Uvedomil si to aj generál a zmenil svoj príkazna tvar "postav_most cez rieku R".Istú dobu to fungovalo, ale občas sklerotický ženista zabudol kde naposledymost staval a tak ho nemohol nájsť a postaviť znova na inom mieste. Generálporozmýšľal a vymyslel príkaz: "postav_mostna rieke R, most nájdeš na mieste M"., kde M bolo miesto, kde sa mostnaposledy staval. Samozrejme že vždy keď sa postavil most na novom mieste,zmenila sa aj hodnota M, takže generál mal vždy prehľad o tom, kde sa moststaval naposledy. Zdalo sa, že všetko bude v poriadku, ale nebolo to tak. Jerozdiel v tom, či je most postavený na pokojnej malej riečke, alebo naveľkej rýchlo tečúcej rieke. Ak bol most na malej riečke, mohlo cez most prejsťviac vojakov a rýchlejšie. Ak to bola veľká rieka, vojaci museli chodiťopatrne, po jednom, čo značne spomaľovalo presun. Generál preto vydalnariadenie, podľa ktorého príkaz pre stavbu mosta cez rieky znie: "postav most na rieke R, most nájdeš namieste M, podaj hlásenie ako rýchlo sa vojaci môžu po moste prepravovať, P".Ak ženista dostal tento príkaz, vedel na ktorej rieke (R) má most postaviť,vedel kde bol most postavený naposledy (M), takže ho rýchlo našiel, navyše podal generálovi hlásenie opriepustnosti mosta (P). Ak ženista vykonal príkaz, vedel generál kde jenovopostavený most a akú má priepustnosť. Presne tak to funguje aj vprogramovaní, ale nestaviame mosty a nie je tu generál a ženista, ale počítamehodnoty premenných podľa istých vzťahov, je tu hlavný program a podprogramy,ktoré nazývame procedúry a funkcie. Ak by sme chceli generálovepríkazy prepísať do jazyka Pascal mohlo by to vyzerať nasledovne:1 príkaz: procedurepostav_most ; 2 príkaz: procedurepostav_most(R); begin begin najdi most; najdi most; presun most; presun most k rieke R; postav most; postav most; end; end; 3 príkaz: procedurepostav_most(R,var M); begin; chod na miesto M; presun most k rieke R; postav most; zmen hodnotu M; end; 4 príkaz functionpostav_most(R,var M):P; begin chod na miesto M; presun most k rieke R; postav most; zmen hodnotu M; podaj hlasenie opriepustnosti mosta P; end; Procedúry a funkcie tvoriapostupnosti inštrukcií, ktoré potrebujeme v programe opakovať viackrát a narôznych miestach. Procedúry a funkcie musia byť deklarované v časti deklaráciíprocedúr a funkcií. Po deklarácii môžebyť procedúra alebo funkcia použitá kdekoľvek v nasledujúcom bloku programu.Rozdiel medzi procedúrou a funkciou je v tom, že funkcia vracia hodnotu a môžesa použiť priamo vo výrazoch. Procedúra sa vyvolá príkazom volania procedúry avykoná jednu alebo viac inštrukcií. Všimnite si kapitolu "Štandardnéprocedúry a funkcie Pascalu". Príkazy, ktoré bežne používate, sú procedúrya funkcie, ale už sú dopredu zadeklarované. Nemusíte teda vedieť ako pracujú,ale čo robia. Procedúry a funkcie môžu byť bez parametrov (príkaz 1), sparametrami volanými hodnotou (príkaz 2), s parametrami volanými odkazom(príkaz 3: var M). Samozrejme, že je možná ich ľubovoľná kombinácia. Pr.: Vytvorme opäťprogram, ktorý hľadá korene kvadraticke rovnice, a použime procedúry a funkcie. vara,b,c,d:real;functiondeterminant(kvad,lin,abs:real):real;begindeterminant:=sqr(lin)-4*a*c;end;functionma_riesenie(x:real):boolean;beginifx<0 then ma_riesenie:=false else ma_riesenie:=true;end;procedurekorene(kvad,lin,det:real);varx1,x2:real;beginx1:=(-lin+sqrt(det))/(2*kvad);x2:=(-lin-sqrt(det))/(2*kvad);writeln(’Korenerovnice su: ’,x1,’ ’,x2);end; procedurevstup(var kv,li,ab:real);beginwriteln(’Zadajkoeficienty kvadratickej rovnice: ’);readln(kv,li,ab);end; beginvstup(a,b,c);d:=determinant(a,b,c);ifma_riesenie(d) then korene(a,b,d) else writeln(’Rovnica nemariesenie’);end. Zbierka príkladov:
Zaujímavosti o referátoch
Ďaľšie referáty z kategórie