SlideShare una empresa de Scribd logo
1 de 9
Descargar para leer sin conexión
IDZ DO
         PRZYK£ADOWY ROZDZIA£

                           SPIS TREŒCI
                                         C++. Æwiczenia
                                         praktyczne. Wydanie II
           KATALOG KSI¥¯EK               Autor: Andrzej Stasiewicz
                                         ISBN: 83-246-0619-X
                      KATALOG ONLINE     Format: A5, stron: 152

       ZAMÓW DRUKOWANY KATALOG


              TWÓJ KOSZYK
                                                                 Wkrocz w œwiat programowania w C++
                    DODAJ DO KOSZYKA         • Poznaj œrodowisko programistyczne
                                             • Napisz w³asne aplikacje
                                             • Opanuj zasady programowania obiektowego
         CENNIK I INFORMACJE             C++ to jeden z najbardziej popularnych jêzyków programowania. Przyczyny jego
                                         popularnoœci to przede wszystkim niewielka liczba s³ów kluczowych, ogromna liczba
                   ZAMÓW INFORMACJE      bibliotek umo¿liwiaj¹cych zastosowanie C++ w wielu dziedzinach, a przede wszystkim
                     O NOWOŒCIACH
                                         ogromne mo¿liwoœci jêzyka, pozwalaj¹ce na stworzenie praktycznie dowolnej aplikacji.
                                         Systemy operacyjne, aplikacje u¿ytkowe, gry — twórcy wszystkich tych programów
                       ZAMÓW CENNIK      wykorzystuj¹ w³aœnie jêzyk C++.
                                         „C++. Æwiczenia praktyczne. Wydanie II” to kolejna edycja ksi¹¿ki, która zyska³a
                 CZYTELNIA               ogromn¹ popularnoœæ wœród osób chc¹cych nauczyæ siê jêzyka C++. Ka¿de
                                         z zawartych w niej æwiczeñ zapozna Ciê z elementami tego jêzyka programowania.
          FRAGMENTY KSI¥¯EK ONLINE       Nauczysz siê tworzyæ aplikacje konsolowe i opanujesz zasady projektowania
                                         obiektowego. W ka¿dym z æwiczeñ znajdziesz równie¿ informacje o najczêœciej
                                         pope³nianych b³êdach i rady, jak ich unikaæ. Nowe wydanie ksi¹¿ki zosta³o
                                         dostosowane do najnowszych wytycznych komitetu standaryzacyjnego jêzyka C++,
                                         dziêki czemu mo¿esz mieæ pewnoœæ, ¿e wykonuj¹c æwiczenia zawarte w ksi¹¿ce,
                                         poznajesz najnowsz¹ technologiê.
                                             • Konfiguracja œrodowiska programistycznego
                                             • Standardowe wejœcie i wyjœcie
                                             • Sk³adnia programu
                                             • Sterowanie wykonywaniem programu
                                             • Funkcje
                                             • Typy danych
Wydawnictwo Helion
                                             • Podstawy programowania obiektowego
ul. Chopina 6
44-100 Gliwice                                           Po lekturze tej ksi¹¿ki zdobêdziesz niezbêdne podstawy
tel. (32)230-98-63                                         do dalszej nauki i tworzenia prawdziwych aplikacji
e-mail: helion@helion.pl
Spis treści
            Wprowadzenie                                           7
Rozdział 1. Nasz programistyczny warsztat                          11
Rozdział 2. Nasz pierwszy program                                  15
            Czy to działa?                                         15
            Sposób na znikanie okienka konsoli                     19
            Podsumowanie                                           21

Rozdział 3. Pliki źródłowe w języku C++                            23
            Pliki jako nośniki programów                           23
            Nośniki programów w C++                                24
            Dyrektywa #include i scalanie plików cpp i h           25
            Podsumowanie                                           28

Rozdział 4. Więcej o strumieniach cin i cout                       29
            Standardowe strumienie wejścia i wyjścia               30
            Kaskadowe posługiwanie się strumieniami                33
            Odrobina formatowania                                  35
            Podsumowanie                                           39

Rozdział 5. Przestrzeń na Twoje algorytmy                          41
            Początek — najlepsze miejsce na dyrektywy #include     41
            Po nagłówkach — dostęp do biblioteki standardowej      43
            Po bibliotece standardowej — nasze własne deklaracje   44
            Funkcja main() — centrum programu                      46
            Po funkcji main() — definicje innych funkcji           48
            Podsumowanie                                           49
6                       C++. Ćwiczenia praktyczne

