Programovanie

dzI/O

Programovanie

naučím ťa programovať...

v4.24 13.04.2018 11:59

Táto časť infobázy sa momentálne pripravuje...
Buď prosím trpezlivý...

O programovaní

úvod do programovania

Algoritmy

ako riešiť úlohy...

Objektové programovanie

všetko je objekt...

O programovaní

úvod do programovania

v1.22 24.08.2017 01:49

Možno si myslíš, že programovanie je náročná činnosť a vyžaduje si nejaké špeciálne zručnosti...

Ale nie je to celkom tak...

Snáď každý z nás programuje denne a ani si to neuvedomuje...
Chceš si pripraviť praženicu?
alebo...
Vymeniť koleso na automobile?
Tak vlastne programuješ ;)
Vykonávaš proces, ktorý sa skladá z nejakých krokov tak aby si splnil určitú úlohu...

No a ak ten proces dokážeš aj opísať tak si vlastne programátor...

My programátori sa zaoberáme tým, že sa snažíme dospieť k určitému cieľu...

No a počítačoví programátori vlastne len vysvetľujú počítaču čo má urobiť (ako dospieť k cieľu) tak aby tomu rozumel...

Používame na to špeciálne jazyky, ktoré boli vytvorené pre nás ľudí a počítač na základe nejakého kúzla vie čo má robiť...

Rozmýšľať a písať v takomto jazyku je akoby si rozmýšľal a písal v cudzej reči...

Naučíš sa pravidlá a princípy daného jazyka a potom už len smelo tvoríš niečo čo voláme programy...

Niekedy tomu nadávame aj software ;)

Je to poväčšinou užitočná pomôcka pre iných ľudí, ktorá im zvykne zjednodušovať ich prácu...

Robí to, čo vymyslel programátor...

Z môjho pohľadu tvorí dušu počítača ak za jeho telo považujeme tú krabičku, ktorú máme na stole...

Rád by som ťa naučil všetkému čo viem o programovaní a tomto je táto infobáza...

Algoritmy

ako riešiť úlohy...

v3.28 13.04.2018 11:59

Úvod do algoritmov

čo je algoritmus...

Vlastnosti algoritmov

aké sú algoritmy...

Etapy algoritmizácie úloh

postup pri riešení úloh...

Zobrazenie algoritmov

ako sa zapisujú...

Skladba algoritmického jazyka

zložky algoritmu...

Príklad algoritmu

na vytvorenie predstavy...

Úvod do algoritmov

čo je algoritmus...

v1.43 02.04.2018 10:20

Čo je to algoritmus?
Predstav si, že máš vyriešiť nejakú úlohu...

Úloha je zadefinovaná pomocou zadania...
Algoritmus je postup riešenia takejto úlohy...
Algoritmus je vlastne návod na vykonávanie činnosti, ktorý nás od vstupných údajov privedie v konečnom čase k výsledku. Inak povedané algoritmus chápeme ako popis krokov, ktoré musíme realizovať, aby sme dosiahli výsledok.
V tejto časti sa dozvieš:
- aké vlastnosti má algoritmus
- aký je postup pri riešení úloh
- ukážeme si aj nejaký algoritmus...

Vlastnosti algoritmov

aké sú algoritmy...

v1.49 02.04.2018 10:22

