PHP týden Letní akce
Pouze tento týden sleva až 80 % na kurzy PHP. Lze kombinovat s akcí Letní slevy na prémiový obsah!
Brno? Vypsali jsme pro vás nové termíny školení Základů programování a OOP v Brně!
Avatar
Alex
Redaktor
Avatar
Alex:18. dubna 14:30

Ahoj,
Začal jsem dělat na takové aplikaci, která by měla sloužit k procvičivaní jakých koliv příkladů nebo primitivních úloh z češtiny. Měla by fungovat na principu toho že zkoušející dá do programu příklad a jeho výsledek (řešení). No a já potřebuju, aby se ono řešení před zkušeným skrylo (přeci jen by to pak postrádalo smysl☺).

Zkusil jsem: Zkoušel jsem hledat všude po internetu, ale nikde jsem nenašel to co by mi fungovalo a nebo to byli věci, které nevím jak použít.

Chci docílit: Chci aby to dopadlo asi takto:
Po tom co osoba zadávající text bude se zadáním (zatím jedno slovným) spokojena, programu odsouhlasí, že si je jistá správností svého řešení stiskne enter a předešlé texty odstraní z příkazového řádku (ano zatím to je jen konzolová aplikace)
Díky za radu.

Editováno 18. dubna 14:31
 
Odpovědět 18. dubna 14:30
Avatar
DarkCoder
Redaktor
Avatar
Odpovídá na Alex
DarkCoder:18. dubna 15:03

Příklad určený k procvičení by neměl být vkládán přímo do programu, ale měl by být k programu přikládán v souboru (souborech - separátně zadání, řešení s ohodnocením, a listem úloh). Program by měl sloužit pouze pro zpracování přiložených souborových dat. K otestování by uživatel měl primárně spouštět aplikaci a "nehrabat se" v přiložených souborech. Na tobě jako na tvůrci aplikace je pak jak moc velkou možnost dáš ostatním přistupovat k datům mimo spuštění aplikace. Výsledky může posuzovat oprávněná osoba nebo to celé můžeš automatizovat. Ve druhém případě je pak z hlediska správnosti omezení přístupu nutný. Jak moc data s řešením a ohodnocením ochráníš je už jen a jen na tobě.

Nahoru Odpovědět 18. dubna 15:03
"„Učíš-li se proto, aby sis zapamatoval, zapomeneš. Učíš-li se proto, abys porozuměl, zapamatuješ si."
Avatar
Alex
Redaktor
Avatar
Odpovídá na DarkCoder
Alex:18. dubna 15:34

Diky za radu. Já bych to chtěl udělat tak, aby se tam dal zadat jakýkoliv příklad aniž by ho musel uživatel dělat separátně. Prostě ho vloží, část kde jsou vložené proměnné se skryje a žak to vypočítá. Nakonec to program srovná s výsledkem od učitele a řekne zda je to správně nebo ne.
Ale tvé řešení je zajímavé. Bohužel ještě nemám znalosti na to, abych to realizoval

Editováno 18. dubna 15:36
 
Nahoru Odpovědět 18. dubna 15:34
Avatar
DarkCoder
Redaktor
Avatar
Odpovídá na Alex
DarkCoder:18. dubna 16:05

Významem separátně bylo myšleno oddělení souborů se zadáním, řešení a souborem obsahující jména souborů které má program načíst, nikoli oddělení jednotlivých příkladů. Nic Ti v tom ale nebrání to tak udělat. Oddělenost může představovat jednotlivé úrovně obtížnosti. Vše ale můžeš nacpat do jednoho, je to na tobě. Výhodou rozdělení na samostatné soubory je rychlejší přístup k tomu co potřebuješ. Můžeš samozřejmě sestavit program tak že přijme od učitele zadání, řešení a ohodnocení pod jeho účtem, čímž vše nahraješ přímo do paměti a vše tak bude před studenty skryté. Výsledky pak obdrží pouze učitel které pak následně předá žákům. Možností je opravdu hodně.

To co budeš potřebovat je znalost práce se soubory a s dynamickou alokací paměti.

Nahoru Odpovědět 18. dubna 16:05
"„Učíš-li se proto, aby sis zapamatoval, zapomeneš. Učíš-li se proto, abys porozuměl, zapamatuješ si."
Avatar
Alex
Redaktor
Avatar
Odpovídá na DarkCoder
Alex:18. dubna 16:10

>
To co budeš potřebovat je znalost práce se soubory a s dynamickou alokací paměti.

