prikaz1;
prikaz2;
...
prikazn;
END;Vprípade, že podmienka platí, tak sa prikazresp. prikaz1, prikaz2, ..prikazn bude opakovane vykonávať pri každomprechode cyklom. V prípade, že podmienka neplatí, príkaz while sa ukončí. Telocyklu (príkazy sa slovom DO) musí obsahovať aj príkazy, ktoré majú vplyv naplatnosť podmienky. V opačnom prípade bude vykonávanie cyklu nekonečné. Keďženajskôr sa testuje platnosť podmienky, cyklus sa nemusí zopakovať ani raz(stane sa to v tom prípade, ak podmienka hneď na začiatku neplatí, pozrirepeat). Pretože podmienka je na začiatku, nazýva sa tento cyklus aj cyklus spodmienkou na začiatku. Cyklus WHILE končí, ak podmienka prvýkrát neplatí. Tentoprogram (presnejšie povedané časť programu) vypíše všetky znaky, ktoré sa dajúzobraziť pomocou klávesnice (pozor, niektoré znaky sú neviditeľne, napr.:medzera). Všetky znaky sú zoradené jeden za druhým. Každému z nich je pridelenéporadové číslo. Všetkých znakov je 256 a majú poradové čísla od 0 do 255.Funkcia chr (pozri konverzné funkcie) priradí poradovému číslu znak s týmtoporadovým číslom. Druhý cyklus nikdy neskončí, pretože hodnota premennej i budestále 255, čo je vždy väčšie ako 0. Napr. správne nesprávne writeln(’Vypis ASCIIznakov:’) writeln(’Vypis ASCII znakov:’)i := 255; i:= 255;WHILE i >=0 DO BEGIN WHILEi >= 0 DO BEGIN WRITELN(chr(i)); WRITELN(chr(i)); i :=i - 1; END; END;
Príkazcyklu REPEAT: REPEAT prikaz1; prikaz2; ... prikazn; UNTIL podmienka; Príkazcyklu REPEAT zabezpečí opakované vykonávanie príkazov prikaz1,prikaz2, ... prikazn.Príkazy sa opakujú, pokiaľ podmienka neplatí.Príkaz cyklu REPEAT skončí, ak podmienka poprvýkrát platí. Telo cyklu musí obsahovať príkazy, ktoré majú vplyv na platnosťpodmienky. V opačnom prípade sa cyklus REPEAT môže opakovať nekonečneveľakrát (bude teda nekonečným cyklom). Keďže najskôr sa vykonajú príkazy prikaz1, prikaz2, ... prikazn a až potom sa testuje platnosť podmienky,vykonajú sa príkazy cyklu vždy aspoň raz (ak sa príkazy cyklu zopakovalipráve raz, nastal prípad, že hneď priprvom testovaní podmienky podmienka platí, pozri while). Cyklus REPEAT sanazýva aj cyklus s podmienku na konci. Všimnite si, že ak chceme v telecyklu zopakovať viac ako jeden príkaz, tak nemusíme použiť begin a end. Tentoalgoritmus zistí, či zadané číslo x je prvočíslo (t.j. také číslo, ktoré mápráve dva rôzne delitele, jedničku a samé seba). Algoritmus skúša deliť číslo xkaždým celým číslom z intervalu <2,>. Na začiatku má premenná je_delitel hodnotu true(predpokladáme, že číslo x je prvočíslo) V prípade, že algoritmus nájde číslo,ktorým je x deliteľné ((x mod delitel)=0), hodnota premennej je_delitel sazmení na false. Cyklus REPEAT skončí ak premenná je_prvočíslo má hodnotu false(not(false)=true) alebo delitel>. Pr.: writeln(’Zadajprirodzene cislo’); readln(x); je_prvocislo:=true; delitel:=2; REPEAT if(x mod delitel)=0 thenje_prvocislo:=false; delitel:=delitel+1; UNTIL not(je_prvocislo)or (delitel>sqrt(x)); ifje_delitel then writeln(’Cislo ’,x,’ je prvocislo’) elsewriteln(’Cislo ’,x,’ nie jeprvocislo’); Užívateľom definované typy Prispracovaní dát nie vždy vystačíme s typmi premenných (dát), ktoré ponúkaPascal. Navyše údaje, ktoré potrebujeme spracovať, môžu byť rôzne štruktúrované(napríklad informácia o jednom človeku môže byť hodnotou jednej premennej, aletá ako taká sa môže skladať z jeho mena, priezviska, adresy, telefónneho čísla,čísla občianskeho preukazu atď.) a jednoduché pascalovské typy už nestačia.Pascal aj tu ponúka možnosť. Dovoľuje definovať vlastné typy (pozri deklaráciutypov pri štruktúre programu). Základnými metódami štruktúrovania sú array (pole), record (záznam), set(množina) a postupnosť (súbor).Vybrať správnu štruktúru reprezentovania dát v počítači patrí medzi kľúčovéproblémy programátorského umenia.
Typ pole: Pole je homogénnadátová štruktúra skladajúca sa so zložiek rovnakého typu, ktoré sa vźajomnerozlišujú pomocou indexu. Využíva sa najmä vtedy, ak potrebujeme pomocoupremenných uchovať veľa hodnôt rovnakého typu (mená všetkých ľudí v triede,známky žiakov, záznamy o ľuďoch a pod.). Na sprístupnenie prvku poľa jepotrebné poznať meno celej štruktúry a index (indexom zvyčajne býva interval,alebo viac intervalov) prvku v poli.Popis typu pole (jehodefinícia) má základný tvar: TYPE meno_pola =ARRAY[typindexu] OF typpoložky Týmtosme definovali len typ (len nejakú štruktúru), Aby sme ju mohli aj využívať,potrebujeme si ju sprístupniť. Deklarujeme teda premennú, ktorá bude typu"meno_pola" (všimnite si, že typ meno_pola sme definovali, alepremennú ktorá je typu meno_pola sme deklarovali, definovať znamená slovnevymedziť pojem uvedením jeho základných vlastností a deklarovať znamenávyhlásiť, že v programe použitá premenná má vlastnosti definované v definíciipoľa).Početpoložiek poľa je daný počtom rôznych hodnôt, ktoré patria do typu indexu. Častotým intervalom býva nejaký intervel z typu integer, ale môže to byť ľubovoľnýordinárny typ (znamená to, že hodnoty tohto indexu musia byť usporiadané). Pr.: Nasledovnýpríklad ukazuje praktické využitie typu pole. V prvom riadku definujeme typpole, ktoré má maximálne 20 položiek (pole má jednu nevýhodu, vždy trebadopredu definovať maximálny počet položiek, i keď ich v programe nemusímevyužiť všetky). Ďalej si deklarujeme premennú a, ktorá je typu pole. To čo smezatiaľ vytvorili, vyzerá v reprezentácií počítača asi nasledovne:
premenná a vyzerá takto: | ||||||||||||||||||||
jednotlivé časti sú indexované | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |