Download Zaloguj się, by sprawdzić wiadomości Album Chat
Strona główna Grupy Użytkownicy Twoje konto Statystyki Rejestracja Zaloguj

Poprzedni temat «» Następny temat
[C++] Nauka C++ (krótki kurs - podstawy)
Autor Wiadomość
_divi_ 
VIP
hehe..xD :jaro:



Wiek: 108
Dołączył: 17 Maj 2007
Posty: 1480
Skąd: Brassilian
Wysłany: Pon 17 Mar, 2008   [C++] Nauka C++ (krótki kurs - podstawy)

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


W za?aczniku umie?ci?em kilka przydatnych funkcji.
 
 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Nie możesz ściągać załączników na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group
Support forum phpbb by phpBB Assistant
Strona wygenerowana w 0,13 sekundy. Zapytań do SQL: 26