Upload
byencutza97
View
268
Download
1
Embed Size (px)
Citation preview
8/18/2019 Elemente de bază ale limbajului C-C++
1/15
Elemente de bază ale limbajului C/C++Elemente de bază alelimbajului C/C++
1.Setul de caractere
Setul de caractere utilizat pentru scrierea programelor C/C++ este setul de caractere alcodului ASCII (American Standard Code for Information Interchange).
Fiecare caracter din mulţimea caracterelor ASCII are asociat un numr cuprins !ntre " #i 1$%&denumit codul ASCII al caracterului respecti'.
lterior& pentru reprezentarea unor simoluri suplimentare (caractere specifice altor limi&simoluri matematice& simoluri grafice)& codul ASCII a fost e*tins. Codul ASCII e*tins permitecodificarea a $, simoluri distincte& prin asocierea unui numr natural cuprins !ntre " #i $.
-iterele mici din alfaetul englez au coduri consecuti'e !ncepnd cu % (codul caracterului 0a0)pn la 1$$ (codul caracterului 0z0).
-iterele mari din alfaetul englez au coduri consecuti'e !ncepnd cu , (codul caracterului0A0) pn la " (codul caracterului 00).
Cifrele au coduri consecuti'e !ncepnd cu 23 (codul caracterului 0"0) pn la % (codulcaracterului 00).
Caracterul spaţiu (0 0) are codul ASCII 4$.
Consultnd codul ASCII& identificaţi codurile caracterelor de pe tal.5astaţi codul caracterului !n cmpul te*t din dreapta sa. 6entru a trece la cmpul urmtor&tastaţi 7nter& sau sgeat89os. 6entru a re'eni la caracterul precedent& tastaţi sgeat8sus.
Analiznd codul ASCII& asociaţi fiecrui caracter codul corespunztor.
:n acest scop& e*ecutaţi un clic; pe creta galen& apoi trasaţi o linie de la caracter la codulsu ASCII.
$.IdentificatoriIdentificatorii& !ntlniţi #i su denumirea nume& au rolul de a denumi elemente ale programului<constante& tipuri de date& 'ariaile& etc.
=in punct de 'edere sintactic& un identificator este constituit dintr8o succesiune de litere& cifresau caracterul 0>0 (liniuţa de suliniere ? underscore)& primul caracter fiind oligatoriu litersau liniuţa de suliniere.
8/18/2019 Elemente de bază ale limbajului C-C++
2/15
8 n identificator poate a'ea orice lungime& dar sunt luate !n considerare numai primele 41 decaractere.8 7ste recomandat s utilizaţi identificatori sugesti'i& astfel !nct s nu fie necesar& pe ctposiil& s apelaţi la declaraţii sau comentarii pentru a !nţelege scopul !n care este folosit unidentificator.8 7ste util s construim identificatorii prin compunerea mai multor cu'inte sau rdcini ale
acestora. :n acest caz& iniţiala fiecrui cu'nt care intr !n compunerea identificatorului poatefi ma9uscul (de e*emplu& @ra*Cu'inte& @r5elefon).8 AtenţieBBB -ima9ul C/C++ este case8sensiti'e& adic se face diferenţa !ntre literele mici #iliterele mari. 6rin urmare identificatorii @* #i @m* sunt diferiţiB
7*emple de identificatori corecţi sintactic
6rogram >unu A1$
@ume>6renume>ele'17*emple de identificatori incorecţi sintactic
@ume 6renume (conţine caracterul spaţiu)a+ (conţine caracterul +)$ (!ncepe cu o cifr)
Care dintre urmtoarele 'ariante reprezint identificatori din lima9ul C/C++& corecţi din punctde 'edere sintactic
Selectaţi 'ariantele corecte& e*ecutnd un clic; !n csuţa din stnga 'ariantei. A#eaz fiecare element din lista din partea de sus a talei su afirmaţia corespunztoare&deplasndu8l prin procedeul drag8and8drop.
4.Cu'inte rezer'ate
Cu'intele rezer'ate& denumite uneori #i cu'inte cheie (;eDEords) sunt identificatori speciali&cu !nţeles predefinit& care pot fi utilizaţi numai !n construcţiile sintactice !n care sunt specificaţi.
:n lima9ul C/C++ toate cu'intele rezer'ate se scriu numai cu litere mici.
if ? cu'nt cheie care descrie !nceputul unei instrucţiuni alternati'eEhile ? cu'nt cheie care descrie !nceputul unei instrucţiuni repetiti'e.char ?cu'nt cheie care denume#te un tip de datesizeof ? cu'nt cheie care denume#te un operatorunsigned ? cu'nt cheie care denume#te un modificator de tiprea; ? cu'nt cheie care denume#te o instrucţiune
8/18/2019 Elemente de bază ale limbajului C-C++
3/15
Selectaţi cu'intele rezer'ate din lista de pe tal& e*ecutnd un clic; !n csuţa din stngaacestora.
2.Constantele !ntregi
Constantele sunt date care nu !#i modific 'aloarea pe parcursul e*ecuţiei programului. :n funcţie de natura lor& constantele pot fi< 8 constante !ntregi 8 constante reale 8 constante caracter 8 constante #ir de caractereConstantele !ntregi sunt numere !ntregi dintr8un inter'al finit.7le pot fi precizate !n aza 1" (folosind notaţia uzual)& !n aza 3 (!n acest caz constanta esteprecedat de un " nesemnificati') sau !n aza 1, (caz !n care constanta are prefi*ul "* sau"G).
1$4 constant specificat !n aza 1"
81$42,%3 constant specificat !n aza 1"
"1$42 constant specificat !n aza 3
"*1a" constant specificat !n aza 1, "GFFFF constant specificat !n aza 1,
Selectaţi& e*ecutnd un clic; !n csuţa din stnga fiecrei 'ariante& constantele !ntregi corectedin punct de 'edere sintactic.
.Constantele reale
Constantele reale care se pot reprezenta !n memoria calculatorului sunt numere raţionaledintr8un inter'al finit.Constantele reale pot fi specificate !n dou moduri<
1. :n notaţia uzual la matematic& preciznd partea !ntreag #i partea fracţionar anumrului& separate prin caracterul 0.0 (punct)& conform cu notaţia anglo8sa*on< parte>!ntreag.parte>fracţionar $. :n format e*ponenţial (#tiinţific)& preciznd partea !ntreag #i partea fracţionar anumrului& separate prin caracterul 0.0 (punct)& urmate de litera e sau 7 #i de un numr !ntreg&reprezentnd e*ponentul puterii lui 1" cu care treuie !nmulţit numrul real precedent.=ac partea !ntreag a unui numr real este "& aceasta poate s nu fie specificat.
8/18/2019 Elemente de bază ale limbajului C-C++
4/15
=e asemenea& dac partea fracţionar a numrului real este "& aceasta poate s nu fiespecificat.
=ar nu pot lipsi att partea !ntreag& ct #i partea fracţionar din specificarea unui numr real.
:n cazul !n care numrul este specificat !n format e*ponenţial& iar partea fracţionar lipse#te&
specificarea punctului zecimal nu este oligatorie.
81$.44.121.$e81" (!n format uzual "."""""""""1$)8$.,%7+3 (!n format uzual 8$,%"""""")$.e+2 (!n format uzual $"""").$78 (!n format uzual "."""""$)
Selectaţi din lista de pe tal constantele reale corecte din punct de 'edere sintactic. :n acest scop& e*ecutaţi un clic; !n csuţele din stnga 'ariantelor care reprezint constantereale corecte.
,. Constantele character
Constantele grafice (caractere care au asociat un simol e*istent pe tastatur) au coduri ASCII cuprinse !ntre 4$ #i 1$% #i pot fi specificate !ncadrnd caracterul respecti' !ntreapostrofuri.Caracterele negrafice (dar #i cele grafice& dac dorim) se pot specifica !ncadrnd !ntreapostrofuri o sec'enţ de e'itare (sec'enţ escape). Sec'enţele escape sunt formate din
caracterul H (ac;slash)& urmat de codul ASCII al caracterului (e*primat !n aza 3 saue*primat !n aza 1,& precedat de *).nele caractere negrafice& mai des utilizate& au asociate sec'enţe escape speciale&constituite din H (ac;slash) #i un caracter grafic sugesti'.
Specificaţi litera A utiliznd o sec'enţ escape.5astaţi sec'enţa escape care reprezint litera A deasupra liniei de pe tal.
8/18/2019 Elemente de bază ale limbajului C-C++
5/15
Selectaţi& e*ecutnd un clic; !n csuţa din stnga& 'ariantele care reprezint caracterul "(zero)
%.7*presii
e*presie este constituit dintr8o succesiune de operanzi& conectaţi prin operatori.n operand poate fi o constant& o 'ariail& un apel de funcţie sau o e*presie !ncadrat !ntreparanteze rotunde.
peratorii desemneaz operaţiile care se e*ecut asupra operanzilor. =e e*emplu +reprezint operatorul pentru adunare& 8 reprezint operatorul de scdere& J reprezintoperatorul pentru !nmulţire& iar / operatorul pentru !mprţire.
peratorii pot fi grupaţi pe categorii& !n funcţie de tipul operaţiilor desemnate.
=in punctul de 'edere al prioritţii& operatorii pot fi grupaţi !n 1, clase de prioritate&numerotate de la 1 la 1,& 1 fiind prioritatea ma*im.
peratorii lima9ului C/C++ sunt unari (se aplic unui singur operand) sau inari (necesit doioperanzi).
5oţi operatorii unari au clasa de prioritate $.
7*presia este format dintr8un singur operand (constanta ).alfa7*presia este format dintr8un singur operand ('ariaila alfa)a+$
7*presia conţine doi operanzi ('ariaila a #i constanta $) #i operatorul inar +.aJ(+1)7*presia conţine doi operanzi ('ariaila a #i e*presia !ncadrat de paranteze rotunde (+1) )conectaţi prin operatorul aritmetic inar J.
tiliznd uretele& #tergeţi din lista de pe tal e*presiile incorecte. Acti'aţi uretele e*ecutnd un clic; pe urete. Apoi e*ecutaţi un clic; pe e*presiile incorecte&uretele fiind acti'. =ezacti'area uretelui se realizeaz printr8un dulu8clic;.
3.7'aluarea e*presiilor
7'aluarea unei e*presii presupune calculul 'alorii e*presiei& prin !nlocuirea !n e*presie afiecrei 'ariaile cu 'aloarea ei #i a fiecrei funcţii cu 'aloarea returnat de funcţia respecti'#i efectuarea operaţiilor specificate de operatori. :n timpul e'alurii e*presiei se ţine cont dee*istenţa parantezelor& de asociati'itate #i de prioritatea operatorilor< ? se e'alueaz !n primul rnd e*presiile din paranteze& !ncepnd cu parantezele cele maiinterioare
8/18/2019 Elemente de bază ale limbajului C-C++
6/15
? !n cadrul unei e*presii fr paranteze& se efectueaz operaţiile !n ordinea prioritţiioperatorilor ? dac !ntr8o e*presie apare o succesiune de operatori cu prioritţi egale& se ţine cont deasociati'itatea operatorilor.
e*< S considerm urmtoarele declaraţii de 'ariaile
8/18/2019 Elemente de bază ale limbajului C-C++
7/15
=ac unul dintre operanzi este long& iar cellalt este de tip unsigned sau int& el 'a fi con'ertitautomat la long.
=ac un operand este de tip int& iar cellalt este de tip unsigned con'ersia se face ctreunsigned.
7*ercitii
8/18/2019 Elemente de bază ale limbajului C-C++
8/15
e*< S considerm urmtoarele declaraţii de 'ariaile< int aK4& K float *K%.
7*ercitii<Oodo a descoperit o sustanţ cu nP atomi de hidrogen& nC atomi de caron #i n atomi deo*igen. Scrieţi o e*presie care s reprezinte masa molecular a sustanţei. asa atomului deP este 1& a atomului de C este 1$& iar a atomului de este 1,.
:n 'ariailele reale a& #i c sunt memorate notele oţinute de Oodo la cele 4 proe de
e*amen de admitere la Facultate.Care dintre e*presiile de pe tal reprezint media sa general edia general 'a fiaritmetic a celor 4 note.Qtergeţi cu uretele e*presiile eronate.
@umrul de omoane pe care Oodo #i fratele su 'or s le !mpart& este memorat !n'ariaila !ntreag *. Scrieţi pe tal o e*presie care s utilizeze numai operatori aritmetici #icare s ai 'aloarea diferit de " dac #i numai dac cei doi copii nu pot !mprţiomoanele !n mod egal.
S se e'alueze e*presiile specificate pe tal& considernd declaraţiile de 'ariaile de petala.
11. peratori de incrementare/decrementare
peratorul de incrementare este ++.peratorul de decrementare este 88.peratorii de incrementare/decrementare sunt operatori unari #i pot fi aplicaţi numai'ariailelor simple.7fectul lor const !n mrirea (respecti' mic#orarea) 'alorii operandului cu 1.
Ace#ti operatori se pot utiliza !n form prefi*at (!naintea operandului)& caz !n care seefectueaz mai !nti incrementarea/decrementarea #i apoi se utilizeaz 'aloarea operandului&
sau !n form postfi*at (dup operand)& caz !n care se utilizeaz mai !nti 'aloareaoperandului #i apoi se efectueaz incrementarea/decrementarea.
e*< S considerm urmtoarele declaraţii de 'ariaile< int aK4& K& c float *K$.
8/18/2019 Elemente de bază ale limbajului C-C++
9/15
7*ercitii<Considernd declaraţia de 'ariaile de pe tal& selectaţi 'arianta care reprezint 'alorile'ariailelor a& #i c dup declarare.
Considernd declaraţia de 'ariaile de pe tal& selectaţi 'arianta care reprezint rezultatul
e'alurii e*presiei (a+++)++
1$. peratori relaţionali
peratorii relaţionali sunt operatori inari #i desemneaz relaţia de ordine !n care se gsesccei doi operanzi< R (mai mic)& (mai mare)& RK (mai mic sau egal)& K (mai mare sau egal).
Mezultatul aplicrii unui operator relaţional este 1 dac cei doi operanzi sunt !n relaţia indicatde operator #i "& altfel.
Trupa de prioritate a operatorilor relaţionali este %.
6reţul unei !ngheţate este memorat !n 'ariaila de tip int6& iar suma de ani pe care o areOodo este memorat !n 'ariaila de tip int S. Scrieţi pe tal o e*presie de lungime minimcare s ai 'aloarea 1 dac #i numai dac Oodo !#i poate cumpra !ngheţat.
14. peratori de egalitate
peratorii de egalitate sunt operatori inari #i desemneaz relaţia de egalitate (KK) sauinegalitate (BK) !n care se gsesc cei doi operanzi.
Mezultatul aplicrii unui operator de egalitate este 1 dac cei doi operanzi sunt !n relaţia
indicat de operator #i "& altfel.Trupa de prioritate a operatorilor de egalitate este 3.
8/18/2019 Elemente de bază ale limbajului C-C++
10/15
S se e'alueze e*presiile de pe tal&considernd declaraţiile de 'ariaile dinpartea de sus a talei.
12. peratori logici gloali
peratorii logici gloali desemneaz operaţiile logice inecunoscute de la matematic<negaţia logicdis9uncţia logiccon9uncţia logic
7*ist trei operatori logici gloali& corespunztori acestor trei operaţii<
:n lima9ul C/C++ 'aloarea logic fals este asociat 'alorii "& orice 'aloare diferit de " a'ndsemnificaţia ade'rat.6rin urmare& efectul operatorilor logici gloali& dup cum #tim de la logic matematic& este<
e*<
7*ercitii<Care dintre e*presiile de pe tal au'aloarea 1 dac #i numai dac anulmemorat !n 'ariaila an este isectQtergeţi cu uretele e*presiile incorecte.
:nlţimile celor 4 copii sunt memorate !n 'ariailele *& D #i z.Care dintre e*presiile din lista de pe tal au 'aloarea diferit de " dac #i numai dac cei 4
copii au aceea#i !nlţime
-ungimile laturilor triunghiului sunt memorate !n 'ariailele reale a& #i c.Care din e*presiile de pe tal au 'aloarea 1 dac #i numai dac triunghiul este isoscel (darnu echilateral)Qtergeţi cu uretele e*presiile incorecte.
Considernd declaraţia de 'ariaile de pe tal& s se e'alueze e*presiile din lista de petal. 5astaţi !n dreptul fiecrei e*presii 'aloarea acesteia.
8/18/2019 Elemente de bază ale limbajului C-C++
11/15
1. peratori logici pe iţi
peratorii logici pe iţi se aplic numai operanzilor !ntregi #i au ca efect aplicarea operaţiilorlogice cunoscute (negaţie& con9uncţie& dis9uncţie #i dis9uncţie e*clusi') it cu it. peratoriilogici pe iţi sunt<
7fectul operatorilor pe iţi este<
peratorii de deplasare au ca efect deplasarea reprezentrii inare a primului operand sprestnga (RR) sau spre dreapta (). @umrul de poziţii cu care se realizeaz deplasarea estespecificat de cel de8al doilea operand. -a deplasarea la stnga& poziţiile rmase liere !ndreapta se completeaz cu ". -a deplasarea la dreapta& poziţiile rmase liere !n stnga secompleteaz cu " (dac operandul stng este un !ntreg poziti') sau cu 1 (dac operanduleste !ntreg negati').
S considerm urmtoarele declaraţii de 'ariaile<int nK4& aK"G1F3A& K"GF"F6entru a determina cu u#urinţ reprezentrile !n memorie ale 'ariailelor a #i & am e*primat'alorile lor !n aza 1,. Meprezentarea !n memorie a acestor 'ariaile este<
=ac a ar fi fost declarat de tip unsigned& prin deplasare la dreapta& s8ar oţine acela#irezultat& deoarece 'aloarea lui a este poziti' (itul semn este "). Ualoarea lui este negati'(itul 1 ? itul semn ? este 1)& prin deplasare la dreapta se propag semnul& deci secompleteaz cu 1.
8/18/2019 Elemente de bază ale limbajului C-C++
12/15
Scrieţi o e*presie care s utilizeze numai operatori logici pe iţi care s ai ca 'aloarenumrul de #iraguri distincte formate din n ("RnR1) mrgele ro#ii #i negre pe care Oodo lepoate construi.
S se e'alueze e*presiile din lista de pe tal& !n condiţiile declaraţiilor de 'ariaile din parteade sus a talei.5astaţi !n dreptul fiecrei e*presii 'aloarea acesteia& e*primat !n aza 1".
Selectaţi e*presiile de pe tal care au 'aloarea diferit de "dac #i numai dac al n8lea it
din reprezentarea intern a 'ariailei de tip int * este 1 ("VnV1& iţii fiind numerotaţi de la " !ncepnd cu cel mai puţin semnificati').
1,. peratori de atriuire
peratorii de atriuire sunt operatori inari care permit modificarea 'alorii unei 'ariaile.7*ist un operator de atriuire simplu (K) #i 1" operatori de atriuire compu#i cu a9utoruloperatorului K #i al unui alt operator inar (aritmetic sau logic pe iţi)& dup cum urmeaz<'ariailaKe*presieSe e'alueaz e*presia& apoi se atriuie 'ariailei 'aloarea e*presiei. Ualoarea e*presiei deatriuire este egal cu 'aloarea atriuit 'ariailei.
'ariailaoperatorKe*presie
7fectul este echi'alent cu al unei atriuiri de 5icul 'ariailaK'ariailaoperatore*presieTrupa de prioritate a operatorilor de atriuire este 1.7*presia poate fi la rndul ei o e*presie de atriuire& cu alte cu'inte operatorii de atriuire sepot utiliza !nlnţuit<'ariaila>1K...K'ariaila>nKe*presie
S considerm urmtoarele declaraţii de 'ariaile<
int aK1"& long cK1""""1float *& DK
:n 'ariaila S este memorat sumade ani depus !n anc de Oodo.Qtiind c donda anual este
8/18/2019 Elemente de bază ale limbajului C-C++
13/15
=N& scrieţi o e*presie de lungime minim care s atriuie 'ariailei S suma pe care o are !nanc Oodo dup 1 an.
Scrieţi pe tal o e*presie de lungime minim care s mreasc 'aloarea 'ariailei !ntregi *cu 'aloarea 'ariailei !ntregi D.
S considerm declaraţiile de 'ariaile din partea de sus a talei.Ce 'alori 'or a'ea 'ariailele a #i dup e'aluarea (!n ordine) a e*presiilor scrise pe tal
S considerm declaraţia de 'ariaile din partea de sus a talei.Ce 'aloare 'a a'ea 'ariaila dup e'aluarea fiecreia dintre e*presiile scrise pe tal5astaţi 'aloarea 'ariailei !n dreptul fiecrei e*presii. Consideraţi c e*presiile se e'alueaz
!n ordine& de sus !n 9os.1%.peratori condiţionali
peratorii condiţionali sunt #i < #i se utilizeaz numai !mpreun.Formatul unei e*presii condiţionale este<e*presie>1 e*presie>$ < e*presie>47fect<Se e'alueaz e*presie>1. =ac e*presie>1 are o 'aloare nenul& atunci 'aloarea e*presieicondiţionale este egal cu 'aloarea e*presiei>$. =ac e*presie>1 are 'aloarea "& atunci'aloarea e*presiei condiţionale este egal cu 'aloarea e*presiei>4.
Trupa de prioritate a operatorilor condiţionali este 12.
Scrieţi o e*presie de lungimeminim care s atriuie 'ariailei c de tip char 'aloarea 0d0 dac 'aloarea 'ariailei !ntregi *este strict poziti'& respecti' 'aloarea 0n0 !n caz contrar.
Se consider c 'ariaila de tip char.Care este semnificaţia e*presiei specificate !n partea de sus a talei
8/18/2019 Elemente de bază ale limbajului C-C++
14/15
Care dintre e*presiile din lista de pe tal atriuie 'ariailei * 'aloarea asolut (modulul)numrului memorat !n 'ariaila * Qtergeţi cu uretele e*presiile incorecte.
Uariaila nr conţine numrul de ordine al opţiunii curente dintr8un meniu. pţiunile din meniusunt numerotate de la 1 la n. Selectaţi e*presiile care atriuie 'ariailei nr numrul urmtoarei
opţiuni din meniu. =ac opţiunea curent este ultima& urmtoarea opţiune 'a fi opţiunea 1(prima).
13.peratorul de con'ersie e*plicit de tip
peratorul de con'ersie de tip (denumit #i operatorul cast) este un operator unar care permitecon'ersia e*plicit (forţat) a tipului unei e*presii la un tip specificat<
(tip) e*presie
S considerm urmtoarele declaraţii de 'ariaile<int aK1"& K1
S considerm declaraţia de 'ariail din partea de sus a talei.
Scrieţi o e*presie de lungime minim care s ai ca 'aloare caracterul cu codul ASCII cu "mai mare dect cel memorat !n 'ariaila c.
1.peratorul de determinare a dimensiunii
peratorul sizeof de determinare a dimensiunii este un operator unar care determindimensiunea e*primat !n numr de octeţi a zonei de memorie necesar pentru stocareae*presiei specificate ca operand sau a unei date de tipul specificat ca operand
8/18/2019 Elemente de bază ale limbajului C-C++
15/15