# 1. hét: egyszerű programok

Czirkos Zoltán · 2025.09.11.

Bevezető. A parancssor használata. Egyszerű, szekvenciális programok; teknőcgrafika, bemenet és kimenet kezelése.

Bár az átlagos felhasználó nem szokta használni, a Windows is rendelkezik egy ún. parancssori felhasználói felülettel, ahogyan a Unix típusú operációs rendszerek is. Ezen a felületen különböző parancsokat begépelve lehet elvégezni az alapvető feladatokat, pl. fájlok létrehozását, listázását és törlését. A mai laboron többek között ezzel is megismerkedünk.

## 1. Parancssor indítása, programok indítása

A Start menü Futtatás… parancsát választva indítsd el a `cmd.exe` programot! (Windows 10/11 esetén: a Start gombra jobb klikk, és Futtatás, vagy `Windows + R`.) A továbbiakban a megjelenő konzolablakban kell dolgozni. A föl-le billentyűkkel kiválaszthatóak a korábban beírt parancsok, így nem kell egy dolgot többször begépelni.

( Mi most az "ősi" Windows parancssori értelmezőt fogjuk használni. A MS erőlteti az újabb PowerShell használatát, később majd érdemes lesz azt is kipróbálni. Friss Windows 11 esetén a Windows Terminal fog elindulni. A mi céljainknak ez is pontosan ugyanúgy megfelelő)

### Program indítása parancssorból

Egy program indításához csak be kell írni a nevét. Írd be:

    notepad.exe

Erre elindul a Jegyzettömb, mintha a Start menüből indítottad volna.

A Windows automatikusan kiegészíti a programok nevét az ahhoz tartozó kiterjesztéssel (extension, `.com`, `.exe`, `.bat` végű fájlnevek). Így a programot a `.exe` kiterjesztés beírása nélkül is futtathatod. Zárd be a Jegyzettömböt, és próbáld ki így is:

    notepad

### Programok paraméterei

A legtöbb konzolos alkalmazás, de gyakran az ablakokat használó programok is, kaphatnak paramétereket. Próbaképp írd be az alábbi sort. Mit tapasztalsz?

    notepad szoveg.txt

Egy programnak tetszőleges számú parancssori paramétere, más néven parancssori argumentuma (command line argument) lehet. Ezeket a program neve után írjuk, és szóközzel választjuk el egymástól.

A programok sok különféle dologra használják a paramétereiket, például egy weboldal címét is átveheti. Ilyenkor induláskor rögtön betölti azt. Próbáld ezt ki a tárgyhonlappal:

    explorer https://infopy.eet.bme.hu/

(Ilyenkor természetesen nem az Internet Explorer nevű ősi program indul el egy modern gépen, hanem a weboldalakhoz hozzárendelt alapértelmezett alkalmazás. Ez lehet az Edge, Chrome, Firefox stb. böngésző. De át is állítható tetszőlegesre.)

Ha paraméterként fájlt adunk meg, és az útvonalban vagy a fájlnévben szóköz van, normál esetben a Windows a szóközzel elválasztott elemeket külön paraméternek tekintené. Ezért kell ilyenkor idézőjelek közé tenni azt. Pl.:

    notepad "Uj szoveg.txt"

## 2. Mappa parancsok

A kurzor az ún. prompt végén villog. Ez alapesetben az aktuális útvonalból (mappa nevéből, path) és a `>` jelből áll. Ezt figyeld majd, miközben dolgozol!

A mappát (folder) a parancssori parancsok a directory szóból származtatják (a mappák másik neve, magyarul könyvtár). A mappa tartalmának listázása:

    C:\Users\111111\> dir

