Rozdział 3. Pierwszy program

> Dodaj do ulubionych

Wiesz ju┼╝ jak wygl─ůda programowanie w j─Özyku C++ i masz zainstalowane ┼Ťrodowisko programistyczne (program, dzi─Öki kt├│remu mo┼╝esz tworzy─ç w┼éasne programy). W tej chwili zapewne nasuwa Ci si─Ö pytanie: „Od czego zacz─ů─ç”?

Tak naprawd─Ö to ju┼╝ zacz─Öli┼Ťmy programowa─ç. Oczywi┼Ťcie na razie nie potrafisz jeszcze napisa─ç ┼╝adnego wielkiego programu. Tr├│jwymiarowe aplikacje dzia┼éaj─ůce w czasie rzeczywistym s─ů jeszcze poza Twoim zasi─Ögiem. Ale wszystko po kolei. W tym rozdziale skoncentrujemy si─Ö na wy┼Ťwietleniu tekstu na ekranie.

3.1. Niezwyk┼éy ┼Ťwiat konsoli

Po przeczytaniu, ┼╝e zaczynamy programowa─ç zapewne pomy┼Ťla┼ée┼Ť sobie: ÔÇ×Znakomicie, zawsze chcia┼éem nauczy─ç si─Ö robi─ç to i tamtoÔÇŁ. Chcieliby┼Ťmy Ci─Ö nieco uspokoi─ç i pokaza─ç Ci wszystko po kolei.

Zaczniemy od podstaw. Aby nauczy─ç si─Ö pisa─ç skomplikowane tr├│jwymiarowe aplikacje, to nie ma innego wyj┼Ťcia, jak tylko najpierw przyswoi─ç sobie podstawowe zasady programowania.

Wyr├│┼╝nia si─Ö dwa rodzaje program├│w: z graficznym interfejsem u┼╝ytkownika i konsolowe.

3.1.1. Programy z graficznym interfejsem u┼╝ytkownika

Programy z graficznym interfejsem u┼╝ytkownika to takie, kt├│re maj─ů w┼éasne okno. Z pewno┼Ťci─ů wiesz o co chodzi, poniewa┼╝ z takimi aplikacjami masz najcz─Ö┼Ťciej do czynienia. Okno takiego programu jest widoczne na ekranie i mo┼╝na je zminimalizowa─ç, zamkn─ů─ç, powi─Ökszy─ç itd. W terminologii programistycznej graficzny interfejs u┼╝ytkownika cz─Östo okre┼Ťla si─Ö akronimem GUI (ang. Graphical User Interface ÔÇö graficzny interfejs u┼╝ytkownika).

3.1.2. Programy konsolowe

Programy konsolowe cz─Ö┼Ťciej spotyka si─Ö w systemach Linux ni┼╝ Windows czy Mac OS X. Steruje si─Ö nimi za pomoc─ů prostych polece┼ä wy┼Ťwietlanych w oknie z najcz─Ö┼Ťciej czarnym t┼éem.

Rysunek 3.1. Program konsolowy
Rysunek 3.1. Program konsolowy

Do obs┼éugi tych program├│w u┼╝ywa si─Ö wy┼é─ůcznie klawiatury, mysz nie jest do tego w og├│le potrzebna. Ich wykonywanie odbywa si─Ö liniowo, tzn. komunikaty programu s─ů wy┼Ťwietlane od g├│ry do do┼éu.

3.1.3. Pierwszy cel ÔÇö program konsolowy

Przygod─Ö z programowaniem rozpoczniemy od pisania program├│w konsolowych. Mimo i┼╝ na pierwszy rzut oka wydaj─ů si─Ö one ma┼éo atrakcyjne wizualnie, to znacznie ┼éatwiej si─Ö je tworzy ni┼╝ programy graficzne. Dlatego te┼╝ ka┼╝dy pocz─ůtkuj─ůcy programista powinien zacz─ů─ç nauk─Ö od tworzenia w┼éa┼Ťnie od tego rodzaj aplikacji.

