Basic - témata k procvičování

Doc. Dr. Vladimír Homola, Ph.D.

Řešení některých příkladů je v jednom modulu v sešitu Excelu, který je možno najít zde. Z každé kategorie to jsou vždy dva tři příklady, většinou ty první.

A. Nejjednodušší úlohy bez větvení a cyklů

  1. Sestavte program, který se zeptá na počet dnů a pak na počet hodin. Poté zobrazí, kolik je to celkem minut.

  2. Sestavte program, který se zeptá nejdříve na délku jedné a pak na délku druhé odvěsny pravoúhlého trojúhelníka. Poté zobrazí délku přepony takového trojúhelníka.

  3. Sestavte program, který se zeptá na teplotu v 6 hodin ráno, pak na teplotu v poledne a nakonec na teplotu v 18 hodin večer. Poté zobrazí průměrnou denní teplotu.

  4. Sestavte program, který se zeptá na rychlost v [km/h]. Poté zobrazí tutéž rychlost v [m/sec].

  5. Sestavte program, který se zeptá na celé kladné číslo menší než 256. Poté zobrazí součet cifer jeho trojnásobku.

  6. Sestavte program, který se zeptá na částku uloženou v bance a pak na velikost úroků v [%]. Poté zobrazí, kolik úroků přibude na účtu za jeden rok.

  7. Sestavte program, který se zeptá na průměr vašeho kruhového bazénu a poté na jeho výšku (obojí v metrech). Poté zobrazí, kolik tun vody se do něj vejde (1 m3 vody = 1 tuna).

  8. Sestavte program, který se zeptá na délku běžecké trati v metrech a poté na čas běžce na této trati ve vteřinách. Poté zobrazí, jakou průměrnou rychlostí v [km/hod] běžec běžel.

B. Podmíněné příkazy

  1. Sestavte program, který načte hodnotu čísla X a dále hodnotu čísla Y. Poté zobrazí, zda daná dvojice splňuje nerovnost 2X+3<5Y-1.

  2. Sestavte program, který načte hodnotu celého čísla X a dále hodnotu celého čísla Y. Poté zobrazí, zda číslo X je dělitelné číslem Y.

  3. Sestavte program, který načte hodnotu čísla X a dále hodnotu čísla Y. Poté zobrazí hodnotu výrazu 1/XY - ovšem ošetřuje přitom nepovolené kombinace X a Y (jmenovatel nesmí být nula); v případě nepovolené kombinace zobrazí ne hodnotu, ale upozorňující hlášení.

  4. Sestavte program, který postupně načte tři čísla. Poté zobrazí nejprve největší, pak prostřední a nakonec nejmenší ze zadaných hodnot.

  5. Sestavte program, který postupně načte délku trasy S1 a čas T1, za který trasu S1 ujelo první auto, a pak délku trasy S2 a čas T2, za který trasu S2 ujelo druhé auto. Poté program postupně zobrazí, jakou průměrnou rychlostí jelo první auto, jakou průměrnou rychlostí  jelo druhé auto a které z aut je rychlejší a o kolik.

  6. Sestavte program, který postupně načte jméno a výšku prvního žáka, a jméno a výšku druhého žáka. Poté zobrazí jméno vyššího z nich.

