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



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

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

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)

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

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

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

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

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!

INFORMATIKAI ALAPISMERETEK

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

Programozási alapismeretek 1. előadás

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

INFORMATIKAI ALAPISMERETEK

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

Az első fájlos program

Programozás I. gyakorlat

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

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

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.

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.

INFORMATIKAI ALAPISMERETEK

INFORMATIKAI ALAPISMERETEK

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)

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

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

A 2014/2015 tanévi Országos Középiskolai Tanulmányi Verseny döntő forduló javítási-értékelési útmutató. INFORMATIKA II. (programozás) kategória

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

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

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

1. Alapok. #!/bin/bash

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

Maximum kiválasztás tömbben

INFORMATIKAI ALAPISMERETEK

Operációs rendszerek. 3. gyakorlat. Jogosultságkezelés, linkelés, csővezeték UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

ServiceTray program Leírás

Oktatási Hivatal. A 2014/2015 tanévi Országos Középiskolai Tanulmányi Verseny döntő fordulójának feladatai. II. (programozás) kategória

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

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

INFORMATIKAI ALAPISMERETEK

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

Könyvtári címkéző munkahely

Operációs rendszerek gyak.

ContractTray program Leírás

Operációs Rendszerek II. labor. 2. alkalom

Közismereti informatika 2.zh T-M szakirány

0.1. Mi az a standard be- és kimenet? A két mintafeladat leírása

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

DebitTray program Leírás

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

Programozás alapjai. 7. előadás

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

Regionális forduló november 18.

Programozás alapjai. 5. előadás

Felvételi tematika INFORMATIKA

Specifikáció alapú teszttervezési módszerek

Specifikáció alapú teszttervezési módszerek

INFORMATIKAI ALAPISMERETEK

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

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

Információk. Ismétlés II. Ismétlés. Ismétlés III. A PROGRAMOZÁS ALAPJAI 2. Készítette: Vénné Meskó Katalin. Algoritmus. Algoritmus ábrázolása

Informatika terméktervezőknek

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

ELEMI PROGRAMOZÁSI TÉTELEK

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

Mesterséges Intelligencia II. kötelező feladat (3. forduló) - Ajánló rendszer 2.

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

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

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

Programozási nyelvek a közoktatásban alapfogalmak II. előadás

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

Algoritmizálás. Horváth Gyula Szegedi Tudományegyetem Természettudományi és Informatikai Kar

1. Bevezető. 2. Sérülékenységek

Ábrák készítése. a dokumentációhoz. Szlávi Péter

BASH SCRIPT SHELL JEGYZETEK

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

Szoftver alapfogalmak

Adatbázis Rendszerek II. 5. PLSQL Csomagok 16/1B IT MAN

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

Programozás I. Egyszerű programozási tételek. Sergyán Szabolcs

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

MŰSZAKI TESZTTERVEZÉSI TECHNIKÁK A TESZT FEJLESZTÉSI FOLYAMATA A TESZTTERVEZÉSI TECHNIKÁK KATEGÓRIÁI

NAGYPONTOSSÁGÚ EGÉSZ-ARITMETIKA TARTALOM

Rendszerterv. Makoviczki András. Neptun: JJ26AR

Munka a fájlokkal. Az általánosan használt fájltípusok. Programfájlok. Adatfájlok

Gépi tanulás a Rapidminer programmal. Stubendek Attila

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

Konzolalkalmazások gyors tesztelése

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

Dr. Schuster György október 14.

ClicXoft programtálca Leírás

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

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

Kormányzati Elektronikus Aláíró és Aláírás-ellenőrző Szoftver

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

Hardver és szoftver követelmények

PFW Programing Fundamentals Wizard

Átírás:

Algoritmizálás és adatmodellezés tanítása beadandó feladat: Algtan1 tanári beadandó /99 1 Készítette: Gipsz Jakab Neptun-azonosító: ABC123 E-mail: gipszjakab@seholse.hu Kurzuskód: IT-13AAT1EG Gyakorlatvezető neve:??? 2015. március 28. 1 A fenti feladatsor itt érhető el: http://biro.inf.elte.hu/. Értelemszerűen töltendők itt ki a szerzőre vonatkozó adatok. A lábjegyzetek a végső dokumentációból törlendők! Csak az Ön segítését szolgálja. 1/13

Tartalom Felhasználói dokumentáció... 3 Feladat... 3 Futási környezet... 3 Használat... 3 A program indítása... 3 A program bemenete... 3 A program kimenete... 3 Minta bemenet és kimenet... 4 Hibalehetőségek... 4 Fejlesztői dokumentáció... 6 Feladat... 6 Specifikáció... 6 Fejlesztői környezet... 6 Forráskód... 7 Megoldás... 7 Programparaméterek... 7 Programfelépítés... 7 Függvénystruktúra... 8 Algoritmus... 8 A kód... 9 Tesztelés... 11 Érvényes tesztesetek... 11 Érvénytelen tesztesetek... 13 Fejlesztési lehetőségek... 13 2/13

Felhasználói dokumentáció Feladat Egy repülőút során egyenlő távolságonként mértük a felszín tengerszint feletti magasságát. Zéró magasságot ott mértünk, ahol állóvíz volt, pozitív magasságot pedig ott, ahol szárazföld. Három egymást követő mérési eredményt jelöljön A, B és C. Ekkor B bal oldali partot jelez, ha B>0 és A=0; jobb oldali partot jelez, ha B>0 és C=0. Készítsen programot, amely meghatároz két szigetet, melyeknél nincs egymáshoz közelebbi szigetpár, ha nincs ilyen, akkor ezt egyetlen 0-val jelezze! Futási környezet IBM PC, exe futtatására alkalmas, 32-bites operációs rendszer (pl. Windows 7). Nem igényel egeret. Használat A program indítása A program az ABC123\szigetek.exe néven található a tömörített állományban. A szigetek.exe fájl kiválasztásával indítható. A program bemenete A program az adatokat a billentyűzetről vagy fájlból olvassa be a következő sorrendben: # Adat Magyarázat 0. Bemód A beolvasás módja (fájlból olvasás esetén 1, billentyűzetről olvasás esetén 0). 1. N A magasságmérés hossza (2 N 10000). 2. Magasság 1 Az első magasság (0 Magasság 1 9000). 3. Magasság 2 A második magasság (0 Magasság 2 9000).... N+1. Magasság N Az N-edik magasság (0 Magasság N 9000). A program kimenete A program kiírja az egymáshoz legközelebbi két sziget bal és jobb partját jelző mérés sorszámát. A kimenet első sorába az első szigetet, a második sorba a második szigetet azonosító két adat kerül. 3/13

Minta bemenet és kimenet Mintafutás billentyűzetről való beolvasás esetén Mintafutás fájlból való beolvasás esetén A bemeneti állomány nevét a kiterjesztésével együtt kell megadni, és a bemeneti állományt közvetlenül a futtatható állomány mellett kell elhelyezni. Megadható a könyvtári útvonal is, amennyiben nem az exe mellett található az adatfájl. Hibalehetőségek Adat-beolvasási mód nem 0 vagy 1. Ha fájlból jönnek az adatok, akkor nem létezik (az adott könyvtárban) a paraméterként megadott nevű fájl. Az operációs rendszer által az útvonal-megadásra megkívánt szintaktikai elvárások megsértése esetén a fájl nem lesz megnyitható. A mérések száma nem egész szám, vagy nem esik a 2..10 000 intervallumba. Valamely magassági érték nem szám, vagy nem esik a 0..9 000 intervallumba. Fájlos input esetén az adatok helyességét nem vizsgálja a program. Billentyűzet-inputnál hiba esetén a program azzal jelzi a hibát, hogy újra kérdezi azt. 4/13

