Pętlę w programowaniu pozwalają nam wykonywać dany kod pewną ilość razy.
Pętla typu while:
Struktura pętli while ma następującą postać:
Struktura pętli while ma następującą postać:
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 ---------------------
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…
Źródło: http://www.linux.rk.edu.pl/w/p/ptle-i-instrukcje-warunkowe/
Autor: Łukasz Motyka, Kamil Janiga
Każda funkcja w JavaScript posiada dwa obiekty z nią skojarzone:
Zobaczmy, jak wyglada to w praktyce:
function example1() { console.log('this: ', this, ', arguments: ', arguments); } example1();
Fragmenty kodu umieszczone w tym artykułe można uruchamiać w konsoli przeglądarki. Konsola ta najczęściej dostępna jest po wcisnięciu F12.
W wyniku wywołania funkcji `example1’ otrzymamy w konsoli:
this: Window, arguments: []
Jak widać przy wywołaniu takiej funkcji bez parametrów `this’ przyjmuje wartość obiektu globalnego `window’, natomiast `arguments’ jest pustą listą.
Może właśnie zapytałeś: “Jeśli `this’ === `windows’, to czy zmienne globalne są właściwościami obiektu `window’?”
Sprawdźmy:
function example2() { window.console.log(this===window); } window.example2();
W wyniku wywołania funkcji `window.example2’ otrzymamy: `true’. Zatem – tak, zmienne globalne w skryptach uruchamianych w przeglądarce są właściwościami obiektu globalnego `window’. Domyślnym kontekstem dla skryptów uruchamianych w normalnym trybie w przeglądarkach jest właśnie `window’. Sprawę trochę zmienia (porządkuje) tryb ścisły, o którym nie będę pisał w tym poście. Jest to temat na osobny artykuł.
Skoro już wiemy, że domyślnie `this’ wskazuje na obiekt globalny, to co należy zrobić, aby powiąząć `this’ z aktualnym obiektem?
rozwiązanie 1:
var obj = { x : 'jestem wartością obj.x', test : function() { console.log(this.x); } }; obj.test(); // w konsoli pokaże się "jestem wartością obj.x"
rozwiązanie 2:
function Constructor() { this.x = 'jestem wartością Constructor.x'; this.test = function() { console.log(this.x); } }; (new Constructor()).test(); // w konsoli pokaże się "jestem wartością Constructor.x"
W obu przypadkach zarówno pole `x’, jak i pole `test’ (będące referencją na funkcję) są publiczne. Można odwołać się:
obj.x; (new Constructor()).x;
lub nawet nadpisać te wartości. JavaScript pozwala na to. Najczęściej jednak NIE należy tego robić.
autor : Wojciech Buczek