Az eredmény a mappa tartalma: itt további mappák, valamint fájlok lehetnek. Ha nem a legfölső szinten (a gyökérkönyvtárban) vagyunk (`C:\`), akkor egy `.` és egy `..` nevű mappa (`<DIR>` jelzi) is látható. A `.` az aktuális mappát jelenti, a `..` az egy szinttel feljebb lévőt. Navigálj el egy intézővel a parancssori ablakod mappájába, és hasonlítsd össze a listát az Intézőben látható tartalommal!

A `dir` parancsnak számos paramétere (kapcsolója) van, ezekről bővebb információ a

    C:\Users\111111\> dir /?

paranccsal kapható. A többi parancsnak is van hasonló helpje, ezt a továbbiakban nem jelezzük külön.

### Mappa váltása

Mappát váltani a `chdir` paranccsal, vagy ennek rövidebb változatával, a `cd`-vel lehet. Lépj egy szinttel feljebb:

    C:\Users\111111\> cd ..

Lépj a gyökérkönyvtárba:

    C:\Users\111111\> cd \

vagy

    C:\Users\111111\> cd /

A mappák neveit a \ (fordított per vagy visszaper (backslash), `AltGr+Q`) választja el egymástól az elérési útvonalon. A Windows támogatja a UNIX-ból származó /-t is, a két jel bármelyikét bármikor használhatjuk. A Windows hasonlóan rugalmas a kis és nagybetűk kezelésében: a mappák és fájlok és parancsok nevében nem számít, hogy kis- ill. nagybetűről van szó (pl. notepad, Notepad, NOTEPAD, stb. egyaránt használható). Más rendszerek azonban megkülönböztetik ezeket. Informatikusként sokféle rendszerrel dolgoznod kell majd, ezért jobb, ha mindent a tényleges nevén használsz.

Menj most vissza a felhasználód saját mappájába, a lentihez hasonló módon! Az 111111 helyére a felhasználói azonosítód kerül.

    C:\> cd C:\Users\111111\

### Mappa létrehozása és törlése

Mappát létrehozni az `mkdir` vagy `md` parancsokkal lehet:

    C:\Users\111111\> md pylabor

Mappát törölni az `rmdir` vagy `rd` paranccsal lehet:

    C:\Users\111111\> rd pylabor

A parancs a mappát csak akkor törli, ha az üres.

### Hibaüzenet?

    C:\Windows> mkdir ujmappa
    Access denied

Előfordulhat, hogy a mappa, amelyben épp vagy, írásvédett. Ekkor hibaüzenetet fogsz kapni. (Vajon miért nem engedi a gép, hogy az operációs rendszer fájljai közé írj?) Ha kell, keress másik mappát, amelyben dolgozni fogsz, pl. `C:\Users\xxxxx`. Kérd a laborvezető segítségét!

### Szóköz a névben

Vigyázz! Ahogy előbb is szó volt róla, a parancssorban a szóköz választja el a paramétereket. Ezért ha a következő sort írod, két mappa jön létre, egy „py” és egy „labor” nevű: `md py labor`. Ha „py labor” nevű mappát szeretnél, tedd idézőjelbe a nevet: `md "py labor"`! (Vajon akkor is szabad idézőjelbe tenni, ha nincs benne szóköz?)

Egyes parancsoknak, mint pl. a `dir`-nek is, ún. wildcard-okkal megadott fájlneveket is lehet adni paraméterként. Pl. az alábbi sor csak az `.exe` kiterjesztésű fájlokat listázza:

    C:\> cd \Windows\System32
    C:\Windows\System32> dir *.exe

A `?` karakterrel egy, a `*` karakterrel több karaktert helyettesíthetünk a névben. Pl.: `dir x*e` kilistázza az x-szel kezdődő, e-re végződő fájlokat. Akár több `*` is lehet: `dir x*py*e`. A kérdőjel használata: `dir c_85?.nls`.

### Az Intéző megnyitása

A fentebb említett `explorer.exe` valójában egy olyan program, amelyik a paraméterei alapján eldönti, hogy az alapértelmezett böngészőt, vagy a Windows intézőt indítsa el. Emiatt az `explorer.exe` program mappák neveit is kaphatja paraméterként. Meg tudod ezzel nyitni például a Windows mappáját, ahova az előbb beléptél:

    C:\> explorer C:\Windows

Vagy éppenséggel bármikor az aktuális mappát, amit mindig egyetlen egy pont jelöl:

    C:\Windows> explorer .

### Elérési útvonal – path

Honnan tudja az elindított programoknál a parancssor, hogy hol találhatóak meg, pl. a `notepad.exe` és az `explorer.exe` melyik mappában van? Hiszen ezek is csak fájlok, amiket meg kell keresnie a programok elindításához.

A válasz erre, hogy van egy lista azokról a mappákról, ahol a gyakran használt programok vannak. Így nem kell mindig beírni a mappa teljes nevét, hanem az elindított programokat egyből ott keresi a rendszer. A listát így tudod kiíratni:

    C:\Windows> path

## 3. ZIP fájlok létrehozása

ZIP archívumokba több fájl csomagolható és tömöríthető. Utána az archívum egyetlen fájlként kezelhető, pl. küldhető el e-mailben, vagy tölthető fel valahova. ZIP archívumot – vagy tömörített mappát, ahogy a Windows nevezi – legegyszerűbb a Fájlkezelővel létrehozni. Ennek két módja lehetséges, próbáld ki mindkettőt!

### Első módszer

- Keresd meg a tömöríteni kívánt fájlokat, pl. a mai órai kísérletezés közben létrehozott szövegeket: szoveg.txt, hiba.txt és a többiek.
- Jelöld ki az összeset, amelyre szükség van. Ezt megteheted az egérrel kattintva és húzva, téglalapot rajzolva föléjük, vagy a `Ctrl` gombot nyomva tartva, és egyesével kattintva rájuk.
- Ha sikerült a kijelölés, kattints a jobb egérgombbal valamelyikükre, és válaszd ki a menüből a Küldés / Tömörített mappát:
- Ezután megadhatod a fájl nevét, és a ZIP archívum elkészült.

Ugyanez az Asztalon is működik, ha eddig a fájlokat ott hoztad létre.

### Második módszer

- Kattints jobb egérgombbal a semmibe a Fájlkezelőben vagy az asztalon. Válaszd ki az Új / Tömörített mappa menüpontot.
- Létrejön egy „Új tömörített mappa” nevű ZIP fájl. Kattints erre a jobb gombbal, és nevezd át arra, amire szeretnéd.
- Ha megvan, utána a tömöríteni kívánt fájlokat egyesével húzd rá az egérrel őket a ZIP fájlra. A többszörös kijelölés itt ugyanúgy működik, kattintás közben a `Ctrl` billentyűt nyomva tartva.

A létrehozott archívumokra duplán kattintva a Windows Fájlkezelője megmutatja azok tartalmát is. Így ellenőrizni tudod, mi van bennük. Ezekből (és ezekbe) ugyanúgy másolhatók a fájlok, mint egy mappába. De szem előtt kell tartani, hogy valójában ezek nem igazi mappák. Ha bármire szükség van, akkor ki kell bontani az archívumot. A kicsomagolás legegyszerűbben a jobb egérgombbal kattintásra előjövő menüből lehetséges, a „Kibontás” menüpontot kiválasztva.

## 4. A fejlesztőkörnyezet használata

A bevezető után áttérünk a Python programozásra. Ehhez:

- Indítsd el az IDLE nevű programot.
- Megjelenik egy Shell nevű ablak. Ebbe be lehet írni Python sorokat, kifejezéseket, amiket rögtön ki is értékel a környezet:
- Nagyobb programokat nem a Shell ablakban írunk. Helyette válaszd ki a `File / New File` `Ctrl + N` menüpontot!
- Megjelenik egy új ablak. Írd be oda ezt a kódrészletet:

      print("Helló, világ!")

- Mentsd el a fájlt `hello` néven! A fejlesztőkörnyezet automatikusan hozzá fogja adni a `.py` kiterjesztést, így `hello.py` nevű fájlt kapsz:
- A programot az `F5` billentyűvel lehet futtatni, vagy a `Run / Run module` menüpont kiválasztásával. Az eredmény a Shell ablakban fog megjelenni.

## 5. Teknőcgrafika – bemutató

A következő feladatokban egyszerű rajzokat fogunk készíteni Python programokkal.

A teknőcgrafikában nem koordinátákban, hanem lépésekben és forgásokban gondolkozunk. Az ábrát egy teknőc rajzolja meg, amely az alábbi utasításokat kaphatja:

- Sétáljon előre valamennyit (ilyenkor vonalat is húz),
- Forduljon balra vagy jobbra valahány fokkal,
- Emelje fel vagy tegye le a ceruzát (ettől függ, hogy húz-e vonalat, amikor sétál).

Hozz létre egy új programot a fejlesztőkörnyezetben, és mentsd el `teknoc.py` néven (SEMMIKÉPPEN SEM `turtle.py` néven, mert akkor nem fog működni!) Másold be az alábbi kódot! Duplán rákattintva ki tudod jelölni az egészet.

    # teknőcgrafikát fogunk használni, a program elején kell
    import turtle

    # jobbra néz. piros kör
    turtle.width(30)
    turtle.color("red")
    turtle.circle(100)

    # ceruza fel, mozgás, ceruza le. fölfelé nézve marad
    turtle.up()
    turtle.forward(140)
    turtle.left(90)
    turtle.forward(70)
    turtle.down()

    # kitöltött, kék színű téglalap
    turtle.width(1)
    turtle.color("blue")
    turtle.begin_fill()
    turtle.forward(60)
    turtle.left(90)
    turtle.forward(280)
    turtle.left(90)
    turtle.forward(60)
    turtle.left(90)
    turtle.forward(280)
    turtle.end_fill()

    # ablak bezárására várunk, a program végén kell
    turtle.done()

Ez a program megrajzolja a londoni metró logóját (nagyjából). A `#` jelek után rövid magyarázatok is szerepelnek. A rajzolás egységei:

- Előbb rajzol egy piros kört, 30-as vonalvastagsággal.
- Aztán fölemeli a ceruzát, elmozdul jobbra és le, a téglalap jobb alsó sarkába.
- Végül megrajzolja a kék téglalapot, amit ki is tölt.

A teknőc az utasításokat sorban hajtja végre, fentről lefelé. Köztük pedig mindig megőrzi az állapotát: arrafelé sétál, amerre legutóbb fordult, és olyan színnel rajzol, amit a legutóbb mondtak neki. A kitöltés befejezésekor kitölti azt a sokszöget (visszamenőleg), amit a kitöltés kezdetétől fogva bejárt útvonal határoz meg.

Az alábbi utasításokat kaphatja:

- `turtle.forward(hossz)` – előrefelé megy (negatív hossz = hátrafelé)
- `turtle.backward(hossz)` – hátrafelé megy
- `turtle.left(szög)` – balra fordul (a szög fokban)
- `turtle.right(szög)` – jobb fordul
- `turtle.circle(sugár)` – kört rajzol
- `turtle.circle(sugár, szög)` – körív (a szög fokban)
- `turtle.color("szín neve angolul")` – színt beállít
- `turtle.color(vörös, zöld, kék)` – színt beállít színkeveréssel, mindhárom összetevő 0 és 1 között
- `turtle.begin_fill()` – kitöltött alakzat kezdete
- `turtle.end_fill()` – kitöltött alakzat vége
- `turtle.up()` – ceruzát felemeli
- `turtle.down()` – ceruzát leteszi
- `turtle.speed(sebesség)` – rajzolás sebessége; 1 = lassú, 10 = gyors, 0 = késleltetés kikapcsolása

A Shell ablakban bármikor segítséget lehet kérni angol nyelven a `help` szó beírásával. Ez beírható önmagában is, vagy zárójelben megadható neki egy téma. Ha az `import turtle` megvolt (akár a Shell ablakba beírva), utána:

    >>> help
    Type help() for interactive help, or help(object) for help about object.

    >>> help(turtle.forward)
    forward(distance)
        Move the turtle forward by the specified distance.

        Aliases: forward | fd

        Argument:
        distance -- a number (integer or float)

        Move the turtle forward by the specified distance, in the direction
        the turtle is headed.

Ez nem csak a teknőcgrafikára igaz, hanem a Pythonban mindenre. Például az előző programban szereplő `print` utasításhoz is a `help(print)` információt ad.

## 6. Teknőcgrafika – feladatok

Készítsd el teknőcgrafikával az alábbi rajzokat! A fenti bemutató utasításai elegendőek mindegyikhez. Nem kell milliméterre pontosan így kinézniük, elég a jellegüket követni.

haromszog.py

paralel.py

haziko.py

emberke.py

lampa.py

emoji.py

Ha elakadsz, lassítsd le a rajzolást a `turtle.speed(1)`-gyel! Figyeld a teknőc pozícióját, irányát, amit a kis háromszög reprezentál. Vesd össze azt az elképzeléseddel (minek kellene történnie) és a programoddal (melyik sorral mi a célod)!

Ne felejtsd le semelyik program végéről sem a `turtle.done()` sort!