A feladat. A főprogram

Hasonló dokumentumok
Programozási technikák Pál László. Sapientia EMTE, Csíkszereda, 2009/2010

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

NAGYPONTOSSÁGÚ EGÉSZ-ARITMETIKA TARTALOM

Rendezések. A föltöltés nemcsak az r-re vonatkozik, hanem az s-re is. Ez használható föl a további rendezések

Megoldott feladatok. Informatika

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.

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

Delphi programozás IV.

Programozási tételek általánosítása 2. Szlávi Péter 2015

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

1. A feladatról. 2. Az áramkör leírása. Mechatronika, Optika és Gépészeti Informatika Tanszék D528. Léptetőmotor vezérlése

Táblázatok fontosabb műveletei 1

Neumann János Tehetséggondozó Program Gráfalgoritmusok II.

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

Az Összegfokozatos listázás téma 2. gyakorlata

Demográfiai modellek (folytatás)

end function Az A vektorban elõforduló legnagyobb és legkisebb értékek indexeinek különbségét.. (1.5 pont) Ha üres a vektor, akkor 0-t..

14. Mediánok és rendezett minták

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

Maximum kiválasztás tömbben

PASzSz. Dr. Kotsis Domokos

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

Számítógépes grafika

<... < s n. Írjuk le a megoldási módszert, és adjunk meg egy megjegyzésekkel ellátott Pascal-programot. A bemeneti adatokat helyesnek tekintjük.

1. kérdés: Mi a sor? Válaszok. a) szűkebb ( hagyományos ) válasz: egy típus, amelyre az alábbi jellegzetes műveletek alkalmazhatók:

6. A Pascal nyelv utasításai

Érdekes informatika feladatok

2.6. Utasítások használata

REKURZIÓK SZÁMÍTÓGÉPES PROGRAMOK SEGÍTSÉGÉVEL

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

SZÁMÍTÓGÉPI GRAFIKA VÁGÁS

Eljárások, függvények

7. Strukturált típusok

INFORMATIKAI ALAPISMERETEK

Delphi programozás III.

Programozás alapjai Free Pascal

Algoritmusok vektorokkal keresések 1

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

A PROGRAMOZÁS ALAPJAI 3. Készítette: Vénné Meskó Katalin

Az első fájlos program

PROGRAMOZÁSMÓDSZERTAN 2. ELADÁS 2005 (VÁZLAT)

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

Demografia / Demográfiai modell

Programozási alapismeretek 3. előadás

Informatika terméktervezőknek

2. Milyen értéket határoz meg az alábbi algoritmus, ha A egy vektor?. (2 pont)

I. ALAPALGORITMUSOK. I. Pszeudokódban beolvas n prim igaz minden i 2,gyök(n) végezd el ha n % i = 0 akkor prim hamis

Bakalárska práca Bakalár munka

Adatszerkezetek I. 1. előadás

I. Egydimenziós tömb elemeinek rendezése

SZÁMÍTÓGÉPI GRAFIKA MARKEREK

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

Érdekes informatika feladatok

Demográfiai modellek

Hetedik témakör kiegészítés:

Utasítások. Excel VII. Visual Basic programozás alapok. A Visual Basic-kel megoldható feladatok típusai Objektumok, változók Alprogramok

VB C++ C# JScript J# Common Language Specification. ADO.NET and XML. Base Class Library. Common Language Runtime. Operating System

Option Explicit Option Base 1

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

Egyszerű példaprogramok gyakorláshoz

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

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

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

INFORMATIKAI ALAPISMERETEK

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

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

Számítógépes grafika

5. előadás Parametrikus polimorfizmus. Generikus programozás. Az Ada sablonok.

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

Apple Swift kurzus 3. gyakorlat

Permutáció n = 3 esetében: Eredmény: permutációk száma: P n = n! romámul: permutări, angolul: permutation

8.4 Többszálú alkalmazások készítése

Sztringkezelő függvények. A string típusú változók kezelése, használata és szerepük a feldolgozás során

Internet programozása. 3. előadás

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

értékel függvény: rátermettségi függvény (tness function)

C# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem

9. Megoldás keresése visszalépéssel (backtracking)

Visual Basic elméleti leti alapok 2.

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

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

Amortizációs költségelemzés

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

PROGRAMOZÁSI NYELVEK (ELMÉLET)

Smalltalk 2. Készítette: Szabó Éva

BACTRACK GYAKORLAT VÁZLAT. Szlávi Péter

