Lekce 1.09
Prvnφ program, projekt


p°edchozφ lekce (1.08) obsah kurzu nßsledujφcφ lekce (1.10)

V p°edchozφch lekcφch jsme si probrali zßkladnφ informace o pou₧φvßnφ p°φkazovΘho okna pro zadßvßnφ povel∙ jazyka p°φmo z klßvesnice. V²stup v²sledk∙ byl provßd∞n do textovΘho nebo grafickΘho okna. V nßsledujφcφch lekcφch vyu₧ijeme zφskanΘ poznatky ji₧ p°φmo p°i v²voji vlastnφch program∙.

VÜechny vytvß°enΘ (i jednoduchΘ) programy musφ b²t souΦßstφ projektu. Projekt p°itom popisuje vÜechny souΦßsti vytvß°enΘ aplikace. ZpoΦßtku budeme sice vytvß°et jednoduchΘ aplikace sklßdajφcφ se pouze z jednoho programu, v budoucnu vÜak budou slo₧it∞jÜφ aplikace tvo°eny n∞kolika programy. Projekt proto shroma₧∩uje informace o vÜech Φßstech aplikace. Ka₧dß vytvß°enß aplikace se sklßdß minimßln∞ ze dvou a₧ t°φ soubor∙ ulo₧en²ch na disku. V jednom je ulo₧en projekt vytvß°enΘ aplikace, ve druhΘm souboru je vlastnφ program. V budoucnu se seznßmφme s tφm, ₧e ve t°etφm souboru m∙₧e b²t ulo₧ena definice formulß°e.

P°i vytvß°enφ novΘho programu musφme proto vytvo°it nejprve projekt, do kterΘho doplnφme vytvß°en² program. Nejprve si zkontrolujte, zda mßte uzav°en p°edchozφ projekt. To lze provΘst nap°φklad volbou z menu Soubor/Uzav°φt vÜe. Nßsledn∞ vyberte z menu volbu Soubor/Nov². Zobrazφ se dialogovΘ okno pro zadßnφ po₧adovanΘ Φßsti novΘ aplikace. Zde je mo₧nΘ zadat, jakou Φßst aplikace po₧adujete vytvo°it. V budoucnu se s jednotliv²mi Φßstmi seznßmφme podrobn∞ji, nynφ vÜak klikn∞te na ikonu s popisem æPrßzdn² projektÆ. Vytvo°φ se tφm prßzdn² projekt, kter² neobsahuje ₧ßdn² program.

Projekt musφ b²t v₧dy pojmenovßn. JmΘno projektu zvolte podle provßd∞nΘ Φinnosti budoucφ aplikace. JmΘno novΘho projektu se zadßvß p°i prvnφm uklßdßnφ projektu bez ohledu na to, zda obsahuje n∞jak² program. To se provede volbou z menu Soubor/Ulo₧it vÜe. SystΘm se p°itom zeptß na jmΘno souboru, do kterΘho mß projekt ulo₧it. Projekt se uklßdß do souboru s p°φponou *.KPR.

Obsah projektu zobrazuje tzv. Mana₧er projekt∙, kter² se zobrazφ po stisku klßves Ctrl+Alt+F11, p°φpadn∞ volbou z menu Nßstroje/Mana₧er projektu. Nynφ by m∞l b²t projekt prßzdn², neobsahuje zatφm ₧ßdn² program. Nov² program doplnφme do projektu volbou z menu Soubor/Nov². Zobrazφ se op∞t dialog pro zadßnφ novΘ Φßsti aplikace. Dialog je spoleΦn² pro vÜechny jazyky systΘmu. Musφte proto vybφrat pouze Φßsti aplikace, kterΘ v₧dy odpovφdajφ pou₧φvanΘmu jazyku. Proto takΘ nenφ mo₧nΘ zm∞nit druh pou₧φvanΘho jazyka, pokud je otev°en projekt. Klikn∞te na zßlo₧ku æProgramÆ a zadejte æProgram KLONDAIKÆ. Tφm se vygeneruje automaticky kostra novΘho programu. VÜimn∞te si, ₧e se informace o vytvo°enΘm programu zobrazφ v mana₧eru projektu.

Programy se zadßvajφ (zapisujφ) do samostatnΘho okna, kterΘ slou₧φ jako textov² editor programu. Pokud je okno na obrazovce viditelnΘ, m∙₧ete jej aktivovat kliknutφm myÜi na jeho plochu. Okno s programem je mo₧nΘ zobrazit volbou z menu Okna/Program. M∞lo by obsahovat nßsledujφcφ kostru prßzdnΘho programu:


Unit program1;

interface
implementation

begin
   {zde napiÜte program}
end;

end.
Program s uvedenou strukturou by bylo mo₧nΘ ihned spustit stiskem klßvesy F9. Nevykonßval by ale ₧ßdnou Φinnost, proto₧e neobsahuje ₧ßdnΘ p°φkazy, ale pouze prßzdnou deklaraci jednotliv²ch Φßstφ programu. Seznßmφme se proto nejprve s tφm, co musφ ka₧d² program obsahovat a popφÜeme si strukturu programu.