Takže vše co neumím.

 
Nahoru Odpovědět 18. dubna 16:10
Avatar
DarkCoder
Redaktor
Avatar
Odpovídá na Alex
DarkCoder:18. dubna 16:32

Reálné aplikace pro veškerý vstup používají soubory. Jen ty nejednoduší aplikace využívají data integrovaná uvnitř popř. načtená z příkazového řádku nebo zadaná uživatelem do konzole. Proto je znalost souborového systému pro úspěšné programování nezbytná. Práce s textem je dynamická, je nesmysl si stále někde poznamenávat, kolik místa text zabírá a staticky si tak pro to alokovat paměť. Aplikace musí dýchat, je třeba ji poskytnout právě tolik paměti kolik potřebuje. Žádné plýtvání, žádné omezování. Z tohoto důvodu je nutná znalost dynamické alokace paměti. Z pohledu jazyka C tak musíš znát více méně vše.. Od základních konstrukcí, přes pole, ukazatele, práce se soubory a dynamickou alokaci paměti. Přesně v tomto pořadí, neboť každá z uvedených kapitol vyžaduje znalost té předešlé. Nenech se odradit tím že pro tuto úlohu musíš znát vše. Mnohem náročnější aplikace používají totéž, pouze s drobnými odlišnostmi. Tak to ber tak že je to zároveň i slušný vstupní bod pro zvládnutí všeho co budeš chtít v budoucnu tvořit.

Nahoru Odpovědět  +1 18. dubna 16:32
"„Učíš-li se proto, aby sis zapamatoval, zapomeneš. Učíš-li se proto, abys porozuměl, zapamatuješ si."
Avatar
Alex
Redaktor
Avatar
Odpovídá na DarkCoder
Alex:18. dubna 16:35

Diky

 
Nahoru Odpovědět 18. dubna 16:35
Avatar
Alex
Redaktor
Avatar
Alex:18. dubna 16:37

Určitě se k tomu dostanu, ale zatím jsem u polí, takže mi ještěchbilku bude trvat než se dostanu k dynamickým alokacím.

 
Nahoru Odpovědět 18. dubna 16:37
Avatar
DarkCoder
Redaktor
Avatar
Odpovídá na Alex
DarkCoder:18. dubna 16:58

Abys neztratil motivaci tím, že se musíš nejprve naučit veškerou látku, než se pustíš do tvorby aplikace a neztratil tak drahocenný čas, tak můžeš celé vyřešit následovně:

Znalost polí, podvědomí o tom co jsou ukazatele a jak fungují, souborového systému je podmínkou.

Každou úlohu si zpracovávej do samostatného souboru. Staticky si alokuj pole o velikosti 1kb, což by mohlo být dostačující (Toto je místo, které si ideálně žádá znalost dynamické alokace). Není to závratné plýtvání pamětí a ze zadání se Ti tam toho vejde dost. Zvlášť pokud začneš něčím jednodušším, kde vůbec nepocítíš žádné omezení. Pro přechod mezi jednotlivými úlohami používej tento 1kb buffer, který si vždy před vložením nového obsahu zadání vyprázdníš. Odpovědi žáků posílej do souboru. S tímto si pro začátek vystačíš. Jak budeš postupně aplikaci zlepšovat, sám poznáš, kde jsou rezervy a co je třeba udělat proto aby vše bylo dle tvých představ.

Nahoru Odpovědět 18. dubna 16:58
"„Učíš-li se proto, aby sis zapamatoval, zapomeneš. Učíš-li se proto, abys porozuměl, zapamatuješ si."
Avatar
Alex
Redaktor
Avatar
Odpovídá na DarkCoder
Alex:18. dubna 17:21

Tak si tedy nastuduju souborové systémy a vrátím se k tomu

 
Nahoru Odpovědět 18. dubna 17:21
Avatar
DarkCoder
Redaktor
Avatar
Odpovídá na Alex
DarkCoder:18. dubna 17:33

Přesně tak, bez znalosti práce se soubory se neobejdeš. Když se to tak vezme tak nepotřebuješ žádný vstupní buffer, neboť zadání needituješ, nijak s ním nepracuješ, pouze ho vypisuješ na obrazovku což můžeš udělat přímo ze souboru. Do souboru také můžeš rovnou zapisovat, ale tím už omezuješ studenta, který by chtěl případně svoji odpověď pozměnit.

Nahoru Odpovědět 18. dubna 17:33
"„Učíš-li se proto, aby sis zapamatoval, zapomeneš. Učíš-li se proto, abys porozuměl, zapamatuješ si."
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 11 zpráv z 11.