Elágazás - Poskola

Download Report

Transcript Elágazás - Poskola

C# 2008 HALADÓKNAK
Vezérlési szerkezetek: elágazások,
ciklusok
1
Szakképzési Portál
Elágazások
• Gyakran előfordul, hogy a programban döntési
helyzet alakul ki, azaz bizonyos feltétel(ek)
teljesülésétől függően mást kell csinálnunk,
mint amikor azok nem teljesülnek.
• Ezt hívjuk elágazásnak.
• Fajtái:
– egy-, illetve kétirányú elágazás
– többirányú elágazás
2
Elágazások: egy- és kétirányú
• Egyirányú elágazás:
if (feltétel)
{
utasítások;
}
3
• Kétirányú elágazás:
if (feltétel)
{
utasítások;
}
else
{
utasítások;
}
Elágazások egymásba ágyazása
•
Egymásba ágyazott elágazások:
if (feltétel1)
{
utasítások;
}
else if (feltétel2)
{
utasítások;
}
…
else if (feltételn)
{
utasítások;
}
else
{
utasítások;
}
4
• Például:
if (x>0)
{
label1.Text="pozitív";
}
else if (x<0)
{
label1.Text="negatív";
}
else
{
label1.Text="nulla";
}
Elágazások: többirányú
•
Elágazás egy változó értékétől
függetlenül
switch (kifejezés)
{
case érték1: utasítások;
break; case érték2:
utasítások; break; case
érték3: utasítások; break;
…
default: utasítások;
break;
}
5
•
Szabályok:
– A kifejezés csak int vagy char típusú
lehet.
– Intervallumot nem lehet megadni, és
több értéket sem lehet felsorolni.
– Nem lehet két sorban a case után
ugyanaz az érték.
– Ha a case után nem írunk utasítást,
akkor a következő soron folytatódik a
végrehajtás.
– A default utáni utasításokat akkor
hajtja végre, ha egyik felsorolt érték
sem egyezik meg a kifejezés értékével.
– A break utasítás minden ág végén
kötelező!
Ciklusok
• Ciklusokat akkor használunk, amikor egy adott
tevékenységet (ciklusmag) többször végre kell hajtanunk.
• Azokat a változókat, amelyektől a ciklus futása függ,
ciklusváltozónak hívjuk.
• Fajtái:
– számláló: előre megadott számú alkalommal fut le a ciklusmag.
– elöltesztelő: egy feltétel teljesülésétől függően hajtja végre a
ciklusmagot (előfordulhat, hogy egyszer sem, ha a feltétel már
kezdetben sem teljesül)
– hátultesztelő: egyszer mindenképpen végrehajtja a ciklusmagot,
majd addig ezt ismétli, amíg a feltétel teljesül.
6
Ciklusok: számláló
• Előre megadott számú alkalommal fut le a ciklusmag.
for ( kezdőérték-adás; feltétel; ciklusváltozó növelése)
{
utasítások;
}
• Példa:
for (i=0; i<10; i++)
{
listBox1.Items.Add(i.ToString());
}
• A példában az i a ciklusváltozó, amely sorban felveszi a 0, 1, 2, 3, …, 9 értékeket,
ezeket beírja a listába, majd a ciklus futása befejeződik.
• Megjegyzés: az i++ jelentése: i = i + 1.
7
Ciklusok: elöltesztelő
• Egy feltétel teljesülésétől függően hajtja végre a ciklusmagot
• Előfordulhat, hogy egyszer sem, ha a feltétel már kezdetben sem teljesül
while (feltétel)
{
utasítások;
}
•
Példa:
while (!f.EndOfStream)
{
s = f.ReadLine();
listBox1.Items.Add(s);
}
• A példában addig olvasunk be egy szövegfájlból, amíg nem érünk a végére. Itt a
ciklusváltozó szerepét az f fájlváltozó játssza.
8
Ciklusok: for és while
• A for és a while ciklusok lényegében egyformák a C# nyelvben.
• Példa:
for (i=0; i<10; i++)
{
listBox1.Items.Add(i.ToString());
}
int i=0;
while (i<10)
{
listBox1.Items.Add(i.ToString());
i++;
}
• Ez alapján bármelyik átírható a másikra!
• Figyeljünk oda, hogy a while ciklusból ne maradjon ki a ciklusváltozó változtatása,
mert az végtelen ciklushoz vezet!
9
Ciklusok: hátultesztelő
• Egyszer mindenképpen végrehajtja a ciklusmagot, majd addig ezt ismétli,
amíg a feltétel teljesül.
do
{
utasítások;
} while (feltétel);
Példa:
i=0;
ossz=0;
do
{
i++;
ossz += i; // jelentése: ossz = ossz + i
} while (i<10);
• A példában 1-től 10-ig összeadjuk a számokat.
10