Sunteți pe pagina 1din 5

9/29/2016

ElementeledebazaaleLimbajuluiC

 
 

ElementeledebazaalelimbajuluiC

 

IstoricullimbajuluiC 

CaracteristicilelimbajuluiCElementeledebazaalelimbajuluiC   IstoricullimbajuluiC AlfabetullimbajuluiC Atomiilexicali   Exercitii

AlfabetullimbajuluiC  IstoricullimbajuluiC CaracteristicilelimbajuluiC Atomiilexicali   Exercitii  

Atomiilexicali 

 

Exercitii 

 

InaintedeprezentareasintaxeisistructuriilimbajuluiC,aparincontinuare,pescurt,

istoriculsicaracteristicilelimbajuluiC.

 

Cesteunlimbajdebazapentruprogramatoriiprofesionisti.Arecaracteristicile

limbajelordenivelinalt(deexempluPASCAL),fiindinsamultmaiflexibil,aspectcare

poatefiexploatatdeprogramatoriiexperimentati(uneoriprogrameleinCpotpareade

nedescifrat­veziprogramulmystery).

 

InvatarealimbajuluiCpermitetrecerealalimbajeleorientatepeobiectecareilauca

baza:C++siJava.Nutotigurudinprogramaresuntdeaceeasiparere;deexemplu,cel

maicunoscutautordecartideC/C++,HerbertSchildt(presedintelecompaniei

UniversalComputingLaboratories,Illinoissimembrualcomitetuluidestandardizare

ANSIC++)spunecapentruastapaniC++,trebuiesainvetiinainteC,pecandBjarne

Stroustrup,creatorullimbajuluiC++,sugereazacaestebinesasestudiezedirectC++.

 
  Istoricul  

Istoricul

 
 

limbajuluiC

 
 

proiectatsiimplementatdeDennisRitchiein1972laAT&TBellLaboratories,

pentruprogramedesistem(carepanaatuncieraudezvoltatedoarinlimbajede asamblare);C­ulesteunsuccesorallimbajuluiB,creatdeBenThompson

in1973,sistemuldeoperareUNIXesteintotalitatescrisinC

 

carteadereferintacaredefinesteunstandardminim:BrianW.Kernighan,Dennis

Ritchie­"TheCProgrammingLanguage"­PrenticeHall1978

 

afostdezvoltatunstandardinternational(intre1983­1989)­­ANSIC(ANSI­

AmericanNationalStandardsInstitute)

 

suntdezvoltatemediideprogramareCperformantesubUNIXsiDOS,care

contribuielautilizareamasivaalimbajului.

 
 
 
Caracteristicile  

Caracteristicile

 
 

limbajului

 

CaracteristicilelimbajuluiC,carei­audeterminatpopularitatea,suntprezentatepescurt

maijossivorfianalizatepeparcursulcursului:

 
 

limbajdenivelmediu,portabil,structurat,flexibil

produceprogrameeficiente(lungimeacoduluiscazuta,vitezadeexecutiemare)

dedimensiunerelativscazuta

 
setbogatdeoperatori

setbogatdeoperatori

multiplefacilitatidereprezentaresiprelucrareadatelor

utilizareextensivaaapelurilordefunctiisiapointerilor

verificaremaiscazutaatipurilor­­loosetyping­­spredeosebiredePASCAL

permiteprogramarealanivelscazut­­low­level,apropiatdehardware

Esteutilizatinmultipleaplicatii,incarenupredominacaracterulnumeric:

programedesistem  

programedesistem

 

9/29/2016

proiectareasistatadecalculator

grafica9/29/2016 proiectareasistatadecalculator prelucraredeimagini aplicatiideinteligentaartificiala. Alfabetul limbajuluiC

prelucraredeimagini9/29/2016 proiectareasistatadecalculator grafica aplicatiideinteligentaartificiala. Alfabetul limbajuluiC

aplicatiideinteligentaartificiala.

Alfabetul limbajuluiC

Alfabetul

limbajuluiC

UnprogramCcuprinde

ElementeledebazaaleLimbajuluiC

UnprogramCcuprinde ElementeledebazaaleLimbajuluiC atomilexicali

atomilexicali(identificatori,constante­­numerice,caracter,sir,operatori,

semnedepunctuatie)si

separatori(spatii,comentarii,terminatordelinie)

aranjaticonformsintaxeilimbajului.

AtomiisiseparatoriiseconstruiescdinsimbolurilecareconstituiealfabetullimbajuluiC. SimbolurilesecodificaconformcoduluiASCII(AmericanStandardCodeforInformation

Interchange),princateoconfiguratiede8biti(unoctet);rezultafaptulcasunt256(0

­255)decaractereincodulASCII.

Alfabetulcuprindesimbolurigraficesisimbolurifaracorespondentgrafic:

Simbolurigrafice

 
     

CodASCII

 
 

Categorie

Membri

inzecimal

in

 

hexazecimal inoctal

 

ABC

Z

A­­65

41

101

Litere

   

Z­­90

5A

132

 

abc

z

a­­ 97

61

141

 

z­­122

7A

172

Cifre

 

012

9

0­­48

30

060

 

9­­57

39

070

Liniutade

 

subliniere

 

_

95

5F

137

 

!"#%&'()*+

 

Operatorisi

semne

depunctuatie

,­./

:;<=>?[]\^

{}|~

Simbolurifaracorespondentgrafic

 
       

Cod

Simbol

 

Semnificatie

 

Secventa

ASCII

   

escape

in

 

zecimal

SP

avanscursorcuopozitie­space

 

32

BEL

semnalacustic­bell

 

\a

7

BS

revenirecursorcuopozitie­back

\b

8

space

FF

saltlapaginanoua­formfeed

\f

12

NL

avanscursorcuolinie­newline \n

 

10

CR

revenirecursorlainceputulliniei

\r

 

13

curente­carriagereturn

 
 

saltlaurmpozitiedetabulare

   

9/29/2016

ElementeledebazaaleLimbajuluiC

HT

orizontala­horizontaltab

\t

9

VT

saltlaurmpozitiedetabulare

\v

11

verticala­verticaltab

NULL

caractercucod0(terminatorde

\0

0

sir)

IncodificareaASCII:

spatiularecodulmaimicdecatsimbolurilegrafice(32)

cifrele(inordinecrescatoare),literelemarisiliterelemici(inordinealfabetica)

ocupacatetreizonecompacte.

Atomiilexicali

Atomiilexicali

ocupacatetreizonecompacte. Atomiilexicali Folosindsimbolurilegraficeseconstruiesc atomiilexicali :

Folosindsimbolurilegraficeseconstruiescatomiilexicali:

identificatoriFolosindsimbolurilegraficeseconstruiesc atomiilexicali : constante(explicite)­­numerice,caracter,sir operatori

constante(explicite)­­numerice,caracter,sir

operatoriidentificatori constante(explicite)­­numerice,caracter,sir semnedepunctuatie. Atomii suntseparatides eparatori

semnedepunctuatie.constante(explicite)­­numerice,caracter,sir operatori Atomii suntseparatides eparatori

Atomiisuntseparatideseparatori:spatiul,caracteruldetabulareorizontalaHT,

