V programování se často setkáváme s využitím polí. Mnohým toto téma způsobuje poměrně velké potíže kvůli nedostatečnému pochopení toho, co jsou pole a jak s nimi pracovat. Jejich použití však bylo, je a bude jednou z nejdůležitějších částí psaní kódu. Proto bych dnes chtěl mluvit o polích.
Jak jsem řekl, pole jsou velmi běžná. Nejčastěji, pokud mluvíme o vývoji webových stránek, se s nimi setkáváme v php a JavaScript kódech. Samozřejmě existují rozdíly při práci s poli v php a JavaScriptu, ale když pochopíte, jak pracovat s poli v jednom z programovacích jazyků, nebude těžké přijít na to, jak pracovat v jiném.

V tomto článku budu mluvit o polích ve vztahu k jazyku php.

Co jsou pole?

Podle definice, Arrayje to očíslovaná množina proměnných.

Proměnné v poli jsou prvky pole. Jejich pozice v poli je dána index.

Pokud to není příliš snadné pochopit, pak si představte “kouzelnou” krabici. V něm můžete vytvořit libovolný počet oddělení a přidat k těmto oddělením něco. V případě potřeby můžete: odstranit oddělení; vytvořit nové; vytáhněte a použijte obsah, který je v nich; nahradit obsah jednotlivých přihrádek něčím jiným; Do jedné z přihrádek, která také obsahuje různá oddělení, můžete uložit další pole.

To znamená, že Arrayje to datový typ, který obsahuje sadu prvků. Chci hned říci, že tyto prvky, pokud mluvíme o jazyce php, nemusí být stejného typu!

K čemu jsou pole?

Možná vám není úplně jasné, proč potřebujete pole používat.

Vezměme si jeden jednoduchý příklad.

Řekněme, že potřebujete napsat program, který bude počítat aritmetický průměr tržeb za měsíc (nebo za rok). K tomu potřebujeme znát počet prodejů za jednotlivé dny v měsíci a podle toho tato data někam uložit. Můžeme deklarovat 30 proměnných (nebo 356 pro rok). Spočítali jste, kolik řádků kódu musíte napsat?

Dále musíme napsat vzorec, který vypočítá aritmetický průměr. Chcete-li to provést, sečtěte všechny proměnné a vydělte součet počtem dní. Nemyslíte, že vzorec může být “trochu” těžkopádný?

Při tom všem, deklarování tak velkého množství proměnných a následném dosazení toho všeho do vzorce, není divu, že uděláme chybu a náš výsledek bude nesprávný. Co když ale v jednu krásnou chvíli potřebujeme zjistit aritmetický průměr ne na 30 dní, ale třeba na měsíc a půl? Musíme změnit celý kód!

Použití pole v této situaci nám výrazně usnadní život. Ostatně pomocí příslušných funkcí zjistíme: počet prvků pole, součet prvků pole, veškerá prodejní data můžeme uložit do jednoho datového typu – pole a zároveň nebudeme muset vytvářet obrovské množství proměnných.

Toto je jen jeden malý příklad, který vám může pomoci pochopit, proč jsou pole potřebná. V praxi se takové problémy objevují neustále. A pokud víte, jak pracovat s poli, pak je jejich řešení mnohem jednodušší.

READ
Co je Parebrik?

Naučit se pracovat s poli vyžaduje praxi a určité znalosti. Plánuji napsat sérii článků, ve kterých se pokusím mluvit o různých jemnostech, funkcích a příkladech. Tento článek je tedy jen začátek našeho seznamování s poli.

Na to je třeba pamatovat při práci s poli!

Jsme zvyklí, že začátek něčeho se počítá od „1“. V mnoha situacích je to pravda, ale ne v situaci s poli.

Již jsem řekl, že pozice prvku v poli je dána jeho indexem. Číslování prvků pole tedy nezačíná od 1, ale od 0. To je třeba vždy pamatovat, aby nedošlo k chybám!

Je třeba poznamenat, že Velikost pole je celkový počet prvků v poli.

Jak deklarovat pole

Existuje několik způsobů, jak deklarovat (nebo inicializovat) pole.

Pole můžete inicializovat prvek po prvku zadáním indexu.

Chcete-li to provést, nejprve vymyslete název pole. Pojmenujme pole například „$Mass1“. Nyní můžeme pole inicializovat a vložit tam nějaké proměnné.

Jak vidíte, nejprve přichází název našeho pole (při deklaraci nezapomeňte na znak „$“), poté hranaté závorky, které označují index prvku, poté přiřazovací znak „=“ a hodnota znaku samotný prvek. V tomto příkladu jsou hodnoty celá čísla následovaná středníkem.

Můžete udělat totéž, ale bez zadání indexů. V tomto případě php automaticky přiřadí index pro každý další prvek o jeden více než ten poslední. Jinými slovy, přidá prvek na konec pole.

Ale jak jste si všimli, hranaté závorky jsou stále potřeba. PHP potřebuje vědět, že má co do činění s polem.

Existuje další způsob, který nevyžaduje hranaté závorky a můžete zadat všechny prvky pole najednou na jednom řádku. Místo hranatých závorek je však vyžadováno speciální slovo „array“, které php řekne, že máme co do činění s polem.

To se děje takto:

Takto můžeme vytvářet pole a plnit je různými prvky.

Ve skutečnosti to nejsou všechny metody, protože existují také asociativní a vícerozměrná pole, ale o nich si povíme v příštím článku. Všechno je v pořádku.

Naučili jsme se vytvářet pole. Pojďme si nyní promluvit o tom, jak můžete získat a změnit konkrétní prvek pole.

Jak získat a změnit prvek pole

Abychom tedy odkazovali na jakýkoli prvek pole, použijeme jeho index, který je také uveden v hranatých závorkách.

Mějte na paměti, že indexování začíná od nuly.

Řekněme, že máme takové pole:

Chcete-li například získat první prvek pole a zobrazit jej na obrazovce, můžeme použít následující kód:

Výsledkem je, že na obrazovce uvidíme hodnotu prvního prvku pole – “Masha”.

READ
Jak se nazývají venkovní žaluzie?

Zároveň nezapomeňte, že abyste mohli otestovat php kód na vašem lokálním počítači, budete muset nainstalovat a spustit Denver.

Také nezapomeňte, že veškerý php kód musí být zapsán mezi speciální znaky php deklarace. Takže úplný kód pro tento příklad by byl:

Abychom získali druhý prvek, místo nuly v hranatých závorkách uvedeme jedničku a tak dále.

Můžeme také přidat prvek do pole nebo upravit existující.

Chcete-li přidat prvek na konec pole, stačí napsat následující:

A chcete-li změnit existující prvek, musíte v hranatých závorkách označit index prvku, který chcete změnit, a přiřadit mu novou hodnotu. Takhle:

A nakonec si povíme něco o velikosti pole.

Jak zjistit velikost pole

Dost často je pro různé výpočty potřeba znát velikost pole, jinými slovy počet jeho prvků.

V php to lze provést pomocí funkce „count“:

Nebo pomocí funkce “sizeof”:

Obě možnosti zobrazí hodnotu – “5”. Tuto hodnotu nesmíte zobrazit na obrazovce, ale jednoduše ji zadáte do proměnné a poté ji použijete tam, kde ji potřebujete.

Myslím, že pro dnešek to dokončíme a v dalším článku budeme pokračovat v práci a seznamování s poli.

Pokud se vás toto téma týká, zanechte svůj komentář.

Tento článek můžete také sdílet se svými přáteli pomocí níže uvedených tlačítek sociálních sítí.

Pokud jste se ještě nepřihlásili k odběru aktualizací blogu, níže je také formulář pro přihlášení.

Java univerzita

Představte si buňky ve skladu. Každý má své vlastní číslo a každý obsahuje nějaký druh předmětu „Zavazadla“. Nebo vinný lístek, ve kterém jsou všechny druhy vín očíslovány a při objednávce stačí uvést číslo nápoje. Nebo seznam studentů ve skupině, ve které bude student „Andreev“ napsán v první buňce a „Yakovlev“ v poslední buňce. Nebo seznam cestujících v letadle, z nichž každý má přidělené sedadlo s konkrétním číslem. V Javě se pro práci s podobnými strukturami, tedy spoustou homogenních dat, často používají pole v Javě.

Co je pole?

Pole v Javě

Pole je datová struktura, která ukládá prvky stejného typu. Lze si jej představit jako sadu očíslovaných buněk, z nichž každá může obsahovat nějaká data (jeden datový prvek na buňku). Přístup ke konkrétní buňce se provádí prostřednictvím jejího čísla. Číslo prvku v poli se také nazývá index. V případě Javy je pole homogenní, to znamená, že všechny jeho buňky budou ukládat prvky stejného typu. Pole celých čísel tedy obsahuje pouze celá čísla (například typu int), pole řetězců obsahuje pouze řetězce, pole prvků třídy Dog, kterou jsme vytvořili, bude obsahovat pouze objekty Dog. To znamená, že v Javě nemůžeme vložit celé číslo do první buňky pole, řetězec do druhé a „pes“ do třetí.

READ
Kde lze tekutou gumu použít?

Prohlášení pole

Jak deklarovat pole?

