Mielőtt megismerkedünk a programozási tételekkel, fontos tisztázni néhány alapfogalmat.
Az algoritmus egy probléma megoldására szolgáló, pontosan meghatározott, egymást követő lépések sorozata.
Egyszerűbben fogalmazva: az algoritmus megmutatja, hogy egy adott feladatot milyen lépéseken keresztül tudunk megoldani.
A mindennapi életben is gyakran használunk algoritmusokat, csak nem feltétlenül nevezzük így őket.
Példa: Egy pohár tej ivásra.
Ez egy egyszerű algoritmus, mert egy feladatot meghatározott sorrendben végrehajtott lépésekkel oldunk meg.
Példa: Két szám összeadása
Ez is egy algoritmus, amelyet később programozási nyelven is megvalósíthatunk.
📌 Az algoritmus nem feltétlenül számítógépen működik. Egy recept, egy használati útmutató vagy egy matematikai feladat megoldási menete is lehet algoritmus.
A programozás az a tevékenység, amely során egy feladat vagy probléma megoldását megtervezzük, majd egy programozási nyelv segítségével megadjuk a számítógépnek a végrehajtandó utasításokat.
Egyszerűbben: A programozás során megtanítjuk a számítógépet arra, hogy mit és milyen sorrendben csináljon.
A számítógép önállóan nem tudja, hogyan oldjon meg egy feladatot. Nekünk kell megadnunk a szükséges utasításokat.
A program egy programozási nyelven megírt utasítássorozat, amelyet a számítógép végre tud hajtani.
Például Pythonban:
a = 5
b = 8
eredmeny = a + b
print(eredmeny)
A programozási nyelv egy olyan formális nyelv, amelynek segítségével utasításokat adhatunk a számítógépnek.
Példa: Kérjünk be egy számot, majd írjuk ki a kétszeresét!
1. Megoldás algoritmussal:
2. Megoldás Python programmal:
szam = int(input("Adj meg egy számot: "))
eredmeny = szam * 2
print(eredmeny)
A két megoldás ugyanazt a feladatot oldja meg, de más formában.
Az algoritmus a megoldás menete, a program pedig ennek a számítógépen végrehajtható változata.
A pszeudokód (más néven algoritmusleíró nyelv) egy olyan leírási forma, amellyel egy algoritmus működését programozási nyelvtől függetlenül tudjuk bemutatni.
A pszeudokód segítségével megfogalmazhatjuk, hogy:
A pszeudokód nem egy konkrét programozási nyelv, hanem egy algoritmus leírására szolgáló eszköz.
Fontos: A pszeudokódot nem tudjuk közvetlenül lefuttatni a számítógépen. Először át kell alakítanunk egy valódi programozási nyelv utasításaivá, például Python, C# vagy Java kódra.
A pszeudokód legfontosabb feladata, hogy segítsen az algoritmikus gondolkodás kialakításában.
A pszeudokód előnyei:
Példa: Egy szám megduplázása
Feladat: Kérjünk be egy számot, majd írjuk ki a kétszeresét!
Megoldás hétköznapi nyelven (algoritmizálás) :
Megoldás pszeudokóddal:
BE: szam
eredmeny := szam * 2
KI: eredmeny
Megoldás Python nyelven (programozás):
szam = int(input("Adj meg egy számot: "))
eredmeny = szam * 2
print(f"A szám kétszerese: {eredmeny}")
Látható, hogy a három megoldás ugyanazt a feladatot oldja meg, csak más formában.
A pszeudokód készítése során néhány alapvető utasítást használunk.
| Pszeudokód | Jelentése | Python megfelelője |
|---|---|---|
BE |
Adat beolvasása | input() |
KI |
Adat kiírása | print() |
:= |
Értékadás | = |
HA |
Feltétel vizsgálata | if |
KÜLÖNBEN |
Másik eset | else |
CIKLUS |
Ismétlés | for, while |
ÉS |
Logikai ÉS | and |
VAGY |
Logikai VAGY | or |
NEM |
Logikai tagadás | not |
Az összegzés tétele segítségével egy adatsorozat elemeinek összegét határozzuk meg.
A feladat lényege:
Mikor használjuk?
Például:
Adott az alábbi számsorozat:
5, 8, 12, 3, 7
Határozzuk meg a számok összegét!
A feldolgozás lépései:
| Lépés | Aktuális elem | Eddigi összeg |
|---|---|---|
| Kezdőérték | - | 0 |
| 1. | 5 | 5 |
| 2. | 8 | 13 |
| 3. | 12 | 25 |
| 4. | 3 | 28 |
| 5. | 7 | 35 |
Az eredmény: 35
Az összegzéshez szükségünk van egy összegváltozóra, amelynek kezdőértéke 0.
Pszeudokód:
Összegzés:
összeg := 0
CIKLUS i = 0-tól N-1-ig
összeg := összeg + tömb[i]
CIKLUS VÉGE
KI: összeg
Összegzés vége
📌 Miért 0 a kezdőérték?
Mert az összeadás semleges eleme a nulla. Ha egy másik számmal kezdenénk, az hibás eredményt adna.
szamok = [5, 8, 12, 3, 7]
osszeg = 0
for szam in szamok:
osszeg = osszeg + szam
print("Az összeg:", osszeg)
A program működése:
osszeg változót 0-ra állítjuk.for ciklussal végigmegyünk a lista elemein.Pythonban az összegzésre rendelkezésre áll egy beépített függvény is:
szamok = [5, 8, 12, 3, 7]
osszeg = sum(szamok)
print("Az összeg:", osszeg)
Az összegzés továbbfejleszthető úgy, hogy ne minden elemet adjunk össze, hanem csak azokat, amelyek megfelelnek egy adott feltételnek.
Feladat:
Adott egy számlista. Határozzuk meg a pozitív számok összegét!
szamok = [-5, 8, -2, 12, 3, -7]
osszeg = 0
for szam in szamok:
if szam > 0:
osszeg += szam
print("A pozitív számok összege:", osszeg)
Eredmény:
A pozitív számok összege: 23
A megszámlálás tétele segítségével meghatározhatjuk, hogy egy adatsorozatban hány olyan elem található, amely megfelel egy adott feltételnek.
A tétel lényege:
Mikor használjuk? Például:
Adott az alábbi számsorozat:
5, 8, 12, 3, 7, 10, 14, 9
Feladat: Számoljuk meg, hány páros szám található a sorozatban!
A páros számok:
Az eredmény: 4
A feldolgozás lépései:
| Aktuális elem | Páros? | Számláló |
|---|---|---|
| 5 | Nem | 0 |
| 8 | Igen | 1 |
| 12 | Igen | 2 |
| 3 | Nem | 2 |
| 7 | Nem | 2 |
| 10 | Igen | 3 |
| 14 | Igen | 4 |
| 9 | Nem | 4 |
A megszámlálás során egy számlálóváltozót használunk, amelynek kezdőértéke 0.
Pszeudokód:
Megszámlálás:
db := 0
CIKLUS i = 0-tól N-1-ig
HA tömb[i] megfelel a feltételnek AKKOR
db := db + 1
ELÁGAZÁS VÉGE
CIKLUS VÉGE
KI: db
Megszámlálás vége
📌 Miért 0 a kezdőérték?
Mert a feldolgozás kezdetén még egyetlen megfelelő elemet sem számoltunk meg.
szamok = [5, 8, 12, 3, 7, 10, 14, 9]
db = 0
for szam in szamok:
if szam % 2 == 0:
db += 1
print("Páros számok darabszáma:", db)
A program működése:
db számlálót 0-ra állítjuk.% operátor segítségével ellenőrizzük, hogy az adott szám páros-e.Az eldöntés tétele segítségével megállapíthatjuk, hogy egy adatsorozatban található-e legalább egy olyan elem, amely megfelel egy adott feltételnek.
A tétel lényege:
Mikor használjuk?
Például:
Adott az alábbi számsorozat:
5, 8, 12, 3, 7, 10
Feladat: Döntsük el, hogy van-e a sorozatban 10-nél nagyobb szám!
Vizsgálat:
| Aktuális elem | Nagyobb 10-nél? | Eredmény |
|---|---|---|
| 5 | Nem | Hamis |
| 8 | Nem | Hamis |
| 12 | Igen | Igaz |
Mivel találtunk egy 10-nél nagyobb számot, ezért a válasz:
Igen, van ilyen szám a sorozatban.
Nem szükséges tovább vizsgálni a többi elemet, mert a kérdésre már megvan a válasz.
📌 Az eldöntés tétel egyik fontos sajátossága, hogy a keresés leállítható az első megfelelő elem megtalálásakor.
Az eldöntéshez egy logikai változót használunk.
A változó kezdeti értéke HAMIS, mert a feldolgozás kezdetén még nem találtunk megfelelő elemet.
Pszeudokód:
Eldöntés:
van := HAMIS
i := 0
CIKLUS AMÍG i < N ÉS van = HAMIS
HA tömb[i] megfelel a feltételnek AKKOR
van := IGAZ
KÜLÖNBEN
i := i + 1
ELÁGAZÁS VÉGE
CIKLUS VÉGE
KI: van
Eldöntés vége
szamok = [5, 8, 12, 3, 7, 10]
van = False
i = 0
while i < len(szamok) and not van:
if szamok[i] > 10:
van = True
else:
i += 1
if van:
print("Van 10-nél nagyobb szám.")
else:
print("Nincs 10-nél nagyobb szám.")
A program működése:
van logikai változó kezdeti értéke False.i változóval követjük, hogy melyik elemet vizsgáljuk.while ciklus addig fut, amíg nem értünk a lista végére, és nem találtunk megfelelő elemet.van változó értéke True lesz.A három tétel hasonló felépítésű, hiszen mindegyik egy adatsorozat elemeinek feldolgozásán alapul. A különbség abban van, hogy milyen eredményt szeretnénk meghatározni.
| Szempont | Összegzés | Megszámlálás | Eldöntés |
|---|---|---|---|
| Feladat | Értékek összeadása | Darabszám meghatározása | Létezik-e megfelelő elem? |
| Változó | Összegváltozó | Számláló | Logikai változó |
| Kezdőérték | 0 | 0 | False |
| Művelet | Hozzáadás | Növelés | Igazra állítás |
| Feltétel | Nem feltétlenül szükséges | Szükséges | Szükséges |
| Feldolgozás | Minden elemet vizsgál | Minden elemet vizsgál | Első találatig |
| Eredmény | Összeg | Darabszám | Igaz/hamis |
A feladat szövege általában egyértelműen utal arra, hogy melyik programozási tételre van szükség.
| Feladatban szereplő kérdés | Alkalmazandó tétel |
|---|---|
| Mennyi az összes pontszám? | Összegzés |
| Mennyi a termékek összértéke? | Összegzés |
| Hány tanuló sikeres? | Megszámlálás |
| Hány páros szám van? | Megszámlálás |
| Van-e negatív szám? | Eldöntés |
| Szerepel-e a név a listában? | Eldöntés |
Tanulási segítség:
| Tétel | Változó | Kezdőérték | Fő művelet |
|---|---|---|---|
| Összegzés | osszeg |
0 |
osszeg += szam |
| Megszámlálás | db |
0 |
db += 1 |
| Eldöntés | van |
False |
van = True |