Krótki kurs C++.doc

(54 KB) Pobierz

Krótki kurs C++

1. Wstęp

Programowanie w C++ jest łatwe, a przy tym jest to doskonała zabawa. Kurs ten będzie składał się z 10 części, które (mam nadzieję) wprowadzą Cię w świat programowania zorientowanego obiektowo(OOP). Kurs jest przeznaczony dla zupełnie początkujących, którzy nigdy nie mieli styczności z programowaniem. Jeśli tylko chcesz się nauczyć programowania w C++ w miarę szybko i bezboleśnie to zapraszam do czytania niniejszego kursu.

2. No to zaczynamy?

Nie tak prędko, aby rozpocząć swoją przygodę z C++ konieczny jest kompilator. Skąd go wziąć ? Pełna wersja Borlanda C++ Buildera(1.0) zamieszczona była w Enterze w maju 1999 roku. Ten sam Borland C++ Builder był na płytach pisma PC World Komputer. W numerze 5/2000 w miesięczniku PC World Komputer zamieszczona była wersja 3.0. Do celów edukacyjnych możesz z niego korzystać zupełnie za darmo. Ponadto w Linuksie dostępny jest kompilator gcc( również za darmo). W Chipie nr 5/2000 zamieszczony był Borland C++ Compiler 5.5. Ja polecałbym Ci Buildera pracuje się w nim łatwo, prosto i przyjemnie. Jeśli poszukasz to w Internecie na pewno również znajdziesz darmowe kompilatory.

Co to jest kompilator ?

Aby móc Ci to wytłumaczyć, musimy przeanalizować w jaki sposób powstaje program w C++.

Tworzenie programu w C++ składa się z 4 etapów. Pierwszy etap to edycja. W tym etapie wykorzystywany jest program edytora (np. Notatnik w Windows). Jest to moim zdaniem najważniejsza faza, gdyż tutaj wpisujesz instrukcje, które wykona komputer. Następnie plik z instrukcjami zapisywany jest na dysku. Kolejnym etapem jest kompilacja programu. Kompilacja polega na "przetłumaczeniu" instrukcji w C++ na język wewnętrzny procesora.

Zanim nastąpi kompilacja wykonywany jest automatycznie program preprocesora. Preprocesor to taki program, który wykonuje instrukcje zwane dyrektywami preprocesora. Zadaniem tych instrukcji jest wykonanie pewnych czynności zanim jeszcze dokonana zostanie kompilacja programu. Te czynności to np. dołączenie innych plików tekstowych. Preprocesor wywoływany jest przez kompilator zanim program zostanie przekształcony na język maszynowy. Ostatnim etapem jest łączenie, na czym to polega ? Otóż programy w C++ składają się z funkcji lub obiektów zdefiniowanych w innych plikach ( np. bibliotekach standardowych). Kod tworzony przez kompilator zawiera puste miejsca, które muszą zostać wypełnione przez funkcje z tych innych plików, tak aby stworzyć program w pełni wykonywalny.

 

3. Co jeszcze musisz wiedzieć, zanim zaczniemy?

Dwa podstawowe pojęcia :

1.      Jednostka wejściowa- jest to ta część komputera, która poprzez którą komputer otrzymuje dane i programy z różnych urządzeń wejściowych.

2.      Jednostka wyjściowa- pobiera informacje przetwarzane przez komputer i umieszcza je na urządzeniach wyjściowych.

4. Pierwszy program -" Hello world"

Działanie naszego programu będzie polegało na wyświetleniu linii tekstu.

//"Hello World" pierwszy program w C++. #include <iostream.h> int main() { cout<<"Hello World\n"; return 0; }

Teraz przeanalizujmy program linijka po linijce, aby wszystko stało się jasne.

// "Hello World" pierwszy program w C++.

Znaki // oznaczają dla kompilatora, że po nich znajduje się komentarz a nie instrukcje programu.

