Sunteți pe pagina 1din 73

Universitatea Constantin Brncui din Trgu-Jiu

Facultatea de Inginerie
Departamentul de Automatic, Energie i Mediu

Tehnologii Web

Lector univ. dr. Adrian Runceanu

Curs 8
Limbajul PHP
(partea II)
2

Curs 8
1. Instruciuni conditionale
1.1. Instruciunea if
1.2. Instruciunea switch
1.3. Instruciuni pentru controlul execuiei iteraiilor
2. Instruciuni repetitive
2.1. Instruciunea while
2.2. Instruciunea do while
2.3. Instruciunea for

3
Tehnologii WEB

Curs 8
3. Funcii
3.1. Apelarea funciilor
3.2. Funcii definite de utilizator
3.2.1. Definirea funciilor
3.2.2. Variabile automatice
3.2.3. Funcii care ntorc valori
3.2.4. Accesul la variabile declarate n exterior.
Variabile globale
3.2.5. Funcii recursive
3.2.6. Terminarea execuiei unui script
4
Tehnologii WEB

1. Instruciuni(I)
tim

c orice program se poate scrie utilizand


numai trei tipuri de structuri:
1.
2.
3.

secventiala (sau liniara)


alternativa
repetitiva conditionata anterior

Pe

langa cele trei amintite, oricare limbaj de nivel


inalt implementeaza si alte structuri de control,
introduse in scopul cresterii eficientei activitatii
de programare.

5
Tehnologii WEB

1. Instruciuni(II)

Structurile enumerate (cu exceptia celei


secventiale) pot fi grupate in urmatoarele
doua categorii:
1. structuri de control conditional
controleaza fluxul programului, executand
sau nu anumite portiuni de cod, in functie
de indeplinirea sau neindeplinirea unor
conditii
2. structuri de control repetitive - executa
anumite portiuni de cod de un numar
determinat de ori
6
Tehnologii WEB

1. Instruciuni condiionale

Structurile de control conditional sunt


implementate in limbajul PHP prin intermediul
instructiunilor:
1.

2.

if
switch

care permit ramnificarea executiei


scriptului pe diverse cai, in functie de deciziile
luate in timpul executiei acestuia.
7
Tehnologii WEB

Curs 8
1. Instruciuni conditionale
1.1 Instruciunea if
1.2. Instruciunea switch
1.3. Instruciuni pentru controlul execuiei iteraiilor
2. Instruciuni repetitive
2.1. Instruciunea while
2.2. Instruciunea do while
2.3. Instruciunea for

8
Tehnologii WEB

1.1. Instructiunea if
Cea mai des utilizata instructiune conditionala
este if.
Instructiunea if are urmatoarea sintaxa:

if (expresie) {
grup de instructiuni
}
Expresia expresie este evaluata la o valoare logica.
Daca aceasta este true va fi executata secventa de cod
grup, care include una sau mai multe instructiuni.
Daca sunt cel putin doua instructiuni, grupul trebuie
inclus obligatoriu intre acolade, in caz contrar fiind
executata numai prima instructiune.

9
Tehnologii WEB

Observatie:
In mod obisnuit, sunt folosite acoladele chiar daca
grupul contine numai o singura instructiune.

Exemplu:
if ($numar>=10 && $numar<=30) {
echo "Valori intregi cuprinse intre 10 si 30";
}

10
Tehnologii WEB

Instructiunea if. . .else are urmatoarea sintaxa:

if (expresie) { grup1 }
else { grup2 }
Daca valoarea logica a expresiei expresie evaluata de interpretorul PHP este true, va fi executat
grupul de instructiuni grup1, in caz contrar fiind
executat grup2.

11
Tehnologii WEB

Exemplu:
Daca o valoare este in intervalul [1, 2], se
transmite catre browser valoarea (x+1)/2, altfel se
transmite valoarea (x-1)/2:

<?php
if($x>=1 && $x<=2)
$v=($x+1)/2;
else
$v=($x-1)/2;
echo ($v);
?>
12
Tehnologii WEB

