Programozás I. Szöveges fájlok kezelése Felsorolástípus Objektumtömb Gyakorló feladatok

Hasonló dokumentumok
Programozás I. Gyakorlás egydimenziós tömbökkel Többdimenziós tömbök Gyakorló feladatok V 1.0 ÓE-NIK-AII,

Objektumorientált Programozás VI.

Programozás I. Matematikai lehetőségek Műveletek tömbökkel Egyszerű programozási tételek & gyakorlás V 1.0 OE-NIK,

Informatika terméktervezőknek

BME MOGI Gépészeti informatika 13.

Kalapácsvetés 2016 szöveges

Torna. A torna.csv UTF-8 kódolású állományban soronként egy versenyző eredményeit tároljuk. Az adatokat pontosvessző választja el egymástól.

3. Határozza meg és írja ki a minta szerint, hogy a forrásállományban hány kémiai elem felfedezési adatai

hiányzott szeptemberben vagy A tanuló nem hiányzott szeptemberben szöveget

Objektumorientált programozás C# nyelven

A képernyőre írást igénylő részfeladatok eredményének megjelenítése előtt írja a képernyőre a feladat sorszámát (például: 3. feladat:)!

Objektumorientált Programozás VI.

1. feladat Készítse el szövegszerkesztővel, majd mentse osztály.txt néven a következő tartalmú szöveges fájlt:

BME MOGI Gépészeti informatika 8.

OOP: Java 8.Gy: Gyakorlás

Objektum Orientált Programozás VII.

OOP: Java 8.Gy: Abstract osztályok, interfészek

Objektumorientált Programozás V.

Osztályok. 4. gyakorlat

Bánsághi Anna 2014 Bánsághi Anna 1 of 35

Készítette: Nagy Tibor István

Objektum Orientált Programozás V.

OOP I. Egyszerő algoritmusok és leírásuk. Készítette: Dr. Kotsis Domokos

Objektumorientált programozás Pál László. Sapientia EMTE, Csíkszereda, 2014/2015

Fájlkezelés. Szöveges fájlok kezelése

Java Programozás 1. Gy: Java alapok. Ismétlés ++

Objektumorientált programozás C# nyelven

Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN

INFORMATIKAI ALAPISMERETEK

INFORMATIKAI ALAPISMERETEK

Vizuális, eseményvezérelt programozás XI.

OOP #14 (referencia-elv)

Szoftvertervezés és -fejlesztés I.

Objektumorientált Programozás III.

A C# programozási nyelv alapjai

Szoftvertechnolo gia gyakorlat

Vizuális és eseményvezérelt programozás , II. félév BMF NIK

Programozási nyelvek Java

Objektumorientált Programozás IV.

Objektum Orientált Programozás IV.

BME MOGI Gépészeti informatika 4.

Bánsághi Anna 2014 Bánsághi Anna 1 of 33

4. Gy: JAVA osztályok

OOP: Java 11.Gy: Enumok, beágyazott osztályok. 13/1 B ITv: MAN

C++ programozási nyelv Konstruktorok-destruktorok

A gyakorlat során az alábbi ábrán látható négy entitáshoz kapcsolódó adatbevitelt fogjuk megoldani.

Programozási nyelvek II.: JAVA

BME MOGI Gépészeti informatika 5.

Bevezetés a programozásba I 10. gyakorlat. C++: alprogramok deklarációja és paraméterátadása

Objektumorientált programozás C# nyelven III.

Java és web programozás

Java gyakorlat feladatai e s megolda sai ( )

Szoftvertervezés és -fejlesztés I.

Programozás I. Metódusok C#-ban Egyszerű programozási tételek. Sergyán Szabolcs

Programozás II. ATM példa Dr. Iványi Péter

GenerikusOsztály<objektumtípus> objektum = new GenerikusOsztály<objektumtípus>();

Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges. Könyvtárhierarhiát fed: Pl.: java/util/scanner.java

Programozás alapjai gyakorlat. 4. gyakorlat Konstansok, tömbök, stringek

Programozás I. Első ZH segédlet

Programozási nyelvek Java

Objektumorientált programozás C# nyelven III.

117. AA Megoldó Alfréd AA 117.

Tömbök kezelése. Példa: Vonalkód ellenőrzőjegyének kiszámítása

3. Osztályok II. Programozás II

1. Alapok. Programozás II

AWK programozás, minták, vezérlési szerkezetek

OOP: Java 1.Gy: Java alapok

Felhasználó által definiált adattípus

Programozás II. 2. gyakorlat Áttérés C-ről C++-ra

Gelle Kitti Algoritmusok és adatszerkezetek gyakorlat - 07 Hasítótáblák

C# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem

Szöveges fájl kezelése (a Caesar-kód feltörése) A kód feltörésének statisztikai háttere

