Wróć   polish:Elite:board > hard- i software > programowanie
programowanie języki, projekty, pomoc, oprócz html, php, js

Temat zamknięty
 
LinkBack Narzędzia wątku Przeszukaj ten temat Wygląd

  #1 (permalink)  
Stare 12.10.2004, 10:49
Avatar Maksymilian
Junior Member
 
Zarejestrowany: Oct 2004
Postów: 83
Postów w giełdzie: 0
Domyślnie [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.


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






To tyle teorii..


.. i to by było na tyle, jesli idzie o podstawy..
Chciałbym, abyście opanowali ten wstępny materiał, a dzięki temu opanujecie podstawy C++.
Jesli czegoś nie rozumiecie... pytajcie... po to jest te forum.
Jesli juz opanowaliscie te lekcje .. to dajcie znac.. wtedy będa nastepne.

Kurs C ++ to temat otwarty i każdy post, wiadomość, lekcja, bądź cwiczenia sa mile widziane.

Pozdrawiam i zapraszam do nauki i wspólpracy.
Załączone obrazki
Typ pliku: jpg do_opisu.jpg (49.8 KB, 6090 wyświetleń)

  #2 (permalink)  
Stare 27.04.2010, 21:26
Junior Member
 
Zarejestrowany: Apr 2009
Postów: 8
Postów w giełdzie: 0
Domyślnie Odp: [C++] Nauka C++ (krótki kurs - podstawy)

witam czy ta propozycja nauki programowania to jest nadal aktualna??
ja dopiero zaczynam sie tym bawic i mi sie podoba i chciałbym nauczyc sie wiecej...

Nieaktualne, w trakcie modernizacji.
Pozdrawiam, amastah.
Temat zamknięty

Szybka odpowiedź
Antispam, complete the task: 
 
Wiadomość:
Opcje

Narzędzia wątku Przeszukaj ten temat
Przeszukaj ten temat:

Zaawansowane wyszukiwanie
Wygląd

Zasady postowania
Nie możesz zakładać nowych tematów
Nie możesz pisać wiadomości
Nie możesz dodawać załączników
Nie możesz edytować swoich postów

BBCode jest Włączony
EmotikonyWłączony
[IMG] kod jest Włączony
HTML kod jest Wyłączony
Trackbacks are Wyłączony
Pingbacks are Wyłączony
Refbacks are Wyłączony


Podobne wątki
Temat Autor wątku Forum Odpowiedzi Ostatni post/autor
kreatyna- podstawy vanadi kulturystyka 59 20.09.2008 16:42


Wszystkie czasy w strefie GMT +2. Teraz jest 17:40.

Powered by vBulletin® Version 3.8.8 Beta 3
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.5.2
Tłumaczenie: vBHELP.pl - Polskie wsparcie vBulletin
1397835650

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343