Ka₧d² program obsahuje na svΘm poΦßtku za klφΦov²m slovem 'Unit' nßzev programu, za kter²m musφ b²t uveden odd∞lovacφ st°ednφk (';'). Program musφ b²t ukonΦen klφΦov²m slovem 'end', za kter²m musφ b²t uvedena teΦka. Jako na konci v∞ty. Takto je definovßn zaΦßtek a konec programu.

Mezi zaΦßtkem a koncem programu je uvedena deklaraΦnφ Φßst programu a vlastnφ t∞lo programu. DeklaraΦnφ Φßst programu bude v budoucnu obsahovat definici formulß°e. Zatφm vÜak bude obsahovat pouze prßzdnΘ definice æInterfaceæ a æimplementationæ.

T∞lo programu mß definovan² zaΦßtek slovem 'begin' a konec 'end'. Anglicky zaΦßtek a konec. Z toho je patrnΘ, ₧e se ka₧d² program sklßdß ze segment∙ s pevn∞ stanoven²m poΦßtkem a koncem. Uvnit° segment∙ jsou potom uvedeny vlastnφ v²konnΘ Φßsti programu.

Vygenerovan² prßzdn² program obsahuje ve svΘm t∞le °ßdku:


{zde zapiÜte program};
Proto₧e je text °ßdky uveden mezi slo₧en²mi zßvorkami, bude jej kompilßtor ignorovat. VÜe, co uvedete mezi slo₧enΘ °ßdky bude proto pova₧ovßno za komentß° bez vlivu na Φinnost programu. DalÜφ mo₧nostφ oznaΦenφ Φßsti programu za komentß° je uvedenφ dvou lomφtek za sebou. DalÜφ text programu a₧ do konce °ßdku bude takΘ pova₧ovßn za komentß°. VÜimn∞te si p°itom, ₧e je text komentß°e v programu uveden Üedou barvou. Takto jsou v textu programu zv²razn∞ny r∙znΘ Φßsti programu.

╚ßst programu uvedenß mezi klφΦov²mi slovy begin a end se naz²vß tzv. blok programu. Blok programu m∙₧e mφt libovolnou dΘlku a m∙₧e obsahovat libovolnΘ mno₧stvφ p°φkaz∙, p°φpadn∞ vlo₧enΘ dalÜφ bloky programu. V²znam Φlen∞nφ programu na bloky, kterΘ jsou ohraniΦeny sv²m poΦßtkem (begin) a koncem (end) si ukß₧eme v dalÜφch lekcφch v∞novan²ch podmφnkßm a cykl∙m v programu.

V²Üe uveden² prßzdn² program obsahuje pouze zßkladnφ kostru bez ₧ßdnΘho povelu, kter² by vykonßval viditelnou Φinnost a proto by spuÜt∞n² program skonΦil, ani₧ by cokoliv vykonal. Vyu₧ijeme proto zφskan²ch zkuÜenostφ a doplnφme text programu o nßm ji₧ znßmΘ povely a p°φkazy. Dßvejte si pozor na to, aby jste ponechali beze zm∞ny zaΦßtek a konec programu. Pokud by se tak nestalo, program by se nemusel v∙bec spustit. Prove∩te proto pouze dopln∞nφ programu o p°φkaz Writeln dle nßsledujφcφ ukßzky:


Unit program1;
interface
implementation
begin
   {zde napiÜte program}
   Writeln('Ahoj, zdravφ Vßs systΘm KLONDAIK');
end;
end.
Nov², prßzdn² vygenerovan² program je mo₧nΘ spustit volbou z menu Program/Spustit, p°φpadn∞ stiskem funkΦnφ klßvesy F9 nebo kliknutφm myÜi na ikon∞ s obrßzkem b∞₧φcφho panßΦka. P°i ka₧dΘm spuÜt∞nφ programu je tento v₧dy nejprve ulo₧en na disk, zkompilovßn a vykonßn. Pokud jste dosud neulo₧ili na disk do souboru projekt, jste dotßzßni na jeho jmΘno. Stejn∞ tak jste dotßzßni systΘmem na jmΘno nov∞ uklßdanΘho programu. Program je uklßdßn na disk s p°φponou *.KLN. U jednoduch²ch program∙ se doporuΦuje zadat jmΘno programu toto₧nΘ se jmΘnem projektu. Pouze v budoucnu, a₧ budete vytvß°et rozsßhlejÜφ aplikace bude vhodnΘ pojmenovßvat jednotlivΘ programy podle provßd∞nΘ Φinnosti.

