Projektovanie informačných technológií a algoritmy

Ďalšie informácie

  1. Algoritmy  
  2. Zdroje informácií  
  3. Nové pojmy.
  4. Otázky.

Čo to znamená "Projektovať informačné technológie"?

Znamená to vytvárať informačné systémy pozostávajúce z niekoľkých nezávislých podsystémov, ktoré vzájomne spolupracujú:

Obor ktorý rieši komplexne Informačné technológie sa nazýva Informatika. Jej dôležitou časťou je vytváranie programov, ktorým sa špeciálne zaoberá profesia, ktorá sa nazýva Softwarové inžinierstvo. Jeho hlavným cieľom je nájsť algoritmy - t.j. postupy a metódy riešenia úloh a činností - ktoré sa uložia ako riadiaci kód do pamäti počítača. 

Prvé automaty riadené diernymi štítkami boli použité pre tkacie stroje. Umožňovali opakovane a bezchybne riadiť pletací vzor aj zložitých vzoriek, t.j. činnosť, ktorá by ľuďom trvala niekoľkonásobne viac času. Nie náhodou aj prvé počítače boli riadené diernymi štítkami, šlo o overenú metódu. Podobný princíp používali aj muziku hrajúce skrinky poháňané hodinovým strojčekom, ktoré používali dierne štítky, alebo otáčajúcu sa kovovú platňu s dierkami (alebo s kolíčkami )    resp. bubon s kolíčkami. Spomeňte si na "orchestrión" alebo flašinet. 

