Pętle i instrukcje warunkowe

Przegląd instrukcji warunkowych (if,swith) i pętli w C++ (while, for) i ich wykorzystania na przykładzie prostych skryptów

Instrukcja warunkowa ma postać:
if (warunek)
	{
	akcja
	}
Można też pominąć nawiasy klamrowe lecz wtedy tylko pierwszy wiersz po instrukcji zostanie wykonany jeżeli warunek zostanie spełniony. Przykład z poprzedniego działu, nieco rozbudowany:
if (param > 1)
	{
	stat = 10;
	}
else if (param == k)
	{
	stat = 3;
	}
else
	{
	stat = 0;
	// coś innego
	}

Instrukcja decyzyjna (swith) jest podobna do instrukcji warunkowej lecz czasami jej użycie daje bardziej czytelny kod. Oto ogólna postać instrukcji:
switch (zmienna)
	{
	case wartość1:
		{
		//akacja
		}
	case wartość2: //akcja
	case wartość3: wartość4: wartość5: //akcja
	default:
		{
		//akcja
		}
	}
Tak jak w if możemy stosować nawiasy { } po case wartość: lecz jeżeli mamy prostą akcję mieszczącą się w jednym wierszu to nie jest to konieczne. Można też dla kilku wartość przypisać jedną kację (wartość3-5). default jest opcjonalne i odpowiada za akcję wykonaną w przypadku jeżeli wartość parametru nie będzie pasować do żadnego case.
void nic(int param)
	{
	switch (param)
		{
		case 0: case 1: case 2:
			{
			cout << "PARAM: " << param << " Jest równy 0, 1 albo 2 :)" << endl;
			break;
			}
		case 3:
			cout << "PARAM: " << param << " Jest równy 3" << endl;
			break;
		default:
			{
			cout << "Nie mam pojęcia co się dzieje" << endl;
			break;
			}
		}
	}

int main()
	{
	nic(2);
	cout << "---------------------" << endl;
	nic(3);
	cout << "---------------------" << endl;
	nic(88);
	}
Jeżeli akcja zawarta dla danych case nie używa return to trzeba zastosować break; by przerwać dalsze sprawdzanie instrukcji w przypadku natrafieniu na właściwą opcję. Powyższy program da wynik:
 PARAM: 2 Jest równy 0, 1 albo 2 :)
---------------------
 PARAM: 3 Jest równy 3
---------------------
Nie mam pojęcia co się dzieje


Pętla while ma następującą postać:
while ( wyrażenie-wartość logiczna ) instrukcja
Instrukcja ta polega na cyklicznym wykonywaniu pętli - sprawdzanie wartości wyrażenia i jeżeli zwraca wartość Prawda to wykonanie instrukcji. Pętla zostaje przerwana gdy wyrażenie zwróci wartość Fałsz. Jeżeli instrukcja zajmuje więcej niż 1 wiersz to umieszczamy ją w nawiasach klamrowych. Przykładowy kod:
#include<iostream>
using namespace std;

int main()
	{
	int y = 0;
	int x = 0;
	while (x < 5)
		{
		cout << "X: " << x << endl;
		x++;
		}
	cout << endl;
	cout << endl;
	
	while (x < 10 and y < 2)
		{
		cout << "X: " << x << "| Y: " << y << endl;
		x++;
		y++;
		}
	
	}

Pętla for ma postać:
for (inicjator ; warunek ; przyrost) instrukcja
Albo żeby było jaśniej:
for (int i = 0; i <=5 ; i++)
	{
	//zrób coś
	}
Pętla ta służy do wykonywania instrukcji kilka razy aż wartość zmiennej użytej w warunku od wartości w "inicjatorze" osiągnie wartość w "warunku".
Instrukcję break; możemy stosować we wszystkich powyższych pętlach co spowoduje przerwanie najbardziej wewnętrznej pętli (jeżeli jest jedna - to wogóle przerwie wykonywanie jej)
#include<iostream>
using namespace std;

int main()
	{
	int x;
	for (x = 11 ; x <= 20 ; x++)
		{
		if (x%5 == 0)
			{
			cout << "Znaleźliśmy X podzielny przez 5: " << x << endl;
			break;
			}
		cout << "X" << endl;
		}
	}
Powyższa pętla zostanie przerwana jeżeli wartość zmiennej x podzieli się przez 5 bez reszty (% zwraca resztę z dzielenia) tj. podzieli się przez daną liczbę :) Pętla przerwana zostanie na liczbie 15...
blog comments powered by Disqus

Kategorie

Strony