Kapitola 3. Projděte si kapitolu 3 knihy Moderní programování učebnice pro středně pokročilé a snažte se všemu porozumět.



Podobné dokumenty
POLE. - datová struktura ze složek stejného typu, ke kterým se přistupuje pomocí indexů

ÚLOHA 4-J-00 Projděte si kapitolu 4 knihy Moderní programování učebnice pro začátečníky a snažte se všemu porozumět.

zapište obslužnou metodu události Click tlačítka a vyzkoušejte chování polevýsledek.text = polečíslo1.text + polečíslo2.text;

02. HODINA. 2.1 Typy souborů a objektů. 2.2 Ovládací prvky Label a TextBox

Pokročilá práce s proměnnými

Programování jako nástroj porozumění matematice (seriál pro web modernivyuka.cz)

Algoritmizace a programování

VISUAL BASIC. Přehled témat

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Postupy práce se šablonami IS MPP

Druhy souborů. textové. binární. nestrukturované txt strukturované - ini, xml, csv. veřejné bmp, jpg, wav proprietární docx, cdr, psd

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Tematický celek Proměnné. Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace Deklarace proměnných

VISUAL BASIC. Práce se soubory

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Algoritmizace a programování

Čtvrtek 3. listopadu. Makra v Excelu. Obecná definice makra: Spouštění makra: Druhy maker, způsoby tvorby a jejich ukládání

Desetinná čísla. pro celá čísla jsme používali typ int. pro desetinná čísla používáme typ double

1 Tabulky Příklad 3 Access 2010

1. Otevřete dokument, který chcete číst. 2. Na kartě Zobrazení klikněte ve skupině Zobrazení dokumentů na položku Čtení na celé obrazovce.

5 Přehled operátorů, příkazy, přetypování

Sada 1 - PHP. 03. Proměnné, konstanty

Hodnocení soutěžních úloh

Programování v jazyce C pro chemiky (C2160) 4. Textové řetězce, zápis dat do souboru

Microsoft Access. Úterý 26. února. Úterý 5. března. Typy objektů databáze: Vytvoření a návrh nové tabulky

KAPITOLA 3 - ZPRACOVÁNÍ TEXTU

Pokročilé programování v jazyce C pro chemiky (C3220) Třídy v C++

Reliance 3 design OBSAH

DATABÁZE MS ACCESS 2010

Popis základního prostředí programu AutoCAD

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

PROGRAMOVÁNÍ V SHELLU

Vzorce. StatSoft. Vzorce. Kde všude se dá zadat vzorec

Programy na PODMÍNĚNÝ příkaz IF a CASE

Formátování pomocí stylů

Mzdové dokumenty propojení Ms Word, OOD

Semestrální práce 2 znakový strom

Modul 6. Multimediální prezentace

AutoCAD definice bloku

Zadání soutěžních úloh

PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1

Zdokonalování gramotnosti v oblasti ICT. Kurz MS Excel kurz 6. Inovace a modernizace studijních oborů FSpS (IMPACT) CZ.1.07/2.2.00/28.

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Kapitola 3. DEFINICE POLE

Inovace a zkvalitnění výuky prostřednictvím ICT Základy programování a algoritmizace úloh Textové soubory

Tabulková data. budeme pracovat s CSV soubory položky oddělené středníkem, např.

Algoritmizace a programování

Obsah. Úvod 11 Základy programování 11 Objektový přístup 11 Procvičování 11 Zvláštní odstavce 12 Zpětná vazba od čtenářů 12 Errata 13

Základní příkazy OS UNIX

PHP tutoriál (základy PHP snadno a rychle)

8 Třídy, objekty, metody, předávání argumentů metod

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Generické programování

Formuláře. Téma 3.2. Řešený příklad č Zadání: V databázi formulare_a_sestavy.accdb vytvořte formulář pro tabulku student.

Stručný návod k programu Octave

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

WinFAS. obecné. Praktický úvod do WinFASu IQ sestavy podrobně. Strana 1

DUM 06 téma: Tvorba makra pomocí VBA

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Požadované dovednosti v ovládání textového procesoru Microsoft Word 2013 pro předměty VA1 a VT1

Gymnázium Vysoké Mýto nám. Vaňorného 163, Vysoké Mýto

Micro:bit lekce 3. - Konstrukci If Then a If Then Else najdete v kategorii Logic - Podmínky od If (např. porovnání < >= atd.) najdete taktéž v Logic

Struktury a dynamická paměť

5a. Makra Visual Basic pro Microsoft Escel. Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Kalina

Operační systém MS Windows XP Professional

Školní kolo soutěže Baltík 2009, kategorie C

umenugr JEDNOTKA PRO VYTVÁŘENÍ UŽIVATELSKÝCH GRAFICKÝCH MENU Příručka uživatele a programátora

Microsoft Office. Word vzhled dokumentu

Úvod do filtrace, Quick filtr

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

Základní popis Toolboxu MPSV nástroje

aplikační software pro práci s informacemi

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:

Access. Tabulky. Vytvoření tabulky

DSL manuál. Ing. Jan Hranáč. 27. října V této kapitole je stručný průvodce k tvorbě v systému DrdSim a (v

4a. Makra Visual Basic pro Microsoft Excel Cyklické odkazy a iterace Makra funkce a metody

Jednoduché stříhání videa

Cvičení software Groma základní seznámení

Kontingenční tabulky v MS Excel 2010

Word Lekce III. a IV.

Spuštění a ukončení databázové aplikace Access

Gabriela Janská. Středočeský vzdělávací institut akademie J. A. Komenského

MS OFFICE POWER POINT 2010

Internetový přístup do databáze FADN CZ - uživatelská příručka Modul FADN RESEARCH / DATA

Střední škola informačních technologií a sociální péče, Brno, Purkyňova 97. Vybrané části Excelu. Ing. Petr Adamec

Styly odstavců. Word Přiřazení stylu odstavce odstavci. Změna stylu odstavce

METODICKÝ POKYN PRÁCE S MS PowerPoint - ZAČÁTEČNÍCI. Tento projekt je spolufinancován Evropským sociálním fondem a státním rozpočtem České republiky.

7 Formátovaný výstup, třídy, objekty, pole, chyby v programech

MS Word pro administrátory projektů Pokročilí

POVLTAVSKÉ SETKÁNÍ BALTÍKŮ - 9.ročník a

ZMODO NVR KIT. Instalační příručka

Vzorce. Suma. Tvorba vzorce napsáním. Tvorba vzorců průvodcem

Nastavení stránky : Levým tlačítkem myši kliknete v menu na Soubor a pak na Stránka. Ovládání Open Office.org Draw Ukládání dokumentu :

WinFAS. 5 účto. Praktický úvod do WinFASu Prohlížení knih

Visual Basic for Application

Operační systém. Mgr. Renáta Rellová. Výukový materiál zpracován v rámci projektu EU peníze školám

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Tabulkové processory MS Excel (OpenOffice Calc)

Transkript:

20 Kapitola 3. Pole Jednoduché úlohy ÚLOHA 3-J-00 Projděte si kapitolu 3 knihy Moderní programování učebnice pro středně pokročilé a snažte se všemu porozumět. ÚLOHA 3-J-01 (VŠECHNA ÁČKA) Program Počítání áček z učebnice upravte tak, aby počítal všechna áčka kromě malých také velká, případně i dlouhá. ÚLOHA 3-J-02 (POČET DISKOVÝCH JEDNOTEK) Program Diskové jednotky z učebnice upravte tak, aby namísto výpisu všech jednotek uživateli pouze zobrazil jejich počet. ÚLOHA 3-J-03 (V OPAČNÉM POŘADÍ) Program Diskové jednotky z učebnice vypisuje seznam jednotek v abecedním pořadí (A až Z), tj. přesně tak, jak jej vrací metoda Environment.GetLogicalDrives. Upravte jej, aby seznam vypisoval v obráceném pořadí (Z až A). ÚLOHA 3-J-04 (ÚPRAVY EVIDENCE NÁJEMNÍKŮ) V programu Evidence nájemníků z učebnice proveďte následující úpravy: Přidejte tlačítko Vystěhuj přízemí, po jehož stisku se vystěhuje nájemník bytu č. 0. Při nastěhování kontrolujte, zda byt již není obsazen. Pokud zjistíte, že je, oznamte to uživateli a nastěhování stornujte. Tlačítko Vystěhovat bude funkční pouze tehdy, když je v příslušném textovém poli zapsáno číslo z rozmezí 0 až 12. V opačném případě bude zablokováno. Pokud se po stisku tlačítka Zobrazit zjistí, že daný byt je prázdný, nevypíše se V bytě XX bydlí: a nic. Namísto toho se vypíše V bytě XX nikdo nebydlí.. Přidejte tlačítko Zdvojnásob nájem, po jehož stisku se vystěhují nájemníci ze všech bytů.

Kontrolní otázky 21 ÚLOHA 3-K-00 (CO TO DĚLÁ?) Pole čísla celých čísel je naplněno hodnotami podle obrázku. čísla[5] čísla[4] čísla[3] čísla[2] čísla[1] čísla[0] na začátku 17 3 5 10 14 6 po provedení kódu?????? Zapište, jaké budou v poli hodnoty po provedení následujícího kódu: for (int index = 1; index < čísla.length; index += 2) čísla[index] *= 3; ÚLOHA 3-K-01 (INDEX A HODNOTA) Celočíselná pole a, b jsou zaplněna hodnotami podle obrázku. a[5] a[4] a[3] a[2] a[1] a[0] 16 2 0 1 37 37 b[5] b[4] b[3] b[2] b[1] b[0] 62 37 3 14 7 10 Jaké budou hodnoty čtyřech výsledkových proměnných po provedení následujícího kódu? int výsledek1 = b[4]*a[1]; int výsledek2 = a[1]*b[4]; int výsledek3 = a[b[2]]; int výsledek4 = b[a[2]]; ÚLOHA 3-K-02 (KDE JE CHYBA?) Programátor chtěl deklarovat inicializované pole řetězců. Zapsal tento řádek: string[] jména = new string {"Anna", "Dana", "Hana", "Jana"}; Program se ale kvůli syntaktické chybě nesestavil. V čem byla chyba? Jak je to správně?

22 ÚLOHA 3-K-03 (KDE JE DALŠÍ CHYBA?) Po odstranění syntaktické chyby programátor z Úlohy 3-K-02 (Kde je chyba?) pokračoval následujícím kódem ve snaze obsah pole jména zobrazit uživateli. string zpráva = null; for (int index = 0; index <= jména.length; index++) zpráva += jména[index] + Environment.NewLine; MessageBox.Show(zpráva); Program se sestavil, ale po jeho spuštění došlo k běhové chybě. Proč? Jak to má být správně? ÚLOHA 3-K-04 (V ČEM JE ROZDÍL?) Pro celočíselné pole čísla a celočíselnou proměnnou index vysvětlete rozdíl mezi příkazem čísla[index] = index + 1; a příkazem čísla[index] = čísla[index + 1]; Aplikační úlohy ÚLOHA 3-A-00 (DATUM SLOVY) Připravte program, který slovy vypíše datum podle zadaného čísla dne a měsíce. S neexistujícími daty, jako je třeba 30. února, si pro jednoduchost starosti nedělejte. ÚLOHA 3-A-01 (KULOVÝ BLESK) Do programu Evidence nájemníků z učebnice přidejte tlačítko Kulový blesk, které bude simulovat hromadnou výměnu bytů ze stejnojmenného filmu. Po stisku tlačítka se nájemník bytu 1 přestěhuje do bytu 0, nájemník bytu 2 do bytu 1, nájemník bytu 3 do bytu 2,, nájemník bytu 12 do bytu 11 a nakonec nájemník bytu 0 do bytu 12. ÚLOHA 3-A-02 (ZPĚTNÝ KULOVÝ BLESK) V řešení Úlohy 3-A-01 (Kulový blesk) obraťte směr stěhování. Nyní se bude stěhovat z 0 do 1, z 1 do 2, z 2 do 3,, z 11 do 12 a z 12 do 0.

ÚLOHA 3-A-03 (UBYTOVNA) Připravte program Ubytovna evidující obsazení ubytovny s deseti třílůžkovými pokoji. Pomocí příslušných ovládacích prvků bude možno hosty na pokoje stěhovat a vystěhovávat. Na vyžádání program vypíše momentální obsazení všech pokojů. Je-li nějaký pokoj plný, není možno do něj nastěhovat dalšího hosta. Upřesnění: V tomto programu nejde o jména hostů, pouze o jejich počty. 23 Náročnější varianta: Uvažujte různé počty lůžek pro různé pokoje, např. podle uvedené tabulky. Číslo pokoje Počet lůžek 0 3, 8 3 4 6 4 7 6 9 8 ÚLOHA 3-A-04 (DOSTIHY PRO DESET KONÍ) Ve dvanácté kapitole učebnice pro začátečníky se vytvářela hra Dostihy, v níž soupeřili dva koně. Program této hry upravte pro deset koní. Pro jednoduchost není třeba zadávat jejich jména. ÚLOHA 3-A-05 (ODHALENÍ FALEŠNÉ KOSTKY) V desáté kapitole sbírky úloh pro začátečníky se vytvářela falešná hrací kostka, na níž šestka padala stejně často jako všechna ostatní čísla dohromady. Neférovost této kostky by okamžitě byla zřejmá každému uživateli. Pokud by však šestka padala jen o něco častěji, tak by to hned tak poznat nebylo. V takovém případě však může napomoci tabulka četností. Připravte program, jehož součástí bude falešná kostka, u níž šestka padne o 20 % častěji než třeba pětka nebo jiné číslo. Program sám svoji nepoctivost odhalí zobrazením tabulky četností např. pro 600 opakovaných hodů.

24 ÚLOHA 3-A-06 (HISTOGRAM) Výsledné tabulky četností z programu Kontrola kostky z učebnice a z Úlohy 3-A-05 (Odhalení falešné kostky) zobrazte graficky jako histogram sloupcový diagram četností. Tip: Chcete-li u sloupečků zobrazit také popisky 1 až 6, použijte volání DrawString. Tip: Chcete-li v uživatelském rozhraní umožnit výběr mezi obyčejnou a falešnou kostkou, jak je tomu na obrázku, můžete použít přepínač tvořený knoflíky RadioButton z Toolboxu. Technické úlohy ÚLOHA 3-T-00 (TABULKA ČETNOSTÍ OD NULY) Program Kontrola kostky z učebnice přepracujte do druhé varianty diskutované v učebnici, tj. s polem indexovaným [0] až [5] a odečítáním jedničky. ÚLOHA 3-T-01 (DRAWLINE A POINT) Metodu DrawLine používáme vždy s pěti parametry: kp.drawline(pero, xpoč, ypoč, xkonc, ykonc); Někdy však může být šikovnější pracovat přímo s body, proto existuje i ve variantě se třemi parametry kp.drawline(pero, boda, bodb); v níž se koncové body boda a bodb zadávají jako objekty Point. Tuto variantu si nyní ozkoušejte. ÚLOHA 3-T-02 (POLE LOGICKÝCH HODNOT) Program Evidence nájemníků z učebnice upravte tak, že u každého bytu se bude zaznamenávat pouze údaj typu ano/ne, neboli jestli je byt obsazen či nikoli. Pro reprezentaci těchto údajů použijte pole logických hodnot bool[].

Rozšiřující úlohy 25 ÚLOHA 3-R-00 (DVOJITÁ ČÁRA) Pole se dají využívat pro specifikaci per kreslících dvojité či vícenásobné čáry. V takovém případě se do vlastnosti CompoundArray pera přiřadí pole desetinných čísel (ale pozor, typu float, nikoli double!) rostoucích od nuly do jedničky. Tato čísla představují souřadnice začátků a konců čar při příčném řezu čárou s tím, že nula odpovídá levému okraji dvojité (vícenásobné) čáry a jednička okraji pravému. Například pero vytvořené následujícími příkazy je deset pixelů silné a levá čára tvoří 20 % šířky (0,2 0,0 = 0,2) a stejně tak pravá čára (1,0 0,8 = 0,2). Pen pero = new Pen(Color.CornflowerBlue, 10); pero.compoundarray = new float[] { 0.0f, 0.2f, 0.8f, 1.0f }; Aby obrazce kreslené dvojitým perem měly pěkné rohy, je třeba je kreslit najednou (levý trojúhelník na obrázku) s pomocí metod pracujících s poli Point[], jako jsou DrawLines, DrawPolygon, DrawCurve ap., a nikoli po čarách (pravý trojúhelník na obrázku) vícenásobnými voláními DrawLine. Vyzkoušejte! Poznámka: Písmeno f za desetinným číslem, např. 0.2f, znamená, že jde o číslo typu float. Pokud by nebylo uvedeno, považoval by program uvedená desetinná čísla automaticky za hodnoty double, ty by ale do pole float[] nešly vložit. ÚLOHA 3-R-01 (STRINGBUILDER) Již mnohokrát jsme byli v situaci, kdy se opakovaně pracovalo s jedním a tímtéž řetězcem. Typickým případem je sestavení nějaké víceřádkové zprávy, např. výpis všech nájemníků v programu Evidence nájemníků z učebnice. K řetězci zprávy se postupně v každé obrátce cyklu přidává jeden řádek. V případě velkého množství manipulací s jednou řetězcovou hodnotou se ale může začít projevovat časová neefektivita těchto manipulací. Při každé aktualizaci řetězcové hodnoty se totiž alokuje nové místo v paměti, do něj se překopíruje stávající obsah, přidá se nový řádek a odkaz v proměnné se překlopí na toto nové místo.

26 Za účelem redukování této neefektivity existuje na platformě.net pro často měněné řetězce třída StringBuilder ze jmenného prostoru System.Text. K jejím nejzajímavějším složkám patří: Konstruktor, který v bezparametrické variantě vytvoří prázdnou instanci StringBuilder a ve variantě jednoparametrické instanci inicializovanou předaným řetězcem; Metody Append, resp. AppendLine, které na konec stávajícího řetězce StringBuilderu přidají řetězec předaný jako parametr; Metoda ToString, která řetězec StringBuilderu převede na string; Indexování stejně jako u hodnoty string lze u instancí String- Builder pracovat s jednotlivými znaky, jako by se jednalo o pole znaků. V případě StringBuilderu lze navíc znaky měnit. Přepracujte výpis nájemníků s použitím třídy StringBuilder. Na začátku zdrojového textu nezapomeňte přidat odkaz na jmenný prostor System.Text. ÚLOHA 3-R-02 (PARAMETRY PROGRAMU) Při spuštění jakéhokoli programu může uživatel do programu předávat upřesňující informace ve formě parametrů programu. Ty se s mezerami zadávají za název programu, ať už jde o spouštění z textového rozhraní (Příkazový řádek, příkazové dávky, skripty), nebo z rozhraní grafického (ikona zástupce). Například Word může převzít jako první parametr název dokumentu, který se má ihned po spuštění programu otevřít. Programy na platformě.net mají k parametrům programu přístup prostřednictvím pole řetězců vraceného statickou metodou Environment.GetCommand- LineArgs. Na indexu 0 tohoto pole je jméno.exe souboru i s cestou, na dalších indexech již následují všechny předané parametry. Program Pohybující se panáček z druhé kapitoly učebnice upravte tak, aby přebíral potenciálně dva parametry upřesňující jeho činnost: Prvním parametrem bude cesta k obrázku panáčka, který se má použít; Druhým parametrem bude velikost kroku, neboli o kolik pixelů panáček poskočí na jeden stisk klávesy se šipkou. Pokud budou parametry chybět, příp. pokud budou mít nekorektní hodnoty, použije se vestavěný obrázek, resp. základní délka kroku 5 pixelů. Ještě poznamenám, že pro účely testování programu spouštěním z vývojového prostředí lze parametry zadat v poli Command line arguments záložky Debug v obrazovce, která se objeví po volbě nabídky Project > (název projektu) Properties.