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

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

Minta programterv a 1. házi feladathoz

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

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

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

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

Maximum kiválasztás tömbben

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

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

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

1. Alapok. Programozás II

INFORMATIKA javítókulcs 2016

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

Programozás C nyelven 5. ELŐADÁS. Sapientia EMTE

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

BME MOGI Gépészeti informatika 4.

Informatika terméktervezőknek

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

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

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

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

BME MOGI Gépészeti informatika 5.

Programozási nyelvek Java

file./script.sh > Bourne-Again shell script text executable << tartalmat néz >>

9. előadás. Programozás-elmélet. Programozási tételek Elemi prog. Sorozatszámítás Eldöntés Kiválasztás Lin. keresés Megszámolás Maximum.

Programozás I gyakorlat

1. Alapok. #!/bin/bash

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

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

A függvény kód szekvenciáját kapcsos zárójelek közt definiáljuk, a { } -ek közti részt a Bash héj kód blokknak (code block) nevezi.

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

Algoritmizálás és adatmodellezés tanítása beadandó feladat: Algtan1 tanári beadandó /99 1

ELEMI PROGRAMOZÁSI TÉTELEK

INFORMATIKAI ALAPISMERETEK

A C# programozási nyelv alapjai

Occam 1. Készítette: Szabó Éva

Megjegyzés: A programnak tartalmaznia kell legalább egy felhasználói alprogramot. Példa:

INFORMATIKAI ALAPISMERETEK

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

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

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

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

Bevezetés a programozásba I.

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

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

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

Programozási nyelvek (ADA)

Mintavételes szabályozás mikrovezérlő segítségével

Szkriptnyelvek. 1. UNIX shell

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

Objektum elvu alkalmaza sok fejleszte se

Bevezetés a programozásba I.

Programozási alapismeretek 1. előadás

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

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

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

Programozási nyelvek Java

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

Bevezetés az informatikába

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

Programozás I gyakorlat

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

Mérnöki programozás 7. Szerkesztette: dr. Vass Péter Tamás

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

Alapok. tisztán funkcionális nyelv, minden függvény (a konstansok is) nincsenek hagyományos változók, az első értékadás után nem módosíthatók

2018, Funkcionális programozás

Operációs rendszerek gyak.

A C programozási nyelv I. Bevezetés

Webprogramozás szakkör

Megoldások a mintavizsga kérdések a VIMIAC04 tárgy ellenőrzési technikák részéhez kapcsolódóan (2017. május)

Felvételi tematika INFORMATIKA

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

Programozás I. zárthelyi dolgozat

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

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

Operációs rendszerek. 11. gyakorlat. AWK - szintaxis, vezérlési szerkezetek UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Gregorics Tibor Modularizált programok C++ nyelvi elemei 1

Bevezetés a programozásba I.

Programozási nyelvek II. JAVA

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

Bevezetés a C++ programozásba

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

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

AWK programozás Bevezetés

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

Algoritmizálás és adatmodellezés tanítása beadandó feladat: Algtan1 tanári beadandó /99 1

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.

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

Programozási nyelvek Python

Írjon olyan programot a standard könyvtár alkalmazásával, amely konzolról megadott valós adatokból meghatározza és kiírja a minimális értékűt!

INFORMATIKA tétel 2019

A C programozási nyelv I. Bevezetés

Rekurzió. Dr. Iványi Péter

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

Programozás I. 3. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Archivált tanulmányi adatok importálása. Felhasználói dokumentáció verzió 2.0.

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

10. gyakorlat Struktúrák, uniók, típusdefiníciók

OOP: Java 1.Gy: Java alapok

Átírás:

Programozás Minta programterv a 1. házi feladathoz 1. Gregorics Tibor 1. beadandó/0.feladat 2008. december 6. EHACODE.ELTE gt@inf.elte.hu 0.csoport Feladat Egy osztályba n diák jár, akik m darab tantárgyat tanulnak. Ismerjük a félév végi osztályzataikat. Igaz-e, hogy minden diáknak van legalább két ötöse? Megoldási terv A = (napló: N n m, l: L) Ef =( napló = napló ) Uf =( Ef (l = i [1..n] : ötösdb(i) 2 ) ) = ( Ef ( l search ( ötösdb( i) 2) ) ) m ahol ötösdb(i) : [1..m] N és ötösdb(i) = 1 j=1 napló[i,j]=5 n i 1 l,i:=true,1 l i n l:= ötösdb(i) 2 i:= i+1 s:= ötösdb(i) s:=0 j= 1..m napló[i,j]=5 s:=s+1 SKIP Alternatív megoldási terv (rekurzív függvénnyel) Uf =( Ef (l = i [1..n] : jótanuló(i)) ) = ( Ef ( l search ( jótanuló ( i)) ) ) ahol jótanuló(i) = j [1..m] : ötösdb_i(j) = 2 ahol ötösdb_i : [0..m] N ötösdb_i(0) = 0 1 ha napló[ i, j] 5 ötösdb_i(j) = ötösdb_i(j-1) + 0 ha napló[ i, j] 5 n i 1 (j 1) l,i:=true,1 l i n l:= jótanuló(i) i:= i+1 l:= jótanuló(i) l,j,s:= false,1,0 l j m napló[i,j]=5 s:=s+1 SKIP l:= s=2 j:= j+1

Programozás Minta programterv a 1. házi feladathoz 2. Implementáció Program váz A program több állományból áll. A read csomagban (read.h, read.cpp) a ReadInt(), ReadNat(), és a all() függvényeket találjuk, a többi függvény a naplo.cpp állományban van. Függvények kapcsolódási szerkezete main() ReadInt() egykettoharom() ReadNat() all() Neveket_olvas() Jegyeket_olvas() ReadInt() Jegy() Fájlból_olvas() Mindenkinek_ket_otos() Jotanulo() Bemenő adatok formája Az adatokat be lehet olvasni egy szöveges állományból vagy meg lehet adni közvetlenül. Ha a programot parancssorból indítjuk úgy, hogy paraméterként megadjuk a bemenő adatokat tartalmazó szöveges állomány nevét, akkor innen olvassa be a program az adatokat. Ha nem adunk meg a parancssorban állomány nevet vagy nem parancssorból indul a program, akkor az először megkérdezi az adatbevitel módját, majd a szöveges állományból való olvasást választva bekéri az állomány nevét. A közvetlen adatbevitelt a program párbeszédüzemmódban irányítja, és azt megfelelő adat-ellenőrzésekkel vizsgálja. A szöveges állomány formája kötött, arról feltesszük, hogy helyesen van kitöltve, ezért ezt külön nem ellenőrizzük. Az első sor a tanulók és a tantárgyak számát tartalmazza, szóközökkel vagy tabulátor jelekkel elválasztva. Ezt követően olvashatók a tanulók nevei soronként, majd a tantárgyak nevei ugyancsak soronként. Végül az osztályzatok következnek a tanulók sorrendjében úgy, hogy minden tanuló jegyei egy sorban szóközökkel vagy tabulátor jelekkel legyenek elválasztva a tantárgyak megadott sorrendjében. Minden sor végén (az utolsó sor végén is) sorvége jel legyen.

Programozás Minta programterv a 1. házi feladathoz 3. Példa: 2 3 Kerek Berci Nagy János Matek Föci Orosz 4 3 2 5 4 4 A program függvényei main() Feladat: Bemenő adatok: Kimenő adatok: Tevékenység: Definíció: A főprogram gondoskodik a beolvasás, a kiértékelés, kiíratás részek aktivizálásáról. vector<vector<int> > naplo - osztályzatokat tartalmazó mátrix vector<string> tanulo - tanulók neveit tartalmazó tömb vector<string> targy - tárgyak neveit tartalmazó tömb igen/nem válasz (visszatérési-érték) Eldönti, hogy mi legyen a beolvasás forrása: parancssorban megadott szöveges állomány neve (ez az alapértelmezett, ha megadtuk) vagy menüből választhatunk a billentyűzet illetve szöveges állomány között. Feltölti a bemenő változókat: billentyűzetről beolvassa a tanulók számát, majd a neveiket, ugyanazt teszi a tantárgyakkal, és beolvassa az egyes osztályzatokat. Ezután meghívja a feladatot megoldó mindenkinek_ket_otos() függvényt. Ennek eredményétől függően pozitív vagy negatív választ ír a standard kimenetre. helye naplo.cpp Mindenkinek_ket_otos() Feladat: Megvizsgálja, hogy mindenkinek van-e legalább két ötöse. Bemenő adatok: vector<vector<int> > naplo - osztályzatokat tartalmazó mátrix Kimenő adatok: bool l - válasz: visszatérési érték Tevékenység: Optimista lineáris keresés: eldönti, hogy a mátrix (osztályzási napló) minden sorának (tanulójának) van-e legalább két ötöse. Ehhez minden sorra meghívja a Jotanulo() függvényt. bool Mindenkinek_ket_otos(vector<vector<<int> > v); Jotanulo() Feladat: Megadja van-e egy tanulónak legalább két ötöse. Bemenő adatok: vector<int> v - aktuális tanuló osztályzatai Kimenő adatok: bool l - van-e legalább két ötös: visszatérési-érték Tevékenység: Keresi az első olyan számot, amelyik már a második ötös. bool Jotanulo(vector<int> v);