Mintafutás hibás bemeneti adatok esetén: Hibás adatforrás-, majd fájl-választás: Hibás numerikus adat-megadás: 5/13

Fejlesztői dokumentáció Feladat Egy repülőút során egyenlő távolságonként mértük a felszín tengerszint feletti magasságát. Zéró magasságot ott mértünk, ahol állóvíz volt, pozitív magasságot pedig ott, ahol szárazföld. Három egymást követő mérési eredményt jelöljön A, B és C. Ekkor B bal oldali partot jelez, ha B>0 és A=0; jobb oldali partot jelez, ha B>0 és C=0. Készítsen programot, amely meghatároz két szigetet, melyeknél nincs egymáshoz közelebbi szigetpár, ha nincs ilyen, akkor ezt egyetlen 0-val jelezze! Specifikáció A specifikációban nem foglalkozunk az adatforrással, csak a feladat lényegi részére koncentrálunk. Bemenet: N N, Magasságok N * : VanE L, Szig1,Szig2 Sziget, Sziget=Bal Jobb, Bal,Jobb=N Előfeltétel: N [2..10000] i [1..N]: Magasságok i [0..9000] N 1 Utófeltétel: db= i=2 SzigetKezdet(i) szigek Sziget * i [1..db]: (szigek i.bal [2..N] szigek i.jobb [1..N-1] szigek i.bal szigek i.jobb SzigetKezdet(szigek i.bal) SzigetVég(szigek i.jobb) i [szigek i.bal..szigek i.jobb]: Magasságok i >0) db<2 VanE=Hamis db 2 VanE=Igaz i [1..db-1]: Szig1=szigek i Szig2=szigek i+1 i [1..db-1]: szigek i+1.bal-szigek i.jobb Szig2.Bal-Szig1.Jobb Definíció: SzigetKezdet: N L SzigetKezdet(i):=Magasságok i >0 Magasságok i-1 =0 SzigetVég: N L SzigetVég(i):=Magasságok i >0 Magasságok i+1 =0 Megjegyzés: a ha nincs ilyen kitételt (a VanE=Hamis esetben) a program egyetlen 0 kiírásával fogja jelezni, nem pedig a logikai érték megjelenítésével (hűen a feladat eredeti kiírásához). Fejlesztői környezet IBM PC, exe futtatására alkalmas operációs rendszer (pl. Windows 7). fpc Pascal-fordítóprogram (v2.6.4), Geany (v1.23.1) fejlesztői környezet. 6/13

Forráskód A teljes fejlesztői anyag kicsomagolás után az ABC123 nevű könyvtárban található meg. A fejlesztés során használt könyvtár-struktúra: ABC123\szigetek.exe Állomány futtatható kód Magyarázat ABC123\forras\szigetek.pas ABC123\forras\AltRutinok.inc ABC123\forras\FajlRutinok.inc Pascal forrás általános rutinokat tartalmazó inklúd-állomány fájlkezelő rutinokat tartalmazó inklúd-állomány ABC123\teszt1.txt teszt-bemeneti fájl 1 ABC123\teszt2.txt teszt-bemeneti fájl 2 ABC123\teszt3.txt teszt-bemeneti fájl 3 ABC123\teszt4.txt teszt-bemeneti fájl 4 ABC123\teszt5.txt teszt-bemeneti fájl 5 ABC123\doksi\szigetek.docx dokumentációk (ez a fájl) Megoldás Programparaméterek Konstans MaxN MaxMagasság Típus TMaggasságok TSziget Változó N Magasságok Szig1,Szig2 : Egész(10000) [a mérések maximális száma] : Egész(9000) [a maximális magasság] = Tömb(1..MaxN:Egész) = Rekord(bal,jobb:Egész) : Egész : TMagasságok : TSziget Programfelépítés A program által használt modulok (és helyük): szigetek.pas program, a forráskönyvtárban Crt.ppu képernyő-, és billentyűkezelés, a Pascal rendszer része AltRutinok.inc általános segéd rutinok, a forráskönyvtárban 2 TextRutinok.inc karakteres fájlt kezelő segéd rutinok, a forráskönyvtárban 2 A Bíró -rendszerbe való feltöltéskor ezekre nincs szükség, csak a véglegeshez kellenek. A különválasztásra is csak az elegancia okán került sor. 7/13

Függvénystruktúra Főprogram AdatBeolvasas LegkozelebbiSzigetek EredmenyKiir UjLap BillreVar A teljes program algoritmusa Program Szigetek: [programparaméterek:] Konstans MaxN:Egész(10000) [a mérések maximális száma, a bekéréshez] MaxMagasság:Egész(9000) [a maximális magasság, a bekéréshez] Típus TMagasságok=Tömb(1..MaxN:Egész) TSziget=Rekord(bal,jobb:Egész) Változó [Bemenet:] N:Egész Magasságok:TMagasságok [:] VanE:Logikai Szig1,Szig2:TSziget [főprogram:] AdatBeolvasás(N,Magasságok) LegközelebbiSzigetek(N,Magasságok,VanE,Szig1,Szig2) EredményKiirás(VanE,Szig1,Szig2) Program vége. [alprogramok:] Eljárás AdatBeolvasás(Változó n:egész, magok:tmagasságok): Változó bemod:egész f:szövegfájl fn:szöveg Be:beMod [ 0 vagy 1 ] Ha bemod= 1 akkor [fájlból olvasás:] Be:fN [OlvasásraNyit(f,fN)] Olvas(f,n) Olvas(f,magok(1..n)) 3 Lezár(f) különben [billentyűről olvasás:] Be:n [n [2..MaxN]] Be:magok(1..n) [n [0..MaxMagasság]] Elágazás vége Eljárás vége. 3 Ez az alábbi rövidített leírása: Ciklus i=1-től n-ig Olvas(f,magok(i)) Ciklus vége 8/13

Eljárás LegkozelebbiSzigetek(Konstans n:egész, magok:tmagasságok, Változó vane:logikai, sz1,sz2:tsziget): [Lokális konstansok, típusok, változók:] Kosntans MaxSz:Egész(MaxN Div 2) sziget0:tsziget=(bal:0,jobb:0) Típus TSzigetek=Tömb(0..MaxSz:TSziget) Változó db,i, mini,mint:egész szigek:tszigetek [szigetek inicializálása:] szigek(0..maxsz):=sziget0 4 [szigetek kiválogatása:] db:=0 Ciklus i=2-től n-1-ig Ha magok(i)>0 és magok(i-1)=0 akkor db:+1 szigek(db).bal:=i Elágazás vége Ha magok(i)>0 és magok(i+1)=0 akkor szigek(db).jobb:=i Elágazás vége Ciklus vége Ha db>0 és szigek(db).jobb=0 akkor db:-1 [a túlpart bal partja, amely nem sziget] Ha db<2 akkor [nincs két legközelebbi sziget:] vane:=hamis különben [van legalább két sziget:] [minimális távolság:] mini:=1; mint:=szigek(2).bal-szigek(1).jobb Ciklus i=2-től db-1-ig Ha szigek(i+1).bal-szigek(i).jobb<mint akkor mini:=i; mint:=szigek(i+1).bal-szigek(i).jobb Elágazás vége Ciklus vége szig1.bal:=szigek(mini).bal; szig1.jobb:=szigek(mini).jobb sz2.bal:=szigek(mini+1).bal; sz2.jobb:=szigek(mini+1).jobb vane:=igaz Elágazás vége Eljárás vége. Eljárás EredményKiirás(Konstans vane:logikai, sz1,sz2:tsziget): Ha vane akkor Ki: 0 Különben Ki: sz1.bal,sz1.jobb,sz2.bal,sz2.jobb [a megkívánt formátum szerint] Elágazás vége Eljárás vége. 4 Ez az alábbival ekvivalens, rövidebb leírás: Ciklus i=0-tól MaxSz-ig szigek(0.maxsz):=sziget0 Ciklus vége 9/13

