RSS
 

Posts Tagged ‘Java’

Fronta v Javě (1.díl) – Teorie

06 Zář

Vytvoření fronty bývá velice častým zadáním v různých školních předmětech zabývajícími se programováním. A jelikož spousta lidí nemá tušení jak taková fronta vůbec funguje, tak jsem se rozhodl sepsat takovou malou ukázku jak vytvořit Datovou strukturu typu Fronta v jazyce Java.

Fronta je abstraktní datový typ uplatňující mechanismus FIFO (First in, First out). To znamená, že vkládaná data do struktury jsou vybírána ve stejném pořadí v jakém byla vložena. V praxi se většinou návrh fronty používá například k tzv. dávkovému zpracování dat. To vypadá zhruba tak, že zadavatel vyšle ke zpracování dávku tvořenou větším počtem dat. Zařízení, které má data zpracovat si uloží dávku do fronty odkud si je postupně odebírá. Princip činnosti si můžeme demonstrovat i na věcech z běžného života. Jistě každý z vás zná čekací systém fungující na úřadech, v nemocnicích a na poštách. Po příchodu si vezmete číslo a čekáte dokud na vás nepřijde řada. To je přesně funkční ukázka fronty. Zaměstnanec někde na přepážce má určitou rychlost jakou odbavuje návštěvníky a ta není vždy stejná jako rychlost příchodu návštěvníků. Pomocí tohoto vyčkávacího systému lze během pracovní doby odbavit prakticky všechny návštěvníky i když jich například v jeden časový úsek přijde větší množství než je schopen jeden zaměstnanec na přepážce v danou chvíli odbavit.

Fronta ve statickém poli

V programovacím jazyce Java lze vytvořit frontu několika způsoby. Tím asi nejjednodušším způsobem je vytvoření statického pole o N rozměrech. U tohoto způsobu vkládáme prvky vždy za poslední obsazené místo v poli a vybíráme vždy z prvního obsazeného místa. To má bohužel za následek to, že se nám fronta pomalu přesunuje z levé části pole doprava a až dojde na konec, tak dojde k přetečení pole. Ukázka je na následujícím obrázku.

Ukázka funkce datové struktury Fronta v poli

Fronta v poli

Tomu se dá zabránit tak, že si vytvoříme tzv. kruhovou frontu. Jedná se vlastně o statické pole jako v předchozím případě kde po obsazení posledního prvku se začne pole zaplňovat opět od začátku. Ovšem toto řešení také není úplně to pravé ořechové. Pokud počet prvků  momentálně uložených ve frontě převýší rozměr pole, tak dojde opět k nežádoucímu přetečení.

Fronta s referencemi

My si nyní ukážeme jak vytvořit frontu, která netrpí stejnými neduhy jako fronty tvořené statickým polem. A tou je fronta tvořená referencemi. Takto vytvořená fronta má tu výhodu, že může být prakticky libovolně veliká a nemusíme se bát přetečení pole jako v předchozím případě. Jak taková fronta může vypadat si demonstrujeme na následujícím obrázku.

Datová struktura Fronta vytvořená pomocí referencí

Fronta s referencemi

Jak je vidět na obrázku tak samotná fronta je tvořena prvky, které si vždy udržují informaci o následujícím prvku (reference na další) a vytváří tak zřetězený seznam. Fronta si pak dále udržuje ještě informaci o prvním a o posledním prvku v seznamu (reference na první a poslední).  Tyto reference nám ve frontě jasně vymezují pořadí prvků v jakém jsou ve frontě uloženy a v jakém pořadí mají být vybírány.

To jak si takovou jednoduchou frontu vytvořit si ukážeme v příštím díle.

 

Jak začít programovat (2. díl) – Hello world!

03 Čvc

Články ze seriálu ' Úvod do programování ' :

V dnešním díle se zaměříme poněkud více na praktickou část tvorby programu v programovacím jazyce Java pod operačním systémem Windows.

Instalace programů pro vývoj v jazyce Java

K psaní zdrojového kódu aplikace nám stačí jakýkoliv textový editor (ne, word není textový editor) například Poznámkový blok v systému windows může stačit. Bohužel tvorba v takovém prostředí je více než obtížná. V dnešní době existuje celá řada ucelených nástrojů umožnující programátorovi pohodlnou a rychlou práci v programovacím jazyce. Takovým nástrojům říkáme Vývojové prostředí (anglická zkratka IDE). Jedním z nejlepších takových prostředí v jazyce Java je netbeans. Jedná se o open source aplikaci k vývoji programů v různých programovacích jazycích (Java, PHP, C/C++, …). Pro úplnost ještě uvedu, že netbeans je multiplatformní a je tedy dostupné i uživatelům linuxu.

