Szerző. Természetesen aktualizálandó adatok.

Hasonló dokumentumok
Szerző Lővei Péter LOPSAAI.ELTE IP-08PAEG/25 Daiki Tennó

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

Dokumentáció az 1. feladatsorhoz (egyszerű, rövidített kivitelben)

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

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

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

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!

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

Maximum kiválasztás tömbben

Programozási alapismeretek 1. előadás

Programozási alapismeretek 2009/2010

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

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

Programozási alapismeretek. 1. előadás. A problémamegoldás lépései. A programkészítés folyamata. Az algoritmus fogalma. Nyelvi szintek.

1. Alapok. Programozás II

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

A feladat címe, rövid emlékeztetje

Géptermi zh-írás forgatókönyve

Programozási alapismeretek 3. előadás

Felhasználói dokumentáció

AZ ADATSZERKEZETES BEADANDÓ FELADAT ÉRTÉKELÉSI SZEMPONTJAI

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

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.

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

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

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

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

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

DOKUMENTÁCIÓ KÉSZÍTETTE: Naszári László I. évf. levelező Informatika tanári szak 2003.

Programozás I. gyakorlat

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

A C++ Standard Template Library rövid összefoglalás

Programozás alapjai gyakorlat. 2. gyakorlat C alapok

Image Processor BarCode Service. Felhasználói és üzemeltetői kézikönyv

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

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

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)

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

ÉVFOLYAM ZH PRÓBA. Feladat (projekt- és exe-név: miki; tömörített fájl neve: EHA-kód)

INFORMATIKA tétel 2017

AZ ADATSZERKEZETES BEADANDÓ FELADAT ÉRTÉKELÉSI SZEMPONTJAI

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

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

Programozási tételek és C++

Algoritmizálás és adatmodellezés 2. előadás

INFORMATIKA tétel 2019

Bevezetés a programozásba I.

6. gyakorlat Egydimenziós numerikus tömbök kezelése, tömbi algoritmusok

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

Bevezetés a programozásba. 8. Előadás: Függvények 2.

ELEMI PROGRAMOZÁSI TÉTELEK

Előfeltétel: legalább elégséges jegy Diszkrét matematika II. (GEMAK122B) tárgyból

C programozás. 6 óra Függvények, függvényszerű makrók, globális és

Programtervezés. Dr. Iványi Péter

Easton420. Automata Telefon hangrögzítő. V 6.0 Telepítése Windows XP rendszerre

Unit Teszt. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Unit Teszt / 22

OpenCL alapú eszközök verifikációja és validációja a gyakorlatban

Programozás alapjai 2.Gy: A C nyelv alapjai P R O

INFORMATIKA tétel 2018

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

Bevezetés a programozásba. 11. Előadás: Esettanulmány

Függvények int, long 1. Adott a mellékelt f alprogram.

Bevezetés a programozásba I.

Felvételi vizsga mintatételsor Informatika írásbeli vizsga

1. Bevezetés szeptember 9. BME Fizika Intézet. Szám. szim. labor ea. Tőke Csaba. Tudnivalók. feladat. Tematika. Moodle Házi feladatok

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

Egy Erlang refaktor lépés: Függvényparaméterek összevonása tuple-ba

Programozás alapjai C nyelv 8. gyakorlat. Mutatók és címek (ism.) Indirekció (ism)

Mutatók és címek (ism.) Programozás alapjai C nyelv 8. gyakorlat. Indirekció (ism) Néhány dolog érthetőbb (ism.) Változók a memóriában

Alprogramok, paraméterátadás

Tamás Ferenc: C++ (az emelt szintű érettségin) Előszó

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

ClicXoft programtálca Leírás

Szkeleton beadása. 100 Generalis faliora. Csapattagok: Konzulens: Szabó András március 29.

Operációs rendszerek gyak.

1. numere.txt n (1 n 10000) n növekvő kilenc a) Pascal/C++ Például: NUMERE.TXT

Összetett programozási tételek Rendezések Keresések PT egymásra építése. 10. előadás. Programozás-elmélet. Programozás-elmélet 10.

