Přejít na obsah

#8 Cykly [*]

pawn samp cyklus for while do-while break continue tutorial

  • Pokud chcete odpovědět, přihlaste se
Žádné odpovědi

#1
vEnd

vEnd

    Marc Wayne "B-Dup"

  • Globální moderátor
  • Příspěvků: 496
  • Je tu celkem: 45d 22h 16m 55s

Obtížnost: :1:
 
Osnova:
1. Úvod, co jsou to cykly
2. Cyklus for
3. Cyklus while
4. Cyklus do-while
5. Příkazy přeskoku (break a continue)
6. Závěr
 
1. Úvod
Po dlouhé době Vás vítám u dalšího návodu pro začátečníky. Předmětem tohoto návodu bude iterace a cykly.
 
Pojem iterace není nic jiného než opakování. Abychom v některých situacích (např. při procházení pole) nemuseli ručně psát zbytečně mnoho kódu se stejným účelem (např. výpis 50 prvků pole), můžeme si pomoct iterací, která nám kód zkrátí, zpřehlední a také nám ušetří práci. Iterace se v programování realizuje pomocí cyklů.
 
Cyklus je konstrukce, která nám umožňuje vykonávat libovolný počet opakování. V pawn máme celkem 3 cykly; všechny si postupně projdeme a řekneme si, k čemu jaký cyklus slouží.
 
2. Cyklus for
Prvním cyklus, se kterým se setkáváme nejčastěji, je cyklus for (tzv. iterační cyklus). Tento cyklus se neodmyslitelně pojí s polem – pomocí něj můžeme nejpohodlněji procházet hromadně prvky polí.
 
Syntaxe cyklus for je následovná:

.

for(inicializace; podmínka; modifikace)
{
    //kód
}

.

V inicializační části (jak už název napovídá) deklarujeme/definujeme proměnnou (může jich být i víc), která bude ovlivňovat počet opakování a kterou můžeme využít např. k indexaci pole.
 
Podmínková část obsahuje výraz, který nám určí, kdy cyklus skončí. Dost často obsahuje proměnnou z první části. Jakmile bude výraz v této části roven 0 (false), cyklus skončí.
 
Modifikační část nám poslouží ke změně hodnoty proměnné cyklu. Zde můžeme ovlivnit průběh cyklu (kolikrát se zopakuje).

.

for(new i=0; i<10; ++i)
{
    pole[i] = 1;
}

.

Zde je praktická ukázka použití iteračního cyklu. V první části jsme deklarovali proměnnou i a přiřadili jí hodnotu 0. Ve druhé části jsme zvolili podmínku, která říká, že cyklus poběží tak dlouho, dokud bude hodnota i menší než 10. Ve třetí části jsme se postarali o to, že se hodnota i při každém opakování zvětší o jedno. Cyklus pojede 10x (i bude mít postupně hodnoty 0 až 9), tedy vše, co je uvnitř něj, se vykoná 10x. Cílem tohoto kódu je uložit do desetiprvkového pole hodnotu 1 (všimněte si, jak jsme šikovně využili proměnnou i jako index pole).
 
Berme na vědomí, že jednotlivé části jsou odděleny středníky, ne čárkami!
 
Pro zajímavost (rozklikněte spoiler):

Spoiler

.

3. Cyklus while
Další na řadě je while, též nazývaný jako cyklus s podmínkou na začátku. Ten název mu nedali jen tak z hecu – čtěte dále. Jeho syntaxe vypadá takto:

.

while(podmínka)
{
    //kód
}

.

Cyklus while má jen jednu část, a tou je podmínková. Ta nám určuje počet opakování – cyklus poběží, dokud bude podmínka pravdivá. Je dobré uvést, že tento cyklus nemusí proběhnout ani jednou.

.

new i = 0;

while(i < 10)
{
    pole[i] = 1;
    ++i;
}

.