Pro stažení přejdeme na následující odkaz a stáhneme si netbeans. Je k dispozici i v českém jazyce, takže pokud máme raději lokalizované prostředí, tak nezapomeneme přepnout kolonku jazyku programu na český jazyk (pro jednoduchost budeme dále předpokládat, že každý má českou verzi, takže ti z vás co mají verzi anglickou jistě rádi prominou). Ke stažení je k dispozici také více verzí aplikace lišících se počtem podporovaných programovacích jazyků. Pro začátek však stačí verze programu pro jazyk Java (velikost 225 MB. Ostatní jazyky se dají v případě potřeby doinstalovat přímo v prostředí). Během stahování netbeans si musíme dále nainstalovat samotnou javu. Stáhneme ji z těchto stránek a hned po stažení nainstalujeme (je třeba provést před instalací netbeans).

Po stažení netbeans provedeme instalaci. Ta neskýtá, žádné překvapení a žádná nečekaná nastavení. Instalace je však poměrně zdlouhavá zvláště na starších PC, takže se musíme obrnit trpělivostí.

Hello World!

Po nainstalování aplikaci netbeans spustíme a v horním panelu zvolíme Soubor > Nový projekt > Java > Java Application > následující. Na této obrazovce vyplníme název projektu do kolonky Project Name (např. dáme „HelloWorldApp“). Project Location říká kde budou fyzicky na disku uloženy zdrojové soubory aplikace, takže asi můžeme nechat jak je nastaveno. Ostatních kolonek si nebude zatím všímat a pokračujeme tlačítkem dokončit. Po chvilce se nám vytvoří celý projekt a objeví se nám skelet souboru Main.java . To je soubor, který bude naší aplikací spouštěn vždy jako první. Zatím vypadá nějak takto:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */


package helloworldapp;

/**
 *
 * @author Sik
 */

public class Main {

    /**
     * @param args the command line arguments
     */

    public static void main(String[] args) {
        // TODO code application logic here
    }
}

Řádky začínající hvězdičkou a nebo dvěma lomítky se nazývají komentáře. Ty slouží především k lepší orientaci programátora v kódu. Přímo na chod aplikace vliv nemají. Řádek package helloworldapp říká do jakého balíčku bude patřit tento soubor. Balíčky slouží pro rozdělení robustnější aplikace na menší celky. Řádek public class Main znamená, že vše v bloku mezi { a } bude součástí třídy Main. Co je třída a k čemu je dobrá se dozvíme například na Wikipedii. Řádek public static void main definuje blok veřejné statické funkce main, která je zavolána při spuštění aplikace. Z toho důvodu vložíme kód naší budoucí aplikace právě do bloku funkce main.

1
// TODO code application logic here

Tento komentář tedy smažeme a vložíme místo něj následující řádek

1
System.out.println("Hello World!");

Tím docílíme toho, že po spuštění tohoto našeho malého programu bude zavolána třída Main a v ní funkce main. Tělem této funkce tedy bude předchozí kus kódu, který má na starosti vypsání zprávy Hello World! na výstup aplikace.

A je to. Tím jsme dokončili naší první aplikaci. Chceme-li si vyzkoušet zda funguje správně, tak zvolíme Run > Run Main Project a sledujeme kolonku Výstup ve spodní části netbeans. Pokud jsme udělali vše správně, tak by se mělo zobrazit následující

1
2
3
run:
Hello World!
BUILD SUCCESSFUL (total time: 1 second)

To je pro dnešek vše. Doufám, že se vám tento malý návod líbil a že vám alespoň trochu pomůže. Pokud budete mít nějaký problém, tak se neváhejte ozvat například dole v komentářích :)

Články ze seriálu ' Úvod do programování ' :

 

Jak začít programovat (1. díl)

22 Kvě

Články ze seriálu ' Úvod do programování ' :

Pár slov úvodem

V tomto seriálu bych rád pomohl těm z vás, kteří se chcete věnovat programování ať už profesionálně, či jen jako koníček ale nevíte kde začít. V prvé řadě musím uvést, že postupů jak se úspěšně naučit programovat je celá řada a tento seriál je založen na mých zkušenostech se začátky v programování. Programování je obecně dost volné a proto neberte zde uvedené informace jako zeď, kterou není možno překročit ale spíše jako takové mantinely, kterých se můžete ale nemusíte pevně držet. Články se budu snažit psát tak, aby ke zvládnutí základů programování stačilo pouze trochu logického uvažování, základní znalosti s užíváním PC (stažení programu, instalace programu, jednoduché nastavení programu) a základní znalost anglického jazyka (bez které se bohužel v programování asi neobejdeme).