1 Rendszerkövetelmények

Algoritmizálás, adatmodellezés 1. előadás

INFORMATIKAI ALAPISMERETEK

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

Bevezetés a programozásba. 6. Előadás: C++ bevezető

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

ELTE, Informatikai Kar december 12.

3Sz-s Kft. Tisztelt Felhasználó!

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

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

500. AA Megoldó Alfréd AA 500.

Emlékeztető: a fordítás lépései. Szimbólumtábla-kezelés. Információáramlás. Információáramlás. Információáramlás.

Mechatronika és mikroszámítógépek 2017/2018 I. félév. Bevezetés a C nyelvbe

INFORMATIKAI ALAPISMERETEK

Bevezetés a Programozásba II 4. előadás. Adattípusok hordozhatósága

Digitális aláíró program telepítése az ERA rendszeren

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

Bevezetés a programozásba I.

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

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?

3. Osztályok II. Programozás II

SystemDiagnostics. Magyar

Bevezetés a programozásba. 9. Előadás: Rekordok

Átírás:

Szerző Név: Szabó Emerencia ETR-azonosító: SZEKAAT.ELTE Drótposta-cím: sze@elte.hu Kurzuskód: IP-08PAEG/77 Gyakorlatvezető neve: Kiss-József Alfréd Feladatsorszám: 18 Természetesen aktualizálandó adatok. 1

Tartalom Szerző... 1 Tartalom... 2 Felhasználói dokumentáció... 1 Feladat... 1 Környezet... 1 Használat... 1 A program indítása... 1 A program bemenete... 2 Egy lehetséges párbeszéd... 2 A program eredménye... 3 Egy lehetséges kimenet... 3 Hibalehetőségek... 3 Egy lehetséges párbeszéd... 3 Fejlesztői dokumentáció... 1 Feladat... 1 Specifikáció... 1 Környezet... 1 Forráskód... 1 Megoldás... 2 Fontos típusok, változók... 2 Programfelépítés... 2 Algoritmus... 2 C++ kód... 2 Tesztelés... 4 Érvényes tesztesetek... 4 Érvénytelen tesztesetek... 4 Fejlesztési lehetőségek... 4 2

Felhasználói dokumentáció Feladat Adjuk meg két N elemű vektor skalárszorzatát! Környezet IBM PC, exe futtatására alkalmas operációs rendszer (pl. Windows XP). Nem igényel egeret. Használat A program indítása A program SZEKAAT_18 1 \bin\release\skalar.exe néven található a telepítő anyagban. A Start menü Futtatás menüpontjában a fenti fájl kiválasztásával (beírásával) indítható. A skalar.exe program indítása. 1 Az ETR-azonosítója és a feladat sorszámából képzett könyvtárnév 1

Felhasználói dokumentáció Fájlos input/output esetén az előbbi könyvtárból a fentihez hasonló módon a fájlparaméterek megadásával így indítható: SKALAR.EXE >eredmeny.ki <bemenet.be vagy SKALAR.EXE >>eredmeny.ki <bemenet.be Megjegyzések: 1. Ha az output fájlparamétert elhagyjuk, akkor az eredmény a képernyőn fog megjelenni. 2. A bementi tesztadat-fájlok az EXE mellett találhatók. 3. Az utóbbi híváskor minden indítás eredménye az eredmeny.ki fájlba, folytatólag kerül beírásra, míg az első esetben a beleírás előtt a fájl tartalma törlődik. A program bemenete A program először megkérdezi a vektorok elemszámát, majd egyesével az első vektor elemeit, utána ugyanezt elvégezi a második vektorra is. A mennyiben az adatokat fájlból olvastatjuk a programmal, akkor a fájl szerkezete a fentiekkel egyezően az alábbi: Sorindex Adat Magyarázat 1. N A vektorok elemszáma 2. X 1 Az első (X) vektor 1. elemének értéke i+1. X i Az első (X) vektor i. elemének értéke N+1. X N Az első (X) vektor N. elemének értéke N+2. Y 1 A másik (Y) vektor 1. elemének értéke N+i+1. Y i A másik (Y) vektor i. elemének értéke 2*N+1. Y N A másik (Y) vektor N. elemének értéke Egy lehetséges párbeszéd Példa a skalar.exe klaviatúra-inputjára. 2

