2021. május 30., vasárnap

Ismétlés és összefoglalás

A Python (mint minden más programnyelv) szigorú nyelvtani szabályokkal bír, ezt szintaxisnak hívjuk. Ha a program szintaktikailag hibás, akkor az nem futhat le, mert a számítógép által nem értelmezhető.
"Case sensitive"
A Python érzékeny a kis- és nagybetűkre, ezért mindig oda kell figyelni, hogy mit milyen betűvel kell írni.
Kódsorok
A Pythonban minden utasítás külön sorba kerül. Az utasítások végére nem kell pontosvessző, mert a sortörés egyértelműen megmutatja, hol van vége az utasításnak. Emiatt viszont nem lehetséges több utasítást egy sorba tenni, de ez inkább csak elősegíti a kód olvashatóságát.
Olvashatóság
A kódot olvashatóan kell írni, hiszen alapvető tapasztalat, hogy míg a programot csak egyszer gépeled be, sokkal többször olvasod/olvassák. A javítótanár is könnyebben dolgozik, te is könnyebben tudod javítani a hibáidat és a közös projektmunkákhoz is nélkülözhetetlen.
Egyszerű adatok kiírása
Az első fejezetben már megismerkedhettél a print fügvénnyel, ebben a fejezetben viszont kivesézzük minden funkcióját. A print függvény kiírja azt, amit megkap paraméternek és új sort kezd. A paraméter bármi lehet, ahogy azt az alábbi példa mutatja:
# szövegek (sztringek)
print("Hello World!")
print("árvíztűrő tükörfúrógép") # ékezetekkel
# számok
print(36)
print(6.9742) # törtek
print(6e23) # normál alakban
Amennyiben több paramétert adunk meg a print függvénynek, akkor az összeset kiírja egymás után, szóközzel elválasztva. A paraméterek típusa egymástól független, bármi lehet. A kiírás végére ebben ez esetben is kerül sortörés.
print("A nevem", "Kovács", "Béla")
print("életkorom:",33,"testmagasságom:", 183.7, "cm")

A változók olyan szimbólumok, amelyekkel egy konkrét adatra utalsz. Rendelkezik egy névvel (amivel hivatkozni tudsz rá) és egy értékkel. Így a változók mint adattárolásra alkalmas eszközök állnak rendelkezésedre. A program futása közben értékük megváltozhat.
Változók létrehozása, értékadása
Sok programozási nyelvvel ellentétben nem kell a változókat használat előtt deklarálni, egyszerűen csak egy értékadással hozhatod létre őket. Az értékadás az = (egyenlőségjel) operátorral történik.
valtozonev = "ertek"
a = 5
b = 3
# Több értékadás egy sorban vesszők segítségével.
# A sorrend számít!
alfa, beta, gamma = 90, 6.8721, "árvíztűrő tükörfúrógép"
A változók elnevezése
A változóknak bármilyen nevet adhatsz (leszámítva a Python saját kulcsszavait), akár még ékezeteset is! A jobb átláthatóság miatt viszont érdemes néhány formai szabályt betartani:
NE tartalmazzon ékezetes karaktereket
legyen kisbetűs
utaljon a változó funkciójára
legyen tömör, de érthető
A változók használata
Egy változó használata mindig legyen indokolt és logikus. Egy változónak csak egy funkciója legyen, máskülönben zavaros lesz tőle a program. Változók mennyiségére nincsen korlát, ezért nyugodtan használj változót ott, ahol az szükséges.
Változók kiértékelése, kiírása
A változók értékét úgy "olvashatod ki", hogy egyszerűen a változónevet írod le. Például a Print függvény paraméterének megadod egy változó nevét.
kor, nev = 55, "Árpád"
print(nev, kor, "éves.") # a változóneveknél nincs idézőjel!!!
A Python gyenge típusossága
A változók bármilyen típusú adatot tárolhatnak. Ezenfelül gond nélkül kaphat már létező változó más típusú értéket, mint amit eddig tartalmazott. Ezt a tulajdonságát gyenge típusosságnak nevezzük.
szam = 8 # itt számértéket kapott
print("A szám:", szam)
szam = "nyolc" # itt sztring értéket kapott
print("Betűvel leírva:", szam)

A Pythonban a számokat különböző módokon lehet leírni. Ezeket a számokat kiírathatjuk a print függvény segítségével, műveleteket végezhetünk velük illetve változókba írhatjuk őket.
Egész számok
#ugyanúgy mint papíron
4312
0
#negatív számok is ugyanígy
-2
-5234
Tizedes törtek
#a tizedes vessző helyett szigorúan PONT
3.141592
0.0000001
-8.5
-0.25
Normál alak
Lehetőség van a számokat normálalakban leírni. Ennek formája az, hogy először a mantissza következik (a számjegyek), utána az e betű, majd a karakterisztika (a nagyságrend).
6e23 #hatszor tíz a huszonharmadikon
6E23 #nagy E betű is helyes
-6e-23 #a mantissza és a karakterisztika is lehet negatív szám
6.67e-11 # a mantissza természetesen tört is lehet
Műveletek számokkal
Alapműveletek
Ahogyan már említettem, ugyanolyan matematikai műveletek elvégezhetőek Pythonban, amiket egy számológépnek is tudnia kell.
5 + 3 #összeadás
6.9 - 23 #kivonás
624.12 * -8 #szorzás
9 / 2 #osztás
2 ** 4 #hatványozás
#a műveleti jelek egybeírhatók a számokkal, csak az olvashatóság miatt van külön
Maradékos osztás
Sok programnyelvben ha két egész számot osztunk el, az eredmény tizedes jegyei le lesznek vágva. Ez a Python 2-es verziójában is így volt, viszont mi a 3-masat használjuk, amiben nem kell erre külön figyelni. Van mód viszont a maradékos osztásra is.
7 / 2 #osztás, értéke: 3.5
7 // 2 #maradékos osztás hányadosa, értéke: 3
7 % 2 #maradékos osztás maradéka, értéke: 1
Műveleti sorrend, zárójelek
A műveleti sorrend megegyezik a matematika szabályaival, ezen felül ugyanúgy használhatunk zárójeleket is.
Műveletek változókkal
Ha egy változó értéke egy szám, ugyanúgy bánhatunk vele, mint egy számmal. A műveletek eredményeit pedig betölthetjük a változókba, vagy kiírathatjuk őket. Nézzünk meg néhány példát.
print(6+5*2) #kiírja: 16
a,b = 9,-3
print(a/b) #kiírja: -3
c = a+b+0.0123
print(c) #kiírja: 6.0123 

Feltételes elágazás
A feltételes elágazásban egy feltétel igaz vagy hamis volta határozza meg, hogy a benne lévő kódrészlet lefusson.
if
s = 4
if(s == 4):
    print("s változó értéke négy")
    print("ez nem sok, de pont ennyi kell")
print(":)")
A kódot végrehajtva látható, hogy megtörténik a két kiírás, azonban ha s értékét megváltoztatjuk, már csak a második megy végbe. Általánosítsuk ezt az alakot:
if(feltétel):
    #igaz ág
    #...
#ez a rész már a feltételen kívül van
Ha a feltétel igaz, akkor az igaz ág utasításai végre lesznek hajtva. Az igaz ág addig tart, amíg beljebb vannak tagolva a kódsorok. A beljebbtagolás lehet szóközzel vagy tabulátorral, de több sor esetén mindig ugyanúgy legyenek a sorok tagolva! Figyeljünk a kettőspontra is!
Mindig tagoljunk 4 szóközzel, ugyanis ennyi pont átláthatóvá teszi a kódot, a tabulátor szélessége pedig máshol más lehet. Az IDLE szerkesztő a TAB lenyomására szóközöket ír, így nem kell a space-t nyomkodni.
else
Opcionálisan megadhatunk egy hamis ágat is - ez akkor fut le, ha a feltétel hamis. Általános alakja:
if(feltétel):
    #igaz ág
    #...
else:
    #hamis ág
    #...
elif
Ha a hamis ágban újabb feltételt szeretnénk, akkor az elif kulcsszó teszi ezt lehetővé.
if(feltétel):
    #igaz ág
    #...