Bánsághi Anna 2014 Bánsághi Anna 1 of 68

Pénzügyi algoritmusok

Smalltalk 2. Készítette: Szabó Éva

Bánsághi Anna

C#, OOP. Osztályok tervezése C#-ban

Java VI. Egy kis kitérő: az UML. Osztály diagram. Általános Informatikai Tanszék Utolsó módosítás:

HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport

7. K: JAVA alapok Konzultáció

INFORMATIKAI ALAPISMERETEK

Java programozási nyelv 5. rész Osztályok III.

PROGRAMOZÁS ALAPFELADATOK

Java II. I A Java programozási nyelv alapelemei

BME MOGI Gépészeti informatika 18. Grafika, fájlkezelés gyakorló óra. 1. feladat Készítsen alkalmazást az = +

Szerző. Varga Péter ETR azonosító: VAPQAAI.ELTE cím: Név: Kurzuskód:

Programozás I. Objektum-orientált programozás Stringműveletek V 1.0 ÓE-NIK-AII,

.Net adatstruktúrák. Készítette: Major Péter

Programozási nyelvek II. JAVA EA+GY 1. gyakolat

Pelda öröklődésre: import java.io.*; import java.text.*; import java.util.*; import extra.*;

Bevezetés a programozásba I.

Java Programozás 11. Ea: MVC modell

Programozási nyelvek II.: JAVA, 4. gyakorlat

AWK programozás, minták, vezérlési szerkezetek

Kivételek kezelése (exception handling) Hibakezelés old style. Kivételkezelés

Objektumorientált programozás C# nyelven

Programozás(A szakirány) II. beadandó feladat Farkas András HP6S15 1. csoport Veszprémi Anna / Hudoba Péter

Vizuális és eseményvezérelt programozás , II. félév BMF NIK

Powershell 2. gyakorlat

Programozási nyelvek Java

Átírás:

Programozás I. Szöveges fájlok kezelése Felsorolástípus Objektumtömb Gyakorló feladatok 1

Hallgatói tájékoztató A jelen bemutatóban található adatok, tudnivalók és információk a számonkérendő anyag vázlatát képezik. Ismeretük szükséges, de nem elégséges feltétele a sikeres zárthelyinek, illetve vizsgának. Sikeres zárthelyihez, illetve vizsgához a jelen bemutató tartalmán felül a kötelező irodalomként megjelölt anyag, a gyakorlatokon szóban, illetve a táblán átadott tudnivalók ismerete, valamint a gyakorlatokon megoldott példák és az otthoni feldolgozás céljából kiadott feladatok önálló megoldásának képessége is szükséges. 2

Programozás I. Szöveges fájlok kezelése Felsorolástípus Objektumtömb Gyakorló feladatok 3

Szöveges fájlok kezelése A szöveges fájlok egyes soraiban stringek találhatók A fájlokat soronként elölről hátrafelé haladva tudjuk bejárni A fájlt háromféle módon nyithatjuk meg Olvasás: Ilyen esetben soronként ki tudjuk olvasni a fájl tartalmát Írás: Ilyenkor új fájl jön létre, melybe soronként írhatunk, vagy a már létező fájl törlődik és egy ugyanolyan nevű új fájlba írhatunk soronként Hozzáfűzés: Ekkor a fájlunk végére tudunk új sorokat írni A fájlkezelés végén a fájlt kötelező bezárnunk A fájlműveletek a System.IO névtérben találhatók OE-NIK-AII, 2015 4

Fájl olvasása A StreamReader osztályt kell használnunk StreamReader sr = new StreamReader("fajlnev.txt"); Egy sor kiolvasása a fájlból string s = sr.readline(); Fájl végének ellenőrzése sr.endofstream Fájl bezárása sr.close(); StreamReader sr = new StreamReader("fajlnev.txt"); while (!sr.endofstream) { string s = sr.readline(); Console.WriteLine(s); } sr.close(); OE-NIK-AII, 2015 5

Fájl írása A StreamWriter osztályt kell használnunk StreamWriter sw = new StreamWriter("fajlnev.txt"); Egy sor kiírása a fájlba sw.writeline(s); Fájl bezárása sw.close(); StreamWriter sw = new StreamWriter("fajlnev.txt"); foreach (string s in stomb) { sw.writeline(s); } sw.close(); OE-NIK-AII, 2015 6

Hozzáfűzés és karakterkódolás Ha hozzá akarunk fűzni már létező fájlhoz, akkor a fájl megnyitásakor kell ezt megadnunk StreamWriter sw = new StreamWriter("fajlnev.txt", true); false használata felülírást eredményez StreamWriter sw = new StreamWriter("fajlnev.txt", false); A szövegfájlok karakterkódolása a mentő programtól, beállítástól függhet A StreamWriter-t úgy kell megnyitni, hogy a szövegfájlénak megfelelő karakterkódolásban olvasson Alapértelmezetten UTF-8-ban próbál olvasni StreamWriter megnyitása karakterkódolás megadásával: StreamWriter sw = new StreamWriter("fajlnev.txt", Encoding.Default); OE-NIK-AII, 2015 7