Oczywi┼Ťcie zdajemy sobie spraw─Ö, ┼╝e programy konsolowe to nie jest szczyt Twoich ambicji. Mo┼╝esz by─ç spokojny ÔÇö wiemy ┼╝e wi─Ökszo┼Ť─ç czytelnik├│w interesuje przede wszystkim tworzenie program├│w z graficznym interfejsem u┼╝ytkownika. Dlatego ca┼é─ů jedn─ů cz─Ö┼Ť─ç tego kursu po┼Ťwi─Öcili┼Ťmy tworzeniu graficznych interfejs├│w u┼╝ytkownika program├│w przy u┼╝yciu biblioteki Qt. Biblioteka ta jest czym┼Ť w rodzaju rozszerzenia j─Özyka C++, kt├│re pozwala na tworzenia w┼éa┼Ťnie tego typu program├│w.

Zanim jednak do tego dojdziemy, musimy zakasa─ç r─Ökawy i ostro wzi─ů─ç si─Ö do pracy!

3.2. Utworzenie i uruchomienie pierwszego projektu

W poprzednim rozdziale obja┼Ťnili┼Ťmy, jak zainstalowa─ç ┼Ťrodowisko programistyczne, czyli program zawieraj─ůcy wszystkie narz─Ödzia potrzebne do pisania program├│w. Napisali┼Ťmy, ┼╝e istnieje wiele takich ┼Ťrodowisk (m.in. Code::Blocks, Visual C++ i Xcode). Wymienili┼Ťmy tylko kilka najbardziej popularnych, ale jest ich znacznie wi─Öcej.

Jak ju┼╝ wspominali┼Ťmy, najcz─Ö┼Ťciej u┼╝ywamy ┼Ťrodowiska Code::Blocks, ale w razie potrzeby b─Ödziemy te┼╝ podawa─ç obja┼Ťnienia dotycz─ůce innych ┼Ťrodowisk. Na szcz─Ö┼Ťcie wszystkie te programy s─ů do siebie bardzo podobne, a wi─Öc na pewno w ┼╝adnym z nich si─Ö nie pogubisz.

3.2.1. Tworzenie projektu

Pierwsz─ů czynno┼Ťci─ů, jak─ů nale┼╝y wykona─ç, aby rozpocz─ů─ç programowanie jest utworzenie nowego projektu w ┼Ťrodowisku programistycznym. To tak, jakby uruchomi─ç edytor tekstu i utworzy─ç w nim pusty dokument.

Aby utworzy─ç nowy projekt, kliknij kolejno File/New/Project (plik/nowy/projekt) ÔÇö rysunek 3.2.

Rysunek 3.2. Tworzenie nowego projektu w Code::Blocks
Rysunek 3.2. Tworzenie nowego projektu w Code::Blocks

Zostanie uruchomiony kreator tworzenia nowego projektu, kt├│rego opis znajduje si─Ö w poprzednim rozdziale. Utw├│rz nowy program konsolowy C++ zgodnie ze wskaz├│wkami zawartymi w tamtym rozdziale.

Po zako┼äczeniu wszystkich czynno┼Ťci kreator utworzy nowy projekt z gotowym jednym plikiem. Rozwi┼ä znajduj─ůce si─Ö po lewej stronie drzewo plik├│w, aby uzyska─ç dost─Öp do pliku main.cpp. Kliknij ten plik dwukrotnie, aby go otworzy─ç. Jak wida─ç, zawiera on ju┼╝ troch─Ö kodu ┼║r├│d┼éowego ÔÇö rysunek 3.3!

Rysunek 3.3. Zawarto┼Ť─ç domy┼Ťlnego programu konsolowego w Code::Blocks
Rysunek 3.3. Zawarto┼Ť─ç domy┼Ťlnego programu konsolowego w Code::Blocks

Ten pierwszy program utworzony automatycznie przez Code::Blocks jest bardzo prosty. Wy┼Ťwietla on jedynie na ekranie tekst Hello, World (Witaj, ┼Ťwiecie).

W tym programie jest aż dziesięć wierszy kodu źródłowego w języku C++, a ja nie rozumiem ani jednego z nich.

