Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
AccessAdobe photoshopAlgoritmiAutocadBaze de dateCC sharp
CalculatoareCorel drawDot netExcelFox proFrontpageHardware
HtmlInternetJavaLinuxMatlabMs dosPascal
PhpPower pointRetele calculatoareSqlTutorialsWebdesignWindows
WordXml


Operatori relationali si logici

c



+ Font mai mare | - Font mai mic



Operatori relationali si logici

Operatorii relationali sint > >= < <=. Ei au toti aceasi pon-



dere. Sub ei in tabelul de ponderi se afla operatorii de egali-

tate == != , care au o aceeasi pondere. Operatorii relationali au

ponderea mai mica decit cei aritmetici, asa ca expresii de tipul

i < lim-1 se evalueaza ca i < (lim-1), asa cum ar fi de asteptat.

Mai interesanti sint conectorii logici && si ||. Expresiile

care-i contin sint evaluate de la stinga la dreapta si evaluarea

se opreste in clipa in care se cunoaste adevarul sau falsul

rezultatului. Aceste proprietati se dovedesc critice in scrierea

programelor. De exemplu iata o bucla luata din functia de intrare

getline, pe care am scris-o in Capitolul 1:

for (i=0; i<lim-1 && (c = getchar()) != 'n' && c != EOF;++i)

s[i] = c;

In mod clar, inainte de a citi un nou caracter trebuie vazut

daca mai exista loc pentru a-l depune in tabloul s , asa ca

testul i<lim-1 trebuie facut in primul rind. Nu numai atit dar

daca testul esueaza, nu trebuie sa mai citim un nou caracter.

Similar, ar fi nepotrivit sa testam daca c este EOF

inainte de apelul lui getchar; apelul trebuie sa aiba loc inainte

ca sa testam caracterul c.

Ponderea lui && este mai mare decit cea a lui || si

amindoua sint mai mici decit cele ale operatorilor relationali

si de egalitate, asa ca expresii de tipul

i<lim-1 && (c = getchar()) != 'n' && c != EOF

nu mai au nevoie de paranteze suplimentare. Dar, deoarece ponde-

rea lui != este mai mare decit cea a asignarii, este nevoie de

paranteze in

(c = getchar()) != 'n'

pentru a obtine rezultatul dorit.

Operatorul unar de negatie '!' converteste un operand nonzero

sau adevarat in zero si un operand zero sau fals in 1. O

utilizare obisnuita a lui ! este in constructii de tipul

if (!inword)

mai degraba decit

if (inword == 0)

Este mai greu sa generalizam care forma este mai buna. Construc-

tiile de tipul !inword arata mai frumos ('daca nu e in

cuvint'), dar constructiile mai complicate pot fi greu de inteles.

Exercitiul 2.1. Scrieti o bucla echivalenta cu bucla for de

mai sus fara a folosi &&.



Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 1029
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved