Vědět víc - vzdělávací portál pro zvídavé

Aritmetika

 

Číslice

Číslice jsou znaky určené k zapisování čísel (podobně jako písmena jsou znaky k zapisování slov). Následující prográmek tedy bude určen nejspíše pro prvňáky. Ale proč ne? Alespoň si na něm vyzkoušíme pár věcí.

Je to zejména práce v grafickém režimu. Můžeme kombinovat příkaz PRINT s příkazy pro kreslení (zde příkaz LINE).

Co program dělá

Program zobrazuje různý počet čárek - čárky reprezentují počítání "něčeho", například jablek, domů nebo piv ;-). Úkolem malého počtáře je přiřadit počtu čárek správnou číslici. Ano, hádáte správně, čárek může být od nuly do devíti. Takže úloha skutečně pro prvňáky (a pro začínající hospodské).

screenshot programu

Jak to funguje

Program stále opakuje jedno cvičení, dokud uživatel na konci příkladu nestiskne klávesu ESC. Poté vypíše statistiku (kolik příkladů bylo správně, kolik šptaně). V rámci cvičení si program vymyslí náhodnou hodnotu od 0 do 9 - je tam sice 10*RND, ale nezapomínejme, že funkce RND generuje číslo v intervalu <0;1), proto číslo 1 nikdy nevygeneruje. Po vynásobení 10 a použití funkce INT získáme celá čísla v intervalu <0;9>

Aby nebyly čárky tak jednotvárné, jsou náhodně šikmé a dlouhé. V určitém malém intervalu generujeme souřadnice x a y, tj. místa, kde čárka začíná a končí. V každém příkladu by tedy měly čárky vypadat trochu jinak.

Program si eviduje celkový počet příkladů, počet správných a chybných odpovědí, aby mohl na konci spočítat statistiku (v zaokrouhlených procentech).

Ke stažení

Program si můžete stáhnout ve dvou verzích. Pro Windows a pro DOS (případně DOSBox).

 Stáhnout verzi pro Windows (2MB)    Stáhnout verzi pro DOS (43 kB)

Zdrojový kód

Níže uvádíme zdrojový kód pro inspiraci. Váš program bude určitě lepší. Uvedený zdrojový kód funguje v QB64 i v DOSovém QBASICu.

            pc = 0
            good = 0
            wrong = 0
            SCREEN 12
            DO
                CLS
                pc = pc + 1
                COLOR 15
                PRINT "Priklad cislo "; pc
                RANDOMIZE TIMER
                x = INT(10 * RND)
                PRINT "Kolik vidite carek (napiste nize a stisknete Enter)?"
                FOR i = 1 TO x
                    ys1 = INT(5 * RND)
                    xs1 = INT(5 * RND)
                    ys2 = INT(5 * RND)
                    xs2 = INT(5 * RND)
                    LINE (70 + 10 * i + xs1, 100 + ys1)-(70 + 10 * i + xs2, 130 + ys2), 15
                NEXT i
                LOCATE 15, 1
                INPUT "Vase odpoved =>>", odpoved
                IF (odpoved = x) THEN
                    COLOR 10
                    PRINT "ANO, to je spravna odpoved."
                    good = good + 1
                ELSE
                    COLOR 12
                    PRINT "NE, to je spatna odpoved. Spravne to je "; x; " carek."
                    wrong = wrong + 1
                END IF
                COLOR 14
                PRINT "ESC - konec, jina klavesa pro pokracovani"
                k$ = INPUT$(1)
            LOOP UNTIL ASC(k$) = 27
            SCREEN 0
            COLOR 14
            PRINT "Vysledky cviceni"
            PRINT "--------------------------"
            COLOR 15
            PRINT "Celkem prikladu:"; pc
            COLOR 10
            PRINT "Spravne:"; good; INT(good * 100 / pc); "%"
            COLOR 12
            PRINT "Spatne:"; wrong; INT(wrong * 100 / pc); "%"
            COLOR 7, 0