Na pierwszy rzut oka kod ten mo┼╝e si─Ö wydawa─ç skomplikowany, ale wkr├│tce wszystko si─Ö wyja┼Ťni i oka┼╝e si─Ö, ┼╝e wcale nie jest tak ┼║le.

3.2.2. Uruchamianie programu

Teraz chcieliby┼Ťmy, aby┼Ť wykona┼é bardzo prost─ů czynno┼Ť─ç: spr├│buj skompilowa─ç i uruchomi─ç ten domy┼Ťlny program. Nie wiesz jak? Po lewej stronie paska narz─Ödzi znajduje si─Ö specjalny przycisk o nazwie Build and Run (skompiluj i uruchom), kt├│ry s┼éu┼╝y do tego celu ÔÇö jego ikona przedstawia ko┼éo z─Öbate z zielon─ů strza┼ék─ů (rysunek 3.4).

Rysunek 3.4. Przycisk kompilacji i uruchamiania programu ÔÇö trzeci od lewej

Klikni─Öcie tego przycisku spowoduje uruchomienie kompilatora. W dolnej cz─Ö┼Ťci okna ┼Ťrodowiska (w okienku Build log) zostan─ů wy┼Ťwietlone r├│┼╝ne komunikaty.

Je┼Ťli kompilacja nie powiedzie si─Ö i program zg┼éosi nast─Öpuj─ůcy komunikat o b┼é─Ödzie:

"My-program - Release" uses an invalid compiler. Skipping...
Nothing to be done.

… to znaczy, ┼╝e masz wersj─Ö Code::Blocks bez narz─Ödzia mingw (kompilatora). Wejd┼║ ponownie na stron─Ö Code::Blocks i pobierz program jeszcze raz, tym razem zwracaj─ůc uwag─Ö na to, czy wybra┼ée┼Ť wersj─Ö z kompilatorem.

Je┼Ťli wszystko p├│jdzie dobrze, na ekranie pojawi si─Ö okno konsoli z wynikiem dzia┼éania naszego programu (rysunek 3.5).

Rysunek 3.5. Okno konsoli z wynikiem dzia┼éania domy┼Ťlnego programu
Rysunek 3.5. Okno konsoli z wynikiem dzia┼éania domy┼Ťlnego programu

Zgodnie z oczekiwaniami w powy┼╝szym oknie widnieje napis Hello, World. Czy┼╝ to nie jest pi─Ökne? W┼éa┼Ťnie skompilowa┼ée┼Ť i uruchomi┼ée┼Ť sw├│j pierwszy w ┼╝yciu program komputerowy!

Na dysku Twojego komputera zosta┼é zapisany plik wykonywalny. Je┼Ťli pracujesz w systemie Windows, plik ten ma rozszerzenie .exe. Znajduje si─Ö on w folderze release (albo debug) w katalogu projektu.

Co oznacza napis Process returned 0 (0x0) execution time : 0.004 s Press any key to continue.?

Jest to komunikat wy┼Ťwietlony przez ┼Ťrodowisko Code::Blocks. Zawiera on informacj─Ö o tym, czy wykonywanie programu zako┼äczy┼éo si─Ö powodzeniem i ile czasu to wykonywanie trwa┼éo.

Komunikat Press any key to continue. ma przede wszystkim za zadanie nie dopu┼Ťci─ç do zamkni─Öcia okna konsoli. Jest to szczeg├│lnie wa┼╝ne w systemie Windows, w kt├│rym konsola zostaje zamkni─Öta natychmiast po zako┼äczeniu wykonywania programu. Poniewa┼╝ czas wykonywania tego programu wyni├│s┼é zaledwie 0,004 sekundy, nie mieliby┼Ťmy szans czegokolwiek zobaczy─ç, zanim okno zosta┼éoby zamkni─Öte!

Dlatego Code::Blocks wy┼Ťwietla komunikat, aby nacisn─ů─ç dowolny klawisz, by kontynuowa─ç, tzn. zamkn─ů─ç okno konsoli.

