Programovanie

dzI/O

Programovanie

naučím ťa programovať...

v7.01 08.06.2018 23:31

O programovaní

úvod do programovania

v1.34 08.06.2018 15:18

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 denno denne programuje 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 resp. aplikácie...

Niekedy tomu nadávame aj software ;)

Je to poväčšinou užitočná pomôcka pre iných ľudí, ktorá im zvykne zjednodušovať (alebo aj komplikovať) 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.36 08.06.2018 23:31

Úvod do algoritmov

čo je algoritmus...

v1.45 28.04.2018 04:26

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

Úloha je zadefinovaná pomocou zadania a hovorí aký cieľ je treba dosiahnuť...
Algoritmus je vlastne postup riešenia takejto úlohy...
Algoritmus je 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 cieľ.
V tejto časti sa dozvieš:
- aké vlastnosti má algoritmus
- aký je postup pri riešení úloh
- ako sa algoritmy zapisujú
- z čoho sa algoritmy skladajú
- 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.21 28.04.2018 04:29

Formulácia úlohy
Prvým predpokladom, aby sme danú úlohu mohli rieš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.45 28.04.2018 04:31

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.98 28.04.2018 04:37

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), atď.

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.39 08.06.2018 23:31

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 ;)
Bol to príklad zo života, ale existuje paralela s programovaním - je to situácia keď máš 2 premenné a chceš zameniť ich hodnoty ;)

Objektové programovanie

všetko je objekt...

v2.42 08.06.2018 15:15

Úvod do objektového programovania

čo je objektové programovanie...

v2.30 08.06.2018 15:12

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 pojem, ktorým označujeme entitu s ktorou sa môžeme v živote "zraziť" ;)
Objekt je možné opísať...
Zadefinovať aké má VLASTNOSTI a čo je schopný VYKONAŤ...
Takáto špecifikácia objektu sa volá TRIEDA...
Pri špecifikovaní triedy objektu si môžeme pomôcť nasledujúcimi otázkami o objekte:
KTO / ČO JE (OBJEKT) ?
- takto získame meno triedy pre objekt
AKÝ JE (OBJEKT) ?
- takto získame zoznam vlastností triedy pre objekt
- napríklad stav rádia (hraje?), suma drobných v peňaženke, hmotnosť človeka, atď...
ČO ROBÍ (OBJEKT) ?
- takto získame zoznam metód triedy pre objekt
- tu je dôležité zohľadniť aj to aké VSTUPY a VÝSTUPY má objekt = to sú PARAMETRE metód
- napríklad rádio možno zapnúť, peniazmi z peňaženky možno platiť, hmotnosť človeka možno odvážiť, atď...
AKO (OBJEKT) INTERAGUJE S INÝMI OBJEKTAMI ?
- takto získame základnú predstavu o aplikačnom toku prípadne o vstupoch a výstupoch metód objektu
- pre bližšie info pozri časť ALGORITMY
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.13 08.06.2018 15:15

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...

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...

Ciele a priority

každý by si mal pri programovaní mal stanoviť ciele

v1.53 08.06.2018 15:39

Draft verzia
snažíme sa o BEST SOLUTION EVER
snažíme sa o maximálnu možnú KVALITU - za každých okolností zo seba vydávame maximum podľa svojich skúseností, najlepšieho vedomia a svedomia
snažíme sa o maximálnu možnú KVANTITU - programovanie nás baví a teda nie je pre nás problém vygenerovať kvantá kódu ;)
snažíme sa o RAPID DEVELOPMENT - byť schopný dodať riešenie, čo najrýchlejšie ako je možné
snažíme sa dodržiavať tzv. BEST PRACTICES, to sú postupy, ktoré sa nám v minulosti osvedčili ale zároveň sme otvorení novým nápadom, ktoré by mohli vývoj zefektívniť, však tieto nové nápady je potrebné najprv overiť, najlepšie na nekritických projektoch
snažíme sa riešenia moc NEKOMPLIKOVAŤ a teda sa snažíme o jednoduchosť - lebo komplikované riešenia so sebou nesú množstvo problémov, ktorým sa chceme vyhnúť
v maximálnej možnej miere používame ŠTANDARTNÉ PROGRAMOVACIE PROSTRIEDKY, ktoré sú k dispozícii v danom konkrétnom programovacom prostredí (napr. java a android api v prípade vývoja android riešení), snažíme sa neobjavovať na novo koleso
snažíme sa programovať tak aby sme boli ľahko ZASTÚPITEĽNÍ a NAHRADITEĽNÍ

Skúsenosti z vývoja

best practices

v2.16 08.06.2018 12:10

