Programozás Minta programterv a 2. házi feladathoz 1.

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

Programozás Minta programterv a 1. házi feladathoz 1.

OAF Gregorics Tibor: Minta dokumentáció a 3. házi feladathoz 1.

Objektum elvű alkalmazások fejlesztése Programozási tételek újrafelhasználása 1.

OAF Gregorics Tibor: Minta dokumentáció a 4. házi feladathoz 1. Feladat. Megoldás

Szekvenciális inputfájl felsorolása

Objektum elvű alkalmazások fejlesztése Programozási tételek újrafelhasználása 1. Készítette: Gregorics Tibor

OEP Gregorics Tibor: Minta dokumentáció a 3. házi feladathoz 1. Feladat. Elemzés 1

EAF II Feladat dokumentáció IV. feladat 4. házi feladathoz

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

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

Programozási tételek újrafelhasználható osztálysablon könyvtára

PROGRAMOZÁS tantárgy. Gregorics Tibor egyetemi docens ELTE Informatikai Kar

Objektum elvű alkalmazások fejlesztése. Verem típus osztály-sablonja

Programozási tételek újrafelhasználása

INFORMATIKAI ALAPISMERETEK

Objektum elvű alkalmazások fejlesztése Kifejezés lengyel formára hozása és kiértékelése

Gregorics Tibor Tanácsok modularizált programok készítéséhez 1

Programozás II gyakorlat. 4. Öröklődés

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

4. Öröklődés. Programozás II

Programozási alapismeretek beadandó feladat: ProgAlap beadandó feladatok téma 99. feladat 1

Programozási tételek. Dr. Iványi Péter

Programozási feladatok megoldása visszavezetéssel egy osztály-sablon könyvtárra támaszkodva 1

STL gyakorlat C++ Izsó Tamás május 9. Izsó Tamás STL gyakorlat/ 1

ELEMI PROGRAMOZÁSI TÉTELEK

Tartalomjegyzék. Általános Információ! 2. Felhasználói dokumentáció! 3. Feladat! 3. Környezet! 3. Használat! 3. Bemenet! 3. Példa!

Bevezetés a programozásba Előadás: Objektumszintű és osztályszintű elemek, hibakezelés

A feladat lényege egy felhasználói típusnak a zsák típusnak a megvalósítása.

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

INFORMATIKAI ALAPISMERETEK

Statikus adattagok. Statikus adattag inicializálása. Speciális adattagok és tagfüggvények. Általános Informatikai Tanszék

infix kifejezés a+b ab+ +ab postfix kifejezés prefix kifejezés a+b ab+ +ab a+b ab+ +ab Készítette: Szabóné Nacsa Rozália

Maximum kiválasztás tömbben

Pénzügyi algoritmusok

Feladat. Bemenő adatok. Bemenő adatfájlok elvárt formája. Berezvai Dániel 1. beadandó/4. feladat április 13. Például (bemenet/pelda.

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

Java Programozás 9. Gy: Java alapok. Adatkezelő 5.rész

Alkalmazott modul: Programozás. Programozási tételek, rendezések Giachetta Roberto

Algoritmizálás + kódolás C++ nyelven és Pascalban

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

Alkalmazott modul: Programozás. Programozási tételek, rendezések. Programozási tételek Algoritmusok és programozási tételek

Tervminták II. (Híd, Bejáró, Gyártófüggvény) Halmaz és bejárása Osztály-sablonok

Bevezetés a programozásba Előadás: A const

Programozási alapismeretek :: beadandó feladat. Felhasználói dokumentáció. Molnár Tamás MOTIABT.ELTE

Programozási Nyelvek: C++

Bevezetés a programozásba I.

Programozási nyelvek I. 5. előadás (Gregorics Tibor anyagának felhasználásával)

A C# programozási nyelv alapjai

ISA szimulátor objektum-orientált modell (C++)

Bevezetés a programozásba II. 5. Előadás: Másoló konstruktor, túlterhelés, operátorok

BME MOGI Gépészeti informatika 4.

Pénzügyi algoritmusok

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

C++ Standard Template Library (STL)

Bevezetés a programozásba 2

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.

Apple Swift kurzus 3. gyakorlat

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

3. Osztályok II. Programozás II

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

Programozás II. 2. Dr. Iványi Péter

és az instanceof operátor

Bevezetés a programozásba II. 8. Előadás: Osztályok, objektumok, osztályszintű metódusok

A lista eleme. mutató rész. adat rész. Listaelem létrehozása. Node Deklarálás. Létrehozás. Az elemet nekünk kell bef zni a listába

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán

Osztály és objektum fogalma

Programozási alapismeretek 1. előadás

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

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

A C# PROGRAMOZÁSI NYELV

Programozási nyelvek Java

Programozási nyelvek Java

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

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

Bevezetés az informatikába

Fejlett programozási nyelvek C++ Iterátorok

Programozás II gyakorlat. 8. Operátor túlterhelés

C++ programozási nyelv

mul : S T N 1 ha t S mul(s, t) := 0 egyébként Keresés Ezt az eljárást a publikus m veletek lenti megvalósításánál használjuk.

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

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

Programozási nyelvek Java

Programozás II. 4. Dr. Iványi Péter

Rekurzió. (Horváth Gyula és Szlávi Péter előadásai felhasználásával)

SZÁMÍTÓGÉPES PROBLÉMAMEGOLDÁS

1. Template (sablon) 1.1. Függvénysablon Függvénysablon példányosítás Osztálysablon

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

Nagy Krisztián. Programozás. a modellező informatikus szakirányon

500.AA Megoldo Arisztid 500.A

Algoritmusok Tervezése. 4. Előadás Visual Basic 1. Dr. Bécsi Tamás

Bevezetés a programozásba előadás: Öröklődés

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

1.AA MEGOLDÓ BERCI AA 1.

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

Objektumelvű programozás

Programozási nyelvek Java

Bevezetés a programozásba Előadás: Tagfüggvények, osztály, objektum

Programozás. C++ típusok, operátorok. Fodor Attila

JUnit. JUnit használata. IDE támogatás. Parancssori használat. Teszt készítése. Teszt készítése

Átírás:

Programozás Minta programterv a. házi feladathoz 1. Gregorics Tibor. beadandó/0.feladat 01. január 11. EHACODE.ELTE gt@inf.elte.hu 0.csoport Feladat Egy szöveges állományban bekezdésekre tördelt szöveg található. Egy bekezdés egy vagy több nem üres ból áll. A bekezdéseket üres ok vagy az állomány eleje illetve vége határolja. Gondolatban számozza meg a bekezdéseket és írja ki a konzolra azon bekezdések számait, amelyek minden ának legalább két szavában szerepel a w betű, valamint írja ki az ilyen bekezdésben a w betűt tartalmazó szavak és az összes szó arányát is. (A szövegben egyik szó sincs több ra tördelve.. Specifikáció A feladat állapottere többféleképpen is felírható, A = (f : InFile(K, cout : OutFile(N, R A = (f : InFile(Sor, cout : OutFile(N, R de a megoldás szempontjából legjobb, ha egy olyan feloló objektumra fogalmazzuk meg, amely képes a bekezdések számunkra fontos adatait felolni. A = (t : Enor(Bekezdés, cout : OutFile(N, R Bekezdés = rec(jó:l, sz:n, wdb:n, össz:n Ef =( t = t Uf =( cout e. sz, e. wdb / e össz. e e. jó t ' Absztrakt program összegzés t ~ x ainak felolója +, 0 ~, < > f(e ~ <( e.sz, e.wdb/e.össz > ha e.jó cout:=<>; t.first( t.end( e := t.current( e.jó cout : write(e.sz, e.wdb/e.össz t.next(

Programozás Minta programterv a. házi feladathoz. Feloló enor(bekezdés first(, next(, current(, end( f : InFile(String, : String, st : Státusz akt : Bekezdés, vége : L first( ~ akt.sz:=0; : read; Next( next( ~ ld. külön current( ~ akt end( ~ vége A next( műveletnek az alábbi feladatot kell megoldania: Adott egy okra tördelt szöveges állomány ahonnan már kiolvastuk az első t (ez van a változóban, ha sikeres volt ez a korábbi olvasás, mert különben st=abnorm és on következő bekezdését kell feldolgoznunk. Adott a korábbi bekezdés száma (akt.sz. Először átolvassuk a bekezdés előtti üres okat. Ha nem találunk ezek után egy nem üres t, akkor a vége változót igazra állítjuk (nincs több bekezdés. Ha találunk, akkor a vége változót hamisra állítjuk, az akt.sz értékét eggyel növeljük, és az akt többi mezőjét az itt kezdődő bekezdés alapján kitöltjük: megszámoljuk a szavakat, a w betűs szavakat, továbbá vizsgáljuk, hogy minden ban volt-e legalább két w betűs szó. Mindhárom vizsgálathoz onként kell az adott ban megszámolni külön a szavakat és külön a w betűs szavakat. A bekezdés feldolgozása végén vagy a bekezdést követő üres t olvassuk be utoljára (ez kerül a változóba, vagy elértjük az állomány végét (st=abnorm. ahol A Next = (f: infile(string, : String, st Státusz, vége:l, akt:bekezdés Ef Next = ( f=f 1 = 1 st=st 1 akt=akt 1 Uf Next = ( st, select ( st abnorm üres ( 1 1 (vége =(st =norm (vége akt.sz = akt 1.sz+1 üres akt. jó,, f ( wszódb( ( üres akt. össz,, f ( szódb( ( üres akt. wdb,, f ( wszódb( ( szódb ( 1 és wszódb( 1 számlálásai egy szavanként szó szó ' w' szó olvasására épülnek, és egyetlen ciklusba összevonhatók. Összevonható egy ciklusba az utófeltételben vázolt három összegzés is.

Programozás Minta programterv a. házi feladathoz 3. next( akt.sz:=akt.sz+1 akt.jó, akt.wdb, akt.össz:=igaz,0,0 =üres st = norm : read vége:= st=abnorm vége üres st = norm wdb,db:=wszódb(,szódb( akt.jó, akt.wdb, akt.össz:= akt.jó wdb, akt.wdb+wdb, akt.össz+db : read wdb,db:=wszódb(,szódb( wdb,db := 0, 0 szó, : read wdb:=wdb+1 st = norm db:=db+1 w szó szó, : read Implementáció Program váz A program több állományból áll: main.cpp, enor.h, enor.cpp. main.cpp enor.h enor.cpp int main( struct Bekezdes enum Status class Enor Enor( void first( Bekezdes current( bool end( void read( void next(

Programozás Minta programterv a. házi feladathoz 4. Függvények kapcsolódási szerkezete main( Enor( first( next( end( current( read( read( Feloló osztálya class Enor{ private: std::ifstream f; std::stringstream ; Status st; Bekezdes akt; bool vege; void read(; }; public: Enor(const std::string &str; void first( { akt.sz = 0; read(; next(;} void next(; Bekezdes current( const { return akt;} bool end( const { return vege;} A szöveges állomány onként olvasását a getline(f, utasítás végzi, amelyet beágyazunk a Read( metódusba úgy, hogy a t stringstream típusú adatként adja vissza, illetve beállítsa az olvasás st státuszát. A stringstream típusú szavainak olvasása a >> operátorral történik. Üres egy, ha sztringként értelmezve az üres sztring. Egy szóban a w betű keresését a string típus find( függvényével végezzük. A megvalósításban a wszódb( és szódb( függvények nem kerültek önálló alprogramba.

Programozás Minta programterv a. házi feladathoz 5. Tesztelési terv A megoldásban hat helyen alkalmaztunk programozási tételt, amelyek három szintre tagolódnak: bekezdések, ok, szavak szintjeire. A. Bekezdések szintjén összegzés (kiválogatás tesztesetei: 1. Üres állomány.. Csak üres okat tartalmazó állomány. 3. Egyetlen (keresett tulajdonságú bekezdést tartalmazó állomány. 4. Több (keresett tulajdonságú bekezdést tartalmazó állomány. 5. Első bekezdés keresett tulajdonságú, a többi nem. 6. Utolsó bekezdés keresett tulajdonságú, a többi nem. 7. Több keresett tulajdonságú bekezdés B. Egy bekezdéshez tartozó ok szintjén intervallum és három összegzés (összeéselés és két összeadás egybefoglalt tesztesetei: 8. Egyetlen nem üres ú (keresett tulajdonságú bekezdés, előtte és utána üres ok vagy az állomány vége. 9. Több os bekezdésből álló állomány, előtte és utána üres ok vagy az állomány vége. 10. Több os bekezdésből álló állomány, ahol minden ban kettő vagy annál több w -t tartalmazó szó van. 11. Több os bekezdésből álló állomány, ahol csak az első ban nincs kettő vagy annál több w -t tartalmazó szó. 1. Több os bekezdésből álló állomány, ahol csak az utolsó ban nincs kettő vagy annál több w -t tartalmazó szó. 13. Több os bekezdésből álló állomány, ahol csak egy közbülső ban nincs kettő vagy annál több w -t tartalmazó szó. 14. Több os bekezdésből álló állomány, ahol egyik ban sincs kettő vagy annál több w -t tartalmazó szó. C. Egy hoz tartozó szavak szintjén a két összegzés (összegzés és számlálás egybefoglalt tesztesetei: 15. Egy bekezdés egyetlen ában nincs szó. 16. Egy bekezdés egyetlen ában egyetlen szó van. 17. Egy bekezdés egyetlen ában több szó van. 18. Egy bekezdés egyetlen ában nincs w -t tartalmazó szó. 19. Egy bekezdés egyetlen ában csak az első a w -t tartalmazó szó. 0. Egy bekezdés egyetlen ában csak az utolsó a w -t tartalmazó szó. 1. Egy bekezdés egyetlen ában egynél több w -t tartalmazó szó van.. Egy bekezdés egyetlen ában minden szó w -t tartalmaz.