Programiści używają komentarzy dla dokumentacji programu. Jest to szczególnie użyteczne w przypadku dużych projektów. Komentarze ułatwiają zrozumienie programu innym osobom. Komentarze nie powodują żadnych działań ze strony komputera i podczas kompilacji są (przez kompilator) pomijane.

#include <iostream.h>

Jest to dyrektywa preprocesora, czyli instrukcja dla programu preprocesora. Linie rozpoczynające się od znaku # są przetwarzane przez preprocesor zanim program zostanie skompilowany. Instrukcja include nakazuje preprocesorowi umieszczenie w programie zawartości pliku nagłówkowego iostream.h . Ten plik musi być dołączony, ponieważ program nasz wysyła informacje wyjściowe na ekran(io- input/output, stream-strumień).

int main()

Każdy program w C++ składa się z jednej lub kilku funkcji, z których tylko jedna musi nazywać się main. Programy C++ zawsze rozpoczynają wykonywanie funkcji od main, nawet jeśli nie jest to pierwsza funkcja. Słowo int oznacza, że funkcja zwraca wartość będącą liczbą całkowitą. Lewy nawias klamrowy ' { ' rozpoczyna ciało funkcji, odpowiadający mu prawy nawias kończy ciało funkcji.

Więcej o funkcjach będzie w 3 odcinku naszego kursu.

cout<<"Hello World\n";

Linia ta to pojedynczą instrukcja. Instrukcja ta nakazuje wyświetlenie napisu "Hello World" oraz przeniesienie kursora do nowej linii. Składa się ona z obiektu strumienia standardowego wyjścia cout( ang. see out),przyłączonego normalnie do ekranu, operatora <<, zwanego operatorem wstawiania do strumienia, napisu "Hello World\n" oraz średnika ;. Każda instrukcja musi się kończyć średnikiem(jest to tzw. zakończenie instrukcji). Brak średnika na końcu instrukcji powoduje wygenerowanie błędu składniowego. Operator << nazywany jest operatorem wstawiania do strumienia, natomiast napis "Hello World\n" to jego prawy operand(wartość znajdująca się na prawo od operatora). Backslash to znak specjalny zmieniający znaczenie następnego znaku. Kiedy znak \ zostanie napotkany w napisie to następny znak jest z nim łączony w celu stworzenia sekwencji o specjalnym znaczeniu. Sekwancja "\n" oznacza przejście do nowej linii.

return 0;

Za pomocą słowa kluczowego return zwracana jest wartość z funkcji. Wartość 0 dla funkcji main oznacza, że program zakończył się pomyślnie. Więcej na temat zwracania różnych wartości przez funkcje będzie w 3 odcinku.

5. Zmienne i arytmetyka w C++

Na początek mały programik.

// Program, który prosi użytkownika o podanie 2 liczb, a następnie je mnoży // i wyświetla wynik na ekranie. #include <iostream.h> main() { int liczba1,liczba2,iloczyn; cout<<"Wprowadz pierwsza liczbe calkowita\n"; cin>>liczba1; cout<<"Wprowadz druga liczbe calkowita\n"; cin>>liczba2; iloczyn=liczba1*liczba2; cout<<"Iloczyn wynosi : "<<iloczyn<<endl; return 0; }

Jeśli chodzi o linie:

// Program, który prosi użytkownika o podanie 2 liczb, a następnie je mnoży // i wyświetlawynik na ekranie. #include <iostream.h> main() {

patrz wyżej.

int liczba1,liczba2,iloczyn;

Linia ta to deklaracja trzech zmiennych całkowitych o nazwach liczba1,liczba2,iloczyn.

Deklarację można również napisać w ten sposób: int liczba1;

int liczba2; int iloczyn;

powyżej zmienna deklarowana jest w trzech oddzielnych instrukcjach. Poniżej deklarujemy zmienne w jednej instrukcji, ale w trzech liniach:

int liczba1, liczba2, iloczyn;