Softwarové inžinierstvo

 Je zložitá činnosť, ktorá má niekoľko etáp:

  1. Rozbor problému - etapa anlitická, keď zložité veci rozdeľujeme na jednoduchšie , hľadáme zákonitosti - ako jedna vec ovplyvňuje druhú, hľadáme modely a zjednodušené riešenia podsystémov. Analyzujeme procesy a dávame im názvy, určujeme premenné a dávame im identifikačné mená. Vytvárame si o celej problematike dokonalý komplexný obraz - často idealisticky zjednodušený.  

    Príklad: AUTO sa skladá z troch častí: karoséria, podvozok a pohon. Podvozok sa skladá z riadených kolies a pevných kolies. Riedené kolesá majú volant, tiahla, upínacie ramená kolies, čapy, pruženie, tlmiče, brzdový podsystém. Brzdový podsystém má dve časti: brzdený kotúč a brzdiace kliešte v ktorých sú upnuté brzdiace doštičky. Výroba auta znamená výrobu aj tej najjednoduchšej súčiastky. Kompletizovanie auta znamená skladanie jednoduchých dielov do väčších celkov, vznikajú agregáty ktoré sa zamontujú ešte do väčších celkov. Popis celého postupu je Algoritmus.

     

  2. Návrh riešenia  - Algoritmus - je etapa hľadania riešení, keď začíname popisovať postupy činností, náväznosť činností jednu na druhú, riešenie podmienok: ktorá činnosť sa má vykonať a kedy, kedy sa má činnosť ukončiť, ako má pokračovať iná činnosť. Táto časť práce je vrcholne tvorivá. V tejto etape sa vytvára Know-How riešenia. 

    Príklad: Založenie ohňa v podmienkach prvotnopospolnej spoločnosti: Nájdete kus spráchnivelého dreva najlepšie z kusa spadnutého kmeňa stromu, alebo postačí suchá tráva a mach. Nájdete dva kúsky tvrdšieho dreva a kúsok rovného konára dlhého jeden lakeť. Použijete svoj luk, ktorý má tetivu z mačacieho čreva, alebo použijete asi dva lakte dlhú koženú šnúrku, ktorú priviažete na konce asi o dve dlane dlhšieho konára než je šnúrka. Pri naväzovaní šnúrky  bude potrebné konár ohnúť a vytvoriť  luku podobný nástroj. Ak toto máte, vydlabete do dvoch tvrdších kúskov dreva do každého po jednej priehlbinke tak, aby ste do nich mohli vsunúť konce rovného konára tak, že jeden bude na zemi a druhý budete držať kolmo nad ním v ruke. Tlakom nadol zabránite aby konár zo zovretia driev vypadol. Rovný konár sa musí vrtieť medzi týmito dvomi drevami. Teraz vezmete luk a jeho tetivu raz obtočíte okolo kolmého konára. Ak teraz chytíte luk za jeden koniec a potiahnete dopredu a dozadu, konár - opretý v priehlbinkách  dvoch drievok na každom jeho konci  - sa začne  rýchlo vrtieť. Nám stačí pohybovať lukom dopredu a dozadu a konár sa bude neustále vrtieť. Ak to budete robiť dostatočne rýchlo pocítite v ruke ktorá drží  drevo s priehlbinou narastajúce teplo. Čím viac drevo pritlačíte (vrtenie bude ťažšie) tým viac tepla bude vznikať. Po čase zistíte, že sa z koncov konára začína dymiť. Zároveň uvidíte že v miestach kde sa drevá dotýkajú tieto teplotou sčerneli. Ak teraz vyberiete konár z priehlbinky a jemne doň fúknete uvidíte rozpálené červené uhlíky. Fúkaním ich ešte viac viac rozpálite. Drievko položíte na zem a okolo priehlbinky a do jej vnútra nasypete kúsky uschnutej trávy alebo spráchnivelého dreva. Okolo už pripravíte viac suchých konárikov a trávy. Keď teraz do toho znova mierne zafúkate môže vzbĺknuť oheň.  Keď sa tak stane, priložte ďalšiu trávu a suché konáriky a oheň neustále udržujte.  l

  3. Realizácia - kódovanie programu. - je etapa keď vymyslené algoritmy zapíšeme výrazovými prostriedkami toho ktorého programovacieho jazyka. Takýchto jazykov je viac (podobne ako jazykov rôznych národov). Niektoré jazyky sa viac špecializujú na riešenie konkrétnych problémov - ako sú databázové systémy (d´Base, FoxBase, Oracle, Sybase, PC-Fand, ProgresQL, mySQL, ...), alebo grafické a animačné FLASH, ..., iné sú univerzálne a umožňujú zakódovať ľubovolný program - C jazyk, Pascal, Java. Kódovanie programu je jedna zo záverečných etáp projektovania, aj keď mnoho laikov to považuje za hlavnú činnosť tvorby programov. Napriek tomu, že programové postupy sú nehmotné v tomto procese dochádza k určitému "zhmotneniu"  know-how vo forme programových kódov a dát riešiacich či už informačnú stránku projektov, ale aj ich grafickú a estetickú. 
  4. Rutinná prevádzka - využívanie a údržba programu. Na rozdiel od mnohých iných zariadení (ako napr. auto, vysávač, húpací koník, ...) programové diela aj pri ich realizácii sa ďalej upravujú podľa praktických potrieb. Málo kedy je analytická časť projektovania tak dôsledná, že dokáže podchytiť všetky potreby praxe. Niekde sa nepochopia zadávatelia s riešiteľmi, inokedy prax zmení pravidlá a treba sa im prispôsobiť. Tak ako sa vyvíja spoločnosť a objavujú sa nové veci, tak isto musí reagovať aj informačná technológia. Je to nekonečný proces, kde jedna zmena vyvoláva ďalšie zmeny. Preto aj projektovanie má svoju etapu ktorá sa vracia na začiatok a vytvára sa tzv.  "upgrate"  riešenia (modernizácia, zakomponovanie nových prvkov a odstraňovanie chýb starej verzie do nového riešenia). 

    Príklad: 250 upgrate metódy  Založenie ohňa v podmienkach "už nie" prvotnopospolnej spoločnosti:   Nasmerujete laserový ručný zapaľovač na kôpku suchého raždia a pár dobre mierenými impulzmi mierenými na kúsky v ich strede raždie podpálite. 

 

*Algoritmy

Sú presné jednoznačné postupy riešenia úlohy konečným počtom krokov.  Obsahujú popisy činností spojené s podmienkami a rozhodovacími otázkami. Tak ako sa v bežnom živote   rôzne činnosti prispôsobujú  podmienkam, to isté riešia algoritmy pomocou formalizovaných postupov. 

