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

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

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

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

Informatika terméktervezőknek

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.

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

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

BME MOGI Gépészeti informatika 13.

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

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:)!

Kalapácsvetés 2016 szöveges

Szoftvertervezés és -fejlesztés I.

PROGRAMOZÁS ALAPFELADATOK

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

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

Input Output Műveletek

Bevezetés a programozásba I 4. gyakorlat. PLanG: Szekvenciális fájlkezelés. Szekvenciális fájlkezelés Fájlok használata

Bevezetés a programozásba I 4. gyakorlat. PLanG: Szekvenciális fájlkezelés

A C# programozási nyelv alapjai

INFORMATIKAI ALAPISMERETEK

// keressük meg a legnagyobb faktoriális értéket, ami kisebb, // mint százmillió

C# feladatgyűjtemény Kovács Emőd, Radványi Tibor, Király Roland, Hernyák Zoltán

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

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):

Objektumorientált Programozás III.

Alkalmazott modul: Programozás 2. előadás. Procedurális programozás: adatfolyamok, adatsorok kezelése

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

Programozási nyelvek Java

BME MOGI Gépészeti informatika 4.

1. Alapok. Programozás II

BME MOGI Gépészeti informatika 5.

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

Bevezetés a programozásba I.

Gyakorló feladatok az 1. nagy zárthelyire

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

Java gyakorlat feladatai e s megolda sai ( )

A C# PROGRAMOZÁSI NYELV

2018, Funkcionális programozás

Fájlok, stream-ek. Fájlok és könyvtárak Stream-ek csoportosítása A stream-ek osztályhierarchiája Stream-ek használata

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

INFORMATIKAI ALAPISMERETEK

1. Feladat: beolvas két számot úgy, hogy a-ba kerüljön a nagyobb

Programozás BMEKOKAA146. Dr. Bécsi Tamás 8. előadás

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

INFORMATIKAI ALAPISMERETEK

Programozás alapjai 9.Gy: Struktúra 2.

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

Pénzügyi algoritmusok

Operációs rendszerek. 9. gyakorlat. Reguláris kifejezések - alapok, BASH UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

File és stream kezelés. Dr. Kotsis Domokos Nagy Tibor

Mentsd el code file-t kektura.cs néven, illetve kiterjesztéssel! Másold be a kektura.csv állományt a Projects munkamappa megfelelő almappájába!

BME MOGI Gépészeti informatika 1.

II. Mérés SZÉCHENYI ISTVÁN EGYETEM GYŐR TÁVKÖZLÉSI TANSZÉK

Java programozási nyelv

Programozás alapjai 6. előadás. Wagner György Általános Informatikai Tanszék

Bevezetés a programozásba I.

Programozás BMEKOKAA146. Dr. Bécsi Tamás 3. előadás

Konzolalkalmazások gyors tesztelése

Kinek szól a könyv? A könyv témája A könyv felépítése Mire van szükség a könyv használatához? A könyvben használt jelölések. 1. Mi a programozás?

Bevezetés a programozásba I.

7. Laboratóriumi gyakorlat: Vezérlési szerkezetek II.

Bevezetés a programozásba I 8. gyakorlat. C++: szövegfolyamok, intelligens tömbök. Adatfolyamok Hibalehetőségek

Bevezetés a programozásba I 8. gyakorlat. C++: szövegfolyamok, intelligens tömbök

7. gyakorlat Sorozatok, Fájlkezelés

C programozás. { Márton Gyöngyvér, 2009 } { Sapientia, Erdélyi Magyar Tudományegyetem }

1. Jelölje meg az összes igaz állítást a következők közül!

1. Egyszerű (primitív) típusok. 2. Referencia típusok

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):

Objektumorientált Programozás II.

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

Alkalmazott modul: Programozás 4. előadás. Procedurális programozás: iteratív és rekurzív alprogramok. Alprogramok. Alprogramok.

C# feladatok gyűjteménye

Bevezetés a programozásba I.

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

S z á m í t ó g é p e s a l a p i s m e r e t e k

Programozási nyelvek Java

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós május 6. Széchenyi István Egyetem, Gy r

