13. Slučka s počítadlom: FOR, TO, STEP
Na čo to je
Najčastejšia slučka zo všetkých: „sprav toto desaťkrát“ alebo „prejdi čísla od 1 do 100“. FOR sa o počítanie postará sám.
Ako sa to píše
FOR premenná=začiatok TO koniec
DO
príkazy
ODalebo s krokom:
FOR premenná=začiatok TO koniec STEP krok
DO
príkazy
OD| Slovo | Význam |
|---|---|
FOR | začína slučku s počítadlom |
premenná | počítadlo – obyčajná premenná, ktorú si deklaroval |
začiatok | hodnota, ktorú počítadlo dostane pred prvým prechodom |
TO koniec | posledná hodnota, pri ktorej sa telo ešte vykoná |
STEP krok | o koľko sa počítadlo po každom prechode zväčší; bez STEP o 1 |
Je to skratka za:
premenná=začiatok
WHILE premenná<=koniec
DO
príkazy
premenná==+krok
ODCelý program
Súbor examples/for.act:
; FOR: a loop with a counter
PROC Main()
BYTE i, row, col
FOR i=1 TO 10
DO
PrintB(i) Put(' )
OD
PutE()
FOR i=0 TO 20 STEP 5
DO
PrintB(i) Put(' )
OD
PutE()
PutE()
PrintE("The 7 times table:")
FOR row=1 TO 10
DO
PrintB(row) Print(" x 7 = ") PrintBE(row*7)
OD
PutE()
FOR row=1 TO 4
DO
FOR col=1 TO row
DO
Put('*)
OD
PutE()
OD
RETURNPreklad a spustenie
action26 for.act --simČo uvidíš
1 2 3 4 5 6 7 8 9 10
0 5 10 15 20
The 7 times table:
1 x 7 = 7
2 x 7 = 14
3 x 7 = 21
4 x 7 = 28
5 x 7 = 35
6 x 7 = 42
7 x 7 = 49
8 x 7 = 56
9 x 7 = 63
10 x 7 = 70
*
**
***
****Ako to funguje
- Prvá slučka:
iide od 1 do 10 vrátane. Počítadlo sa dá v tele normálne používať – tu sa vypisuje. - Druhá slučka:
STEP 5zväčšujeipo piatich: 0, 5, 10, 15, 20. - Násobilka: počítadlo
rowvstupuje do výpočturow*7. - Trojuholník: slučka v slučke. Vonkajšia ide po riadkoch, vnútorná vypíše toľko hviezdičiek, aké je číslo riadka. Vnútorná slučka má ako koniec premennú
row– koniec nemusí byť číslo.
Začiatočníci často volajú počítadlá i, j, k. Je to zvyk z matematiky; meno ako row alebo col však hovorí viac.
Tri vlastnosti, ktoré treba poznať
1. Koniec a krok sa vyhodnotia raz, pri vstupe do slučky. Keď v tele zmeníš premennú, ktorá bola koncom, počet prechodov sa už nezmení.
2. FOR nepočíta nadol. FOR i=10 TO 1 sa nevykoná ani raz, lebo 10 je už na začiatku väčšie ako koniec. Nepomôže ani STEP -1. Na odpočítavanie použi WHILE:
i=10
WHILE i>0
DO
PrintBE(i)
i==-1
OD3. BYTE počítadlo a koniec 255 je nekonečná slučka.
BYTE i
FOR i=0 TO 255 ; never ends
DO
ODSlučka končí, keď je počítadlo väčšie ako koniec. BYTE však väčší ako 255 byť nemôže – po 255 sa pretočí na 0 a ide sa odznova. Ak potrebuješ prejsť všetkých 256 hodnôt, použi počítadlo typu CARD.
Časté chyby
| Čo sa stalo | Čo sa stane |
|---|---|
| počítadlo nie je deklarované | error ACT008: undeclared name |
chýba DO | error ACT015: missing DO na prvom príkaze tela |
| začiatok je väčší ako koniec | telo sa nevykoná ani raz |
BYTE počítadlo, koniec 255 | nekonečná slučka |
| v tele meníš počítadlo | slučka preskakuje hodnoty – radšej to nerob |
Po skončení slučky má počítadlo hodnotu o krok väčšiu ako koniec: po FOR i=1 TO 3 je v i číslo 4.
Vyskúšaj si
- Vypíš párne čísla od 2 do 20.
- Vypíš malú násobilku celú: desať riadkov a v každom desať čísel. (Slučka v slučke; výsledok môže byť až 100, to sa do
BYTEzmestí.) - Sčítaj čísla od 1 do 100 a vypíš súčet. Akého typu musí byť premenná na súčet?
Zhrnutie
FOR i=a TO b DO … ODvykoná telo preiodapobvrátane.STEP nmení krok; bez neho je 1.- Koniec a krok sa vyhodnotia raz na začiatku.
FORpočíta len nahor.BYTEpočítadlo nikdy neprekročí 255 – slučkaTO 255neskončí.
Späť: 12. Slučka s podmienkou na konci · Ďalej: 14. Parametre