Draft verzia
Prvé kroky
1. pred začatím prác na akomkoľvek systéme je vhodné urobiť si predstavu o systéme
2. na vytvorenie tejto predsavy a v konečnom dôsledku základného modelu systému slúžia pomocné otázky:
3.a. aké entity (objekty) sa vyskytujú v systéme a ako sa volajú
3.b. aké sú dané entity (aké majú vlastnosti)
3.c. čo robia dané entity (aké majú metódy)
3.d ako entity medzi sebou interagujú
Agilná metodika
1. ja agilný prístup k vývoju nazývam aj metóda POKUS-OMYL - lebo pokúšame sa dosiahnuť cieľ ( = POKUSY), dovtedy kým ho nedosiahneme - pri tomto procese samozrejme získavame medzivýsledky, s ktorými nemusíme byť spokojní ( = OMYLY)
2. v prvom rade je potrebné stanoviť cieľ
3. následne iteračným spôsobom smerujeme k cieľu
4. vytvoríme prvú verziu podľa najlepšieho vedomia a svedomia s ohľadom na stanovený cieľ
5. prvá verzia väčšinou nebýva celkom dokonalá
6. nasleduje zhodnotenie verzie - a zistenie nedostatkov resp. vylepšení, ktoré by bolo vhodné riešiť
7.a. ak existujú nedostatky a vylepšenia, vytvoríme ďalšiu verziu a ideme na bod 6
7.b. ak sme s danou verziou spokojní, máme hotový produkt = dosiahli sme cieľ
Jednoduchosť riešenia
1. najjednoduchšie riešenia sú tie najlepšie - z pohľadu urdžateľnosti, prenositeľnosti, rýchlosti pochopenia atď.
2. zároveň je menší potenciál na vznik logických chýb pri riešení
3. chybám z blbosti sa samozrejme nevyhneme asi nikdy
Jednoduchosť hierarchie tried
1. ak sa to preženie s robustnosťou hierarchie tried, celé riešenie sa stáva málo prehľadné a pochopiteľné a prenositeľné
2. preto je vhodné zachovávať čo najmenšiu možnú pyramídu tried
Štandartný postup pri riešení úloh
1. rieši sa konkrétna situácia / úloha
2. ak sa rieši podobná situácia / úloha, treba zvážiť, či netreba vytvoriť nadtriedu nad aktuálnou triedou, s tým, že do spoločnej triedy sa presunú spoločné funkcionality
Prístupy k návrhu hierarchie tried
1. pri návrhu hierarchie tried sa dá postupovať princípom ZHORA NADOL a ZDOLA NAHOR
1. princíp zhora nadol znamená, že top trieda, z ktorej sú odvodené ďalšie triedy obsahuje spoločné vlastnosti všetkých tried danej časti hierarchie
2. príklad: každý pes vie štekať ale nie každý pes vie stáť na zadných
3. preto schopnosť štekať bude v top level triede a schopnosť stáť na zadných bude až v odvodenej triede konkrétneho druhu psa
1. princíp zdola nahor znamená, že top trieda, z ktorej sú odvodené ďalšie triedy obsahuje všetky použiteľné vlastnosti všetkých tried danej časti hierarchie
2. príklad: každý pes bude mať schopnosť štekať ale aj stáť na zadných
3. ale nie každá odvodená trieda bude používať všetky schopnosti, ktoré má každý pes
1. konečné riešenie sa získava kombináciou týchto dvoch prístupov k veci
2. použije sa prístup, ktorý je v danej chvíli najvýhodnejší
Duplikáty kódu
1. snažiť sa vyhýbať duplikovaniu kódu v maximálnej možnej miere
2. ak máš nutkanie vykonať copy & paste nejakej časti kódu, tak zváž, či nie je vhodné zadefinovať nejakú metódu alebo dokonca celú novú triedu
Štruktúrovanie toku kódu
1. osvedčilo sa mi pridávať nejaké voľné miesto v kóde, keď sa to hodí
2. ak nejaké časti kódu spolu súvisia, tak ich držím pokope
3. ak chcem oddeliť nejaké logické celky, tak medzi ne vkladám prázdne riadky
4. kód sa tým stáva viac prehľadnejším a vzdušnejším
Komentovanie
1. programátor by mal byť schopný vydedukovať čo robí aplikácia priamo z kódu
2. ale pri niektorých zložitejších konštrukciách je vhodné popísať čo daný kód robí
3. dôležité však je dbať na to aby komentáre boli vždy aktuálne, ak už sa v kóde vyskytujú
4. v zásade som za to aby bola každá trieda, atribút a metóda okomentovaná aspoň pár riadkami, samozrejme pri metódach je povinnosť okomentovať parametre
5. jednak z toho získame dokumentáciu generovanú prostriedkami vývojového prostredia a jednak uľahčíme prácu tomu, kto sa s daným kódom ešte len oboznamuje
Naming convention
1. názvy tried, metód a atribútov by mali čo najvýstižnejšie vyjadrovať o čo ide podľa biznis logiky