Programozás Minta programterv a 1. házi feladathoz 4. Neveket_olvas() Feladat: Nevekkel tölt fel egy tömböt. Bemenő adatok: int n - nevek száma string msg - kiírandó üzenet Kimenő adatok: vector<string> v - neveket tartalmazó tömb Tevékenység: Megfelelő méretűre (n) állítja be a tömböt, majd feltölti az értékeit sztringekkel. void Neveket_olvas(int n,string msg,vector<string> &v); Jegyeket_olvas() Feladat: 1 és 5 közötti számokkal tölt fel egy mátrixot. Bemenő adatok: vector<string> tanulo - tanulók neveit tartalmazó tömb vector<string> targy - tárgyak neveit tartalmazó tömb Kimenő adatok: vector<vector<int> > naplo - osztályzatokat tartalmazó mátrix Tevékenység: Megfelelő méretűre (tanulo.size targy.size) állítja be a mátrixot, majd feltölti az értékeit 1 és 5 közötti számokkal úgy, hogy rendre jelzi, hogy ezek a számok melyik tanuló melyik tantárgyára kapott osztályzatok. void Jegyeket_olvas(vector<string> tanulo, vector<string> targy, vector<vector<int> > &naplo); Fajlbol_olvas() Feladat: Tanuló és tantárgy neveket olvas egy szöveges állományból, majd ugyanonnan 1 és 5 közötti számokkal feltölti a naplót. Bemenő adatok: string fajlnev - inputfájl neve Kimenő adatok: vector<string> tanulo - tanulok neveit tartalmazó tömb vector<string> targy - tárgyak neveit tartalmazó tömb vector<vector<int> > naplo - osztályzatokat tartalmazó mátrix Tevékenység: Megfelelő méretűre (n és m) állítja be a tanulo és a targy tömböt, majd feltölti az értékeit sztringekkel. A tanuló neve tartalmazhat szóközt is. Megfelelő méretűre (n m) állítja be a naplo mátrixot, majd feltölti az értékeit 1 és 5 közötti számokkal. A beolvasott adatok a konzolablakban is megjelennek.. void Fajlbol_olvas(const string &fajlnev vector<string> &tanulo, vector<string> &targy, vector<vector<int> > &naplo);

