Cauky.. chtěla bych vás požádat o pomoc s programem který je pro vás určitě hračka nicméně pro mně nezajímavej:(
Naprogramujte testování studentů ze zvolené oblasti (zeměpis, např. hlavní města, státy). Výběr odpovědi bude
z daného počtu alternativ (a,b,c,d), aktuálně se vypisuje počet získaných bodů, na závěr se vypíše celkový počet
bodů a hodnocení.
Fórum › Pascal
Help Prosim :-)
A co jsi zatím vymyslela?
Chtělo by to možná trochu podrobnější popis a potom ti asi pomůžeme tak, aby jsi na to vlastně přišla sama :-) .
No jak jsem říkala nejsem v tom moc dobrá asi bych to udělala přes práci s textovím souborem a přes stringy potom nejaky podminky :-) mam spíše problém tvůrčí když vidím program chapu ho ale něco vymyslet takhle sama to je nemožný :D
Začni s tím, že si určíš, jakou použiješ datovou strukturu - tedy jakým způsobem budou v paměti uloženy testovací otázky a správné odpovědi. Z toho pak vyplyne všechno ostatní. Jedna možnost je toto:
type Totazka = record
zneni:string; {zneni otazky}
mozne_odpovedi:array[1..4] of string {predpokladame-li ctyri mozne varianty odpovedi}
spravna_odpoved:byte; {ktera z odpovedi 1..4 je ta spravna}
end;
...
var otazky:TOtazky;
No, vyřešil bych to asi jako Laaca, nadeklaroval bych si pro otázky nějakou strukturu, do níž bych otázky ukládal. Samozřejmě bych si pak vytvořil proměnnou sledující počet získaných bodů (její hodnota by se odvíjela od počtu správně zodpovězených otázek). Výpis je pak, myslím, hračka (no, chce si to s tím pohrát:-)).
Jinak tedy psala jsi něco o textových souborech, opravdu je to potřeba řešit přes tectové soubory?
Tak nejsem si jistá jesli to musi být přes textové soubory a myslím že říkala že ano :/
Asi ano, nejlépe když v tom texťáku budeš mít ty otázky a odpovědi uložené ve formátu XML, a pro každý obor, předmět jiný soubor.
Proč proboha XML ???
Ukládej to normálně do textového souboru třeba po řádkách
první řádka: znění otázky
druhá: číslo správné odpovědi
třetí-šestá: varianta odpovědi
sedmá: prázdný řádek
osmá: znění další otázky
...
Takovýhle soubor napíšeš v Notepadu, nebo v textovém editoru pascalu za pár minut a bezbolestně. Ještě je rozumné ještě před zněním prvním otázky uložit počet otázek v souboru - v programu to pak zjednoduší čtení z tohoto souboru.
Laaca napsal:
Proč proboha XML ???
Ukládej to normálně do textového souboru třeba po řádkách
první řádka: znění otázky
druhá: číslo správné odpovědi
třetí-šestá: varianta odpovědi
sedmá: prázdný řádek
osmá: znění další otázky
...
Takovýhle soubor napíšeš v Notepadu, nebo v textovém editoru pascalu za pár minut a bezbolestně. Ještě je rozumné ještě před zněním prvním otázky uložit počet otázek v souboru - v programu to pak zjednoduší čtení z tohoto souboru.
XML je vhodnější. Například jde velmi snadno verifikovat, zda soubor, který program dostal, je správný. To tvoje řešení bude peklo pro toho, kdo bude ověřovat, zda soubor s otázkami je správný.
MZetko napsal:
Asi ano, nejlépe když v tom texťáku budeš mít ty otázky a odpovědi uložené ve formátu XML, a pro každý obor, předmět jiný soubor.
A proč každý obor, předmět jiný soubor? To nestačí jeden? Stačí pak zadat XPath dotaz například /matematika/rovnice/*, tak je to snadné :-)
No, taky bych řekl, že XML je asi vhodnější, ale jen kvůli přehlednosti, i textový soubor může posloužit dobře (s nějakou verifikací bych si u takovéhoto prográmku hlavu nelámal, něco jiného by bylo kdybych se tím prográmkem chtěl chlubit:-)). Úplně nejlepší by byla (dle mých informací neexistující) možnost vícetypového binárního souboru (nebo snad něco takového existuje???), to by mohla být pokryta ta snadná verifikace, navíc i "textová" nečitelnost, takže by se pro to mohl splácat i vlastní editor otázek. Zajímalo by mě, jestli by šlo něco takového vytvořit (ten vícetypový binární soubor)?
Ace McIntosh napsal:
No, taky bych řekl, že XML je asi vhodnější, ale jen kvůli přehlednosti, i textový soubor může posloužit dobře (s nějakou verifikací bych si u takovéhoto prográmku hlavu nelámal, něco jiného by bylo kdybych se tím prográmkem chtěl chlubit:-)). Úplně nejlepší by byla (dle mých informací neexistující) možnost vícetypového binárního souboru (nebo snad něco takového existuje???), to by mohla být pokryta ta snadná verifikace, navíc i "textová" nečitelnost, takže by se pro to mohl splácat i vlastní editor otázek. Zajímalo by mě, jestli by šlo něco takového vytvořit (ten vícetypový binární soubor)?
Jistěže by to šlo vytvořit, proč by nešlo? Všecko jde :smile2:
>Ace: Jasně, soubor typu File, zápis Blockwrite, čtení Blockread. Ale pro tenhle případ je to zbytečně pracné (plus ještě nutnost vytvořit editor, protože to už v Notepadu psát nepůjde).
>MZetko, Osiris: zajímavý nápad, ale naprogramovat čtečku XML (pokud vím, tak v Pascalu standardně neexistuje, nebo jo?) by dalo víc práce než celý ten program s otázkami (nevím, jak moc by použití hotové čtečky odněkud ze sítě vyučující tolerovali).
>schnappislav: věř Laacovi, radí ti dobře :-). Něco napiš, hoď sem zdroják a my ti ho zkritizujem a opravíme.
Moje stránka.
>MZetko, Osiris: zajímavý nápad, ale naprogramovat čtečku XML (pokud vím, tak v Pascalu standardně neexistuje, nebo jo?)
Také nevím o tom, že by existovala. Byl to jen návrh.
Ale ostatně by to zase nemuselo být tak náročné, alébrž je pravděpodobné, že se člověk nebude muset moc v souboru vracet, a když už, tak po dokončení jednoho testování se program pravděpodobně bude ptát co dál zkoušet.
Je to ale přece jen programování navíc. Avšak programátor často musí vydržet i tlak nad 1 000 MPa :smile6: .
Každopádně by naprogramovaná třída XMLSoubor program dost zjednodušila a zespolehlivěla (hezké slovo, co? :smile5: ) .
Je to výzva, Schnappislav :smile2: !
OT: Jsem to ale vůl, vždyť "vícetypový" soubor se dá vytvořit jednoduše tak, že si definujeme vlastní strukturovaný typ a uděláme binární soubor, ve kterém budou uloženy hodnoty našeho vlastního typu:-D Tak jednoduché, že se za sebe musím až stydět, že mně to nenapadlo dřív.
Ale i tak se chci zeptat Mircosofta: Co že jsi to vlastně navrhoval s tím BlockRead a BlockWrite (abych pravdu řekl, s těmito metodami jsem se ještě jaktěživ nesetkal), prosím o jednoduchý popis jak to funguje.
Tyhle procedury jsou z jednotky System, čili vestavěné.
Deklarace souboru:
var soubor:file;
Otevření souboru:
reset(soubor,velikost_bloku);
nebo
rewrite(soubor,velikost_bloku);
Hodnota velikost_bloku určuje, po jak velkých blocích chceme číst nebo psát. V běžném typovém souboru (file of něco) je velikost bloku jasná (velikost_bloku=sizeof(něco)), proto se tam nepíše. U netypového souboru je všechno na nás. Nejuniverzálnější je, když dáme velikost 1, pak 1 blok = 1 byte. Pokud velikost neuvedeme, použije se defaultní hodnota 128 B (což obvykle nechceme).
Čtení:
blockread(soubor,promenna,kolik);
nebo
blockread(soubor,promenna,kolik,opravdu_precteno);
V prvním případě načteme do Proměnné Kolik bloků z daného Souboru. Jestli jsme při otvírání nastavili velikost bloku na 1, je tohle číslo rovné počtu bytů, které chceme načíst (neboli obvykle velikosti té proměnné). Pokud při čtení nastane chyba, řeší to klasicky Ioresult nebo automatická kontrola I/O.
V druhém případě se v posledním parametru vrátí počet bloků, které se skutečně podařilo přečíst. Pokud se nerovná zadané hodnotě Kolik, víme, že nastala chyba. Ioresult ani automatická kontrola teď nedělají vůbec nic.
Zápis:
blockwrite(soubor,promenna,kolik);
nebo
blockwrite(soubor,promenna,kolik,opravdu_zapsano);
Obdobně.
Zavírání souboru přes Close funguje pořád stejně.
A příklad použití?
var f:file;
i:integer;
s:string;
ch:char;
r:real;
BEGIN
assign(f,'bla.bla');
rewrite(f,1);
blockwrite(f,i,2);
blockwrite(f,s,sizeof(s));
blockwrite(f,ch,1);
blockwrite(f,r,6);
close(f);
END.
Jdou dělat i takové prasárny jako zápis necelé proměnné (třeba jenom prvních x prvků z nějakého velkého pole), podobně jako u Move. Jenom si pak musíme poznamenat, co jsme to vlastně zapsali, abychom to pak vůbec přečetli :-).
Moje stránka.
jo, tak to je hodně dobré, doteď jsem nevěděl že se v Pascalu dá se soubory dělat něco takového. S tím si zkusím pohrát:-D. Dík za objasnění, Mircosofte.
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Prosím help me — založil bery-p
Prosím o radu — založil orei
Prosím o radu — založil Buránek
Prosím o hodnotenie :) — založil Majox
PROSÍM, POMOZTE — založil Jakub Chábek
Moderátoři diskuze