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

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

POČÍTAČE A PROGRAMOVÁNÍ

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

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

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

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

Vícerozměrná pole. Úvod do programování 2 Tomáš Kühr

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

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

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

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

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

Práce s polem a pamětí

Dynamická vícerozměrná pole. Základy programování 2 Tomáš Kühr

Více o konstruktorech a destruktorech

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

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

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

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

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

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

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

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

Základy programování (IZP)

Základy programování (IZP)

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

Struktura programu v době běhu

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

Ukazatele, dynamická alokace

Ukazatele #2, dynamická alokace paměti

11a Dynamické dvourozměrné pole (obdobně vícerozměrné)

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

Základy programování (IZP)

Ukazatele a pole. Chceme-li vyplnit celé pole nulami, použijeme prázdný inicializátor: 207 Čárka na konci seznamu inicializátorů

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

for (int i = 0; i < sizeof(hodnoty) / sizeof(int); i++) { cout<<hodonoty[i]<< endl; } cin.get(); return 0; }

Ukazka knihy z internetoveho knihkupectvi

Algoritmizace a programování

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

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15

Dynamická alokace paměti

6. lekce Úvod do jazyka C knihovny datové typy, definice proměnných základní struktura programu a jeho editace Miroslav Jílek

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

Lekce 6 IMPLEMENTACE OPERAČNÍHO SYSTÉMU LINUX DO VÝUKY INFORMAČNÍCH TECHNOLOGIÍ JAZYK C

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

Pokročilé programování v jazyce C pro chemiky (C3220) Operátory new a delete, virtuální metody

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

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

Pole stručný úvod do začátku, podrobně později - zatím statická pole (ne dynamicky) - číslují se od 0

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

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

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

POČÍTAČE A PROGRAMOVÁNÍ

Sada 1 - Základy programování

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

Základy programování (IZP)

Jazyk C++ 1. Blok 3 Objektové typy jazyka C++ Třída. Studijní cíl. Doba nutná k nastudování. Průvodce studiem

PREPROCESOR POKRAČOVÁNÍ

2 Datové typy v jazyce C

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

- dělají se také pomocí #define - podobné (použitím) funkcím - předpřipravená jsou např. v ctype.h. - jak na vlastní makro:

přetížení operátorů (o)

Polymorfismus. Časová náročnost lekce: 3 hodiny Datum ukončení a splnění lekce: 30.března

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

přetížení operátorů (o)

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

Distanční opora předmětu: Programování v jazyce C Tématický blok č. 6: Dynamická alokace paměti, typové konstrukce Autor: RNDr. Jan Lánský, Ph.D.

Objektově orientované programování

Soubory. Hung Hoang Dieu. Department of Mathematics Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague 1 / 7

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 )/ ;

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

Programování v jazyce C a C++

Aplikační vrstva. Úvod do Php. Ing. Martin Dostal

Programování II. Návrh programu I 2018/19

Zpracování deklarací a přidělování paměti

Operační systémy. Cvičení 4: Programování v C pod Unixem

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

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

Odvozené a strukturované typy dat

Základy C++ I. Jan Hnilica Počítačové modelování 18

Jazyk C++ II. Šablony a implementace

Algoritmizace a programování

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

NMIN102 Programování /2 Z, Zk

Martin Flusser. December 15, 2016

NPRG031 Programování II 1 / :47:55

Algoritmizace. Cíle předmětu

Vysoké učení technické v Brně, Fakulta elektrotechniky a komunikačních technologií Ústav automatizace a měřící techniky. Semestrální projekt

Výčtový typ strana 67

konstruktory a destruktory (o)

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

ADT/ADS = abstraktní datové typy / struktury

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áklady programování (IZP)

Algoritmizace a programování

Množina čísel int stl-set-int.cpp