Bevezetés a programozásba I 7. gyakorlat. C++: szövegkezelés, szekvenciális fájlkezelés. Szövegkezelés Karakterkezelés

Felvételi tematika INFORMATIKA

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

Bevezetés a programozásba I.

BME MOGI Gépészeti informatika 7.

Programozás C nyelven (3. ELŐADÁS) Sapientia EMTE

BASH script programozás II. Vezérlési szerkezetek

A PROGRAMOZÁS ALAPJAI 3. Készítette: Vénné Meskó Katalin

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

Algoritmizálás és adatmodellezés tanítása 3. előadás

Java II. I A Java programozási nyelv alapelemei

Szoftvertechnolo gia gyakorlat

Funkcionális Nyelvek 2 (MSc)

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

Adatbázis rendszerek Gy: Az adattárolás fejlődése

Készítette: Nagy Tibor István

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

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

10. gyakorlat Tömb, mint függvény argumentum

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

Programozási nyelvek JAVA EA+GY 1. gyakolat

I. Specifikáció készítés. II. Algoritmus készítés

Objektumorientált Programozás VI.

Átírás:

IMPERATÍV PROGRAMOZÁS Bánsághi Anna anna.bansaghi@mamikon.net 4. ELŐADÁS - ADATFOLYAMOK KEZELÉSE 2014 Bánsághi Anna 1 of 35

TEMATIKA I. ALAPFOGALMAK, TUDOMÁNYTÖRTÉNET II. IMPERATÍV PROGRAMOZÁS Imperatív paradigma Procedurális paradigma Generikus paradigma III. STRUKTÚRÁLT PROGRAMOZÁS Moduláris paradigma Objektumorientált paradigma 2014 Bánsághi Anna 2 of 35

II. IMPERATÍV PROGRAMOZÁS IMPERATÍV PARADIGMA 1. Jelkészlet 2. Lexikális elemek 3. Utasítások, vezérlési szerkezetek 4. Elemi és összetett típusok 5. Programozási tételek 6. Adatfolyamok kezelése 2014 Bánsághi Anna 3 of 35

6. ADATFOLYAMOK KEZELÉSE az adatfolyam nem feltétlenül struktúrált adatok összefüggő, azok sorrendjét megtartó halmaz, mely írható és olvasható pl.: konzol képernyő, billentyűzet, fájl, hálózati csatorna a nyelv az adatfolyamokat hasonló módon kezeli, ugyanazon műveletek (írás, olvasás) és hasonló viselkedés várható el 2014 Bánsághi Anna 4 of 35

ADATFOLYAMOK MŰVELETEI adatfolyamokból egyenként olvashatunk ki adatokat Read egyetlen karakter olvasása ReadLine egyetlen sor olvasása ReadBlock adott számú karakter olvasása adatfolyamokba egyenként írhatunk adatokat Write egyetlen karakter írása WriteLine egyetlen sor írása WriteBlock adott számú karakter írása 2014 Bánsághi Anna 5 of 35

VÉGJELIG TÖRTÉNŐ FELDOLGOZÁS ha tetszőleges számú adatot akarunk elemenként feldolgozni, akkor az olvasást végezhetjük egy adott végjelig általában a végjelet már nem akarjuk feldolgozni, ezért ellenőriznünk kell, hogy végjelet olvastunk-e be előreolvasás + elöltesztelő ciklus hátultesztelő ciklus 2014 Bánsághi Anna 6 of 35

ELŐREOLVASÁSI TECHNIKA Beolvas( adat ) ciklus amíg adat!= végjel Feldolgoz( adat ) Beolvas( adat ) ciklus vége HÁTULTESZTELŐ CIKLUSOS TECHNIKA ciklus eleje Beolvas( adat ) Feldolgoz( adat ) ciklus amíg adat!= végjel 2014 Bánsághi Anna 7 of 35

ADATFOLYAM FAJTÁK konzol képernyő és billentyűzet szekvenciális fájlok 2014 Bánsághi Anna 8 of 35