Elementárnosť
Postup je zložený z jednoduchých krokov, ktoré sú pre vykonávateľa (počítač, človek) zrozumiteľné. Každý postup môže byť zapísaný viacerými spôsobmi. Pri jeho navrhovaní treba dbať na to, aby jednotlivé inštrukcie boli pre adresáta zrozumiteľné, jednoduché a jednoznačné.
Konečnosť (Rezultatívnosť)
Každý algoritmus musí skončiť po vykonaní konečného počtu krokov. Tento počet krokov môže byť ľubovoľne veľký (podľa rozsahu a hodnôt vstupných údajov), ale pre každý jednotlivý vstup musí byť konečný. Postupy, ktoré túto podmienku nespĺňajú, sa môžu nazývať výpočtové metódy. Špeciálnym príkladom nekonečnej výpočtovej metódy je reaktívny proces, ktorý priebežne reaguje s okolitým prostredím.
Determinizmus
Každý krok algoritmu musí byť jednoznačne a presne definovaný; v každej situácii musí byť úplne zrejmé, čo a ako sa má vykonať, ako má vykonávanie algoritmu pokračovať. Pretože bežný jazyk zvyčajne neposkytuje úplnú presnosť a jednoznačnosť vyjadrovania, boli pre zápis algoritmov navrhnuté programovacie jazyky, v ktorých má každý príkaz jasne definovaný význam. Vyjadrenie algoritmu v programovacom jazyku sa nazýva program.
Vstup
Algoritmus zvyčajne pracuje s nejakými vstupmi, veličinami, ktoré sú mu odovzdané pred začatím jeho vykonávania, alebo v priebehu jeho činnosti. Vstupy majú definované množiny hodnôt, ktoré môžu nadobúdať.
Výstup
Algoritmus má aspoň jeden výstup, veličinu, ktorá je v požadovanom vzťahu k zadaným vstupom, a tým tvorí odpoveď na problém, ktorý algoritmus rieši.
Efektivita
Všeobecne požadujeme, aby algoritmus bol efektívny, v tom zmysle, že požadujeme, aby každá operácia požadovaná algoritmom, bola dostatočne jednoduchá na to, aby mohla byť aspoň v princípe prevedená v konečnom čase iba s použitím ceruzky a papiera.
Všeobecnosť (hromadnosť)
Algoritmus nerieši jeden konkrétny problém (napr. „ako vypočítať 3×7“), ale rieši všeobecnú triedu obdobných problémov (napr. „ako vypočítať súčin dvoch celých čísel“).

Etapy algoritmizácie úloh

postup pri riešení úloh...

v1.20 13.04.2018 11:59

Formulácia úlohy
Prvým predpokladom, aby sme danú úlohu mohli riešiť na počítači, je jej jasná a jednoznačná formulácia a identifikácia, ako aj ujasnenie cieľa, ktorý sledujeme riešením príslušnej úlohy. Za tým nasleduje tzv. formulácia problému, napr. matematickými prostriedkami (modelom), čiže problém musíme formalizovať pomocou nejakej sústavy vzťahov medzi premennými a konštantami. Formalizovanie konkrétnej úlohy si spravidla vyžaduje individuálny prístup, adaptáciu štandardných postupov, príp. nový typ modelu. Na formalizáciu možno použiť aj iný spôsob ako matematický, môže to byť napr. grafický model. Pre riešenie úloh na počítači je však matematická formulácia najvhodnejšia.
Analýza úlohy
V tejto etape je potrebné nájsť algoritmus riešenia úlohy. Zisťuje sa, či úloha je riešiteľná, či má jedno alebo viac riešení, načrtávajú sa možnosti riešenia a rozhoduje sa o druhu metód. Vytypovaná metóda riešenia musí zabezpečovať dosiahnutie požadovaných výsledkov (výstupné informácie), ale zároveň musí presne určiť, ktoré vstupné údaje budú potrebné. Úloha sa zovšeobecňuje a uskutočňuje sa prvá predstava o algoritmickej riešiteľnosti.
Zostavenie riešiaceho algoritmu
Po správnej formulácii a analýze úlohy nasleduje etapa syntetickej činnosti, v ktorej sa popíše logika a postup riešenia úlohy. Výsledkom tejto etapy je riešiaci algoritmus. Do tejto etapy môžeme zahrnúť aj programovanie úlohy. Pod pojmom programovanie rozumieme činnosť, pomocou ktorej sa uskutočňuje prevod úlohy z ľudského vedomia do formy vhodnej pre spracovanie na počítači. Výsledkom tejto činnosti je program. Program je algoritmus v takej forme, ktorej rozumie počítač, t. j. program je zápis algoritmu v niektorom programovacom jazyku.

Zobrazenie algoritmov

ako sa zapisujú...

v1.44 07.04.2018 11:08

Zápis algoritmov
Slovný zápis
Pre vyjadrenie algoritmov je nám blízky, dobre sa nám v ňom uvažuje, ale ako prostriedok analýzy zložitejších úloh je nevýhodný pretože je neprehľadný, nedostatočne zvýrazňuje zmeny postupu, môžu sa v ňom vyskytnúť nepresnosti.