Pokud neuvedeme override, vznikne v synu nová (nevirtuální) metoda (a pochopitelně se nezavolá, jak bychom

Sdílení dat mezi podprogramy

ZPRO v "C" Ing. Vít Hanousek. verze 0.3

Transkript:

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace Předmět: Vývoj aplikací Téma: Pole Vyučující: Ing. Milan Káža Třída: EK3 Hodina: 14 Číslo: V/5

Programování v jazyce C a C# 12. Pole Pole je strukturovaný homogenní(všechny prvky v poli jsou stejné) datový typ. To znamená že, obsahuje několik prvků stejného datového typu se kterými je možné pracovat. K jednotlivým prvkům pole se přistupuje postupně a také se s nimi tak pracuje. Pole může mít různou velikost, začátek je dán ukazatelem, konec pole ale není dán proto je nutné ho hlídat. Pole není záhada ani složitost, pole jsou zase jen data Pole je možné rozdělit na statické a dynamické dále je možné ro rozdělit na jednorozměrné a vícerozměrné. V jazyku C se s poli pracuje jinak než v jazyce C#. S poli je možné pracovat i v PHP a práce s nimi je blíže k původnímu jazyku C. 12.1. Pole v jazyce C V jazyce C je pole v podstatě pointer(byl popsán v předcházející části bude) obsahující adresu nultého prvku pole. V jazyce C začíná pole vždy nultým prvkem a to je z důvodu pro zvýšení efektivnosti pro přístup do pole. Jednorozměrné pole int cisla[10]; //pole pro 10 čísel char pole_znaku[20]; //pole pro 20 znaků tímto způsobem se zadává jednorozměrné pole, a je to pole statické, protože je znám počet prvků v poli. Jednorozměrné pole je možné zapsat i tímto způsobem: int pocet[5]={1,2,3,4,5}; //počet prvků v poli je tedy 5 char slovo[]= Ahoj lidi ; //zadání řetězce

Pokud se zadává slovo tak program porovnává shodnost zda se zadané slovo nachází někde v textu např. v souboru. Přístup k prvkům K jednotlivým prvkům pole se přistupuje pomocí operátoru indexu [ ], který je uveden za identifikátorem pole. Uvnitř závorek operátoru je pak potřeba uvést celé číslo odpovídající indexu prvku v poli. V jazyce C je to nula. Příklad ukazuje jak se přístupuje j jednotlivým prvkům pole: int w; int prvky[10]; for(w=0;q<10; q++){ prvky[q]=q+1; } for(q=0; q<10; q++){ printf( %i,prvky[q]); } Příklad je vhodné si vyzkoušet a ve vývojovém prostředí Borland C si program odkrokovat. Vícerozměrné pole Jazyk C umožňuje, aby pole bylo vícerozměrné, tedy bylo možné zadat dvě a více polí. Nejčastěji se zadává dvourozměrné pole i pro vícerozměrná pole platí, že začínají nulou. Zadání vícerozměrného pole: int znak[2][3]; Zde je inicializace dvojrozměrného pole, které bude mít velikost 2 a 3, tedy alokuje v paměti 2*3 prvků.

Uložení prvků pole v paměti Prvky pole jsou v paměti ukládany ve stejném pořadí, v jakém se uvádějí při inicializaci pole. Například u pole int znak[2][3] jsou v paměti uloženy v tomto pořadí: x[0][0], x[0][1], x[0][2], x[1][0], x[1][1], x[1][2]. Na n-rozměrné pole se lze také dívat jako na jednorozměrné pole, jehož prvky jsou (n-1)-rozměrná pole. Výše uvedené dvourozměrné pole x tedy může být chápáno jako jednorozměrné pole typu int [3] o velikosti 2. 12.2. Pole v jazyce C# Pole v jazyce C# jsou indexována od nuly jako v jazyce C, jinak jsou mezi poli v jazyce C a C# rozdíly. Hlavní rozdíly je možné shrnout do těchto bodů: - S poli se zachází prostřednictvím odkazů a vytváří se poouze pomocí new. O zrušení pole se stará automatická správa paměti. - S polem se v C# pracuje jako s celkem. - Při přístupu k prvkům se vždy zkontroluje, zda leží požadovaný index v rozmezí určeném deklarací, v případě že ne, tak vzniká výjimka typu: System.IndexOutOfRangeException Pole jsou v C# odvozeny od třídy System.Array a je možné ji použít s příkazem foreach. Jednorozměrné pole Jednorozměrné pole je s jedním indexem a má tuto deklaraci: int [] pole=new int[10] int[ ] je typ prvku pole zde se neuvádí v hranatých závorkách číslo pole je identifikátor new je instance pro jednorozměrné pole za new znovu typ např. int a do hranatých závorek se napíše počet prvků pole

V programu se deklarace jednorozměrného pole zadává tímto způsobem int[] pole=new int[]{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; Programování v jazyce C a C# část I. Nula se musí napsat, protože pole v C# začíná vždy od nuly. K jednotlivým prvkům se přistupuje pomocí operátoru indexování jako v jazyce C, ale na rozdíl od jazyka C se v jazyce C# se kontroluje, zda index leží v mezích dané deklarace. Jazyk C# nabízí možnost zjistit délku pole a to pomocí příkazu Lenght. Tento příkaz je možné použít např. při výpisu délky pole, pokud není známá jeho délka. Zde je ukázka kódu pro zjištění délky pole. } { public static void Vypis(double[] pole) for (int q=0; q<pole.lenght;q++) Console.Writeln(pole[q]); Tento příklad zjistí jak dlouhý je text v souboru, nebo kolik má věta slov. Pole je možné také zkopírovat do jiného pole a to příkazem CopyTo a do kódu programu se zapisuje tímto způsobem: pole.copyto(wpole,3); Tento kód zajistí, že se prvky z pole okopírují do prvků wpole a uloží se v něm prvky počínake indexem 3. Vícerozměrné pole Specifikace vícerozměrného pole se provádí stejně jako u jednorozměrného pole pouze se v hranatých závorkách napíše čárka. Inizializace víerozměrného pole se zapisuje tímto způsobem: int[.] pole2=new int[2,3]

Pole se skládá ze dvou prvků a přistupuje se k němu po jednotlivých prvcích. Dynamická pole Tento typ polí se objevuje především v jazyce C. Ve většině případů ví programátor jak velké bude pole, ale může nastat případ, kdy tato skutečnost není známá a proto se vytváří dynamické pole. Důležité je aby všechny prvky pole byly stejného typu např. int. Je nutné předem alokovat paměť pro uložení dynamického pole a to se děje až za chodu programu. Dynamické pole se zadefinuje pomocí ukazatele int *p_cislo tak je do programového kódu zadáné, že někde bude identifikátor tohoto datového typu a dále se musí alokovat paměť, k alokování paměti se použije příkaz malloc() a celý zápis do kódu programu se zapíše: p_cislo = (int *) malloc(pocet * sizeof(int)); malloc - přidělování paměti během běhu programu. sizeof - vrací počet bajtů, které obsadila alokace pole v paměti. Dle počtu prvků a typu použitých prvků je dána celková alokovaná oblast. Zabere se určitý počet Bajtů v paměti. POCET - je buď přímá hodnota nebo symbolická konstanta. Zde je vidět výhoda dynamických polí, že se rozhodne až během běhu programu o velikosti přidělené paměti a to podle aktuální situace. Neplýtvá se tedy pamětí. Po ukončení práce s dynamickým pole je nutné pole zrušit p_cislo=0; tím je zajištěno vynulování pole a uvolnění paměti. S touto formou pole je možné se setkat v jazyce Borland C++ 3.1 a v jeho dalších produktech, dynamické pole se využívala především v době MS-DOS, kdy velikost harddisku byla např 50MB, což v současné době jsou obrovské úložiště, v jazyce C# tento způsob pole není. Pole v PHP S poli se také pracuje v jazyce PHP a slouž především pro usnadnění práce s MySQL. Pole se vytváří příkazem array a do závorky se vkládají prvky. Pole se v PHP zavádí takto: array( prvek1, prvek2, prvek3 )

každý prvek má své číslo a začíná se vždy od nuly, stejně jako v C nebo C#. Programování v jazyce C a C# část I. Příklad zavedení pole v PHP.. $pole = array ("mrkev", "celer", "brambory"); echo($pole[0]); //vypíše 'mrkev'; $zahrada = array (3 => "jablon", "hrusen"); echo($zaharda[4]); //vypíše 'hrusen';.. tato ukázka programu je stažena z internetových stránek http://www.tvorba-webu.cz/php, kde je možné si nastudovat problematiku PHP. Pole jako program bude vytvořen ve Visual Studio v kapitole..

Kontrolní otázky: 1. Vysvětlete pojem pole 2. Rozdělte pole podle velikosti 3. Řekněte kde všude je možné zavést pole a jeho specifikace Použitá literatura: Miroslav Virius: C# pro zelenáče, 1.vydání, Neocortex, s.r.o Praha, 2002 Pavel Herout: Učebnice jazyka C, 3.vydání, KOOP České Budějovice, 1997 Miroslav Virius: od C++ k C#,1.vydání, KOOP České Budějovice, 2002