Jump to content

vEnd

Recommended Posts

  • Hlavní moderátor

 Obtížnost: :2:
 
Osnova:
1. Úvod, co je to pole
2. Deklarace pole
3. Práce s indexy (přiřazování hodnot)
4. Pole a řetězec

5. Vícerozměrné pole
6. Závěr
 
1. Úvod
Zdraví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 pole
Jako 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:

.

yXg8PgI.png

 

 

 

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

  • 1 month later...
  • Globální moderátor

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

  • Líbí se mi to! (+1) 1
Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...