Structuri de control. Definire Clase
Structurile de control sunt scheletul ( inima) limbajelor de programare . PHP are incluse structurile de control necesare functionarii unui limbaj.
Daca aveti ceva cunostinte de Cobol, Pascal, C nu o sa fiti deloc surprinsi de ceea ce urmeaza.
Programele PHP iau decizii prin evaluare unor expresii conditionale si executa instructiuni bazate pe rezultatele acestor evaluarii.
Expr. Conditionale se mai numesc si expresii booleene , uneori , si au valorile asociate : true (1) – adevarat
false (0)- fals
O modalitate mai utila de a forma o expresie conditionala consta in utilizarea unui operator relational pentru compararea a doua valori numerice.
Exemplu : $a < 1 ( operatorul < are aceeasi semnificatie ca si in algebra )
Expresia conditionala de mai sus are valoarea true daca si numai daca valoarea variabilei $a are valoarea mai mica decat unitatea ; in toate celelalte cazuri are valoarea false.
Puteti folosi operatori relationali si pentru compararea sirurilor, numai ca aceste siruri vor fi convertite la o valoare numerica inainte de evaluarea expresiei. Vom vedea mai tarziu totusi ca exista si functii de comparare a sirurilor.
Operatori relaţionali ai limbajului PHP
Operator Descriere
1. a<b Adevărat dacă valoarea lui a este mai mică decât valoarea lui b.
2. a>b Adevărat dacă valoarea lui a este mai mare decât valoarea lui b.
3. a<=b Adevărat dacă valoarea lui a este mai mică sau egală cu valoarea lui b.
4. a>=b Adevărat dacă valoarea lui a este mai mare sau egală cu valoarea lui b.
5. a==b Adevărat dacă valoarea lui a este egală cu valoarea lui b.
6. a!=b Adevărat dacă valoarea lui a este diferită de valoarea lui b.
7. a= =b Adevărat dacă a şi b sunt identice; cu alte cuvinte, dacă a şi b au acelaşi tip şi dacă valoarea lui a este egală cu valoarea lui b.
8. a!= =b Adevărat dacă a şi b nu sunt identice; cu alte cuvinte, dacă a şi b nu sunt de acelaşi tip sau dacă valoarea lui a este diferită de valoarea lui b.
Pentru a sintetiza, iată regulile care definesc rezultatul unei expresii condiţionale:
• Constantele true şi false îşi iau respectiv valorile lor booleene corespunzătoare.
• O expresie condiţională care constă dintr-o valoare nedefinită are valoarea false; în caz contrar, rezultatul depinde de tipul valorii, în speţă numeric, şir, tablou sau obiect.
• O expresie condiţională care constă dintr-o valoare numerică are valoarea false dacă valoarea este zero; în caz contrar, are valoarea true.
• O expresie condiţională care constă dintr-o valoare de tip şir are valoarea false dacă şirul este vid; în caz contrar, are valoarea true.
• O expresie condiţională care constă dintr-o valoare de tip tablou sau obiect are valoarea false dacă tabloul sau obiectul sunt vide; în caz contrar, are valoarea true.
• O expresie condiţională alcătuită dintr-un operator relaţional şi din operanzii săi ia valori în conformitate cu rezultatul comparaţiei (numerice sau nu).
Puteţi forma expresii condiţionale complexe prin unirea a două expresii condiţionale cu ajutorul unui operator logic.
De exemplu, expresia următoare este adevărată dacă ambele expresii condiţionale care o compun sunt adevărate:
$a < 1 AND $b < 1
Cu alte cuvinte, expresia este adevărată dacă atât variabila $a, cât şi variabila $b au valori mai mici decât 1.
In general, expresiile sunt evaluate de la stânga la dreapta. Ca si in alte limbaje de programare totuşi, operatorii care apar în partea superioară a tabelului dispun de o precedenţă mai ridicată şi sunt efectuaţi anterior operatorilor cu o precedentă mai redusă, dacă nu sunt folosite paranteze pentru a specifica o altă ordine a operaţiilor.
Operatori logici ai limbajului PHP
Operator Descriere
x AND y Adevărat dacă atât x, cât şi y sunt adevărate.
x && y Adevărat dacă atât x, cât şi y sunt adevărate.
x OR y Adevărat dacă minimum una din expresiile x şi y este adevărată.
x || y Adevărat dacă minimum una din expresiile x şi y este adevărată.
x XOR y Adevărat dacă numai una din expresiile x şi y este adevărată.
!x Adevărat dacă x este falsă.
Precedenţa operatorilor PHP
Operator
! ~ ++ — (int) (double) (string) (array) (object)
/ %
+ - .
< <= > >=
= = != = = = ! = =
&
Ù
ç
&&
çç
?:
= += -= = /= .= %= &= ç= Ù= ~= <<= >>=
And
Xor
Or
,
Exemplu :
Consideram expresia $a + $b * $c
Precedenţa operatorului de multiplicare * este mai ridicată decât aceea a operatorului de adunare +, deci înmulţirea este efectuată prima, chiar dacă adunarea apare la stânga înmulţirii. Cu alte cuvinte, expresia este evaluată ca şi cum ar fi fost scrisă astfel:
$a + ( $b * $c )
Dacă doriţi ca adunarea să fie efectuată prima, puteţi folosi paranteze în cadrul expresiei, astfel:
( $a + $b ) * $c
INSTRUCTIUNEA IF
SIMPLA
$a= ”15 ” ;
If ($a > 10)
Echo "Acesta este un număr mare " ;
Asta se traduce cam asa :
- daca conditia este adevarata executa echo sau orice alta instructiune care ar putea fi ;
1. Plasaţi următorul script PHP într-un fişier denumit lectia3-1.php şi încărcaţi acest fişier în serverul dumneavoastră PHP:
<HTML>
<HEAD>
<TITLE>Lectia3-1</TITLE>
</HEAD>
<BODY>
<!--Fişier lectia3-1.php -->
<?php
echo „ Numărul introdus a fost : $număr.”;
if ($număr > 10)
echo „ <BR> Acesta este număr mare.”;
?>
</BODY>
</HTML>
2. Plasaţi următoarea pagină HTML într-un fişier denumit lectia3-1.html şi încărcaţi acest fişier în serverul dumneavoastră, plasându-l în acelaşi catalog ca şi fişierul lectia3-1.php:
<HTML>
<HEAD>
<TITLE>Lectia 3-1</TITLE>
</HEAD>
<BODY>
<!--Fişier lectia3-1.html-->
<FORM METHOD=”POST” ACTION=”lectia3-1.php”>
Introduceţi o valoare numerică:
<BR><INPUT TYPE=”TEXT” NAME=”numar”>
</FORM>
</BODY>
</HTML>
COMPLEXA
$a= ”15 ” ;
if ($a > 10 )
{
echo „<BR>Numarul este mai mare decăt 10.”;
echo „<BR>Deci, trebuie sa fie mai mare.”;
}
sau
sa zicem ca $a = ”8 ” ;
if ($numar > 10 )
echo „<BR>Acesta este un numar mare .”;
else
echo „<BR>Acesta este un numar mic.”;
Instructiunea if va afisa : Acesta este un numar mic
Sau INSTRUCTIUNE IF IMBRICATA
if ($numar > 10 )
if ($numa > 100)
echo „<BR>Acesta este un numar foarte mare.”;
else
echo „<BR>Acesta este un numar mare.”;
else
echo „<BR>Acesta este un numar mic.”;
Exemplul afişează mesajul „Acesta este un număr foarte mare." dacă valoarea variabilei $numar depăşeşte 100; în caz contrar, dacă valoarea variabilei $numar este mai mare decât 10, se afişează mesajul „Acesta este un număr mare.". Dacă valoarea variabilei $numar este mai mică sau egală cu 10, exemplul afişează mesajul „Acesta este un număr mic.".
INSTRUCTIUNEA ELSEIF
if ($numar > 100 )
echo „<BR>Acesta este un numar foarte mare.”;
elseif ($numa > 10)
echo „<BR>Acesta este un numar mare.”;
elseif ($numa > 1)
echo „<BR>Acesta este un numar mic.”;
else
echo „<BR>Acesta este un numar foarte mic.”;
Exemplul extinde funcţionalitatea exemplului anterior, afişând mesajul „Acesta este un număr foarte mic." pentru valori ale variabilei $numar mai mici sau egale cu 1
Scrierea instrucţiunilor switch, break şi default
Instrucţiunea if vă permite să luaţi o decizie în două sensuri. Pentru a putea lua o decizie în mai multe sensuri, puteţi folosi mai multe instrucţiuni if , else sau elseif. Cu toate acestea, când doriţi ca programul dumneavoastră să aleagă dintr-un set de alternative care pot fi reprezentate prin valori întregi, instrucţiunea switch este o opţiune mai convenabilă.
De exemplu, să presupunem că valoarea variabilei $numar este l, 2 sau 3, reprezentând respectiv dimensiunile mică, medie şi mare. Iată un mic program care afişează dimensiunile asociate valorilor variabilei $numar:
Switch($numar)
{
case(1):
echo „ mic”;
break;
case(2):
echo „mediu”;
break;
case(3):
echo „mare”;
break;
default:
echo „Acesta nu este un cod valabil”;
}
Instrucţiunea break determină încheierea execuţiei instrucţiunii switch, transferând controlul următoarei instrucţiuni secvenţiale care succede instrucţiunii switch. În absenţa instrucţiunii break, execuţia trece la următoarea instrucţiune case sau default, fapt nedorit în majoritatea cazurilor.
INSTRUCTIUNEA FOR
Instructiunea for este o instructiune bucla sau o instructiune iterative; o instructiune care executa in mod repetat instructiunile associate.
Exemplu:
$suma = 0
for ($n =1; $n<=3; $n++)
$suma += $n;
echo !<BR>Suma intregilor de la 1 la $numa este $suma.”;
În exemplu se calculează suma întregilor cuprinşi între l şi 3. Pentru aceasta, mai întâi se iniţializează variabila $suma la valoarea 0. Apoi, se execută o instrucţiune for care incrementează în mod repetat valoarea variabilei $suma.
Instrucţiunea for include trei expresii, care apar între paranteze; fiecare expresie este separată de vecina sa printr-un caracter punct şi virgulă. De asemenea, instrucţiunea for include o instrucţiune sau un grup de instrucţiuni, cunoscute sub numele de corpul instrucţiunii for. în exemplul de mai sus, instrucţiunea $suma += $n este corpul instrucţiunii for.
Sa examinăm mai amănunţit cele trei expresii:
• Prima expresie este expresia de iniţializare. Aceasta se execută atunci când PHP ajunge la instrucţiunea for. In exemplu, expresia de iniţializare atribuie valoarea variabilei $n, variabilă denumită variabilă de ciclare sau index.
• A doua expresie este expresia de test. Aceasta este o expresie condiţională care indică dacă se execută sau nu corpul instrucţiunii, în general, face referire la variabila de ciclare. In cadrul exemplului, expresia de test compară valoarea variabilei $n cu valoarea 3. Expresia de test este evaluată pentru prima dată imediat după evaluarea expresiei de iniţializare.
• Cea de-a treia expresie este expresia pas. în general, aceasta modifică una sau mai multe variabile la care se face referire în expresia test. în cadrul exemplului, expresia pas incrementează valoarea variabilei $n.
Secvenţa de execuţie a unei instrucţiuni for este următoarea:
1. Se evaluează expresia de iniţializare.
2. Se evaluează expresia test.
3. Dacă rezultatul evaluării expresiei test este false, se execută etapa 7.
4. Se execută corpul buclei.
5. Se evaluează expresia pas.
6. Se trece la etapa 2.
7. Se încheie execuţia instrucţiunii for, prin executarea următoarei instrucţiuni secvenţiale.
Instrucţiunea for este utilă pentru numărare şi executarea în mod repetat a unor acţiuni. Ca alt exemplu, iată o instrucţiune for care creează numeroase controale de tip buton. Numărul controalelor create este determinat de valoarea variabilei $numar:
for($n=0;$n<=$numar; $n++)
echo „<BR><INPUT TYPE =”BUTTON” VALUE=”$n”>n”;
Instrucţiunile while şi do while reprezintă versiuni „manuale" ale instrucţiunii for.
Urmatoarele 2 instructiuni sunt echivalente:
for ( ; $i<= 3; ) $suma += $i; çè while ($i <= 3) $suma ++ $i;
Exemplu de instructiune while:
$n = 0;
$suma = 0;
while ($n <= 3)
{
$suma = $suma +$n;
$n++;
}
echo „Suma este $suma.”
Secvenţa de execuţie a unei instrucţiuni while este următoarea:
1.Se evaluează expresia test.
2.Dacă rezultatul este false, se trece la etapa 5.
3.Se execută corpul buclei.
4.Se trece la-etapa 1.
5. Se părăseşte bucla, prin executarea următoarei instrucţiuni secvenţiale.
Instrucţiunea do while este oarecum asemănătoare instrucţiunii while. Diferenţa este aceea că instrucţiunea do while îşi execută corpul înainte de a-şi evalua expresia de test. Astfel, corpul buclei unei instrucţiuni do while este întotdeauna executat cel puţin o dată; corpul unei instrucţiuni while este omis dacă expresia de test are iniţial valoarea false.
Secvenţa de execuţie a unei instrucţiuni do while este următoarea:
1. Se execută corpul buclei.
2. Se evaluează expresia de test
3. Dacă rezultatul este adevărat, se trece la etapa 1.
4. Se încheie execuţia buclei, prin executarea următoarei instrucţiuni secvenţiale.
Exemplu :
$suma = 0;
$n = 1;
do
{
$suma += $n;
$n++;
}
while ($n <= $numar);
echo „<BR>Suma întregilor cuprinşi între 1 şi $numar este $suma.”;
|