Je┼Ťli do kompilacji tego programu u┼╝yjesz ┼Ťrodowiska Visual C++, konsola zostanie zamkni─Öta natychmiast po zako┼äczeniu jego wykonywania i nic nie zd─ů┼╝ysz zobaczy─ç. ┼Ürodowisko Visual C++ nie utrzymuje otwartego okna konsoli tak, jak to robi Code::Blocks. Mo┼╝na ten problem rozwi─ůza─ç wpisuj─ůc przed instrukcj─Ö return 0; instrukcj─Ö system("PAUSE"), kt├│ra zapobiegnie natychmiastowemu zamkni─Öciu konsoli.

3.3. Obja┼Ťnienie kodu ┼║r├│d┼éowego domy┼Ťlnego programu

┼Ürodowisko Code::Blocks utworzy┼éo automatycznie plik o nazwie main.cpp zawieraj─ůcy nast─Öpuj─ůcy kod ┼║r├│d┼éowy:

#include <iostream>
using namespace std;
int main()
{
    cout << "Hello world!" << endl;
    return 0;
}

Wszystkie opisywane wcze┼Ťniej IDE tworz─ů wst─Öpny plik podobny do tego, kt├│rego zawarto┼Ť─ç jest przedstawiona powy┼╝ej. To pozwala szybciej rozpocz─ů─ç programowanie. Trzy pierwsze wiersze powy┼╝szego kodu znajdziesz prawie w ka┼╝dym programie w j─Özyku C++. Od nich b─Ödziesz zaczyna─ç praktycznie ka┼╝dy sw├│j program.

Poni┼╝ej znajduje si─Ö opis po kolei wszystkich wierszy przyk┼éadowego kodu. Na razie nie podaj─Ö zbyt szczeg├│┼éowych informacji, poniewa┼╝ dla pocz─ůtkuj─ůcego programisty nie s─ů one a┼╝ tak wa┼╝ne. Podobny kod znajdziesz w wi─Ökszo┼Ťci program├│w, kt├│re opisujemy w tym kursie.

3.3.1. Dyrektywa #include

W pierwszym wierszu programu znajduje si─Ö nast─Öpuj─ůcy kod ┼║r├│d┼éowy:

#include <iostream>

Jest to tzw. dyrektywa preprocesora. Jej zdaniem jest spowodowanie wczytania funkcji j─Özyka C++, za pomoc─ů kt├│rych b─Ödziemy mogli wykona─ç okre┼Ťlone czynno┼Ťci.

Mo┼╝liwo┼Ť─ç do┼é─ůczania takich modu┼é├│w oznacza, ┼╝e j─Özyk C++ jest j─Özykiem modularnym. W wersji podstawowej niewiele mo┼╝na przy jego u┼╝yciu zrobi─ç, nawet nie wy┼Ťwietli si─Ö komunikatu na ekranie! Aby m├│c zrobi─ç co┼Ť po┼╝ytecznego, musimy do┼é─ůczy─ç do programu specjalne rozszerzenia zwane bibliotekami, kt├│re zawieraj─ů mn├│stwo narz─Ödzi umo┼╝liwiaj─ůcych robienie r├│┼╝nych rzeczy.

Za pomoc─ů opisywanej instrukcji do┼é─ůczamy do programu plik o nazwie iostream, kt├│ry jest bibliotek─ů zawieraj─ůc─ů funkcje umo┼╝liwiaj─ůce m.in. wy┼Ťwietlanie komunikat├│w w oknie konsoli. Wydaje si─Ö, ┼╝e wy┼Ťwietlenie czego┼Ť na ekranie to bardzo prosta czynno┼Ť─ç, a jednak aby to zrobi─ç trzeba do┼é─ůczy─ç do programu specjaln─ů bibliotek─Ö.

Oczywi┼Ťcie dzi─Öki bibliotece iostream mo┼╝na zrobi─ç znacznie wi─Öcej ni┼╝ tylko wy┼Ťwietli─ç napis w oknie konsoli. Biblioteka ta umo┼╝liwia tak┼╝e pobieranie danych wpisywanych przez u┼╝ytkownika za pomoc─ů klawiatury. Ale tym zajmiemy si─Ö nieco p├│┼║niej.

