Hlavní moderátor vEnd 279 Odesláno: 2. Červenec, 2016 Hlavní moderátor Share Odesláno: 2. Červenec, 2016 Obtížnost: Osnova:1. Úvod, co je to pole2. Deklarace pole3. Práce s indexy (přiřazování hodnot)4. Pole a řetězec 5. Vícerozměrné pole6. Závěr 1. ÚvodZdravím, tohle je druhý ze série návodů pro začínající pawnery. Návod navazuje na ten předchozí o proměnných (klik). Znalost proměnných je nutná k pochopení tohoto návodu, proto Vám doporučuji, abyste si nejprve přečetli ten první návod (odkaz je k dispozici). Co je to pole? Pole (angl. array) je, zjednodušeně řečeno, proměnná, do které můžeme ukládat více hodnot. Funguje to tak, že se nám v paměti vymezí prostor a tento prostor se nám rozdělí na tolik buněk, kolik určíme. Jako kdybychom vzali dort a rozkrojili ho na námi určený počet kousků. K těmto jednotlivým buňkám (kouskům dortu) pak přistupujeme pomocí tzv. indexů. 2. Deklarace poleJako první začneme s deklarací pole. Ta funguje stejně jako u proměnné, akorát s malým rozdílem. . new hraci[3]; . Opět jsme použili slůvko new, opět jsme zvolili název a opět jsme to všechno zakončili středníkem. Co se tedy změnilo? Hned za název jsme přidali hranaté závorky [ ] a do nich jsme vepsali velikost pole. Je tam 3, což znamená, že pole s názvem hraci má celkem 3 buňky. Samozřejmě můžeme deklarovat více polí naráz a přidat k nim různé tagy (pro různé datové typy), stejně jako u proměnných. . new hraci[3], Float:souradnice[4], bool:admin[10]; . 3. Práce s indexy (přiřazování hodnot)Nyní máme vytvořené pole. Jak teď do jednotlivých buněk uložíme hodnoty? Budeme k nim přistupovat přes, již zmíněné, indexy. Každá buňka má svůj unikátní index. Indexy vždy začínají od nuly. Poslední index bude vždy o jedno menší, než je velikost pole. Takže naše pole hraci bude mít indexy 0 až 2, pole souradnice bude mít indexy 0 až 3 a pole admin bude mít indexy 0 až 9. Teď pojďme poli hraci přiřadit nějaké hodnoty. . hraci[0] = 1; hraci[1] = 0; hraci[2] = -3; . Takhle jsme všem třem buňkám určili hodnotu. Indexy zapisujeme tam, kde jsme při deklaraci zapisovali velikost. Pro procvičení to samé uděláme i s druhým polem. . souradnice[0] = 4.7; //ukládáme čísla s desetinnou čárkou souradnice[1] = 8.52; souradnice[2] = -1.02; souradnice[3] = -0.5; . Pro zajímavost (rozklikněte spoiler): Stejně jako proměnné, tak i poli můžeme přiřadit výchozí hodnotu při deklaraci. Tomu se říká inicializace pole. Provést se to dá následovně: . new hraci[3] = {-3, 0, 3}; . Hodnoty jsme uzavřeli do složených závorek { } a oddělili čárkou. První buňka (s indexem 0) teď bude mít hodnotu -3, druhá buňka (s indexem 1) hodnotu 0 a třetí buňka (s indexem 2) hodnotu 3. Při inicializaci pole je možné nevyplnit velikost, jazyk si ji dopočítá sám podle počtu hodnot. . new hraci[] = {-3, 0, 3}; //uvedli jsme jen prázdné hranaté závorky [], velikost se dopočítá sama 4. Pole a řetězec Už u proměnných jsme narazili na tento způsob deklarace – jednalo se o řetězce. Je načase si říci, že řetězec není nic jiného než pole znaků. Každá buňka obsahuje jeden znak z řetězce. Podívejme se na následující příklad: . new pozdrav[4+1]; //deklarace pole znaků (řetězce), nezapomeňme přičíst jedničku (znak) navíc pozdrav = "ahoj"; . Teď máme v poli/řetězci pozdrav slovo "ahoj". Když si ho rozpitváme, zjistíme, že každý index v sobě má jedno písmeno. . pozdrav[0] = 'a' pozdrav[1] = 'h' pozdrav[2] = 'o' pozdrav[3] = 'j' . Index 4 jsem záměrně nezmínil. Proč? Podrobněji se tomu budu věnovat v návodu o řetězcích, prozatím si vystačíme s informací, že jedná-li se o řetězec (u ostatních polí to neplatí), musí poslední buňka zůstat nezměněná. Necháme ji prostě tak, jak je. Pro zajímavost (rozklikněte spoiler): Stejně jako pole, tak i řetězec můžeme inicializovat, a to takto: . new pozdrav[4+1] = "ahoj"; //s určenou velikostí new pozdrav2[] = "ahoj"; //velikost se opět dopočítá sama 5. Vícerozměrné pole (pro středně pokročilé – rozklikněte spoiler) Doposud jsme se učili pracovat s polem, které mělo jen jeden rozměr. Pawn nám ale umožňuje pracovat i s vícerozměrnými poli. Rozdíl spočívá v tom, že nám přibude další index, se kterým můžeme pracovat. Podívejme se na ukázku: . new hraci[2][3]; //deklarace dvourozměrného pole hraci[0][0] = -1; hraci[0][1] = 0; hraci[0][2] = 1; hraci[1][0] = -3; hraci[1][1] = 0; hraci[1][2] = 3; . Jak je vidět, nový index je závislý na prvním indexu. Na každém levém indexu jsou závislé tři indexy vpravo. Lépe se to dá pochopit z této tabulky: . 6. Závěr A jsme na konci. Nyní už víme, jak funguje pole, jak jej vytvořit a jak s ním pracovat. Taky jsme si řekli něco málo o principu vícerozměrných polí a o tom, jaký vztah má řetězec k poli. Tento návod, stejně jako ten předchozí, je určen pro nováčky, pokročilejší věci byly buďto úplně vynechány, nebo jsou uvedeny ve spoilerech. Přesto, zdá-li se Vám, že jsem něco opomněl, někde jsem se spletl nebo se jen chcete vyjádřit, pište do tohoto tématu. Ověřený návod Tento návod prošel validací, a lze ho proto považovat za ověřený. Link to comment Share on other sites More sharing options...
Globální moderátor HighPrint 177 Odesláno: 17. Srpen, 2016 Globální moderátor Share Odesláno: 17. Srpen, 2016 Jenom dodatek: Inicializace může ještě fungovat takovýmhle způsobem: new hraci[50] = {1,,...}; // hraci[0] = hraci[1] = ... = hraci[49] = 1; new hraci[50] = {1,2,...}; // hraci[0] = 1, hraci[1] = 2, hraci[2] = 3;... new hraci[50] = {50,49,...}; // hraci[0] = 50, hraci[1] = 49, hraci[2] = 48;... new hraci[50] = {2,4,...}; // hraci[0] = 2, hraci[1] = 4, hraci[2] = 8;... a různé posloupnosti, které vás napadnou 1 Link to comment Share on other sites More sharing options...
Hlavní moderátor vEnd 279 Odesláno: 17. Srpen, 2016 Author Hlavní moderátor Share Odesláno: 17. Srpen, 2016 http://pawno.cz/topic/34984-inicializace-aneb-nastaven%C3%AD-hodnot-v-pol%C3%AD/ Není nutno zmiňovat, je to už tady. Link to comment Share on other sites More sharing options...
Globální moderátor HighPrint 177 Odesláno: 17. Srpen, 2016 Globální moderátor Share Odesláno: 17. Srpen, 2016 Já myslel že mi ho smazali, když jsem ho nenašel, tak jsem to tu dodatečně zmínil Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now