Ľudský jazyk obsahuje množstvo slov (napríklad angličtina má takmer 800 000 slov), je v neustálom vývoji, slová v jazyku pribúdaj a zanikajú. Obsahuje množstvo výnimiek, umeleckých obratov, synoným, homoným a tvarov. Algoritmus zapísaný v prirodzenej ľudskej reči je nám najbližší a najpochopiteľnejší. Avšak je nevhodný pre komunikáciu so strojom, pretože ten vyžaduje stabilný a nemenný zoznam umožňujúci presnú špecifikáciu príkazov. Presnosť, konkrétnosť a adresnosť.

Nemožnosť využitia prirodzeného jazyka v komunikácii so strojom viedla k potrebe úpravy ľudského jazyka, redukcii jeho obsahu na úzku skupinu slov.
Vývojové diagramy
Vývojový diagram úlohy je bloková grafická reprezentácia postupnosti operácií, ktorá má realizovať úlohu v súlade s príslušným algoritmom.
Algoritmický jazyk
Často je to akási zmes prirodzeného jazyka a príkazov nejakého konkrétneho programovacieho jazyka, do ktorého plánujeme algoritmus prepísať.

Ide o grafický zápis algoritmu vhodný najmä pre začiatočníkov. Umožňuje intuitívne chápať postup a tok výpočtu znázornený šípkami a geometrickými tvarmi aj bez vysvetľovania syntaxe.
Obrázkové jazyky
Umožňujú programovať prostredníctvom spájania obrázkov; hlavným reprezentantom sú detské programovacie jazyky ako je napríklad Baltík, Imagine, Robot Karol.
Programovacie jazyky
Predstavujú formalizované algoritmické jazyky, popisujú činnosť algoritmu pomocou presne definovaného syntaxu.

Algoritmus a algoritmizácia sú určitými medzikrokmi medzi zadaním problému a jeho vyriešením na počítači. Pomocou algoritmu dokážeme vyriešiť problém, no takmer vždy ho potrebujeme preložiť do jazyka počítača.

Na komunikáciu s akýmkoľvek zariadením schopným vykonávať algoritmy potrebujeme jazyk. Aby bolo dorozumievanie pre človeka čo najprijateľnejšie vytvárajú sa umelé jazyky.

Pomocou nich dokážeme jednoducho a jednoznačne vyjadriť algoritmus tak, že ho zariadenie (počítač) dokáže interpretovať. Takéto jazyky nazývame programovacie.

Činnosť, ktorú vykonávame pri zápise algoritmu do programovacieho jazyka, označujeme ako programovanie.

Skladba algoritmického jazyka

zložky algoritmu...

v1.97 13.04.2018 11:59

Algoritmický jazyk možno pre lepšiu orientáciu rozdeliť na dve zložky:

1. operačná zložka
2. riadiaca zložka
Operačná zložka
Obsahuje sadu prostriedkov, ktoré umožňujú spracovávať údaje. Základnými činnosťami sú príkazy a podmienky.

Príkazy sú vety jazyka, ktoré prikazujú vykonávať činnosti. Poznáme príkazy vstupu, výstupu a priradenia. Tieto objekty musia spracovávať nejaké menšie objekty. V programovaní to sú: premenné, konštanty a výrazy.

Premenná je objekt slúžiaci počas vykonávania algoritmu na odkladanie údajov. Jej hodnota sa počas činnosti algoritmu môže meniť.

Obsahuje konkrétnu hodnotu presne stanoveného typu (napr. celé číslo, reálne číslo, reťazec znakov…).

Každá premenná má svoje vlastné meno napríklad: obsah, dĺžka, priemer a pod. Je vhodné voliť mená premenných tak, aby bolo už z ich názvu jasné na čo budú slúžiť, napr,: obsah, prepona, MenoUčiteľa a pod.

Premenná nadobúda hodnoty priradením alebo načítaním.

Lokálne premenné – metódy často uchovávajú svoje dočasné stavy v lokálnych premenných.

Syntax pre ich deklaráciu je veľmi jednoduchá.

Pri ich prvom výskyte napíšeme typ premennej, nasleduje jej meno, rovná sa a predvolená hodnota.