Jako každá proměnná musí být pole v Javě deklarováno. Můžete to udělat jedním ze dvou způsobů. Jsou ekvivalentní, ale první je více v souladu se stylem Java. Druhým je dědictví jazyka C (mnoho programátorů C přešlo na Javu a pro jejich pohodlí byla ponechána alternativní metoda). Tabulka ukazuje oba způsoby, jak deklarovat pole v Javě:

číslo Deklarace pole, syntaxe Java Příklady Komentář
1. Je vhodné deklarovat pole tímto způsobem, jedná se o styl Java
2. Zděděný způsob deklarace polí z C/C++, který funguje také v Javě

V obou případech je dataType typem proměnných v poli. V příkladech jsme deklarovali dvě pole. Jeden bude ukládat celá čísla typu int , druhý bude ukládat objekty typu Object . Když je tedy pole deklarováno, má název a typ (typ proměnných pole). arrayName je název pole.

Vytvoření pole

Jak vytvořit pole?

Jako každý jiný objekt můžete vytvořit pole Java, to znamená vyhradit pro něj paměťový prostor, pomocí operátoru new. To se provádí takto: Kde typeOfArray je typ pole a délka je jeho délka (tj. počet buněk), vyjádřená v celých číslech ( int ). Zde jsme však pouze alokovali paměť pro pole, ale nepřidružili jsme vytvořené pole k žádné dříve deklarované proměnné. Typicky je pole nejprve deklarováno a poté vytvořeno, například: Zde jsme deklarovali pole celých čísel nazvané myArray a poté prohlásili, že se skládá z 10 buněk (z nichž každá bude obsahovat celé číslo). Mnohem běžnější je však vytvořit pole ihned po jeho deklaraci pomocí této zkrácené syntaxe: Poznámka: Po vytvoření pole pomocí new se jeho buňky vyplní výchozími hodnotami. Pro číselné typy (jako v našem příkladu) to bude 0, pro boolean – false, pro referenční typy – null. Po operaci tedy dostaneme pole deseti celých čísel, a dokud se to během programu nezmění, každá buňka obsahuje 0.

Více informací o polích naleznete v článku „Něco o polích“

Délka pole v Javě

Pole v Javě - 3

Jak jsme si řekli výše, délka pole je počet prvků, pro které je pole navrženo. Délku pole nelze po jeho vytvoření změnit. Poznámka: v Javě jsou prvky pole číslovány od nuly. To znamená, že pokud máme pole 10 prvků, pak první prvek pole bude mít index 0 a poslední bude mít index 9. K délce pole můžete přistupovat pomocí proměnné délky. Příklad: Výstup programu:

Inicializace pole a přístup k jeho prvkům

Jak vytvořit pole v Javě je již jasné. Po tomto postupu nezískáme prázdné pole, ale pole vyplněné výchozími hodnotami. Například v případě int to bude 0, a pokud máme pole s daty referenčního typu, pak se standardně do každé buňky zapíše null. K prvku pole (to znamená, že do něj zapíšeme hodnotu nebo ji zobrazíme na obrazovce nebo s ním provedeme nějakou operaci) přistupujeme podle jeho indexu. Inicializace pole znamená jeho naplnění konkrétními daty (není ve výchozím nastavení). Příklad: vytvoříme pole 4 ročních období a naplníme ho řetězcovými hodnotami – názvy těchto ročních období. Nyní všechny čtyři buňky našeho pole obsahují názvy ročních období. Inicializace může být také provedena jinak, a to kombinací inicializace a deklarace: Navíc lze vynechat nový operátor:

READ
Jak vypočítat spotřebu akrylové barvy?

Jak zobrazit pole v Javě na obrazovce?

Prvky pole můžete zobrazit na obrazovce (tedy do konzole), například pomocí cyklu for. Jiný, kratší způsob zobrazení pole na obrazovce bude probrán v odstavci „Užitečné metody pro práci s poli“ níže. Prozatím se podívejme na příklad s cyklickým výstupem pole: Výsledkem je, že program vypíše následující výsledek:

Jednorozměrná a vícerozměrná pole Java

Pole v Javě - 4

