Wstęp do wydania elektronicznego

* Książka obejmuje przykłady najlepiej dostosowane do kompilatorów Borlanda: Turbo C++, Borland C++ i Borland C++ Builder.

Różne wersje kompilatorów Turbo C++ można pobrać bezpłatnie.

Wiele wersji C++ Buildera jest dostępnych bezpłatnie.

* Książka składa się z 4 Części. Część pierwsza dotyczy programowania w klasycznym (nieobiektowym) języku C.

Podstawy obsługi Wejścia / Wyjścia konsoli – stdio, conio

Choć obsługa Wejścia / Wyjścia nie stanowi integralnej części samego języka – ani C, ani C++, zgodnie ze standardem ANSI / ISO C++, producenci kompilatorów C++ zawsze dostarczają pewne pliki nagłówkowe i biblioteki ze standardowymi funkcjami i obiektami służącymi do wygodnej obsługi Wejścia / Wyjścia w aplikacjach konsoli. Z graficznym Wejściem i Wyjściem – jest już nieco gorzej. Tu dostępne zestawy firmowych funkcji mogą różnić się znacznie, ale o tym w dalszej części – tu skoncentrujemy się na aplikacjach konsoli, gdzie stopień unifikacji jest bardzo duży.

Wprowadzenie do programowania niewątpliwie należy rozpocząć od elementarnej obsługi Wejścia / Wyjścia. Pozwoli to na "pokazanie na ekranie" efektów pracy przykładowych programów. Tylko tak można zobaczyć cokolwiek, a to jeśli nie jedyna – to z pewnością najlepsza droga do zrozumienia i opanowania języka programowania.

Do wyprowadzania informacji (danych) na ekran najczęściej w klasycznym języku C stosuje się funkcje biblioteczne:

puts() - wyprowadź łańcuch znaków (tekst), lub

printf() – funkcja uniwersalna, wyprowadza i teksty i liczby (dane numeryczne)

Aby móc zastosować w programie funkcje biblioteczne, należy dołączyć na początku dyrektywą

#include <...>

odpowiednie pliki nagłówkowe, dlatego najbardziej typowa konstrukcja początkowych przykładowych aplikacji konsoli będzie następująca:

#include <stdio.h>

#include <conio.h>

int main()

{

....

puts( "Drukowanie rezultatów – teksty." ); // wiersz tekstowy na Wyjscie

....

printf( "Drukowanie danych, także numerycznych ");

getch(); /* poczekaj na naciśnięcie dowolnego klawisza */

return 0; /* "odmelduj się" w systemie operacyjnym. */

}

Pojawiły się tu trzy nowe elementy wymagające wyjaśnienia.

1. Komentarze.

Komentarze (dodatkowe opisy) po angielsku, po polsku, lub w dowolnym innym języku, nawet po niemiecku (sam kiedyś widziałem /*Hilfe!*/), można w programach pisanych w C umieszczać w takich "nawiasach":

/* To jest komentarz. Kompilator C i C++ ignoruje taki tekst

i komentarze nie mają żadnego wpływu na powstający kod wykonywalny programu. */

Jak widać, początek komentarza jest oznaczony tak: /* , a koniec tak: */. Komentarz może składać się z wielu wierszy tekstu. Jeśli stosujemy kompilator C++, a nie C, możemy komentarze umieszczać tak:

// Komentarze w stylu C++

// Każdy wiersz musi być poprzedzony podwójnym ukośnikiem

Do czego i komu służą komentarze? To dopiski programisty najczęściej wyjaśniające sposób działania programu. Jeśli z kodem programu ma pracować ktoś inny (a tak bywa w zespołach programistów), im więcej komentarzy – tym lepiej. Z drugiej strony, nawet my sami, zaglądając do swoich programów po pewnym czasie łatwiej sobie wszystko przypomnimy, jeśli będzie tam nieco komentarzy.

2. Funkcja biblioteczna puts().

Funkcja służy do wyprowadzania na Wyjście łańcuchów tekstowych podawanych jej jako argument. Po wyprowadzeniu tekstu następuje automatyczne przeniesienie kursora na początek nowego wiersza (co w funkcji printf() musieliśmy robić przy pomocy znaku specjalnego \n). Chcąc użyć tej funkcji, musimy dołaczyć plik nagłówkowy #include <stdio.h>.

3. Instrukcja return.

Ponieważ główna funkcja programu – main() jest odpowiedzialna za komunikowanie się programu z otoczeniem (tj. z systemem operacyjnym), może przy uruchomieniu programu pobierać od systemu operacyjnego pewne parametry (o czym traktuje specjalny podrozdział), a po zakończeniu pracy programu zwracać do systemu operacyjnego tzw. kod błędu, czyli informacje o tym, czy program wykonał się poprawnie i do końca. Kod prawidłowej pracy (błędów: 0) oznacza instrukcja return 0; Jest to prawie zawsze ostatnia instrukcja w ciele aplikacji konsoli.

Rozważając wstępnie konstrukcję i działanie pierwszych, prostych programów przykładowych, warto zwrócić w nich uwagę na najczęściej stosowane funkcje biblioteczne. Na wstępie tego rozdziału przytoczę pomocniczą tabelkę najczęściej stosowanych funkcji bibliotecznych wchodzących w skład plików nagłówkowych stdio.h i conio.h. W tej grupie stosunkowo łatwo połączyć funkcje w pary o działaniu przeciwnym - uzupełniającym się. Najczęściej takie łączenie w pary odbywa się na zasadzie przedrostków GET – PUT (get = pobierz, wczytaj, put = wydrukuj na urządzeniu wyjścia, wyślij), np.: gets() – puts() , getch() – putch(), itp., itd..

Często stosowane funkcje biblioteczne C obsługujące Wejście i Wyjście aplikacji konsoli.

Przedstawiona tu próbka ma na celu jedynie wstępne zorientowanie Czytelnika, jak rozległym "instrumentarium" dysponuje w obrębie plików stdio.h i conio.h odpowiedzialnych za standardową obsługę konsoli operatorskiej (klawiatura + monitor) w trybie tekstowym. W najskromniejszej znanej mi wersji kompilatorów Borlanda - TCLite (demonstracyjna) plik stdio.h zawiera deklaracje (prototypy) 54, a plik conio.h – 30 funkcji bibliotecznych (patrz: system Online Help). W kolejnych sekcjach i rozdziałach Czytelnik znajdzie szereg przykładów zastosowania wielu funkcji bibliotecznych C.