Felhasználói dokumentáció A program eredménye A program visszaírja az általunk beírt két vektor elemeit, majd megadja a skalárszorzatukat. (A kimeneti fájlban is az alábbi szerkezetben jelenik meg az eredmény.) Egy lehetséges kimenet Hibalehetőségek Példa a skalar.exe képernyı-outputjára. A vektorok elemszáma nem lehet több 100-nál. Ha a felhasználó ennél többet, vagy 0-nál kevesebbet ad meg, akkor a program az elemszámot újra kérdezi. (Figyelem, ezért is a fájlos input különleges gondosságot igényel, hiszen ekkor teljességgel hiába való a program újrakérdezése: az adatok elcsúszása a program rendellenes viselkedéséhez vezet.) Egy lehetséges párbeszéd Példa a skalar.exe hibás klaviatúra-inputjára. 3

Fejlesztői dokumentáció Feladat Adjuk meg két N elemű vektor skalárszorzatát! Specifikáció Bemenet: N:Egész [a két vektor elemszáma] X,Y:Tömb[1..N:Valós] [valós számokat tartalmazó vektorok] Kimenet: XY:Valós [a két vektor skalárszorzata] Előfeltétel: 0 N 100 Utófeltétel: XY=<X,Y> Definíció: <.,.>:Valós N Valós N Valós Környezet <x,y>:= N i= 1 X[i] Y[i] IBM PC, exe futtatására alkalmas operációs rendszer (pl. Windows XP). C++ fordítóprogram (pl. gcc), Code::Blocks fejlesztői környezet. Forráskód A teljes fejlesztői anyag a SZEKAAT_18 2 nevű könyvtárban található meg. A fejlesztés során használt könyvtár-struktúra (SZEKAAT_18-relatív): \bin\debug\skalar.exe nyomkövethető állapotú futtatható kód \bin\release\skalar.exe végleges futtatható kód \1a.be 1. tesztadat fájl 3 \1b.be 2. tesztadat fájl \4.be 3. tesztadat fájl \100.be 4. tesztadat fájl \obj\debug\skalar.o nyomkövethető állapotú, féliglefordított (object-) kód \obj\release\skalar.o végleges, féliglefordított (object-) kód \skalar.cbp projektfájl, \skalar.cpp C++ forrás. 2 Az ETR-azonosítóból és a feladat sorszámából képzett könyvtárnév. 3 L. még a tesztelés fejezetben. 1

Fejlesztői dokumentáció Megoldás Fontos típusok, változók 4 Konstans MaxN:Egész(100) [a vektorok maximális mérete] Változó N:Egész X,Y:Tömb[1..100:Valós] XY:Valós Programfelépítés A program által használt modulok (és helye) 5 : skalar skalar.cpp iostream a C++ rendszer része. A skalar.cpp függvénystruktúrája az alábbi: main beolvasas skalarszorzat kiírás billentyurevar bolvasasvektor A skalar.cpp felépülése függvényekbıl. Algoritmus Az algoritmizálás szempontjából egyetlen alprogram mondható érdekesnek: a skalarszorzat függvény. Ennek algoritmusa az alábbi: C++ kód 6 skalarszorzat(n,x,y): XY:=0 //Szerzı: Szabó Emerencia //ETR-azonosító: SZEKAAT.ELTE //Drótposta-cím: sze@elte.hu // i:=1,,n XY:=XY+X[i]*Y[i] 4 Kifejező (konstans és) változóazonosítókat kell használni! 5 A főmodulról, valamint az #include-dal hozzáillesztett header-fájlokról kell itt megemlékezni. 6 A kódnál figyeljenek arra, hogy 1. alkalmas függvényekre bontsák a programot, 2. ezek sorokra jól tagoltak legyenek, 3. megjegyzéseket tartalmazzanak, 4. használjanak paramétereket, lokális változókat, 5. képernyő kezelése (törlés, szövegek, várakozás) barátságos legyen, az adatbevitelt legalább szemantikusan ellenőrizze; 6. a kód laphatáron logikus helyen törjön. 2