KONZOL KÉPERNYŐ ÉS BILLENTYŰZET Olvassunk be a billentyűzetről egy sort, majd írjuk ki a képernyőre using System; namespace KonzolAlkalmazasok { public class Pelda { public static void Main() { string bemenet = Console.ReadLine(); Console.WriteLine( "be: " + bemenet ); 2014 Bánsághi Anna 9 of 35

Olvassunk be a billentyűzetről egy sort, majd írjuk ki a képernyőre, hogy valós szám volt-e Használjuk a TryParse metódust public static void Main() { string bemenet; double valos; bemenet = Console.ReadLine(); if( double.tryparse( bemenet, out valos )) { Console.WriteLine( "Valós számot adtál meg: {0", valos ); else { Console.WriteLine( "Nem valós számot adtál meg" ); 2014 Bánsághi Anna 10 of 35

Olvassunk be a billentyűzetről egy sort. Ha egész számot kaptunk, akkor írjuk ki a rákövetkezőjét Szüntessük meg az előző példában használt bemenet nevű változót public static void Main() { int szam; if( int.tryparse( Console.ReadLine(), out szam )) { Console.WriteLine( ++szam ); else { Console.WriteLine( "Nem egész számot adtál meg" ); 2014 Bánsághi Anna 11 of 35

Olvassunk be karakterenként a billentyűzetről az ENTER leütéséig, és írjuk is ki elemenként Használjuk az előreolvasási technikát public static void Main() { ConsoleKeyInfo billentyu = Console.ReadKey(); while( billentyu.key!= ConsoleKey.Enter ) { Console.WriteLine( " és tényleg: {0", billentyu.keychar ); billentyu = Console.ReadKey(); 2014 Bánsághi Anna 12 of 35

Olvassunk be karakterenként a billentyűzetről az ENTER leütéséig, és írjuk is ki elemenként Használjuk a hátultesztelő ciklusos technikát public static void Main() { ConsoleKeyInfo billentyu; do { billentyu = Console.ReadKey(); Console.WriteLine( " és tényleg: {0", billentyu.keychar ); while (billentyu.key!= ConsoleKey.Enter ); 2014 Bánsághi Anna 13 of 35

Írjuk ki a beolvasott szám rákövetkezőjét. Ha nem számot ad meg a felhasználó, akkor kérjük be újra Az ellenőrzéshez használjuk az előreolvasási technikát public static void Main() { int szam; Console.WriteLine( "Kérek egy számot" ); bool megfelelo = int.tryparse( Console.ReadLine(), out szam ); while(! megfelelo ) { Console.Clear(); Console.WriteLine( "Kérek egy számot" ); megfelelo = int.tryparse( Console.ReadLine(), out szam ); Console.WriteLine( ++szam ); 2014 Bánsághi Anna 14 of 35

Írjuk ki a beolvasott szám rákövetkezőjét. Ha nem számot ad meg a felhasználó, akkor kérjük be újra Az ellenőrzéshez használjuk a hátultesztelő ciklusos technikát public static void Main() { int szam; do { Console.Clear(); Console.WriteLine( "Kérek egy számot" ); while(! int.tryparse( Console.ReadLine(), out szam )); Console.WriteLine( ++szam ); 2014 Bánsághi Anna 15 of 35

Adjuk meg, hogy hány páros számot olvastunk a bemenetről, a beolvasás végjele a 0 A Számlálás programozási tételhez használjuk az előreolvasási technikát public static void Main() { int szam; int.tryparse( Console.ReadLine(), out szam ); int darab = 0; while( szam!= 0 ) { if( szam % 2 == 0 ) { ++darab; int.tryparse( Console.ReadLine(), out szam ); Console.WriteLine( "A számok közül {0 páros volt", darab ); 2014 Bánsághi Anna 16 of 35

SZEKVENCIÁLIS FÁJLOK hasonlóan tudunk írni és olvasni, mint konzol képernyő vagy billentyűzet esetén a billentyűzetről olvasás helyett egy előre rögzített tartalmat olvasunk be, és dolgozunk fel a képernyőre írás helyett egy újonnan létrehozott fájlba írunk a fájl típusa szerint sokféle lehet: szöveges, bináris, összetett ha az adatokat sorban olvassuk és sorban írjuk, akkor szekvenciális fájlról beszélünk 2014 Bánsághi Anna 17 of 35

SZEKVENCIÁLIS FÁJLOK VÉGJELEI az elemenkénti feldolgozáshoz meg kell tudnunk különböztetni a fájl elemeit minden fájl végén van egy minden sor végén van egy fájl vége sor vége (EOF) végjel (EOL) végjel 2014 Bánsághi Anna 18 of 35

fizikai fájl FÁJLOK A HÁTTÉRTÁRON ÉS A PROGRAMBAN a háttértáron, elérési útvonallal adott tartalom logikai fájl a programkódban, adott típusú változó értéke a programban a fizikai és a logikai fájlt össze kell rendelni 2014 Bánsághi Anna 19 of 35

LOGIKAI FÁJLTÍPUSOK a fájlkezelés szabványos könyvtára a System.IO általában megkülönböztetjük egymástól a kizárólag írható, a kizárólag olvasható és a módosítható fájlokat System.IO.FileStream System.IO.StreamReader System.IO.StreamWriter tetszőlegesen paraméterezhető olvasható fájl írható fájl 2014 Bánsághi Anna 20 of 35

A FELDOLGOZÁS LÉPÉSEI 1. Fizikai és logikai fájl összerendelése 2. Fizikai fájl megnyitása a logikai fájlon keresztül 3. Fizikai fájl feldolgozása a logikai fájlon keresztül 4. Fizikai fájl bezárása a logikai fájlon keresztül 2014 Bánsághi Anna 21 of 35

SYSTEM.IO.FILESTREAM szekvenciális fájlok byte-onkénti feldolgozásának típusa FÁJL HOZZÁFÉRÉSI MÓDOK az összerendelés során megadható a fájl hozzáférési módja Read Write ReadWrite adatok kizárólag olvasáshatók a fájlból adatok kizárólag írhatók a fájlba adatok írhatók és olvasáshatók a fájlból 2014 Bánsághi Anna 22 of 35

FÁJL ÜZEMMÓDOK az összerendelés során megadható a fájl üzemmódja Append létező fájl megnyitása úgy, hogy a soron következő írás a fájl végére történik Create fájl létrehozása, ha létezik, akkor törlése és újralétrehozása CreateNew fájl létrehozása, ha létezik, akkor kivétel váltódik ki Open létező fájl megnyitása OpenOrCreate ha nem létezik a fájl, akkor létrehozása, ha létezik, akkor megnyitása Truncate létező fájl megnyitása és tartalmának törlése 2014 Bánsághi Anna 23 of 35

A fájl feldolgozásának négy lépése using System.IO;... public static void Main() { string fajl = "adat.txt"; FileStream fs; if( File.Exists( fajl )) { Console.WriteLine( "Létezik a fájl" ); fs = new FileStream( fajl, FileMode.Open, FileAccess.ReadWrite ); else { Console.WriteLine( "Mostanáig nem létezett a fájl" ); fs = new FileStream( fajl, FileMode.CreateNew, FileAccess.Write ); fs.close(); 2014 Bánsághi Anna 24 of 35

EGYSZERŰBB FELDOLGOZÁS LÉPÉSEI a fájl megnyitásához és bezárásához kapcsolódó feladatok kiválthatók egyetlen utasítással a using utasítás feltételezi, hogy létezik a fizikai fájl using( Fizikai és logikai fájl összerendelése ) { Fizikai fájl feldolgozása a logikai fájlon keresztül 2014 Bánsághi Anna 25 of 35

Fájl feldolgozása a using utasítással using System.IO;... public static void Main() { string fajl = "adat.txt"; if(! File.Exists( fajl )) { Console.WriteLine( "Nem létezik a fájl" ); else { using( FileStream fs = new FileStream( fajl, FileMode.Open, FileAccess.Read )) { Console.WriteLine( "Létezik a fajl" ); 2014 Bánsághi Anna 26 of 35

SYSTEM.IO.STREAMWRITER kizárólag írható szekvenciális fájlok soronkénti feldolgozása Hozzunk létre egy fájlt, soronként egy-egy egész számmal A számok generálásához használjuk a véletlenszám generátort public static void Main() { Random rand = new Random(); using( StreamWriter sw = new StreamWriter( "szamok.txt" )) { for( int i = 1; i <= 10; ++i ) { sw.writeline( rand.next(0, 100) ); 2014 Bánsághi Anna 27 of 35

SYSTEM.IO.STREAMREADER kizárólag olvasható szekvenciális fájlok soronkénti feldolgozása Irassuk ki egy fájl tartalmát soronként public static void Main() { string fajl = "szamok.txt"; if(! File.Exists( fajl )) { Console.WriteLine( "Nem létezik a fájl" ); else { using( StreamReader sr = new StreamReader( fajl )) { while( sr.peek()!= -1 ) { Console.WriteLine( sr.readline() ); 2014 Bánsághi Anna 28 of 35

Adjuk meg egy fájlban tárolt egész számok összegét. Feltételezzük, hogy a fájl helyes adatokat tartalmaz. Az Összegzés programozási tételhez használjuk az előreolvasási technikát public static void Main() { int osszeg = 0; using( StreamReader sr = new StreamReader( "szamok.txt" )) { while( sr.peek()!= -1 ) { osszeg += int.parse( sr.readline() ); Console.WriteLine( osszeg ); 2014 Bánsághi Anna 29 of 35

Kérjünk be egy fájl nevet, és írjuk ki a sorai hosszát public static void Main() { Console.WriteLine( "Adja meg a fájl nevét:" ); string fajl = Console.ReadLine(); if(! File.Exists( fajl )) { Console.WriteLine( "A fájl nem létezik" ); else { using( StreamReader sr = new StreamReader( fajl )) { while( sr.peek()!= -1 ) { Console.WriteLine( sr.readline().length ); 2014 Bánsághi Anna 30 of 35

Olvassunk a billentyűzetről egy sort, és írjuk ki egy szöveges fájlba Ha létezik a fájl, írjuk felül. public static void Main() { Console.Write( "Írjon ide valamit: " ); string szoveg = Console.ReadLine(); using( StreamWriter sw = new StreamWriter( "ujfajl.txt" )) { sw.writeline( szoveg ); 2014 Bánsághi Anna 31 of 35

Adott egy egész számokat tartalmazó fájl. Paritás szerint válogassuk szét egy fájl elemeit két új fájlba. Használjuk a Szétválogatás programozási tételt public static void Main() { using( StreamWriter sw1 = new StreamWriter( Path.Combine( dir, "paros.txt" )), sw2 = new StreamWriter( Path.Combine( dir, "prtln.txt" ))) { using( StreamReader sr = new StreamReader( "szamok.txt" )) { while( sr.peek()!= -1 ) { int szam = int.parse( sr.readline() ); if( szam % 2 == 0 ) { sw1.writeline( szam ); else { sw2.writeline( szam ); 2014 Bánsághi Anna 32 of 35

ELSŐ BEADANDÓ FELADATCSOPORT C# Fundamentals for Absolute Beginners channel9.msdn.com/series/c-fundamentals-for-absolute-beginners Mod 03: Hello World Mod 04: Release könyvtár Mod 05 Mod 06: változók Mod 07: elágazás Mod 08: miért ad szintaktikai hibát az "x + y;" sor? Mod 09: számlálásos ciklus Mod 10: tömbök Mod 12: fájlok 2014 Bánsághi Anna 33 of 35

PROGRAMOZÁSI TÉTELEK KOMBINÁCIÓJA Készítsen egy 10 sorból álló adatfájlt, soronként egy-egy természetes számmal. Számítsa majd írja ki a konzolra az átlagnál nagyobb elemek számát. Segítség: három részből fog állni a program. Az elsőben használatba vesszük a fájlt az Összegzési tételt alkalmazva, a másodikban kiszámítjuk az átlagot, a harmadikban újra használatba vesszük a fájlt a Számlálás tételét alkalmazva. 2014 Bánsághi Anna 34 of 35

BEADÁS FORMAI KÖVETELMÉNYEI Hallgató_Neve_1.zip mod_03.cs Release könyvtár mod_06.cs mod_07.cs mod_08.txt mod_09.cs mod_10.cs mod_12.cs Program.cs 2014 Bánsághi Anna 35 of 35