Primitívne dátové typy sú typy hodnôt premenných. Keď deklarujeme premennú, do ktorej budeme ukladať nejaké čislo, musíme uviesť, akého dátového typu bude.

Môže byť napr. celočíselného typu (int) alebo to môže byť typ s desatinnou čiarkou (float).

Konštanta je objekt, ktorý počas celej realizácie algoritmu nadobúda jedinú konkrétnu hodnotu príslušného typu.

Premenná označená ako konštantná zabraňuje akejkoľvek zmene jej hodnoty.

To znamená, že ak raz inicializujeme premennú na nejakú hodnotu a označíme ju ako konštantnú pomocou kľúčového slova napr. „final“, tak jej hodnota je nemenná.

Akýkoľvek pokus o zmenu hodnoty konštantnej premennej je považovaný za chybu, a teda nemožný.

Takúto premennú môžeme inicializovať rovno pri jej deklarácii v triede.

Výraz je predpis obsahujúci konštanty, premenné a spôsob ich spracovania pomocou operácií a funkcií podobných tým, ktoré poznáme z matematiky.

Výsledkom je hodnota príslušného typu, ktorá vznikne po vykonaní vo výraze naznačeného spracovania.
Riadiaca zložka
Počítačový program je postupnosť príkazov.

Túto postupnosť procesor postupne prechádza a jednotlivé príkazy vykonáva v poradí – najprv prvý, potom druhý atď.

Niekedy potrebujeme, aby sa isté príkazy vykonali len ak je splnená určitá podmienka.

Ďalšou možnosťou je zopakovanie sledu príkazov.

Tieto špecifické štruktúry označujeme aj ako základné riadiace štruktúry.

V algoritmoch sa stretávame s troma základnými konštrukciami, ktoré označujeme:

- SEKVENCIA
- VETVENIE
- CYKLUS
Sekvencia (Blok)
Je to najjednoduchšia riadiaca štruktúra.

Všeobecne sa dá povedať, že ide o postupnosť príkazov.

Je tvorená jedným alebo niekoľkými krokmi, ktoré sa vykonajú práve raz v danom poradí.

Napríklad v Jave uzatvárame postupnosť príkazov do zátvoriek { }.
Vetvenie
Je taká štruktúra, ktorá v procese vykonávania algoritmu umožňuje vyberať rôzne alternatívy riešenia podľa splnenia, či nesplnenia zadaných podmienok.

Ak je podmienka splnená, pokračuje sa vykonávaním vetvy, označenej aj ako „+“, v opačnom prípade sa pokračuje plnením príkazov „-“.

Voliteľne je možné ešte v prípade nepravdivého výroku vykonať alternatívny blok príkazov pomocou príkazu "else"
Vetvenie pomocou switch
Ak nestačí jednoduché vetvenie if-else a je potrebné mať na výber z viacerých možných úsekov kódu, je vhodné použiť vetvenie pomocou konštrukcie „switch“.

Na základe hodnoty premennej sa vyberie tá časť, ktorá je definovaná pre konkrétnu hodnotu alebo interval obsahujúci túto hodnotu.

Každá vetva je ukončená príkazom „break“.

Ak by sme zabudli ukončiť vetu príkazom „break“ program síce nevypíše chybu pri preklade, ale vykoná všetky príkazy, ktoré sa nachádzajú po prvý nájdený príkaz „break“.

Môžeme definovať aj úsek „default“, ktorý sa vykoná ak hodnota premennej nespadá ani do jednej z možností.
Cyklus
Táto riadiaca štruktúra nám poskytuje možnosť opakovať činnosť alebo činnosti.

Musíme vedieť, čo sa má opakovať a dokedy sa to má opakovať.

Činnosť, ktorá sa opakuje sa nazýva telo cyklu a podmienka cyklu nám určuje dokedy sa bude telo cyklu opakovať.

Cykly možno rozdeliť podľa vzťahu medzi telom a podmienkou cyklu na tri rôzne cykly:

- Cyklus so známym (explicitným) počtom opakovaní: for
- Cyklus s podmienkou na začiatku: while
- Cyklus s podmienkou na konci: do-while
Cyklus for
Pri použití tohto cyklu sa dá počet opakovaní vyjadriť dopredu (pred odštartovaním cyklu) a na operácie v tele cyklu nemajú žiaden vplyv.