elif(feltétel):
    #első feltétel hamis, második igaz
    #...
Az if után bármennyi elif következhet, és a végén egy else is:
if(feltétel):
    #igaz ág
    #...
elif(feltétel):
    #első feltétel hamis, második igaz
    #...
elif(feltétel):
    #első két feltétel hamis, harmadik igaz
    #...
else:
    #egyik feltétel sem igaz
    #...
A bool típus
A fenti pédában lehetett látni a == jelet. Ez jelenti az egyenlőség letesztelését - de valójában ez is egy olyan művelet, mint az összeadás vagy bármely eddigi: el lehet végezni, van eredménye is. Egy összehasonlítás eredménye vagy igaz, vagy hamis. A Pythonban van erre is egy típus, a bool. Két értéke van:
True #igaz
False #hamis

if(True):
    #mindig lefut, mert mindig igaz
if(False):
    #sosem fut le, mert mindig hamis
Összehasonlító műveletek
Az összehasonlító műveletek kapnak két értéket, és egy bool értéket vesznek fel (igaz vagy hamis) az adott összehasonlításnak megfelelően. Nézzük sorra őket:
a == b #egynelő
a != b #nem egyenlő
a < b #kisebb
a <= b #kisebb vagy egyenlő
a > b #nagyobb
a >= b #nagyobb vagy egyenlő
Logikai műveletek
Összetett logikai kifejezéshez kell logikai műveleteket használni, melyek a boole-algebra műveletei. Ezek az alábbiak:
a and b #igaz, ha a és b is igaz
a or b #igaz, ha a vagy b (akár mindkettő) igaz
not a #igaz, ha a hamis
Ezeket a műveleteket zárójelezni is lehet.
A while ciklus
Ha egy kódrészletet többször kell egymás után végrehajtani, akkor ciklus használata szükséges. A while ciklus hasonló a feltételhez, viszont az igaz ág után újrakezdődik a ciklus.
while(feltétel):
    #ciklusmag
    #...
A ciklusmag mindaddig végrehajtódik, amíg a feltétel igaz. Minden végrehajtás után újra ellenőrzésre kerül a feltétel.
Példák feltételekre és ciklusokra
#a zárójel nem kötelező, de szebb ha van
a = 9
if a==9:
    print("a értéke 9")

# számolj el tízig!
x = 1
while(x <= 10):
    print(x)
    x += 1

#az öttel nem osztható számok 100-ig
#a feltételek és ciklusok egymásba ágyazhatóak
a = 1
while(a <= 100):
    if(a%5 != 0): #öttel nem osztható == öttel való osztási maradéka nem nulla
        print(a)
    a += 1

Nehéz feladat
Írj egy programot, ami 1-től 51-ig kiírja a számokat, a következő szabálynak megfelelően:
ha a szám osztható 3-mal, akkor a szám helyett az legyen kiírva, hogy fizz
ha a szám osztható 5-tel, akkor a szám helyett az legyen kiírva, hogy buzz
ha a szám 3-mal és 5-tel is osztható, akkor a szám helyett az legyen kiírva, hogy fizzbuzz
(alapesetben csak maga a szám legyen kiírva)

Megoldás

for fizzbuzz in range(51):
    if fizzbuzz % 3 == 0 and fizzbuzz % 5 == 0:
        print("fizzbuzz")    ;     continue
    elif fizzbuzz % 3 == 0:
        print("fizz")         ;continue
    elif fizzbuzz % 5 == 0:
        print("buzz")         ;continue
    print(fizzbuzz)

Algoritmus 

Struktogram



















Folyamatábra






















Ugyan ez C-Sharpban

#include <stdio.h>
 
int main(void) {
    for (int szam = 1; szam <= 20; szam = szam+1)
        if (szam % 3 == 0 && szam % 5 == 0)
            printf("fizzbuzz\n");
        else
            if (szam % 3 == 0)
                printf("fizz\n");
            else
                if (szam % 5 == 0)
                    printf("buzz\n");
                else
                    printf("%d\n", szam);
 
    return 0;
}


https://infoc.eet.bme.hu/ea03/#3

Nincsenek megjegyzések:

Megjegyzés küldése