Documente Academic
Documente Profesional
Documente Cultură
Există multe extinderi ale limbajului, printre care C++, Perl, Java, Javascript şi C#.
Cuprins
[ascunde]
• 1 "Hello, World!" în C
• 2 Structura unui program
• 3 Cuvinte cheie
• 4 Identificatori
• 5 Separatori
• 6 Structura funcţiilor
• 7 Instrucţiuni
o 7.1 Expresii
o 7.2 Blocuri
o 7.3 Selecţii
7.3.1 Instrucţiunea decizională
7.3.2 Instrucţiunea decizională multiplă
7.3.3 Instrucţiunea de selecţie
o 7.4 Iteraţii
7.4.1 Instrucţiunea while
7.4.2 Instrucţiunea do - while
7.4.3 Instrucţiunea for
o 7.5 Salturi
Versiunea C
#include<stdio.h>
int main(void)
{
printf("Hello,World!\n");
return 0;
}
Versiunea C++
#include<iostream.h>
int main(void)
{
cout<<"Hello,World!\n"; //sau cout<<"Hello,World!"<<endl
return 0;
}
Definiţia unei funcţii include următoarele componente: un tip de retur (int, în exemplul de
mai sus), un nume, o listă de parametri (între paranteze rotunde) şi un corp al funcţiei (cuprins
între acolade).
float CalculeazaSuprafata(float Lungime, float Latime) {
float Suprafata;
Suprafata = Lungime*Latime;
return Suprafata;
}
• auto
• break
• case
• char
• const
• continue
• default
• do
• double
• else
• enum
• extern
• float
• for
• goto
• if
• int
• long
• register
• return
• short
• signed
• sizeof
• static
• struct
• switch
• typedef
• union
• unsigned
• void
• volatile
• while
altă ierarhizare:
[modifică] Identificatori
Identificatorii sunt folosiţi pentru a indica variabile, tipuri de date, constante simbolice sau
funcţii. Primul caracter al identificatorilor trebuie să fie o literă sau underline, iar lungimea
maximă a acestora este de 31 de caractere.
[modifică] Separatori
Separatorii au rolul de a delimita unităţile lexicale dintr-un program. Iată lista separatorilor
admişi în limbajul C:
{
declaraţii
instrucţiuni
}
[modifică] Instrucţiuni
Prelucrările efectuate de un program sunt descrise cu ajutorul instrucţiunilor. Fiecare
instrucţiune trebuie încheiată cu separatorul punct şi virgulă (;). Instrucţiunile limbajului C pot
fi împărţite în următoarele categorii: Expresii, Blocuri, Selecţii, Iteraţii, Salturi.
[modifică] Expresii
O instrucţiune expresie este alcătuită dintr-o expresie urmată de punct şi virgulă. Operaţiile
realizate de aceste instrucţiuni se fac simţite datorită efectelor ce se concretizează prin apeluri
de funcţii şi modificarea valorilor unor variabile.
Exemplu de instrucţiuni expresie:
Un caz particular de instrucţiune expresie este instrucţiunea vidă. Aceasta este alcătuită doar
din terminatorul de instrucţiune ; şi se foloseşte de obicei în situaţiile în care sintaxa cere
prezenţa unei instrucţiuni, însă în program nu mai este necesară o operaţie.
Instrucţiunea următoare aşteaptă tastarea caracterului '€' şi ignoră orice alt caracter:
while (getch()!='€')
;
[modifică] Blocuri
Blocurile se mai numesc şi instrucţiuni compuse şi sunt alcătuite din mai multe declaraţii şi
instrucţiuni cuprinse între acolade. Structura generală a unui bloc este următoarea:
{
declaraţii
instrucţiuni
}
[modifică] Selecţii
Limbajul C acceptă două tipuri de instrucţiuni de selecţie: if - care se mai numeşte şi
instrucţiune decizională - şi switch. În plus, operatorul ?: poate constitui, în anumite situaţii, o
alternativă la instrucţiunea decizională.
if(expresie)
instr_a
b)
if(expresie)
instr_a
else
instr_f
if(a>0)
printf("pozitiv");
else
printf("negativ");
Instrucţiunea de mai sus afişează textul "pozitiv" dacă a > 0 şi "negativ" în caz contrar.
În cazul în care alternativele de prelucrare se codifică prin secvenţe de instrucţiuni, acestea
trebuie grupate în instrucţiuni compuse. De exemplu secvenţa
if(a>0)
printf("pozitiv");
np++; /* incrementează variabila np */
este diferită de
if(a>0){
printf("pozitiv");
np++;
}
În aceste situaţii, regula este următoarea: Alternativa else se asociază ultimei decizii
incomplete. Dacă se doreşte o altă asociere se pot folosi acoladele:
if( a!=0){
if(op=='/')
c=b/a;
}else
printf("valoare nulă");
if( a!=0)
if(op=='/')
c=b/a;
else
;
else
printf("valoare nulă");
O selecţie multiplă se poate realiza cu mai multe instrucţiuni decizionale în cascadă. În cazul
general în care există n alternative posibile selectate pe baza a n-1 condiţii, se recomandă
folosirea următoarei structuri:
if(expr_1)
ins_1
else if(expr_2)
ins_2
...
else if(expr_n-1)
ins_n-1
else
ins_n
Expresiile se evaluează în ordinea în care sunt scrise. Dacă se întâlneşte o expresie adevărată,
atunci se execută instrucţiunea care-i este asociată şi astfel se încheie întregul lanţ.
Instrucţiunea de după ultimul else se execută doar când nici una dintre expresii nu a fost
adevărată.
Dacă o selecţie multiplă este controlată de valoarea unei singure expresii, programarea se
poate face mai eficient cu ajutorul instrucţiunii de selecţie (switch). Sintaxa generală a acestei
instrucţiuni este:
switch(expresie){
case k1 : prelucrare_1opt
case k2 : prelucrare_2opt
...
case kn-1 : prelucrare_n-1opt
defaultopt : prelucrare_nopt
}
Expresia pe baza căreia se efectuează selecţia trebuie să fie de tip întreg (nu poate să fie de
exemplu float, double sau un tip structurat).
k1, k2, ..., kn-1 sunt expresii constante, cu valori distincte, ce pot fi convertite la tipul
expresiei de selecţie.
Prelucrările se reprezintă prin secvenţe de instrucţiuni, dar ele pot fi şi vide. În cazul în care o
prelucrare este compusă din mai multe instrucţiuni, acestea nu trebuie puse între acolade.
Execuţia instrucţiunii de selecţie începe cu evaluarea expresiei. Valoarea rezultată este
comparată succesiv cu constantele k1, k2, ..., kn-1. Dacă se găseşte o constantă ki de valoare
egală cu cea a expresiei, se trece la execuţia prelucrării asociate şi se continuă cu toate
prelucrările ce au mai rămas, până la sfârşitul instrucţiunii de selecţie. Dacă nu se găseşte o
astfel de constantă, dar este definită o alternativă default, se execută prelucrarea asociată
acesteia, altfel selecţia se încheie fără nici o prelucrare.
Exemplu de utilizare a instrucţiunii de selecţie:
switch(op){
case '*' : inmulteste(a,b);
break;
case '+' : aduna(a,b);
break;
case '-' : scade(a,b);
break;
default : printf("eroare");
}
[modifică] Iteraţii
Execuţia repetată a unei prelucrări este folosită foarte frecvent în rezolvarea problemelor de
cele mai diverse tipuri. Instrucţiunile repetitive care descriu astfel de prelucrări sunt alcătuite
din două componente: Corpul instrucţiunii (care este alcătuit din instrucţiuni care se repetă) şi
Testul (pe baza căruia se stabileşte dacă este sau nu necesară reluarea execuţiei corpului).
În limbajul C există trei instrucţiuni repetitive, dintre care două cu test la început (while şi for)
şi una cu test la sfârşit (do while). Instrucţiunile repetitive cu test la început plasează testul
înaintea corpului, astfel corpul este parcurs numai dacă testul este trecut de la început. În
cazul celor cu test la sfârşit, corpul este executat cel puţin o dată în orice condiţii.
Instrucţiunile repetitive se mai numesc şi cicluri sau bucle.
while(expresie)
instrucţiune
do
instrucţiune
while(expresie);
Ea are rolul de a repeta instrucţiunea până când expresia este adevărată. Diferenţa faţă
de instrucţiunea while constă în faptul că testul este plasat la sfârşitul buclei, deci
instrucţiunea se execută cu siguranţă cel puţin o dată, indiferent de valoarea expresiei.
Exemplul următor citeşte numere de la tastatură, până când numărul tastat este mai mic sau
egal cu 10.
#include <stdio.h>
void main()
{
char n;
do{
printf("\nTastaţi un număr < 10 ");
scanf("%d", &n);
}while(n>10);
}
Instrucţiunea for
Această instrucţiune are o formă generală care-i extinde mult domeniul de aplicare faţă de
instrucţiunile de acelaşi tip existente în alte limbaje de programare. Este cea utilizată
instrucţiune repetitivă, deoarece în afară de testul de rămânere în buclă, oferă două elemente
necesare în majoritatea situaţiilor: iniţializare şi actualizare.
Sintaxa instrucţiunii for:
for(expresie_intopt;expresie_condopt;expresie_actopt)
instrucţiune
expresie_init
while(expresie_cond){
instrucţiune
expresie_act
}
#include <stdio.h>
void main()
{
for( ; ; )
printf("Buclă infinită\n");
}
[modifică] Salturi
Există trei instrucţiuni de salt în limbajul C: break, continue şi goto. Tot la această categorie
putem vorbi şi despre instrucţiunea return, care marchează încheierea prelucrărilor dintr-o
funcţie şi revenirea în programul apelant.
Această instrucţiune poate să apară numai în corpul instrucţiunilor while, do-while, for şi
switch; având ca efect terminarea imediată a acestor instrucţiuni. Programul continuă cu
instrucţiunea imediat următoare celei întrerupte. În cazul unor bucle imbricate, o instrucţiunea
break aflată într-o buclă interioară nu le afectează pe cele exterioare. Aceaşi situaţie apare în
cazul instrucţiunilor switch imbricate, sau care conţin bucle.