Reverse
Advanced User
- Joined
- Jul 11, 2010
- Messages
- 191
- Reaction score
- 46
C++ z Reverse - Lekcja czwarta!
Witam na czwartej lekcji j?zyka C++. Na tej lekcji zajmiemy si? :
P?tlami :
P?tlami :
- do...while...
- for
- switch
- break
4.1 P?tla do...while...
S?owa te oznaczaj? po angielsku: R?b...Dop?ki.... A sama p?tla ma tak? form? :
do instrukcja1 while(wyra?enie)
a po polsku :
r?b instrukcja1 dop?ki(wyra?enie)
Dzia?anie jest analogiczne, najpierw wykonywana jest instrukcja1, nast?pnie obliczana zostaje warto?? wyra?enia. Je?li jest ono prawdziwe, to to wykonanie instrukcji1 zostanie powt?rzone i tak w k??ko dop?ki wyra?enie stanie si? fa?szem.
Na przyk?ad :
A efektem naszej pracy jest :
Nasz program oczekuje na napisanie liczby, p?tla wczytywania liczb odbywa si? dop?ki nie podamy liczby 3. Wtedy to wykonanie p?tli zako?czy si?. W programie - w miejscu kt?re pogrubi?em - pojawi? si? w wyra?eniu nieznany nam dot?d operator != - kt?ry oznacza " r??ny od ". Zatem zapis :
while(liczba != '3')
rozumiany jest jako "dop?ki liczba jest r?zna pd 3 ". Temu i innym operatorom przyjrzymy si? dok?adnie p??niej.
S?owa te oznaczaj? po angielsku: R?b...Dop?ki.... A sama p?tla ma tak? form? :
do instrukcja1 while(wyra?enie)
a po polsku :
r?b instrukcja1 dop?ki(wyra?enie)
Dzia?anie jest analogiczne, najpierw wykonywana jest instrukcja1, nast?pnie obliczana zostaje warto?? wyra?enia. Je?li jest ono prawdziwe, to to wykonanie instrukcji1 zostanie powt?rzone i tak w k??ko dop?ki wyra?enie stanie si? fa?szem.
Na przyk?ad :
PHP:
#include <cstdlib>
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
char liczba ;
do {
cout << "Napisz jakas liczbe: " ;
cin >> liczba ;
cout << "\n Napisales: " << liczba << "\n" ;
}while(liczba != '3');
cout << "\n Skoro napisales 3 to konczymy!";
system("PAUSE");
return EXIT_SUCCESS;
}
Nasz program oczekuje na napisanie liczby, p?tla wczytywania liczb odbywa si? dop?ki nie podamy liczby 3. Wtedy to wykonanie p?tli zako?czy si?. W programie - w miejscu kt?re pogrubi?em - pojawi? si? w wyra?eniu nieznany nam dot?d operator != - kt?ry oznacza " r??ny od ". Zatem zapis :
while(liczba != '3')
rozumiany jest jako "dop?ki liczba jest r?zna pd 3 ". Temu i innym operatorom przyjrzymy si? dok?adnie p??niej.
4.2 P?tla for.
Ma ona form?:
for(instr_ini, wyraz_warun ; instr_krok) tre??_p?tli ;
co w przyk?adzie mo?e wygl?da? tak :
for(i=0; i <10; i=i+1)
{
cout << "Re-ver-se ! " ;
}
Wyja?nimy co oznaczaj? poszczeg?lne cz??ci :
for - (ang. dla..) oznacza dla takich warunk?w r?b...
instr_ini - jest to instrukcja wykonywana zanim p?tla zostanie po raz pierwszy uruchomiona.
Wi?c praca tej p?tli odbywa si? jakby wed?ug takiego harmonogramu :
for(instr_ini, wyraz_warun ; instr_krok) tre??_p?tli ;
co w przyk?adzie mo?e wygl?da? tak :
for(i=0; i <10; i=i+1)
{
cout << "Re-ver-se ! " ;
}
Wyja?nimy co oznaczaj? poszczeg?lne cz??ci :
for - (ang. dla..) oznacza dla takich warunk?w r?b...
instr_ini - jest to instrukcja wykonywana zanim p?tla zostanie po raz pierwszy uruchomiona.
- W naszym przyk?adzie jest to podstawienie i = 0
- U nas wyra?eniem warunkowym jest wyra?enie i < 10. Je?li rzeczywi?cie i jest mniejsze od 10, w?wczas wykonywana zostaje instrukcja b?d?ca tre?ci? p?tli, czyli wypisanie tekstu "Re-ver-se !"
- U nas jest to po prostu i = i + 1
Wi?c praca tej p?tli odbywa si? jakby wed?ug takiego harmonogramu :
- Najpierw wykonuj? si? instrukcje inicjalizuj?ce prac? p?tli.
- Obliczane jest wyra?enie warunkowe. Je?li jest r?wne 0 - praca p?tli jest przerywana.
- Je?li powy?ej okaza?o si?, ?e wyra?enie by?o ro?ne od zera, w?wczas wykonane zostaj? instrukcje b?d?ce tre?ci? p?tli.
- Po wykonaniu tre?ci p?tli wykonana zostaje instrukcja inst)krok, po czym powtarzana jest akcja 2.
4.3 Instrukcja switch
Switch - jak sama nazwa wskazuje sugeruje - s?u?y do podejmowania wielowariantowych decyzji. Na przyk?ad :
W efekcie otrzymujemy :
A je?li podamy liczb? inn? od 10,28,35 to :
PHP:
#include <cstdlib>
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
int ktory;
//...................
cout << "Ktory podzespol sprawdzic? \n "
<< "nr 10 - Procesor \nnr 35 - Ram \nnr 28 - Grafika\n"
<< " Podaj numer : ";
cin >> ktory;
switch(ktory)
{
case 10 :
cout << " Sprawdzamy procesor\n" ;
break;
case 28 :
cout << " Sprawdzamy pamiec Ram \n" ;
break ;
case 35 :
cout << " Sprawdzamy karte graficzna \n" ;
default :
cout << " Zadales nr " << ktory
<< " - nie znam takiego ! " ;
break;
}
system("PAUSE");
return EXIT_SUCCESS;
}
A je?li podamy liczb? inn? od 10,28,35 to :
4.4 Instrukcja break
Zapoznali?my si? powy?ej z dzia?aniem instrukcji break - polegaj?cym na przerywaniu wykonywania instrukcji switch. Jest jeszcze inne, aczkolwiek podobne dzia?anie break w stosunku do instrukcji p?tli : for, while, do...while...
Instrukcja ta powoduje natychmiastowe przerwanie wykonywania tych p?tli.
Je?li mamy do czynienia z kilkoma p?tlami - zagnie?d?onymi jedna wewn?trz drugiej , to instrukcja break powoduje przerwanie tylko tej w kt?rej bezpo?rednio tkwi. Jest to jakby przerwanie z wyj?ciem tylko o jeden poziom wy?ej.
O to przyk?ad jak instrukcja break przerwie p?tle while :
Wykonanie tego fragmentu spowoduje wypisanie na ekranie :
Instrukcja ta powoduje natychmiastowe przerwanie wykonywania tych p?tli.
Je?li mamy do czynienia z kilkoma p?tlami - zagnie?d?onymi jedna wewn?trz drugiej , to instrukcja break powoduje przerwanie tylko tej w kt?rej bezpo?rednio tkwi. Jest to jakby przerwanie z wyj?ciem tylko o jeden poziom wy?ej.
O to przyk?ad jak instrukcja break przerwie p?tle while :
PHP:
int i = 7;
while(1)
{
cout << " Petla, i = : << i << "\n";
i = i - 1
if(i < 5) {
cout << " Przrywamy 1 " ;
break ;
}
}
PHP:
Petla, i = 7
Petla, i = 6
Petla, i = 5
Przerywamy !
Koniec lekcji czwartej!
W tym momencie ko?czymy czwart? lekcje C++. Na nast?pnej zajmiemy si? instrukcj? goto i continue i wejdziemy w typy, czyli wy?sz? szko?? jazdy!
Pozdrawiam,
Reverse!
Pozdrawiam,
Reverse!