Document, comentariu, eseu, bacalaureat, liceu si facultate
Top documenteAdmitereTesteUtileContact
      
    


 


Ultimele referate adaugate

Adauga referat - poti sa ne ajuti cu un referat?

Politica de confidentialitate



Ultimele referate descarcare de pe site
  CREDITUL IPOTECAR PENTRU INVESTITII IMOBILIARE (economie)
  Comertul cu amanuntul (economie)
  IDENTIFICAREA CRIMINALISTICA (drept)
  Mecanismul motor, Biela, organe mobile proiect (diverse)
  O scrisoare pierduta (romana)
  O scrisoare pierduta (romana)
  Ion DRUTA (romana)
  COMPORTAMENT PROSOCIAL-COMPORTAMENT ANTISOCIAL (psihologie)
  COMPORTAMENT PROSOCIAL-COMPORTAMENT ANTISOCIAL (psihologie)
  Starea civila (geografie)
 

Ultimele referate cautate in site
   domnisoara hus
   legume
    istoria unui galban
   metanol
   recapitulare
   profitul
   caract
   comentariu liric
   radiolocatia
   praslea cel voinic si merele da aur
 
despre:
 
Scrierea unor programe PHP cu un grad avansat de complexitate
Colt dreapta
Vizite: ? Nota: ? Ce reprezinta? Intrebari si raspunsuri
 
z5h20hz
<titlu>
Scrierea unor programe PHP cu un grad avansat de complexitate</titlu>

<titlu>Modulul 6:
Scrierea instructiunilor PHP conditionale</titlu>
<titlu>Scopuri</titlu>
• invatati sa definiti si sa folositi valorile de tip adevarat/fals
• invatati sa intelegeti si sa scrieti instructiunile if si instructiunile conexe
• invatati sa intelegeti si sa scrieti instructiunile switch si instruc¬tiunile conexe
• invatati sa intelegeti si sa scrieti instructiuni de ciclare, inclusiv instructiunile while, do while si for
Majoritatea programelor utile nu se comporta in exact acelasi mod la fiecare rulare a acestora, in schimb, programele iau decizii, executand uneori o operatie si alteori alta, in functie de circumstante. De exemplu, un program util pentru calculul impozitului pe venit nu foloseste aceeasi rata a impozitului pentru fiecare contribua¬bil. In cadrul acestui modul, veti invata sa incorporati instructiunile conditionale in programele dumneavoastra, astfel incat programele sa poala lua decizii.

<titlu>Utilizarea valorilor de tip adevarat/fals</titlu>
Programele PHP iau decizii prin evaluarea unor expresii conditionale si executa instructiuni bazate pe rezultatele acestor evaluari. Expresiile conditionale sunt asimilate ca avand una din doua valori: true (adevarat) sau false (fals). Uneori, expresiile conditionale se mai numesc si expresii booleene, in onoarea matematicianului care le-a studiat, George Boole. Constanta true are valoarea l, iar const false are valoarea 0.
Puteti forma o expresie conditionala folosind constanta true sau constanta false. O modalitate mai utila de a forma o expresie conditionala consta in utilizarea operator relational pentru compararea a doua valori numerice. Sa luam in conside urmatorul exemplu:




$a<1

Aceasta expresie conditionala foloseste operatorul <, care are, in esenta, aceeasi semnificatie ca in algebra. Expresia are valoarea true daca si numai daca valoarea variabilei $a este mai mica decat unitatea; in toate celelalte cazuri, are valoarea false. PHP furnizeaza un set de asemenea operatori relationali, prezentati pe scurt in tabelul 6-1.
PHP nu va obliga sa comparati numai valori numerice. Puteti folosi operatorul relationali pentru compararea sirurilor; cu toate acestea, un sir care apare intr-o expresie conditionala este convertit la o valoare numerica inainte de evaluarea expresiei. Deseori, se ajunge la rezultate neasteptate, in general, valorile sirurilor trebuie sa fie comparate folosind o functie de comparare a sirurilor; aceste functii vor fi explicate in Modulul 7.

<tabel 6-1 Operatori relationali ai limbajului PHP>
*Operator
* Descriere

* a<b
*Adevarat daca valoarea lui a este mai mica decat valoarea lui b.

*a>b
*Adevarat daca valoarea lui a este mai mare decat valoarea lui b.

*a<=b
*Adevarat daca valoarea lui a este mai mica sau egala cu valoarea lui b.

*a>=b
*Adevarat daca valoarea lui a este mai mare sau egala cu valoarea lui b.

*a==b
*Adevarat daca valoarea lui a este egala cu valoarea lui b.

*a!=b
*Adevarat daca valoarea lui a este diferita de valoarea lui b.

*a===b
*Adevarat daca a si b sunt identice; cu alte cuvinte, daca a si b au acelasi tip si daca valoarea lui a este egala cu valoarea lui b.

*a!==b
*Adevarat daca a si b nu sunt identice; cu alte cuvinte, daca a si b nu sunt de acelasi tip sau daca valoarea lui a este diferita de valoarea lui b.
</tabel 6-1>

Pentru comoditate, puteti forma expresii conditionale fara un operator relational. De exemplu, daca $a este o variabila numerica, puteti folosi expresia $a ca expresie conditionala. Expresia este considerata ca avand valoarea false daca valoarea variabilei $a este zero, respectiv valoarea true daca valoarea variabilei respective este

diferita de zero. Daca folositi un sir ca expresie conditionala, expresia are valoarea false daca sirul este vid sau daca are valoarea speciala "\0", care simbolizeaza un octet cu valoarea zero. Similar, utilizarea unei valori nedefinite ca expresie conditio¬nala determina obtinerea valorii false. Daca folositi un tablou sau un obiect ca expresie conditionala, aceasta are valoarea false daca tabloul sau obiectul sunt vide; in caz contrar, expresia are valoarea true.
Pentru a sintetiza, iata regulile care definesc rezultatul unei expresii conditionale:
• Constantele true si false isi iau respectiv valorile lor booleene corespunzatoare.
• O expresie conditionala care consta dintr-o valoare nedefinita are valoarea false; in caz contrar, rezultatul depinde de tipul valorii, in speta numeric, sir, tablou sau obiect.
• O expresie conditionala care consta dintr-o valoare numerica are valoarea false daca valoarea este zero; in caz contrar, are valoarea true.
• O expresie conditionala care consta dintr-o valoare de tip sir are valoarea false daca sirul este vid; in caz contrar, are valoarea true.
• O expresie conditionala care consta dintr-o valoare de tip tablou sau obiect are valoarea false daca tabloul sau obiectul sunt vide; in caz contrar, are valoarea true.
• O expresie conditionala alcatuita dintr-un operator relational si din operanzii sai ia valori in conformitate cu rezultatul comparatiei (numerice sau nu).

Puteti forma expresii conditionale complexe prin unirea a doua expresii conditionale cu ajutorul unui operator logic. De exemplu, expresia urmatoare este adevarata daca ambele expresii conditionale care o compun sunt adevarate:

$a < 1 AND $b < 1

Cu alte cuvinte, expresia este adevarata daca atat variabila $a, cat si variabila $b au valori mai mici decat unitatea. Tabelul 6-2 prezinta pe scurt operatorii logici ai limbajului PHP. Retineti ca puteti prefixa o expresie conditionala cu operatorul !, care inverseaza valoarea „adevarat" sau „fals" a operandului sau.
In general, expresiile sunt evaluate de la stanga la dreapta. Totusi, operatorii care apar in partea superioara a tabelului dispun de o precedenta mai ridicata si sunt efectuati anterior operatorilor cu o precedenta mai redusa, daca nu sunt folosite paranteze pentru a specifica o alta ordine a operatiilor.

<tabel 6-2 Operatori logici ai limbajului PHP>

*Operator
* Descriere

*x AND y
*Adevarat daca atat x, cat si y sunt adevarate.

*x && y
*Adevarat daca atat x, cat si y sunt adevarate.

*x OR y
*Adevarat daca minimum una din expresiile x si y este adevarata.

*x || y
*Adevarat daca minimum una din expresiile x si y este adevarata.

*x XOR y
*Adevarat daca numai una din expresiile x si y este adevarata.

*!x
*Adevarat daca x este falsa.
</tabel 6 -; 2>

<Sfatul specialistului>
Intrebare: De ce foloseste PHP doi operatori logici reprezentand conjunctii (AND si &&) si doi operatori logici reprezentand, disjunctii (OR si ||)? Care sunt diferentele intre cele doua tipuri de operatori?
Raspuns: Ambii operatori de conjunctie executa aceeasi operatie, ca de altfel si ambii operatori de disjunctie. Cu toate acestea, operatorii difera din punctul de vedere al precedentei - caracteristica determinanta a ordinii in care sunt executate operatiile in timpul evaluarii expresiilor. Operatorii && si || au o prece¬denta relativ ridicata, in timp ce operatorii AND si OR au o precedenta relativ redusa. Tabelul 6-3 indica precedenta operatorilor PHP, continand numerosi operatori care nu au fost inca prezentati.

<tabel 6-3 Precedenta operatorilor PHP>
*Operator

*! I ++ — (int) (double) (string) (array) (object)

** / %

*+ - .

*< <= > >=

*= = != = = = ! = =

*&

*?

*?

*&&

*??

*?:

*= += -= *= /= .= %= &= ?= ?= I= <<= >>=

*And

*Xor

*Or

*,
</tabel 6-3>

De exemplu, sa consideram urmatoarea expresie:

$a + $b * $c

Precedenta operatorului de multiplicare * este mai ridicata decat aceea a operatorului de adunare +, deci inmultirea este efectuata prima, chiar daca adunarea apare la stanga inmultirii. Cu alte cuvinte, expresia este evaluata ca si cum ar fi fost scrisa astfel:

$a + ( $b * $c )

Daca doriti ca adunarea sa fie efectuata prima, puteti folosi paranteze in cadrul expresiei, astfel:

( $a + $b ) * $c

<Test „la minut">
Sa presupunem ca variabila $a are valoarea 10, variabila $b are valoarea l, iar variabila $c are valoarea 1:
• Care este valoarea expresiei $a < $b?
• Care este valoarea expresiei $a <= $b?
• Care este valoarea expresiei $a > $b?
• Care este valoarea expresiei $b >= $c?
• Care este valoarea expresiei $a > $b AND $b >= $c?
</Test „la minut">

<titlu>Scrierea instructiunilor if simple</titlu>
Expresiile conditionale nu sunt deosebit de interesante sau utile ca atare. Aceste expresii sunt insa esentiale pentru scrierea instructiunilor conditionale, prin care se iau decizii. Cea mai simpla instructiune conditionala este instructiunea if, care executa doua operatii. Mai intai, evalueaza o expresie conditionala. Apoi, daca si numai daca valoarea expresiei conditionale este true, instructiunea if executa o instructiune specificata.
Iata o instructiune if simpla:

If ($numar > 10)
Echo „ Acesta este un numar mare „;

Sa ne reamintim ca, in general, limbajul PHP ignora spatiile albe. In mod conventional, o instructiune asociata unei instructiuni if este scrisa decalat in raport cu aceasta. Acest procedeu este recomandat deoarece prin utilizarea sa este facilitata citirea programului. Atunci cand este executata, instructiunea if evalueaza expresia conditionala $numar > 10, care este adevarata numai daca valoarea variabilei $numa este mai mare decat 10. Instructiunea echo este executata numai daca valoarea variabilei $numar este mai mare decat 10.
Pentru a acumula experienta in utilizarea instructiunii if, nu uitati sa parcurgeti Proiectul 6-1.

<titlu>Proiect 6-1: Testarea valorilor numerice</titlu>
In cadrul acestui proiect, veti scrie si veti executa un mic program PHP, care include o instructiune if. Programul indica daca un numar pe care il introduceti este sau nu mai mare decat 10.

<nota>Raspunsuri la test:
• false
• false
• true
• true
• true
</nota>

<titlu>Scopul proiectului</titlu>
• Prezentarea modului de functionare a instructiunii if

<titlu>Pas cu pas</titlu>
1. Plasati urmatorul script PHP intr-un fisier denumit p-6-1. php si incarcati acest fisier in serverul dumneavoastra PHP:

<HTML>
<HEAD>
<TITLE>Proiect 6-1</TITLE>
</HEAD>
<BODY>
<!--Fisier p-6-1.php -->
<?php echo „ Numarul introdus a fost : $numar.”; if ($numar > 10) echo „ <BR> Acesta este numar mare.”;
?>
</BODY>
</HTML>

2. Plasati urmatoarea pagina HTML intr-un fisier denumit p-6-1 .html si incarcati acest fisier in serverul dumneavoastra, plasandu-l in acelasi catalog ca si fisierul p-6-1 .php:

<HTML>

<HEAD>
<TITLE>Proiect 6-1</TITLE>
</HEAD>
<BODY>
<!--Fisier p-6-1.html-->
<FORM METHOD=”POST” ACTION=”p-6-1.php”>
Introduceti o valoare numerica:
<BR><INPUT TYPE=”TEXT” NAME=”numar”>
</FORM>
</BODY>
</HTML>

3. Orientati un browser Web spre adresa URL a fisierului incarcat in etapa precedenta. Ecranul browserului trebuie sa fie asemanator celui prezentat in ilustratia urmatoare. Introduceti un numar si apasati pe tasta ENTER.*
4. In momentul executiei scriptului de prelucrare, acesta compara valoarea pe care ati introdus-o cu valoarea 10. Daca ati introdus o valoare mai mare decat 10, scriptul afiseaza un mesaj. Un rezultat caracteristic este prezentat in ilustratia urmatoare.
<imagine>
Enter a numeric value:
11
The nxnnber entertd was: 11.
That's a big number.
</imagine>

<nota>
*In original este mentionata tasta RETURN, nume care nu se mai utilizeaza de mult in tastaturile calculatoarelor. - N.T.
</nota>

<Test „la minut">
• Scrieti o instructiune care afiseaza mesajul „aoleu!" daca valoarea varia¬bilei $erori este mai mare decat zero.
• Scrieti o instructiune if care afiseaza mesajul „nu trece" daca valoarea variabilei $culoare este egala cu valoarea variabilei $rosu sau cu valoarea variabilei $galben. </Test „la minut">
<titlu>Scrierea unor instructiuni if mai complexe</titlu>
Sa presupunem ca doriti sa executati nu una, ci doua instructiuni in cazul in care o anumita expresie conditionala este adevarata. Puteti scrie doua instructiuni if, cate una pentru fiecare dintre instructiunile pe care doriti sa le executati. Alternativ, puteti crea un grup de instructiuni, prin includerea unei serii de instructiuni intre paranteze acolade. Un grup de instructiuni se comporta ca o singura instructiune si se poate asocia cu o instructiune if. Sa consideram urmatorul exemplu:

if ($numar > 10 )
? echo „<BR>Numarul este mai mare decat 10.”; echo „<BR>Deci, trebuie sa fie mai mare.”;
?

In cazul in care expresia conditionala are valoarea true, sunt executate ambele instructiuni din cadrul grupului de instructiuni. Unii programatori prefera sa formateze programe ca acesta in alt mod. De exemplu, ei pot scrie ceva de genul urmator:

if ($numar > 10 )? echo „<BR>Numarul este mai mare decat 10.”; echo „<BR>Deci, trebuie sa fie mai mare.”;
?

Acest stil este mai compact, dar face dificila identificarea parantezei acolade de deschidere corespunzatoare parantezei de inchidere. Probleme de lizibilitate de acest gen devin importante la scrierea unor instructiuni if mai complicate.
Sa presupunem ca doriti sa executati o instructiune atunci cand o conditie este adevarata si o alta instructiune cand conditia este falsa. Instructiunea else va permite sa procedati astfel. Sa luam in considerare urmatorul exemplu:

if ($numar > 10 ) echo „<BR>Acesta este un numa mare .”; else echo „<BR>Acesta este un numa mic.”;
<nota>
Raspunsuri la test:
• if ($erori > 0) echo "aoleul";
• if ($culoare == $rosu OR $culoare == Sgalben) echo "nu trece';
</nota>

In acest exemplu, mesajul „Acesta este un numar mare" este afisat atunci cand valoarea variabilei $numar este mai mare decat 10; mesajul „Acesta este un numarul mic" este afisat in caz contrar. Daca doriti, puteti folosi o instructiune else cu un grup de instructiuni. De exemplu:

if ($numar > 10 ) echo „<BR>Acesta este un numar mare.”; else
? echo „<BR>Numarul este mai mic decat 10.”; echo „<BR>Este un numar mic.”;
?

Instructiunea asociata unei instructiuni if sau else poate fi ea insasi o instruc¬tiune if. O asemenea instructiune if se numeste instructiune if imbricata. Iata un exemplu de 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 afiseaza mesajul „Acesta este un numar foarte mare." daca valoarea variabilei $numar depaseste 100; in caz contrar, daca valoarea variabilei $numar este mai mare decat 10, se afiseaza mesajul „Acesta este un numar mare.". Daca valoarea variabilei $numar este mai mica sau egala cu 10, exemplul afiseaza mesajul „Acesta este un numar mic.".
Instructiunile if imbricate pot deveni extrem de dificil de inteles daca numarul de instructiuni si nivelul de imbricare nu sunt relativ reduse. Deci trebuie sa le folositi cu economie.
O instructiune corelata atat cu instructiunea if, cat si cu instructiunea else, este instructiunea elseif. Cand este folosita corect, poate fi mai simplu de inteles decat o instructiune if imbricata, logic echivalenta cu aceasta. Iata un exemplu de instrutiune 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 functionalitatea exemplului anterior, afisand mesajul „Acesta este un numar foarte mic." pentru valori ale variabilei $numar mai mici sau egale cu 1. Intr-un caz general, cu o instructiune if si cu o instructiune else poate fi asociat

un numar mult mai mare de instructiuni elseif. PHP evalueaza expresiile conditio¬nale in mod succesiv, pornind de la expresia conditionala asociata instructiunii if . PHP executa instructiunea asociata primei expresii conditionale care are valoarea true; daca nici o expresie conditionala nu are valoarea true, PHP executa instruc¬tiunea asociata cu instructiunea else. Este permisa omiterea instructiunii else, caz in care nu este executata nici o instructiune daca nici una din expresiile conditionale nu are valoarea true.

<Test „la minut">
• Scrieti o instructiune if si o instructiune else pentru a afisa mesajul „stai" daca valoarea variabilei $culoare este egala cu valoarea variabilei $rosu sau cu valoarea variabilei $galben, respectiv pentru a afisa mesajul „liber" in caz contrar.
• Scrieti o instructiune if si o instructiune else pentru a inmulti valoarea variabilei $numar cu 10 daca valoarea variabilei $factor este l, respectiv pentru a inmulti valoarea variabilei $numar cu 100 in caz contrar. </Test „la minut">

<titlu>Scrierea instructiunilor switch, break si default</titlu>

Instructiunea if va permite sa luati o decizie in doua sensuri. Pentru a putea lua o decizie in mai multe sensuri, puteti folosi mai multe instructiuni if , else sau elseif. Cu toate acestea, cand doriti ca programul dumneavoastra sa aleaga dintr-un set de alternative care pot fi reprezentate prin valori intregi, instructiunea switch este o optiune mai convenabila.
De exemplu, sa presupunem ca valoarea variabilei $numar este l, 2 sau 3, reprezentand respectiv dimensiunile mica, medie si mare. Iata un mic program care afiseaza dimensiunile asociate valorilor variabilei $numar:

Switch($numar)
? case(1): echo „ mic”; break;

<nota>
Raspunsuri la test:
• if ($culoare == $rosu OR $culoare == $galben) echo "stai"; else echo "liber";
• if ($factor ==1)
$numar = 10 * $numar; else
$numar = 100 * $numar;
</nota>

94 case(2): echo „mediu”; break; case(3): echo „mare”; break; default: echo „Acesta nu este un cod valabil”;
?