Instructiunea

asociata unei instructiuni if


sau else poate fi ea nsasi o instructiune if.

asemenea instructiune if se numeste


"instructiune if imbricata".

13
Tehnologii WEB

Exemplu de instructiune if imbricata:

<?php
if ($numar > 10)
if ($numar > 100)
echo "Acesta este un numar mai mare decat 100";
else
echo "Acesta este un numar mai mic decat 100,
dar mai mare decat 10";
else
echo "Acesta este un numar mic";
?>
14
Tehnologii WEB

instructiune corelata att cu instructiunea


if, ct si cu instructiunea else, este
instructiunea elseif.

Cnd

este folosita corect, poate fi mai simplu


de nteles dect o instructiune if imbricata,
logic echivalenta cu aceasta.

15
Tehnologii WEB

Exemplu de instructiune elseif:


<?php
if ($numar > 100 )
echo "Acesta este un numar mai mare decat
100";
elseif ($numar > 10)
echo "Acesta este un numar mai mic decat 100,
dar mai mare decat 10";
elseif ($numar > 1)
echo "Acesta este un numar mic";
else
echo "Acesta este un numar foarte mic";
?>
16
Tehnologii WEB

Curs 8
1. Instruciuni conditionale
1.1. Instruciunea if
1.2. Instruciunea switch
1.3. Instruciuni pentru controlul execuiei iteraiilor
2. Instruciuni repetitive
2.1. Instruciunea while
2.2. Instruciunea do while
2.3. Instruciunea for

17
Tehnologii WEB

1.2. Instructiunea switch


A doua instructiune conditionala este switch,
avand urmatoarea sintaxa:

switch (expresie){
case expresie1: grup1; break;
case expresie2: grup2; break;
.....

[default: grup;]
}
Expresia expresie este comparata cu expresie1,
expresie2, .
18
Tehnologii WEB

Daca

se gaseste o potrivire pentru


comparatie, se utilizeaza operatorul de egalitate
== (expresiek), va fi executata secventa de
cod corespunzatoare (adica grupk), ignorand
eventualele linii case ramase.

Grupul

de instructiuni grup, asociat cazului


default, este executat numai daca, anterior, nu
s-a gasit nici o potrivire.

19
Tehnologii WEB

Exemplu:
Daca valoarea transmisa pentru x este 1,2,3,4, atunci
valoarea respectiva este retransmisa catre utilizator
alfabetic, altfel, se va transmite un mesaj oarecare:

<?php
switch($x)
{
case (1): echo("unu"); break;
case (2): echo("doi"); break;
case (3): echo("trei"); break;
case (4): echo("patru"); break;
default : echo ("Nu este 1, 2, 3 sau 4");
}
?>
20
Tehnologii WEB

Curs 8
1. Instruciuni conditionale
1.1. Instruciunea if
1.2. Instruciunea switch
1.3. Instruciuni pentru controlul execuiei iteraiilor
2. Instruciuni repetitive
2.1. Instruciunea while
2.2. Instruciunea do while
2.3. Instruciunea for

21
Tehnologii WEB

1.3. Instructiuni pentru controlul executiei


iteratiilor
Impreuna

cu instructiunile repetitive sunt


utilizate instructiunile break si continue, avand
rolul de a introduce elemente de control
suplimentare in executia acestora.

Instructiunea

break are rolul de a intrerupe


executia iteratiei curente si, odata cu aceasta, a
instructiunii in care este utilizata.

22
Tehnologii WEB

In cazul in care sunt folosite structuri pe


mai multe niveluri (imbricate), break poate
primi un argument de tip intreg prin
intermediul caruia se precizeaza nivelul la care
se va intrerupe executia instructiunilor:
adica

break n, unde n este o expresie care


poate fi evaluata la tipul mentionat
in plus, break 1 are acelasi efect ca break

23
Tehnologii WEB