Fejlesztői dokumentáció //Feladat: // vektorok skalárszorzata, 18. feladat //Specifikáció: // Be: N:Egész [a két vektor elemszáma] // X,Y:Tömb[1..N:Valós] [valós számokat tartalmazó vektorok] // Ki: XY:Valós [a két vektor skalárszorzata] // Ef: 0<=N<=100 // Uf: XY=<X,Y> // Def: <.,.> : Valós^N x Valós^N -> Valós // <X,Y> := SZUM(i=1..N) X[i]*Y[i] #include <iostream> using namespace std; const int maxn=100; //tömbök maximális mérete void beolvasas(int &n,float x[],float y[]); void beolvasasvektor(int n,float v[]); float skalarszorzat(int n,const float x[],const float y[]); void kiiras(int n,const float x[],const float y[],float xy); void billentyurevar(); int main(){ //bemenet: int n; //a vektorok mérete float x[maxn],y[maxn]; //az x,y vektor //kimenet: float xy; //a skalárszorzat cout<<" Skalarszorzat-szamitas"<<endl<<endl; beolvasas(n,x,y); //adatbeolvasás xy=skalarszorzat(n,x,y); //vektorok skalárszorzata kiiras(n,x,y,xy); //vektorok és a skalárszorzat kiirása billentyurevar(); return 0; void beolvasasvektor(int n,float v[]){ //v tömb n db elemének a beolvasása for (int i=0;i<n;++i){ cout<<i+1<<". elem: "; cin>>v[i];//todo ügyelnünk kellene a szintaktikus hibákra cout<<endl; void beolvasas(int &n,float x[],float y[]){ //tömbök méretének és elemeinek ellenırzött beolvasása do { cout<<"hany elemuek a vektorok? [0.."<<maxn<<"] "; cin>>n;//todo ügyelnünk kellene a szintaktikus hibákra while ((n>maxn) (n<0) ); cout<<endl; cout<<"egyik vektor:"<<endl<<endl;; beolvasasvektor(n,x); cout<<"masik vektor:"<<endl<<endl;; beolvasasvektor(n,y); 3

Fejlesztői dokumentáció float skalarszorzat(int n,const float x[],const float y[]){ //vektorok skaláris szorzatának megadása //sorozatszámítási tétel float xy=0; for (int i=0;i<n;++i){ xy=xy+x[i]*y[i]; return xy; void kiiras(int n,const float x[],const float y[],float xy){ //vektorok és skalárszorzatuk kiírása cout<<"\negyik vektor: "<<endl<<endl; for (int i=0;i<n;++i){ cout<<x[i]<<" "; cout<<endl; cout<<"\nmasik vektor: "<<endl<<endl;; for (int i=0;i<n;++i){ cout<<y[i]<<" "; cout<<endl<<endl; cout<<"skalarszorzatuk: "<<xy<<endl<<endl; void billentyurevar() { system("pause");//figyelem: operációs rendszer függı megoldás! Tesztelés Az alábbi tesztesetek bementi adatait tartalmazó fájlok a végleges exe mellett találhatók.. Érvényes tesztesetek Bemenet Kimenet Bemeneti fájl N=0 XY=0 N=1, X=(1), Y=(1) XY=1 1a.be N=1, X=(4), Y=(2.5) XY=10 1b.be N=4, X=(1,2,3,4), Y=(1,2,3,4) XY=30 4.be N=100, X=(1,2,...,100), Y=(1,1,...,1) 7 XY=1275 100.be Érvénytelen tesztesetek N= 1 Bemenet Kimenet hibaüzenet N=101 hibaüzenet Fejlesztési lehetőségek A beolvasás szigorúbb kontroljának megoldása. 7 Ezt a bemeneti sorozatot tartalmazza a mellékelt 100.be nevű fájl. 4

Fejlesztői dokumentáció A vektorok elemei igény esetén nagyobb pontosságú valós számokra kicserélhetők. 5