Actiunea unei instructiuni switch este determinata de valoarea unei expresii intregi, nu de valoarea unei expresii conditionale. Numele variabilei este dat intre parantezele care urmeaza dupa cuvantul cheie switch. Parantezele acolade sdelimi¬teaza o serie de instructiuni case si o instructiune default optionala, fiecare dintre instructiunile cuprinse intre paranteze putand avea instructiuni asociate. Cand este executata, instructiunea switch incearca sa stabileasca o identitate intre valoarea variabilei sale asociate si valoarea asociata unei instructiuni case. Se vor executa instructiunile asociate primei instructiuni case pentru care identitatea respectiva est valabila. Daca valoarea variabilei din instructiunea switch nu corespunde nici uneia din valorile asociate instructiunilor case, se vor executa instructiunile asociate instructiunii default, daca exista o asemenea instructiune.
Un procedeu de programare indicat consta in aceea ca fiecare instructiune case din cadrul unei instructiuni switch sa se incheie cu o instructiune break. Instructiunea break determina incheierea executiei instructiunii switch, transferand controlul urmatoarei instructiuni secventiale care succede instructiunii switch. In absenta instructiunii break, executia trece la urmatoarea instructiune case sau default, fapt nedorit in majoritatea cazurilor.

<Sugestie>
Nu este necesar sa folositi numere intregi consecutive in instructiunile case ale unei instructiuni switch. Daca preferati, puteti folosi numere intregi non-consecutive, numere cu virgula mobila sau siruri.</Sugestie>

<Sfatul specialistului>

Intrebare: PHP include numeroase instructiuni conditionale, incluzand instructiunile if, else, elseif si switch. Exista si alte mecanisme de luare a deciziilor?
Raspuns: Da. Operatorul conditional ?:, denumit uneori operator ternar sau operator intrebare-doua puncte, constituie o alta modalitate de a scrie decizii in PHP. Operatorul conditional formeaza o expresie care se poate folosi in multe contexte PHP. Iata sintaxa de utilizare a acestuia: expresie-conditionala ? valoare-adevarat : valoare-fals

Observati cum semnul intrebarii este separat de caracterul doua puncte prin valoarea valoare-adevarat. Operatorul conditional isi evalueaza expresia conditio¬nala. Daca expresia este evaluata la valoarea true (adevarat), operatorul conditio¬nal returneaza valoarea valoare-adevarat; in caz contrar, returneaza valoarea valoare-fals. Operatorul conditional va permite sa specificati deciziile intr-o maniera foarte concisa.
De exemplu, sa luam in considerare urmatoarea instructiune de atribuire, care foloseste un operator conditional: $a = ($b > $c) ? 1 : 2
Aceasta instructiune de atribuire compara valorile variabilelor $b si $c. Daca valoarea variabilei $b este mai mare decat aceea a variabilei $c, atunci variabilei $a ii este atribuita valoarea 1; in caz contrar, variabilei respective ii este atribuita valoarea 2. </Sfatul specialistului>

<Test „la minut">
• Scrieti o instructiune switch care testeaza valoarea variabilei $exponent. Instructiunea trebuie sa atribuie variabilei $factor o valoare dupa cum urmeaza: daca $exponent este l, $factor primeste valoarea 10; daca $exponent este 2, $factor primeste valoarea 100; altfel, $factor primeste valoarea 0.
• in programare, se recomanda ca fiecare instructiune case sa fie asociata cu o instructiune ________.</Test „la minut">

<titlu>Scrierea instructiunilor for</titlu>
Instructiunea for este o instructiune bucla sau o instructiune iterativa; cu alte cuvinte, o instructiune care executa in mod repetat instructiunile asociate. Iata un exemplu de utilizare a unei instructiuni for:
<nota>
Raspunsuri la test:
• switch($exponent)
A case 1:
$factor = 10; break; case 2:
$factor =100; break; default:
$factor = 0;
S
• break</nota>

$suma = 0 for ($n =1; $n<=3; $n++)
$suma += $n; echo !<BR>Suma intregilor de la 1 la $numa este $suma.”;
96

In exemplu se calculeaza suma intregilor cuprinsi intre l si 3. Pentru aceasta, mai intai se initializeaza variabila $suma la valoarea 0. Apoi, se executa o instructiune for care incrementeaza in mod repetat valoarea variabilei $suma.
Pentru a vedea cum functioneaza mecanismul acestei instructiuni, sa examinam componentele instructiunilor for. Instructiunea for include trei expresii, care apar intre paranteze; fiecare expresie este separata de vecina sa printr-un caracter punct si virgula. De asemenea, instructiunea for include o instructiune sau un grup de instructiuni, cunoscute sub numele de corpul instructiunii for. in exemplul de mai sus, instructiunea $suma += $n este corpul instructiunii for.
Sa examinam mai amanuntit cele trei expresii:
• Prima expresie este expresia de initializare. Aceasta se executa atunci cand PHP ajunge la instructiunea for. In exemplu, expresia de initializare atribuie valoarea variabilei $n, variabila denumita variabila de ciclare sau index.
• A doua expresie este expresia de test. Aceasta este o expresie conditionala care indica daca se executa sau nu corpul instructiunii, in general, face referire la variabila de ciclare. In cadrul exemplului, expresia de test compara valoarea variabilei $n cu valoarea 3. Expresia de test este evaluata pentru prima data imediat dupa evaluarea expresiei de initializare.
• Cea de-a treia expresie este expresia pas. in general, aceasta modifica una sau mai multe variabile la care se face referire in expresia test. in cadrul exemplului, expresia pas incrementeaza valoarea variabilei $n.