Rozdział 6. Algorytmy                                          51
            Zwrotnica if() … else …                            51
            Zwrotnica switch{...}                              57
            Pętla for( ...; ...; ...)                          63
            Pętla while(...)                                   68
            Pętla do {...} while(...)                          71
            Instrukcje break i continue                        73
            Podsumowanie                                       78

Rozdział 7. Funkcje                                            79
            Deklarowanie funkcji                               79
            Definiowanie funkcji                               81
            Argumenty funkcji i referencja                     88
            Podsumowanie                                       93

Rozdział 8. Dane                                               95
            Typy danych                                        95
            Deklarowanie i inicjowanie prostych danych         98
            Deklarowanie i inicjowanie danych tablicowych     100
            Deklarowanie i inicjowanie danych wskaźnikowych   105
            Operacje na danych                                110
            Podsumowanie                                      117

Rozdział 9. Klasy i obiekty                                   119
            Klasa jako nowy typ danych                        119
            Wewnętrzny ustrój klasy — dane                    121
            Wewnętrzny ustrój klasy — algorytmy               125
            Pewien specjalny algorytm, zwany konstruktorem    129
            Podsumowanie                                      137

Rozdział 10. Kontenery na dane                                139
            Podsumowanie                                      149

            Zakończenie                                       150
3
                              Pliki źródłowe
                             w języku C++

Pliki jako nośniki programów
Treść programu komputerowego zazwyczaj umieszczamy w plikach
dyskowych. Zawartość tych plików będzie odczytywana przez kompi-
lator języka C++ i tłumaczona na ciąg binarnych poleceń dla procesora
komputera.
Programowanie nie zawsze jest równoznaczne z zapisywaniem czegoś
w plikach — np. w przemyśle spotykamy się z sytuacjami wprowa-
dzania programu do komputera za pomocą odpowiedniego ustawiania
mikroprzełączników. Kiedyś powszechne było umieszczanie programu
na odpowiedniej ilości dziurkowanych kart.
Przygotowywanie programu w formie zapisów umieszczanych w pli-
kach jest bardzo wygodne, tanie i uniwersalne. Zawsze można taki
program odtworzyć, poprawić, zlecić jego wykonanie, zarchiwizować
na całe lata.
Zapis programu dla komputera zazwyczaj ma strukturę zwykłego tek-
stu — mamy zatem do czynienia z plikami tekstowymi. Rzeczywiście,
program napisany w zdecydowanej większości znanych języków daje
24                          C++. Ćwiczenia praktyczne

    się otworzyć i przeczytać za pomocą zwykłego Notatnika. Jest to do-
    datkowe uproszczenie sposobu kodowania i przechowywania współ-
    czesnych programów.
    Skoro pliki źródłowe są zwyczajnymi plikami tekstowymi, do progra-
    mowania wystarczy najzwyklejszy edytor tekstowy — np. popularny
    Notatnik. Jednak większość współczesnych środowisk programistycz-
    nych udostępnia programiście własne, wbudowane edytory. Są to edy-
    tory tekstowe, ale „znające” składnię języka i na przykład odpowied-
    nio kolorujące niektóre frazy języka. Praca nad programem w takim
    edytorze jest prawdziwą przyjemnością! Pamiętajmy jednak, że pora-
    dzilibyśmy sobie także, dysponując zwykłym Notatnikiem.



    Nośniki programów w C++
    W języku C++ przyjęto powszechnie konwencję, że głównym nośni-
    kiem algorytmów jest plik o rozszerzeniu cpp, czyli np. plik o nazwie
    test.cpp. Spotkamy się także z plikami o rozszerzeniu h, czyli np. o na-
    zwie test.h, które są nośnikami nie tyle algorytmów, ile ich zapowiedzi
    lub ściślej — deklaracji. Wiadomo, skąd pochodzi nazwa cpp, natomiast
    literka h w nazwie pliku z deklaracjami wzięła się od słowa header
    — nagłówek.
    Swoje programy będziemy spisywać w pliku o nazwie np. test.cpp lub
    przyklad.cpp, lub cokolwiek.cpp. Plik ten powinien mieć strukturę
    zwykłego pliku tekstowego i mógłby być przygotowany w dowolnym
    edytorze, potem odczytany przez kompilator języka C++, skompilo-
    wany i uruchomiony.

Ć W I C Z E N I E

     3.1            Pliki źródłowe na dysku

    Pliki źródłowe naszych programów:
     1. Po wykonaniu ćwiczeń z poprzedniego rozdziału na dysku
         Twojego komputera powinny pojawić się ich pliki źródłowe.
         Odszukaj katalog, w którym środowisko DEV zapisało te pliki
         (rysunek 3.1).
     2. Spróbuj otworzyć swoje pliki źródłowe za pomocą zwykłego
         Notatnika.
