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:

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

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

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

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

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!

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

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

Programozási alapismeretek 1. előadás

INFORMATIKAI ALAPISMERETEK

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

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

Programozás I. gyakorlat

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

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

Az első fájlos program

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

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

INFORMATIKAI ALAPISMERETEK

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

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

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

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)

INFORMATIKAI ALAPISMERETEK

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

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

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

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

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

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

Operációs rendszerek gyak.

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

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

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

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

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

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

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

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

1. Alapok. #!/bin/bash

BASH SCRIPT SHELL JEGYZETEK

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

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

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

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

ServiceTray program Leírás

INFORMATIKAI ALAPISMERETEK

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

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

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

Felvételi tematika INFORMATIKA

Regionális forduló november 18.

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

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

Informatika terméktervezőknek

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?

Szoftver alapfogalmak

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

ContractTray program Leírás

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

INFORMATIKAI ALAPISMERETEK

Programozási nyelvek (ADA)

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

DebitTray program Leírás

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

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

PFW Programing Fundamentals Wizard

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

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

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

Objektum elvu alkalmaza sok fejleszte se

7. gyakorlat Sorozatok, Fájlkezelés

The modular mitmót system. DPY kijelző kártya C API

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

Feltételezés: A file strukturálisan helyes, tanszékenként nem üres, de az adott listázási feladatban kikötött számút nem haladja meg.

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

Szoftver karbantartási lépések ellenőrzése

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

A 2008/2009 tanévi Országos Középiskolai Tanulmányi Verseny első forduló feladatainak megoldása. INFORMATIKÁBÓL II. (programozás) kategóriában

ELTE SAP Excellence Center Oktatóanyag 1

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

Rendszerterv. Makoviczki András. Neptun: JJ26AR

2. Készítsen awk szkriptet, amely kiírja az aktuális könyvtár összes alkönyvtárának nevét, amely februári keltezésű (bármely év).

Programozási nyelvek (ADA)

ELEMI PROGRAMOZÁSI TÉTELEK

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

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

Időjárási csúcsok. Bemenet. Kimenet. Példa. Korlátok. Nemes Tihamér Nemzetközi Informatikai Tanulmányi Verseny, 2-3. korcsoport

Algoritmusok helyességének bizonyítása. A Floyd-módszer

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

Konzolalkalmazások gyors tesztelése

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

Bevezetés a programozásba. 5. Előadás: Tömbök

Á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 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

Gyakorlatvezető neve:??? 2016. február 8. Tartalom Felhasználói dokumentáció... 4 Feladat... 4 Futási környezet... 4 Használat... 4 A program indítása... 4 A program bemenete... 4 A program kimenete... 4 Minta bemenet és kimenet... 5 Hibalehetőségek... 5 Fejlesztői dokumentáció... 7 Feladat... 7 Specifikáció... 7 Fejlesztői környezet... 7 Forráskód... 8 Megoldás... 8 Programparaméterek... 8 Programfelépítés... 8 Függvénystruktúra... 8 Algoritmus... 9 2/13

A kód... 10 Tesztelés... 12 Érvényes tesztesetek... 12 Érvénytelen tesztesetek... 13 Fejlesztési lehetőségek... 13 3/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ág1 Az első magasság (0 Magasság1 9000). 3. Magasság2 A második magasság (0 Magasság2 9000).... N+1. MagasságN Az N-edik magasság (0 MagasságN 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. Ha nincs két sziget, akkor az egyetlen kimeneti sorba egyetlen 0 kerül. Ha több szigetpárra is igaz, hogy távolságuk minimális, akkor az első párhoz tartozó adatot írja ki a program. 4/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. 5/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: 6/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ágoki [0..9000] N 1 Utófeltétel: db= i=2 SzigetKezdet(i) szigek Sziget * i [1..db]: (szigeki.bal [2..N] szigeki.jobb [1..N-1] szigeki.bal szigeki.jobb SzigetKezdet(szigeki.Bal) SzigetVég(szigeki.Jobb) i [szigeki.bal..szigeki.jobb]: Magasságoki>0) db<2 VanE=Hamis db 2 VanE=Igaz i [1..db-1]: Szig1=szigeki Szig2=szigeki+1 i [1..db-1]: szigeki+1.bal-szigeki.jobb Szig2.Bal-Szig1.Jobb Definíció: SzigetKezdet: N L SzigetKezdet(i):=Magasságoki>0 Magasságoki-1=0 SzigetVég: N L SzigetVég(i):=Magasságoki>0 Magasságoki+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. 7/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: Állomány ABC123\szigetek.exe ABC123\forras\szigetek.pas ABC123\teszt1.txt ABC123\teszt2.txt ABC123\teszt3.txt ABC123\teszt4.txt ABC123\teszt5.txt futtatható kód Pascal forrás teszt-bemeneti fájl1 teszt-bemeneti fájl2 teszt-bemeneti fájl3 teszt-bemeneti fájl4 teszt-bemeneti fájl5 Magyarázat 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 Függvénystruktúra program, a forráskönyvtárban OlvasásraNyit 8/13

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)) 2 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. 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) 2 Ez az alábbi rövidített leírása: Ciklus i=1-től n-ig Olvas(f,magok(i)) Ciklus vége 9/13

Változó db,i, mini,mint:egész szigek:tszigetek [szigetek inicializálása:] szigek(0..maxsz):=sziget0 3 [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 nem 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. 3 Ez az alábbival ekvivalens, rövidebb leírás: Ciklus i=0-tól MaxSz-ig szigek(0.maxsz):=sziget0 Ciklus vége 10/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; //Programparaméterek: Const 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; //Alprogramok: Function OlvasasraNyit(Var f:text; Const fn:string):boolean; Begin End; 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//Főprogram: AdatBeolvasas(N,Magassagok); LegkozelebbiSzigetek(N,Magassagok,VanE,Szig1,Szig2); EredmenyKiir(VanE,Szig1,Szig2); End. 11/13

Tesztelés Érvényes tesztesetek 1. teszteset: be1.txt N = 2 Magasság1 = 0 Magasság2 = 0 0 Bemenet nincs sziget; minimális hossz 2. teszteset: be2.txt N = 12 Magasság1 = 3 Magasság2 = 0 Magasság3 = 2 Magasság4 = 0 Magasság5 = 4 Magasság6 = 3 Magasság7 = 0 Magasság8 = 0 Magasság9 = 3 Magasság10 = 0 Magasság11 = 2 Magasság12 = 0 Szig1 = 3 3 Szig1 = 5 6 Bemenet kontinenssel kezdődik, van legalább 2 sziget 3. teszteset: be3.txt N = Magasság1 = Bemenet kontinenssel végződik, van legalább 2 sziget 12/13

4. teszteset: be4.txt N = Magasság1 = Bemenet nincs kontinens, egy sziget van 5. teszteset: be5.txt N = Magasság1 = Bemenet csak kontinens van É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. A felhasználóval igényesebb párbeszéd klaviatúra input esetén. 4. Többszöri futtatás megszervezése 13/13