Curs 8
1. Instruciuni conditionale
1.1. Instruciunea if
1.2. Instruciunea switch
1.3. Instruciuni pentru controlul execuiei iteraiilor
2. Instruciuni repetitive
2.1. Instruciunea while
2.2. Instruciunea do while
2.3. Instruciunea for

24
Tehnologii WEB

2. Instructiuni repetitive
Structurile repetitive (sau de ciclare) sunt implementate
in limbajul PHP prin intermediul instructiunilor:
while si for (structura repetitiva conditionata
anterior)
respectiv do...while (structura repetitiva conditionata
posterior)
fiind utilizate in scopul executiei repetate a unor
secvente de cod.
Executia unei astfel de secvente poarta numele de ciclu,
iteraie sau bucl (loop).

25
Tehnologii WEB

Curs 8
1. Instruciuni conditionale
1.1. Instruciunea if
1.2. Instruciunea switch
1.3. Instruciuni pentru controlul execuiei iteraiilor
2. Instruciuni repetitive
2.1. Instruciunea while
2.2. Instruciunea do while
2.3. Instruciunea for

26
Tehnologii WEB

2.1. Instructiunea while


Sintaxa instructiunii while este urmatoarea:

while (expresie)
{
grup instructiuni
}

Procesorul PHP executa grupul de instructiuni grup


in mod repetat, atat timp cat expresia expresie este
evaluata cu valoarea logica true.

27
Tehnologii WEB

Evaluarea

expresiei amintite se face la


inceputul fiecarei iteratii, ceea ce inseamna
ca este posibil ca, in cazul in care prima
evaluare genereaza valoarea logica false,
instructiunile incluse in secventa grup sa nu
fie executate niciodata.

Acoladele

sunt necesare numai daca grup


contine cel putin doua instructiuni.

28
Tehnologii WEB

Exemplu:
Se calculeaza suma:

<?php
$s=0; $i=1;
while($i <= 5)
{
$s+=$i + $i;
$i++;
}
echo ($s);
?>

29
Tehnologii WEB

Curs 8
1. Instruciuni conditionale
1.1. Instruciunea if
1.2. Instruciunea switch
1.3. Instruciuni pentru controlul execuiei iteraiilor
2. Instruciuni repetitive
2.1. Instruciunea while
2.2. Instruciunea do while
2.3. Instruciunea for

30
Tehnologii WEB

2.2. Instructiunea do...while


Desi utilizarea instructiunii do. . .while nu este
absolut necesara, ea permite obtinerea unei
flexibilitati sporite in scrierea scripturilor.
Sintaxa acestei instructiuni este urmatoarea:

do
{
grup instructiuni
} while (expresie);
31
Tehnologii WEB

Instructiunea

do... while este asemanatoare cu


while, cu exceptia faptului ca evaluarea
expresiei expresie se face dupa executia
grupului de instructiuni grup rezultand ca
aceasta are loc cel putin o data!

Acoladele

sunt necesare numai daca grup


include cel putin doua instructiuni.

32
Tehnologii WEB

Exemplu:
Se calculeaza suma:

<?php
$s=0; $i=1;
do
{
$s += $i + $i;
$i++;
}while($i <= 5);
echo ($s);
?>

33
Tehnologii WEB

Curs 8
1. Instruciuni conditionale
1.1. Instruciunea if
1.2. Instruciunea switch
1.3. Instruciuni pentru controlul execuiei iteraiilor
2. Instruciuni repetitive
2.1. Instruciunea while
2.2. Instruciunea do while
2.3. Instruciunea for

34
Tehnologii WEB

2.3. Instructiunea for


Sintaxa instructiunii for este urmatoarea:

for (expresie1; expresie2; expresie3)


{
grup instructiuni
}
Cele trei expresii (argumentele instructiunii), care - de
cele mai multe ori - sunt construite pe baza unei
variabile de ciclare, au urmatoarele semnificatii:
35
Tehnologii WEB

expresie1 (expresie de initializare) este evaluata o


singura data, la inceputul executiei instructiunii for;
expresie2 (expresia de test) - este evaluata la
inceputul fiecarei iteratii.
In functie de rezultatul evaluarii, se executa sau
nu grupul de instructiuni grup.
expresie3 (expresia de modificare) - este folosita
pentru a introduce actiunile care urmeaza a fi
efectuate asupra variabilei de ciclare
(incrementare/decrementare).

36
Tehnologii WEB

Exemplu:
<?php
for ($i=2; $i<10; $i++) {
echo "Patratul lui ".$i." este " . $i*$i . " .<br />";
}
?>

37
Tehnologii WEB

Alaturi de instructiunile repetitive


analizate pana aici, in PHP este implementata
si instructiunea foreach, deosebit de utila
pentru traversarea iterativa a tablourilor
asociative sau nesecventiale (in ultimul caz
nefiind posibila folosirea instructiunii for), dar
si a celor indexate numeric.

38
Tehnologii WEB

Exemplu in care se utilizeaza instructiunea


break, pe un singur nivel intr-un ciclu foreach:
<?php
$tablou=array(1,2,3,4,5,6,7,8,9);
foreach ($tablou as $element)
{
if ($element>5) { break; }
echo $element.", ";
}
?>
Dupa executia scriptului, acesta va afisa
1, 2, 3, 4, 5.

39
Tehnologii WEB

Spre deosebire de break, instructiunea continue este


folosita in instructiunile repetitive pentru a intrerupe
executia iteratiei curente, continuandu-se cu urmatoarea.
Exemplu in care se utilizeaza instructiunea continue:
< ?php
$tablou=array(1,2,3,4,5,6,7,8,9,0);
foreach ($tablou as $element) {
if ($element > 4) { continue;
echo "Numarul ".$element." este mai mic decat
5;<br />" }
}
?>
Se afiseaza:
Numarul 1 este mai mic decat 5;
Numarul 2 este mai mic decat 5;
Numarul 3 este mai mic decat 5;
Numarul 4 este mai mic decat 5;

40
Tehnologii WEB

Curs 8

3. Funcii
3.1. Apelarea funciilor
3.2. Funcii definite de utilizator
3.2.1. Definirea funciilor
3.2.2. Variabile automatice
3.2.3. Funcii care ntorc valori
3.2.4. Accesul la variabile declarate n exterior.
Variabile globale
3.2.5. Funcii recursive
3.2.6. Terminarea execuiei unui script

41
Tehnologii WEB

3. Funcii
n

PHP se pot crea funcii fr prea mari


diferene fa de ce tim din C/C++.

programare, o funcie include o secven de


cod, care realizeaz o anumit operaie i
poate fi apelat n mod repetat, de cte ori este
necesar.
Altfel spus, o funcie const dintr-un set de
instruciuni care realizeaz o sarcin specific.
42
Tehnologii WEB

Exemplu, un script in care se utilizeaza o functie


pentru calculul ariei unui triunghi si apoi afiseaza aria.

<?php
function aria_t($b, $h)
{
return $b*$h/2; }
$x=3;
$y=8;
echo (aria_t($x, $y));
?>

43
Tehnologii WEB

Definitiile functiilor PHP pot fi plasate oriunde in


interiorul unui script, dar este preferabila plasarea la
inceputul acestuia.

In scopul maririi gradului de reutilizare a functiilor, se


poate folosi drept alternativa plasarea functiilor in
fisiere distincte (avand extensia .php, .inc, etc.),
urmand ca acestea sa fie incluse in scripturi prin
intermediul instructiunilor PHP dedicate.

44
Tehnologii WEB

Curs 8

3. Funcii
3.1. Apelarea funciilor
3.2. Funcii definite de utilizator
3.2.1. Definirea funciilor
3.2.2. Variabile automatice
3.2.3. Funcii care ntorc valori
3.2.4. Accesul la variabile declarate n exterior.
Variabile globale
3.2.5. Funcii recursive
3.2.6. Terminarea execuiei unui script

45
Tehnologii WEB

3.1. Apelarea funciilor


Forma generala a unui apel de funcie este
urmatoarea:

nume_ functie (argument1, argument2, ...)


Analizand forma prezentata, se poate observa ca
apelul unei functii consta in apelarea numelui sau,
urmat imediat de o lista de argumente actuale (sau
parametri actuali), numarul acestora variind de la o
functie la alta (argument1, argument2, ...).
Fiecare argument trebuie sa fie o expresie valida, care
poate include si alte apeluri de functii.

46
Tehnologii WEB

Curs 8

3. Funcii
3.1. Apelarea funciilor
3.2. Funcii definite de utilizator
3.2.1. Definirea funciilor
3.2.2. Variabile automatice
3.2.3. Funcii care ntorc valori
3.2.4. Accesul la variabile declarate n exterior.
Variabile globale
3.2.5. Funcii recursive
3.2.6. Terminarea execuiei unui script

47
Tehnologii WEB

3.2. Functii definite de utilizator


In ceea ce priveste modalitatile de creare, functiile PHP
pot fi definite de utilizator sau predefinite.
3.2.1. Definirea functiilor
Pentru definirea unei functii in PHP se utilizeaza
urmatoarea sintaxa:

function nume_functie(argument1, argument2, ...)


{
// Corpul functiei: lista de instructiuni
}
48
Tehnologii WEB

Se observa ca definitia unei functii include


urmatoarele parti:
1.

2.

3.

numele functiei (nume_functie), precedat de


cuvantul-cheie function;
lista de argumente formale (care poate sa fie si vida),
inclusa intre doua paranteze rotunde (argument1,
argument2, ...);
corpul functiei, care consta din orice secventa valida
de cod, continuta in mod obligatoriu intre acolade,
inclusiv definitiile altor functii sau ale unor clase.

49
Tehnologii WEB

Curs 8

3. Funcii
3.1. Apelarea funciilor
3.2. Funcii definite de utilizator
3.2.1. Definirea funciilor
3.2.2. Variabile automatice
3.2.3. Funcii care ntorc valori
3.2.4. Accesul la variabile declarate n exterior.
Variabile globale
3.2.5. Funcii recursive
3.2.6. Terminarea execuiei unui script

50
Tehnologii WEB

3.2.2. Variabile automatice


Variabilele locale (utilizate in interiorul
functiilor) sunt denumite si automatice,
deoarece ele sunt create automat la
inceputul executiei functiei si distruse, tot
automat la sfarsit.
Din acest motiv, functiile vor pierde
valorile variabilelor utilizate in interiorul lor.

51
Tehnologii WEB

Exemplu:
<?php
function bun_venit($utilizator) {
$mesaj="Bine ai venit, ".$utilizator;
echo $mesaj;
}
bun_venit ("Costica") ;
echo $mesaj;
eroare
?>
In acest exemplu, incercarea de a afisa variabila
locala $mesaj in exteriorul functiei bun_venit() se
soldeaza cu un esec, aceasta fiind o variabila locala.
52
Tehnologii WEB

Curs 8

3. Funcii
3.1. Apelarea funciilor
3.2. Funcii definite de utilizator
3.2.1. Definirea funciilor
3.2.2. Variabile automatice
3.2.3. Funcii care ntorc valori
3.2.4. Accesul la variabile declarate n exterior.
Variabile globale
3.2.5. Funcii recursive
3.2.6. Terminarea execuiei unui script

53
Tehnologii WEB

3.2.3. Functii care ntorc valori


Functiile pot intoarce (sau returna) valori.
Pentru a intoarce o valoare dintr-o functie, trebuie
realizat - in corpul sau - un apel al instructiunii return,
acesta fiind urmata de o expresie valida:

return expresie
Apelul instructiunii return opreste imediat executia
functiei, intoarce expresia expresie si transfera controlul
executiei programului pe linia din care s-a realizat apelul.
Valorile intoarse pot avea orice tip, inclusiv tablou si
obiect.

54
Tehnologii WEB

Exemplu:
Fie o functie avand numele cub(), care intoarce
cubul numarului primit ca argument (adica, numarul
ridicat la puterea a treia):

function cub($numar) {
return $numar*$numar*$numar; }
Dupa ce a fost definita, o functie poate fi utilizata
oriunde se doreste, inclusiv expresiile PHP, ca in
exemplul urmator:
$numar=10;
echo 'Cubul numarului ' .$numar.' este ' .cub($numar);

55
Tehnologii WEB

Desi functiile nu pot intoarce simultan mai multe valori,


se obtin rezultate similare daca se intorc tablouri, ca in
exemplul urmator:

<?php
function note(){
return array (9, 8, 10); }
list ($fizica, $matematica, $informatica)=note();
echo "Nota la fizica: ".$fizica.";<br />";
echo "Nota la matematica: ".$matematica.";<br />";
echo "Nota la informatica: ".$informatica.".";
?>

56
Tehnologii WEB

Argumentele pot fi transferate functiilor prin


valoare si prin referinta.
1. Transferul argumentelor prin valoare
In cazul transferului prin valoare, expresia transmisa
ca argument este evaluata, iar valoarea obtinuta
este atribuita in corpul functiei variabilei cu acelasi
nume.
Este posibil ca argumentele transferate prin valoare
functiilor sa fie si tablouri, ca in exemplul prezentat in
continuare, in care functia suma_elemente() intoarce
suma elementelor tabloului transferat ca argument:

57
Tehnologii WEB

<?php
function suma_elemente($tablou) {
$nrelem=count($tablou);
$sumaelem=0;
for($i=0; $i< $nrelem;$i++) {
$sumaelem += $tablou[$i]; }
return $sumaelem;
}
echo "Suma elementelor tabloului este
".suma_elemente(array(10,5,12));
?>

58
Tehnologii WEB

2. Transferul argumentelor prin referinta


Aceasta

modalitate de transfer impune ca


argumentul functiei sa fie o variabila.
In loc sa se refere la copia valorii variabilei
transmise, variabila corespunzatoare din
functie se refera chiar la valoarea variabilei
respective, de fiecare data cand este utilizata.
Drept rezultat, functia va schimba chiar
valoarea variabilei transferata.
Exemplu in care este folosita aceasta
modalitate de transfer:
59
Tehnologii WEB

Transmitere prin
<?php
referinta adresa
function cub(&$numar) {
variabilei
$numar=$numar*$numar*$numar;
}
$n=4;
cub($n);
echo $n;
?>

60
Tehnologii WEB

Curs 8

3. Funcii
3.1. Apelarea funciilor
3.2. Funcii definite de utilizator
3.2.1. Definirea funciilor
3.2.2. Variabile automatice
3.2.3. Funcii care ntorc valori
3.2.4. Accesul la variabile declarate n exterior.
Variabile globale
3.2.5. Funcii recursive
3.2.6. Terminarea execuiei unui script

61
Tehnologii WEB

3.2.4. Accesul la variabile declarate in exterior.


Variabile globale

Fiecare functie are propriul ei set de variabile


(argumentele si/sau cele definite in corpul sau).

Toate variabilele utilizate in exteriorul oricarei


functiii (cu exceptia variabilelor superglobale) nu
sunt vizibile in interiorul acesteia, ceea ce inseamna
ca ele nu sunt globale.

62
Tehnologii WEB

Daca se doreste accesarea in interiorul functiei a unei


variabile folosite in exteriorul sau, trebuie folosit tabloul
$GLOBALS, ca in exemplul urmator:
<?php
function modifica()
{
$GLOBALS["variabila"]=100;
}
$variabila=50;
echo $variabila;
modifica();
echo " ".$variabila;
?>

63
Tehnologii WEB

De asemenea, este posibil ca una sau mai multe


variabile sa poata fi declarate globale, prin extinderea
domeniului lor de vizibilitate utilizand cuvantul-cheie
global:

[global] $variabila1, $variabila2, ...


Variabilele declarate globale (adica, in exteriorul
oricarei functii) pot fi utilizate peste tot in script,
inclusiv in definitiile functiilor.
In scopul precizat, este necesar ce ele sa fie
importate in interiorul functiilor folosind cuvantul
cheie global, ca exemplul prezentat in continuare:

64
Tehnologii WEB

<?php
function modifica(){
global $variabila;
$variabila=10;
echo $variabila;
}
modifica();
$variabila=20;
echo " ".$variabila;
?>

65
Tehnologii WEB

Se poate considera ca folosirea variabilelor declarate


globale simplifica activitatea de programare, eliminand
partial necesitatea utilizarii argumentelor in definitiile
functiilor.
Cu toate acestea, posibilitatea modificarii variabilelor
in orice punct al scriptului, inclusiv in interiorul
functiilor, poate avea drept consecinta scrierea unui
cod dificil de inteles de catre cei care il citesc.
In locul variabilelor declarate globale, este de preferat
folosirea variabilelor locale, functiile urmand sa
modifice numai acele variabile care le sunt transmise
ca argumente prin referinta.

66
Tehnologii WEB

Curs 8

3. Funcii
3.1. Apelarea funciilor
3.2. Funcii definite de utilizator
3.2.1. Definirea funciilor
3.2.2. Variabile automatice
3.2.3. Funcii care ntorc valori
3.2.4. Accesul la variabile declarate n exterior.
Variabile globale
3.2.5. Funcii recursive
3.2.6. Terminarea execuiei unui script

67
Tehnologii WEB

3.2.5. Functii recursive


Ca si in alte limbaje de programare, in PHP pot fi
definite si utilizate functiile recursive.
Se spune ca o functie care se apeleaza pe ea insasi este
o functie recursiva, metoda numindu-se recursivitate.
Ca si intr-o structura ciclica, intr-o functie recursiva
trebuie precizata o conditie de incheiere a executiei.
Daca o functie se autoapeleaza direct, se spune ca se
produce recursivitatea directa.
In schimb, daca o functie se apeleaza pe ea insasi, prin
intermediul altei functii, se spune ca se produce
recursivitatea indirecta.
In mod obisnuit, este utilizata recursivitatea directa.

68
Tehnologii WEB

In exemplul urmator este prezentata o functie


(factorial ()) in care se utilizeaza recursivitatea directa:
<?php
function factorial($n) {
if($n==1)
return 1;
else
return $n*factorial($n-1);
}
echo "Factorial = ".factorial(5);
?>

69
Tehnologii WEB

Curs 8

3. Funcii
3.1. Apelarea funciilor
3.2. Funcii definite de utilizator
3.2.1. Definirea funciilor
3.2.2. Variabile automatice
3.2.3. Funcii care ntorc valori
3.2.4. Accesul la variabile declarate n exterior.
Variabile globale
3.2.5. Funcii recursive
3.2.6. Terminarea execuiei unui script

70
Tehnologii WEB

3.2.6. Terminarea executiei unui script


O instructiune return determina sistarea
executiei functiei care o contine.
In cazul n care se doreste sistarea prelucrarii
unui ntreg script, se poate invoca functia exit():
<?php
function stop() {
exit(); }
echo "<br />Unu...";
echo "<br />Doi...";
stop();
echo "<br />Trei...";
?>
71
Tehnologii WEB

Dupa executie scriptul afiseaza:


Unu...
Doi...

Rezultatul acestui script include cuvintele "Unu"


si "Doi", dar nu si cuvntul "Trei".
Prin apelarea functiei "stop()" se executa corpul
functiei respective; la invocarea functiei, exit(),
executia scriptului se ncheie.

72
Tehnologii WEB

ntrebri?

73

S-ar putea să vă placă și