C. Cykly bez pole

  1. Sestavte program, který zobrazí tabulku funkce sinus od 0 do 0.1 s krokem 0.02.

  2. Sestavte program, který nejprve čte řadu čísel ukončených nulou, která už do řady nepatří. Poté zobrazí počet čísel, jejich součet a průměr.

  3. Sestavte program, který nejprve čte řadu čísel ukončených nulou, která už do řady nepatří. Poté zobrazí nejmenší a největší z nich.

  4. Sestavte program, který nejprve čte řadu celých čísel ukončených nulou, která už do řady nepatří. Poté zobrazí sudé z nich, vždy po 4 na řádku.

  5. Sestavte program, který nejprve čte řadu čísel ukončených nulou, která už do řady nepatří. Poté zobrazí, kolik z nich je větších než první.

  6. Sestavte program, který nejprve čte řadu čísel ukončených nulou, která už do řady nepatří. Poté zobrazí ciferný součet všech zadaných čísel.

  7. Sestavte program, který nejprve čte řadu čísel ukončených nulou, která už do řady nepatří. Poté zobrazí největší součet tří po sobě jsoucích čísel.

  8. Sestavte program, který nejprve čte řadu čísel ukončených nulou, která už do řady nepatří. Poté zobrazí, zda jsou čísla seřazena vzestupně.

  9. Sestavte program, který nejprve čte řadu čísel ukončených nulou, která už do řady nepatří. Poté zobrazí, kolik v ní je lichých čísel.

  10. Sestavte program, který nejprve čte řadu čísel ukončených nulou, která už do řady nepatří. Poté program zobrazí nejmenší z čísel a informaci, kolikrát se v posloupnosti opakuje.

  11. Sestavte program, který nejprve čte řadu čísel ukončených nulou, která už do řady nepatří. Poté zobrazí, kolikátý prvek v řadě porušuje vzestupné řazení čísel.

  12. Sestavte program, který nejprve čte řadu čísel ukončených nulou, která už do řady nepatří. Poté zobrazí, zda čísla tvoří aritmetickou posloupnost (rozdíl dvou sousedních je vždy tentýž).

  13. Škola má několik tříd, v každé třídě je několik žáků. Sestavte program, který postupně čte počty žáků v každé třídě (nulový počet znamená konec načítání). Poté zobrazí počet tříd a průměrný počet žáků v každé třídě.

  14. Máte schované účtenky z několika nákupů. Sestavte program, kterému postupně zadáte celkovou částku z každé účtenky (nulová částka ukončuje načítání). Program poté zobrazí, kolik jste při těchto nákupech utratili celkem a kolik nákupů bylo dražších než 100 Kč.

  15. Sestavte program, který nejprve čte platy zaměstnanců firmy ukončených platem ředitele, který jediný je větší než 100.000.- Kč. Poté zobrazí, kolik firma potřebuje peněz na výplaty.

  16. Sestavte program, který nejprve zjistí první a druhý člen aritmetické řady a počet členů řady. Poté zobrazí všechny členy řady.

  17. Sestavte program, který postupně čte nejprve jméno a pak výšku žáka. Prázdné jméno načítání ukončuje. Poté zobrazí jméno a výšku nejvyššího žáka.

D. Cykly a náhodný generátor

  1. Sestavte program, který vygeneruje deset náhodných celých čísel z intervalu <-10,+10>. Poté zobrazí, kolik z těchto čísel bylo záporných.

  2. Sestavte program, který vytáhne pět čísel Sportky - simulací generováním pěti různých celých čísel z intervalu <1,49>. Poté tažená čísla zobrazí.

  3. Sestavte program, který se nejprve zeptá na počet hodů kostkou. Pak tolikrát "hodí kostkou" a zobrazí, kolikrát padla jednotlivá čísla celkem a percentuelně.

  4. Sestavte program, který vygeneruje 1000 náhodných celých čísel v intervalu <10,50>. Poté zobrazí, o kolik se jejich průměrná hodnota liší od středu intervalu, tj. od 30.

  5. Sestavte program, který se nejprve zeptá na celočíselné hodnoty A a B (A<B) a na počet N. Pak vygeneruje N náhodných celých čísel z intervalu <A,B> a nakonec zobrazí, o kolik se liší jejich průměrná hodnota od středu intervalu.

  6. Sestavte program, který si myslí číslo z intervalu <1,10>. Pak ho vy hádáte a nakonec program sdělí, na kolikátý pokus jste se strefili.

  7. Sestavte program, který náhodně skočí 20x do dálky. Nikdy neskočí méně než 3 metry a více než 7 metrů. Až doskáče, zobrazí skoky a informaci, kolikrát se strefil na 4m ± 10cm.

  8. Sestavte program, který za vás zahraje poslední úder do golfového míčku. Stojíte 3 metry od jamky o průměru 10cm a na ty 3 metry má vaše chvějící se ruka rozptyl ± 1m. Kolikrát ze 100 úderů se strefíte?

E. Cykly a pole

  1. Sestavte program, který nejprve načte posloupnost celých čísel (je jich méně než 100) ukončených nulou, která už do řady nepatří. Poté zobrazí sudé z nich, vždy po 4 na řádku.

  2. Sestavte program, který nejprve načte posloupnost čísel (je jich méně než 100) ukončených nulou, která už do posloupnosti nepatří. Poté program zobrazí nejmenší z nich a informaci, kolikrát se v posloupnosti opakuje.

  3. Sestavte program, který nejprve načte posloupnost čísel (je jich méně než 100) ukončených nulou, která už do posloupnosti nepatří. Poté program zobrazí jejich průměr a hodnotu čísla nejbližšího průměru.

  4. Sestavte program, který nejprve načte posloupnost čísel (je jich méně než 100) ukončených nulou, která už do posloupnosti nepatří. Poté program zobrazí průměr čísel na lichých místech a průměr čísel na sudých místech.

  5. Sestavte program, který nejprve načte posloupnost čísel (je jich méně než 100) ukončených nulou, která už do posloupnosti nepatří. Poté program spočte průměr MZ záporných čísel a průměr MK kladných čísel. Nakonec zobrazí všechna čísla z intervalu <MZ,MK>.

  6. Sestavte program, který nejprve načte posloupnost čísel (je jich méně než 100) ukončených nulou, která už do posloupnosti nepatří. Poté program zobrazí všechny číselné hodnoty seřazené od nejmenší po největší.

  7. Sestavte program, který nejprve načte posloupnost čísel (je jich méně než 100) ukončených nulou, která už do řady nepatří. Poté zobrazí, zda čísla tvoří aritmetickou posloupnost (diference = rozdíl dvou sousedních je vždy tentýž). Pokud ano, zobrazí i diferenci.

  8. Sestavte program, který nejprve načte posloupnost čísel (je jich méně než 100) ukončených nulou, která už do řady nepatří. Poté zobrazí, kolikrát se která hodnota v posloupnosti vyskytuje.

  9. Sestavte program, který načte matici celých čísel 5x5 po řádcích. Poté zobrazí počet jejich prvků, která jsou větší než nula.

  10. Sestavte program, který načte matici celých čísel 5x5 po řádcích. Poté zobrazí, kolik jejich prvků je lichých a kolik sudých.

  11. Sestavte program, který načte matici celých čísel 5x5 po řádcích. Poté zobrazí nejmenší hodnotu prvku matice a indexy všech prvků matice s touto minimální hodnotou.

  12. Sestavte program, který načte matici celých čísel 5x5 po řádcích. Poté zobrazí všechny její prvky, které se v matici vyskytují jen jednou.

  13. Sestavte program, který načte matici celých čísel 5x5 po řádcích. Poté ji zobrazí překlopenou kolem svislé osy.

  14. Sestavte program, který načte matici celých čísel 5x5 po řádcích. Poté ji zobrazí překlopenou kolem hlavní diagonály ("úhlopříčky" zleva shora doprava dolu).

  15. Sestavte program, který načte matici celých čísel 5x5 po řádcích. Poté zobrazí, zda je symetrická podle vodorovné osy.

  16. Sestavte program, který načte matici celých čísel 5x5 po řádcích. Poté zobrazí všechna lokální minima. Lokálním minimem je přitom takový prvek matice, který sousedí (zleva, zprava, shora nebo zdola - nikoliv diagonálně) jen s většími hodnotami.

  17. Sestavte program, který se nejprve zeptá na počet hodů kostkou. Pak tolikrát "hodí kostkou" a zobrazí, kolikrát padla jednotlivá čísla celkem a percentuelně.

Příklady 1 až 8 modifikujte takto:

F1. Podprogramy a funkce

  1. Sestavte funkci ObratText s jedním parametrem - textovým řetězcem. Výsledkem volání funkce je tentýž textový řetězec, ale má znaky v obráceném pořadí. Funkci ověřte na zadání: sestavte program, který načte textový řetězec a zobrazí ho v obráceném pořadí znaků.

  2. Sestavte funkci BezMezer s jedním parametrem - textovým řetězcem. Výsledkem volání funkce je tentýž textový řetězec, ve kterém však jsou vypuštěny všechny mezery. Funkci ověřte na zadání: sestavte program, který načte textový řetězec a zobrazí ho tak, že v něm jsou vypuštěny všechny mezery.

  3. Sestavte funkci Vyskyty se dvěma parametry - textovými řetězci. Druhý parametr se přitom vždy předpokládá jednoznakový řetězec, tj jediný znak. Výsledkem volání funkce je počet opakování druhého parametru v parametru prvním. Funkci ověřte na zadání: sestavte program, který načte textový řetězec a zobrazí počet písmen "A" v tomto řetězci.

  4. Sestavte funkci Minuty, která má tři parametry určujících časový údaj: hodiny, minuty a vteřiny. Výsledkem volání funkce je počet minut vyjadřujících tento časový údaj. Funkci ověřte na zadání: sestavte program, který načte počet hodin, minut a vteřin a zobrazí, kolik je to minut.

  5. Sestavte funkci Kurs, která má dva parametry: prvním je číslo ve významu korun, druhým je tříznakový řetězec ve významu kódu měny. Výsledkem volání funkce je částka v dané měně, rovnající se danému počtu korun (nebo hodnota -1, jestliže jde o měnu, pro kterou není kurs znám). Funkci ověřte na zadání: sestavte program, který načte počet eur (EUR) a zobrazí, kolik je to dolarů (USD).

  6. Sestavte funkci PrestupRok, která má jako jediný parametr celé číslo ve smyslu čísla roku včetně století. Výsledkem volání je logická (boolean) hodnota Ano v případě, že rok uvedený jako parametr je přestupný, Ne pro nepřestupné roky. Funkci ověřte na zadání: sestavte program, který načte číslo roku a zobrazí informaci, zda je rok přestupný. Vyzkoušejte i pro léta 1900 a 2000.

  7. Sestavte funkci DelkaRoku, která má jediný parametr - celé číslo ve smyslu čísla roku včetně století. Výsledkem volání funkce je délka roku ve dnech. Funkci ověřte na zadání: sestavte program, který načte číslo roku a zobrazí informaci, zda je rok přestupný. Vyzkoušejte i pro léta 1900 a 2000.

  8. Sestavte funkci PocetDniMesice, která má jako jediný parametr číslo měsíce. Výsledkem volání funkce je počet dní tohoto měsíce (nebo -1, není-li hodnota měsíce správná). Přestupné roky pro únor neuvažujte. Funkci ověřte na zadání: sestavte program, který načte číslo měsíce a poté zobrazí, kolik dní má tento měsíc. Vyzkoušejte i pro měsíc = 13.

  9. Sestavte funkci PocetDniMesP, která má dva parametry: číslo měsíce a číslo roku včetně století. Výsledkem volání funkce je počet dní tohoto měsíce (nebo -1, není-li hodnota měsíce správná); funkce akceptuje přestupné roky. Funkci ověřte na zadání: sestavte program, který postupně načte číslo měsíce a číslo roku, a poté zobrazí, kolik dní má tento měsíc. Vyzkoušejte i pro únor let 1900 a 2000, a pak pro měsíc = 13.

  10. Sestavte funkci CisloDne, která má tři parametry: prvním je číslo dne, druhým číslo měsíce, třetím číslo roku včetně století. Výsledkem volání funkce je pořadové číslo zadaného dne v roce (nebo -1, jestliže takové datum neexistuje). Uvažujte i přestupné roky. Při zjišťování výsledku může volat funkce CisloDne předchozí funkci PocetDniMesP. Funkci ověřte na zadání: sestavte program, který postupně načte den, měsíc a rok, a poté zobrazí, kolikátý den v roce to je. Vyzkoušejte i pro den = 32 nebo pro měsíc = 13. Dále vyzkoušejte pro [31/12/1900] a pro [31/12/2000].

  11. Sestavte funkci CisloDneS, která má tři parametry: prvním je číslo dne, druhým číslo měsíce, třetím číslo roku včetně století. Výsledkem volání funkce je pořadové číslo zadaného dne v 19. století - přesněji pořadové číslo dne po [31/12/1899] (nebo -1, jestliže takové datum neexistuje). Uvažujte i přestupné roky. Funkce dle předchozích odstavců používejte dle libosti. Funkci ověřte na zadání: sestavte program, který postupně načte den, měsíc a rok, a poté zobrazí, kolikátý den v roce to je. Vyzkoušejte i pro den = 32 nebo pro měsíc = 13. Dále vyzkoušejte pro [31/12/1900] a pro [31/12/2000].

F2. Funkce a pole

  1. Sestavte funkci PocetVyskytu, která má dva parametry: Prvním je jednorozměrné pole čísel A, druhým je číslo C. Výsledkem funkce je celé číslo udávající, kolikrát se číslo C vyskytuje v poli A. Funkci ověřte na zadání: sestavte program, který postupně načte pole A a hodnotu C, a poté zobrazí počet výskytů hodnoty C v poli A.

  2. Sestavte funkci PocetPadlych, která má jediný parametr: kolikrát se má hodit kostkou. Výsledkem funkce je jednorozměrné celočíselné pole udávající, kolikrát padla ta která hodnota na kostce. Funkci ověřte na zadání: sestavte program, který se zeptá na počet hodů, a pak zobrazí, kolikrát každé číslo padlo.

  3. Sestavte funkci SudaCislaZpole, která má jediný parametr: pole celých čísel. Výsledkem funkce je jednorozměrné celočíselné pole, ve kterém jsou jen sudá čísla obsažená v poli parametru. Funkci ověřte na zadání: sestavte program, který načte pole celých čísel ukončených nulou, která už k číslům nepatří, a pak zobrazí všechna ze zadaných čísel, která jsou sudá.

  4. Sestavte funkci SerazenePole, která má jediný parametr: pole celých čísel. Výsledkem funkce je jednorozměrné celočíselné pole, ve kterém jsou stejná čísla jako v poli parametru, ale jsou seřazena vzestupně. Funkci ověřte na zadání: sestavte program, který načte pole celých čísel ukončených nulou, která už k číslům nepatří, a pak zobrazí všechna zadaná čísla ve vzestupném pořadí.

G. Práce s textovým souborem

  1. Sestavte program, který vytvoří textový soubor X.Y s tabulkou hodnot [n, n2, n3] pro n od 1 do 30. Tabulka bude vhodně formátovaná, sloupce budou mít nadpisy [N, Druhá mocnina, Třetí mocnina].

  2. Sestavte program, který vytvoří textový soubor X.Y s malou násobilkou - maticí [10 x 10], na i-tém řádku v j-tém sloupci je hodnota [i x j].

  3. Sestavte program, který vytvoří textový soubor X.Y se třiceti řádky takový: na prvním, druhém a třetím řádku jedna hvězdička, na čtvrtém, pátém a šestém řádku dvě hvězdičky atd.

  4. Vytvořte mimo Basic textový soubor A.B; pak sestavte program, který vytvoří soubor X.Y - ten bude zašifrovaným souborem A.B (každý znak z A. bude mít v X.Y kódovou hodnotu např. o 3 vyšší).

  5. Funkci Vyskyty z předchozího odstavce použijte při sestavení programu řešícího následující úlohu: Zjistěte, kolik vět obsahuje textový soubor X.Y - věta je přitom posloupnost znaků ukončených tečkou.

 

 

Rev. 3 / 2023