Beépített listakezelés - ld. help. (Library(list), Bult-in list operations) A konzultáció témaköre: I. Problémafelvetés: diak(jani, 3.3, pecs). diak(laci, 3.7, kaposvar). diak(matyi, 4.1, pecs). diak(kati, 2.3, barcs). diak(jeno, 4.2, szekszard). segelyt_kap(Diak) :- diak(Diak, Atlag, _), Atlag > 3.5. segelyt_kap(Diak) :- diak(Diak, _, Hely), Hely \== 'pecs'. Állapítsuk meg, hogy kik kapnak segélyt! (Az egyes eredmények után gépeljen pontosvesszőt!) Javítsa ki úgy, hogy minden név csak egyszer szerepeljen! 2. Mintapélda: sok.pl, ill. otthon: mintasok.pl. 3. kocsmasok.pl II. Adatbáziskezelés -------------------- 1. Alapfogalmak a/ Beszúrás: assert(term). Pl. assert(diak(jani, 4)) ahol a diak szerkezete: diak(nev,osztalyzat) b/ Törlés: retract(term) retractall(term) Pl.: retract(diak(jani,4)). - kitörli a legelső ilyen előfordulást retract(diak(_,4)) - kitörli a legelső 4-es előfordulást retract(diak(_,_)) - kitörli a legelső diák adatot retractall(diak(_,4)) - kitörli az összes 4-es előfordulást retractall(diak(_,_)) - kitörli az összes diák adatot. Ha nem létezik a törlendő adat, akkor a retract hamisan, a retractall 'yes'-szel zárul. c/ Módosítás? d/ consult Adatbevitel fájlból - " see - seen " - consult mikor melyik? Adatkiírás fájlba e/ assertproba1,2,3. 2. Gyakorló feladatok --------------------- 1. a/ Használjuk adatfájlként a nevek.txt fájlt. A benne szereplő emberektől kérdezzük meg, hogy milyen italt szeretnek, majd írassuk ki egy fájlba, hogy ki mit szeret. b/ Ugyanez, csak a nevek2.txt fájl alapján. c/ Most futtassuk le ugyanezt a programot úgy, hogy előtte konzultálunk a szereti.txt fájllal. d/ Módosítsa úgy, hogy az új ember többféle italt is kérhet. 2. Olvassa be a diákok adatait a ’zh.txt’ fájlból. a/ Diákonként írassa ki, hogy sikerült-e a zh-ja vagy sem. ha Hatar fölötti pontszám sikeres. b/ Csak a sikereseket írassa ki. c/ Számolja ki a diákok átlagát is. A feladat megoldásához használjon adatbázist. 3. peldak/ujjgyakorlatok ---------------------------- 4. További feladatok -------------------- 1. Egy fájl tartalmazza a hallgatók névsorát. Egyenként kérdezze meg tőlük, hogy hány százalékos lett a dolgozatuk. Akinek B % fölött, annak érvényes a féléve, akinek A és B % között, az pótolhat, és akinek A % alatt, az keresztféléves lesz. Irja ki külön azoknak a névsorát, akiknek érvényes a félévük, külön azokét, akik pótolhatnak, és külön azokét, akik keresztfélévesek lesznek. Határozza meg, melyik csoportba hányan tartoznak! 2. Egy fájl könyvek cimét és szerzőjét tartalmazza. Irjon programot, amely segitségével keresni lehet a fájlban, azaz: a program kérdezze meg, hogy cim szerint vagy szerző szerint akarunk keresni, s a választól függően irja ki a keresett könyvek szerzőjét, cimét és azt, hogy hány könyve van az adott szerzőnek, ill. hány adott cimű könyv van. Az első keresés után kinálja fel a folytatás lehetőségét. Ki a legnépszerűbb író, azaz ki írta a legtöbb könyvet? 3. A www.prolog.hu oldalon meg akarják választani az év emberét. Ezért megszavaztatják az oldal látogatóit. Egy fájl tartalmazza a választható emberek nevét és az eddig elért pontszámát. A látogatónak minden embert minősitenie kell, vagyis egyenként kell pontozni őket 0 és 10 között. (Ezek a pontszámok hozzáadódnak a korábbiakhoz.) Ezt addig kell ismételni, amig van újabb látogató. Ha nincs több (vagyis ha lejár a szavazásra szánt határidő (pl. egy menüpont alapján is dönthet), akkor válassza külön egy új fájlba (és a képernyőre is irassa ki) azokat az embereket, akik bejutottak a következő fordulóba. Azok jutnak be, akik átlag fölötti pontszámot értek el. 4. Szimulálja egy partnerközvetítő iroda egyszerűsített működését. Egy fájl tartalmazza az iroda "aktuális" ügyfeleinek névsorát, feltüntetve az illető nemét és életkorát is. Az irodába látogató újabb ügyfél választhat: ő is be akar-e kerülni a választhatók listájába, vagy a meglevő választékból keres magának partnert. Ha be akar kerülni, kérje el az adatait és vegye fel a névsorba, ha keresni akar, akkor kérdezze meg, milyen nemű partnert keres és azt, hogy a partner milyen idős legyen (tól-ig határt kérdezzen). Irassa ki a keresésnek megfelelő emberek adatait, és azt is, hány ilyen embert talált. Az iroda jó működése érdekében kérjen visszajelzést is, vagyis egy ügyfél olyan céllal is bejöhet az irodába, hogy közölje: talált magának partnert (vagy teljesen kiábrándult a partnerkeresésből :-)) és nem kiván tovább szerepelni az iroda adatbázisában. (Természetesen nem kell megindokolnia, hogy miért törölteti magát.) Ekkor törölje a névsorból. A szimuláció végén mentse el az aktuális állapotot! (Vigyázat! Célszerű másik fájlba menteni, amig nem működik biztosan a program - ez a másik fájl jó működés esetén is maradhat.) 5. Egy fájl tartalmazza a videotéka állományában levő filmeket és a bent lévő példányok darabszámát. (Ez lehet nulla is, akkor tart ilyen filmet a videotéka, de jelenleg épp nincs bent.) Írjon programot a videotéka használatára, azaz: Folyamatosan jöhetnek a kölcsönzők. A kölcsönző jelentkezéskor egyenként sorolja fel a visszahozott videókat, (csak olyat hozhat vissza, ami szerepel az állományban), majd közölje, hogy mit szeretne kivinni. Ha van bent ilyen film, akkor "adja ki" neki. Időnként lehessen leltározni is, vagyis irassa ki, hogy éppen hány féle film van bent, illetve azt is, hogy ez összesen hány példányt jelent. 6. Szimulálja egy utazási iroda működését! Egy adatfájl tartalmazza az utazási célpontok nevét, az utak árát és a maximális férőhelyek számát (utanként). A szimuláció a következőt jelenti: amíg van érdeklődő, addig az illető jelentkezhessen valamelyik útra (családostól, azaz jelentkezéskor adja meg a létszámot), ha van még hely. Ha nincs elég hely, akkor kérdezze meg az illetőtől, hogy mennyi pénze van, és írja ki a megadott összegnél olcsóbb utak listáját (természetesen azokét, amelyre van még elég hely). A szimuláció végén irassa ki, hogy átlagosan hány ember utazik valahova, ill. azt, hogy melyik a legnépszerűbb uticél. 7. A MECSEK SE tagokat keres. Egy fájl tartalmazza a beindítható sportágak listáját. "Vegyen fel" tagokat, azaz amig van jelentkező, addig kérdezze meg az illető nevét és a kivánt sportágat. Ha van ilyen sportág, vegye fel. Ha nincs több jelentkező, akkor egy új fájlba mentse el a tagok névsorát (a választott sportággal együtt). 1. Összesen hány tagja lesz az SE-nek? 2. Melyik(ek) volt(ak) a legnépszerűbb sportág(ak)?