Základy programovania.


Obsah tém. 

  1. Úvod- začíname inštaláciou
  2. Prvý program
  3. Ladenie programov - Debug
  4. Príklady a algoritmy. 
  5. Nové pojmy
  6. Zdroje informácií
 

Úvod - začíname inštaláciou

    Programovanie v prostredí Borland  C++  v. 3.1 vyžaduje aby ste mali

      Inštalácia vývojového prostredia  

Predtým ako začnete inštalovať  pozrite aký názov má  MECHANIKA CD ROM a aký názov bude mať MECHANIKA CIEĽOVÉHO UMIESTNENIA aplikácie vývojového prostredia C jazyka. Toto si zapište, pretože inštalácia verzie 3.1 je ešte DOS-ovská. teraz môže začať inštalácia.

  1. Vložíte inštalačné CD do mechaniky a navoľte podadresár BCPP31. V ňom vyhľadáte program install.exe ktorý spustíte. Program môžete spustiť aj v štartovacom riadku WINDOWS 98, cez voľbu ŠTART/ SPUSTIŤ, kde  v okne do položky OTVORIŤ vpíšete celý názov programu aj s cestou, alebo ho vyhľadáte pomocou voľby PREHĽADÁVAŤ.
  2. Program inštalácie sa spustí, a v prvom okne, ktorý vám ponúkne, dovolí sa vám rozhodnúť či sa inštalácia príkazom ESC ukončí, alebo sa bude pokračovať  po stlačení  ENTER - Continue
  3. Za tým vás požiada o určenie  názvu mechaniky zdrojových súborov inštalácie: Enter the SOURCE drive to use:  ,kde napíšte  napr. a za tým Enter (ak mechanika CD je F -alebo iné písmeno podľa vášho počítača).
  4. Za tým vás požiada, aby ate uviedli cestu do podadresára v ktorom sa inštalačné súbory nachádzajú:  Enter the SOURCE Path: , kde dajte \BCPP31 
  5. Nasledovné okno vás požiada skontrolovať viacero údajov uvedených v tabuľke, v ktorej navolte kurzorom riadok obsahujúci údaj Directories:  [ E: \BORLANDC ] , kam môžete zapísať umiestnenie vývojového prostredia. 
  6. V tej istej tabuľke na konci nakoniec zvolte Start instalation a počkajte kým sa aplikácia nainštaluje. 
  7. Ako poslednú akciu urobte zmenu v súboroch: 

Túto poslednú zmenu môžete urobiť pomocou príkazu msconfig v štartovacom riadku WINDOWS 98,  ktorý otvorí editačné formuláre. V okne uvidíte samostatné záložkami na ktorých vidno názvy autoexec.bat a config.sys. Keď kliknete na jeden z nich uvidíte ovládacie tlačítka Posunúť nahor, Posunúť nadol, Upraviť a Nový. Použite ich podľa potreby. 

Aby sa všetky zmeny uplatnili urobte Reštart počítača a môžete začať programovať. 

 Po prvom Reštarte WINDOWS vytvorí pracovné okno pre zoskupenie programov okolo aplikacie Borlan C++, ale až po tom, keď otvorí okno so žiados´tou a dostane od vas povolenie. Od tejto chvíle sa nachádza aplikácia Borland C++ medzi ostatnými programami v zozname programov. V ponuke existujú dve verzie štartovania prostredia C++ 

 

Návrat na začiatok

Prvý program 

    Naprv otestujete či sa rozbehne vývojová aplikácia v prostredí WIN98. 