Érdekes informatika feladatok

A szemantikus elemzés helye. A szemantikus elemzés feladatai. A szemantikus elemzés feladatai. Deklarációk és láthatósági szabályok

Pásztor Attila. Algoritmizálás és programozás tankönyv az emeltszintű érettségihez

Országzászlók (2015. május 27., Sz14)

E- Laboratórium 3 Az ABB robotok alkalmazásai Mérés menete

A JavaScript főbb tulajdonságai

2. Visszalépéses stratégia

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

VHDL szimuláció. Tervezés. Labor II. Dr. Hidvégi Timót

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

3. Gyakorlat Ismerkedés a Java nyelvvel

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

PHP alapjai, bevezetés. Vincze Dávid Miskolci Egyetem, IIT

Webprogramozás szakkör

Átírás:

A feladat A magyar kártya típusának megvalósítása. Tisztázandók: 1. Milyen műveletek értelmesek a típussal kapcsolatosan? 2. Hogyan ábrázolható a típus? 3. Miként valósíthatók meg a műveletek figyelembe véve a reprezentációt? Szétválasztottuk a feladatban található 4 típus-fogalmat egy-egy unitba: egy Szin ( TSzin), egy Figura ( TFigura) és egy Kartya ( TKartya) típust kódoló unitra, továbbá egy Pakli ( TPakli) típuskonstrukciót kódoló unitra. A főprogram Elvárásomat lásd futás közben: PakliPr.exe. Az alábbi főprogram forráskódja: PakliPr.pas. Program HalmazPr; (* Bitvektoros halmazábrázolás példája. Főprogram. *) Uses Crt,PakliUn,KartyaUn; {PakKeKe=a keret; PakliUn=a kész} {$i AltRutin.inc} Type TKartyak = Array [1..MaxKartyaDb] of TKartya; asztal,kez:thalmaz; k:tkartya; kevertlapok:tkartyak; UjLap('Kártyás program',0); Writeln; TeljesPakli(asztal); KiPakli('Asztal:',asztal); Writeln; UresPakli(kez); KiPakli('Kéz:',kez); Writeln; While not UresPakliE(asztal) do VeletlenLap(asztal,k); KartyaUn.Ki('Kihúzott kártya:',k,crlf); Elvesz(asztal,k); KiPakli('Asztal:',asztal); Kozetesz(kez,k); KiPakli('Kéz:',kez); LegjobbLap(kez,k); KartyaUn.Ki('Legjobb lapom:',k,crlf); LegrosszabbLap(kez,k); KartyaUn.Ki('Legrosszabb lapom:',k,crlf); Writeln; Billre; UjLap('Kártyakever s',-1); {Kártyakeverés a kevertlapok tömbbe:} Billre;. 1

A típusok megvalósítása Pascal unitok-tal Az alábbi unit (a típus keretének a) forráskódja: PakKeUn.pas. Unit PakKeUn; (* Bitvektoros halmazábrázolás példája. Magyar kártya-halmaz típusa. Asszociált müveletek: (Készség) -------------- THalmaz(TKartya) --------------- * TeljesPakli + * UresPakli - * TeljesPakliE - * UresPakliE + * Kozetesz + * Elvesz + * BenneVanE - * Egyesit - * Kozosek - * LegjobbLap + * LegrosszabbLap - * VeletlenLap +...... * BePakli - * KiPakli + * HibasEPakli + *) Interface Uses KartyaUn,SzinUnit,FiguUnit; Type THalmaz = Record lapok: Array [TSzin,TFigura] of Boolean; siker: Boolean; Const MaxKartyaDb = (Ord(MaxFigura)+1)*(Ord(MaxSzin)+1); Procedure TeljesPakli( p:thalmaz); Uf: MINDEN s:tszin, MINDEN f:tfigura: p.lapok[s,f] ES p.siker} Function TeljesPakliE(Const p:thalmaz):boolean; Uf: TeljesPakliE(p) <=> MINDEN s:tszin, MINDEN f:tfigura: p.lapok[s,f]} Procedure UresPakli( p:thalmaz); Uf: MINDEN s:tszin, MINDEN f:tfigura: NEM p.lapok[s,f] ES p.siker} Function UresPakliE( p:thalmaz):boolean; Uf: UresPakliE(p) <=> MINDEN s:tszin, MINDEN f:tfigura: NEM p.lapok[s,f]} Procedure Kozetesz( p:thalmaz; Const k:tkartya); Uf: k=(s,f) ES p.lapok[s,f]} Procedure Elvesz( p:thalmaz; Const k:tkartya); {Ef: k=(s,f) ES p.lapok[s,f] Uf: k=(s,f) ES NEM p.lapok[s,f]} 2

Function BenneVanE( p:thalmaz; Const k:tkartya):boolean; Uf: BenneVanE(p,k) <=> k=(s,f) ES p.lapok[s,f] } Procedure Egyesit(Const p1,p2:thalmaz; p:thalmaz); Procedure Kozosek(Const p1,p2:thalmaz; p:thalmaz); Procedure LegjobbLap( p:thalmaz; k:tkartya); {Ef: NEM UresPakliE(p) Uf: k=(s,f) ES MINDEN kk:tkartya: kk=(ss,ff) ES BenneVanE(ss,ff) ES JobbE((ss,ff),(s,f))} Procedure LegrosszabbLap( p:thalmaz; k:tkartya); {Ef: NEM UresPakliE(p) Procedure VeletlenLap( p:thalmaz; k:tkartya); {Ef: NEM UresPakliE(p) Uf: BenneVan(p,k)} Procedure BePakli(Const kerd:string; p:thalmaz); Procedure KiPakli(Const szov:string; Const p:thalmaz); Function HibasEPakli( p:thalmaz):boolean; Uf: HibasEPakli=p.siker ES p'.siker} Implementation Uses {Newdelay,}Crt; {az AltRutin.inc kívánja meg} {$i AltRutin.inc} {------------------------- KártyaHalmaz: --------------------------} Procedure TeljesPakli( p:thalmaz); Uf: MINDEN s:tszin, MINDEN f:tfigura: p.lapok[s,f] ES p.siker} For s:=minszin to MaxSzin do For f:=minfigura to MaxFigura do p.lapok[s,f]:=true p.siker:=true {TeljesPakli} 3

Function TeljesPakliE(Const p:thalmaz):boolean; Uf: TeljesPakliE(p) <=> MINDEN s:tszin, MINDEN f:tfigura: p.lapok[s,f]} db:byte; {TeljesPakliE} Procedure UresPakli( p:thalmaz); Uf: MINDEN s:tszin, MINDEN f:tfigura: NEM p.lapok[s,f] ES p.siker} {UresPakli} Function UresPakliE( p:thalmaz):boolean; Uf: UresPakliE(p) <=> MINDEN s:tszin, MINDEN f:tfigura: NEM p.lapok[s,f]} db:byte; db:=0; For s:=minszin to MaxSzin do For f:=minfigura to MaxFigura do If p.lapok[s,f] then Inc(db) UresPakliE:=db=0 {UresPakliE} Procedure Kozetesz( p:thalmaz; Const k:tkartya); Uf: k=(s,f) ES p.lapok[s,f]} p.lapok[k.szin,k.figura]:=true {Kozetesz} Procedure Elvesz( p:thalmaz; Const k:tkartya); {Ef: k=(s,f) ES p.lapok[s,f] Uf: k=(s,f) ES NEM p.lapok[s,f]} If not p.lapok[k.szin,k.figura] then {nem teljesül az Ef} p.siker:=false Else p.lapok[k.szin,k.figura]:=false {Elvesz} 4