Nazwa zmiennej to dowolny dozwolony identyfikator. Identyfikator to układ znaków składający się z liter, cyfr i znaków podkreślenia(_). Identyfikator nie może rozpoczynać się cyfrą. Identyfikator nie może być słowem kluczowym. W C++ rozróżniane są duże i małe litery, więc Liczba1 i liczba1 to dwie różne zmienne. Deklaracje zmiennych mogą być umieszczane wszędzie w funkcji, pod warunkiem, że deklaracja pojawi się zanim zmienna zostanie użyta. Każda zmienna ma nazwę, typ, rozmiar i wartość. Rozmiar zmiennej określa ile komórek w pamięci zajmuje zmienna. Jeśli chodzi o typ zmiennej to określa go słowo kluczowe typu danych poprzedzające nazwę zmiennej( w naszym wypadku jest to słowo int wskazujące na to, że zmienna jest typu integer-liczbą całkowitą). Wartość zmiennej liczba1 jest nadawana instrukcją:

cin>>liczba1;

Instrukcja ta używa obiektu strumienia wejściowego cin(ang. see in) oraz operatora pobierania za strumienia >> do uzyskania liczby wpisywanej przez użytkownika. Cin i operator >> pobiera wejście ze standardowego strumienia wejściowego jakim zazwyczaj jest klawiatura i przypisuje ją zmiennej liczba1. Inaczej mówiąc cin przekazuje wartość wpisaną przez użytkownika do zmiennej liczba1. Tak naprawdę wartość ta jest przekazywana do komórek w pamięci komputera, którym kompilator przypisał nazwę zmiennej.

iloczyn=liczba1*liczba2;

Instrukcja oblicza iloczyn zmiennych liczba1 oraz liczba2 oraz przypisuje wynik do zmiennej iloczyn. Instrukcja ta używa operatora przypisania = oraz operatora * wskazującego na mnożenie. Operatory te nazywane są operatorami dwuargumentowymi, ponieważ każdy z nich ma dwa operandy. W przypadku operatora * prawym operandem jest zmienna liczba2 a lewym operandem zmienna liczba1.Operandy operatora = to wartość wyrażenia liczba1*liczba2 oraz zmienna iloczyn.

5.1 Niektóre wbudowane typy danych w C++

Dane znakowe.

Wartością danej typu znakowego char mogą być pojedyncze litery, cyfry oraz inne znaki.

W pamięci z reguły zajmują 1 bajt.

Liczby całkowite.

·         short int

·         int

·         unsigned int

·         long int

·         unsigned long int

Liczba bajtów zajmowane przez typy zmiennych zależna jest od systemu operacyjnego, a od tego zależy jaką maksymalną wartość może przechowywać zmienna danego typu. Przykładowo zmienna typu short int zajmować będzie najmniej miejsca w pamięci. Przechowywane w niej wartości będą obejmowały mały zakres(np. 0-255), ale to zależy już od systemu operacyjnego bądź kompilatora. Jak sprawdzić ile bajtów zajmuje dany typ pokażę w dalszej części kursu.

Typ unsigned long int oraz unsigned int oznacza dodatnią liczbę całkowitą.

Liczby zmiennoprzecinkowe.

·         float

·         double

·         long double

5.2 Arytmetyka w C++

Poniżej przedstawiam operatory arytmetyczne oraz opisy ich działania:

OPERATOR WYRAŻENIE W C++ WYNIK W C++ OPIS + 2+5 7 Dodawanie - 5-2 3 Odejmownie * 2*5 10 Mnożenie / 7/2 3 Dzielenie całkowite. Wynik z dzielenia całkowitego jest zawsze liczbą całkowitą, część ułamkowa jest po prostu obcinana. / 7/2 3.5 Dzielenie z liczbami zmiennopozycyjnymi % 7%2 1 Dzielenie modulo. Operator dzielenia modulo dostarcza resztę po dzieleniu całkowitym. Używać go można jedynie z liczbami całkowitymi.