Nazwa biblioteki iostream oznacza ÔÇ×strumie┼ä wej┼Ťcia i wyj┼ŤciaÔÇŁ (ang. input-output stream). W komputerach urz─ůdzeniami wej┼Ťciowymi s─ů najcz─Ö┼Ťciej klawiatura i mysz, a urz─ůdzeniem wyj┼Ťciowym jest ekran monitora. Zatem do┼é─ůczenie do programu biblioteki iostream daje nam wszystkie narz─Ödzia potrzebne do porozumiewania si─Ö z poziomu programu z u┼╝ytkownikiem.

W dalszej cz─Ö┼Ťci kursu poznasz tak┼╝e inne biblioteki, kt├│re r├│wnie┼╝ b─Öd─ů do┼é─ůczane na pocz─ůtku kodu programu w spos├│b podobny do pokazanego w tym przyk┼éadzie. Gdy na przyk┼éad b─Ödziemy omawia─ç tworzenie graficznych interfejs├│w u┼╝ytkownika program├│w, b─Ödziemy do naszych aplikacji do┼é─ůcza─ç bibliotek─Ö Qt za pomoc─ů poni┼╝szego wiersza kodu:

#include <Qt>

Nale┼╝y podkre┼Ťli─ç, ┼╝e do programu mo┼╝na do┼é─ůczy─ç wszystkie potrzebne biblioteki na raz.

3.3.2. Instrukcja using namespace

Poni┼╝szy wiersz kodu informuje program, z jakiego zestawu funkcji b─Ödziemy w nim korzysta─ç:

using namespace std;

Ka┼╝da biblioteka za┼éadowana do programu zawiera wiele r├│┼╝nych funkcji. Je┼Ťli wczytamy kilka bibliotek, mo┼╝e si─Ö zdarzy─ç, ┼╝e niekt├│re nazwy funkcji b─Öd─ů si─Ö powtarza─ç. We┼║my na przyk┼éad funkcj─Ö, kt├│rej nazwa po polsku brzmia┼éaby ÔÇ×Wy┼ŤwietlKomunikatÔÇŁ. Funkcj─Ö tak─ů mo┼╝na znale┼║─ç zar├│wno w bibliotece iostream, jak i w Qt! Je┼Ťli za┼éadujesz do programu obie te biblioteki i wywo┼éasz funkcj─Ö ÔÇ×Wy┼ŤwietlKomunikatÔÇŁ, komputer nie b─Ödzie wiedzia┼é, czy ma wy┼Ťwietli─ç komunikat w oknie konsoli przy u┼╝yciu funkcji z biblioteki iostream, czy w oknie przy u┼╝yciu funkcji z biblioteki Qt!

Rozwi─ůzaniem tego typu problem├│w jest u┼╝ycie tzw. przestrzeni nazw (ang. namespace), kt├│re s─ů czym┼Ť w rodzaju katalog├│w nazw. Wiersz kodu using namespace std; oznacza, ┼╝e w dalszej cz─Ö┼Ťci pliku z kodem ┼║r├│d┼éowym zamierzamy u┼╝ywa─ç przestrzeni nazw o nazwie std. Przestrze┼ä ta jest jedn─ů z najbardziej znanych, poniewa┼╝ nale┼╝y do biblioteki standardowej j─Özyka C++. Biblioteka ta jest dost─Öpna jako integralna cz─Ö┼Ť─ç j─Özyka C++, a jednym z jej sk┼éadnik├│w jest biblioteka iostream.

3.3.3. Funkcja int main()

W tym miejscu znajduje si─Ö g┼é├│wna cz─Ö┼Ť─ç programu. Jak si─Ö wkr├│tce przekonasz, programy sk┼éadaj─ů si─Ö przede wszystkim z funkcji. Ka┼╝da funkcja ma jakie┼Ť okre┼Ťlone zadanie do wykonania i mo┼╝e wywo┼éywa─ç inne funkcje, je┼Ťli jest taka potrzeba.

