A ciklusok adják a programozás magját. Alapvetően 3 fajtája van (a 4. a forEach, de ez majd csak később lesz):
Előltesztelős ciklus. Addig fut a ciklus, amíg a feltétel hamis nem lesz. VIGYÁZAT: végtelen ciklusba kerülhetünk, ha nem vigyázzunk a feltétel helyes beállítására. Általános szerkezete:
while (feltétel) {
// utasitasok
// feltétel modositas
}
Példa a while ciklusra: Írjuk ki a képernyőre a számokat 0 - 10 -ig! Megoldás:
while ciklus
Hátultesztelős ciklus. Addig fut a ciklus, amíg a feltétel hamis nem lesz. VIGYÁZAT: végtelen ciklusba kerülhetünk, ha nem vigyázzunk a feltétel helyes beállítására. Általános szerkezete:
do{
// utasitasok
// feltétel modositas
} while(feltétel)
Példa a do ciklusra: Írjuk ki a képernyőre a számokat 0 - 10 -ig! Megoldás:
do ciklus
Adott kezdőértéktől, adott végértékig egy változót növelünk, és ellenőrizzük, hogy mikor teljesül a végérték feltétele. Általános szerkezete:
for (inicializalas; feltetel; noveles/csokkenes){
// utasitasok
}
Példa a for ciklusra: Írjuk ki a képernyőre a számokat 0 - 10 -ig! Megoldás:
for ciklus
Átlagszámítás
sorösszeg
Method | Description |
---|---|
abs(x) | Returns the absolute value of x |
acos(x) | Returns the arccosine of x, in radians |
asin(x) | Returns the arcsine of x, in radians |
atan(x) | Returns the arctangent of x as a numeric value between -PI/2 and PI/2 radians |
atan2(y, x) | Returns the arctangent of the quotient of its arguments |
ceil(x) | Returns the value of x rounded up to its nearest integer |
cos(x) | Returns the cosine of x (x is in radians) |
exp(x) | Returns the value of Ex |
floor(x) | Returns the value of x rounded down to its nearest integer |
log(x) | Returns the natural logarithm (base E) of x |
max(x, y, z, ..., n) | Returns the number with the highest value |
min(x, y, z, ..., n) | Returns the number with the lowest value |
pow(x, y) | Returns the value of x to the power of y |
random() | Returns a random number between 0 and 1 |
round(x) | Returns the value of x rounded to its nearest integer |
sin(x) | Returns the sine of x (x is in radians) |
sqrt(x) | Returns the square root of x |
tan(x) | Returns the tangent of an angle |
teljesnegyzet
primszam
Vegyük a prímszám meghatározásának a példáját. Legyen a kérdéses szám a 81. A 81 osztható 3-mal (= 27), azaz mar a for ciklus legelső iterációjában tudjuk, hogy nem prímszám, de a ciklus nem áll le, hanem megy tovább 9-ig. Ezért is jelenik meg a 'A szám nem prímszám!' kétszer. Ez felesleges iterációkat jelent, azaz le kéne állítani az iterációt már 3-nál. Erre szolgál a break parancs. A continue paranccsal kihagyhatunk egy iterációs ciklust.
break | megszakítja a szülő (azaz a felette elhelyezkedő) ciklust, de csak azt |
continue | a következő iterációs cilkura ugrik |
A megszakításra felhasználható még a goto parancs, amivel a kódban ugrálhatunk, de mivel ezáltal a kód átláthatatlan lesz, a legtöbb helyen tiltják a használatát. Legjobb, ha elfelejtük a létezését.
A 4. példában lévő for ciklus megszakítása break paranccsal:
for(i=3; i*i<=szam ; i+=2)
{
if(szam % i == 0)
{
document.writeln("A szám nem prímszám!");
ok = 0;
break;
}
}
Egy másik módja is van a for ciklus megszakításának, hamár ugyis ott van az 'ok' változó
var ok = 1;
for(i=3; i*i<=szam && ok; i+=2)
{
if(szam % i == 0)
{
document.writeln("A szám nem prímszám!");
ok = 0;
break;
}
}
Természetesen nem csak egy ciklusváltozón futhatunk végig, tetszőleges számú for ciklust lehet egymásba ágyazni. Példa:
sor-oszop kiiratas
A break parancs bemutatása futtaható példával. 10 sor és 10 oszlop kiiratása, de a páros sorok csak 5 oszlopot tartalmazzanak! Látható, hogy a break parancs csak a j futtó indexű ciklust szakítja meg.
sor-oszop kiiratas
A continue parancs bemutatása futtaható példával. 10 sor és 10 oszlop kiiratása, de a páros sorok csak páros indexű oszlopot tartalmazzanak!
sor-oszop kiiratas
1. alkalmazás: egyedi elemeket megkeresése. Adott egy számhalmaz, kérdés, hogy milyen egyedi elemek találhatóak ebben a számhalmazban.
Egyedi elemeket megkeresese
2. alkalmazás: egyedi elemek eloszlásának meghatározása. Adott egy számhalmaz, kérdés, hogy milyen egyedi elemek találhatóak ebben a számhalmazban és ezen egyedi elemek hányszor fordul elő a tömbben. Konkrét feladat: adott egy 200 elemű tömb, ami valós számokat tartalmaz a [0, 50) intervalumban. Hány darab szám talalható ebben a tömbben [0,1), [1, 2), [2, 3), ..., [49, 50) intervallumokban?
A legegyszerűbb, ám legcsunyább megoldás (ami kb. kivitelezhetetlen is)
Egyedi elemeket eloszlasa
Jobb lenne az if-ket is egy for ciklusba szerveznénk
Egyedi elemeket eloszlasa
Gondolkodtató feladat: Írd át a fenti algoritmust úgy, hogy csak egy for ciklust tartalmaz és nincs benne if sem, azaz:
Egyedi elemeket eloszlasa
3. alkalmazás: párképzés: adott két tömb(kis és nagy), a kis tömb elemit kell megtalálni a nagy tömbben. Feltételek: minden kis tömb elemnek kell lennie párnak, egy nagy tömb elemet csak egy kis tömb elemhez lehet rendelni (és fordítva), a maximális eltérés 0.5 lehet.
1. konkrét példa:
nagytomb = [1.0, 2.0, 2.5, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0]
kistomb = [2.2, 2.3, 3.1, 6.3, 7.2, 8.4]
parkepzes
2. konkrét példa:
parkepzes