Secventa de executie a unei instructiuni for este urmatoarea:
1. Se evalueaza expresia de initializare.
2. Se evalueaza expresia test.
3. Daca rezultatul evaluarii expresiei test este false, se executa etapa 7.
4. Se executa corpul buclei.
5. Se evalueaza expresia pas.
6. Se trece la etapa 2.
7. Se incheie executia instructiunii for, prin executarea urmatoarei instructiuni secventiale.

Instructiunea for este utila pentru numarare si executarea in mod repetat a unor actiuni. Ca alt exemplu, iata o instructiune for care creeaza numeroase controale de tip buton. Numarul controalelor create este determinat de valoarea variabilei $numar:

for($n=0;$n<=$numar; $n++) echo „<BR><INPUT TYPE =\”BUTTON\” VALUE=\”$n\”>\n”;

Asa cum veti vedea in Modulul 8, instructiunea for este utila mai ales in lucrul cu tablouri.
<Test „la minut">
• Scrieti o instructiune for care calculeaza suma intregilor cuprinsi intre l si 100.
• Scrieti o instructiune for care afiseaza la iesire etichete HTML <BR>. Numarul etichetelor afisate trebuie sa fie egal cu valoarea variabilei $n. </Test „la minut">

<titlu>Scrierea instructiunilor while si do while</titlu>
Practic, instructiunile while si do while reprezinta versiuni „manuale" ale instructiunii for. Daca o instructiune for are trei expresii, o instructiune while sau do while una singura, si anume expresia de test. Asa cum se intampla de obicei, expresiile iei instructiuni for sunt optionale; fara o expresie de initializare sau o expresie pas, ' instructiune for opereaza in acelasi mod ca o instructiune while. in consecinta, urmatoarele doua instructiuni sunt echivalente:

for ( ; $i<= 3; ) $suma += $i;
while ($i <= 3) $suma ++ $i;

Cand folositi o instructiune while, trebuie sa furnizati un mecanism oarecare, analog expresiei de incrementare a instructiunii for, care actualizeaza variabilele la care se face referire in expresia de test. De asemenea, sunteti responsabil cu initializarea tuturor valorilor folosite in expresia de test.
Secventa de executie a unei instructiuni while este urmatoarea:
1.Se evalueaza expresia test.
2.Daca rezultatul este false, se trece la etapa 5.
3.Se executa corpul buclei.
4.Se trece la-etapa 1.
5. Se paraseste bucla, prin executarea urmatoarei instructiuni secventiale.
Iata un exemplu care utilizeaza instructiunea while:

$n = 0;
$suma = 0;
while ($n <= 3)
?

<nota>
Raspunsuri la test:
• $suma = 0; for ($i = 1; $i <= 100; $i++)
$suma = $suma + $i;
• for ($i = 1; $i <= $n; $i++) echo " <BR>;
</nota>

$suma = $suma +$n;
$n++;
? echo „Suma este $suma.”

Remarcati ca instructiunea $n = 0; initializeaza bucla si ca instructiunea n++; incrementeaza valoarea variabilei bucla $n. Instructiunea while este cel mai utila atunci cand un alt program necesar executa deja aceste functii; in asemenea situatii, instructiunea while este mai clara decat o instructiune for degenerata, careia ii lipsesc una sau mai multe dintre expresiile sale obisnuite.
Instructiunea do while este oarecum asemanatoare instructiunii while. Diferenta este aceea ca instructiunea do while isi executa corpul inainte de a-si evalua expresia de test. Astfel, corpul buclei unei instructiuni do while este intotdeauna executat cel putin o data; corpul unei instructiuni while este omis daca expresia de test are initial valoarea false.

Secventa de executie a unei instructiuni do while este urmatoarea:
1. Se executa corpul buclei.
2. Se evalueaza expresia de test
3. Daca rezultatul este adevarat, se trece la etapa 1.
4. Se incheie executia buclei, prin executarea urmatoarei instructiuni secventiale.
Iata un exemplu care foloseste o instructiune do while. Observati ca amplasarea expresiei de test imediat dupa corpul buclei va reaminteste faptul ca executarea corpului are loc inainte de evaluarea expresiei de test

$suma = 0;
$n = 1; do
?
$suma += $n;
$n++;
?
while ($n <= $numar); echo „<BR>Suma intregilor cuprinsi intre 1 si $numar este $suma.”;

<Sfatul specialistului>
Intrebare: Instructiunea while si instructiunea do while par foarte asemanatoare. Cand trebuie sa folosesc o instructiune do while in locul unei instructiuni while?
Raspuns: Expertii in programare au demonstrat ca este posibila scrierea oricarui program fara a folosi nici o instructiune do while. Deci, utilizarea instructiunii do while este o chestiune de comoditate, nu de necesitate. Va puteti des¬curca folosind numai instructiuni while.

In general, este bine sa fiti prudent si sa folositi instructiunea while, care evalueaza o expresie de test inainte, de executarea corpului acesteia. Astfel, se evita executarea eronata a corpului buclei. Totusi, cand vedeti un model ca acesta:
<o actiune oarecare>;
while(expresie - test)
A
<aceeasi actiune>
?