6. Operatory relacyjne oraz wprowadzenie do if

Struktura if pozwala na podejmowanie decyzji opartych na prawdzie lub fałszu jakiś warunków.

Struktura ta ma postać:

if (warunek) { instrukcja; instrukcja; instrukcja; itd.; }

Jeśli warunek jest spełniony instrukcje wewnątrz nawiasów klamrowych zostaną wykonane. Jeśli warunek nie będzie spełniony instrukcje te zostaną pominięte. Warunki mogą być formułowane za pomocą operatorów relacyjnych lub operatorów równości, które przedstawiam poniżej:

Operatory równości --------------------------- OPERATOR PRZYKŁAD ZNACZENIE == x==y Porównaj czy x i y są równe != x!=y Sprawdź czy x i y nie są równe Operatory relacyjne --------------------------- OPERATOR PRZYKŁAD ZNACZENIE > x>y Czy x jest większe od y < x<y Czy x jest mniejsze od y >= x>=y Czy x jest większe lub równe y <= x<=y Czy x jest mniejsze lub równe y

Pamiętaj, aby nie mylić operatora przypisania = z operatorem równości ==.

Zasady pierwszeństwa operatorów w C++:

Operatory w wyrażeniach znajdujących się wewnątrz nawiasów są obliczane w pierwszej kolejności. W przypadku zagnieżdżonych nawiasów, operatory w najbardziej wewnętrznej parze obliczane są najpierw.

1.      Dzielenie, mnożenie i dzielenie modulo obliczane są w następnej kolejności.

2.      Następnie wykonywane jest dodawanie i odejmowanie.

3.      Dalej wykonywane są operatory relacyjne(<,>,<=,>=).

4.      Potem operatory równości(== i !=).

5.      Operator przypisania (=).

Spróbuj określić jaki będzie porządek wykonywania działań w poniższych wyrażeniach:

Z=w/x-y+r%q*c;

Z=a*b*c*d/e;

Z=y*x%f-g*c+g;

A teraz czas na zastosowanie tego, co już umiemy. Poniżej przedstawiam malutki programik do analizy.

// Program, który prosi użytkownika o podanie 1 liczby, // a następnie sprawdza czy podana liczba jest parzysta. #include <iostream.h> main() { int liczba; cout<<"Wprowadz liczbe calkowita a powiem Ci czy jest ona liczba parzysta czy nie ?\n"; cin>>liczba; if(liczba%2==0){ cout<<"Ta liczba "<<liczba<<" jest parzysta. "; } if(liczba%2!=0){ cout<<"Ta liczba "<<liczba<<" jest nieparzysta. "; } return 0; }

Wyjaśnienia wymaga linia:

cout<<"Ta liczba "<<liczba<<" jest parzysta. ";

Ta instrukcja używa kaskadowej operacji wstawiania do strumienia. Najpierw wstawiany jest napis "Ta liczba " następnie wstawiana jest wartość zmiennej liczba, a na końcu napis " jest parzysta. ". Dzięki temu nie musimy pisać:

cout<<"Ta liczba "; cout<<liczba; cout<<" jest parzysta. ";

Ćwiczenia

1.      Napisz program, który wczytuje 2 liczby i podaje która jest większa lub mniejsza albo czy są one równe.

2.      Napisz program, który wczytuje 2 liczby i podaje iloraz, iloczyn, sumę i różnicę.

3.      Napisz program który wczytuje dwie liczby całkowite i oblicza pole prostokąta oraz jego obwód.

4.      Napisz program który odczytuje 2 liczby i określa czy pierwsza jest wielokrotnością drugiej.

5.      Zapoznaj się dokładnie z dokumentacją dostarczoną wraz z kompilatorem. Przeczytaj dokładnie fragmenty dotyczące kompilacji oraz łączenia.

 

...
Zgłoś jeśli naruszono regulamin