A következőkben az úgynevezett vezérlő szerkezetekről (control structures, structuri de control)
lesz szó, az első az elágazás.
Elágazás (if, „ha”)
Szerkezete (szintaxisa):
1
2
3
4
| if (feltétel...)
utasítás1
else
utasítás2
|
Az utasítás1/2 helyén lehet:
- egy darab utasítás
- utasítás-blokk:
{
utasítások...
(0 vagy több)
}
Az else rész elhagyható:
1
2
| if (feltétel...)
utasítás(ok)
|
A feltétel helyére kerülhet:
- … == … (egyenlő-e a bal és jobb oldalon levő érték, az egyenlőjelet itt duplázni kell)
- … != … (különbözik-e a bal és jobb oldalon levő érték)
- hasonlóan <, <=, >, >= (kisebb,
kisebb vagy egyenlő, nagyobb, nagyobb vagy egyenlő)
- Összetett feltételek:
- felt1 && felt2 (ez az „és”)
- felt1 || felt2 (ez a „vagy”)
- !felt (ez a tagadás)
Példák:
1
2
3
| x >= 3
y > 1 && x == 2
(y > 1) && (x == 2)
|
Működése:
- ha a feltétel igaz, akkor végrehajtódnak az
utasítás1 helyén levő utasítások - ha a feltétel hamis, akkor végrehajtódnak az
utasítás2 helyén levő utasítások
Példa:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
| #include <iostream>
using namespace std;
int main()
{
int x, y;
cout << "x=";
cin >> x;
cout << "y=";
cin >> y;
cout << "x+y = " << x+y << endl;
cout << "x-y = " << x-y << endl;
cout << "x*y = " << x*y << endl;
if (y == 0) {
cout << "nem osztunk 0-val" << endl;
}
else {
cout << "x/y = " << x/y << endl;
cout << "x%y = " << x%y << endl;
}
cout << "vege" << endl;
return 0;
}
|
Programkód “indentálása” (indentation):
Az if-nek a then vagy else ága alá tartozó utasításokat beljebb kezdjük
írni, mint magát az if-et (else-t), így a programkód elhelyezése tükrözi a szerkezetét.
Ugyanígy járunk majd el más vezérlő szerkezetek esetén is.
Segítség: a Tab, Shift+Tab billenytűk, illetve Code::Blocks-ban a jobb click-es
menüből „Format use AStyle”.
Feladatok:
1. Olvassunk be egy egész számot.
Ha páros, írjuk ki, hogy „jo”,
különben írjuk ki, hogy „nem jo”.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| #include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
if (n % 2 == 0) {
cout << "jo" << endl;
}
else {
cout << "nem jo" << endl;
}
return 0;
}
|
2. Olvassunk be két egész számot!
Ha mindkettő páros, akkor írjuk ki,
hogy „mindketto”, különben azt,
hogy „nem”.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| #include <iostream>
using namespace std;
int main()
{
int a, b;
cin >> a >> b;
if (a % 2 == 0 && b % 2 == 0)
cout << "mindketto" << endl;
else
cout << "nem" << endl;
return 0;
}
|
Egymásba ágyazott elágazások
Példa:
Adott egy szám. Ha negatív, akkor írjuk ki, hogy “nem jo”.
Különben ha 5-nél kisebb, írjuk ki, hogy “keves”, ha pedig
legalább 5, akkor írjuk ki, hogy “na, ez a beszed!”.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| #include <iostream>
using namespace std;
int main()
{
int szam;
cin >> szam;
if (szam < 0) {
cout << "nem jo" << endl;
}
else {
if (szam < 5) {
cout << "keves" << endl;
}
else {
cout << "na, ez a beszed!" << endl;
}
}
return 0;
}
|
Általában inkábbb így írjuk le:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| #include <iostream>
using namespace std;
int main()
{
int szam;
cin >> szam;
if (szam < 0) {
cout << "nem jo" << endl;
}
else if (szam < 5) {
cout << "keves" << endl;
}
else {
cout << "na, ez a beszed!" << endl;
}
return 0;
}
|
Feladat:
Kérjünk be egy kétjegyű természetes számot.
Ha nem kétjegyűt kapunk, akkor írjuk ki,
hogy “ez a felhasznalo nem tul okos”.
Különben, ha osztható 10-zel, akkor
írjuk ki, hogy “a 0 szamjegyeket nem
szeretem”, ellenkező esetben írjuk
ki a számjegyei összegét!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| #include <iostream>
using namespace std;
int main()
{
cout << "Kerek egy ketjegyu szamot: ";
int n;
cin >> n;
if (n < 10 || n >= 100) // nem kétjegyű
cout << "ez a felhasznalo nem tul okos" << endl;
else if (n % 10 == 0)
cout << "a 0 szamjegyeket nem szeretem" << endl;
else {
int osszeg = n%10 + n/10;
cout << "szamjegyek osszege: " << osszeg << endl;
}
return 0;
}
|
Feladat
Adott egy évszám. Írjuk ki, hogy szökőév-e!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| #include <iostream>
using namespace std;
int main()
{
cout << "evszam: ";
int n;
cin >> n;
if ((n % 4 == 0 && n % 100 != 0) || n % 400 == 0)
cout << "szokoev" << endl;
else
cout << "nem szokoev" << endl;
return 0;
}
|