Cyklus for má preto zmysel napríklad pri vykonávaní niekoľkých výpočtov, ktoré spolu súvisia, pri práci s elementmi na obrazovke alebo pri spracovávaní určitej množiny vstupných údajov.
Cyklus while
Ide o cyklus s podmienkou na začiatku.

Podmienka sa stará o ukončenie cyklu, čiže ak je podmienka splnená, vykoná sa telo cyklu a podmienka sa opäť zopakuje.

Ak podmienka splnená nie je, telo cyklu sa vynechá.

Pokiaľ „vstupná podmienka“ nie je splnená už pri prvom vstupe do cyklu, nemusí sa tento cyklus vykonať vôbec.
Cyklus do-while
V prípade tohto typu cyklu sa najprv vykoná telo cyklu a až potom sa overuje splnenie podmienky.

Ak je podmienka cyklu splnená, vykonávanie cyklu sa zopakuje.

V opačnom prípade sa cyklus ukončí.

Dôsledkom takejto postupnosti je, že telo cyklu vždy prebehne minimálne raz.
Continue a Break
Continue a Break sú špecifické príkazy určené na manipuláciu s cyklom. Príkazom „continue“ vo vnútri tela cyklu sa okamžite začne vykonávať telo cyklu od začiatku.

Pri použití „for“ cyklu sa vykoná aktualizácia počítadla a posúdi sa podmienka.

V cykle „while“ sa vyhodnotí počiatočná podmienka a pri cykle „do-while“ sa vyhodnotí koncová podmienka.

Príkazom „break“ sa preruší celý aktuálny cyklus a pokračuje sa nasledujúcimi príkazmi.

Pri konštrukcii mnohonásobného vetvenia „switch“ príkaz „break“ ukončuje jednotlivé vetvy.
Metódy
Metóda patrí medzi najčastejšie používané nástroje takmer každého programovacieho jazyka.

Predstavuje samostatnú časť programu vykonávajúcu nejakú špecializovanú funkciu.

Metódy sú umiestnené mimo hlavný program, ktorý je ale tiež vlastne metódou.

Metódu väčšinou voláme so zoznamom parametrov, ktorým odovzdávame hodnoty potrebné pre výpočet.

Metóda väčšinou vracia nejaký výsledok.

Existujú aj metódy, ktorým neodovzdávame žiadne údaje alebo naopak žiadne výsledky nevracajú.

Výhodou používania metód je zjednodušenie štruktúry programu, či možnosť opakovaného vykonávania výpočtov.

Nemusíme teda písať znovu celý kód, stačí zavolať príslušnú metódu.

Návratové hodnoty metód sú vždy typu typ_návratovej_hodnoty. Hodnota je z funkcie (metódy) predaná napr. pomocou príkazu return (hodnota).
Rozsah platnosti metódy
Rozsah platnosti metódy, definuje oblasť programu, v ktorej je metóda prístupná (je ju možné volať).

Rozsah platnosti funkcií je možné meniť (určovať) pomocou modifikátorov:

napr. public – metóda je viditeľná všade, kde je viditeľná trieda, v ktorej je metóda definovaná
napr. private – metóda je viditeľná iba vo svojej triede
napr. protected – metóda je viditeľná iba vo svojej triede a v jej podtriedach alebo v danom balíku
Operátory
Manipuláciu s premennými robíme pomocou operátorov.

Delíme ich do niekoľkých skupín
Priradenie hodnoty do premennej dosiahneme pomocou operátora =
Matematické operátory pre prácu s číslami sú štandardné, teda: +, -, *, / a % ( modulo, t.j. zvyšok po delení)
Dá sa použiť aj skrátený formát pre priradenie v tvare: premenná += hodnota; namiesto premenná = premenná + hodnota;
Častejšie než skrátený formát sa používajú operátory inkrementácie (++) a dekrementácie (--).

V spojení s premennými číselných typov majú význam - pripočítaj, resp. odpočítaj 1.
Používajú sa postfixovo (a++), ale niekedy aj prefixovo (++a).

Rozdiel sa prejaví pokiaľ v jednom príkaze súčasne vykonávame s premennou inú operáciu, prefixový (++a) sa vykoná ešte pred touto operáciou, postfixový až po nej.
Relačné operátory porovnávajú hodnoty primitívnych premenných.

