• Forum

  • Regulamin

  • Szukaj

  • Użytkownicy

  • Kalendarz

  • Pomoc

  • Kontakt

  •  
Aktualny czas: 01-06-2025, 3:46 Witaj! (LogowanieRejestracja)
Witamy na WebElite.pl - Forum Informatycznym!

Aktualnie przeglądasz forum jako Gość, przez co Twój dostęp jest w pewnym stopniu ograniczony. Zarejestruj się a uzyskasz dostęp do publikacji postów oraz wielu innych ciekawych funkcji niedostępnych dla niezarejestrowanych użytkowników. Nie zastanawiaj się dłużej i dołącz do naszej społeczności już dziś!

Pozdrawiamy i życzymy mile spędzonego czasu na forum.
facebooktwitteryoutube
damian5
Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
[C++] Nauka C++ (krótki kurs - podstawy)
Autor Wiadomość
damian5 Offline
Newbie
*

Liczba postów: 2
Reputacja: 0
Post: #1
[C++] Nauka C++ (krótki kurs - podstawy)
Postaram sie wam w sposób łatwy przystepny ..w skróconej formie wyłożyć podstawy programowania C++.
Lekcje te są zlepkiem materiałów jakie znalazłem w sieci i fachowej literaturze, Moja rola ograniczyła sie do zredagowania i złożenia wszytskiego w jedną zrozumiałą (przynajmniej dla mnie) całość.

C++ od podstaw.
Najpopularniejsze obecnie języki to rodzina C/C++, Object Pascal (stosowany w środowisku Delphi) oraz JAVA. Najwięcej aplikacji komputerowych powstaje jednak wciąż w C/C++. Żeby być precyzyjnym, będziemy uczyć się samego C++, czyli obiektowej odmiany języka C.

Narzędzia
Program to nic innego jak ciąg rozkazów dla komputera. Rozkazy te wyrażamy w języku programowania, w ten sposób powstaje tak zwany kod źródłowy. Niestety, komputer nie jest w stanie bezpośrednio go zrozumieć. Potrzebujemy aplikacji, która przetłumaczy kod zapisany w C++ na kod zrozumiały dla procesora. Aplikacja taka nazywa się kompilatorem, natomiast proces tłumaczenia - kompilacją. W procesie tym nie powstaje jednak jeszcze program, który moglibyśmy uruchomić z poziomu systemu operacyjnego, ale jedynie plik pośredni. Plik ten musi zostać dopiero połączony z dodatkowymi modułami umożliwiającymi współpracę z danym systemem operacyjnym i dopiero po wykonaniu tej operacji powstaje plik wykonywalny, który można uruchamiać bez wykonywania żadnych dodatkowych zabiegów. Proces łączenia nazywamy inaczej linkowaniem (z ang. link - łączyć), a program dokonujący tego zabiegu - linkerem.
(patrz obrazek na dole tematu)

Współczesne narzędzia programistyczne najczęściej wykonują oba zadania (kompilację i łączenie) automatycznie, bez udziału programisty. Zazwyczaj wystarczy wydanie polecenia, aby otrzymać plik wykonywalny. Należy jednak pamiętać, że są to dwa odrębne zadania. Niekiedy niezbędne jest ręczne wykonanie linkowania, na przykład w sytuacji, kiedy musimy dołączyć do aplikacji dodatkowe, niestandardowe moduły. W niniejszym kursie korzystać będziemy z kompilatora Borland C++ Compiler, który można pobrać z witryny
Kod:
http://www.borland.pl
Nic nie stoi jednak na przeszkodzie, aby użyć dowolnego innego kompilatora C++, zarówno pod Windows, Linuksem, jak i dowolnym innym systemem operacyjnym.
Osobiscie chwale sobie w pełni darmowy (w całości po polsku) kompilator języka C++ dla Windows, zgodny z GCC (GNU Compiler Collection). Aplikacja ma zintegrowane graficzne środowisko programistyczne: edytor kodu źródłowego z podświetlaniem składni, debuger oraz edytor zasobówDev-C++ version 4.9.8.5
Jest naprawde świetny super prosty w obsłudze i to co najwazniejsze.. wszystko w jednym.
Każdy kto miał problem z Borland C++ ,napewno z tym kompilatorem napewno da sobie rade.

Po zainstalowaniu środowiska C++ Compiler lub C++ Builder warto dodać do zmiennej systemowej PATH ścieżkę dostępu do pliku bcc32.exe. Na przykład: C:\Program Files \Borland\CBuilder6\Bin. Dzięki temu podczas kompilacji nie będziemy musieli podawać pełnej ścieżki do pliku kompilatora.