Function BenneVanE( p:thalmaz; Const k:tkartya):boolean; Uf: BenneVanE(p,k) <=> k=(s,f) ES p.lapok[s,f]} {BenneVanE} Procedure Egyesit(Const p1,p2:thalmaz; p:thalmaz); {Egyesit} Procedure Kozosek(Const p1,p2:thalmaz; p:thalmaz); {Kozosek} Procedure LegjobbLap( p:thalmaz; k:tkartya); {Ef: NEM UresPakliE(p) If UresPakliE(p) then {nem teljesül az Ef} p.siker:=false Else s:=zold; f:=asz; While ((s>makk) or (s=makk) and (f>vii)) and not p.lapok[s,f] do If f>vii then f:=pred(f) else s:=pred(s); f:=asz end; k.szin:=s; k.figura:=f; {LegjobbLap} Procedure LegrosszabbLap( p:thalmaz; k:tkartya); {Ef: NEM UresPakliE(p) Uf: k=(s,f) ES MINDEN kk:tkartya: kk=(ss,ff) ES BenneVanE(ss,ff) ES RosszabbE((ss,ff),(s,f))} If UresPakliE(p) then {nem teljesül az Ef} p.siker:=false Else {LegrosszabbLap} 5

. Procedure VeletlenLap( p:thalmaz; k:tkartya); {Ef: NEM UresPakliE(p) Uf: BenneVan(p,k)} If UresPakliE(p) then {nem teljesül az Ef} p.siker:=false Else Repeat s:=kod2szin(random(4)); f:=kod2figura(random(8)); Until p.lapok[s,f]; k.szin:=s; k.figura:=f {VeletlenLap} Procedure BePakli(Const kerd:string; p:thalmaz); {Ef:... {BePakli} Procedure KiPakli(Const szov:string; Const p:thalmaz); Writeln(szov); For s:=minszin to MaxSzin do Write(Szin2String(s):6,':'); For f:=minfigura to MaxFigura do If p.lapok[s,f] then Write(Figura2String(f),' ') Writeln; {KiPakli} Function HibasEPakli( p:thalmaz):boolean; Uf: HibasEPakli=p.siker ES p'.siker } HibasEPakli:=p.siker; p.siker:=true {HibasEPakli} 6

A kártya típus keretéül ezt használhatja (KartyaUn.pas): Unit KartyaUn; (* A magyar kártya típusa. *) Interface Uses SzinUnit,FiguUnit; Type TKartya=Record szin:tszin; figura:tfigura; hiba:boolean Procedure Kartya(Const s:tszin; Const f:tfigura; kartyaki:tkartya); Function KartyaSzin(Const k:tkartya):tszin; Function KartyaFigura(Const k:tkartya):tfigura; Procedure Be(Const kerd:string; k:tkartya); {Ef:... SZIN + ',' FIGURA alakban Procedure Ki(Const szov:string; Const k:tkartya; Const uto:string); Function HibasEKartya( k:tkartya):boolean; Uf: k.hiba => HibasEKartya=Igaz ES k=tkartya(min'tszin,min'tfigura) nem k.hiba => HibasEKartya=Hamis} Implementation Uses {Newdelay,}Crt; {az AltRutin.inc kívánja meg} {$i AltRutin.inc} Procedure Kartya(Const s:tszin; Const f:tfigura; kartyaki:tkartya); {Ef: Uf:} kartyaki.szin:=s; kartyaki.figura:=f Function KartyaSzin(Const k:tkartya):tszin; Uf:} KartyaSzin:=k.szin Function KartyaFigura(Const k:tkartya):tfigura; Uf:} KartyaFigura:=k.figura Procedure Be(Const kerd:string; k:tkartya); {Ef:... SZIN + ',' FIGURA alakban sk,ss,sf:string; hol:integer; 7

. {az Ef-et nem ellenörizzük} Write(kerd); (* egyszerübb lenne: SzinUnit.Be('',k.szin); FiguUnit.Be('',k.figura) *) Readln(sk); sk:=stringupcase(sk); hol:=pos(',',sk); ss:=copy(sk,1,hol-1); sf:=copy(sk,hol+1,length(sk)); {Szin-kódolás:} k.szin:=string2szin(ss); {Figura-kódolás:} k.figura:=string2figura(sf); {BeKartya} Procedure Ki(Const szov:string; Const k:tkartya; Const uto:string); Write(szov); SzinUnit.Ki('',k.szin,''); FiguUnit.Ki(' ',k.figura,''); Write(uto); Function HibasEKartya( k:tkartya):boolean; Uf: k.hiba => HibasEKartya=Igaz ES k=tkartya(min'tszin,min'tfigura) nem k.hiba => HibasEKartya=Hamis} If k.hiba then HibasEKartya:=True; k.szin:=low(tszin); k.figura:=low(tfigura); else HibasEKartya:=False A figura típusának félig kész kerete az alábbi (FiguKeUn.pas): unit FiguKeUn; (* Asszociált müveletek: (Készség) -------------- TFigure --------------- Be - Ki + String2Figura + Kod2Figura + Figura2String - Figura2Kod - Kov - Elo - Kisebb - HibasESzin + *) 8