Ak pre DOS program chcete vytvoriť ikonku na čelnom paneli, ktorá vám otvorí samostatné okno, tak ako ho teraz vidíte na obrázku, urobíte to takto:

    

    Teraz vytvoríme prvý pokusný program: 

    Príkazom 

    V menu File sa ešte nachádzajú tieto príkazy:

    V prípade že ste uzavreli súbor a chcete ho opakovane otvoriť použijete príkaz: 

    Základné pravidlá s písaním zdrojového textu:

  1. Program pracuje v DOS režime, v ktorom  sa ihneď môžete stretnúť s prvým problémom, ako napísať znaky En-glish klávesnice t.j. znaky ako napr # < > . Nakoľko je navolený režim fontov Slovenskej klávesnice a vypisujú sa vám mäkčeňaté znaky, potrebujete prepnúť do režimu  English klávesnice. Na prepínanie medzi režimami použijete "trojhmat" kláves  CTRL+ ALT+ F1  CTRL+ ALT+ F2  t.j. En a Sk. Postup je nasledovný:  stlačíte CTRL a ALT  podržíte a dotlačíte F1 resp. F2 podľa potreby. 
  2. Pri písaní sa vyskytne potreba preniesť označený blok textu na iné miesto, alebo skopírovať duplikát na iné miesto (do iného okna napr.). Tu pomôže ak prenesiete kurzor myškou na horný ľavý bod textu, ktorý chcete kopírovať, stlačíte ľavé tlačítko myšky a pri jeho stálom držaní potiahnete cez text do jeho pravého spodného rohu.  Označený blok sa vyfarbí inou farbou. Teraz stlačíte Ctrl+ Insert - blok sa skopíruje do klipboardu (pomocná pamäť ). Presuniete myšku na nové miesto a kliknutím prenesiete kurzor na novú pozíciu. Prepis textu z klipboardu na nové miesto urobíte príkazom Shift+Insert
  3. Ak označený blok chcete preniesť bezo zvyšku z miesta na miesto Shift+Delete blok odstráni a vloží do klipboardu. 
  4. Občas sa môžete pomýliť a budete chcieť vrátiť posledné kroky do pôvodného stavu. Tu poslúži  Alt + Bkspc

    Pri pogramovaní často potrebujete pomoc, na to slúži integrovaný Help ktorý vyvoláte buď cez MENU alebo použitím  F1 resp. 2 x stlačíte  F1. Ak potrebujete pomoc so syntaxou príkazov jazyka C, využite schopnosť kontextového Help-u. Rrobíte to takto: Napíšte do zdrojového textu identifikátor prvku jazyka ktorý hľadáte (trénujte pamäť), postavte kurzor pod dané slovo a vyvolajte Help príkazom Ctrl + F1. Zobrazí sa okno s popisom prvku. Na jeho konci zvyčajne nájdete   zoznam podobných resp. súvisiacich prvkov s tým, ktorý ste do textu napísali. Úplne na konci býva odkaz na vzorový príklad v ktorom je daný prvok použitý. Okná  Help-u v sebe obsahuje žltou farbou zvýraznené kľúčové slová. Ich poklepaním sa vnoríte do ďaľších stránok Helpu, ktoré tému ďalej doplňujú. 

Takto vyzbrojený môžete začať. Pomocou File / New otvoríte pracovné okno a doň vpíšte nasledovný program:

    Pomocou  File / Save as ... môžete zmeniť názov. Toto vlastne ani nie je program je to "zárodočná šupina" programu, ktorý obsahuje len hlavičky bez obsahu.  Skúste Preklad programu takto: otvoríte menu Compile Compile (resp. alternatívne Alt+F9). Ak máte program bez chýb očakávajte nasledovný výsledok vid.obr.:

    V tomto prípade zapísaný program je úplne prázdny bez jediného príkazu. Má však všetky náležitosti, ktoré jeden program potrebuje mať. Hlavná štartovacia funkcia sa volá main. Slovo void  znamená, že funkcia nebude vracať žiadnu odpoveď a ani v parametre žiadne  nepoužije.   Kompilátor - t.j. prekladač zdrojového textu do "relatívnych"  modulov (typu .obj ) - zahlási Success čo znamená Úspech Toto je prvý krok potrebný na vytvorenie funkčného programu. Relatívne moduly typu .obj sú len vstupnými súboromi pre Linker - t.j. spojovač - ktorý relatívne moduly pospája do jednoho celku, v relatívnych moduloch nastaví absolutné adresy podľa toho, ako ich poukladá jeden za druhým, a nastaví vzájomné volania modulov (t.j. adresovania funkcií a vzájomne poskytovaných premenných ) už s absolutnými adresami. Tieto vzájomné volania sa nazývajú krížové referencie - a je to podobné, ako keď nitkami spájate dva kúsky látky, lenže tu je tých kúskov oveľa viac a skôr by sme si ich vedeli predstaviť ako priestorový lampion než plochú látku.  