Patria medzi ne < (menší než), > (väčší než), <=, >= (menší, či väčší alebo rovný), == (rovná sa), != (nerovná sa).

Pre porovnanie sa používa znak == (dve rovná sa).
Logické operátory spájajú pravdivostné výsledky viacerých relačných operácií porovnania && (a, súčasne), || (alebo), ! (negácia).
Špeciálnu skupinu tvoria bitové operátory, ktoré dokážu porovnávať (&, |, ^, ~) , alebo posúvať (<<, >>) jednotlivé bity v bytoch premenných.
Pretypovanie alebo zmenu dátového typu (napr. pri priradení do premennej iného primitívneho typu) vykonáva napr. Java väčšinou automaticky.

Iba v určitých prípadoch je potrebné použiť operátor pretypovanie (výstupný typ v zátvorke) pred premennou.

Príklad algoritmu

na vytvorenie predstavy...

v1.36 02.04.2018 10:55

Ako vymeniť obsah dvoch pohárov, kde v jednom je voda a v druhom vodka...
Predstav si situáciu, že máš dva poháre, kde v jednom je voda a v druhom vodka...

Úlohou je vymeniť obsah týchto pohárov...
Postup (algoritmus) :
1. Zober tretí pohár...
2. Do prázdneho tretieho pohára prelej vodu z prvého pohára...
3. Do prázdneho pohára v ktorom bola voda nalej vodku z druhého pohára...
4. Do prázdneho pohára v ktorom bola vodka prelej vodu z tretieho pohára...
5. Odlož prázdny tretí pohár...
A máme hotovo ;)

Objektové programovanie

všetko je objekt...

v1.56 14.03.2018 17:18

Úvod do objektového programovania

čo je objektové programovanie...

Škatuľky

o čom to celé je...

Úvod do objektového programovania

čo je objektové programovanie...

v1.47 14.03.2018 17:18

Všade okolo nás sú objekty...
Objekt je niečo s čím sa stretávame v živote...

Môže sa jednať o nejakú hmotnú vec ale aj o niečo abstraktné...

Objekt je teda napríklad:
Pes, ktorý šteká na dvore...
Lietadlo, ktoré pristálo na letisku...
Človek na ktorého práve pozeráš...
Myšlienka, ktorá ti preletela hlavou...
Čas, ktorý kráča niekam do nenávratna...
Prosto čokoľvek čo existuje v realite či ríši fantázie a vieš o tom niečo povedať...
Objekt je možné opísať...

Zadefinovať aké má vlastnosti a čo je schopný vykonať...
Stačí len zodpovedať nasledujúce otázky o objekte:
AKÝ JE? (aké má vlastnosti)
ČO ROBÍ? (aké má metódy resp. funkcie)
Takáto špecifikácia objektu sa volá Trieda...

Systém sa teda skladá z objektov...

A programátor píše program tak, že definuje triedy na základe ktorých vzniknú v systéme objekty, ktoré medzi sebou interagujú...

Škatuľky

o čom to celé je...

v1.10 08.09.2017 20:48

Hra sa so škatuľkami
Všetko čo my programátori robíme je, že sa hráme so škatuľkami...

Škatuľky máme na to aby sme v nich čosi ukryli...

Niečo dôležité...

To niečo sú dáta - informácie...

V jednej škatuľke sa môže skrývať nejaké číslo a v inej zas konkrétny text...

To sú škatuľky jednoduché...

A potom sú tu špeciálne škatuľky, ktoré obsahujú v sebe viacero dát vo forme objektu...

Objekt je niečo čo má v sebe ďalšie škatuľky plus dokáže s týmito škatuľkami v sebe rôzne manipulovať...

Takže to zhrniem...

Škatuľka slúži na uchovanie niečoho a je konkrétneho typu aby bolo jasné čo sa s obsahom škatuľky môže robiť...

Napríklad ak škatuľka obsahuje číslo tak dané číslo je možné sčítať s iným číslom, ktoré môže byť v inej škatuľke...

Ak sa stretneš s pojmom atribút, vlastnosť či premenná tak vedz, že sa jedná o takúto škatuľku...