Nadszedł czas, aby napisać pierwszy program. Na razie nie będzie on robił nic nadzwyczajnego. Stopniowo zaczniemy go rozbudowywać, a przy okazji omówię tu najistotniejsze sprawy. Oto nasz pierwszy program:
Ten program możemy bez problemu skompilować. Ale efekt może wydać się marny... Czarny ekran zaraz znika i nie można się przyjrzeć efektom własnej pracy... Dlatego musimy wprowadzić małą modyfikację. Ale najpierw wyjaśnię to, co już zostało napisane.
Linijka pierwsza: instrukcja #include poleca kompilatorowi dołączyć do programu plik stdio.h (tzw. pseudonagłówkowy), w którym zawarta jest definicja funkcji printf. Jest tam też wiele innych definicji przeróżnych funkcji i jest on jednym z najczęściej używanych plików pseudonagłówkowych. Bardzo często używa się też plików: conio.h, math.h itp. Zamiast znaków nierówności (< >) można też użyć znaku cudzysłowia (""). Wszystkie pliki *.h znajdują się w podkatalogu INCLUDE. Tak więc pierwsza rzecz, od której należy zacząc pisanie programu to właśnie dyrektywa #include.
Linijka druga: Tu rozpoczyna się główna funkcja programu (main()). Musi ona wystąpić w programie dokładnie 1 raz! Wszystkie instrukcje programowe zawierają się w jej ciele, czyli między nawiasami klamrowymi. Nagłówek tej funkcji ma w naszym przypadku postać: void main(void). Słowo void oznacza brak parametrów i w zasadzie można je pominąć. Znaczy to, że funkcja główna nie daje wyniku żadnego typu i nie pobiera żadnych parametrów do poprawnego wywołania. Dla przykładu deklaracja funkcji main może wyglądać również tak:
int main() - funkcja w wyniku swojego działania zwróci wartość typu int i nie pobiera żadnych parametrów przy rozpoczęciu działania. int main(void) - inny zapis, ale znaczenie takie samo jak wyżej main() - jeszcze inny zapis, ale znaczenie takie samo jak wyżej float main() - w tym przypadku wynikiem działania funkcji będzie typ float.
Przez dłuższy czas możemy się tym jednak nie przejmować i po prostu pisać: main()
Linijka czwarta: To ciało naszej funkcji głównej. Instrukcja printf która sprawia, że określony tekst zostanie wyświetlony na ekranie. Jak każda instrukcja kończy się średnikiem.
Linijka trzecia i piąta: Nawiasy klamrowe oznaczają grupę instrukcji. W tym przypadku pokazują one ciało funkcji głównej.
Podsumowując:
Na początku piszemy #include i pliki z definicjami instrukcji. Deklarujemy funkcję main(). W ciele funkcji głównej wypisujemy wszystkie instrukcje (zakończone średnikiem), które program ma wykonać. Wielkość liter nie jest bez znaczenia, więc x i X oznaczać mogą dwie różne zmienne. Kompilujemy przez użycie kombinacji klawiszy: CTRL+F9.
A teraz czas na modyfikacje:
#include <stdio.h> #include <conio.h> main(void) { //to jest komentarz, który //kończy się na końcu linii clrscr(); printf("Anna \nMiedzianowska"); getch(); return 0; }
Efektem skompilowania tego kodu będzie wypisanie na ekranie napisu "Anna Miedzianowska".
Modyfikacja polegała przede wszystkim na wprowadzeniu nowych funkcji: clrscr() oraz getch(). Ich definicje opisane są w pliku conio.h, dlatego należało go dopisać na samym początku po dyrektywie #include. Co robią dane funkcje? Pierwsza z nich czyści ekran (odpowiednik "cls" w Dosie). Druga zatrzymuje działanie programu i czeka na wciśnięcie dowolnego klawisza. Jest jeszcze kilka innych sposobów na zatrzymanie pracy programu, aby można było obejrzeć efekt, np. wpisanie while(!kbhit()); zamiast getch() lub np. getchar();.
To, co pojawiło się w kodzie przed moim nazwiskiem, to nie jest żadna literówka. Efekt widać po uruchomieniu programu - nazwisko zostało przeniesione do następnej linijki. \n jest to tzw. znak specjalny. Innym z częściej używanych znaków specjalnych jest np. \t - tabulacja czy \a - krótki sygnał dźwiękowy.
Po modyfikacji pojawiło się także tajemnicze return 0;. Chodzi o to, że skoro funkcja główna została zadeklarowana jakby zwracała typ int (domyślnie), więc na końcu programu należy wpisać return 0; jako pomyślny wynik jej działania. Bez tego oczywiście nic się nie stanie, więc równie dobrze można to pominąć.
Ostatnią nową sprawą jest komentarz. Można w nim napisać co się tylko chce, kompilator z założenia nie czyta komentarzy. Dla krótkich komentarzy stosuje się najczęściej formę przedstawioną w przykładzie: dwa ukośniki rozpoczynają komentarz (//), a kończy się on samoistnie na koncu linii. Jeżeli komentarz jest dłuższy niż jedna linijka należy rozpocząć go znakami /* i zakończyć w odpowiednim miejscu znakami: */ Nie jest istotne dla kompilatora, w którym miejscu napiszemy komentarz.
Podsumowując:
Mamy 2 rodzaje komentarzy i możemy w nich pisać, co nam się podoba. Aby zatrzymać pracę programu, używamy funkcji getch();. Do czyszczenia ekranu służy funkcja clrscr();. Przyzwoicie by było napisać na końcu return 0;. W tekście możemy używać tzw. znaków specjalnych, np. złamanie tekstu do następnej linii (\n).
To tyle, jeżeli chodzi o pierwszą lekcję. Dla ciekawych powiem, że kolory w edytorze dla poszczególnych wyrażeń nie są przypadkowe. Kolorem białym sa wyróżniane tzw. słowa kluczowe, niebieskim tekst cytowany i liczby, zielonym dyrektywy kompilatora, a wszystko inne na żółto. Jeśli natomiast zaczniemy wpisywać coś zupełnie bez sensu, edytor zaznaczy to kolorem czerwonym.
Autorem Kursu C++ jest Anna Miedzianowska (http://annamiedzianowska.republika.pl/).