Jak vidíme, účel kódu je stejný jako v případě s iteračním cyklem. Může se nám zdát, že cyklus while vypadá jako ochuzená verze cyklu for; na jednu stranu to tak je (while se používal před for), chybí mu inicializační a modifikační část, ale cyklus s podmínkou na začátku může sloužit k různým účelům (např. ke čtení ze souboru), ne vždy zde budeme potřebovat proměnnou i.
 
4. Cyklus do-while
Třetím bratříčkem je cyklus do-while, známý i jako cyklus s podmínkou na konci. Ano, od cyklu while se liší tím, že má podmínku na konci. Co to pro nás znamená? O tom za chvíli. Zde je jeho syntaxe:

.

do
{
    //kód
}while(podmínka);

.

I tento cyklus má jen podmínkovou část, a to na konci. Teď si asi říkáte, jaký je rozdíl mezi tímto cyklem a cyklem while. Zatímco while nemusí proběhnout ani jednou, do-while proběhne vždy alespoň jednou.

.

new i = 0;

do
{
    pole[i] = 1;
    ++i;
}while(i < 10);

.

Stejný kód jako dvakrát předtím. Cyklus opět poběží, dokud i nepřekročí hodnotu 9. Rozdíl je, že prvek pole pole bude mít na indexu 0 hodnotu 1, ať už zvolíte jakoukoli podmínku.

5. Příkazy přeskoku (break a continue)
Příkazy pro základní cykly jsme si již probrali. Teď si zmínímme ještě tzv. příkazy přeskoku.

Jedná se příkazy, které nám mohou ovlivnit životnost celého cyklu či jen konkrétního opakování. Jedná se o příkazy break a continue.

a) break
Nejprve tedy break. Tímto příkazem můžeme předčasně ukončit cyklus. (Předčasně – kdykoli v jeho průběhu)

.

for(new i=0; i<10; i++)
{
    if(i == 5) break;
    pole[i] = 1;
}

.

Pro ukázku jsem zvolil cyklus for, ale fungovalo by to i ve while a do-while. A co se tedy stane? Jakmile bude proměnná i rovna pěti, cyklus skončí a nebude pokračovat v dalších opakováních. Pouze prvky s indexem 0 až 4 budou mít hodnotu 1.

b ) continue
Druhým příkazem je continue. Jeho úkolem je přeskočit dané opakování a pokračovat v dalším.

.

for(new i=0; i<10; i++)
{
    if(i == 5) continue;
    pole[i] = 1;
}

.

Jakmile bude proměnná i rovna pěti, cyklus přeskočí na další opakování, aniž by vykonal cokoliv pod continue. Takže prvek s indexem 5 bude jediný, který nebude mít hodnotu 1.

 

Pro zajímavost (rozklikněte spoiler):

Spoiler

 

6. Závěr

A tímto končíme téma iterace. Už víme, že máme v pawn 3 základní cykly (for, while, do-while) a příkazy přeskoku (break, continue).

 

Tento návod, stejně jako ty předchozí, je určen pro nováčky, pokročilejší věci byly buďto úplně vynechány, nebo jsou uvedeny ve spoilerech. Přesto, zdá-li se Vám, že jsem něco opomněl, někde jsem se spletl nebo se jen chcete vyjádřit, napište pod tento příspěvek.


  • 4


96b259ac47244701b5097887d9439120.png

I always enjoy meeting people more chemically imbalanced than myself. -Trevor Philips
Roses are gay, violets are gayer, fuck the poem and listen to Slayer.
Unix is user friendly. It just happens to be very selective about who it decides to make friends with.






Také označeno jedním nebo více klíčovými slovy: Návod, pawn, samp, cyklus, for, while, do-while, break, continue, tutorial

0 uživatelů si prohlíží toto fórum

0 uživatelů, 0 návštěvníků 0 anonymních uživatelů

© 2015 IPS, Inc.

Zajímat Vás mohou ještě aktuální zprávy. sleviště, slevy dnes Herbalife je skvělou cestou pro dobré zdraví. Je libo dětský web?