SystΘm provede po spuÜt∞nφ programu nejprve kontrolu, zda neobsahuje chyby. V p°φpad∞ jejφho nalezenφ je systΘmem nahlßÜen popis chyby s uvedenφm mφsta v²skytu. Dokud nenφ program zadßn sprßvn∞, nebude spuÜt∞n. P°i peΦlivΘm zßpisu by vÜak nem∞ly nastat ₧ßdnΘ problΘmy. Pokud budete postupn∞ prochßzet jednotliv²mi lekcemi kurzu a zkouÜet vÜe v praxi, nauΦφte se jist∞ psßt bezchybnΘ programy.

Pokud mßte viditeln² obsah textovΘho v²stupnφho okna, zobrazφ se v n∞m po spuÜt∞nφ v²Üe uvedenΘho programu pozdrav od systΘmu. VyzkouÜejte si dalÜφ, d°φve probranΘ povely, kterΘ zapisujte pouze do Φßsti programu mezi slovy begin a end. Takto by nap°φklad mohl b²t upraven program vΦetn∞ zobrazenφ textovΘho v²stupnφho okna a v²mazu p°edchozφho obsahu:


Unit program1;
interface
implementation
begin
   ConsoleShow;   {zobrazφ a aktivuje textov² v²stup}
   ConsoleClear;  {vyma₧e plochu textovΘho v²stupu}
   Writeln('Ahoj, zdravφ Vßs systΘm KLONDAIK');
end;
end.
Obdobn²m zp∙sobem m∙₧ete zadat i povely pro pou₧itφ grafickΘho v²stupnφho okna. Op∞t pou₧ijeme pouze d°φve probranΘ povely, kterΘ zapφÜete do Φßsti programu mezi slovy begin a end. Jak ji₧ jist∞ vφte, text ve slo₧en²ch zßvorkßch nemusφte zapisovat, jsou to poznßmky, kterΘ nemajφ na Φinnost programu vliv.

Unit program1;
interface
implementation
begin
   ImageShow;                     {aktivuje textov² v²stup}
   ImageInit(150, 200);           {inicializuje plochu}
   ImageRectangle(10,10,140,190); {nakreslφ obdΘlnφk }
   ImageFontColor(clBlue);        {nastavφ modrou barvu fontu}
   ImageFontSize(16);             {nastavφ velikost fontu}
   ImageTextOut(50,30,'KLONDAIK');{vypφÜe text }
end;
end.
Jak jsme ji₧ hned v ·vodu probφran²ch lekcφ uvedli, je zßkladem programovßnφ zadßnφ posloupnostφ akcφ. To si m∙₧ete nynφ vyzkouÜet. Projd∞te si p°edchozφ lekce a pokuste se z ji₧ zφskan²ch znalostφ sestavit program, kter² nap°φklad nakreslφ d∙m a vedle n∞j zelen² strom. Navφc si zkuste zalo₧it nov² projekt, do kterΘho program ulo₧φte. Abyste to nem∞li tak slo₧itΘ, uvßdφme zde Φßst programu pro nakreslenφ domu. Povely pro nakreslenφ stromu ji₧ dopl≥te sami. Samoz°ejm∞ m∙₧ete v programu provΘst i dalÜφ ·pravy dle vlastnφho uvß₧enφ.

Unit domek;
interface
implementation
begin
   ImageShow;                        {aktivace grafickΘ plochy}
   ImageInit(200, 150);              {inicializace graf.plochy}
   ImageBrushColor(clLime);          {nastavenφ zelenΘ barvy}
   ImageRectangle(0, 130, 200, 150); {nakreslenφ zahrßdky}
   ImageBrushColor(clOlive);         {nastavenφ tmav∞ zelenΘ}
   ImageRectangle(20,60, 105, 130);  {nakreslenφ st∞ny domu}
   ImageBrushColor(clYelow);         {nastavenφ ₧lutΘ barvy}
   ImageRectangle(28, 70, 48, 90);   {hornφ levΘ okno}
   ImageRectangle(72, 70, 52, 90);   {hornφ st°ednφ okno}
   ImageRectangle(96, 70, 76, 90);   {hornφ pravΘ okno}
   ImageRectangle(28, 100, 48, 120); {levΘ dolnφ okno}
   ImageRectangle(72, 100, 52, 130); {dve°e}
   ImageRectangle(96, 100, 76, 120); {pravΘ dolnφ okno}
   ImageEllipse(140,20,170,50);      {slunφΦko}
   ImageBrushColor(clRed);           {nastavenφ ΦervenΘ barvy}
   ImageTriangle(20,60,60,25,105,60);{st°echa}
end;
end.
Tak₧e jak vypadß program ji₧ vφte. M∞li byste b²t ji₧ takΘ schopni sestavit jednoduch² program z posloupnosti vykonßvan²ch povel∙. Ka₧d² program m∙₧ete p°itom samoz°ejm∞ ulo₧it pod jin²m nßzvem. V nßsledujφcφ lekci se seznßmφte podrobn∞ji s mo₧nostφ editace programu.
p°edchozφ lekce (1.08) obsah kurzu nßsledujφcφ lekce (1.10)
OZOGAN, 1 Mßje 97, 460 01 Liberec
tel.,fax: (048) 52 28 338, e-mail: info@ozogan.cz