Structuri de control. Definire Clase de Curs http://php.intercer.net
| | Curs http://php.intercer.net |
|
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.”;
Sus |