Capitolul 1.3. Instructiunea FOR

Vezi subiectul anterior Vezi subiectul urmator In jos

Capitolul 1.3. Instructiunea FOR

Mesaj  zooky la data de Mier Mar 18, 2009 12:43 am

Asa cum probabil va asteptati, exista o multime de moduri pentru a scrie un program; haideti sa incercam o alta varianta a programului de conversie de temperatura :

main() /* Fahrenheit-Celsius table */
{
int fahr;
for (fahr = 0; fahr <= 300; fahr = fahr + 20)
printf("%4d %6.1f\n", fahr, (5.0 / 9.0) * (fahr - 32));
}

Aceasta va produce aceleasi rezultate dar, cu siguranta, arata altfel decit prima. O modificare esentiala este eliminarea majoritatii variabilelor; a ramas numai "fahr", declarata ca "int" (observati specificatorul "%d" in printf). Limitele inferioara si superioara si marimea pasului apar doar ca si constante in instructiunea "for", ea insasi o constructie noua, iar expresia care calculeaza temperatura Celsius apare acum ca al treilea argument din "printf" in loc de a fi o instructiune de asignare separata.
Aceasta ultima schimbare este un exemplu pentru o regula generala in C - in orice context in care este permisa folosirea valorii unei variabile de un anumit tip, se poate folosi o expresie de acel tip. Deoarece al treilea argument al lui "printf" trebuie sa fie o valoare flotanta pentru a se potrivi cu "%6.1f", orice expresie flotanta poate apare pe locul ei.

Instructiunea "for" este o bucla, o generalizare a lui "while". Daca o comparati cu "while", aceasta afirmatie va va fi clara. Ea contine trei parti separate prin punct si virgula. Prima parte

fahr = 0

se face o data, inainte ca bucla propriu-zisa sa inceapa. A doua parte este testul sau conditia care controleaza bucla:

fahr <= 300

Este evaluata aceasta conditie; daca ea este adevarata, este executat corpul buclei (la noi, o singura "printf"). Urmeaza apoi pasul de reinitializare

fahr = fahr + 20

care este executat si apoi conditia este reevaluata. Bucla se termina atunci cind conditia devine falsa. La fel ca si la instructiunea "while", corpul buclei poate fi alcatuit dintr-o singura instructiune sau dintr-un grup de instructiuni inclus intre acolade. Partile de initializare si reinitializare pot fi o
singura expresie.

Alegerea intre "while" si "for" este arbitrara, bazata pe ceea ce ne pare noua a fi mai clar. Instructiunea "for" este potrivita in mod uzual pentru buclele in care initializarea si reinitializarea sint instructiuni unice si logic inrudite deoarece este mai compacta decit "while" si pastreaza instructiunile de control al buclei intr-un singur loc si impreuna.

Exercitiul 1.5. Modificati programul de conversie temperatura pentru a tipari tabela in ordine inversa, adica de la 300 de grade la zero.
avatar
zooky
Moderator
Moderator

Numarul mesajelor : 147
Data de inscriere : 15/03/2009
Varsta : 24
Localizare : Cernatesti City

Vezi profilul utilizatorului http://e-learning.forumhit.ro

Sus In jos

Vezi subiectul anterior Vezi subiectul urmator Sus


 
Permisiunile acestui forum:
Nu puteti raspunde la subiectele acestui forum