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



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

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

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

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

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

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

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

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

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

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

Metodický list k didaktickému materiálu

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

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

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT. Cyklus while, do-while, dělitelnost, Euklidův algoritmus

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

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

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

Metodický list k didaktickému materiálu

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

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

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

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

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

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

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

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

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

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

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

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

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

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

prostřednictvím ICT Téma didaktického materiálu RNDr. Václava Šrůtková

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

Metodický list k didaktickému materiálu

Metodický list k didaktickému materiálu

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

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

Indexové seznamy. známe už pole, kde ale musí být předem známa velikost indexové seznamy umí růst dynamicky

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

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

Metodický list k didaktickému materiálu

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

Větvení programů příkaz IF

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

Pro kontrolu správného formátu hodnoty N použijeme metodu try-catch.

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

5 Rekurze a zásobník. Rekurzivní volání metody

Komponenty v.net. Obsah přednášky

20. Projekt Domácí mediotéka

Jazyk C# a platforma.net

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

Objekty jako zapozdření dat. začneme vytvářet vlastní objekty a třídy

PREPROCESOR POKRAČOVÁNÍ

2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu.

Jazyk C# - přístup k datům

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

Základní škola národního umělce Petra Bezruče, Frýdek-Místek, tř. T. G. Masaryka 454

Projekty pro výuku programování v jazyce Java

Struktura třídy, operátory, jednoduché algoritmy, junit. Programování II 2. cvičení Alena Buchalcevová

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

Základní škola národního umělce Petra Bezruče, Frýdek-Místek, tř. T. G. Masaryka 454

Náhodná a pseudonáhodná čísla

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

Jazyk C# - přístup k datům

CZ.1.07/1.5.00/

SŠOS_ EK_ 2.01 Podnikání fyzických osob

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

Základní škola národního umělce Petra Bezruče, Frýdek-Místek, tř. T. G. Masaryka 454

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

Kolekce ArrayList. Deklarace proměnných. Import. Vytvoření prázdné kolekce. napsal Pajclín

Adobe Photoshop. 1. Seznámení s programem. 1. Seznámení s programem. XMF, montážní program. Tomáš Fab. Vytvořila: Bc. Blažena Kondelíková

Evropská obchodní akademie, Děčín I, Komenského náměstí 2, příspěvková organizace IČ tel

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT EU-OVK-VZ-III/2-ZÁ-312

TŘÍDY POKRAČOVÁNÍ. Události pokračování. Příklad. public delegate void ZmenaSouradnicEventHandler (object sender, EventArgs e);

Pokročilé schopnosti OOP

MS OFFICE, POWERPOINT

Principy objektově orientovaného programování

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

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

Projekt: Digitální učební materiály ve škole, registrační číslo projektu CZ.1.07/1.5.00/

Abstraktní datové typy: zásobník

Inovace výuky prostřednictvím šablon pro SŠ

Více o konstruktorech a destruktorech

Inovace výuky prostřednictvím ICT v SPŠ Zlín, CZ.1.07/1.5.00/ Vzdělávání v informačních a komunikačních technologií

Česká Lípa, 28. října 2707, příspěvková organizace. CZ.1.07/1.5.00/ Digitální učební materiály

SSOS_EK_3.18 Správa daní placení daní

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

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

Nejzajímavější jsou události MouseDown a KeyDown.

Jazyk C# - přístup k datům

Digitální učební materiál

KTE / ZPE Informační technologie

Základní škola národního umělce Petra Bezruče, Frýdek-Místek, tř. T. G. Masaryka 454

Mělká a hluboká kopie

Základní pojmy. Matice(řádky, sloupce) Matice(4,6) sloupce

Standardní algoritmy v C++.

Intervalové stromy. Představme si, že máme posloupnost celých čísel p 0, p 1,... p N 1, se kterou budeme. 1. Změna jednoho čísla v posloupnosti.

Technologie JavaBeans

IRAE 07/08 Přednáška č. 7. Začátek (head)

Transkript:

Číslo a název šablony III/2 Inovace a zkvalitnění výuky prostřednictvím ICT Číslo didaktického materiálu EU-OPVK-VT-III/2-ŠR-303 Druh didaktického materiálu DUM Autor RNDr. Václava Šrůtková Jazyk čeština Téma sady didaktických materiálů Programování v C# v příkladech III Téma didaktického materiálu Indexované seznamy Vyučovací předmět Seminář z informatiky Cílová skupina (ročník) Žáci ve věku 17 18 let Úroveň žáků Středně pokročilí Časový rozsah 1 2 vyučovací hodiny Klíčová slova Indexové seznamy, rozvírací seznam Anotace Studenti se učí používat rozvírací seznam komponentu listbox, programovat vlastní seznamy a pracovat s nimi Použité zdroje DRÓZD, Januš a Rudolf KRYL. Začínáme s programováním. 1.vyd. Praha: Grada, 1992, 306 s. ISBN 80-854-2441-X. ELLER, Frank. C# - začínáme programovat: podrobný průvodce začínajícího uživatele. 1. vyd. Praha: Grada, 2002, 240 s. ISBN 80-247-0324-6. LIBICHER, Ivan a Pavel TÖPFER. Od problému k algoritmu a programu: sbírka řešených úloh z programování. 1. vyd. Praha: Grada, 1992, 119 s. Educa '99. ISBN 80-854-2482-7. TÖPFER, Pavel. Algoritmy a programovací techniky. 1. vyd. Praha: Prometheus, 1995, 299 s. ISBN 80-858- 4983-6. TÖPFEROVÁ, Dana a Pavel TÖPFER. Sbírka úloh z programování. Vyd. 1. Praha: Grada, 1992, 98 s. Educa '99. ISBN 80-854-2499-1. VYSTAVĚL, Radek. Moderní programování: učebnice pro pokročilé. Ondřejov: moderníprogramování, 2011, 149 s. ISBN 978-80-903951-7-6. VYSTAVĚL, Radek. Moderní programování: učebnice pro středně pokročilé. Ondřejov: moderníprogramování s.r.o, 2008. ISBN 978-80- 903951-2-1. Typy k metodickému postupu učitele, doporučené výukové metody, způsob hodnocení, typy k individualizované výuce apod. Text je možno využít ke společné práci, samostatné přípravě studentů, domácímu studiu apod. Při společné práci je vhodné nejprve obtížnější úlohy rozebrat, potom společně se studenty implementovat na počítači. (Rozbor nejlépe na tabuli, synchronní řešení s promítáním) Prezentace obsahuje stručné shrnutí poznatků

potřebných pro řešení příkladů. V pracovním listu je zadání cvičení většinou se jedná o úlohy, které by měli studenti naprogramovat samostatně. Není nutné, aby všichni zpracovali všechno, vhodné je diferencovat podle jejich zájmu a schopností. Obtížnější úlohy jsou označeny hvězdičkou. Součástí materiálu je zdrojový kód těchto příkladů. Návrh způsobu hodnocení: ohodnocení samostatné práce během hodiny např. podle volby a počtu úloh a elaborace řešení (efektivnost, komentáře ). Metodický list k didaktickému materiálu Prohlášení autora Tento materiál je originálním autorským dílem. K vytvoření tohoto didaktického materiálu nebyly použity žádné externí zdroje s výjimkou zdrojů citovaných v metodickém listu. Obrázky (schémata a snímky obrazovek) pocházejí od autora. 303. Indexované seznamy Podobně jako pole se používají k uložení více hodnot, které jsou přístupné pomocí svých indexů, ale na rozdíl od pole mohou dynamicky růst. (Jejich délka není omezena deklarací) Jsou to instance třídy List<Typ>, kde se v lomených závorkách uvádí skutečný typ položek seznamu. Při standardním vytvoření bezparametrickým konstruktorem List<int> cisla = new List<int>(); je seznam na začátku prázdný, položky se do něj přidávají metodou Add. Aktuální počet prvků seznamu udává vlastnost Count (U polí Length). Příklad 1. Naplníme seznam náhodnými čísly, zobrazíme ho, přidáme číslo zadané uživatelem na konec a opět zobrazíme. Ke zobrazení bychom mohli použít víceřádkové textové pole, ale přímo pro seznamy je v C# komponenta listbox. (Vlastně rozvírací seznam) Seznam jeho položek je pak dostupný jako ListBox.Items. Na formulář umístíme dva listboxvstup a listboxvystup. namespace _38_Seznam public partial class Form1 : Form

List<int> cisla = new List<int>(); Random nahoda = new Random(); public Form1() InitializeComponent(); private void Form1_Load(object sender, EventArgs e) //naplnění seznamu 10 náhodnými čísly z generátoru for (int i = 0; i < 10; i++) int x = nahoda.next(100); cisla.add(x); private void buttonukaz_click(object sender, EventArgs e) //zobrazení seznamu do listboxu for (int i = 0; i < cisla.count; i++) listbox.items.add(cisla[i]); Všimněte si, že při přidávání do listboxu není nutné konvertovat číslo na text. Příklad 2. Se seznamem budeme provádět další operace a pak ho zobrazovat co kdybychom si k tomu účelu vyrobili metodu? Pak bychom mohli program upravit následujícím způsobem. Prvním parametrem metody je zobrazovaný seznam, druhým listbox, do kterého budeme zobrazovat, abychom mohli

porovnávat původní a pozměněný seznam. Typ metody je void slouží ke zobrazování, nemá návratovou hodnotu. private void Vypis(List<int> x,listbox LB) //zobrazení seznamu x do listboxu LB for (int i = 0; i < x.count; i++) LB.Items.Add(x[i]); private void buttonukaz_click(object sender, EventArgs e) Operace nad seznamem Vypis(cisla,listBox); Naplnění seznamu Zobrazení konkrétního prvku Vložení prvku na určité místo Odstranění zadaného prvku Naplnění seznamu Můžeme realizovat postupnou metodou Add(prvek) z libovolného zdroje. (Vstup od uživatele, vstupní soubor, náhodná čísla ) viz předchozí příklad. Zobrazení konkrétního prvku K jednotlivým prvkům přistupujeme pomocí indexu, pokud je seznam zobrazen v listboxu a uživatel vybere některý prvek, jeho index udává vlastnost SelectedIndex. Pokud není vybrán žádný prvek, je hodnota této vlastnosti rovna 1. Pokud chceme v listboxu zrušit výběr, můžeme to provést příkazem: listboxvstup.selectedindex = -1; Vymazání celého listboxu: listboxvystup.items.clear(); Vložení prvku na určité místo Metoda Insert(index, prvek) 1. parametr je pozice, na kterou se bude vkládat, 2. parametr vkládaný prvek. Odstranění zadaného prvku Metoda RemovaAt(index), parametr je opět index.