A kód A sziget.pas fájl tartalma: (* Készítette: Gipsz Jakab Neptun: ABC123 E-mail: gipszjakab@seholse.hu Feladat: Algtan1 tanári beadandó/99 *) Program Szigetek; Uses Crt; {$i AltRutinok.inc} {$i FajlRutinok.inc} //a program: Const Cim='Legközelebbi szigetek'; MaxN=10000; MaxMagassag=9000; Type TMagassagok=Array [1..MaxN] of Integer; TSziget=Record bal,jobb:integer End; Var //Bemenet: N:Integer; Magassagok:TMagassagok; //: VanE:Boolean; Szig1,Szig2:TSziget; Procedure AdatBeolvasas(Var n:integer; Var magok:tmagassagok); Begin End; Procedure LegkozelebbiSzigetek(Const n:integer; magok:tmagassagok; Var vane:boolean; Var sz1,sz2:tsziget); Begin End; Procedure EredmenyKiir(Const VanE:Boolean; Const sz1,sz2:tsziget); Begin End; Begin UjLap(Cim); AdatBeolvasas(N,Magassagok); LegkozelebbiSzigetek(N,Magassagok,VanE,Szig1,Szig2); EredmenyKiir(VanE,Szig1,Szig2); BillreVar; End. 10/13

Az AltRutinok.inc fájl tartalma: (* Készítette: Szlávi Péter Neptun: ZDOF7J E-mail: szlavip@elte.hu Feladat: általánosan használható rutinok *) Procedure UjLap(Const cim:string); Begin End; A TextRutinok.inc fájl tartalma: (* Készítette: Szlávi Péter Neptun: ZDOF7J E-mail: szlavip@elte.hu Feladat: Text fájlok kezelését támogató rutinok *) Function OlvasasraNyit(Var f:text; Const fn:string):boolean; Begin End; Tesztelés Érvényes tesztesetek 1. teszteset: be1.txt N = 2 Magasság 1 = 0 Magasság 2 = 0 0 Bemenet nincs sziget; minimális hossz 11/13

2. teszteset: be2.txt N = 12 Magasság 1 = 3 Magasság 2 = 0 Magasság 3 = 2 Magasság 4 = 0 Magasság 5 = 4 Magasság 6 = 3 Magasság 7 = 0 Magasság 8 = 0 Magasság 9 = 3 Magasság 10 = 0 Magasság 11 = 2 Magasság 12 = 0 Szig1 = 3 3 Szig1 = 5 6 Bemenet kontinenssel kezdődik, van legalább 2 sziget 3. teszteset: be3.txt N = Magasság 1 = Bemenet kontinenssel végződik, van legalább 2 sziget 4. teszteset: be4.txt N = Magasság 1 = Bemenet nincs kontinens, egy sziget van 5. teszteset: be5.txt N = Magasság 1 = Bemenet csak kontinens van 12/13

Érvénytelen tesztesetek 6. teszteset Adatforrás = fájlból Újrakérdezés Bemenet Rossz adatforrás 7. teszteset Adatforrás = 1 Fájlnév= C:\rosszKonyvtar Fájlnév= C:\joKonyvtar\rosszFajlnev Újrakérdezés Újrakérdezés 8. teszteset Fejlesztési lehetőségek Bemenet Rossz fájlnév 1. Hibás fájl-bemenetek felismerése, és a hiba helyének (sor sorszámának) kiírása. 2. A hibára utaló hibaüzenetek megadása. 3. Többszöri futtatás megszervezése 13/13