Príklad algoritmu:  Športová zábava. Ráno vstanem a nahliadnem  do kalendára. Je školský deň alebo deň voľna? Ak je školský deň končí zábava inak Je deň voľna rozhodnem sa pre zábavu. Nahliadnem  do kalendára. Je leto alebo zima? Ak je leto idem sa kúpať inak Ak je zima rozhodneme sa pre zimné športy. Nahliadnem na teplomer za oknom. Je pod bodom mrazu áno. Ak nie idem do kina ak áno rozhodnem sa podľa množstva snehu. Ak je veľa snehu idem sa lyžovať inak sa pôjdem korčuľovat. Vezmem správny nástroj a odchádzam z domu. 

Základné vlastnosti algoritmu sú:

Algoritmické postupy sa dajú zobraziť mnohými spôsobmi. Dôležité je aby sme si po čase vedeli spomenúť čo sme zaznamenali a aby nášmu záznamu rozumeli aj ostatní. Dnes sa používajú dva základné typy zobrazovania algoritmov:

Grafické formy algoritmov

Vývojové diagramy - popisujú algoritmus programu grafickými značkami 

Význam jednotlivých značiek:


Príklad algoritmu:  Budeme čítať slová a ukladať do poľa. Keď načítame slovo s jedným znakom @ skončíme, slová zotriedime podprogramom a vytlačíme podľa abecedy.

Na obrázku vidno dve časti vytvárajúce jeden celok. Kružnice s návestím len predstavujú naviazanie jednej časti na druhú. Všetky možné cesty algoritmu sú uzatvorené medzi dva krajné body ŠTART a KONIEC. Grafické algoritmy boli používané v počiatkoch počítačov. Sú výhodné pre jednoduché a prehľadné postupy. Zložitejšie myšlienkové konštrukcie vyžadujú  iné technológie. 

Textové formy algoritmov. 

Riešia algoritmy slovnými výrazovými prostriedkami ľudského jazyka. Mnohé programovacie jazyky majú syntaktické pravidlá, ktoré už kopírujú formu textových algoritmov. Prvým takýmto jazykom bol jazyk Algol (Algorithmical language). Ale aj neskorší jazyk Pascal a jazyky C a Java.  Jednotlivé časti popisu algoritmu, ktoré spolu súvisia môžu byť uzatvorené do jedného bloku, ktorý začína buď slovom begin a end alebo značkami  zložených zátvoriek { }. Uzatváranie príkazov do blokov a ich spájanie podmienkovými spojeniami typu Ak platí podmienka urob to alebo urob ono, umožňuje tzv. štrukturované programovanie. Miesto to a ono môžeme zaradiť blok príkazov, v ktorých sa môžu nachádzať rovnaké štruktúry, t.j. štruktúry v štruktúrach.  

Elementárne prvky algoritmov.

Príkaz  - výraz ukončený bodkočiarkou (v C jazyku / v Pascale bodkočiarka ako oddelovač príkazov/ ) (v ďalšom vytvoríme model príkazu ako Si;  kde i je rozlišovací index pre príkaz ) napr. Pascalovské priradenie   A:= X + Y ;   

Logický výraz - vyjadrujúci logickú podmienku  napr.  (X>=Y) .  

Zložený príkaz - (obr. a ) obsahuje viac príkazov po sebe a vykonávajú sa v poradí ako sú uvedené. Viacnásobné vnorené bloky (obr. d) ukazujú metódu štrukturovaného programovania. Dva bloky do seba včlenené obsahujú štruktúru v štruktúre. Ak by sme včlenený druhý zložený príkaz celý umiestnili do samostatnej funkcie, v programe na jeho mieste stačí uviesť volanie podprogramu. 

Podmienený príkaz - (obr. b) rieši vetvenie programu typu Ak je splnená podmienka b potom vykonaj príkaz S1. Miesto jedného príkazu môže byť vložený zložený príkaz. (obr. c) rieši aj zápornú odpoveď podmienky spôsobom  Ak je splnená podmienka b vykonaj príkaz S1 inak vykonaj príkaz S2. 

Cyklenie s podmienkou - má dve riešenia: 

