IAJCE Přednáška č. 8. double tprumer = (t1 + t2 + t3 + t4 + t5 + t6 + t7) / 7; Console.Write("\nPrumerna teplota je {0}", tprumer);

Podobné dokumenty
IUJCE 07/08 Přednáška č. 4. v paměti neexistuje. v paměti existuje

int t1, t2, t3, t4, t5, t6, t7, prumer; t1=sys.readint();... t7=sys.readint(); prume pru r = r = ( 1+t 1+t t3+ t3+ t4 t5+ t5+ +t7 +t7 )/ ;

Úvod do programování - Java. Cvičení č.4

Logické operace. Datový typ bool. Relační operátory. Logické operátory. IAJCE Přednáška č. 3. může nabýt hodnot: o true o false

Zápis programu v jazyce C#

PREPROCESOR POKRAČOVÁNÍ

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

PŘETĚŽOVÁNÍ OPERÁTORŮ

POČÍTAČE A PROGRAMOVÁNÍ

IRAE 07/08 Přednáška č. 2. atr1 atr2. atr1 atr2 -33

7. Datové typy v Javě

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

Generické programování

IAJCE Přednáška č. 7. řízení semaforu na křižovatce = přepínání červená/oranžová/zelená

IUJCE 07/08 Přednáška č. 6

Jazyk C# a platforma.net

Obsah přednášky. Příkaz for neúplný. Příkaz for příklady. Cyklus for each (enhanced for loop) Příkaz for příklady

Úvod Třídy Rozhraní Pole Konec. Programování v C# Hodnotové datové typy, řídící struktury. Petr Vaněček 1 / 39

Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

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

Funkce pokročilé možnosti. Úvod do programování 2 Tomáš Kühr

for (i = 0, j = 5; i < 10; i++) { // tělo cyklu }

Proměnná. Datový typ. IAJCE Cvičení č. 3. Pojmenované místo v paměti sloužící pro uložení hodnoty.

Ukazatel (Pointer) jako datový typ - proměnné jsou umístěny v paměti na určitém místě (adrese) a zabírají určitý prostor (počet bytů), který je daný

C# konzole Podíl dvou čísel, podmínka IF

Řídicí struktury. alg3 1

3. přednáška. Obsah: Řídící struktury sekvence, if-else, switch, for, while, do-while. Zpracování posloupnosti

1. Téma 12 - Textové soubory a výjimky

KTE / ZPE Informační technologie

IAJCE Přednáška č. 6. logický celek, řešící dílčí část problému Příklad velmi špatného zápisu programu na výpočet obsahu obdélníku

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.

Kolekce, cyklus foreach

DSA, První krok: máme dokázat, že pro left = right vrátí volání f(array, elem, left, right)

Algoritmizace a programování

Java a XML. 10/26/09 1/7 Java a XML

IRAE 07/08 Přednáška č. 1

Programování v Javě I. Únor 2009

Programování v C++, 2. cvičení

Vyučovací hodina. 1vyučovací hodina: 2vyučovací hodiny: Opakování z minulé hodiny. Procvičení nové látky

Programování v jazyce C pro chemiky (C2160) 3. Příkaz switch, příkaz cyklu for, operátory ++ a --, pole

Programování v Javě I. Leden 2008

Mělká a hluboká kopie

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

Soubor jako posloupnost bytů

Správné vytvoření a otevření textového souboru pro čtení a zápis představuje

Paměť počítače. alg2 1

Pole a kolekce. v C#, Javě a C++

Pascal. Katedra aplikované kybernetiky. Ing. Miroslav Vavroušek. Verze 7

Více o konstruktorech a destruktorech

Pole a Funkce. Úvod do programování 1 Tomáš Kühr

7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd

Jazyk C++ I. Šablony

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

Pointery II. Jan Hnilica Počítačové modelování 17

Správa paměti. Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta, 2016

NPRG031 Programování II --- 2/2 Z, Zk

Abstraktní datové typy: zásobník

Programování v C++ 1, 1. cvičení

Výčtový typ strana 67

Algoritmizace, základy programování, VY_32_INOVACE_PRG_ALGO_01

Datové struktury. alg12 1

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

type Obdelnik = array [1..3, 1..4] of integer; var M: Obdelnik;

Práce se soubory. Základy programování 2 Tomáš Kühr

Tato tematika je zpracována v Záznamy přednášek: str Problém: Proveďte jednoduchou analýzu zadaného textu (četnost výskytu písmen).

Základní pojmy. Úvod do programování. Základní pojmy. Zápis algoritmu. Výraz. Základní pojmy

Martin Flusser. Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague. October 17, 2016

1. Programování proti rozhraní

IAJCE Přednáška č. 9. int[] pole = new int[pocet] int max = pole[0]; int id; for(int i =1; i< pole.length; i++) { // nikoli 0 if (Pole[i] > max) {

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

Př. další použití pointerů

Algoritmizace a programování. Terminálový vstup a výstup

Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií

ÚVODNÍ ZNALOSTI. datové struktury. správnost programů. analýza algoritmů

EVROPSKÝ SOCIÁLNÍ FOND. Úvod do PHP PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI

int ii char [16] double dd název adresa / proměnná N = nevyužito xxx xxx xxx N xxx xxx N xxx N

ADT/ADS = abstraktní datové typy / struktury

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

OOPR_05. Případové studie

Jazyk C# (seminář 5)

Algoritmizace a programování

IUJCE Přednáška č. 11. další prvky globální proměnné, řízení viditelnosti proměnných, funkcí

Základy programování (IZP)

Struktura programu v době běhu

Úvod do programovacích jazyků (Java)

Principy objektově orientovaného programování

Strukturu lze funkci předat: (pole[i])+j. switch(výraz) velikost ukazatele

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

Úvod do programovacích jazyků (Java)

Z. Kotala, P. Toman: Java ( Obsah )

URČITÝM ZPŮSOBEM PODOBNÉ

Pokročilé programování v jazyce C pro chemiky (C3220) Statické proměnné a metody, šablony v C++

Základy programování (IZP)

Definice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 21.

Základy programování (IZP)

Algoritmizace a programování

Maturitní otázky z předmětu PROGRAMOVÁNÍ

17. Projekt Trojúhelníky

Název předmětu: Školní rok: Forma studia: Studijní obory: Ročník: Semestr: Typ předmětu: Rozsah a zakončení předmětu:

Transkript:

Pole (array) Motivace Častá úloha práce s větším množstvím dat stejného typu o Př.: průměrná teplota za týden a odchylka od průměru v jednotlivých dnech Console.Write("Zadej T pro.den: "); double t = Double.Parse(Console.ReadLine()); Console.Write("Zadej T pro.den: "); double t = Double.Parse(Console.ReadLine()); // atd. Console.Write("Zadej T pro 7.den: "); double t7 = Double.Parse(Console.ReadLine()); double tprumer = (t + t + t + t4 + t5 + t6 + t7) / 7; Console.Write("\nPrumerna teplota je 0", tprumer); Základní jmy Console.Write("Odchylka T pro.den: 0", t - tprumer); Console.Write("Odchylka T pro.den: 0", t - tprumer); // atd. Console.Write("Odchylka T pro 7.den: 0", t7 - tprumer); o nelze řešit cyklem s stupným výčtem průměru o nevýhody: algoritmus nevykazuje znaky hromadnosti (teploty za měsíc, rok???) obtížná manipulace s daty (jak na hledání extrémů?) le = strukturovaný datový typ, složen z většího množství ložek (prvky le) (item) le = homogenní datová struktura ( Pole prvků typu array of ) všechny prvky le stejný datový typ index prvku (item index) zice prvku od začátku le Vytvoření le le = proměnná deklarace: jakýkoli datový typ omezeno velikostí paměti typ[] JmenoPole = new typ[cetprvku]; o Příklady: const int POCET_PRVKU = 7; double[] teplota = new double[pocet_prvku]; string[] zaznamy = new string[0000];

Práce s lem Po prvcích typicky v cyklu for const int POCET_PRVKU = 7; double[] teplota = new double[pocet_prvku]; double tprumer = 0; // nacteni prvku z klavesnice for (int i = 0; i < teplota.length; i++) Console.Write("Zadej T pro 0.den: ", i + ); teplota[i] = double.parse(console.readline()); tprumer += teplota[i]; Index // vycet a vypis prumeru tprumer /= teplota.length; Console.WriteLine("Prumerna teplota je 0", tprumer); // vycet a vypis odchylek for (int i = 0; i < teplota.length; i++) Console.WriteLine("Odchylka T pro 0.den: ", i +, teplota[i] - tprumer); Vlastnost;čet prvků Poznámky výsledek výrazu pro index: celé číslo teplota[] teplota[*k+] teplota[.5] // liché prvky // špatně o typicky proměnná typu int jmenovaná i prvek le = proměnná jednoduchého typu

double[] teplota = new double[7]; tprumer += teplota[i]; dalsipole[5] = *sin(teplota[*i]); Meze le vždy od 0 do čet prvků teplota[0] //. prvek teplota[] // 4. prvek teplota[pocet_prvku-] // slední prvek teplota[pocet_prvku] // nejčastější chyba Délka le: Vlastnost jen pro čtení Length typu int int cetprvku = teplota.length; // 7 Pole a paměť int[] = new int[]; int[] = new int[] [0] [] [] referenční proměnná (odkaz) data lze rozdělit deklaraci odkazu a vznik le: odkaz nikam nesměřuje (obsah proměnné: null) int[] ; // prazdny odkaz [] = 0; // chyba, le není vytvořeno = new int[]; // muzeme uzivat [] = 0; // OK velikost le i za běhu programu Console.Write("Zadej delku le: "); int delka = Int.Parse(Console.ReadLine()); double[] le = new double[delka]; Práce s referenční proměnnou int[] p = new int[]; int[] p = new int[]; // p = p; //

p p p[0] p[] p[] p[0] p[] p[] p odkazuje na stejná data jako p p p p[0] p[] p[] p[0] p[] p[] Inicializace le o jakákoli změna v p se projeví se i v p (a naopak) o k původním datům v li p se již nelze dostat!!! Nové le prvky hodnotu: 0, 0.0, false, inicializace int[] p = new int[],, ; int[] p = -87,, 4, 589 ; Vícerozměrná le Pravoúhlá = le s více indexy o indexy = matice, nejčastější případ o indexy = D le ( kvádr ) Základní principy = D le C# dva typy: o Pravoúhlé (D tvar obdélníku) o Nesymetrické každý řádek uze D deklarace: // délku doplní překladač jiný čet sloupců typ[,] jmenopole = new typ[radku, sloupcu]; o např. int[,] le = new int[, ]; 4

Inicializace v deklaraci int[,] le =,,,,, D le = D le, jehož prvky jsou D le Zjištění rozměrů: o Vlastnost Rank o Vlastnost Length čet dimenzí le čet všech prvků o Metoda int GetLength(int dimenze) dimenze Práce s vícerozměrným lem nejčastěji vnořené cykly for o Příklad: Součet dvou matic C = A+B Nesymetrická vrací čet prvků v dimenzi const int RADKU = ; const int SLOUPCU = ; int[,] A = new int[radku, SLOUPCU]; int[,] B = new int[radku, SLOUPCU]; int[,] C = new int[radku, SLOUPCU]; for (int i = 0; i < A.GetLength(0); i++) // pres radky for (int j = 0; j < A.GetLength(); j++) // v radku pres sloupce C[i, j] = A[i, j] + B[i, j]; (Jagged Array) každý řádek jiný čet sloupců důvody: úsra místa, rychlost příklad uložení informace o průměrné teplotě dnech, měsících v jednom roce leden únor JA 8 9 0 leden únor pravoúhlé 8 9 0 listopad prosinec listopad prosinec 5

Pole a metody Pole jako parametr D i vícerozměrná le stejné Příklad: metoda, která vytiskne le na obrazovku static void Main(string[] args) int[] = new int[5]; [] = 45; TiskPole(); static void TiskPole(int[] p) for (int i = 0; i < p.length; i++) Console.WriteLine(p[i]); do metody se předává (kopíruje) uze referenční proměnná, nikoli kompletní data!!! = volání odkazem: o rychlé o prvky le lze uvnitř metody změnit Před voláním metody [0] [] [] V metodě p Kopie odkazu [0] [] [] p[0] p[] p[] práce s původními daty Po skončení metody p [0] [] [] p[0] p[] p[] o na čtu prvků nezáleží 6

Příklad: Metodu, která vynásobí le skalárem static void Main(string[] args) int[] = new int[5] 5, -, 56, 0, 888 ; PoleKratSkalar(, 4); není nutné ref či out static void PoleKratSkalar( int[] p, int skalar) for (int i = 0; i < p.length; i++) p[i] *= skalar; Pole jako návratová hodnota metody vrací se uze odkaz, s daty se nic neděje Příklad: Metoda, která sečte dva vektory rychlé static int[] SectiVektory(int[] v, int[] v) if (v.length!= v.length) return null; int[] vektor = new int[v.length]; for (int i = 0; i < vektor.length; i++) vektor[i] = v[i] + v[i]; return vektor; static void Main(string[] args) int[] le =,, ; int[] le =,, ; int[] soucetpoli = SectiVektory(le, le); výsledek výrazu = odkaz na data 7