Najprostszy program
Program w C+ + zawiera polecenia, które mają być wykonywane przez procesor, oraz dane. Dane przechowywane są w strukturach, które nazywamy zmiennymi, polecenia nazywamy natomiast instrukcjami. Instrukcje grupowane są z kolei w funkcje. Są to wyróżnione fragmenty kodu przeznaczone do wykonania konkretnych zadań. Funkcjom można przekazywać parametry, mogą też one zwracać wyniki.
Każdy program musi zawierać funkcję główną o nazwie main. Od niej rozpoczyna się wykonywanie kodu. Struktura najprostszego programu jest następująca:

Kod PHP:
int main ()
{

Mamy tutaj zawarte elementy:
main - nazwa funkcji,
nawiasy okrągłe - oznaczają, że mamy do czynienia z funkcją,
nawiasy klamrowe - pomiędzy nimi wpisujemy treść funkcji, instrukcje, które ma wykonywać,
int - typ wyniku zwracanego
przez funkcję, int oznacza liczbę
całkowitą.
Funkcja main zawsze powinna być zadeklarowana jako int main().
Zagadką jest zapewne: co robi ten program? Odpowiedź jest bardzo prosta, otóż nie robi on nic. Skoro pomiędzy nawiasami klamrowymi zawieramy instrukcje do wykonania, a w powyższym przykładzie pomiędzy nawiasami klamrowymi nie ma nic, oznacza to, że również program nie robi nic. Niemniej jest to poprawny kod w C+ +, który można skompilować i otrzymać plik wykonywalny. Wykonajmy to zadanie, co pozwoli nam zapoznać się z kompilatorem C++Compiler.

1. Krok pierwszy to utworzenie pliku tekstowego z kodem programu. Należy wykorzystać w tym celu dowolny edytor tekstowy. W przypadku Windows można użyć systemowego Notatnika, w którym wpisujemy podany wyżej kod programu.

2. Zapisujemy plik na dysku, nadając mu dowolną nazwę z rozszerzeniem .cpp Na przykład program.cpp

3. W wierszu poleceń wpisujemy komendę bcc32 program.cpp.
Jeśli nie wpisaliśmy do zmiennej systemowej PATH ścieżki dostępu do pliku bcc32.exe nazwę pliku kompilatora (bcc32) musimy poprzedzić ścieżką :

D:\!>bcc program.cpp
D:\!>"h:\program Files\Borland\Cbulider6\Bin\Bcc32.exe" pr..
Borland C++ 5.6 for Win32 Copyright <c> 1993, 2002 Borland
program.cpp:
Turbo Inceremental Link 5.60 Copyright <c> 1997-2002 Borland


Widoczne komunikaty potwierdzają, że najpierw został wywołany kompilator (Borland C++), a następnie linker (Turbo Incremental Linker)
Ostatecznie w bieżącym katalogu powstał plik program.exe Możemy go uruchomić i przekonać się, że faktycznie nie robi on nic:

D:\!>program .exe
D:\!>_

Niemniej plik wykonywalny powstał i jest to samodzielna aplikacja.



Wynik kompilacji
Kiedy zajrzymy do katalogu, w którym dokonaliśmy kompilacji, znajdziemy w nim w sumie cztery pliki :
Program.cpp
Program.exe
Program.obj
Program.tds

Dwa z nich są nam dobrze znane, to program.cpp z kodem źródłowym oraz program.exe z kodem wynikowym. Do czego zatem służą pozostałe? Plik z rozszerzeniem .obj to najlepszy dowód na to, że proces tworzenia aplikacji odbywał się w dwóch etapach. Plik ten powstał w wyniku działania kompilatora i zawiera program przekształcony z wyrażeń języka C na język maszynowy procesora (oraz dodatkowe informacje dla linkera). Nie zawiera jednak modułów niezbędnych do uruchomiania tej aplikacji w danym systemie operacyjnym. Dopiero ten plik poddany został procesowi łączenia, w wyniku czego powstał plik wykonywalny EXE. Plik program .tds zawiera informacje dla debugera, czyli programu pozwalającego na prześledzenie poszczególnych etapów działania gotowej aplikacji. Jest więc przydatny przy wyszukiwaniu błędów w programach. Niemniej obecnie nie jest nam do niczego potrzebny i możemy go skasować.

Prawdziwa aplikacja
Program, który nic nie robi, choć pozwala na poznanie budowy funkcji w C++, nie jest zbyt ciekawy. Spróbujmy więc wykonać inny przykład. Tym razem zadaniem aplikacji będzie wyświetlenie dowolnego napisu na ekranie. Kod wykonujący taką funkcję wygląda następująco:

Kod PHP:
#include <iostream.h>
int main ()
{
cout << "Moj drugi program";


Widzimy, że pojawiły się tu nowe, niezbyt zrozumiale w pierwszej chwili konstrukcje. Analizę zacznijmy od wnętrza funkcji main. Znajdująca się tam linia cout << "Moj drugi program". I ona jest instrukcja wyświetlająca na konsoli napis:

D:\!>program .exe
Mój drugi program
D:\!>_

Co oznaczają elementy tej instrukcji? Otóż cout reprezentuje tak zwany standardowy strumień wyjściowy. Z pojęciem strumieni zapoznamy się dokładniej w dalszej części kursu, w tej chwili ważne jest dla nas to, że domyślnie oznacza to ekran konsoli. << to operator, który oznacza skierowanie do strumienia. W cudzysłowach znajduje się tak zwana stała znakowa, czyli napis. Jeśli gdziekolwiek w programie chcemy umieścić napis, który na przykład będzie wyświetlany na ekranie czy zostanie przypisany do zmiennej, koniecznie musimy ująć go w znaki cudzysłowu.
Zatem całe wyrażenie cout < < "Mój drugi program"; oznacza dokładnie: skieruj do standardowego strumienia wyjściowego (czyli na ekran) ciąg znaków Mój drugi program. Efektem jest wyświetlenie tego ciągu na ekranie. Zwróćmy uwagę na znak średnika. Jest on niezbędny, gdyż pozwala kompilatorowi na rozpoznanie końca instrukcji. Wyjaśnić musimy znaczenie pierwszej linii kodu #include <iostream.h> . Jest to dyrektywa, włączająca do naszego programu plik iostream.h Pliki z rozszerzeniem .h nazywane są nagłówkowymi (ang. header). Zawierają informacje potrzebne do kompilacji. W pliku iostream.h znajduje się, między innymi, deklaracja strumienia cout, dzięki czemu kompilator wie, co to jest cout i jak z niego korzystać.

Polskie znaki
Kiedy po kompilacji uruchomimy program wypisujący na konsoli w środowisku Windows tekst zawierający polskie znaki diakrytyczne, spotka nas niemiła niespodzianka. Tekst będzie zawierał dziwne krzaczki. Problem ten wynika z faktu, że kod programu został zapisany w stronie kodowej 1250. Tymczasem wiersz poleceń Windows
wykorzystuje do wyświetlenia znaków stronę kodową 852.
Mamy dwie możliwości rozwiązania tego problemu: albo zapiszemy kod źródłowy programu w kodowaniu 852, co będzie wymagało użycia edytora obsługującego ten standard, albo zmienimy stronę kodową konsoli (krok 1 trzeba powtórzyć dla każdego nowego okna, po jego zamknięciu strona kodowa 825 zostanie automatycznie przywrócona). Zmianę strony kodowej wykonujemy w dwóch krokach:

1. Wykonujemy polecenie chcp w postaci:

D:\!>chcp 1250
Aktywna strona kodowa :1250
D:\!>_

2. Zmieniamy czcionkę ekranową. Z menu systemowego okna konsoli wybieramy pozycję "Właściwości" -> "Czcionka". Następnie wybieramy czcionkę true-type: Tt Lucida Console.
Od tej chwili polskie litery będą wyświetlane poprawnie.



Zmienne:


Zmienna to jedno z podstawowych pojęć związanych z programowaniem. Zmienne pozwalają na przechowywanie w programie danych. Inaczej mówiąc, są to miejsca w pamięci komputera, w których przechowujemy dane potrzebne do działania aplikacji.
Każda zmienna ma swój typ, który określa, jakiego rodzaju dane może ona przechowywać. To proste. Jeśli chcemy przechowywać liczby całkowite, musimy użyć zmiennej o typie pozwalającym na przypisanie jej liczb całkowitych, jeśli chcemy przechowywać liczby ułamkowe, powinniśmy użyć zmiennej pozwalającej na przechowywanie liczb ułamkowych, i tak dalej.
Typy występujące w C+ + możemy podzielić na następujące główne rodzaje:

1. typy arytmetyczne,
- znakowe
- całkowite
- zmiennopozycyjne

2. typ logiczny,

3. typy specjalne,
- typ void
- wskaźnikowe
- referencyjne

Każda zmienna, zanim zaczniemy z niej korzystać, musi zostać wcześniej zadeklarowana. Deklaracja polega na podaniu typu oraz nazwy zmiennej. Spójrzmy na fragment kodu:

Kod PHP:
int main ()
{
int liczba;


Została tu zadeklarowana zmienna o nazwie liczba, której typem jest int. Oznacza to, że będzie ona mogła przechowywać liczby całkowite. Deklaracja kończy się znakiem średnika, tak jak każda inna instrukcja programu. Raz zadeklarowaną zmienną możemy używać do woli w programie, w szczególności możemy przypisać do niej jakąś wartość. Przypisania dokonujemy, wykorzystując znak równości.

Kod PHP:
int main ()
{
int liczba;
liczba 100;


Takie pierwsze przypisanie wartości nazywamy zainicjowaniem zmiennej.


Inicjowanie zmiennych:

Pierwsze przypisanie wartości do zmiennej nazywamy jej inicjacją. Takie przypisanie może odbywać się zarówno po deklaracji, jak i w jej trakcie. Np.:

Kod PHP:
int main()
{
int liczba;
liczba 100;
int drugaLiczba 200;


W linii pierwszej zadeklarowana została zmienna liczba typu int.
W linii drugiej zmiennej tej została przypisana wartość całkowita 100. Ten sposób znany jest nam już z poprzednich przykładów.
W linii trzeciej natomiast jednocześnie została dokonana deklaracja zmiennej (o nazwie drugaLiczba) oraz przypisanie tej zmiennej wartości 200. Oba sposoby zainicjowania zmiennych są równoprawne i możemy stosować ten, który jest dla nas wygodniejszy.


Ale wróćmy do lekcji.

Korzystając z fragmentu kodu....

Kod PHP:
int main ()
{
int liczba;
liczba 100;

.... jak przekonać się, że po takim przypisaniu zmienna liczba faktycznie przyjęta wartość 100?
Najprościej będzie wyświetlić jej wartość na ekranie. Sposobem wyświetlania napisu zajmowaliśmy się w poprzedniej lekcji. Wykorzystywaliśmy w tym celu standardowy strumień wyjściowy cout oraz operator <<

Nie inaczej będzie i w obecnym przypadku:

Kod PHP:
#include <iosteram.h>

int main ()
{
int liczba;
liczba 100;
cout << liczba;


Instrukcję należy w tym wypadku rozumieć jako wydanie polecenia: wyślij do standardowego strumienia wyjściowego zawartość zmiennej liczba. Innymi słowy: wyświetl na ekranie jej zawartość. Przekonajmy się, że faktycznie wykonanie tego programu spowoduje ukazanie się na ekranie liczby 100.

Zapisujemy kod w pliku program.cpp, a następnie dokonujemy kompilacji, wykonując polecenie bcc.program.cpp
Kiedy proces kompilacji zakończy się, uruchamiamy powstały plik program.exe. Wartość zmiennej faktycznie została wyświetlona


D:\a>bcc program.cpp
D:\a>"c:\program Files\Borland\Cbulider6\Bin\Bcc32.exe" pr..
Borland C++ 5.6 for Win32 Copyright <c> 1993, 2002 Borland
program.cpp:
Turbo Inceremental Link 5.60 Copyright <c> 1997-2002 Borland

D:\a>program.exe
100
D:\a>_




Zmienne arytmetyczne i logiczne

Czas na krótkie omówienie występujących w C++ podstawowych typów danych arytmetycznych i logicznych. Zebrane są one w tabeli (patrz załącznik do lekcji).
Standard języka C++ nie definiuje zakresów wartości, jakie mogą być reprezentowane przez poszczególne typy. Przedstawione w ostatniej kolumnie tabeli zakresy są prawidłowe dla większości współczesnych 32 - bitowych kompilatorów, nie można jednak zakładać, że będzie tak w przypadku każdego systemu i każdego wykorzystywanego kompilatora.
W razie wątpliwości należy zawsze sprawdzić te dane w dokumentacji wykorzystywanego narzędzia programistycznego.
Typ znakowy ma nazwę char i służy do reprezentacji znaków, czyli liter, cyfr, znaków przestankowych, ogólnie zbioru znaków ASCII. Zmienna typu char zajmuje w pamięci jeden bajt, czyli 8 bitów. Za jej pomocą można zatem przedstawić 256 różnych znaków (bo 2 do ósmej potegi = 256). Jeśli chcemy przypisać do niej jakiś znak , musimy ująć go w znaki apostrofu

Kod PHP:
#include <iosteram.h>

int main ()
{
char zmienna 'a';
cout << zmienna;

Typ ten zaliczyliśmy do typów arytmetycznych, gdyż zmienne takie możemy traktować jako liczby. Na przykład znak a ma kod ASCII 97, zatem zmienna typu char, zawierająca ten znak, w rzeczywistości będzie przechowywała liczbę 97. Wykorzystywany już we wcześniejszych przykładach typ int służy do przechowywania liczb całkowitych. Występuje on w kilku odmianach widocznych w tabeli Wybrane typy danych w C+ +. Typy te tworzone są w prosty sposób: jeśli do słowa int dodamy short (ang. krótki), otrzymamy typ pozwalający na reprezentację mniejszego zakresu liczb (patrz ostatnia kolumna tabeli w załaczniku), jeśli natomiast dodamy słowo long (ang. długi), otrzymamy typ pozwalający na reprezentację większego zakresu liczb. Oprócz tego pojawiają się słowa signed i unsi-gned. Określają one, czy dany typ całkowity będzie reprezentował tylko dodatnie (unsigned) czy też dodatnie i ujemne (signed), innymi słowy, czy będą to liczby ze znakiem (+/-) czy bez znaku.
Do reprezentacji liczb zmiennoprzecinkowych (inaczej zmiennopozycyjnych, czyli takich z częścią ułamkową) służą typy float, double i long double. Pozwalają one również na przedstawienie najszerszego zakresu wartości. Mówimy, że typ float pozwala na zapis liczb z pojedynczą, double z podwójną, a long double z rozszerzoną (wysoką) precyzją. Istnieją dwa sposoby przypisywania wartości takim zmiennym.

Pierwszy sposób:

Kod PHP:
int main()
{
float liczba 1.4;

Część ułamkową przedstawiamy po kropce dziesiętnej (kropce, a nie przecinku, jak uczono nas w szkole).



Sposób drugi:

Kod PHP:
int main()
{
float drugaLiczba 1.1e1;

To zapis wykładniczy 1.1e1 oznacza 1,1*10 ^1, czyli wartość 11. O tym, ze zmienna drugaLiczba faktycznie zawiera wartość 11, można się przekonać , dodając linie kodu cout<< drugaLiczba;

Kod PHP:
#include <iostream.h> 

int main()
{
float liczba 1.4
float drugaLiczba 1.1e1;
cout << drugaLiczba;


Nie możemy oczywiście zapomnieć o dodaniu na początek programu linii
#include <iostream.h> , gdyż inaczej kompilator nie rozpozna strumienia cout.
Po kompilacji i uruchomieniu programu na ekranie zobaczymy oczekiwany wynik:

D:\a>bcc program.cpp
D:\a>"c:\program Files\Borland\Cbulider6\Bin\Bcc32.exe" program.cpp
Borland C++ 5.6 for Win32 Copyright <c> 1993, 2002 Borland
program.cpp:
Warning W8004 program.cpp 8: 'liczba' is assigned a value that is never used in function main <>
Turbo Inceremental Link 5.60 Copyright <c> 1997-2002 Borland
D:\a>program.exe
11
D:\a>_

Nie należy się przejmować wyświetlonym ostrzeżeniem kompilatora (ang. warning), który po prostu przypomina nam, że zadeklarowaliśmy zmienną liczba, z której potem wcale nie skorzystaliśmy. Jednak mi chodziło jedynie o zademnonstrowanie, że zmienna drugaLiczba faktycznie zawiera wartość 11. Wszystko zatem jest w porzadku.


Czy można pominąć skrót int ??

Niektóre z typów arytmetycznych przedstawiających liczby całkowite można zapisywać w postaci skróconej, pomijając słowo int. Na przykład zamiast pisać short int wystarczy samo short. Podobnie zamiast long int wystarczy samo long. Poprawne zatem są nazwy: short, unsigned short, signed short, long, unsigned long, signed long . Warto również zauważyć, że typy signed int to funkcjonalnie to samo co int. Taka sama zależność występuje w przypadku short i long.


Znak ze znakiem ?
Typ całkowity występuje w wersji ze znakiem (signed) i bez znaku (unsigned). To specjalnie nie dziwi, znamy przecież liczby dodatnie i ujemne. Jak jednak wytłumaczyć istnienie typów signed char i unsigned char? Czy znaki (litery, znaki przestankowe) mogą być dodatnie lub ujemne?
Oczywiście nie.
Jednak, typ char zaliczamy do typów arytmetycznych, ponieważ każda literę można interpretować liczbowo (litera a w kodzie ASCII ma na przykład wartość 97 dziesiętnie). Stad też istnienie typów signed char i unsigned char. Określają one, w jaki sposób traktować wartość zapisaną w zmiennej takiego typu, kiedy interpretujemy ją jako liczbę, a nie znak alfanumeryczny


Stałe i instrukcje sterujące



---------------------------------------------------------------------------------
Stałe

---------------------------------------------------------------------------------
Mogłem je opisac w poprzedniej lekcji, ponieważ mają one dużo wspólnego z zmiennymi. Jesli przerobiliscie uważnie lekcje C++ nr 2 "zmienne", to nie bedziecie mieli problemu. Krótko:
Stałe są podobne do zmiennych tylko z tą różnicą, że po przypisaniu im wartości początkowej już nigdy nie będziemy mogli jej zmienić. Podam wam taki przykład, załóżmy, że piszecie programik i definiujecie pewną zmienną i, przypisujecie jej wartość, ale nie chcecie, aby uległa ona zmianie. Następnie wykonujecie różne operacje z tą zmienną i przez przypadek zmienia się jej wartość i może mieć to wielkie szkody, ponieważ kompilator nie wyrzuci wam błędu, a wy nie wiecie co się stało. W takich przypadkach na pomoc przychodzą stałe.
Stałe definiujemy przydomkiem const, a więc wygląda to tak:


Kod PHP:
#include <iostream.h> 
#include <conio.h> 

main() 

clrscr(); 

const 
i=5
i++; 
cout<<"Stała i= "<; 
getch(); 


clrscr - funkcja czyszcząca ekran
const i=5 - stała i

UWAGA!!! Nie można zmienić wartości stałej.

--------------------------------------------------------------------------------
Instrukcje sterujące

--------------------------------------------------------------------------------
Instrukcje sterujące są podstawowymi formami każdego programu. Poniżej macie opisane poszczególne instrukcje i pętle:


1. If
Instrukcja if posiada dwie formy:

a) if( zawartość ) - 1 instrukcja

b) if( zawartość ) - 1 instrukcja
else if( zawartość ) - 2 instrukcja
Kod:
#include <iostream.h>
#include <conio.h>

main()
{
clrscr();
int i;
cout<<"Ile masz lat?";
cin>> i;
if(i>17 & i<30)
{
cout<<"Masz prawie tyle lat co ja!";
}
else if(i>30)
{
cout<<"Tatusku ... jestes starszy odemnie!";
}

else if(i<17)
{
cout<<"Mlody jestes - pobaw sie z swoimi kolegami";
}


getch();
}
If czytamy jako jeżeli, a else w przeciwnym wypadku.
Pod spodem podam wam krótki przykład zastosowania tej instrukcji w programie:




cin>> i - Funkcja Cin>> pobiera klawisz z klawiatury do zmiennej i
if(i>17 & i<30) - Czytamy: jeżeli i jest większe od 17, a zarówno (tutaj używamy operatora apersandy &, o których napisze w kolejnym rozdziale) mniejsze od 30 to wypisz na ekran "Masz prawie tyle lat co ja!"
else if(i>30) i else if(i<17) - to chyba już sami rozumiecie

To tyle co do If, następną instrukcją sterującą będzie...


2. While

Pętla while tłumacząc na język polski oznacza dopóki, a forma tej instrukcji wygląda tak:

while(zawartość) 1 instrukcja

Co tu dużo pisać najlepiej pokażę wam to na przykładzie:


Kod PHP:
#include <iostream.h> 
#include <conio.h> 

main() 

clrscr(); 

int i
cout<<" Ile razy mam wypisać na ekranie wyraz \"Forum DVB\"? "//(1)
cin >>i

//tutaj znajduje sie petla 
while(i//(2) 

cout<<"Forum DVB\n"
i-=1


getch(); 


(1) - \" \" dzięki temu na ekranie zobaczymy " "
(2) - Po podaniu do zmiennej i wartości pętla while wypisuje "Forum DVB" i od i odejmuje 1

Mam nadzieję, że wszystko jest jasne.


3. Do...while

Pętla ta tłumacząc na polski oznacza rób...dopóki jakaś czynność nie zostanie wykonana:

do 1 instrukcja while(zawartość);

Ten sam przykład, który był pokazany dla while pokażę wam teraz na pętli do...while:


Kod PHP:
#include <iostream.h> 
#include <conio.h> 

main() 

clrscr(); 

int i
cout<<" Ile razy mam wypisać na ekranie wyraz \"C++\"? "//(1) 
cin >>i

do 
//(1) 

cout<<"C++\n"
i-=1
}while(
i); 

getch(); 

(1) - Od pierwszej klamry do drugiej klamry będzie wykonywana czynność dopóki i będzie równe 0

W sumie mogłem przedstawić wam to lepiej, ale myślę, że nie ma sensu zawalać wam głowy przeróżnymi przykładami.


4. For

Pętla for ma formę trochę inną niż inne, ale pokaże wam ją za pomocą zmiennej i, a więc:

for(i=wartość ; i < dowolna liczba ; i+= dowolna liczba )
{
zawartość wykonywana
}

Pętle tą czytamy tak :
Zmienna i jest równa 'liczba1', jeżeli i jest mniejsze od 'liczba2' to dodaj do niej 'liczba3' i po każdym dodaniu niech wykonuje jakąś czynność 'zawartość wykonywana'.

I jak zwykle pokażę wam to na przykładzie:


Kod PHP:
#include <iostream.h> 
#include <conio.h> 

main() 

clrscr(); 

for(
int i=0i<25i++) //(1) 

cout<<"\n C++ "<} 

getch(); 

(1) - Jak widzisz tutaj zdefiniowałem zmienną i w biegu czyli w pętli, a
zarazem przypisałem jej wartość.

W tym przykładzie nie jest tak jak w poprzednich, że na końcu zmienna na której były wykonywane czynności wynosiła 0, a wręcz przeciwnie czyli w naszym przypadku wynosi ona 24. Oczywiście można by zrobić na tych wszystkich przykładach, że zmienna wynosiłaby 0 lub 24, ale ja chciałem wam przedstawić wszystkie możliwości.

5. Switch

Switch jest moją ulubioną instrukcją sterującą, ponieważ ma ona bardzo prostą budowę i za jej pomocą przeważnie pisze menu, a więc lepiej skup się. A oto standardowa forma:

Kod PHP:
switch(zawartość

case 
1_warunek
1 instrukcja 
break; //(1) 
case 2_warunek
2 instrukcja 
break; 
default: 
3 instrukcja 
break; 


(1) - Break oznacza przerwanie danej instrukcji, a więc lepiej o niej nie zapomnieć.
I już ostatni przykład w rozdziale "Instrukcje sterujące", ale zastosuje w nim etykiety:

Kod PHP:
#include <iostream.h> 
#include <conio.h> 

main() 


poczatek//(1) 
clrscr(); 

char menu
cout<<" Którą opcję wybierasz?"
cout<<"\n 1. Gra"
cout<<"\n 2. Autor"
cout<<"\n 3. Koniec\n"
blad//(2) 
cin>>menu

switch(
menu

case 
'1'

clrscr(); 
cout<<" GRAMY! "
getch(); 
goto 
poczatek//(3) 
break; 

case 
'2'

clrscr(); 
cout<<" AUTOR! "
getch(); 
goto 
poczatek
break; 

case 
'3'

clrscr(); 
goto 
koniec
break; 

default: 

cout<<"Błędny numer. Podaj jeszcze raz..."
goto 
blad
break; 



koniec
cout<<" KONIEC!\n Naciśnij dowolny klawisz... "
getch(); 


(1) - Jak zauważyliscie wyraz ten ma na końcu ":", który oznacza, że od tej pory zaczyna się etykieta o nazwie "poczatek".
(2) - Tutaj znajduje się kolejna etykieta, która nazywa się "blad".
(3) - Poleceniem "goto" przechodzimy do żądanej etykiety, czyli w tym przypadku "poczatek".

Jak widzicie instrukcja switch wcale nie jest taka trudna, dlatego też pozwoliłem sobie na małą wygodę i zastosowałem etykiety. Pomyślałem, że nie ma sensu przeznaczać im osobnego rozdziału, a z tego co wiem to i tak nie cieszą się one sławą wśród programistów, ale są przydatne.


Operatory


Słowo operatory ma szerokie pojęcie, ponieważ dzielimy je na kilka grup, Ponieważ jest ich dużo, to opisze w tym rozdziale tylko te które ogólnie nam sie przydadzą.
Poniżej macie kilka podstawowych operatorów służących do obliczeń arytmetycznych:

+ - dodawanie
- - odejmowanie
* - mnożenie
/ - dzielenie

W poprzednich rozdziałach często używałem operatory + i -, ale teraz bardziej zwrócę na nie uwagę, a więc poniższy program przedstawia różne operacje arytmetyczne:

Kod PHP:
#include <iostream.h> 
#include <conio.h> 

main() 

clrscr(); //funkcja czyszcząca ekran 

int a=5
int b=5
int c=5

cout<<"a+b="<cout<<"\na-b="<cout<<"\n(a*b)/c="<<(a*b)/c//(1) 
cout<<"\n(a*b)-c+(a+b+c-a)+b="<<(a*b)-c+(a+b+c-a)+b//hehe 

getch(); 

(1) - Jak widzicie można także zastosowywać nawiasy

Jak nie wierzcie w obliczone działania to sami sprawdzcie.

Bardzo ważnymi operatorami są także operatory porównania, czyli:
< - mniejsze
<= - mniejsze lub równe
> - większe
>= - większe lub równe
== - równe
!= - nie równe, różne

Chciałem zwrócić uwagę, że aby porównać dwie wartości używamy "==", a nie "=", ponieważ "=" służy do przypisania wartości. Jeżeli pisalibyście taki przykład:

...
if(i=5)
...

to kompilator wyrzuciłby wam błąd, ponieważ twierdzi, że się pomyliłeś i
powinieneś napisać tak:

...
if(i==5)
...

I pod spodem obiecana tabela z niektórymi operatorami:

* mnożenie
/ dzielenie
% modulo
+ dodawanie
- odejmownie
++ post inkrementacja
-- post dekrementacja
<< przesunięcie w lewo
>> przesunięcie w prawo
< mniejsze
<= mniejsze mniejsze lub równe
> większe
>= większe lub równe <
== równe
!= rózne, nie równe
= przypisanie
*= mnożenie i przypisanie
/= dzielenie i przypisanie
%= modulo i przypisanie
+= dodawanie i przypisanie
-= odejmowanie i przypisanie
<<= przesunięcie w lewo i przypisanie
>>= przesunięcie w prawo i przypisanie

----------------------------------------------------------------------------------------------------------------------------------

Funkcje

Teraz przyszła pora na funkcje.
Zdarzało wam się kiedyś, że gdy piszecie program powtarza się w nim kilka razy jakieś tam długie operacje. Aby uniknąć tego typu przypadków można użyć funkcji, czyli kilka lini tekstu zastępujemy jednym krótkim wyrazem.
Najlepiej pokaże wam to na przykładzie:

Kod PHP:
#include <iostream.h> 
#include <conio.h> 

void funkcja() //tutaj definiujemy i deklarujemy funkcje 
//wywołanie funkcji 


cout<<"\nTutaj jest tekst 1"
cout<<"\nTutaj jest tekst 2"
cout<<"\nTutaj jest tekst 3"
cout<<"\nTutaj jest tekst 4"
cout<<"\nTutaj jest tekst 5"
cout<<"\nTutaj jest tekst 6"


main() 

clrscr(); 

cout<<"Zamiast za każdym razem powtarzać kilka zdań możemy to zrobić za pomocą jednego wyrazu funkcja, np.:"
getch(); 
funkcja(); 

cout<<"\n Teraz znowu nam się zachciało:"
getch(); 
funkcja(); //kolejne wywołanie funkcji 

getch(); 


Jak widzisz funkcja zaczyna się od wyrazu void i potem nazwa. Void oznacza, że funkcja nic nie zwraca, czyli jest pusta. Teraz pokażę wam funkcję typu int:

#include <iostream.h>
#include <conio.h>

int ile; //obiekt globalny typu int

void napis(int ile) //(1)
{
for(int i=0; i {
cout<<"\nC++";
}
}
main()
{
clrscr();

cout<<"Ile razy na ekranie mam wypisać napis \"C++\" ? ";
cin>>ile; //pobiera znak z klawiatury

napis(ile); //wypisuje

cout<<"\n\nA teraz ja sobie wybiorę.";
napis(5); //tak też można

getch();
}
(1) - Tutaj jak widzicie podajemy jakiś typ można ich tam wpisać więcej oddzielając je przecinkami.


W załaczniku umieściłem kilka przydatnych funkcji.
--------------------------------------------------------------------------------------------------


To tyle teorii..

.. i to by było na tyle, jesli idzie o podstawy..

rep+ mile widziany


Od razu mówie że kurs nie został napisany prze ze mnie!
(Ten post był ostatnio modyfikowany: 24-02-2008, 22:24 przez Vinci.)
16-01-2008, 9:01
Odpowiedz cytując ten post
PHmaster Offline
Newbie
*

Liczba postów: 8
Reputacja: 0
Post: #2
RE: [C++] Nauka C++ (krótki kurs - podstawy)
trochę stary, zamiast <iostream.h> powinno być <iostream>, nagłówki kiedyś się dołączało Smile
26-01-2008, 21:14
Odpowiedz cytując ten post
m4r1usz Offline
Znawca
***

Liczba postów: 154
Reputacja: 4
Post: #3
RE: [C++] Nauka C++ (krótki kurs - podstawy)
Co do samych kodow tez bym mial watpliwosci.
Zeby uzywac samego cout a nie std::cout powinno sie znalezc wczesniej using namespace std;
27-01-2008, 1:04
Odwiedź stronę użytkownika Odpowiedz cytując ten post
kacpero1094 Offline
Newbie
*

Liczba postów: 2
Reputacja: 0
Post: #4
RE: [C++] Nauka C++ (krótki kurs - podstawy)
Polecam darmową książkę Karola Kuczmarskiego (znany w sieci jako Xion). Książkę w PDF-ie można pobrać tu:
http://forum.mojpecet.eu/viewtopic.php?t=31
lub na stronie Pana Karola:
www.xion.org.pl
08-11-2008, 8:06
Odwiedź stronę użytkownika Odpowiedz cytując ten post
jarex_67 Offline
Znawca
***

Liczba postów: 90
Reputacja: 0
Post: #5
RE: [C++] Nauka C++ (krótki kurs - podstawy)
Spróbuj tutaj jest fajne szkolenie http://geek-on.pl Smile
29-08-2017, 18:43
Odpowiedz cytując ten post


Skocz do: