 |
Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc Comunitatea PHP Romania
|
| Subiectul anterior :: Subiectul următor |
| Autor |
Mesaj |
cold_bizquit
Data înscrierii: 16/Mai/2008
Mesaje: 2
|
| Trimis: Vin Mai 16, 2008 7:44 pm Titlul subiectului: Nelamurire cu for statement |
|
|
se da urmatorul cod:
Cod: for ($q=10,$w=20,$e=50; (($q+$w+$e)<100); $q++,$w++,$e++,print "$q+$w+$e este egal cu ".($q+$w+$e)."<br/>");
el va afisa asta :
Citat: 11+21+51 este egal cu 83
12+22+52 este egal cu 86
13+23+53 este egal cu 89
14+24+54 este egal cu 92
15+25+55 este egal cu 95
16+26+56 este egal cu 98
17+27+57 este egal cu 101
Intrebarea este de ce imi mai afiseaza si 17+27+57 este egal cu 101 de vreme ce la conditii am specificat clar ca vreau ca Cod: (($q+$w+$e)<100) ??????? :roll: |
|
| Sus |
|
NooK
Data înscrierii: 21/Iun/2007
Mesaje: 191
|
| Trimis: Vin Mai 16, 2008 9:00 pm Titlul subiectului: |
|
|
| Pai in momentul in care iti face adunarea 17 + 27 + 57 = 101 suma este de 98 care e < 100 . apoi mai verifica odata si vede ca e 101 si s-a oprit acolo. daca iti aparea 18 + 27 + 58 = 104 , atunci era o problema. |
|
| Sus |
|
mihaitha
Data înscrierii: 04/Mai/2007
Mesaje: 1801
Locație: Sibiu
|
| Trimis: Vin Mai 16, 2008 9:50 pm Titlul subiectului: |
|
|
Iti afiseaza aia pentru ca folosesti for-ul total aiurea.
For e implementat asa:
for (initializare; conditie de continuare; operatie la buclare)
Deci tu iti initializezi variabilele:
$q=10;
$w=20;
$e=50;
apoi incepi sa ciclezi, verificand ca suma lor sa fie < 100
apoi executi operatia de ciclare (4 operatii, exact in ordinea asta):
$q++;
$w++;
$e++;
print "$q+$w+$e este egal cu ".($q+$w+$e)."<br/>";
in primul rand, iti afiseaza "17+27+57 este egal cu 101" pentru ca, asa cum a observat si nook, suma este de fapt 98 in momentul verificarii. Dar tu faci operatiile in ordinea asta: verificare, incrementari, afisare. Adica total aiurea si ilogic. Apropo, nu ti s-a parut suspect faptul ca prima suma afisata e 11 + 21 + 51, desi tu ai initializat variabilele cu 10, 20 respectiv 50?
Vrei un cod care sa faca ce vrei tu? Incearca-l pe asta:<?
$q = 10;
$w = 20;
$e = 50;
while (($sum = $q + $w + $e) < 100)
echo $q++, ' + ', $w++, ' + ', $e++ , ' este egal cu ', $sum, '<br />';
?>
So, next time, use your head. It may hurt at first, but you'll get used to it.
P.S. declar oficial ca asta a fost de departe cel mai ciudat mod de a folosi for-ul. Chiar programeaza cineva in stilul asta? |
|
| Sus |
|
cold_bizquit
Data înscrierii: 16/Mai/2008
Mesaje: 2
|
| Trimis: Sâm Mai 17, 2008 10:42 am Titlul subiectului: |
|
|
| Stiu ca asta nu este metoda clasica de a folosi for statement, dar sunt in faza de invatare si incerc sa inlatur ceata de pe ceea ce nu inteleg. Metoda asta de a programa o gasesti ca si exemplu pe siteul php, unde explica for statement, exemplul 4. Imi pare rau ca nu imi este permis sa afisez linkul, ca te trimiteam acolo.Mersi pt lamurire. |
|
| Sus |
|
badtiger
Data înscrierii: 03/Noi/2006
Mesaje: 238
|
| Trimis: Sâm Mai 17, 2008 4:36 pm Titlul subiectului: |
|
|
| si daca puneai linkul de forma ht*p:// site( .)com /lol.html crezi ca nu reuseam sa-l accesam? |
|
| Sus |
|
PHPRomania Bot
Bot Member
Data înscrierii: 27/Dec/2007
Mesaje: 1
Locaţie: Server Google |
| Trimis: Mie Dec 26, 2007 7:01 pm Titlul subiectului: Ad |
|
|
|
|
|
| Sus |
|
| |
|