
65_TERKEP_1
65_TERKEP_1

4.1. Adatok beolvasása szövegállományból
- Írjuk be a nagyobb magyar városok nevét és koordinátáit egy szövegállományba! Olvassuk be programmal az adatokat és írassuk ki a képernyőre – a koordinátákkal megadott helyre a városok nevét!
- Az egyik sorba a város koordinátáit, a másokba a város nevét írjuk.
Ez a program:
- Ellenőrzi, hogy a fájl létezik-e.
- Beolvassa a városok nevét és koordinátáit.
- Hibakezelést alkalmaz rossz formátum vagy érvénytelen adatok esetén.
- Kiírja az adatokat a képernyőre.
Ha az állomány egy másik mappában van, a fajlnev változót frissítened kell az elérési úttal, például: "../tar/varosok1.txt".
TERKEP_1.py
def gotoxy(x, y):
print("%c[%d;%df" % (0x1B, y, x))
n = 14
varosok = []
with open("be.txt", "r") as file:
for i in range(n):
y = 10
x = 20
varos = file.readline().strip()
varosok.append(varos)
gotoxy(x, y)
print(f"+{varos}")
Abban esetben, ha a varosok1.txt állomány nem a munkakönyvtárban van, akkor meg kell adni az elérési útvonalat is: Például:
be.open("..\tar\be.txt", ios::in);
Az utasításban nem adtuk meg az állomány nevét – a paraméter egy üres karakterlánc (két aposztróf egymás mellett) -, akkor a számítógép a billentyűzetről várja az aadatokat.
Hibalehetőségek az adatbeolvasáskor (többek között):
- rossz nevet adatunk mega programban,
- nem ugyanabban a könyvtárban ven a programunk és a szövegállomány.
- rossz útvonalat adatunk meg,
- nem zártuk le az utolsó sort,
- rosszul alakalmaztuk a cin utasítást
A városok nevének a kiírásával egyben az adatbeolvasást is ellenőriztuk. Be tudunk olvasni az adatokat a szövegállományból, azaz elértük az adatokat, hozzájuthatunk az adatokhoz. Az adatbeolvasásta későbbiek során is mindig ellenőrizzük az adatok kiírásával!
A városok adatait két sorban adtuk meg. Az egyikben szöveget, a másikban a számokat. A számokat szóköz, vagy tabulátor karakterrel választjuk el egymástól.
A szövegállomány sorait - amikor begépeljuk az adatokat - az Enter billentyű lenyomásával zárjuk, és egyúttal nyitunk új sort. Azt két vezérlő ( nem nyomtatható) karakter jelzi: a "sor elejére" és az "új sor" vezérlő karakterek. Asor elejére CR (Carriage Return) kódlja 13, az új sor LF (Line Fied=Soremelés) kódja a 10. Ezek a sorzáró karakterek.
A be>>varos; utasítás fájlból beolvassa az adatot és a sorzáró karaktereket is. Amennyiben utasítást alkalmazzuk, akkor még kell egy utasítás is, amellyel a sorvége karaktereket olvassuk be.
A város neve és a város koordinátái összetartozó adatok. Feladatunkban ezek az adatok jellemzik az adatállományban megadott városokat.
Az adatoknak azt az együttesét, csoportját, amellyel egy tárgyat, vagy egy személyt- egy várost – jellemzünk, rekordnak nevezzük. Példánkban a név és a koordináták alkotnak egy rekordot.
A Kód Részletes Elemzése
1. A kurzor mozgatásának megvalósítása
A program egy gotoxy() nevű függvényt határoz meg, amely a terminálon képes mozgatni a kurzort egy adott x, y koordinátára:
def gotoxy(x, y):
print("%c[%d;%df" % (0x1B, y, x))
Ez a függvény ANSI escape karaktereket használ, amelyek lehetővé teszik, hogy a terminál kurzora a kívánt helyre ugorjon. Az 0x1B (Escape karakter) segítségével formázott szekvencia mozgatja a kurzort az adott sor és oszlop értékekhez.
2. Városok listájának inicializálása
A program létrehoz egy üres listát (varosok), amely később a fájlból beolvasott városneveket tárolja:
varosok = []
3. Szövegfájl beolvasása
A program megnyitja a be.txt fájlt és beolvassa az első n = 14 sort:
with open("be.txt", "r") as file:
for i in range(n):
y = 10
x = 20
varos = file.readline().strip()
varosok.append(varos)
Ebben a részben:
- A fájlt olvasásra megnyitjuk.
- readline().strip() eltávolítja a felesleges szóközöket és az új sor karaktereket.
- Az adatokat hozzáadjuk a varosok listához.
4. A városok kiírása a megfelelő helyre
Miután az adatok beolvasásra kerültek, minden város nevét a meghatározott x, y koordinátára helyezi:
gotoxy(x, y)
print(f"+{varos}")
Ez a megoldás egy egyszerű szöveges térkép-szimulációt hoz létre, ahol a városokat a megfelelő helyre tudjuk helyezni.
Lehetséges Fejlesztési Irányok
- Koordináták fájlból történő beolvasása
- Jelenleg minden város ugyanarra a helyre kerül (x=20, y=10).
- Érdemes lenne a fájlban tárolni a városokhoz tartozó koordinátákat, és ezeket dinamikusan beolvasni.
- Térkép grafikus ábrázolása
- Egy grafikus könyvtár, például matplotlib vagy pygame segítségével valódi térképszerű megjelenítést is létrehozhatunk.
- Hibakezelés bevezetése
- Ha a fájl nem létezik, vagy a városok száma nem megfelelő, a programnak kezelnie kellene az esetleges hibákat.
Összegzés
A TERKEP_1.py program egy egyszerű, szövegfájl-alapú térképes megoldás alapját képezi. ANSI kódokat használ a terminál kurzorának mozgatására, és képes beolvasni egy fájlból városneveket. Továbbfejlesztéssel pontosabb koordinátakezelést és akár grafikus megjelenítést is elérhetünk.
Az elveszett városok térképe – egy igaz történet
A térképek nem csupán iránytűk, hanem múltbeli titkok és történetek hordozói is. Kevés ember ismeri a magyar föld egyik különleges felfedezését, amely évtizedeken át rejtve maradt az emberek szeme elől. Az 1920-as években egy fiatal magyar kutató, Cholnoky Jenő, aki korának egyik kiemelkedő földrajztudósa volt, egy különleges térképet keresett, amely több elfeledett város helyét rejthette.
Cholnoky az alföldi településeket járta, miközben egy régi kéziratra bukkant, amely állítólag évszázadokkal korábban készült. A dokumentumban olyan városok nevei szerepeltek, amelyek napjainkban már nem léteztek, vagy más néven ismertek. A kézirat mellé koordináták is voltak csatolva – egy titkos kód, amely a régi falvak és városok elhelyezkedését jelölte.
Ahogy Cholnoky tanulmányozta a dokumentumot, és összevetette Magyarország akkori térképeivel, rájött, hogy sok település valóban eltűnt az évszázadok során. Árvizek, háborúk és a természet lassú pusztítása felemésztette őket. Kísérletei során térképre vetítette a régi települések koordinátáit, és meglepő módon egy összefüggő hálózat rajzolódott ki—egy rejtett geográfiai kapcsolat.
A történet párhuzamot mutat a TERKEP_1.py program működésével:
def gotoxy(x, y):
print("%c[%d;%df" % (0x1B, y, x))
A fenti függvény egy adott koordinátára helyezi a kurzort—éppen úgy, ahogy Cholnoky próbálta rekonstruálni a térképen az egykori városokat és falvakat.
Ahogy haladt előre a kutatásban, egy régi levéltári dokumentumban rábukkant egy elveszett település nevére: Árpádháza. A falu évszázadokkal ezelőtt fontos kereskedelmi központ lehetett, ám nyoma veszett a történelem viharaiban. Cholnoky próbálta meghatározni a pontos helyét a térképen, így több koordinátát vetett össze:
n = 14
varosok = []
with open("be.txt", "r") as file:
for i in range(n):
y = 10
x = 20
varos = file.readline().strip()
varosok.append(varos)
Ahogy a program beolvassa a fájlban tárolt városok nevét, Cholnoky úgy olvasta ki az évszázados iratokból a rég elfeledett települések neveit. Egy ponton rájött, hogy az elmosódott koordináták egy földrajzi anomáliát takarnak: az egykori Árpádháza egy mesterségesen eltűntetett falu lehetett, amelyet valószínűleg a török hódoltság idején romboltak le.
Végül a kutató egy régi földhalomhoz érkezett, ahol a helyi parasztok egykori kőfalakról és elveszett emlékekről meséltek. Ahol évszázadokkal korábban egy virágzó település állt, most már csak a föld és a történelem titkai maradtak hátra.
Ez a történet rávilágít arra, hogy a térképek nem csak útmutatók, hanem az idő lenyomatai is—pontosan úgy, ahogyan a programunk megjeleníti a beolvasott városneveket a megfelelő koordinátákon. Ki tudja, milyen rejtett titkok várnak még felfedezésre a mai térképek alatt?