Elemente de bază ale limbajului C-C++

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