atunci puteti inlocui linistit programul respectiv cu un program care foloseste o instructiune do while: do
A
<o actiune oarecare>;
?while (expresie-test);
</sfatul specialistului>

<Test „la minut">
• Scrieti o instructiune while si instructiunile asociate care afiseaza suma intregilor cuprinsi intre l si 100.
• Scrieti o instructiune do while si instructiunile asociate care afiseaza suma intregilor cuprinsi intre l si 100. </Test „la minut">

<titlu>Proiect 6-2: Validarea datelor de intrare introduse de utilizator</titlu>

In cadrul acestui proiect, veti crea un formular HTML si un script PHP care permit unui utilizator sa introduca date personale de categoria celor folosite intr-o agenda de adrese e-mail. Scriptul PHP valideaza datele introduse de utilizator, garantand existenta datelor in campurile obligatorii.

<titlu>Scopurile proiectului</titlu>
• Prezentarea modului de utilizare a instructiunilor conditionale
• Prezentarea unui mod de validare a datelor dintr-un formular

<nota>
Raspunsuri la test:
• $suma = 0;
$n = 1 ;
while ($n <= 100)
$suma += $n; echo "suim este $suma.";
• $suma = 0;
$n = 1; do
A
$suma += $n;
Swhile ($n <= 100) echo „suma este $suma.";
</nota>

<titlu>Pas cu pas</titlu>
1. Plasati urmatorul script PHP intr-un fisier denumit p-6-2. php si incarcati acest fisier in serverul dumneavoastra PHP:

<HTML>
<HEAD>
<TITLE>Proiect 6-2</TITLE>
</HEAD>
<BODY>
<! -- Fisierul p-6-2.php -- >
<?php

$erori=0; if (!trim($porecla))
? echo „<BR><B>Porecla</B> este obligatorie.”;
$erori++;
?

if (!trim($prenume))
? echo „<BR><B>Prenume</B> este obligatoriu.”;
$erori++;
?

if (!trim($nume))
? echo „<BR><B>Numele</B> este obligatoriu.”;
$erori++;
?

if (!trim($email))
? echo „<BR><B>Adresa primara de e-mail</B>”.
„ este obligatorie.”;
$erori++;
?

if ($erori>0) echo „<BR><BR><BR>Va rugam folositi butonul Back ”.
„ al browserului dumneavoastra pentru a reveni la „.
„formular, corectati ”; if ($erori == 1) echo „eroarea, ”; if ($erori > 1) echo „erorile, ”; if ($erori > 0) echo „si reexpediati formularul.”;

?>

</BODY>
</HTML>

2. Plasati urmatoarea pagina HTML intr-un fisier denumit p-6-2.html si incarcati acest fisier in serverul dumneavoastra, plasand fisierul in acelasi catalog cu fisierul p-6-2.php:

<HTML>
<HEAD>
<TITLE>Proiect 6-2</TITLE>
</HEAD>
<BODY>
<! -- Fisierul p-6-2.html -- >
<FORM METHOD=”POST” ACTION=” p-6-2.php”>
<H1>Informatii privind persoana de contact</H1>
<TABLE>

<TR>
<TD><B>Porecla:</B></TD>
<TD><INPUT TYPE=”TEXT” NAME=”porecla”></TD>
</TR>

<TR>
<TD>Titlu:</TD>
<TD><INPUT TYPE=”TEXT” NAME=”titlu”></TD>
</TR>

<TR>
<TD><B>Prenume:</B></TD>
<TD><INPUT TYPE=”TEXT” NAME=”prenume”></TD>
</TR>

<TR>
<TD>Prenumele tatalui:</TD>
<TD><INPUT TYPE=”TEXT” NAME=”prenume_tata”></TD>
</TR>

<TR>
<TD><B>Nume:</B></TD>
<TD><INPUT TYPE=”TEXT” NAME=”Nume”></TD>
</TR>

<TR>
<TD><B>Adresa de e-mail principala:</B><TD>
<TD><INPUT TYPE=”TEXT” NAME”email”></TD>
<TD WIDTH=”20”>&nbsp;</TD>
<TD>Adresa de e-mail secundara:</TD>
<TD><INPUT TYPE=”TEXT” NAME=”emailsecundar”></TD>
</TR>

<TR>
<TD>Numele companiei:</TD>
<TD><INPUT TYPE=”TEXT” NAME=”nume_companie”></TD>
</TR>

<TR>
<TD>Adresa firmei:</TD>
<TD><INPUT TYPE=”TEXT” NAME=”adresa_firmei1”></TD>
<TD WIDTH=”20”>&nbsp;</TD>
<TD>Adresa la domiciliu:</TD>
<TD><INPUT TYPE=”TEXT” NAME=”adresa_acasa”></TD>
</TR>

<TR>
<TD></TD>
<TD><INPUT TYPE=”TEXT” NAME”adresa_firmei2”></TD>
</TR>

