pr1j_02_algoritmizacia.ppt
Stiahnuť PPT · 193 kBPreber si túto poznámku so svojou AI
Skopíruj pripravený podklad a vlož ho do ChatGPT, Claude alebo inej AI — bude ťa učiť alebo skúšať len z tejto poznámky.
Náhľad poznámky
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íkaz
1
príkaz
2
...
príkaz
n
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íkaz
11
príkaz
12
...príkaz
1m
inak
príkaz
21
príkaz
22
...príkaz
2n
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íkaz
1
príkaz
2
...
príkaz
n
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íkaz
1
príkaz
2
...
príkaz
n
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íkaz
1
príkaz
2
...
príkaz
n
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.
Document Outline
- Slide 1
- Slide 2
- Slide 3
- Slide 4
- Slide 5
- Slide 6
- Slide 7
- Slide 8
- Slide 9
- Slide 10
- Slide 11
- Slide 12
- Slide 13
- Slide 14
- Slide 15
- Slide 16
- Slide 17
- Slide 18
- Slide 19
Automaticky vygenerovaný textový náhľad. Pre plné formátovanie si stiahnite súbor.
nechodím na prednášky