Co vůbec znamená programování

Programování je soubor lidské činnosti vytvářející algoritmy a programy. Algoritmus je vlastně přesný návod jak vyřešit daný problém. Z reálného světa je příkladem algoritmu recept v kuchařce. Programem rozumíme zapsání algoritmu do daného programovacího jazyka tak, aby počítač přesně věděl jak má vyřešit daný problém. Pro jednoduchost si uvedeme příklad opět z kuchařky. Pokud bude recept algoritmem a kuchař počítačem, tak musí být vždy recept napsán v jazyce, kterému kuchař rozumí, aby mohl podle receptu vytvořit správný pokrm. Recept zapsaný v nějakém přesně specifickém jazyce se stává programem pro našeho kuchaře.

Postup tvorby aplikace

Ať plánujeme vytvářet jednoduché aplikace či naopak aplikace velice složité, vždy je nutné si nejprve vývoj důkladně připravit. Obecně se proces tvorby aplikace (programu) skládá z několika celků:

  • Rozvržení - v prvé řadě si musíme specifikovat co vše je cílem dané aplikace, jaké bude mít funkce, jakým způsobem bude komunikovat s uživatelem atd.. Vždy před tvorbou jakékoliv aplikace si musíme vše pečlivě připravit a naplánovat. V programování platí (více než kde jinde) pravidlo „Dvakrát měř, jednou řež“. Není nic horšího než předělávat program kvůli chybě při rozvrhování. Velice vhodné (alespoň ze začátku) je si sednout s papírem a tužkou ke stolu sepsat si co vše naše aplikace má umět a nakreslit si předpokládanou strukturu celé aplikace. Později při vývoji se můžeme podle těchto obrázků a popisů orientovat, takže se v kódu neztratíme.
  • Vývoj - v tomto kroku již vytváříme program v námi zvoleném jazyce. Nejlepším postupem, který se mi osvědčil je rozdělit si aplikaci na mnoho menších celků a ty postupně vytvářet. Nejvhodnější je začít tím nejobecnějším celkem a postupně se „zanořovat“ do těch více specifických prvků. Například pokud budeme vytvářet jednoduchou aplikace na správu CD, tak si nejdříve vytvoříme uživatelské prostředí (tj. část programu, která přímo komunikuje s uživatelem) a navrhneme si všechny ovládací prvky celé aplikace a až poté začneme vytvářet samotnou logiku všech ovládacích prvků.
  • Testování - Málokdy se stane, že se nám povede napsat program bez chyb. Vždy něco přehlédneme, něco zapomeneme. Z toho důvodu je nutné důkladně každou část aplikace otestovat a najít případné chyby. Někdy je tento proces zdlouhavější než samotný vývoj aplikace

Jaký programovací jazyk zvolit

Programovacích jazyků je celá řada. Některé jsou rozšířené více a některé zase méně. Když se naučíte obstojně programovat zjistíte, že většina programovacích jazyků je skoro stejná a liší se pouze v pokročilejších programovacích technikách. Je ale dobré si hned ze začátku vybrat takový jazyk, který nám umožní tvorbu jednoduchých ale i složitých aplikací. Bylo by škoda učit se pracovat v jazyce, který by v praxi byl téměř k ničemu.

Spousta lidí doporučuje začít s jazykem C.  S tímto jazykem mám spíše negativní zkušenosti. Začátky v něm jsou docela obtížné na pochopení a celkově mi přijde tento jazyk dost kostrbatý. Nicméně se jedná o velice často používaný jazyk jehož znalost je v dnešní době velkou výhodou.

Osobně si myslím, že nejlepším jazykem pro začátečníka je programovací jazyk Java. A proč zrovna Java? Jedná se o moderní objektově orientovaný programovací jazyk s velkým rozšířením a s dobrou využitelností. Na profesionální úrovni se využívá k tvorbě aplikací všech druhů i velikostí. Od aplikací pro mobilní zařízení, webové aplikace, desktopové aplikace až k počítačovým hrám. Možnosti Javy jsou obrovské. Pokud se naučíte dobře programovat v Javě, tak nejspíše hned tak nebudete potřebovat učit se jiný jazyk. Také většina škol zaměřených na informatiku (alespoň těch co drží krok s dobou) s tímto jazykem začíná.

To je pro dnešek vše. V dalších dílech si řekneme co vše je potřeba k programování v Javě.

Články ze seriálu ' Úvod do programování ' :