Programozási tételek I.

1. Alapfogalmak: algoritmus, programozás, program és pszeudokód

Mielőtt megismerkedünk a programozási tételekkel, fontos tisztázni néhány alapfogalmat.

1. Mi az algoritmus?

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.

  1. Vegyünk elő egy poharat.
  2. Vegyük elő a tejet.
  3. Öntsük a tejet a pohárba.
  4. Tegyük vissza a tejet a hűtőbe.
  5. Igyuk meg a tejet.

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

  1. Kérjük be az első számot.
  2. Kérjük be a második számot.
  3. Adjuk össze a két számot.
  4. Írjuk ki az eredményt.

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.

2. Mi a programozás?

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.

3. Mi a különbség az algoritmus és a program között?

Példa: Kérjünk be egy számot, majd írjuk ki a kétszeresét!

1. Megoldás algoritmussal:

  1. Kérjünk be egy számot.
  2. Szorozzuk meg kettővel.
  3. Írjuk ki az eredményt.

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.

4. Mi az a pszeudokód?

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:

  1. Programozási nyelvtől független: Nem kell ismernünk a Python vagy más nyelv pontos szintaxisát.
  2. Könnyen érthető: A lépések egyszerű, logikus formában írhatók le.
  3. Segíti a tervezést: Még a kód megírása előtt átgondolhatjuk a megoldást.
  4. Könnyen módosítható: Ha hibás a gondolatmenet, egyszerűbb javítani, mint egy már megírt programot.
  5. Más nyelvre is átültethető: Ugyanaz az algoritmus több programozási nyelven is megvalósítható.

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) :

  1. Kérjünk be egy számot a felhasználótól.
  2. Szorozzuk meg kettővel.
  3. Írjuk ki az eredményt.

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 legfontosabb elemei

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

2. Az összegzés tétele

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:

Konkrét példa

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 algoritmus általános felépítése

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.

Megvalósítás Python nyelven

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:

  1. Létrehozunk egy listát, amely egész számokat tartalmaz.
  2. Az osszeg változót 0-ra állítjuk.
  3. A for ciklussal végigmegyünk a lista elemein.
  4. Minden elem értékét hozzáadjuk az összeghez.
  5. A ciklus után kiírjuk az eredményt.

Rövidebb megoldás

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)

Összegzés feltétellel

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

3. A megszámlálás tétele

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:

Konkrét példa

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

Az algoritmus általános felépítése

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.

Megvalósítás Python nyelven

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:

  1. Létrehozzuk a számlistát.
  2. A db számlálót 0-ra állítjuk.
  3. Végigmegyünk a lista elemein.
  4. A % operátor segítségével ellenőrizzük, hogy az adott szám páros-e.
  5. Ha a maradék 0, akkor a szám páros.
  6. Ebben az esetben növeljük a számlálót.
  7. A ciklus után kiírjuk a darabszámot.

4. Az eldöntés tétele

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:

Konkrét példa

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 algoritmus általános felépítése

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

Megvalósítás Python nyelven

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:

  1. Létrehozzuk a listát.
  2. A van logikai változó kezdeti értéke False.
  3. Az i változóval követjük, hogy melyik elemet vizsgáljuk.
  4. A while ciklus addig fut, amíg nem értünk a lista végére, és nem találtunk megfelelő elemet.
  5. Ha a vizsgált szám nagyobb 10-nél, a van változó értéke True lesz.
  6. Ha nem megfelelő az elem, továbblépünk a következőre.
  7. A ciklus után kiírjuk az eredményt.

5. A három programozási tétel összehasonlítása

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

Hogyan ismerjük fel, hogy melyik tételt kell alkalmazni?

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:


6. Összefoglalás

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

A három tétel egy-egy mondatban