200 likes | 470 Views
Opakovanie. s ekvenci a postupnosť príkazov (príkaz je povel, ktorý počítač alebo iné zariadenie pozná a dokáže vykonať) vykonávanú v takom poradí, v akom sú jednotlivé časti zapísané
E N D
Opakovanie • sekvencia postupnosť príkazov (príkaz je povel, ktorý počítač alebo iné zariadenie pozná a dokáže vykonať) vykonávanú v takom poradí, v akom sú jednotlivé časti zapísané • vetvenie poskytuje možnosť rozhodnúť sa podľa pravdivosti skúmaného znaku. Skladá sa z podmienky uvedenej za slovíčkom ak a z príkazov, ktoré sa vykonajú v prípade kladného a záporného výsledku. Týmto dvom častiam hovoríme vetvy. • cyklus umožňuje ľubovoľnú činnosť opakovať. Pri opakovaní je dôležité čo(telo cyklu) sa má opakovať a dokedy (podmienka cyklu) sa má opakovať.
Riadenie nemysliaceho zariadenia • Majme k dispozícii robotický vysávač, ktorý dokáže nasledovné činnosti: • posun – posunie vysávač vpred o 50 cm, • vysaj – zapne vysávanie prachu na 10 s, • vľavo bok - otočí sa o 90° doľava.
Príklad sekvencie • Zabezpečte, aby vysávač vysal metrový pás v smere, ktorý má nastavený.
Riešenie • vysaj // 50 cm • posun • vysaj // 100 cm • posun // nie je potrebné • Problém sme vyriešili vďaka sekvencii príkazov, ktoré sa vykonávajú v takom poradí, v akom sú zapísané. • Vo všeobecnosti možno sekvenciu zapísať nasledovne: príkaz1 príkaz2 ... príkazn
Príklad alternatívy • Zabezpečte, aby sa vysávač v prípade narazenia na prekážku otočil doľava. • Na riešenie problému potrebujeme, aby vysávač dokázal zistiť (rozhodnúť), či má pred sebou prekážku alebo nie. Nevyhnutnou je teda nová schopnosť: • prekážka – v prípade existencie prekážky vráti hodnotu ANO, inak hodnotu NIE,
Riešenie ak prekážka = ÁNO tak vľavo bok inak posun • zápis obsahuje dve vetvy (alternatívy), pričom stroj, ktorý príkazy vykonáva si vyberie v závislosti od splnenia podmienky. • vo všeobecnosti: ak podmienka tak príkaz11 príkaz12 ...príkaz1m inak príkaz21 príkaz22 ...príkaz2n koniec ak
Príklad cyklu Zabezpečte, aby vysávač vyčistil 15 metrový pás. • úlohu by sme mohli riešiť zápisom sekvencie tak, že by sme 30 ráz za sebou zopakovali dvojicu: vysaj posun vysaj posun vysaj posun vysaj posun.... • vhodnejšie riešenie však predstavuje použitie cyklu. • počet opakovaní nám je známy (30 x - prečo?)
Riešenie opakuj 30 krát vysaj posun • vo všeobecnosti: opakuj počet krát príkaz1 príkaz2 ... príkazn koniec opakuj
Typy cyklov • použitý cyklus je cyklus s pevným (známym) počtom opakovaní • nie vždy je nám však počet opakovaní známy v momente vytvárania algoritmu => potreba kontroly ukončenia cyklu buď: • pred vykonaním kroku (tela) cyklu – cyklus s podmienkou na začiatku • po vykonaní tela cyklu – cyklus s podmienkou na konci • v prvom prípade sa cyklus nemusí vykonať vôbec, v druhom prebehne minimálne raz – prečo?
Príklad: cyklus s podmienkou na začiatku • Napíšte algoritmus, ktorý zabezpečí vysávanie od aktuálnej polohy po prekážku. pokiaľ prekážka = NIE rob vysaj posun koniec pokiaľ • všeobecne: pokiaľ podmienka rob príkaz1 príkaz2 ... príkazn koniec rob
Príklad: cyklus s podmienkou na konci • Upravte algoritmus zabezpečujúci vysávanie od aktuálnej polohy po prekážku tak aby sa vysávanie vykonalo minimálne raz. rob vysaj posun pokiaľ bude prekážka = NIE • všeobecne: rob príkaz1 príkaz2 ... príkazn pokiaľ bude podmienka
Cyklus vo VD • s pevným/známym počtom opakovaní - i je riadiaca premenná cyklu, n je počet opakovaní, p je príkaz (resp. zložený príkaz), ktorý sa opakuje • s neznámym počtom opakovaní s podmienkou na začiatku • s neznámym počtom opakovaní s podmienkou na konci
Cyklus so známym počtom opakovaní • používa sa, ak počet opakovaní je známy pred odštartovaním cyklu • počet možno vyjadriť prostredníctvom spodnej a hornej hodnoty • po vykonaní príkazov cyklu sa hodnota riadiacej premennej zvýši a skontroluje sa, či nepresiahla hornú hranicu • cyklus prebiehajúci od a po b sa vykoná b-a+1 ráz • napr. od 5 do 10 sa vykoná pre hodnoty 5, 6, 7, 8, 9, 10, t.j. spolu 6 krát
Jednoduché príklady • Vypočítajte hodnotu súčtu prvých N prirodzených čísel. • Zistite faktoriál zadaného čísla. • Pre interval zadaný prostredníctvom hraníc a a b zistite, koľkokrát sa v ňom nachádzajú čísla deliteľné hodnotou d.
Cyklus s podmienkou na začiatku • používa sa, ak nie je zrejmé koľkokrát má cyklus prebehnúť, prípadne ak závisí na výpočtoch realizovaných v jeho tele • cyklus obsahuje podmienku, pri splnení ktorej prebehnú príkazy uvedené v jeho tele– ak podmienka nie je splnená, vykonávanie cyklu sa ukončí, • => v prípade nesplnenej podmienky nemusí prebehnúť ani raz – „opatrný cyklus“ • využitie – pomerne univerzálne
Jednoduché príklady • Vypočítajte ciferný súčet číslic daného prirodzeného čísla N. • Napíšte algoritmus, ktorý zistí počet deliteľov zadaného čísla. • Napíšte algoritmus, ktorý nájde najväčšieho spoločného deliteľa dvoch čísel. • Napíšte algoritmus, ktorý vykráti zlomok zadaný prostredníctvom čitateľa a menovateľa. • Napíšte algoritmus, ktorý pre zadané číslo vráti jeho zrkadlový obraz (za akých podmienok je riešenie správne?).
Cyklus s podmienkou na konci • najprv sa vykoná telo cyklu, potom sa zisťuje splnenie podmienky • ak je podmienka cyklu splnená, vykonávanie cyklu sa ukončí, • => cyklus vždy prebehne minimálne raz • využitie – kontrola vkladaných hodnôt
Cyklus s podmienkou na konci II. • Pre trojicu zadaných hodnôt zistite, či môžu byť stranami trojuholníka. • Napíšte algoritmus, ktorý bude vykonávať matematické operácie a po zobrazení výsledku sa opýta, či má pokračovať alebo skončiť.
Cyklus s podmienkou na konci III. • Pre postupnosť čísel ukončenú nulou vypíšte nájdite maximum. • Pre postupnosť rôznych čísel ukončenú nulou nájdite najmenšie a druhé najmenšie číslo. • Pre zadanú postupnosť čísel ukončenú nulou zistite, koľko sa v nej nachádza párnych a koľko nepárnych čísel.