Programowanie w języku C dla chętnych - Artur Poznański.pdf

(231 KB) Pobierz
Programowanie w każdym języku przypomina budowanie domku z cegi
Artur Poznański
PROGRAMOWANIE
W JĘZYKU C
DLA CHĘTNYCH
Kraków 1998
Część 1
1. WSTĘP
Programowanie w każdym języku przypomina budowanie domku z cegieł. Czasem zamiast domku powstaje olbrzymi
gmach, a budowniczych jest cała masa. Mogą oni pracować nawet całymi latami nad jakąś budową. Zwykle nie tworzy
się programów od zera tylko korzysta z tego co się zrobiło wcześniej i jedynie to ulepsza, poprawia oraz dodaje nowe
elementy. Aby zacząć budować my również będziemy musieli poznać cegiełki jakie dany język posiada. Bez wątpienia
najpopularniejszym obecnie jest język C i to nim właśnie się zajmiemy. Moim zdaniem aby umieć programować, wcale
nie jest potrzebna znajomość fachowego słownictwa jakie z pewnością odstrasza wielu chętnych tej zabawy. Dlatego w
mojej książce nie będzie takich mądrych określeń jak identyfikatory, operatory czy dyrektywy preprocesora. Mnie na
początku skutecznie zniechęcały do czegokolwiek. Nie wymagam od czytelników znajomości programowania ani
języka angielskiego czy też wyższej matematyki Jedyne czego wymagam to chęci, cierpliwości i prób zrozumienia tego
o czym piszę. Zakładam, że Ty czytelniku masz program umożliwiający tworzenie innych programów czyli tzw.
kompilator. Ja korzystałem z kompilatora o nazwie "Borland C++" wersja 3.1 ale może być oczywiście inny byleby był
języka C. To chyba na tyle uwag wstępnych. Myślę, że niektórzy mogą mi zarzucić brak fachowości w moich opisach
ale ten tekst kierowany jest do ludzi, którzy nigdy nie programowali w żadnym języku, a marzy im się pisanie
świetnych gier lub tylko lepsze poznanie komputera. Nie chcą oni studiować opasłych tomów, gdzie zaczyna się od
rzeczy bardzo trudnych i przechodzi do jeszcze trudniejszych. Opis języka nie jest kompletny i nie zamierza wcale taki
być. Po prostu to jest książka o programowaniu nie zaś o samym języku C. Na koniec mała uwaga: Programowanie jest
przyjemne pod warunkiem, że nie siedzi się nad nim całymi godzinami, dzień w dzień. Pamiętaj, że świat jest piękny, a
komputer nie zastąpi jazdy na rowerze czy wycieczki w góry lub nad morze.
Miłej lektury życzy wszystkim autor.
2. POZNAJMY NARZĘDZIA
Programowanie polega na pisaniu programu. Wspomniałem już, że potrzebny nam jest oprócz samego komputera
jeszcze pewien program zwany kompilatorem. Kompilator jak to ktoś poetycko napisał, tłumaczy nasze bazgroły i
wypociny na język zrozumiały dla komputera. Tą czynność zwie się kompilowaniem i trwa naprawdę bardzo krótko.
Metoda jest taka: wpierw piszemy program, potem go kompilujemy, a jak nam wyskoczą błędy to je poprawiamy i
znowu kompilujemy, aż do skutku. Obecnie kompilatory są na tyle mądre, że mają własny edytor. Program przed
kompilacją to tak zwany kod źródłowy a po kompilacji kod wynikowy.
W kompilatorach "Borland C++" i "Turbo C++" robi się to tak. Tworzymy plik (F3), najlepiej niech ma rozszerzenie .c .
Następnie piszemy instrukcje w tym pliku. Potem naciskamy Alt-F9 co powoduje kompilację. Jeśli wszystko jest OK,
to powstaje nam plik o rozszerzeniu .exe będący programem. Uruchamianie programu w kompilatorze to Ctrl-F9. Żeby
zobaczyć efekt działania zwykle wciskamy Alt-F5 który chowa okna i pokazuje to co jest pod spodem. Ważne aby
często zapisywać sobie naszą pracę (F2) najlepiej do kilku plików pod różnymi nazwami (opcja Save as..). Uchroni to
nas przed pisaniem wszystkiego od nowa np. w razie braku prądu. Z kompilatora wychodzimy kombinacją Alt-X. Są to
jedynie najważniejsze opcje, lecz na początek powinny wystarczyć. Jeśli masz inny kompilator, to musisz dowiedzieć
się jak się kompiluje (z książek lub lepiej spytać kogoś). System UNIX ma również wbudowany kompilator C. Jednak
nie ma on edytora z okienkami i w ogóle jest zupełnie inny. Opisy kompilatorów jednak wykraczają poza ramy tej
książki. Mamy już narzędzia, możemy tworzyć arcydzieła. Zrób może wpierw tak. Utwórz plik o nazwie proba.c (z
polskimi literkami są zawsze problemy). Napisz w nim linijkę
void main(){}
i spróbuj ją skompilować. Na razie nie musisz wiedzieć co to znaczy i co to robi. Wyjaśnię tylko, że jest to najmniejszy
program napisany w języku C. Nie robi on zupełnie nic z wyjątkiem tego, że da się go skompilować a potem
uruchomić. W tym samym katalogu powinien Ci powstać plik o nazwie proba.exe . U mnie plik proba.c ma 14 bajtów
a proba.exe ma 6 165 bajtów (zauważ, że to 400 razy więcej). Jednak cóż to jest w dzisiejszych czasach 6 kb. To
naprawdę bardzo mało. Wniosek jest taki, kod wynikowy jest zwykle większy od źródłowego (przynajmniej gdy
piszemy małe programy). Powstanie tam także plik proba.obj , który nie jest do niczego potrzebny i można go
spokojnie skasować. Można powiedzieć, że przed chwilą napisałeś pierwszy program. Moje gratulacje !!! Proponuję
abyś przećwiczył na nim kompilowanie, uruchamianie, zapisywanie pod inną nazwą. Zrób też kilka błędów i zobacz co
się stanie. Nie bój się, gdyż tylko pokażą się komunikaty, gdzie kompilator wykrył błąd. Zwróć uwagę na to, że
mógłbyś ten program napisać tak
void
main (
)
{
}
Jednak byłby on bardzo nieczytelny. My będziemy pisać tak aby każdy nawias { i } były w osobnym wierszu.
3. NIC NIE ROBI
Jeszcze nic nie robi, ale wiele się można na nim nauczyć. Ostatecznie powinien wyglądać tak:
Przykład 1 – ap1.c
void main()
{
}
Jest to nasza pierwsza cegiełka. Chyba najważniejsza, więc teraz kilka słów wyjaśnienia. Jeśli za wyrazem są nawiasy
okrągłe ( i ) znaczy to, że jest to funkcja. Funkcja to mówiąc ogólnie wyraz będący jakąś czynnością komputera. Każdy
program zaczyna się od funkcji main . Jest to obowiązkowy element, jakby fundament, na którym stoi reszta. Instrukcje
dla komputera wykonywane są z góry na dół, zatem { oznacza początek zaś } oznacza koniec. Na razie nie musisz
wiedzieć co to void . Dowiesz się w swoim czasie.
4. KOMENTARZE
Komentarz to cegiełka nieobowiązkowa lecz niezmiernie użyteczna. Kompilator nie widzi komentarzy. Zupełnie je
pomija. Jednak dla nas są nieocenione, zwłaszcza jak chcemy wrócić do jakiegoś programu po pewnym czasie.
Przykład 2 – ap2.c
void main()
{ /* początek programu */
/* tu będą instrukcje dla komputera */
} /* koniec programu */
Komentarze piszemy pomiędzy znakami /* i */ . W komentarzu nie może być drugiego komentarza. Będę je co jakiś
czas stosował, bo są bardzo pomocne.
5. WITAJ MISTRZU
Przydało by się by następny program już coś robił. Będzie wypisywał na ekranie tekst. (Przypominam, że Alt-F5 chowa
okna i pokazuje efekt działania programu)
Przykład 3 – ap3.c
#include <stdio.h>
void main()
{
puts("Witaj mistrzu");
}
Wyjaśniam nowe elementy. Funkcja puts wyświetla to co podamy jej w nawiasie. Jest to jedna cegiełka będąca
pojedynczą instrukcją dla komputera. Pamiętaj, że każda instrukcja kończy średnikiem. Zastanawiasz się pewnie co jest
w pierwszej linii. Tak jak cegły gromadzone są w magazynach, tak wszystkie funkcje gromadzone są w plikach
zwanych bibliotekami. Funkcja puts jest w bibliotece o nazwie stdio.h. Musieliśmy kazać kompilatorowi ją dołączyć.
Inaczej nie rozpoznał by tej funkcji i podałby błąd. Spróbuj zrobić z pierwszej linii komentarz /* #include
<stdio.h> */ a sam się przekonasz, że czegoś mu będzie brakować.
6. WYMAZUJE EKRAN I CZEKA NA KLAWISZ
W poprzednim programie mieliśmy jedną instrukcję wewnątrz funkcji. Takich instrukcji może być wiele (nawet setki i
tysiące).
Przykład 4 – ap4.c
#include <stdio.h>
void main()
{
puts("Witaj");
puts("mistrzu");
}
Tu mamy przykład dwóch takich samych instrukcji. Zauważ, że funkcja puts przenosi kursor do następnej linii.
Przydałoby się gdyby to co napiszemy nie chowało się od razu. Ponadto niech napis ekran zostanie ładnie
wyczyszczony ze śmieci jakie tam zostały.
Przykład 5 – ap5.c
#include <stdio.h>
#include <conio.h>
void main()
{
clrscr(); /* czyszczenie ekranu */
puts("Witaj mistrzu");
getch(); /* czekanie na dowolny klawisz */
}
Dodałem trzy nowe elementy: funkcje clrscr i getch i jeszcze jeden plik z biblioteką. Funkcja clrscr czyści ekran i
ustawia kursor w lewym górnym rogu ekranu. Funkcja getch czeka na naciśnięcie jakiegoś klawisza. Obie funkcje
znajdują się w bibliotece conio.h .
7. USTAW MI KURSOR
Powiem teraz o kolejnej rzeczy. Powiedzmy, że chcemy nasz napis umieścić na środku ekranu.
przykład 6 – ap6.c
#include <stdio.h>
#include <conio.h>
void main()
{
clrscr(); /* czyszczenie ekranu */
puts("\n\n\n\n\n\n\n\n\n\n\n\n\t\t\t\tWitaj mistrzu");
getch(); /* czekanie na dowolny klawisz */
}
Pewnie widać różnicę. Dodałem dwanaście razy \n i cztery razy \t . Symbol \n powoduje przejście do następnej linii, zaś
\t działa jak tabulator. Spróbuj pozmieniać ilość tych symboli np. dodaj jeden między dwa wyrazy i obejrzyj efekt. Jest
jednak prostszy i lepszy sposób na wyświetlenie napisu na środku.
Przykład 7 – ap7.c
#include <stdio.h>
#include <conio.h>
void main()
{
clrscr();
gotoxy(33,13); /* ustawienie kursora */
puts("Witaj mistrzu");
getch();
}
Zamiast tych dziwnych znaczków użyliśmy funkcji gotoxy , która ustawia kursor na wybranej wysokości i szerokości.
W naszym przypadku kursor zostanie przeniesiony 33 pozycje w prawo i 13 w dół. Ta funkcja też znajduje się w
bibliotece conio.h .
8. WŁASNA FUNKCJA
Powiedzmy, że mamy takie zadanie. Niech jedno słowo będzie w lewym górnym rogu ekranu, a drugie w prawym
dolnym.
Przykład 8 – ap8.c
#include <stdio.h>
#include <conio.h>
void main()
{
clrscr();
gotoxy(5,2);
puts("Witaj");
gotoxy(65,24);
puts("mistrzu");
getch();
Zgłoś jeśli naruszono regulamin