Elérési út megadása A fájlnév megadásánál megadhatunk abszolút elérési utat: StreamWriter sw = new StreamWriter("c:\\hallgato\\fajlnev.txt"); StreamWriter sw = new StreamWriter(@"c:\hallgato\fajlnev.txt"); Nem ajánlott, más rendszeren nem lesz pontosan azon a helyen a fájl Relatív elérési út megadása: StreamWriter sw = new StreamWriter("fajlnev.txt"); StreamWriter sw = new StreamWriter("szovegek\\fajlnev.txt"); Ez a megadott nevű fájlt a munkakönyvtárban (working directory) keresi A munkakönyvtár egyszerű esetben az a könyvtár, ahol az exe van OE-NIK-AII, 2015 8

Feladatok 1. Egy string tömbbe olvassa be egy szöveges fájl sorait, majd a sorokat írja ki a konzolra! 2. Határozza meg, hogy hány sora van a beolvasott fájlnak, illetve hány betű található benne. A fájl végére írjon két új sort, melyek ezeket az adatokat tartalmazzák! 3. Olvasson be egy fájlt, majd a beolvasott szöveget alakítsa át úgy, hogy csak a betűket és számokat tartsa meg. Az eredménnyel írja felül az eredeti fájlt! OE-NIK-AII, 2015 9

Feladatok 4. Egy szöveges fájlt alakítson át úgy, hogy minden sor középre legyen rendezve! 5. Egy szöveges fájlt alakítson át úgy, hogy minden sor sorkizárt legyen! 6. Határozza meg, hogy egy szöveges fájlban melyik a leghosszabb szó, illetve melyik szó fordul elő leggyakrabban! OE-NIK-AII, 2015 10

Programozás I. Szöveges fájlok kezelése Felsorolástípus Objektumtömb Gyakorló feladatok 11

Felsorolás típus Olyan adatszerkezet, amely meghatározott értékek névvel ellátott halmazát képviseli. enum kulcsszóval definiáljuk Osztályon belül vagy kívül is definiálható enum Napok { } Hétfő, Kedd, Szerda, Csütörtök, Péntek, Szombat, Vasárnap class Program { static void Main(string[] args) { Napok ma = Napok.Csütörtök; if (ma == Napok.Csütörtök) Console.WriteLine("Ma csütörtök van"); } } 12

Felsorolás típus A felsorolás típus elemeit számok reprezentálják. Kezdősorszám: 0 Lehetőség van egyéni számozás használatára is enum Napok { } Hétfő = 1, Szerda = 3, Csütörtök = 4 class Program { static void Main(string[] args) { Napok ma = Napok.Csütörtök; int x = (int)ma; // x == 4 Napok hételeje = Napok.Hétfő; x = (int)hételeje; // x == 1 } } 13

Programozás I. Szöveges fájlok kezelése Felsorolástípus Objektumtömb Gyakorló feladatok 14

Objektumtömb Ismétlés: tömblétrehozás int[] t = new int[8]; char[] t = new char[8]; string[] t = new string[8]; Osztaly[] t = new Osztaly[8]; t 00 300 A tömb referenciatípus, így a változóban nem közvetlenül az adat helyezkedik el, hanem egy memóriacím (referencia) Az adott memóriacímen helyezkedik el az adat maga Tömb létrehozásakor a tömb által lefoglalt adatterület kinullázódik a memóriában 15

Objektumtömb Ismétlés: alapértelmezett érték t 00 300 A tömbelemben a nullázás után a típushoz tartozó alapértelmezett érték van: Ha érték típusú változók tömbje volt, akkor közvetlenül az adat van az elemben: Ha a tömb int[] volt: 0 Ha a tömb char[] volt: \0 (a 0 kódú karakter) Ha a tömb bool[] volt: false Ha viszont referencia típusú változók tömbje volt, akkor ez a csupa 0 valamilyen memóriacím (referencia) Nem érvényes memóriacím null-nak nevezzük null elemre nem lehet hivatkozni 16

Objektumtömb Ismétlés: alapértelmezett érték Érték típusú változókat tartalmazó tömbök: int[] t = new int[8]; char[] t = new char[8]; A tömbelemek értéke a létrehozás után érvényes, azonnal használható int[] t = new int[8]; t[2]++; Console.WriteLine(t[2]); //1 Referencia típusú változókat tartalmazó tömbök: string[] t = new string[8]; Osztaly[] t = new Osztaly[8]; A tömbelemek értéke a létrehozás után null, érvénytelen Ezért értéket kell adni minden tömbelemnek, mielőtt használatba vesszük Osztaly[] t = new Osztaly[8]; Console.WriteLine(t[2].Tulajdonsag); //NEM JÓ!!! 17

Objektumtömb Objektumtömbben példányosítani kell minden elemet class Vektor { private double x; public double X { get { return x; } set { x = value; } } private double y; public double Y { get { return y; } set { y = value; } }... public Vektor(double x, double y) { this.x = x; this.y = y; } } Vektor[] tomb = new Vektor[8]; Console.WriteLine(tomb[2].X + " " + tomb[2].y); //NEM JÓ!!! Vektor[] tomb = new Vektor[8]; for (int i = 0; i < tomb.length; i++) { tomb[i] = new Vektor(5, 5); } Console.WriteLine(tomb[2].X + " " + tomb[2].y); //JÓ: 5 5 öt ír ki 18

Objektumtömb A string is referenciatípus Speciális tulajdonsága miatt számos esetben érték típusként viselkedik Ezért az alapértelmezett érték ott is null A stringtömbben is értéket kell adni minden elemnek: string[] t = new string[8]; Console.WriteLine(t[2].ToUpper()); // NEM JÓ!!! string[] t = new string[8]; for (int i = 0; i < tomb.length; i++) { t[i] = "ffff"; } Console.WriteLine(t[2].ToUpper()); // FFFF 19

Programozás I. Szöveges fájlok kezelése Felsorolástípus Objektumtömb Gyakorló feladatok 20

Feladatok 1. Írjon menüvezérelt programot, amely lehetővé teszi egy futó napi edzéseinek eltárolását a) Új edzés felvitele - Dátum YYYYMMDD formátumban - Táv #,# km formában - Idő HH:MM:SS formátumban Az új edzés bekerül a futónapló fájl végére b) Edzések listázása A konzolra kilistázza az edzéseket c) Statisztikák A konzolra és egy statisztika fájlba kiírja az edzések számát, valamint a távok és idők összegét és átlagát OE-NIK-AII, 2015 21

Gyakorló feladat 2. Csevegőprogramot készítünk, amelyben Személy típusú elemekkel reprezentáljuk a kontaktjainkat. Egy Személynek van neve, születési éve és neme. a) Hozzunk létre 5 elemű tömböt, amelyet feltöltünk Személyekkel! A Személy osztályban legyen olyan paraméteres konstruktor, amelynek segítségével név és nem ismeretében, de véletlenszerű születési évvel létrehozhatjuk a személyt. b) Vannak olyan emberek, akiknek ugyanaz a vezeték- vagy keresztnevük, mint a felhasználónak? Ha vannak, akkor listázzuk ki mindet. c) Listázzuk ki az összes olyan Személyt, aki a felhasználóval ellenkező nemű! d) Számoljuk meg, hány olyan Személy van, aki a felhasználóval azonos korosztályba tartozik (azaz maximum 5 év van 22 közöttük)!

Feladatok 3. Készítsen szótárprogramot, amely szópárokat tárol, illetve ki is kérdezi a szavakat! a) Lehessen új szópárokat felvenni, de csak akkor, ha még nincsenek bent a szótárban! b) Lehessen kilistázni a szótár tartalmát! c) Tudja kikérdezni a szavakat mindkét nyelv szavai alapján. A kikérdezés végén adja meg, hány helyes válasz érkezett! OE-NIK-AII, 2015 23

Feladatok 4. Hozzunk létre egy 20 elemű tömböt, amelyben Zh típusú elemek vannak. Egy ilyen elemmel egy zh-eredményt reprezentálunk. Egy Zh-hoz egy 6 jegyű Neptun-kód és egy 0-100-ig terjedő pontszám tartozik. Egy konstruktor segítségével véletlenszerű Neptun-kóddal és pontszámmal hozzuk létre a tömbben lévő példányokat. a) Sorolja fel, kik mentek át a zh-n! b) Írja ki a legjobb eredményű hallgató Neptun-kódját! Ha több embernek is ez az eredménye, akkor mindegyikükét. c) Listázza ki az eredményeket úgy, hogy a nevek mellett a jegyek szerepelnek! A jegyeket ponthatártömb alapján állapítsa meg. A Neptun-kód egy string, amely kezdetben üres. Mind a 6 karakterét legeneráljuk egyenként, a következőképpen: Véletlenszám sorsolásával eldöntjük, szám jön-e vagy karakter. Ha szám, akkor sorsolunk egy számot 0-9-ig, és hozzáadjuk a stringhez. Ha karakter, akkor sorsolunk egy karaktert, és azt hozzáadjuk a stringhez. Karakter sorsolása: char c = (char)rand.next(65, 91); OE-NIK-AII, 2015 24