Rozdział 3. • Pliki źródłowe w języku C++            25

 Rysunek 3.1.
 Oto rzut oka na katalog
 roboczy — widzimy
 tutaj dwa pliki źródłowe
 (są to programy napisane
 w poprzednim rozdziale)
 i utworzone w wyniku
 ich kompilacji dwa
 finalne pliki exe,
 nadające się
 do uruchamiania
 w systemie Windows

Najprostsze programy w całości spisuje się w pliku cpp. Jeśli zachodzi
konieczność zadeklarowania czegokolwiek, odpowiednie frazy umiesz-
cza się raczej w górnej części tego pliku (gdzieś przed zasadniczą funk-
cją main()) niż w oddzielnym pliku h. Umieszczanie deklaracji w pliku
nagłówkowym jest wyrazem profesjonalizmu programisty, jego wyso-
kiej kultury, dobrego smaku i zamiłowania do porządku. Jednak drob-
niutkie algorytmy z całym spokojem możemy umieszczać wyłącznie
w pliku cpp.
Postarajmy się zapamiętać, że język C++ w najlepszym, profesjonal-
nym wydaniu operuje parą plików cpp i h oraz że para ta nazywa się
modułem.




Dyrektywa #include
i scalanie plików cpp i h
A oto następny szczegół, na który powinniśmy zwrócić uwagę. Skoro
język C++ wprowadza do gry dwa pliki źródłowe, tym samym roz-
dzielając tak zwane deklaracje (zapowiedzi algorytmów) od tak zwa-
nych implementacji (algorytmów), to w strukturze języka powinna
znaleźć się dyrektywa łączenia pary takich plików w całość. Dla po-
równania — w Pascalu, Fortranie czy Basicu problem ten nie wy-
stępuje, bo zarówno deklaracje, jak i implementacje umieszczamy
w jednym i tym samym pliku.
26                          C++. Ćwiczenia praktyczne

    Zazwyczaj na samej górze pliku cpp — czyli na samym początku spi-
    sywanych algorytmów — pojawia się dyrektywa nakazująca kompila-
    torowi „spojrzeć” w jakiś plik nagłówkowy. Przypomnijmy sobie któ-
    rykolwiek z programów z poprzedniego rozdziału:
            #include <iostream>
            using namespace std;
            int main()
            {
              ...

    Widoczna tutaj w pierwszej linii dyrektywa nakazuje kompilatorowi
    przeczytanie pewnego innego pliku, tutaj o nazwie iostream. Co praw-
    da plik ten nie ma oczekiwanej nazwy iostream.h, a tylko iostream,
    i jest to swego rodzaju naruszenie zasad uświęconych tradycją, ale
    dyrektywie wklejania w niczym to nie przeszkadza. Rzeczywiście
    — wklejaniu za pomocą dyrektywy #include podlegają wszelkie pli-
    ki, nawet te o najdziwniejszych nazwach, czego raczej nie należy
    nadużywać.
    Wklejać pliki nagłówkowe trzeba praktycznie zawsze. Oddzielną spra-
    wą jest orientowanie się, jaki plik akurat należy wkleić. Jeśli potrzebne
    jest wyprowadzanie informacji na ekran — chętnie wklejamy plik na-
    główkowy iostream. Jeśli potrzebujemy jakiejś funkcji matematycznej,
    wkleimy prawdopodobnie plik math.h lub jego nowszą wersję cmath
    zawierające zapowiedzi instrumentów matematycznych — stałej pi,
    sinusa, pierwiastka czy logarytmu (porównaj rysunek 3.2).

Ć W I C Z E N I E

     3.2            Dołączanie plików nagłówkowych

    Teraz zrobimy coś złego. Z któregoś z poprzednich programów usuń-
    my dyrektywę #include i poddajmy program kompilacji oraz uru-
    chomieniu (porównaj rysunek 2.3):
            //#include <iostream>
            using namespace std;
            int main()
            {
              cout << "Twoje imie i nazwisko";
              return 0;
            }
Rozdział 3. • Pliki źródłowe w języku C++          27

 Rysunek 3.2.
 Poważniejsze
 programy
 intensywnie
 wykorzystują
 dyrektywę wklejania.
 Niech nas nie
 zaniepokoją
 cudzysłowy zamiast
 ostrych nawiasów,
 jak w naszych
 mikroprogramach
 — jest to pozostałość
 po dawnych czasach,
 gdy maszyny nie
 były tak szybkie
 jak dzisiaj.
 Ostre nawiasy
 nakazują rozpoczęcie
 wyszukiwania
 od katalogów
 bibliotecznych
 kompilatora.
 Kultura nakazuje,
 by swoje deklaracje
 wklejać w średnikach,
 biblioteczne
 — w nawiasach
 ostrych

Pierwsza linia została poprzedzona podwójnym ukośnikiem, zatem jest
zamieniona na komentarz i nie podlega kompilacji. Czy ten program
się uruchamia? Nie. Nawet się nie kompiluje — kompilacja kończy się
komunikatem „niezadeklarowane cout”, „nie rozumiem cout”, „nie
wiem, co znaczy cout”! Widocznie w pliku iostream znajdował się
opis algorytmu cout.

       Częsty błąd: zapomnienie o dyrektywie #include, dołączającej
       deklaracje napisów wykorzystywanych w dalszej części programu.

Wklejanie starszej wersji plików nagłówkowych, np. math.h, zamiast
współczesnej cmath.
28                    C++. Ćwiczenia praktyczne



Podsumowanie
Nośnikami współczesnych programów komputerowych są zazwyczaj
zwykłe pliki tekstowe.
Języki rezerwują sobie rozszerzenia nazw plików — i tak pliki w języ-
ku C++ mają nazwy *.cpp i *.h, pliki pascalowe nazywają się *.pas,
pliki z Fortranem *.for itd.
Zapisuj swoje algorytmy w swoich plikach i strzeż ich jak oka w głowie!
Staraj się wyrobić w sobie nawyk, by pliki każdego programu umiesz-
czać w oddzielnym katalogu. Jest to ważne, dlatego że współcze-
sne, duże programy zazwyczaj składają się z wielu plików źródło-
wych i trudno jest lokalizować je, gdy mieszają się z plikami innych
programów.
Plik *.cpp jest głównym nośnikiem algorytmów spisanych w języ-
ku C++.
Plik *.h zwyczajowo mieści deklaracje (zapowiedzi) algorytmów w ję-
zyku C++. Plik *.h jest włączany do pliku głównego *.cpp za pomocą
dyrektywy #include "nazwa_pliku.h" lub #include <nazwa_pliku.h>.
Niekiedy, szczególnie przy małych programach, pomija się plik *.h
i deklaracje umieszcza bezpośrednio w pliku *.cpp.
Deklaracje algorytmów biblioteki standardowej języka C++ zwycza-
jowo umieszcza się w plikach, w których nazwach pomijamy kropkę
i literę h, np. #include <iostream>. By jednak zapewnić wsteczną zgod-
ność z wcześniejszymi dialektami języka, ciągle poprawnie skompi-
luje się stara, „klasyczna” dyrektywa wklejania #include <iostream.h>.

Más contenido relacionado

Más de Wydawnictwo Helion

Access w biurze i nie tylko
Access w biurze i nie tylkoAccess w biurze i nie tylko
Access w biurze i nie tylko
Wydawnictwo Helion
 
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktycznePozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Wydawnictwo Helion
 
E-wizerunek. Internet jako narzędzie kreowania image&#39;u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image&#39;u w biznesieE-wizerunek. Internet jako narzędzie kreowania image&#39;u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image&#39;u w biznesie
Wydawnictwo Helion
 
Microsoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla WindowsMicrosoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Wydawnictwo Helion
 
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie IICo potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Wydawnictwo Helion
 
Makrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółuMakrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółu
Wydawnictwo Helion
 
Windows PowerShell. Podstawy
Windows PowerShell. PodstawyWindows PowerShell. Podstawy
Windows PowerShell. Podstawy
Wydawnictwo Helion
 
Java. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie IIJava. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie II
Wydawnictwo Helion
 
JavaScript. Pierwsze starcie
JavaScript. Pierwsze starcieJavaScript. Pierwsze starcie
JavaScript. Pierwsze starcie
Wydawnictwo Helion
 
Ajax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny treningAjax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny trening
Wydawnictwo Helion
 
PowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktykPowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktyk
Wydawnictwo Helion
 
Excel 2007 PL. Seria praktyk
Excel 2007 PL. Seria praktykExcel 2007 PL. Seria praktyk
Excel 2007 PL. Seria praktyk
Wydawnictwo Helion
 
Access 2007 PL. Seria praktyk
Access 2007 PL. Seria praktykAccess 2007 PL. Seria praktyk
Access 2007 PL. Seria praktyk
Wydawnictwo Helion
 
Serwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacjaSerwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacja
Wydawnictwo Helion
 
AutoCAD 2008 i 2008 PL
AutoCAD 2008 i 2008 PLAutoCAD 2008 i 2008 PL
AutoCAD 2008 i 2008 PL
Wydawnictwo Helion
 
Bazy danych. Pierwsze starcie
Bazy danych. Pierwsze starcieBazy danych. Pierwsze starcie
Bazy danych. Pierwsze starcie
Wydawnictwo Helion
 
Inventor. Pierwsze kroki
Inventor. Pierwsze krokiInventor. Pierwsze kroki
Inventor. Pierwsze kroki
Wydawnictwo Helion
 
Serwer SQL 2008. Administracja i programowanie
Serwer SQL 2008. Administracja i programowanieSerwer SQL 2008. Administracja i programowanie
Serwer SQL 2008. Administracja i programowanie
Wydawnictwo Helion
 
USB. Praktyczne programowanie z Windows API w C++
USB. Praktyczne programowanie z Windows API w C++USB. Praktyczne programowanie z Windows API w C++
USB. Praktyczne programowanie z Windows API w C++
Wydawnictwo Helion
 

Más de Wydawnictwo Helion (20)

Access w biurze i nie tylko
Access w biurze i nie tylkoAccess w biurze i nie tylko
Access w biurze i nie tylko
 
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktycznePozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
 
E-wizerunek. Internet jako narzędzie kreowania image&#39;u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image&#39;u w biznesieE-wizerunek. Internet jako narzędzie kreowania image&#39;u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image&#39;u w biznesie
 
Microsoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla WindowsMicrosoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla Windows
 
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie IICo potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
 
Makrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółuMakrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółu
 
Windows PowerShell. Podstawy
Windows PowerShell. PodstawyWindows PowerShell. Podstawy
Windows PowerShell. Podstawy
 
Java. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie IIJava. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie II
 
JavaScript. Pierwsze starcie
JavaScript. Pierwsze starcieJavaScript. Pierwsze starcie
JavaScript. Pierwsze starcie
 
Ajax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny treningAjax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny trening
 
PowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktykPowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktyk
 
Excel 2007 PL. Seria praktyk
Excel 2007 PL. Seria praktykExcel 2007 PL. Seria praktyk
Excel 2007 PL. Seria praktyk
 
Access 2007 PL. Seria praktyk
Access 2007 PL. Seria praktykAccess 2007 PL. Seria praktyk
Access 2007 PL. Seria praktyk
 
Word 2007 PL. Seria praktyk
Word 2007 PL. Seria praktykWord 2007 PL. Seria praktyk
Word 2007 PL. Seria praktyk
 
Serwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacjaSerwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacja
 
AutoCAD 2008 i 2008 PL
AutoCAD 2008 i 2008 PLAutoCAD 2008 i 2008 PL
AutoCAD 2008 i 2008 PL
 
Bazy danych. Pierwsze starcie
Bazy danych. Pierwsze starcieBazy danych. Pierwsze starcie
Bazy danych. Pierwsze starcie
 
Inventor. Pierwsze kroki
Inventor. Pierwsze krokiInventor. Pierwsze kroki
Inventor. Pierwsze kroki
 
Serwer SQL 2008. Administracja i programowanie
Serwer SQL 2008. Administracja i programowanieSerwer SQL 2008. Administracja i programowanie
Serwer SQL 2008. Administracja i programowanie
 
USB. Praktyczne programowanie z Windows API w C++
USB. Praktyczne programowanie z Windows API w C++USB. Praktyczne programowanie z Windows API w C++
USB. Praktyczne programowanie z Windows API w C++
 

C++. Ćwiczenia praktyczne. Wydanie II

  • 1. IDZ DO PRZYK£ADOWY ROZDZIA£ SPIS TREŒCI C++. Æwiczenia praktyczne. Wydanie II KATALOG KSI¥¯EK Autor: Andrzej Stasiewicz ISBN: 83-246-0619-X KATALOG ONLINE Format: A5, stron: 152 ZAMÓW DRUKOWANY KATALOG TWÓJ KOSZYK Wkrocz w œwiat programowania w C++ DODAJ DO KOSZYKA • Poznaj œrodowisko programistyczne • Napisz w³asne aplikacje • Opanuj zasady programowania obiektowego CENNIK I INFORMACJE C++ to jeden z najbardziej popularnych jêzyków programowania. Przyczyny jego popularnoœci to przede wszystkim niewielka liczba s³ów kluczowych, ogromna liczba ZAMÓW INFORMACJE bibliotek umo¿liwiaj¹cych zastosowanie C++ w wielu dziedzinach, a przede wszystkim O NOWOŒCIACH ogromne mo¿liwoœci jêzyka, pozwalaj¹ce na stworzenie praktycznie dowolnej aplikacji. Systemy operacyjne, aplikacje u¿ytkowe, gry — twórcy wszystkich tych programów ZAMÓW CENNIK wykorzystuj¹ w³aœnie jêzyk C++. „C++. Æwiczenia praktyczne. Wydanie II” to kolejna edycja ksi¹¿ki, która zyska³a CZYTELNIA ogromn¹ popularnoœæ wœród osób chc¹cych nauczyæ siê jêzyka C++. Ka¿de z zawartych w niej æwiczeñ zapozna Ciê z elementami tego jêzyka programowania. FRAGMENTY KSI¥¯EK ONLINE Nauczysz siê tworzyæ aplikacje konsolowe i opanujesz zasady projektowania obiektowego. W ka¿dym z æwiczeñ znajdziesz równie¿ informacje o najczêœciej pope³nianych b³êdach i rady, jak ich unikaæ. Nowe wydanie ksi¹¿ki zosta³o dostosowane do najnowszych wytycznych komitetu standaryzacyjnego jêzyka C++, dziêki czemu mo¿esz mieæ pewnoœæ, ¿e wykonuj¹c æwiczenia zawarte w ksi¹¿ce, poznajesz najnowsz¹ technologiê. • Konfiguracja œrodowiska programistycznego • Standardowe wejœcie i wyjœcie • Sk³adnia programu • Sterowanie wykonywaniem programu • Funkcje • Typy danych Wydawnictwo Helion • Podstawy programowania obiektowego ul. Chopina 6 44-100 Gliwice Po lekturze tej ksi¹¿ki zdobêdziesz niezbêdne podstawy tel. (32)230-98-63 do dalszej nauki i tworzenia prawdziwych aplikacji e-mail: helion@helion.pl
  • 2. Spis treści Wprowadzenie 7 Rozdział 1. Nasz programistyczny warsztat 11 Rozdział 2. Nasz pierwszy program 15 Czy to działa? 15 Sposób na znikanie okienka konsoli 19 Podsumowanie 21 Rozdział 3. Pliki źródłowe w języku C++ 23 Pliki jako nośniki programów 23 Nośniki programów w C++ 24 Dyrektywa #include i scalanie plików cpp i h 25 Podsumowanie 28 Rozdział 4. Więcej o strumieniach cin i cout 29 Standardowe strumienie wejścia i wyjścia 30 Kaskadowe posługiwanie się strumieniami 33 Odrobina formatowania 35 Podsumowanie 39 Rozdział 5. Przestrzeń na Twoje algorytmy 41 Początek — najlepsze miejsce na dyrektywy #include 41 Po nagłówkach — dostęp do biblioteki standardowej 43 Po bibliotece standardowej — nasze własne deklaracje 44 Funkcja main() — centrum programu 46 Po funkcji main() — definicje innych funkcji 48 Podsumowanie 49
  • 3. 6 C++. Ćwiczenia praktyczne Rozdział 6. Algorytmy 51 Zwrotnica if() … else … 51 Zwrotnica switch{...} 57 Pętla for( ...; ...; ...) 63 Pętla while(...) 68 Pętla do {...} while(...) 71 Instrukcje break i continue 73 Podsumowanie 78 Rozdział 7. Funkcje 79 Deklarowanie funkcji 79 Definiowanie funkcji 81 Argumenty funkcji i referencja 88 Podsumowanie 93 Rozdział 8. Dane 95 Typy danych 95 Deklarowanie i inicjowanie prostych danych 98 Deklarowanie i inicjowanie danych tablicowych 100 Deklarowanie i inicjowanie danych wskaźnikowych 105 Operacje na danych 110 Podsumowanie 117 Rozdział 9. Klasy i obiekty 119 Klasa jako nowy typ danych 119 Wewnętrzny ustrój klasy — dane 121 Wewnętrzny ustrój klasy — algorytmy 125 Pewien specjalny algorytm, zwany konstruktorem 129 Podsumowanie 137 Rozdział 10. Kontenery na dane 139 Podsumowanie 149 Zakończenie 150
  • 4. 3 Pliki źródłowe w języku C++ Pliki jako nośniki programów Treść programu komputerowego zazwyczaj umieszczamy w plikach dyskowych. Zawartość tych plików będzie odczytywana przez kompi- lator języka C++ i tłumaczona na ciąg binarnych poleceń dla procesora komputera. Programowanie nie zawsze jest równoznaczne z zapisywaniem czegoś w plikach — np. w przemyśle spotykamy się z sytuacjami wprowa- dzania programu do komputera za pomocą odpowiedniego ustawiania mikroprzełączników. Kiedyś powszechne było umieszczanie programu na odpowiedniej ilości dziurkowanych kart. Przygotowywanie programu w formie zapisów umieszczanych w pli- kach jest bardzo wygodne, tanie i uniwersalne. Zawsze można taki program odtworzyć, poprawić, zlecić jego wykonanie, zarchiwizować na całe lata. Zapis programu dla komputera zazwyczaj ma strukturę zwykłego tek- stu — mamy zatem do czynienia z plikami tekstowymi. Rzeczywiście, program napisany w zdecydowanej większości znanych języków daje
  • 5. 24 C++. Ćwiczenia praktyczne się otworzyć i przeczytać za pomocą zwykłego Notatnika. Jest to do- datkowe uproszczenie sposobu kodowania i przechowywania współ- czesnych programów. Skoro pliki źródłowe są zwyczajnymi plikami tekstowymi, do progra- mowania wystarczy najzwyklejszy edytor tekstowy — np. popularny Notatnik. Jednak większość współczesnych środowisk programistycz- nych udostępnia programiście własne, wbudowane edytory. Są to edy- tory tekstowe, ale „znające” składnię języka i na przykład odpowied- nio kolorujące niektóre frazy języka. Praca nad programem w takim edytorze jest prawdziwą przyjemnością! Pamiętajmy jednak, że pora- dzilibyśmy sobie także, dysponując zwykłym Notatnikiem. Nośniki programów w C++ W języku C++ przyjęto powszechnie konwencję, że głównym nośni- kiem algorytmów jest plik o rozszerzeniu cpp, czyli np. plik o nazwie test.cpp. Spotkamy się także z plikami o rozszerzeniu h, czyli np. o na- zwie test.h, które są nośnikami nie tyle algorytmów, ile ich zapowiedzi lub ściślej — deklaracji. Wiadomo, skąd pochodzi nazwa cpp, natomiast literka h w nazwie pliku z deklaracjami wzięła się od słowa header — nagłówek. Swoje programy będziemy spisywać w pliku o nazwie np. test.cpp lub przyklad.cpp, lub cokolwiek.cpp. Plik ten powinien mieć strukturę zwykłego pliku tekstowego i mógłby być przygotowany w dowolnym edytorze, potem odczytany przez kompilator języka C++, skompilo- wany i uruchomiony. Ć W I C Z E N I E 3.1 Pliki źródłowe na dysku Pliki źródłowe naszych programów: 1. Po wykonaniu ćwiczeń z poprzedniego rozdziału na dysku Twojego komputera powinny pojawić się ich pliki źródłowe. Odszukaj katalog, w którym środowisko DEV zapisało te pliki (rysunek 3.1). 2. Spróbuj otworzyć swoje pliki źródłowe za pomocą zwykłego Notatnika.
  • 6. Rozdział 3. • Pliki źródłowe w języku C++ 25 Rysunek 3.1. Oto rzut oka na katalog roboczy — widzimy tutaj dwa pliki źródłowe (są to programy napisane w poprzednim rozdziale) i utworzone w wyniku ich kompilacji dwa finalne pliki exe, nadające się do uruchamiania w systemie Windows Najprostsze programy w całości spisuje się w pliku cpp. Jeśli zachodzi konieczność zadeklarowania czegokolwiek, odpowiednie frazy umiesz- cza się raczej w górnej części tego pliku (gdzieś przed zasadniczą funk- cją main()) niż w oddzielnym pliku h. Umieszczanie deklaracji w pliku nagłówkowym jest wyrazem profesjonalizmu programisty, jego wyso- kiej kultury, dobrego smaku i zamiłowania do porządku. Jednak drob- niutkie algorytmy z całym spokojem możemy umieszczać wyłącznie w pliku cpp. Postarajmy się zapamiętać, że język C++ w najlepszym, profesjonal- nym wydaniu operuje parą plików cpp i h oraz że para ta nazywa się modułem. Dyrektywa #include i scalanie plików cpp i h A oto następny szczegół, na który powinniśmy zwrócić uwagę. Skoro język C++ wprowadza do gry dwa pliki źródłowe, tym samym roz- dzielając tak zwane deklaracje (zapowiedzi algorytmów) od tak zwa- nych implementacji (algorytmów), to w strukturze języka powinna znaleźć się dyrektywa łączenia pary takich plików w całość. Dla po- równania — w Pascalu, Fortranie czy Basicu problem ten nie wy- stępuje, bo zarówno deklaracje, jak i implementacje umieszczamy w jednym i tym samym pliku.
  • 7. 26 C++. Ćwiczenia praktyczne Zazwyczaj na samej górze pliku cpp — czyli na samym początku spi- sywanych algorytmów — pojawia się dyrektywa nakazująca kompila- torowi „spojrzeć” w jakiś plik nagłówkowy. Przypomnijmy sobie któ- rykolwiek z programów z poprzedniego rozdziału: #include <iostream> using namespace std; int main() { ... Widoczna tutaj w pierwszej linii dyrektywa nakazuje kompilatorowi przeczytanie pewnego innego pliku, tutaj o nazwie iostream. Co praw- da plik ten nie ma oczekiwanej nazwy iostream.h, a tylko iostream, i jest to swego rodzaju naruszenie zasad uświęconych tradycją, ale dyrektywie wklejania w niczym to nie przeszkadza. Rzeczywiście — wklejaniu za pomocą dyrektywy #include podlegają wszelkie pli- ki, nawet te o najdziwniejszych nazwach, czego raczej nie należy nadużywać. Wklejać pliki nagłówkowe trzeba praktycznie zawsze. Oddzielną spra- wą jest orientowanie się, jaki plik akurat należy wkleić. Jeśli potrzebne jest wyprowadzanie informacji na ekran — chętnie wklejamy plik na- główkowy iostream. Jeśli potrzebujemy jakiejś funkcji matematycznej, wkleimy prawdopodobnie plik math.h lub jego nowszą wersję cmath zawierające zapowiedzi instrumentów matematycznych — stałej pi, sinusa, pierwiastka czy logarytmu (porównaj rysunek 3.2). Ć W I C Z E N I E 3.2 Dołączanie plików nagłówkowych Teraz zrobimy coś złego. Z któregoś z poprzednich programów usuń- my dyrektywę #include i poddajmy program kompilacji oraz uru- chomieniu (porównaj rysunek 2.3): //#include <iostream> using namespace std; int main() { cout << "Twoje imie i nazwisko"; return 0; }
  • 8. Rozdział 3. • Pliki źródłowe w języku C++ 27 Rysunek 3.2. Poważniejsze programy intensywnie wykorzystują dyrektywę wklejania. Niech nas nie zaniepokoją cudzysłowy zamiast ostrych nawiasów, jak w naszych mikroprogramach — jest to pozostałość po dawnych czasach, gdy maszyny nie były tak szybkie jak dzisiaj. Ostre nawiasy nakazują rozpoczęcie wyszukiwania od katalogów bibliotecznych kompilatora. Kultura nakazuje, by swoje deklaracje wklejać w średnikach, biblioteczne — w nawiasach ostrych Pierwsza linia została poprzedzona podwójnym ukośnikiem, zatem jest zamieniona na komentarz i nie podlega kompilacji. Czy ten program się uruchamia? Nie. Nawet się nie kompiluje — kompilacja kończy się komunikatem „niezadeklarowane cout”, „nie rozumiem cout”, „nie wiem, co znaczy cout”! Widocznie w pliku iostream znajdował się opis algorytmu cout. Częsty błąd: zapomnienie o dyrektywie #include, dołączającej deklaracje napisów wykorzystywanych w dalszej części programu. Wklejanie starszej wersji plików nagłówkowych, np. math.h, zamiast współczesnej cmath.
  • 9. 28 C++. Ćwiczenia praktyczne Podsumowanie Nośnikami współczesnych programów komputerowych są zazwyczaj zwykłe pliki tekstowe. Języki rezerwują sobie rozszerzenia nazw plików — i tak pliki w języ- ku C++ mają nazwy *.cpp i *.h, pliki pascalowe nazywają się *.pas, pliki z Fortranem *.for itd. Zapisuj swoje algorytmy w swoich plikach i strzeż ich jak oka w głowie! Staraj się wyrobić w sobie nawyk, by pliki każdego programu umiesz- czać w oddzielnym katalogu. Jest to ważne, dlatego że współcze- sne, duże programy zazwyczaj składają się z wielu plików źródło- wych i trudno jest lokalizować je, gdy mieszają się z plikami innych programów. Plik *.cpp jest głównym nośnikiem algorytmów spisanych w języ- ku C++. Plik *.h zwyczajowo mieści deklaracje (zapowiedzi) algorytmów w ję- zyku C++. Plik *.h jest włączany do pliku głównego *.cpp za pomocą dyrektywy #include "nazwa_pliku.h" lub #include <nazwa_pliku.h>. Niekiedy, szczególnie przy małych programach, pomija się plik *.h i deklaracje umieszcza bezpośrednio w pliku *.cpp. Deklaracje algorytmów biblioteki standardowej języka C++ zwycza- jowo umieszcza się w plikach, w których nazwach pomijamy kropkę i literę h, np. #include <iostream>. By jednak zapewnić wsteczną zgod- ność z wcześniejszymi dialektami języka, ciągle poprawnie skompi- luje się stara, „klasyczna” dyrektywa wklejania #include <iostream.h>.