1. hét: egyszerű programok
Czirkos Zoltán · 2024.09.22.
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.
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"
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
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.
Próbáld ki, hogy be tudsz-e jelentkezni erre a portálra! A menüben is találsz Belépés gombot (jobb fent), de erre a linkre kattintva is lehetséges: bejelentkezés. Ha nem sikerül, akkor kérj ideiglenes jelszót, és szükség szerint állítsd be a NEPTUN-beli hivatalos e-mail címed.
Bejelentkezés után nézz szét a portálon! Az egész félév során feladat lesz az a laborban, hogy az elkészített megoldásokat a labor végén csomagold össze egy ZIP fájlba (nem 7ZIP, nem RAR!), és töltsd azt fel a portálra. Így neked is meglesz, és ott tudod folytatni a megoldások elkészítését, ahol abbahagytad. A kiírt feladatok közt fogod látni minden héten a laborfeladatoknak való helyet.
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, ígyhello.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.
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é megyturtle.left(szög)
– balra fordul (a szög fokban)turtle.right(szög)
– jobb fordulturtle.circle(sugár)
– kört rajzolturtle.circle(sugár, szög)
– körív (a szög fokban)turtle.color("szín neve angolul")
– színt beállítturtle.color(vörös, zöld, kék)
– színt beállít színkeveréssel, mindhárom összetevő 0 és 1 közöttturtle.begin_fill()
– kitöltött alakzat kezdeteturtle.end_fill()
– kitöltött alakzat végeturtle.up()
– ceruzát felemeliturtle.down()
– ceruzát letesziturtle.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.
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!
Ha a laborfeladatokkal elkészültél, dolgozz a példatárban lévő feladatokon, a szorgalmi feladatokon, a minta zárthelyin, vagy a házi feladatodon.
Informatikusok próbálják lekódolni az Algoritmusok és gráfok tárgyon tanult algoritmusokat. A félév elején még nem biztos, hogy minden egyszerűen menni fog, de ahogy megismeritek a vonatkozó adatszerkezeteket és nyelvi elemeket, egyre könnyebb lesz. Ezzel két legyet lehet ütni egy csapásra, mert két tantárgyat is gyakoroltok egyszerre.