Co když nechceme vytvořit pole čísel, pole řetězců nebo pole nějakých objektů, ale pole polí? Java vám to umožňuje. Již známé pole int[] myArray = new int[8] je tzv. jednorozměrné pole. A pole polí se nazývá dvourozměrné. Je to jako tabulka, která má číslo řádku a číslo sloupce. Nebo, pokud jste se naučili začátky lineární algebry, na matici. Proč jsou taková pole potřebná? Zejména pro programování stejných matic a tabulek, stejně jako objektů, které se jim podobají ve struktuře. Například hrací pole pro šachy lze zadat jako pole 8×8. Vícerozměrné pole je deklarováno a vytvořeno následovně: Toto pole má přesně 64 prvků: myTwoDimentionalArray[0][0] , myTwoDimentionalArray[0][1] , myTwoDimentionalArray[1][0] , myTwoDimentionalArray[1][1] atd. až do myTwoDimentionalArray[7][7] . Pokud ji tedy použijeme k reprezentaci šachovnice, pak buňka A1 bude reprezentována myTwoDimentionalArray[0][0] a buňka E2 bude myTwoDimentionalArray[4][1] . Kde jsou dva, tam jsou tři. V Javě můžete zadat pole polí. pole polí polí a tak dále. Pravda, trojrozměrná a více polí se používají velmi zřídka. Pomocí trojrozměrného pole však můžete naprogramovat například Rubikovu kostku.

Užitečné metody pro práci s poli

Pro práci s poli v Javě existuje třída java.util.Arrays (pole v angličtině znamená „pole“). Obecně se s poli nejčastěji provádějí následující operace: plnění prvky (inicializace), načítání prvku (podle čísla), třídění a vyhledávání. Hledání a řazení polí je samostatné téma. Na jednu stranu je velmi užitečné si sami procvičit a napsat několik vyhledávacích a třídicích algoritmů. Na druhou stranu, všechny osvědčené postupy již byly napsány a zahrnuty do knihoven Java a lze je legálně používat.

Články k vyhledávání a třídění:

Řazení a vyhledávání v kurzu CS50:

Seřadit pole

Metoda void sort(int[] myArray, int fromIndex, int toIndex) třídí pole celých čísel nebo jejich podpole ve vzestupném pořadí.

READ
Co dal Jelcin?

Hledání pole pro požadovaný prvek

int binarySearch(int[] myArray, int fromIndex, int toIndex, klíč int) . Tato metoda hledá klíčový prvek v již seřazeném myArray nebo dílčím poli, počínaje fromIndex a končí toIndex . Pokud je prvek nalezen, metoda vrátí jeho index, pokud ne, (-fromIndex)-1 .

Převod pole na řetězec

Metoda String toString(int[] myArray) převede pole na řetězec. Jde o to, že v Java pole nepřepisují toString() . To znamená, že pokud se pokusíte vytisknout celé pole (nikoli prvek po prvku, jako v „Tisk pole na obrazovku“) přímo na obrazovku ( System.out.println(myArray) ), získáte název třídy a hexadecimální hash kód pole (ten je definován pomocí Object.toString()). Pokud jste začátečník, možná budete zmateni vysvětlením metody toString. V první fázi to není nutné, ale použitím této metody se výstup pole zjednoduší. Java usnadňuje zobrazení pole bez použití smyčky. Více o tom v příkladu níže.

Příklad na sort, binarySearch a toString

Vytvořme pole celých čísel, zobrazme ho na obrazovce pomocí toString , seřaďme ho metodou sort a najdeme v něm nějaké číslo. Výstup programu:

První řádek je pokus o zobrazení pole bez toString , druhý je zobrazení pole pomocí toString , třetí je seřazené pole, čtvrtý je index požadovaného čísla 5 v seřazeném poli (nezapomeňte, že počítáme od nula, takže čtvrtý prvek pole má index 3). V pátém řádku vidíme hodnotu -1. Pole takový index nemá. Výstup signalizuje, že požadovaný prvek (v tomto případě 0) není v poli.

Více o metodách třídy Array

Třída Arrays a její použití – článek popisuje některé metody třídy Array

To hlavní o polích

Hlavní charakteristiky pole: typ dat v něm umístěných, název a délka.
O tom druhém se rozhoduje při inicializaci (přidělení paměti pro pole), první dva parametry jsou určeny při deklaraci pole.

Velikost pole (počet buněk) musí být definována v int

Po vytvoření pole nelze změnit jeho délku.

K prvku pole lze přistupovat pomocí jeho indexu.

V polích, stejně jako jinde v Javě, jsou prvky číslovány od nuly.

Po proceduře vytvoření pole se pole vyplní výchozími hodnotami.

Pole v Javě jsou strukturovány jinak než v C++. Jsou téměř stejné jako ukazatele na dynamická pole.

Užitečné materiály o polích

Něco o polích – dobrý podrobný článek o polích

Třída Arrays a její použití – článek popisuje některé metody třídy Array

Vícerozměrná pole – podrobný článek o vícerozměrných polích s příklady.

Vraťte pole nulové délky, nikoli null – autor efektivního programování Joshua Bloch hovoří o tom, jak lépe vracet prázdná pole

Alexander se začal zajímat o programování už ve škole a psal hry. Později tato záliba přerostla v profesionální rozvoj. Práce. [Přečíst celou biografii]