<TR>
<TD>Oras:</TD>
<TD><INPUT TYPE=”TEXT” NAME=”oras_birou”></TD>
<TD WIDTH=”20”>&nbsp;</TD>
<TD>&nbsp;</TD>
<TD><INPUT TYPE=”TEXT” NAME=”oras_acasa”></TD>
</TR>

<TR>
<TD>Stat:</TD>
<TD><INPUT TYPE=”TEXT” NAME=”stat_birou”></TD>
<TD WIDTH=”20”>&nbsp;</TD>
<TD>&nbsp;</TD>
<TD><INPUT TYPE=”TEXT” NAME=”stat_acasa”></TD>
</TR>

<TR>
<TD>Cod postal:</TD>
<TD><INPUT TYPE=”TEXT” NAME=”cod_birou”></TD>
<TD WIDTH=”20”>&nbsp;</TD>
<TD>&nbsp;</TD>
<TD><INPUT TYPE=”TEXT” NAME=”cod_acasa”></TD>
</TR>

<TR>
<TD>Telefon:</TD>
<TD><INPUT TYPE=”TEXT” NAME=”telefon_birou”></TD>
<TD WIDTH=”20”>&nbsp;</TD>
<TD>&nbsp;</TD>
<TD><INPUT TYPE=”TEXT” NAME=”telefon_acasa”></TD>
</TR>
<TR>
<TD>Data nasterii:</TD>
<TD><INPUT TYPE=”TEXT” NAME=”data_nastere”></TD>
</TR>

<TR>
<TD>Numele sotului/sotiei:</TD>
<TD><INPUT TYPE=”TEXT” NAME=”nume_sot”></TD>
<TD WIDTH=”20”>&nbsp;</TD>
<TD>Numele copiilor:</TD>
<TD><INPUT TYPE=”TEXT” NAME=”copii”></TD>
</TR>

<TR>
<TD>Ziua nuntii:</TD>
<TD><INPUT TYPE=”TEXT” NAME=”zi_nunta”></TD>
</TR>

</TABLE>

<BR>
<BR>
<BR>
<INPUT TYPE=”SUBMIT” VALUE=”Trimite”>
<BR>
<BR>
<INPUT TYPE=”RESET” VALUE=”Sterge datele”>

</FORM>
</BODY>
</HTML>

3. Dedicati un interval de timp studiului scriptului PHP, acordand o atentie speciala modului de utilizarea instructiunilor conditionale pentru validarea datelor din formular.
4. Orientati un browser Web spre adresa URL a fisierului HTML incarcat anterior. Ecranul browserului trebuie sa fie asemanator celui prezentat in figura 6-1. Introduceti valori in mai multe campuri si apoi executati clic pe butonul „Trimite".

<figura 6-1>Formularul de introducere a datelor pentru proiectul 6-2.

< ecran> Contact Information
<campuri>
Nickname:
Title:
Fisrt name:
Middle name:
Last name:
Primary Email: Secondary Email:
Company Name:
Office address: Home address:
City:
State:
Zip:
Phone:
Birthday:
Spouse name: Childres Names:
Anniversary:
</campuri>
<buton>Submit </buton>
<buton>Clear the form </buton>

</figura 6-1>

5. La executarea scriptului, acesta verifica daca porecla, prenumele, numele si adresa de e-mail exista; daca vreunul din aceste campuri lipseste, scriptul afiseaza un mesaj de eroare. Un rezultat caracteristic este prezentat in figura 6-2.

<figura 6-2> Datele de iesire ale proiectului 6-2, afisand erorile de validare.

Nickname is required.
First same is required.
Last name is required.
Primary email address is required.
Please use your browser's back button to return to tbe form, correct the errors, and re-submit the form.

</figura 6-2>

<Test de evaluare>
1. Scrieti o instructiune if care atribuie variabilei $y valoarea l daca variabila $x are valoarea l, in caz contrar atribuind variabilei $y valoarea 2.
2. Scrieti o instructiune switch care atribuie valoarea 5 variabilei $y daca variabila $x are valoarea l, respectiv valoarea 15 daca variabila $x are valoarea 2, valoa¬rea 20 daca variabila $x are valoarea 3, valoarea -1 in celelalte situarii.
3. Scrieti o bucla for care are ca date de iesire o serie de asteriscuri; numarul asteriscurilor trebuie sa fie dat de valoarea variabilei $stele.
4. Scrieti o instructiune if care atribuie variabilei $y valoarea l daca variabila $x are valoarea l, respectiv valoarea 3 daca variabila $x are valoarea 2, valoarea 5 daca variabila $x are valoarea 3, valoarea -l in celelalte situarii.
</Test de evaluare>


Colt dreapta
Creeaza cont
Comentarii:

Nu ai gasit ce cautai? Crezi ca ceva ne lipseste? Lasa-ti comentariul si incercam sa te ajutam.
Esti satisfacut de calitarea acestui document, eseu, cometariu? Apreciem aprecierile voastre.

Nume (obligatoriu):

Email (obligatoriu, nu va fi publicat):

Site URL (optional):


Comentariile tale: (NO HTML)


Noteaza documentul:
In prezent fisierul este notat cu: ? (media unui numar de ? de note primite).

2345678910

 
Copyright© 2005 - 2024 | Trimite document | Harta site | Adauga in favorite
Colt dreapta