What's new

-Trudny C++ z Reverse - Lekcja czwarta!

Status
Not open for further replies.

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 :

  • do...while...
  • for
Instrukcjami :

  • switch
  • break
No to zaczynamy!
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 :

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;
}
A efektem naszej pracy jest :
24275306427089464358.png


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.

  • W naszym przyk?adzie jest to podstawienie i = 0
wyraz_warun - jest to wyra?enie, kt?re obliczane jest przed ka?dym obiegiem p?tli. Je?li jest ono r??ne od zera, to wykonywane zostaj? instrukcje b?d?ce tre?ci? p?tli.

  • 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 !"
instr_krok - to instrukcja wykonywana na zako?czenie ka?dego obiegu p?tli. Jest to jakby ostatnia instrukcja, wykonywana bezpo?rednio przed obliczeniem wyra?enia wyraz_warun.

  • U nas jest to po prostu i = i + 1

Wi?c praca tej p?tli odbywa si? jakby wed?ug takiego harmonogramu :

  1. Najpierw wykonuj? si? instrukcje inicjalizuj?ce prac? p?tli.
  2. Obliczane jest wyra?enie warunkowe. Je?li jest r?wne 0 - praca p?tli jest przerywana.
  3. 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.
  4. 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 :
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;
}
W efekcie otrzymujemy :
72165318339047420903.png

A je?li podamy liczb? inn? od 10,28,35 to :
25287083400950552297.png


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 :
PHP:
int i = 7;
while(1)
{ 
        cout << " Petla, i = : << i << "\n";
        i = i - 1
        if(i < 5) {
                      cout  << " Przrywamy 1 " ;
                      break ;
        }
}
Wykonanie tego fragmentu spowoduje wypisanie na ekranie :
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!




 

xKrysteKx

Advanced User
Joined
Oct 5, 2010
Messages
250
Reaction score
29
Odp: C++ z Reverse - Lekcja czwarta!

Kolejna lekcja godna uwagi. Nieznam si? na C++ lecz mo?e z twoimi lekcjami o?i?gne co? wi?cej ni? stopie? amator. Mo?e poprosi?by? administracje TNP aby utwo?li Ci specjialny dzia?, w kt?rym umieszcza?by? swoje lekcje lecz musia?by? obieca?, ?e b?dziesz robi? lekcje i nie zaprzestaniesz na lekcji 7 lub 8.

Pozdrawiam xKrysteKx!
 

Reverse

Advanced User
Joined
Jul 11, 2010
Messages
191
Reaction score
46
Odp: C++ z Reverse - Lekcja czwarta!

Kolejna lekcja godna uwagi. Nieznam si? na C++ lecz mo?e z twoimi lekcjami o?i?gne co? wi?cej ni? stopie? amator. Mo?e poprosi?by? administracje TNP aby utwo?li Ci specjialny dzia?, w kt?rym umieszcza?by? swoje lekcje lecz musia?by? obieca?, ?e b?dziesz robi? lekcje i nie zaprzestaniesz na lekcji 7 lub 8.

Pozdrawiam xKrysteKx!

Rozmawia?em zobaczymy co z tego wyniknie. Dzi?ki za pozytywn? opini?.

Pozdrawiam,
Rev~
 

Vatorek

New User
Joined
Aug 20, 2010
Messages
7
Reaction score
1
Odp: C++ z Reverse - Lekcja czwarta!

No lekcja bardzo fajna i przydatna. Sam niedawno zacz??em si? uczy? C++ i my?l?, ?e b?d? sobie pomaga? twoimi lekcjami :D
10\10
i oczywi?cie Rep++
 

Archimonde

Suple!
Joined
Aug 18, 2008
Messages
1,215
Reaction score
268
Odp: C++ z Reverse - Lekcja czwarta!

for(i=0; i <10; i=i+1)
przecie?, to mo?na by?oby zrobi? jako (i=0; i < 10; i++)
stosowanie inkrementacji skraca nam troszk? kod oraz powoduje szybsze wykonanie wyra?enia. Og?lnie to fajnie napisane i zrozumiale, lecz czasem w kodzie s? liter?wki - chodzi mi o teksty wy?wietlane, a og?lnie kody s? troch? pomieszane - r?b cz??ciej wci?cia i mo?e dawaj, to w bb-code php? Mimo i? to jest c++, to lepiej na pewno b?dzie, to wszystko wygl?da? w bb-code php.
 
Status
Not open for further replies.
Top