Nasledovný krok je už len Spustenie programu Run / Run (resp. alternatívne  Ctrl + F9 ). Príkaz Run je uspôsobený tak, že ak predtým ste nevykonali kompiláciu, urobí to automaticky za vás. Spustí všetky operácie spojené s vytvorením "runtime modulu" t.j. konečnej verzie tzv. .exe programu. Ak ale už taký súbor bol vytvorený, potom ho spustí. Spustiť program znamená, že jeho binárnu formu uloženú v súbore  <názov programu>.exe skpíruje do operačnej pamäti a odovzdá riadenie inštrukcii na štartovacom bode programu. Inak povedané odovzdať riadenie štartovaciemu bodu znamená, že operečný systém  vloží do  IP registra (Instrukcion Pointer - ukazateľ na adresu inštrukcie , ktorá sa ide práve vykonať) absolutnú adresu prvej inštrukcie programu práve skopírovaného do OP, a ktorá je v programe nastavená ako  štartovacia adresa (jednoducho prvú v poradí). 

Poznámka:  Programátori v assambleri tento bod zvykli udávať za koncovou značkou END zdrojového textu písaného v assambleri. Tu túto úlohu uskutoční kompilátor, ktorý za štartovací bod považuje prvú inštrukciu modulu patriacej funkcii  main.

 

    Programátor resp. skôr PROJEKTANT INFORMAČNÝCH TECHNOLÓGIÍ  to nemá nikdy tak ľahké. Aj keď sa vám podarí odstrániť syntatktické chyby a kompilácia skončí Succes , ešte to neznamená výhru. Umenie programovať nespočíva v mechanickom kódovaní do príkazov jazyka, ale vo vymýšlaní algoritmov a metód. Sú to práve chybné algoritmy, ktoré sú najväčším problémom programátora- projektanta . Metódam odstranovania algoritmických chýb budeme sa venovať v častii Ladenie programu

Návrat na začiatok

Ladenie programov - Debug

    V živote programátora sú dva hraničné stavy. Žiaden program a Program tesne pred dokončením. Stav medzitým sa nazýva - vypĺňanie času ladením programu. Toto je Never ending story - (nikdy nekončiaci príbeh). 80% prác na tvorbe programu má programátor hotových za 20% času. Zvyšných 80% sa program dokončuje. Preto ak zadávateľ chce mať ako taký výsledný produkt, musí tento program v nestráženej chvíli progranátoroviu spod rúk  uchmatnúť. Nevadí, že program nie je dokončený - nájdené chyby sa aj tak odstránia v nasledovnej "vylepšenej" verzii programu. Tak to robili chlapci od MICROSOFTu a pozrite sa ako je firma úspešná.

Príčina chýb v programe spočíva hlavne v tom, 

  1. že programátor   si v duchu myslí, že program robí to, čo programátor chce, ale program robí niečo iné
  2. že program sice robí to čo programátor chce, ale pri tejto činnosti omylom poruší obsah práve nepoužívaných premenných s odloženými hodnotami iného podprogramu.  

Jediným spôsobom, ako odhaliť nezrovnalosti v programe je metóda postupného odľaďovania modulov sekvencií programu a ubezpečenia sa že modul pracuje nezávisle od ostatných programov ktoré nezasahujú do jeho integrity. Do programu sa zaradia  hlásne body v ktorých program vypíše medzistav hodnôt premenných. Program môžeme krokovať po riadkoch zdrojového textu. Po vykonaní riadku obsahujúceho príkazy, skontrolujeme stav premenných. Často tak odhalíme banálne chyby!

Aby sme mohli program ladiť musíme si nastaviť vývojové prostredie. 

Upravenie obrazovky vývojového prostredia pre potreby ladenia. 

    V menu programu C++ otvorte v položke menu Window / Output a  tak isto Window/ Watch špeciálne pracovné okná. Okná sa v tejto chvíli prekrývajú, preto ich môžeme rozmiestniť ako dlaždíce príkazom Window / Tile. Otvorené dve dve pracovné okná spolu s oknom zdrojového textu vytvárajú trojicu pracovných okien pomocou ktorých program odľadíme. Okno Output predstavuje obrazovku cez ktorú s nami program komunikuje a okno Watch vypisuje výrazy s premennými ktoré chceme monitorovať. V zdrojovom texte zase počas krokovania programu uvidíme vyznačený riadok s príkazmi ktoré sa v ďaľšom kroku budú vykonávať. Ak sme mali otvorené len spomenuté tri okná uvidíme nasledovné prostredie:

Okno Watch - Sleduj  je zatiaľ prázdne. Hocikedy, aj počas krokovania programu, môžeme do tohto okna zadefinovať premenné, ktoré chceme sledovať.  Prepneme sa do okna so zdrojovým textom programu (najjednoduchšie je tam kliknúť myškou) a postavíme kurzor pod názov premennej ktorú chceme v okne Watch sledovať. V menu navolíte Debug / Watches / Add wattch... (Pridaj sledovanú premennú...), alebo jednoducho stlačíte Ctrl + F7