Programozás Minta programterv a 1. házi feladathoz 5. ReadNat() Feladat: Megadott feltételt kielégítő természetes számot olvas be. Bemenő adatok: string msg - kiírandó üzenet string errormsg - kiírandó hibaüzenet Kimenő adatok: int n - beolvasott természetes szám: visszatérési érték Tevékenység: Billentyűzetről olvas be egy a cond() feltételnek megfelelő természetes számot. A cond()feltétel alapértelmezés szerint mindent elfogad, azaz bool c(int) { return true;} Definíció: helye read.cpp int ReadNat(string msg, string errormsg, bool cond(int) = c); ReadInt() Feladat: Megadott feltételt kielégítő egész számot olvas be. Bemenő adatok: string msg - kiírandó üzenet string errormsg - kiírandó hibaüzenet Kimenő adatok: int n - beolvasott egész szám: visszatérési érték Tevékenység: Billentyűzetről olvas be egy a cond() feltételnek megfelelő egész számot. A cond() feltétel alapértelmezés szerint mindent elfogad, azaz bool c(int) { return true;} Definíció: helye read.cpp int ReadInt(string msg, string errormsg, bool cond(int) = c); Jegy() Feladat: Eldönti egy egész számról, hogy osztályzat-e. Bemenő adatok: int n - egész szám Kimenő adatok: bool l - vizsgálat eredménye: visszatérési érték Tevékenység: Eldönti egy egész számról, hogy 1 és 5 közé esik-e. bool Jegy(int n); egykettoharom() Feladat: Eldönti egy egész számról, hogy 1, 2 vagy 3 értékű-e. Bemenő adatok: int s - egész szám Kimenő adatok: bool l - vizsgálat eredménye: visszatérési érték Tevékenység: Eldönti egy egész számról, hogy 1, 2 vagy 3 értékű-e. bool egykettoharom(int s);

Programozás Minta programterv a 1. házi feladathoz 6. Tesztelési terv Tesztesetek a feladat specifikációja alapján (fekete doboz tesztelés) 1. Üres napló: nincs tanuló (válasz: igaz) (t11.txt) vagy nincs tantárgy (válasz: hamis) (t12.txt), illetve egyik sincs (válasz: igaz) (t10.txt) esetei. 2. Egy tanuló, egy tantárgy esete. (adat: 5 válasz: hamis) (t2.txt) 3. Több tanuló, több tantárgy: mindenkinek van legalább két ötöse. (adat: 2 3 [ 5, 3, 5, 5, 5, 5] válasz: igaz) (t3.txt) 4. Több tanuló, több tantárgy: csak az első tanulónak nincs két ötöse. (adat: 3 2 [ 5, 3, 5, 5, 5, 5] válasz: hamis) (t4.txt) 5. Több tanuló, több tantárgy: csak az utolsó tanulónak nincs két ötöse. (adat: 3 2 [ 5, 5, 5, 5, 1, 5] válasz: hamis) (t5.txt) 6. Több tanuló, több tantárgy: senkinek nincs két ötöse. (adat: 3 2 [ 5, 3, 5, 3, 1, 5] válasz: hamis) (t6.txt) Tesztesetek a megoldó kód alapján (fehér doboz tesztelés) 1. A beolvasást végző függvények tesztelése: Menü választás tesztelése (1, 2, 3, más) Beolvasás mindhárom módozatának tesztelése. Parancssorból indítás fájlnévvel és anélkül. Nem létező fájlnév megadása. Hibás adatok a billentyűzetről (negatív tanuló vagy tantárgy szám, hibás osztályzat); 2. A Mindekinek_ket_otos() függvény tesztelése: igenlő válasz esete több tanulónál (ciklus feltételnél való kilépés vagy be se lépés esetei); (adat: 3 2 [5, 5, 5, 5, 5, 5] válasz: igaz) (t7.txt) (adat: 0 2 [] válasz: igaz) (t11.txt) nemleges válasz, amely az első tanulónál jelentkezik (kilépés az első menetben a break utasításnál); (adat: 3 2 [ 5, 3, 5, 3, 1, 5] válasz: hamis) (t6.txt) nemleges válasz, amely az utolsó tanulónál jelentkezik (kilépés több menet után a break utasításnál); (adat: 3 2 [ 5, 5, 5, 5, 1, 5] válasz: hamis) (t5.txt) elágazás feltétel tesztelése (kisebb, épp egyenlő, nagyobb, mint 2 esetei). (adat: 3 2 [ 5, 5, 5, 5, 1, 5] válasz: hamis) (t5.txt) 3. A Jotanulo() függvény tesztelése: olyan adatsorra, amikor egyszer sem lép a ciklusba a vezérlés; (adat: 3 0 [] válasz: hamis) olyan adatsorra, amikor végig megy az intervallumon a keresés; (adat: 3 1 [5, 3, 1] válasz: hamis) olyan adatsorra, amikor háromszor lép a ciklusba a vezérlés; (adat: 3 2 [5, 2, 5, 3, 1, 1] válasz: hamis)