Úkoly k předmětu PGA
Evropský sociální fond Praha a EU – Investujeme do vaší budoucnosti
Obsah 1 Proměnné a konstanty ............................................................................................................ 3 1.1 Úkol 1................................................................................................................................ 3 1.2 Úkol 2................................................................................................................................ 3 1.3 Úkol 3................................................................................................................................ 3 1.4 Úkol 4................................................................................................................................ 3 1.5 Úkol 5................................................................................................................................ 3 1.6 Úkol 6................................................................................................................................ 3 2 Podmínky ................................................................................................................................. 4 2.1 Úkol 1................................................................................................................................ 4 2.2 Úkol 2................................................................................................................................ 4 2.3 Úkol 3................................................................................................................................ 4 2.4 Úkol 4:............................................................................................................................... 4 2.5 Úkol 5................................................................................................................................ 5 2.6 Úkol 6................................................................................................................................ 5 2.7 Úkol 7................................................................................................................................ 6 2.8 Úkol 8................................................................................................................................ 7 3 Funkce ..................................................................................................................................... 8 3.1 Úkol 1................................................................................................................................ 8 3.2 Úkol 2................................................................................................................................ 8 3.3 Úkol 3................................................................................................................................ 8 3.4 Úkol 4:............................................................................................................................... 8 3.5 Úkol 5:............................................................................................................................... 8 3.6 Úkol 6a : ............................................................................................................................ 8 3.7 Úkol 6b :............................................................................................................................ 9 3.8 Úkol 7................................................................................................................................ 9 3.9 Úkol 8................................................................................................................................ 9 3.10 Úkol 9.............................................................................................................................. 9 3.11 Úkol 10............................................................................................................................ 9 3.12 Úkol 11: .......................................................................................................................... 9 3.13 Úkol 12............................................................................................................................ 9 4 Cykly ...................................................................................................................................... 10 4.1 Jednoduché cykly ........................................................................................................... 10 4.1.1 Úkol 1....................................................................................................................... 10 4.1.2 Úkol 2....................................................................................................................... 10 4.1.3 Úkol 3....................................................................................................................... 10 4.1.4 Úkol 4....................................................................................................................... 10 4.2 Cykly jako součásti programu......................................................................................... 10 4.2.1 Úkol 1....................................................................................................................... 10 4.2.2 Úkol 2....................................................................................................................... 10 4.2.3 Úkol 3....................................................................................................................... 10 4.2.4 Úkol 4....................................................................................................................... 10 4.2.5 Úkol 5....................................................................................................................... 11 Evropský sociální fond Praha a EU – Investujeme do vaší budoucnosti
1
4.2.6 Úkol 6....................................................................................................................... 11 4.3 Vnořené cykly ................................................................................................................. 11 4.3.1 Úkol 1....................................................................................................................... 11 4.3.2 Úkol 2....................................................................................................................... 11 4.3.3 Úkol 3....................................................................................................................... 11 4.3.4 Úkol 4....................................................................................................................... 11 4.3.5 Úkol 5....................................................................................................................... 12 5 Příkaz Switch.......................................................................................................................... 13 5.1 Úkol 1.............................................................................................................................. 13 5.2 Úkol 2.............................................................................................................................. 13 6 Pole ........................................................................................................................................ 14 6.1 Jednorozměrné pole....................................................................................................... 14 6.1.1 Úkol 1....................................................................................................................... 14 6.1.3 Úkol 3....................................................................................................................... 14 6.1.4 Úkol 4....................................................................................................................... 14 6.2 Vícerozměrné pole ......................................................................................................... 15 6.2.1 Úkol 1....................................................................................................................... 15 6.2.2 Úkol 2....................................................................................................................... 15 6.3 Parametry souboru......................................................................................................... 15 6.3.1 Úkol 1....................................................................................................................... 15 7 Práce se soubory ................................................................................................................... 16 7.1 Úkol 1.............................................................................................................................. 16 7.2 Úkol 2.............................................................................................................................. 16 7.3 Úkol 3.............................................................................................................................. 16 7.4 Úkol 4.............................................................................................................................. 16 7.5 Úkol 5.............................................................................................................................. 16 7.6 Úkol 6.............................................................................................................................. 16
Evropský sociální fond Praha a EU – Investujeme do vaší budoucnosti
2
1 Proměnné a konstanty 1.1 Úkol 1 • •
Vytvořte program, s proměnnou "jmeno" (string) a jako hodnotu do proměnné vložte své jméno v 5. pádu. Nechte program vypsat pozdrav: např. Ahoj Karle, kde zdravené jméno bude Vámi vytvořená proměnná.
1.2 Úkol 2 • •
Vytvořte program na výpočet podílu 2 čísel. Výsledek bude přesný (bez zaokrouhlení).
1.3 Úkol 3 • • • •
vytvořte program, který bude obsahovat 2 proměnné typu int a unsigned int do obou vložte maximální hodnotu čísla a nechte proměnné vypsat k číslům přičtěte jedničku a opět je nechte zobrazit. (výpočet max. hodnoty najdete v prezentaci)
1.4 Úkol 4 • •
• •
vytvořte program pro výpočet obvodu a obsahu kruhu kvůli úspoře paměti definujte v programu pouze 2 proměnné: o prumerKruznice o vysledek dále vytvořte konstantu pi program bude mít smysluplné výstupy na monitor
1.5 Úkol 5 • •
Vytvořte program pro výpočet průměrné spotřeby benzínu na 100 km. Uživatel zadá počet najetých km a počet spotřebovaných litrů benzínu
1.6 Úkol 6 • • •
Vytvořte program, do kterého uživatel zadá postupně osm známek z osmi různých předmětů. Program vypíše průměr známek s tím, že matematika a fyzika mají váhu 2. V případě že bude vážený průměr menší než 1,5, program vypíše: „nemusíte dělat přijímací zkoušky“
Evropský sociální fond Praha a EU – Investujeme do vaší budoucnosti
3
2 Podmínky 2.1 Úkol 1 • •
Vytvořte program na výpočet podílu 2 čísel. Nejdříve uživatel zadá čísla a následně program ověří, zda lze podíl vypočítat.
2.2 Úkol 2 • •
Vytvořte program s proměnnou typu char, která bude uchovávat znak Z nebo M (jedná-li se o muže nebo o ženu) Program vypíše pozdrav Vážená paní nebo Vážený pane, v souvislosti na zadaném pohlaví
2.3 Úkol 3 • • •
Rozšiřte úkol 2 Pohlaví zadá uživatel pokud uživatel zadá jiný znak než je m (M) nebo z (Z), program vypíše chybu
2.4 Úkol 4: • • •
Vytvořte program s booleovskou proměnnou zasah a přiřaďte do ní hodnotu true nebo false (bez uvozovek) Vytvořte podmínku, která vypíše „zásah do černého“, pokud je zasah nastaven na true. V opačném případě program vypíše „vedle“ Poznámka: o Tento program slouží k vyzkoušení booleovské proměnné
Evropský sociální fond Praha a EU – Investujeme do vaší budoucnosti
4
2.5 Úkol 5 • • •
Vytvořte program, který ukáže, zda student bude na školu přijat automaticky, nebo až na základě přijímací zkoušky. Aby byl student přijat automaticky, musí mít průměr známek maximálně 1,2 Uživatel pouze zadá průměr studenta a program vypíše, zda je přijat automaticky, nebo půjde k přijímací zkoušce
2.6 Úkol 6 • • •
• • •
Upravte program z úkolu 5. Student zadá známky z těchto předmětu: matematika, fyzika, čeština, chemie, přírodopis, zeměpis, dějepis, občanská výchova. Program vypočítá vážený průměr, přičemž průměr z matematiky a fyziky bude mít váhu 2 a ostatní 1. o Nápověda: známky se sečtou s tím, že známky z matematiky a fyziky budou započítány 2x. následně se součet vydělí 10 Vypočítaný průměr se zobrazí. Student bude přijat bez přijímacího řízení, pokud je vážený průměr maximálně 1,2 a zároveň má z matematiky 1. Rozšíření: o Student bude přijat bez přijímacího řízení, pokud je vážený průměr maximálně 1,2 a zároveň má 1 z matematiky nebo fyziky (alespoň z jednoho z těchto dvou předmětů).
Evropský sociální fond Praha a EU – Investujeme do vaší budoucnosti
5
2.7 Úkol 7 • • •
•
Vytvořte program, který napíše dopis podle vzoru zda bude oslovení Vážená paní nebo Vážený pane, vyhodnotí program na základě podmínky použité proměnné: o char pohlaviPrijemce; (M) o string jmenoPrijemce; (Petr) o string prijmeniPrjemce; (Klubal) o string titulPrijemce; (Dr.) o string osloveniPrijemce; (Doktore) o string ulice; (Podomni) o int cisloPopisne; (525) o string mesto; (Praha) o string psc; (102 00) Výstup programu: o (O tom, zdali se vypíše „Vážená paní“ nebo „Vážený pane“ rozhodne podmínka, kde se bude testovat proměnná pohlaviPrijemnce)
Adresa: Dr. Petr Klubal Podomni 525 120 00 – Praha
Vazeny pane Doktore, radi bychom Vas informovali o nadchazejici schůzce, která se uskutecni ve stredu 28. 11. 2012 v mistni restauraci. Potvrdte prosim svou ucast. Tesime se na shledanou, zastupci bytoveho druzstva Poznámka: • V praxi na podobném principu funguje např. hromadná korespondence v programu MS Word. Bylo by ale možné podobně zasílat i hromadné emaily. V tomto programu zadáte hodnoty proměnných ručně – v praxi by existovala databáze kontaktů a hodnoty proměnných by se načítaly z ní.
Evropský sociální fond Praha a EU – Investujeme do vaší budoucnosti
6
2.8 Úkol 8 • •
• • • •
•
Vytvořte program, který zobrazí informace o Vaší oblíbené knize. Program bude obsahovat proměnné: o String: nazevKnihy, autorKnihy, isbn o Int: rokVydani, pocetStran, o Bool: precteno o Short int: hodnoceni; o String: strucnyPopis. Program po svém spuštění vypíše informace o knize (autor, název, rok vydání, počet stran) Dále vypíše přečteno: ANO nebo NE. Pokud kniha byla přečtena, program vypíše také hodnocení (1 – 5 bodů) a stručný popis. Pokud kniha nebyla přečtena, program zobrazí menu: o Stiskněte 1 pro přečtení knihy Pokud bude stisknuta klávesa „1“, program změní hodnotu proměnné precteno na true. Následně Program vyzve k vložení hodnocení a stručného popisu. o Stiskněte 2 pro ukončení programu Poznámka: V praxi by mohla existovat databáze několika knih. Program by mohl nejprve zobrazit seznam knih a po kliknutí resp. vybrání nějaké konkrétní knihy by se spustil Váš podprogram pro prohlížení nebo editaci. Hodnoty proměnných zadejte sami, ale ve zmiňovaném programu by se samozřejmě načetly hodnoty proměnných z databáze.
Příklad knihy: • Autor: Jeffery Deaver • Název: Modrá sféra • Rok vydání: 2001 • Isbn: 80-7303-047-0 • Počet stran: 408
Evropský sociální fond Praha a EU – Investujeme do vaší budoucnosti
7
3 Funkce 3.1 Úkol 1 Vytvořte funkci, která vypíše text „Ahoj světe“ (funkce nepřijímá žádné parametry, ani nic nevrací).
3.2 Úkol 2 Vytvořte funkci, která vrátí řetězec, ve kterém je uložen datum 17.12.2012 (funkce nic nepřijímá, ale vrací řetězec).
3.3 Úkol 3 Vytvořte funkci, která vrátí druhou mocninu zadaného čísla (funkce přijímá jedno číslo a vrací jeho druhou mocninu).
3.4 Úkol 4: Vytvořte funkci, která vypočítá obvod obdélníka (funkce přijímá 2 strany a vrací obvod).
3.5 Úkol 5: Vytvořte program na dělení 2 čísel. Dále funkci, která vrací true, lze příklad vypočítat a false, pokud je jmenovatel roven 0. Uživatel zadá 2 čísla a program na základě vyhodnocení fce buď vytiskne výsledek, nebo napíše „příklad nemá řešení v R“.
3.6 Úkol 6a : Zkuste odhadnout, co bude výstupem programu: #include
using namespace std; void zmena(int a, int b) { a++; b--; } int main() { int a = 5, b = 5; zmena(a,b); cout<<"promenna a je: "<
8
3.7 Úkol 6b : Zkuste odhadnout, co bude výstupem programu: #include using namespace std; int a = 5, b = 5; void zmena() { a++; b--; } int main() { zmena(); cout<<"promenna a je: "<
3.8 Úkol 7 Vytvořte program, který bude mít globální celočíselnou proměnnou vek. Dále funkci zestarni(), která při každém zavolání zvýší věk o 1.
3.9 Úkol 8 Napište funkci, která vrátí absolutní hodnotu čísla. Číslo zadá uživatel.
3.10 Úkol 9 Napište funkci, která přijme číslo ve stupních a vrátí číslo v radiánech. Číslo ve stupních zadá uživatel a program ověří, zda je číslo v intervalu <0; 360>. Nápověda: 180°= π rad
3.11 Úkol 10 V programu bude proměnná svetlo (bool). Vytvořte funkci stiskniVypinac(), která změní stav proměnné svetlo (tzn. rozsvítí nebo zhasne).
3.12 Úkol 11: Vytvořte funkci pro výpočet trojčlenky. Funkce přijímá 4 parametry: a, b, c (int) a umernost (bool).
3.13 Úkol 12 Vytvořte program, který náhodně vybere číslo <0;5> a uživatel musí číslo uhodnout. Vygenerování náhodného čísla 0 – 5: srand(time(0)); rand()%6; Evropský sociální fond Praha a EU – Investujeme do vaší budoucnosti
int nahoda =
9
4 Cykly 4.1 Jednoduché cykly 4.1.1 Úkol 1 Napište program, který vypíše sudá čísla. Poslední vypsané číslo bude 100.
4.1.2 Úkol 2 Napište program, který vypíše lichá čísla. Poslední liché číslo bude 99.
4.1.3 Úkol 3 Napište program, který vypíše mocniny dvojky menší než 30 000.
4.1.4 Úkol 4 Napište program, který vypíše prvních 20 čísel Fibonacciho posloupnosti. První číslo je vždy 0; druhé vždy 1; Další čísla jsou vždy součtem dvou předchozích čísel
4.2 Cykly jako součásti programu 4.2.1 Úkol 1 Napište program, do kterého uživatel zadá postupně 5 čísel. Po zadání pátého čísla program napíše jejich součet a průměr.
4.2.2 Úkol 2 Napište program, do kterého bude uživatel postupně zadávat čísla. Až uživatel zadá číslo 0, program napíše počet čísel, jejich součet a průměr.
4.2.3 Úkol 3 Napište program, který náhodně vybere číslo od 0 do 10. Uživatel musí číslo uhodnout. Jakmile číslo uživatel uhodne, program vypíše, na kolikátý pokus se uživatel trefil. Použijte cyklus DO-WHILE
4.2.4 Úkol 4 Napište funkci na vypočítání mocniny. Funkce přijímá 2 celočíselné parametry (int). 1. Parametr je mocněnec a druhý mocnitel. Uvědomte si skutečnost, že x0 = 1 a x1 = x.
Evropský sociální fond Praha a EU – Investujeme do vaší budoucnosti
10
4.2.5 Úkol 5 Napište program pro výpočet obsahu čtverce. Vždy po zobrazení výsledku dá program uživateli vybrat, zda chce vypočítat další obsah, nebo zda chce program ukončit. (využijte cykly a funkce)
4.2.6 Úkol 6 Upravte úkol číslo 7, kde uživatel hádá číslo od 0 do 10: • • •
uživatel bude mít pouze 5 pokusů bude využit cyklus FOR nápověda: pokud uživatel vyhraje, použijte příkaz break.
4.3 Vnořené cykly 4.3.1 Úkol 1 Upravte program z úkolu 10 tak, aby měl uživatel na konci hry možnost hrát ještě jednou, nebo hru ukončit.
4.3.2 Úkol 2 Vytvořte program, který vypíše tahák na malou násobilku pro žáky (pro čísla 1 - 9).
4.3.3 Úkol 3 Napište program, který vypíše (pod sebe) čísla od 2 do 100. Za každé číslo napíše všechny možné dělitele, kterými lze vypsané číslo dělit beze zbytku. (např. pro číslo 8: 2 4; pro číslo 9: 3, atd.)
4.3.4 Úkol 4 Napište program, který vykreslí „schody“ z hvězdiček. Počet schodů zadá uživatel (využijte vnořený cyklus FOR).
Evropský sociální fond Praha a EU – Investujeme do vaší budoucnosti
11
4.3.5 Úkol 5 Co vypíše následující program? int a = 5, b = 6, c = 3; for (int i=0;i<5;i++) { a++;b++; c++; for (int j=4;j>1;j--) { if (j == 3) continue; a--; b++; c = 1; } b--; c--; if (i == 1) break; } cout<<"a: "<
Evropský sociální fond Praha a EU – Investujeme do vaší budoucnosti
12
5 Příkaz Switch 5.1 Úkol 1 Napište program, pro hodnocení filmů. Uživatel zadá počet bodů (1 - 5) a na základě počtu bodů program vypíše, zda se jedná o film: špatný (1), podprůměrný (2), průměrný (3), nadprůměrný (4) a výborný (5). Pokud uživatel zadá něco jiného, program vypíše: „neplatné hodnocení“.
5.2 Úkol 2 Napište program „Menu“ ve kterém uživatel bude moci volit z pěti možností. Po zvolení možnosti program pouze vypíše, jakou možnost uživatel zvolil (např. zvolili jste možnost 5) a opět se objeví menu. Poslední položkou menu bude „opustit program“. Pokud uživatel zadá špatný vstup, program vypíše: „nesprávný vstup“. Nápověda: využijte cyklus a příkaz switch. Nápověda: nepoužívejte pro vstup uživatele int ale char.
Evropský sociální fond Praha a EU – Investujeme do vaší budoucnosti
13
6 Pole 6.1 Jednorozměrné pole 6.1.1 Úkol 1 Vytvořte program, do kterého uživatel postupně zadá 10 čísel. Čísla budou uložená v jednorozměrném poli. Program dále upravte: • • • •
Program pole vypíše (index : hodnota) o Použijte cyklus Dále program vypíše součet a průměr čísel v poli. Program zobrazí maximální a minimální hodnotu v poli. Seřaďte pole algoritmem bubble-sort
6.1.2 Úkol 2 Vytvořte pole jmen. Uživatel zadá číslo indexu a program vypíše jméno, které k indexu patří.
6.1.3 Úkol 3 Napište program na losování loterie. Program vylosuje 5 čísel z 20 (Pozor: čísla nesmí být stejná).
6.1.4 Úkol 4 Vytvořte pole znaků, které programem naplňte. Uživatel následně zadá znak a program vypíše, kolik těchto znaků pole obsahuje. Např. v poli je uloženo: „Ahoj svete“; uživatel zadá ‚e‘, program vypíše 2.
Evropský sociální fond Praha a EU – Investujeme do vaší budoucnosti
14
6.2 Vícerozměrné pole 6.2.1 Úkol 1 Vytvořte dvourozměrné pole, které bude představovat 10 bodů na ploše. Každý bod má svou x-ovou a y-ovou složku. Po spuštění program pouze vypíše body (body budou přímo uloženy v programu, nemusí je zadávat uživatel). • • [0] [1]
[0] 5 5
V příklad ukazuje pole bodů, tvořící lineární přímku Např. první bod: X = pole[0][0] = 5 a Y = pole[1][0] = 5. [1] 6 6
[2] 7 7
[3] 8 8
[4] 9 9
[5] 10 10
[6] 11 11
[7] 12 12
[8] 13 13
[9] 14 14
6.2.2 Úkol 2 Vytvořte dvourozměrné pole 5 x 5 a naplňte jej prvky podle obrázku a vypište. Dále program prohodí prvky nad a pod diagonálou a opět pole vypíše.
6.3 Parametry souboru 6.3.1 Úkol 1 Vytvořte program, který bude spuštěn s parametrem. Jako parametr uživatel zadá své jméno v 5. pádu. Pokud uživatel parametr zadá, program ho pozdraví. Pokud zadá nesprávný počet parametrů, program vypíše chybu.
Evropský sociální fond Praha a EU – Investujeme do vaší budoucnosti
15
7 Práce se soubory 7.1 Úkol 1 Programem vytvořte soubor info.txt a uložte do něj své jméno.
7.2 Úkol 2 Do vytvořeného souboru info.txt přidejte další řádek: třídu.
7.3 Úkol 3 Vytvořte program, přečte soubor a vytvoří jeho kopii. (Můžete použít dříve vytvořený soubor info.txt)
7.4 Úkol 4 Vytvořte program, který načte soubor a zjistí, kolik má řádků – počet řádků vypíše. (Můžete použít dříve vytvořený soubor info.txt)
7.5 Úkol 5 Vytvořte program, který vygeneruje HTML stránku s titulkem a nadpisem. Vytvoříte tedy soubor typu html.
7.6 Úkol 6 Vytvořte program pro sběr údajů. Do programu bude uživatel postupně zadávat čísla a zadaná čísla budou zapisována do souboru. V další části program čísla načte ze souboru do pole, seřadí je a vytvoří HTML stránku. HTML stránka bude obsahovat titulek, nadpis a tabulkou s naměřenými hodnotami. •
•
Vytvořte funkci vytvorTXT o Ve funkci vytvor bude uživatel zadávat hodnoty. Pro ukončení zadávání zadá uživatel nulu. o Na začátku funkce vytvořte soubor cisla.txt a každé zadané číslo do souboru vložte (na samostatný řádek) Vytvořte funkci vytvorHTML o Funkce otevře soubor cisla.txt pro čtení a zjistí, kolik obsahuje řádků. o Dále vytvořte pole, do kterého program uloží jednotlivá čísla (řádky). o Pole seřaďte libovolným algoritmem o Následně program vytvoří soubor cisla.html, který bude obsahovat titulek, nadpis a tabulku seřazených čísel.
Evropský sociální fond Praha a EU – Investujeme do vaší budoucnosti
16