Otvorí sa vám pracovné okno Watch Expression , 

ktoré žiada,  aby ste udali názov premennej, alebo výraz používajúci premennú, ktorého obsah chcete sledovať. V prípade že ste kurzor správne umiestnili názov premennej uvidíte vpísaný do údajového poľa a stačí potvrdiť OK. V tej chvíli sa názov premennej objaví v okne Watch.  Urobte to pre všetky pemenné, ktoré chcete sledovať a môžete začať Ladenie. 

Postup krokovania programu pri ladení. 

     Na ladenie programu najlepšie poslúži metóda krokovania programu. V tomto režime sa program vykonáva po riadkoch, tak ako je  zapísaný v zdrojovom texte. Ak na jednom riadku máte súčasne viac príkazov, všetky sa vykonajú v jednom kroku. Ak tieto príkazy chcete vykonať postupne, umiestnite kažý na samostatný riadok. 

Pri krokovaní programu zobrazuje sa v zdrojovom texte programu v riadku, ktorý sa má práve vykonať,  svetlozelený prúžok.  Detailné krokovanie funkcií sa pri tlační F8 preskakuje. Aby sa predsa len krokovali aj funkcie, musí sa urobiť nasledovný krok príkazom F7, krokovanie programu sa vnorí do funkcie, a tam pokračujeme príkazmi F8. Po skončení programu svetlozelený prúžok zmizne. Opakované stlačenie F8 znova naštartuje beh krokovania programu od začiatku.

Štartovaný program často používa argumenty (t.j. parametre) zapisované v štartovacom riadku programu za názvom programu. V prostredí DOS je to miesto označené napr.: C:\>  a v prostredí WINDOWS tento riadok nájdete cez Štart / Spustiť, kde sa vám otvorí dialógové okno Spustenie s položkou Otvoriť. To je štartovací riadok. Pri ladení programu vo vývojovom prostredí, obsah parametrov zapíšeme pomocou v položky menu  Run / Arguments, kde sa otvorí dialógové okno  Program arguments s položkou Arguments

Zmeny zdrojového textu počas ladenia 

Do zdrojového textu programu môžete hocikedy urobiť zásah. Krokovanie sa preruší,  systém oznámi zmeny a  požiada o potvrdenie na prebudovanie  programu:  Source modified. Rebuild?  Po potvrdení sa program znova skompiluje a krokovanie pokračuje od začiatku. 

Stop adresy.  

V programe sa dajú nastaviť miesta "zastávok" - Break points. Program spustený pomocou Run/ Run  (resp.  Ctrl-F9) beží až kým nenarazí na koniec alebo na miesto programu ktoré má nastavený bod zastavenia. V tomto mieste zastavenia sa program ohlási a umožní sa nám rozhodnúť či pokračovať v rýchlom behu po nasledovný bod prerušenia, alebo krokovať po riadkoch. Stop adresu možete nastaviť ale aj zrušiť rovnakým postupom: 

Ak miesto zastavenia bolo neaktívne teraz sa nastaví. Ak miesto bolo aktívne - zruší sa nastavenie. Toggle znamená preklopiť stav. 

V položke menu  Debug / Breakpoints nájdete tabuľku so zoznamom všetkých prerušovacích miest. Tu ich možete podľa potreby naraz zrušiť. 

 

Návrat na začiatok

Príklady a algoritmy

    Ak sme zvládli Prvý program, začneme budovať svoj programový svet, v ktorom sa nám objavia ďaľšie pojmy a vlastnosti programovacieho jazyka. Zatiaľ je náš program hluchý a slepý, jeho intekligencia je asi tak na úrovni vajcovej škrupiny, lebo v jeho vnútri sa nenachádza nič.  

Urobme teda niečo, aby sa nám program ozval a a dal o sebe vedieť. Stvorme umelú bytosť, ktorá sa bude volať ADAM. Otvoríme si text prvého programu a upravme si ho takto:

#include <stdio.h>
#include <conio.h>  

/* Náš prvý program medzi znakmi lomítko hviezdička a hviezdička lomítko
   má uložený text komentára na viacerích riadkoch. 
   Komentár ktorý začína v jednom riadku a končí na jeho konci može byť uvedený dvomi 
   lomítkami na začiatku. Komentáre kompilátor ignoruje. Sú určené pre nás. 
 */

