Archiwa kategorii: E.14 Projektowanie Aplikacji Internetowych

Jak stosować instrukcję warunkową wewnątrz pętli?

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

jak wywoływac funkcje w javascript

Kontekst wywołania funkcji

Każda funkcja w JavaScript posiada dwa obiekty z nią skojarzone:

  • this – kontekst wywołania
  • arguments – (array-like object) lista argumentów przekazanych przy wywołaniu

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ł.

Operator `new’

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

Źródło: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind#Compatibility