Viac cestný prepínač - case (obr. g)  podľa hodnoty riadiacej premennej sa vyberie príslušná vetva programu. V C jazyku prepínač preskakuje inštrukcie pokiaľ nie je splnená podmienka, potom ak nenasleduje príkaz break;, ktorý ukončí case príkaz,  program začne vykonávať všetky ďalšie inštrukcie. V jazyku Pascal skočí program automaticky na koniec po vykonaní vybratej vetvy. 

Cyklické opakovanie s dopredu určeným počtom cyklov. Riadiacim parametrom je premenná cyklu, ktorá sa v každom cykle zmení o konštantu (1). Aj toto cyklické opakovanie má dve možnosti:

Podprogramy a funkcie - (obr. j, obr. k) riešia čiastkové problémy, ktoré sa často opakujú. Analýza riešenia, pozostáva z riešení čiastkových problémov, ktoré sa dajú riešiť samostatnou procedúrou alebo funkciou. Vytváraním procedúr a funkcií si zjednodušujeme opakujúce sa algoritmy v riešeniach. Taktiež rozbitie veľkého projektu na jednoduchšie čiastkové riešenia, zjednodušujú celkové riešenie a robia ho prehľadným.

Nepodmienené skoky - (obr. l ) v lineárnom programovaní boli často využívané. Štrukturované programovanie tieto technológie nepotrebuje používať. Jedinou výnimkou môže byť tvrdé ukončovanie vnorených cyklov, resp. skok na koncový bod programu. 

 

 

    begin
           S1;
           S2;
           ...
           Sn;

    end;


if   b  then S1 ;

  

C

               {   S1;
                    S2;
                     ...
                    Sn; 
  }

 

C

                           if   b  )   S1 ;

 

a b
if  b then S1 else S2 ;

Praktiky štrukturovaného programovania

   begin
         S1;
         begin
              S2;
              S3;
               ...
              Sn;

         end;
   end;

C

           if   b  )   S1 else  S2

 

C           {
                                   S1;
                                  {
                                          S2;
                                          S3;
                                           ...
                                          Sn;

                                    }
                              } 
c d
  while  b  do   S1 ;
repeat   
     S1;
     S2;
     ...
     Sn;
until  b ;
C

                     while  ( b )   S1;

 

C

              do {
                      S1;
                      S2;
                       ...
                       Sn;

                    }  while ( b );

 

e f

case w  of  
     c1:  S1;
     c2:  S2;
     ...
     cn:  Sn;
end;    

Pozn.: V Pascale by sa vykonal len jeden príkaz splňujúci podmienku, ale v C jazyku sa len začne daným príkazom, a vykonávajú všetky následné tak ako to ukazuje graf. Prerušenie je možné príkazom break; 

  for v =  m  to  n  do S1

alebo  for v =  m  downto  n  do S1;

C

      switch ( w ) {
            case  c1    S1; break;
            case  c2 :    S2; break;
            
case 
c3 :    S3; break;
                                ...
            
case 
cn :    Sn; break;
             default :    Sd; 
           } 

 

C

         for ( výraz_štart, výraz_stop, výraz_iter  )  S1;

         realizujúci program

         výraz_štart ;
        
while ( výraz_stop ) {
               
S1 
               
výraz_iter ; 
               
}

g h
  

    begin
         S1;
                  XY(a,b);
   end;

function XY( a,b: integer): integer;
begin
         s1;
         s2;
         ...
          sn;

end; 

C

                           { S1; XY( a, b); }

C

                       int  XY( int a, int b) {  S1;S2; ... Sn }      

 

j k
   

  label ABC;
    ...

       ...
       goto
ABC;
       ...

 l  
 
Návrat na začiatok

Zdroje informácií

  1. Učebnice jazyka C. Pavel HEROUT - Vydavateľstvo Copp,  CZ, 2001
  2. Programovací jazyk C, Brian W.Kernighan, Dennis M. Ritche (1978), ALFA Bratislava, SNTL Praha, 1988
  3. Študentské stránky v Internete http://www.studentske.sk/web.php?pred=informatika
Návrat na začiatok.

Nové pojmy

R

Návrat na začiatok.

Otázky

R

Návrat na začiatok.

Ing. JANOUŠEK Jaroslav.
Copyright © 1999  ManINFO. All rights reserved.
Revised: januára 12, 2007 .