Ka┼╝dy program zawiera tzw. funkcj─Ö g┼é├│wn─ů o nazwie main(), kt├│ra jak sama nazwa wskazuje, jest najwa┼╝niejsz─ů funkcj─ů w aplikacji.

W najprostszej formie wywo┼éanie funkcji main() wygl─ůda nast─Öpuj─ůco:

int main()
{
}

Pocz─ůtek i koniec w┼éa┼Ťciwej tre┼Ťci funkcji wyznaczaj─ů klamry. Jak wida─ç w kodzie ┼║r├│d┼éowym, kt├│ry wygenerowa┼éo dla ┼Ťrodowisko Code::Blocks, za funkcj─ů main() nic ju┼╝ nie ma. To normalne, poniewa┼╝ koniec tej funkcji oznacza r├│wnie┼╝ koniec wykonywania programu. M├│wi─ůc kr├│tko pocz─ůtek i koniec wykonywania aplikacji wyznaczaj─ů pocz─ůtek i koniec funkcji main().

Czy to oznacza, ┼╝e ca┼éy program b─Ödzie zapisany w funkcji main()? Nie! Mimo i┼╝ by┼éoby to mo┼╝liwe, to jednak zarz─ůdzanie kodem programu, kt├│ry w ca┼éo┼Ťci jest zapisany w funkcji main() by┼éoby dla wielu programist├│w bardzo niewygodne. Dlatego zazwyczaj wewn─ůtrz funkcji main() wywo┼éuje si─Ö tylko inne funkcje, kt├│re z kolei mog─ů wywo┼éywa─ç jeszcze inne funkcje itd. Innymi s┼éowy funkcja ta przekazuje zadania do wykonania innym funkcjom. Na pocz─ůtku tego kursu b─Ödziemy jednak pisa─ç programy w ca┼éo┼Ťci mieszcz─ůce si─Ö w tej funkcji, poniewa┼╝ b─Öd─ů one na tyle proste, ┼╝e nie sprawi nam to ┼╝adnego problemu.

3.3.4. Instrukcja cout

Dobrn─Öli┼Ťmy w ko┼äcu do pierwszej instrukcji, kt├│ra robi co┼Ť konkretnego! Znajduje si─Ö ona w pierwszym wierszu kodu funkcji g┼é├│wnej, a wi─Öc okre┼Ťla pierwsz─ů czynno┼Ť─ç, jaka zostanie wykonana dla nas przez komputer (ca┼éy dotychczasowy kod by┼é zatem tylko przygotowaniem infrastruktury do w┼éa┼Ťciwego dzia┼éania).

cout << "Hello world!" << endl;

Instrukcja cout (wym. si aut) s┼éu┼╝y do wy┼Ťwietlania napis├│w na ekranie. Z tego typu konstrukcji zbudowane b─Öd─ů nasze programy ÔÇö z instrukcji do wykonania przez komputer.

Koniec instrukcji oznacza si─Ö ┼Ťrednikiem. Znak ten pozwala odr├│┼╝ni─ç instrukcje od innych element├│w kodu ┼║r├│d┼éowego. Je┼Ťli zapomnisz cho─çby jednego ┼Ťrednika, kompilacja programu nie powiedzie si─Ö i nie zostanie utworzony plik wykonywalny.

W omawianym wierszu kodu znajduj─ů si─Ö trzy wa┼╝ne elementy:

  • instrukcja cout: polecenie wy┼Ťwietlaj─ůce napis na ekranie.
  • ┼éa┼äcuch "Hello World": napis, kt├│ry ma zosta─ç wy┼Ťwietlony.
  • ci─ůg endl: ci─ůg znak├│w oznaczaj─ůcy przej┼Ťcie do nowego wiersza w konsoli.

Za pomoc─ů jednej instrukcji mo┼╝na wy┼Ťwietli─ç wi─Öcej ni┼╝ jeden napis, np.:

cout << "Witajcie, szanowni czytelnicy!" << endl << "Jak si─Ö macie?"
<< endl;

Powy┼╝sza instrukcje spowoduje wy┼Ťwietlenie w konsoli dw├│ch napis├│w w osobnych wierszach. Skompiluj ten kod, aby to sprawdzi─ç.

