Menu
Strona g艂贸wna
Hacking
Programowanie
Telefonia Kom贸rkowa
Kody do Gier
Linux
Dlaczego?
Programowanie w Delphi
Mapa strony
 Programy
Systemy
Artyku艂y PDF

Security

Skanery
Sniffery
Security

Windows

U偶ytkowe
Przegl卤darki graficzne
Kodeki
Narz臋dzia plikowe
Narz臋dzia dyskowe
Narz臋dzia systemowe
Sterowniki
Szyfrowanie danych
Zarz卤dzanie has艂ami
Zarz卤dzanie rejestrem
拢aty i Patche
Zarz卤dzanie pami臋ci卤
Synchronizacja czasu
Nagrywanie p艂yt
Free Antivirus (Darmowe Antyvirusy)
Sterowniki
Obr贸bka d录wi臋ku
Edycja wideo

Internetowe

Bezpiecze帽stwo
Programy P2P
Komunikatory
Dodatki do przegl卤darek
Klienty poczty elektronicznej
Narz臋dzia Antyspamowe
Przegl卤darki grup dyskusyjnych
Przegl卤darki Offline
Serwery poczty elektronicznej
Telefonia kom贸rkowa
Wyszukiwarki internetowe
Zdalny dost臋p
Cybernianie
Klienty FTP
Narz臋dzia internetowe
Prywatno艣c
Przegl卤darki internetowe
Serwery FTP
Serwery WWW
Wspomagacze 艣ci卤gania
Zarz卤dzanie sieci卤 lokaln卤

Tuning Systemu

Diagnostyka i testowanie
Inne
Rozszerzenia pulpitu
Tapety na pulpit
Tuning Systemu
Ikony
Pow艂oki
Tuning sprz臋tu
Wygaszacze ekranu

Programowanie

Kompilatory
Biblioteki i komponenty
Bazy danych
Edytory programistyczne
娄rodowiska programistyczne
Debugery
Tworzenie wersji instalacyjnych

Webmastering

U偶ytkowe
Kursy

Linux

U偶ytkowe
Internetowe
Multimedialne

Programy biurowe

Programy dla firm
Pakiety biurowe
Administracja
Edytory tekstu
Grafika prezentacyjna
Kadry i p艂ace
Wspomaganie projektowania
Zarz卤dzanie projektami
Bazy danych
Finanse i ksi臋gowo艣c
Handel
Programy ewidencyjne
Zarz卤dzanie informacj卤 osobist卤 (PIM)
 Download GRY
Pelne Wersje GIER
 Artyku硑 > Programowanie > [C++] Nauka C++ (kr贸tki kurs - podstawy)

[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 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:

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:

#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:

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.

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

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

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:

#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

#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:

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:

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;

#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:


#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
#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:


#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:


#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:


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

main()
{
clrscr();

for(int i=0; i<25; i++) //(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:

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:

#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:

#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:

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


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





komentarz[5] |

Copyright 2006 - 2007 E-comet.info. Wszelkie prawa zastrze縪ne.

programy,artyku硑,gry online,teledyski,filmiki,smieszne reklamy,sterowniki,kodeki,programy,program,download, downloads,security,bramka sms, teledyski,antywirusy,darmowe free program,programy p2p,tapety,programy biurowe,programy dla firm,narz阣zia dyskowe,edytory,gry strategiczne,gry przygodowe,gry sportowe, symulatory, gry rpg,gry karciane, gry zrecznosciowe. Zapraszamy.
0.857 |