Stejné metody lze použít pro listbox, původní seznam se tím ovšem nezmění. (Např listboxvstup.items.removeat(3); odstraní 4. Prvek) Všechno si vyzkoušíme v následujícím programu. private void buttonselind_click(object sender, EventArgs e) //zobrazí index vybrané položky i vybranou položku. int i = listbox.selectedindex; MessageBox.Show(i.ToString() + ". položka: " + listbox.items[i].tostring()); private void buttonvloz_click(object sender, EventArgs e) //vloží nové číslo do seznamu před vybraný prvek int i = listboxvstup.selectedindex; if (i >= 0) //prvek se v seznamu nachází cisla.insert(i, Convert.ToInt32(textBoxVklad.Text)); else cisla.add(convert.toint32(textboxvklad.text)); //vložení na konec textboxvklad.text = null; textboxvklad.focus(); //Původní seznam čísel se změnil Vypis(cisla, listboxvystup); private void buttonsmaz_click(object sender, EventArgs e) int i = listboxvstup.selectedindex; cisla.removeat(i); Poznámka: pokud byste chtěli kopírovat seznam prostým přiřazením, zkopíruje se pouze odkaz a obě proměnné budou ukazovat na tentýž seznam. Chceme-li původní seznam měnit, je třeba vytvořit nový seznam na základě existujícího: List<Typ> seznamnovy = new List<Typ>(seznamPůvodní) Pracovní list Cvičení 1. Procvičte si práci se dvěma listboxy Lichý a Sudý. (Nebudete vytvářet seznamy, ale pracovat pouze s obsahem listboxů.)

a) Na stisknutí tlačítka naplníte Lichý prvními 10 lichými a Sudý prvními deseti sudými čísly. b) Vyzkoušejte si operace odstranění vybraného čísla, zobrazení vybraného čísla c) Zobrazte zprávu o tom, je-li uživatelem zadané číslo v některém listboxu. d) (*) Sečtěte čísla ve stejných řádcích a zobrazte je do třetího listboxu Součet, pokud mají seznamy stejný počet položek. 2. Přidejte na okno tlačítko, jehož stisknutím se nová položka vloží za vybranou položku. Řešení 1. private void buttonpln_click(object sender, EventArgs e) //plnění rozvíracích seznamů čísly for (int i = 1; i <= 10; i++) listboxlicha.items.add(2 * i - 1); listboxsuda.items.add(2 * i);. private void buttonukaz_click(object sender, EventArgs e) //Zobrazení zprávy o vybraných položkách int i = listboxlicha.selectedindex; if (i >= 0)

MessageBox.Show(listBoxLicha.Items[i].ToString()); int j = listboxsuda.selectedindex; if (j >= 0) MessageBox.Show(listBoxSuda.Items[j].ToString()); private void buttonsmaz_click(object sender, EventArgs e) //odstranění vybraných položek int i = listboxlicha.selectedindex; if (i >= 0) listboxlicha.items.removeat(i); int j = listboxsuda.selectedindex; if (j >= 0) listboxsuda.items.removeat(j); private void buttonsecti_click(object sender, EventArgs e) //naplnění součtového seznamu if (listboxsuda.items.count == listboxsuda.items.count) for (int i = 0; i < 10; i++) int s = Convert.ToInt32(listBoxLicha.Items[i]) + Convert.ToInt32(listBoxSuda.Items[i]); listboxsoucet.items.add(s); else MessageBox.Show("Pro různé počty nelze sečíst!"); 2 private void button1_click(object sender, EventArgs e) //pokud je vybraná položka poslední, přidáme ji metodou Add. int i = listboxvstup.selectedindex; if (i == cisla.count) cisla.add(convert.toint32(textboxvklad.text)); else if (i >= 0) //něco je vybráno cisla.insert(i+1, Convert.ToInt32(textBoxVklad.Text)); textboxvklad.text = null; Vypis(cisla, listboxvystup); Důležité Seznam může dynamicky růst. (délka není omezena deklarací) Instance třídy List<Typ>, kde se v lomených závorkách uvádí skutečný typ položek seznamu. Při standardním vytvoření bezparametrickým konstruktorem List<int> cisla = new List<int>();

Vlastnosti a metody: Count počet prvků Add(prvek) přidání na konec Insert(index, prvek) přidání na aktuální pozici RemoveAt(index) odstranění prvku z aktuální pozice ListBox komponenta na vkládání seznamů libovolného typu SelectedIndex index vybrané položky Items seznam