W systemie Windows wyst─Öpuj─ů problemy z wy┼Ťwietlaniem w konsoli znak├│w z ÔÇ×ogonkamiÔÇŁ. Jest to wada samej konsoli tego systemu, kt├│ra bardzo rzadko wyst─Öpuje w systemach Mac OS X i Linux. Usterk─Ö t─Ö mo┼╝na usun─ů─ç na kilka sposob├│w, ale ┼╝aden z nich nie jest w pe┼éni satysfakcjonuj─ůcy. Dlatego lepiej jest po prostu unika─ç stosowania znak├│w maj─ůcych ÔÇ×ogonkiÔÇŁ, kiedy pracuje si─Ö w konsoli w systemie Windows. Ponadto, w graficznych interfejsach u┼╝ytkownika, kt├│re b─Ödziemy tworzy─ç przy u┼╝yciu biblioteki Qt problem ten nie wyst─Öpuje!

3.3.5. Instrukcja return

Ostatni wiersz kodu zawiera nast─Öpuj─ůc─ů instrukcj─Ö:

return 0;

Instrukcja tego rodzaju znajduje si─Ö na ko┼äcu wi─Ökszo┼Ťci funkcji i okre┼Ťla ich warto┼Ť─ç zwrotn─ů (np. liczb─Ö). Funkcja, o kt├│rej jest tutaj mowa zwraca warto┼Ť─ç 0, kt├│ra oznacza, ┼╝e jej wykonywanie zako┼äczy┼éo si─Ö pomy┼Ťlnie (wszystkie inne warto┼Ťci oznaczaj─ů jaki┼Ť problem).

Tego kodu nie trzeba b─Ödzie modyfikowa─ç, a wi─Öc pozostawimy go bez zmian. Do instrukcji return wr├│cimy jeszcze, gdy b─Ödziemy jej u┼╝ywa─ç w innych funkcjach.

3.4. Komentarze

Opr├│cz kodu stanowi─ůcego instrukcje do wykonania przez komputer w programach powinno si─Ö tak┼╝e umieszcza─ç specjalne komentarze obja┼Ťniaj─ůce dzia┼éanie programu dla ludzi.

Komentarze te nie maj─ů ┼╝adnego wp┼éywu na spos├│b dzia┼éania programu. Kompilatory nie przetwarzaj─ů ich i usuwaj─ů je z kodu wynikowego programu. S─ů one jednak niezb─Ödne dla programist├│w, poniewa┼╝ zawieraj─ů obja┼Ťnienie tego, co dany fragment kodu robi.

Gdy zaczniesz pisa─ç nieco bardziej skomplikowane programy (a uwierz mi, to szybko nast─ůpi), to ju┼╝ po kr├│tkim czasie b─Ödziesz mie─ç problemy ze zrozumieniem, o co chodzi w r├│┼╝nych cz─Ö┼Ťciach ich kodu. Nie wspominaj─ůc ju┼╝ o innych programistach, kt├│rym poka┼╝esz sw├│j kod. Bardzo trudno jest rozszyfrowa─ç dzia┼éanie programu patrz─ůc tylko na jego kod ┼║r├│d┼éowy. Aby to u┼éatwi─ç, pisze si─Ö w┼éa┼Ťnie komentarze!

3.4.1. Rodzaje komentarzy

W j─Özyku C++ wyr├│┼╝nia si─Ö dwa rodzaje komentarzy, kt├│re r├│┼╝ni─ů si─Ö mi─Ödzy sob─ů d┼éugo┼Ťci─ů.

3.4.1.1. Komentarze kr├│tkie

Komentarz kr├│tki, czyli taki, kt├│ry w ca┼éo┼Ťci znajduje si─Ö w jednym wierszu rozpoczyna si─Ö znakami //. Wszystko, co znajduje si─Ö za nimi jest komentarzem, np.:

// To jest komentarz

Komentarz taki mo┼╝na tak┼╝e umie┼Ťci─ç za kodem ┼║r├│d┼éowym w wierszu, aby obja┼Ťni─ç jego dzia┼éanie, np.:

cout << "Hello world!" << endl; // Wy┼Ťwietla napis na ekranie

3.4.1.2. Komentarze długie

Je┼Ťli komentarz zajmuje wi─Öcej ni┼╝ jeden wiersz, nale┼╝y jego pocz─ůtek oznaczy─ç znakami /*, a koniec ÔÇö znakami */, np.:

/* Ten fragment kodu jest do┼Ť─ç skomplikowany,
dlatego postanowi┼éem obja┼Ťni─ç go nieco szerzej,
aby za kilka miesi─Öcy nie mie─ç problemu z
jego zrozumieniem. */

Og├│lnie rzecz bior─ůc komentarze powinny by─ç zwi─Öz┼ée i jak najkr├│tsze, chyba ┼╝e sytuacja naprawd─Ö wymaga troch─Ö d┼éu┼╝szej wypowiedzi.

3.4.2. Pisz komentarze w swoim kodzie

Przepiszemy kod ┼║r├│d┼éowy programu, kt├│ry omawiali┼Ťmy wcze┼Ťniej i dodamy do niego komentarze, dzi─Öki kt├│rym za kilka tygodni nie zapomnimy, co program ten dok┼éadnie robi.

#include <iostream> // Do┼é─ůczenie biblioteki iostream (do wy┼Ťwietlania tekstu)
using namespace std; // Informujemy, jakiej przestrzeni nazw b─Ödziemy u┼╝ywa─ç
/*
Funkcja główna main
Wykonywanie ka┼╝dego programu zaczyna si─Ö od tej funkcji
*/
int main()
{
cout << "Hello world!" << endl; // Wy┼Ťwietlenie napisu
return 0; // Zakończenie funkcji głównej i działania programu
}

Gdy skompilujesz i uruchomisz ten program, nie zauwa┼╝ysz w nim nic nowego w stosunku do poprzedniej wersji. Jak napisali┼Ťmy, komentarze s─ů przez kompilatory ignorowane.

W tym przyk┼éadzie napisali┼Ťmy komentarz dla ka┼╝dego wiersza kodu, ale w prawdziwych programach nie nale┼╝y tego robi─ç. Je┼Ťli dzia┼éanie fragmentu kodu jest oczywiste, to nie nale┼╝y go komentowa─ç. Ponadto komentarzami opisuje si─Ö raczej ca┼ée fragmenty kodu ┼║r├│d┼éowego, a nie jego pojedyncze wiersze.

Napisa┼ée┼Ť i uruchomi┼ée┼Ť sw├│j pierwszy program. Gratulacje!

Umiesz ju┼╝ wy┼Ťwietli─ç napis na ekranie, ale tak naprawd─Ö to dopiero pocz─ůtek tego, czego nauczysz si─Ö w kolejnych rozdzia┼éach. W nast─Öpnym rozdziale dowiesz si─Ö, jak operowa─ç na pami─Öci.

Autor: Mathieu Nebra i Matthieu Schaller

Źródło: http://openclassrooms.com/courses/programmez-avec-le-langage-c/votre-premier-programme-2

Tłumaczenie: Łukasz Piwko

Tre┼Ť─ç tej strony jest dost─Öpna na zasadach licencji CC BY-NC-SA 2.0

7 komentarzy do “Rozdzia┼é 3. Pierwszy program”

  1. ┼Ťci─ůgn─Ö┼éam t─ů wersj─Ö z kompilatorem, a dalej po naci┼Ťni─Öciu build czy build and run wyswietla mi si─Ö ten komunikat o b┼é─Ödzie

  2. ok, ju┼╝ naprawi┼éam, by┼éo co┼Ť pozmieniane w ustawieniach kompilatora, klikn─Ö┼éam „reset defaults” i teraz dzia┼éa

    • Dev C++ to IDE, a nie kompilator.

      Kompilator, z kt├│rego korzysta Dev jest dostarczany w pakiecie MinGW.

Mo┼╝liwo┼Ť─ç komentowania zosta┼éa wy┼é─ůczona.