terminatoruldelinieNLsicomentariul(oricetextaflatintrecombinatiiledecaractere/*

si*/,sautextulinceputcu//panalasfarsitulliniei).

si*/,sautextulinceputcu//panalasfarsitulliniei). Numele sau identificatorii

Numelesauidentificatoriisecompundintr­osecventadelitere,cifresi/sau_(liniuta

desubliniere),primulcaractertrebuindsafieliterasau

decisefacedeosebireintreliterelemarisimici(spredeosebiredePASCAL).Potfi:

Numelesuntcasesensitive,

numeutilizator­numedevariabile,constantesimbolice,functii,tipuri,structuri,

uniuni­estebinesafiealesecatmaisugestivpentruscopulutilizarii;se

obisnuiestecanumeleconstantelorsimbolicesafiecompusedinmajuscule­­o

constantasimbolicasedefinesteprindirectiva#definefiindrecunoscutain

toateliniiledeprogramceurmeazadefinirii;preprocesorul,anteriorcompilarii,

inlocuiesteoriceaparitieauneiconstantesimbolicecudefinitiasa

cuvintecheiealelimbajuluiC­potfifolositedoarcuintelesulcucareaufost

definite

cuvinterezervate­intelesulpoatefimodificat,deevitatacestlucru;pentruca

multenumerezervatedecompilator,invizibileprogramatorului,incepcu_,este

indicatanuutiliza_pentruinceputulnumelorutilizator.

Exempledenumeutilizator

suma produs x1 X1 PI functia_gauss

Exemplededefinitiideconstantesimbolice(caresuntnumeutilizator):

#define

PI

3.1415

#define

DIMENSIUNE

20

#define

Salut

"Hello!"

Tabelacuvintelorcheie­32cuvintecheie,dintrecare27provindinstandardulinitial

Kernighan­Ritchie,iar5aufostadaugatedecomitetulANSI(enum, const, signed, void, volatile);limbajeledenivelinaltaudeobiceimultmaimultecuvintecheie­

BASICpeste100

auto

double

int

struct

break

else

long

switch

9/29/2016

ElementeledebazaaleLimbajuluiC

case

enum

register

typedef

char

extern

return

union

const

float

short

unsigned

continue

for

signed

void

default

goto

sizeof

volatile

do

if

static

while

Tabelacuvintelorrezervate­propriicompilatoruluiTurboC:numederegistri,moduride

compilare

asm

_cs

_BH

_DH

cdecl

_ds

_BL

_DI

far

_es

_BP

_DL

huge

_ss

_BX

_DX

interrupt

_AH

_CH

_FLAGS

near

_AL

_CL

_SI

pascal

_AX

_CX

_SP

Observatie:InmediulTurboC,pentruavizualizaofereastaHelpreferitoarelaun

cuvantcheie,rezervatsaunumedefunctiedinbiblioteca,setasteazaCtrl/F1avand

cursorulpeuncaracterdincuvantulrespectiv.

Ctrl/F1 avand cursorulpeuncaracterdincuvantulrespectiv. Constantelenumerice

Constantelenumericepotaveaincomponentacifresi/saucaracterele.+­Ee

Constantelenuausemnexplicit:+12sau­12suntexpresiiformatedincateoconstanta

precedatadeoperatoriiunari+,respectiv­.Ocupaunspatiudememorieminim,

corespunzatortipuluinumericcaruiaiiapartin­aspectcarevafilamuritlacapitolul

referitorlaTipurifundamentale.

Constantelenumericepotfi:

intregi­implicitinbaza10(zecimal);inbaza8(octal)suntprecedatede0,in

baza16(hexazecimal)de0x; exemple:1,29,123123123,0237(inoctal),

0xffab(inhexazecimal);iataaceeasiconstantaintreiscrieriechivalente,

folosindceletreibaze:255 0377 0xFF reale­potaveadoarmantisasaumantisasiexponent(exponentuleste

precedatdeliteraesauEsireprezintaputerealui10);caexempluoconstanta

inpatruscrieriechivalente:12.345 .12345E+2 1.2345e1 12345e­3

Constantelecaracterseprecizeazaintreapostrofuri.Oconstantacaracterocupaun seprecizeazaintreapostrofuri.Oconstantacaracterocupaun

spatiude2octeti­primuleste0,aldoileacodulASCIIalcaracterului.Caracterulpoate

fi:

unsimbolgraficsaucodulsauASCIIinhexazecimalsauoctaldupa\;exemple:

'A' '\x41' '\101' (suntechivalente);caracterele\ ' "sereprezintacasi constante:'\\' '\'' '"' unsimbolfaraechivalentgrafic,datcasecventaescape:'\n' '\xa' '\12' (sunt echivalente).

'\xa' '\12' (sunt echivalente). Constantelesir

Constantelesirseprecizeazaintreghilimele.Fiecarecaracterdinsirpoatefiun simbolgrafic,osecventaescapesauuncodASCII(inoctalsauhexazecimal).Spatiul ocupatesteunnumardeocteticuunumaimaredecatalcaracterelordinsir,ultimul

octetfiindrezervatpentruterminatoruldesir:caracterulcucodulASCII0,adica'\0'.

Dacasedorestecasicaracterul"safacapartedinsir,eltrebuieprecedatde\. Exemple:"CURS" "\x43URS" (scrieriechivalentealeunuisirceocupa5octeti); "1a24\t" "\x31\x61\x32\x34\11" (scrieriechivalentealeunuisirceocupa6

octeti)

"'\"" (sircecontinecaracterele'"siterminatorul,deciocupa3octeti).

9/29/2016

ElementeledebazaaleLimbajuluiC

Operatoriisuntformatidincaractereledintabeladesimbolurigrafice,ultima
Operatoriisuntformatidincaractereledintabeladesimbolurigrafice,ultima
categorie.Vorfaceobiectulunuicapitolaparteinaceastaprezentare.
Casemndepunctuatie,limbajulCfolosestesimbolul;careterminainstructiunile,nu
leseparacainPASCAL­­lucrucareducelascadereaerorilordesintaxa.
Exercitii
1.RevedetiinformatiiledelaConstantelesirsiscrieticeledouaconstantecarecontin
caractereledemaijos:
Informatii100%corecte:
I.Ionescu/24ani\zis"alu'Vasile"
slash/;backslash\;procent%;
ghilimele";apostrof'.
2.Careestespatiuldememorieocupatdeconstantacaractersiceasir:'z'si"z"?
1,respectiv2octeti
Cate2octeti
<<PaginaMateriale
Copyright©2001­2002.CarmenHolotescu
Allrightsreserved.PublishedbyTimsoft