FANDOM


Kurs C++ Część I


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.

Programowanie w C++, jeśli używać tego języka jak należy, jest trudne, a nawet bardzo trudne. Na szczęście istnieje wiele pomocniczych bibliotek, takich jak STL, Boost, bez których używanie C++, traktowanego jako coś więcej niż rozszerzenie języka C, byłoby prawdziwą drogą przez mękę.

No to zaczynamy

Nie tak prędko, aby rozpocząć swoją przygodę z C++ konieczny jest kompilator. Skąd go wziąć? Opisane jest na stronie Kompilatory C/C++

Aby móc Ci to wz tych innych plików, tak aby stworzyć program w pełni wykonywalny.

Pierwszy program - "Hello world"

Linia ta to pojedyncza instrukcja. Instrukcja ta nakazuje wyświetlenie napisu "Hello World" oraz przeniesienie kursora do nowej linii (co czyni instrukcja endl lub \n. Składa się ona z obiektu strumienia standardowego wyjścia cout(ang. console out), przyłączonego normalnie do ekranu, operatora <<, zwanego operatorem wstawiania do strumienia, napisu "Hello World" oraz średnika ;. Każda instrukcja musi się kończyć średnikiem (jest to tzw. zakończenie instrukcji. ale o tym dalej). Brak średnika na końcu instrukcji powoduje wygenerowanie błędu składniowego. Operator << nazywany jest operatorem wstawiania do strumienia, natomiast napis "Hello World" i nowej linii (endl) 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. Sekwencje "endl" i "\n" oznaczają 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. Cały kod:

#include <iostream>
using namespace std;
int main() {
cout<<"Hello world"<<endl;
return 0;
}

Zmienne i arytmetyka w C++

Na początek mały programik. Dobrym zwyczajem jest deklarowanie zmiennych przed funkcją main. Prawie w każdym programie zmienne będą deklarowane przed funkcją main.

// Program, który prosi użytkownika o podanie
// 2 liczb, a następnie je mnoży
// i wyświetla wynik na ekranie.

#include <iostream>

using namespace std;
int liczba1 = 0,liczba2 = 0,iloczyn = 0;
int main()
{

  cout<<"Wprowadź pierwszą liczbę całkowitą" << endl;
  cin>>liczba1;
  cout<<"Wprowadz druga liczbe całkowitą" << endl;
  cin>>liczba2;
  iloczyn=liczba1*liczba2;
  cout<<iloczyn;

}

Jeśli chodzi o linie :

// Program, który prosi użytkownika
// o podanie 2 liczb, a następnie je mnoży
// i wyświetla wynik na ekranie.

#include <iostream>

using namespace std;

int 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.

Niektóre wbudowane typy danych w C++

Dane znakowe.

  • char
  • string

Wartością danej typu znakowego char mogą być pojedyncze litery, cyfry oraz inne znaki. Może to być tylko jeden znak (dla wielu znaków patrz typ string). W pamięci z reguły zajmują 1 bajt. Z kolei typ znakowy string może zawierać wiele znaków.

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

Arytmetyka w C++

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

OPERATOR ARYTMETYCZNY WYRAŻENIE ALGEBRAICZNE WYRAŻENIE W C++ WYNIK W C++ OPIS
+ 2+5 2+5 7 Dodawanie
- 5-2 5-2 3 Odejmowanie
* 2x5 2*5 10 Mnożenie
/ 7/2 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 7.0/2 3.5 Dzielenie z liczbami zmiennopozycyjnymi.
% 7 mod 2 7%2 1 Dzielenie modulo. Operator dzielenia modulo dostarcza resztę po dzieleniu całkowitym. Używać go można jedynie z liczbami całkowitymi.

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:


OperatorPrzykładZnaczenie
==x==ytrue jeśli zmienne x i y są sobie równe
!=x!=ytrue jeśli zmienne x i y nie są sobie równe
>x>ytrue jeśli x jest większy od y
<x<ytrue jeśli x jest mniejszy od y
>=x>=ytrue jeśli x jest większy lub równy y
<=x<=ytrue jeśli x jest mniejszy lub równy y


Pamiętaj, aby nie mylić operatora przypisania = z operatorem równości ==. Zasady pierwszeństwa operatorów w C++:
1. 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.

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

3. Następnie wykonywane jest dodawanie i odejmowanie .

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

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

6. 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>

using namespace std;
long liczba=0;

int main()
{
  cout<<"Wprowadz liczbe calkowita a";
  cout<<" powiem Ci czy jest ona liczba parzysta czy nie ?"<<endl;
  cin>>liczba;
  cout<<"Liczba "<<liczba<<" jest "<<(liczba%2==0?"parzysta":"nieparzysta")<<"."<<endl;
  }

  return 0;
}

Wyjaśnienia wymagają linie:

cout<<"Liczba "<<liczba<<" jest "<<(liczba%2==0?"parzysta":"nieparzysta")<<"."<<endl;

i

cout<<" powiem Ci czy jest ona liczba parzysta czy nie ?"<<endl;

Te instrukcje używają kaskadowej operacji wstawiania do strumienia. Najpierw wstawiany jest napis "Liczba " następnie wstawiana jest wartość zmiennej liczba. Dzięki temu nie musimy pisać:

cout<<"Liczba ";
cout<<liczba;
cout<<" jest ";
cout<<(liczba%2==0?"parzysta":"nieparzysta");
cout<<".";
cout<<endl;

Z kolei pierwsza instrukcja, używa operatora warunkowego (warunek?wartość1:wartość2). Dzięki temu nie musimy pisać:

cout<<"Liczba "<<liczba<<" jest ";
if (liczba%2==0) cout<<"parzysta";
if (liczba%2!=0) cout<<"nieparzysta";
cout<<"."<<endl;

Ad blocker interference detected!


Wikia is a free-to-use site that makes money from advertising. We have a modified experience for viewers using ad blockers

Wikia is not accessible if you’ve made further modifications. Remove the custom ad blocker rule(s) and the page will load as expected.

Więcej z Fandomu

Losowa wiki