ebook img

Meandry Języka C/C++ PDF

264 Pages·2006·2.529 MB·Polish
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Meandry Języka C/C++

Meandry języka C/C+ + . Spis treści Przedmowa........................................................................................................................................5 Wstęp Opcn Source i projekt gcc................................ 8 Pracaw środowisku Dev-C++ ...............,„..........................,„.................*......„„..................9 CVS - system kontroli wersji.................................................................................................] 1 1. Podstawy programowania................................*...........*..................*................................13 Języki niskiego i wysokiego poziomullltłtł............... 13 Programowanie........................................................................................................................13 Instrukcje wejścia/wyjścia (inputfoutput)..............................................................................15 Typy zmiennych proste i złożone, tablice..............................................................................21 Konwersja typów w wyrażeniach..........................................................................................21 Specyfikacje formatu..............................................................................................................22 Notacja dla stałych ósemkowych i szesnastkowych.............................................................24 Opcracjc na bitach................................................................................................................... 26 11 ts tru kej a A łJ D......................... ■ ■..+++. ■ ■ ■ ■.++++.. ■ ■..++++. ■ ■ ■..++++.. ■ ■..+++*.. ■...+++. ■ ■ ■ ■..+++. ■ ■ ■..++++. ■ ■ ■ ■ 2 6 Instrukcja OR..................................................................................................................28 Instrukcja XOR...............................................................................................................29 Instrukcja asemblera CPL {ang. compłement)..............................................................31 Przesunięcie bitowe.,............*...........................*....................*...........................*................32 Instrukcje w arunkowe............................................................................................................. 33 Op£ rac | e pę111.+++.. ■ ■...+++. ■....+++.. ■ ■ ■ ■.++*... ■ ■ ■.+++.. ■ ■..++++.. ■ ■.. .++.. ■....+++.. ■ ■ ■ ■.+++... ■ ■ ■.+++.. ■ ■...+++.. ■ ■..+++*. ■ ■ ■ ■ 34^ Instrukcja for (...)............................................................................................................35 I ns trukcj a wh 11 e (...)................................................................................................... 3 6 Instrukcje podejmowania dccyzji........................................................................................... 41 Instrukcja if (...)..............................................................................................................41 Instrukcja switch (...)......................................................................................................43 Funkcje..................................................................................................................................... 46 Tworzenie własnych funkcji..........................................................................................46 Przekazywanie parametrów do funkcji......................................................................... 47 Biblioteki numeryczne....................................................................................................49 Rekurencja................................................................................................................................50 Zasięg zmiennych.................................................................................................................... 52 Tabhce (armys}........................................................................................................................54 Tablice a wskaźniki.................................................................................................................67 Dynatniczny przydział pamięci.............................................................................................. 68 4 Meandryjęzyka C/C++ Typy referencyjne ...70 Struktury i klasy ... ...71 Klasy........... ...72 2. Klasy i obiekty.................................... ... 75 Programowanie obiektowe.................... ...75 Hermetyzacja........................................ ...75 Przeładowanie funkcji........................ ...78 r + ■ ■ ■ ■ ■ ■ + T * * i r + + * + ■ ■ ■ b ■ v * + * r ■ ■ ■ ■ ■ ■ + + + ■ ■ ■ ■ ■ ■ + + r + + T * * i i ■ ■ ■ r + v * Konstruktor ............................................ ...79 Inicjalizowanie tablicy obiektów.......... ...81 Funkcje zaprzyjaźnione.......................... ...85 Przeładowanie operatorów .................... ...89 Dziedziczenie.......................................... ...90 Fimkeje wirtualne, polimorfizm............ ...93 3. Zadania różne ... 95 Zadanie lt Wczytywanie tablicy znakowej dwuwymiarowej z pliku tekstowego...,,,,,, ...95 Zadanic 2. Przetwarzanie łańcuchów tekstu - funkcje rckurencyjnc............................ ... 96 Zadanie 3. Oceny............................................................................................................... . 100 Zadanic 4. Symulowanie dodawania 1 do liczby dwójkowej......................................... . 107 Zadanie 5, Operatory logiczne AND i OR....................................................................... . 108 Zadanie 6. Klasy, konstruktor domniemany funkcji, funkcje składowe........................ .110 Zadanie 7. Zamiana łańcuchaznaków na liczbę.............................................................. . 112 Zadanic 8, Dynamiczny przydział pamięci, zamiana znaku na liczbę........................... . 115 Zadanie 9* Wczytywanie tablicy znakowej z pliku tekstowego, dynamiczny przydział pamięci............................................................................................ . 117 Zadanie 10. Tworzenie drzewa binarnego, drukowanie posortowanych informacji.... .119 4. Programowanie mikrokontrolerów wjęzyku C .123 Literatura 129 Skorowidz 131 Przedmowa Książka, którą oddajemy do rąk Czytelników, przewidzianajest jako podręcznik kursu języków C/C++ dla młodzieży. Składa się ona z następujących części: „Podsta­ wy programowania”, „Klasy i obiekty”, ,^Zadania różne” oraz „Programowanie mikro­ kontrolerów w języku Cł\ Omówiono w niej operacje na bitach, a także podano kilka zadań dotyczących programowania funktorów, co na tyle rozszerza zakres tematyczny publikacji, że z po­ wodzeniem może być ona stosowana jako podręcznik do nauki języka programowania dla studentów elektroniki. Przykłady zawarte w niniejszym opracowaniu dotyczą zagadnień z informatyki stosowanej. Składają się one z przedstawienia problemu, propozycji jego rozwiązania oraz omówienia zaproponowanego rozwiązania. Ponadto w części pierwszej na końcu większości rozdziałów znajdują się pytania i proste zadania, do których ze względów dydaktycznych nie podano rozwiązań. Zamieszczone w tej publikacji przykłady są oryginalne i stanowią własną pracę autorów. Tworzącje, korzystano z literatury, której wykaz podany jest na końcu książki. Programista tworzący własną aplikację w języku C++, z pewnością napotka nie­ jeden problem, którego rozwiązania nie znajdzie w tym z założenia ograniczonym do określonej problematyki opracowaniu, W szczególnie wątpliwych przypadkach najle­ piej więc skorzystać z dokumentacji danego kompilatorajęzyka lub z pomocy on!ine. Autorzy życzą programistom satysfakcji z korzystania z książki. 8 Meandryjęzyka C/C++ Open Source i projekt gcc Zadaniem kompilatora i linkera jest zamiana źródłowej wersji kodu na wersję wykonywalną, o rozszerzeniu .exe> Komercyjne wersje kompilatorów' z powodu swojej ceny są często niedostępne dla wielu programislów, Ich alternatywą jest Open Source oraz licencja GNU Public Licence (GPL). Zamiast opatrywać swoje produkty znakiem Copyright, deweloperzy pozwalają na ich swobodne kopiowanie i dystTybucję, pod warunkiem zachowania pewnych reguł chroniących prawa autorskie (GPL). Produktem takim, będącym owocem pracy wielu ludzi, jest projekt gcc, Począt­ kowo nazwa ta odnosiła się do kompilatora C. Obecnie określa ona GNU Compiler Collection, który zawiera oddzielne kompilatory dla takich języków programowania jak: C/C++, Fortran, Ada, UWAGA Wiele bibliotek z pakietu gcc ma zastosowanie tylko w środowisku UNIX/Linux, nie można z nich więc korzystać w środowisku Ms Windows. Ograniczenie to dotyczy m,in. obslugi portu szeregowego. Kompilator C/C++ można wywołać z linii poleceń, co zostanie przedstawione w dalszej części książki, wygodniej jest jednak korzystać ze środowiska zintegrowa­ nego, które stanowią: edytor, kompilator, debuger, Menedżer Projektów, Pomoc. Ta­ kim popularnym środowiskiem o dużej funkcjonalności w systemie Ms Windows jest Bloodshed Dev-C++. Dobrą zasadą, do której warto się zastosować, korzystając z aplikacji Open Source, jest zapoznawanie się z listą występujących problemów - FAQ (ang. Frequenlly Asked Questions). Projekt Dev-C++, który należy do Open Source,jest przez cały czas rozwijany, co ow'ocuje coraz to nowymi jego wersjami. Problemy z nimi związane są rozwiązywane na bieżąco, ale wraz z rozwojem projektu pojawiają się inne, dotych­ czas nieznane. Warto więc regularnie przeglądać listę FAQ. Pilnych, rzetelnych programislów chętnych do pracy z językiem C/C++ (będą­ cym najczęściej używanym narzędziem w projektach Open Source) zachęcamy, aby w miarę swoich możliwości włączali się w pracę wielkiej rzeszy deweloperów zajmu­ jących się projektami Open Source. Wstęp 9 Praca w środowisku Dev-C++ Aplikacja Dev-C++ wykorzystuje tzw. Mingw compiler system, w którego skład wehodzą kompilatory w wersji minimalnej dla systemu Ms Windows. Mingw tłuma­ czymy jako: Minimaiist GNUfor Windows. W menu środowiska Dev-C++ oprócz standardowych pozycji: File, Edit, Search, View, są również inne, m.in.: Project i CVS. Menedżer Projektów ułatwia pracę związaną z zarządzaniem wieloma plikami źródłowymi, ich kompilacją, linkowaniem i tworzeniem plików wykonywalnych. Ponadto umożliwia tworzenie plików .d!I. Centrum zarządzania projektem pomaga wybrać typ tworzonego programu, iip. program dla konsoli, albo Win Api. (Oczywiście można tworzyć pojedynczy pUk źródłowy bez otwierania projektu). Utworzone pliki źródłowe można kompilować z linii poleceń lub wykorzystywać do tego celu środowisko Dev-C++. Plik źródłowy w języku C powinien mieć rozszerzenie .t\ Przykład prostego pliku w języku C #include <stdio,h> int main (int argc, char **argv) { pri ntf(''Hal o i \n" ); return (0); } Jeżeli plik ten zapiszemy jako haio.c, to chcąc utworzyć plik wykonywalny, bę­ dziemy mogli użyć następujących poleceń z wiersza poleceń: gcc -c halo,c gcc -o halo halo.o lub polecenia: gcc -o halo halo.c W pierwszej wersji pierwsze polecenie powoduje utworzenie pliku typu object o nazwie halo.o, natomiast drugi Taz wywoływany jest kompilator z opcją -o. Pobiera on jako argument plik halo.o, natomiast w w'yniku procesu linkowania tworzy plik wykonywalny halo.exe. W drugiej wersji kompilator wywoływany jest także z opcją -o, co pozwala nam 2aprop0n0wac nazwę dla pliku wynikowego, która ma być halo>exe. Jednak lu argu­ mentem jest nie plik typu object, lecz plik źródłowy ha/o.c. 10 Meandryjęzyka C/C++ Warto jeszcze dodać, że wywońijąc kompilator, można nie posługiwać się żadną opeją.jedyniejako argument podać nazwę pliku źródłowego: gcc halo.c Wówczas po kompilacji i Hnkowaniu powstanie plik wykonywalny o standardo­ wej nazwie a,exe, (analogicznej do nazwy axmt w systemie Linux), Drugie z użytych poleceń tworzy plik typu object o nazwie halo,o, Podobny plik napisany wjęzyku C++, będzie miał następującą postać: #include <iostream> int main (int argc, char **argv) { std::cout << "Halo!" << std::endl; return {0); } Plik należy zapisaćjako halo>cpp. Do utworzenia wersji wykonywalnej pliku halo.exe, można użyć następujących polcceń z linii poleceń: g++ -c halo.cpp g++ -o halo halo.o UWAGA 1. Czytelnik zapewne zauważy, że w przykładowych programach podanych w książce funk­ cja główna main nie pobiera żadnych argumentów: ani argc, ani argv> Można z nich zrezy­ gnować, jeżeli program wykonywalny nie będzie pobierał żadnych argumentów, a wlaśnie takiej sytuacji dotyczą podane przykłady. 2. W przykładowych programach języka G++ zamiast konstrukcji: std::cout << ... została użyta konstrukcja: COUt << ... Nazwy cout \ cin zdefiniowane są w przestrzeni nazw namespace std, w bibliotece iostream. Wolno nam więc nie poprzedzać ich każdorazowo slowem: std;;, natomiast powinniśmy na początku programu umieścić dyrektywę: using namespace std. Jeśli tego nie zrobimy, nie­ rozważne użycie słów cint cout do innych celów spowoduje zatarcie ich właściwego znacze­ nia. Podanc przykłady były programami dla konsoli. Dawniej takie programy okre- ślano jako DOS-owe.

See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.