Interface Type TFigura=(VII,VIII,IX,X,Also,Felso,kiraly,Asz,NemFigura); Const MinFigura=Low(TFigura); MaxFigura=Pred(High(TFigura)); Procedure Be(Const kerd:string; f:tfigura); Procedure Ki(Const szov:string; Const f:tfigura; Const uto:string); Function String2Figura(Const sz:string):tfigura; Function Figura2String(Const f:tfigura):string; Function Figura2Kod(Const f:tfigura):integer; Function Kod2Figura(Const ko:integer):tfigura; Function Kov(Const f:tfigura):tfigura; Function Elo(Const f:tfigura):tfigura; Function Kisebb(Const f1,f2:tfigura):boolean; Function HibasEFigura( f:tfigura):boolean; Implementation Const SFigura:Array [TFigura] of String= ('VII','VIII','IX','X','Also', 'Felso','Kiraly','Asz','Nem figura'); Procedure Be(Const kerd:string; f:tfigura); fs:string; {Be}; Procedure Ki(Const szov:string; Const f:tfigura; Const uto:string); Write(szov+Figura2String(f)+uto) {Ki}; Function String2Figura(Const sz:string):tfigura; i:tfigura; i:=low(tfigura); While (i<high(tfigura)) and (Figura2String(i)<>sz) do i:=succ(i); String2Figura:=i {String2Figura}; Function Figura2String(Const f:tfigura):string; {Figura2String}; Function Figura2Kod(Const f:tfigura):integer; Uf: Figura2Kod(f)=Sorszam(f)} Function Kod2Figura(Const ko:integer):tfigura; {Ef: ko ELEME [0..7] Uf: KodbolFigura(ko)=TFigura(ko)} 9

Kod2Figura:=TFigura(ko) Function Kov(Const f:tfigura):tfigura; {Kov}; Function Elo(Const f:tfigura):tfigura; {Elo}; Function Kisebb(Const f1,f2:tfigura):boolean; {Kisebb}; Function HibasEFigura( f:tfigura):boolean; Uf: f=nemfigura => HibasEFigura=Igaz ES f=min'tfigura f<>nemfigura => HibasEFigura=Hamis} If f=nemfigura then HibasEFigura:=True; f:=low(tfigura) else HibasEFigura:=False {HibasEFigura};. A szín típusának félig kész kerete az alábbi (SzinKeUn.pas): unit SzinKeUn; (* Asszociált müveletek: (Készség) -------------- TSzin --------------- Be + Ki + String2Szin - Szin2String + Kod2Szin + Szin2Kod + Kov - Elo - Kisebb - HibasESzin + *) Interface Type TSzin=(Makk,Piros,Tok,Zold,NemSzin); Const MinSzin=Low(TSzin); MaxSzin=Pred(High(TSzin)); 10

Procedure Be(Const kerd:string; sz:tszin); Procedure Ki(Const szov:string; Const sz:tszin; Const uto:string); Function String2Szin(Const sz:string):tszin; Function Szin2String(Const sz:tszin):string; Function Kod2Szin(Const ko:integer):tszin; Function Szin2Kod(Const s:tszin):integer; Function Kov(Const sz:tszin):tszin; Function Elo(Const sz:tszin):tszin; Function Kisebb(Const sz1,sz2:tszin):boolean; Function HibasESzin( sz:tszin):boolean; Implementation Const SSzin:Array [TSzin] of String= ('Makk','Piros','Tok','Zold','Nem szin'); Procedure Be(Const kerd:string; sz:tszin); ss:string; Write(kerd); Readln(sS); sz:=string2szin(ss); {Be}; Procedure Ki(Const szov:string; Const sz:tszin; Const uto:string); Write(szov+Szin2String(sz)+uto) {Ki}; Function String2Szin(Const sz:string):tszin; i:tszin; {String2Szin}; Function Szin2String(Const sz:tszin):string; Szin2String:=SSzin[sz] {Szin2String}; Function Kod2Szin(Const ko:integer):tszin; {Ef: ko ELEME [0..3] Uf: KodbolSzin(ko)=TSzin(ko)} Kod2Szin:=TSzin(ko) Function Szin2Kod(Const s:tszin):integer; Uf: Szin2Kod(s)=Sorszam(s)} Szin2Kod:=Ord(s) Function Kov(Const sz:tszin):tszin; {Kov}; 11

Function Elo(Const sz:tszin):tszin; {Elo}; Function Kisebb(Const sz1,sz2:tszin):boolean; {Kisebb}; Function HibasESzin( sz:tszin):boolean; Uf: f=nemszin => HibasESzin=Igaz ES f=min'tszin f<>nemszin => HibasESzin=Hamis} If sz=nemszin then HibasESzin:=True; sz:=low(tszin) else HibasESzin:=False {HibasESzin};. Az egész anyag összecsomagolva: Pakli_Gyak.zip. 12