void main ( void )
{   
  clrscr();  // Vymaž obrazovku - clear screen  
  printf("\n\n\nTu ADAM. Zijem!\n\nAby som skoncil stlac lubovolnu klavesu.\n");   
             // printf - formatovaná tlač znaku na konzolu
             // \n vsunie do výpisu  nový riadok - znamená new line
  getch ();  // Čakanie na znak klávesnice

}

    Takto vytvorený program môže komunikovať so svojim okolím a jedna z foriem komunikácie je odovzdanie chybového stavu volajúcej procedúre. Funkcia main s predradeným void nevykonáva odpoveď. Po odstránení void musíme nastavovať odpoveď pomocou príkazu return. Napríklad:  return(0); 

#include <stdio.h>
#include <conio.h>  

/* Program vracajúci chybový stav. Stav 0 = bezchybné ukončenie programu.  
 */

main ( void )
{   
  clrscr();  // Vymaž obrazovku - clear screen  
  printf("\n\n\nTu ADAM. Zijem!\n\nAby som skoncil stlac lubovolnu klavesu.\n");   
             // printf - formatovaná tlač znaku na štandardný výstup
             // \n vsunie do výpisu  nový riadok - znamená new line
  getch ();  // Čakanie na znak klávesnice
  return(0); // Návratová hodnota 

}

/* praca s pointrami a retazcami priklad separujuci useky datumu
 */
  #include <string.h>
  #include <stdio.h>
  #include <stdlib.h>

  int main(void)
  {
     char input[20] = "15.6.2005";
     char *p;
     int den,mesiac,rok;

  /* do p pointer na zaciatok stringu v input
	strtok umiestni NULL pred token ak ho najde */
     p = strtok(input, ".");
     if (p)   printf("%s\n", p);
     den=atoi(p);    // nastav cislo dna

  /* pointer nastavi za predtym najdeny token a
	NULL umiestni pred nasledovny najdeny token  */
     p = strtok(NULL, ".");
     if (p)   printf("%s\n", p);
     mesiac=atoi(p);


  /* pointer nastavi za predtym najdeny token a
	NULL necha na mieste ak nanajde nasledovny token */
     p = strtok(NULL, ".");
     if (p)   printf("%s\n", p);
     rok=atoi(p);

     printf("Datum je %d/%d/%d:",den,mesiac,rok);
     return 0;
  }


 

 

 

Cvičenia C++

001.  002.  003.  004.  005.  006.  007.  008.  009.  010.
011.  012.  013.  014.  015.  016.  017.  018.  019.  020.
021.  022.  023.  024.  025.  026.  027.  028.  029.  030.
031.  032.  033.  034.  035.  036.  037.  038.  039.  040.
041.  042.  043.  044.  045.  046.  047.  048.  049.  050.
051.  052.  053.  054.  055.  056.  057.  058.  059.  060.
061.  062.  063.  064.  065.  066.  067.  068.  069.  070.
071.  072.  073.  074.  075.  076.  077.  078.  079.  080.
081.  082.  083.  084.  085.  086.  087.  088.  089.  090.
091.  092.  093.  094.  095.  096.  097.  098.  099.  100.
101.  102.  103.  104.  105.  106.  107.  108.  109.  110.
111.  112.  113.  114.  115.  116.  117.  118.  119.  120.
121.  122.  123.  124.  125.  126.  127.  128.  129.  130.
131.  132.  133.  134.  135.  136.  137.  138.  139.  140.
141.  142.  143.  144.  145.  146.  147.  148.  149.  150.
151.  152.  153.  154.  155.  156.  157.  158.  159.  160.
161.  162.  163. 
Návrat na začiatok

Zdroje informácií

[1. ]

Návrat na začiatok.

Nové pojmy

CPU- Central procesor unit. - Centrálna procesorová jednotka spracúvava dáta, ktoré dostala z pamäti (RAM, HD, FDD, CD) a vstupných jednotiek podľa programu (softwaru) uloženého v RAM (Random access memory) pamäti t.j. pamäti s náhodným prístupom - inak aj pracovná pamäť počítača. 

RAM - Random access memory

HD- Hard disk

FDD- Floppy disk drive

CD - Compact disk

 

Návrat na začiatok.


Author Ing.  JANOUŠEK  Jaroslav.
Copyright © 2003   SPŠE - Košice.  All rights reserved.
Revised: októbra 29, 2007 .