limbaj de programare c4
TRANSCRIPT
-
7/31/2019 Limbaj de programare C4
1/22
Limbaje deprogramare
Cursul IV
Limbajedeprogramare Conf.dr.L.STOLERIU [email protected]
-
7/31/2019 Limbaj de programare C4
2/22
InstruciuniC
ifelse
while, dowhile
for break, continue
Limbajedeprogramare Conf.dr.L.STOLERIU [email protected]
-
7/31/2019 Limbaj de programare C4
3/22
break icontinue
break i continuentrerup controlul normal alprogramelor. break va cauza ieirea din bucla n care se
afl sau din switch.continue poate aprea numai n for, while sau do. Arerolul de a trasmite controlul la sfritul buclei.
3
while(1)
{
scanf("%lf", &x);
if (x < 0.0)
break;/*iesire pt. x negativ*/
printf("%lf\n", sqrt(x));
}
while(contor < n)
{
scanf("%lf", &x);
if (x
-
7/31/2019 Limbaj de programare C4
4/22
switch
switch este o instruciune condiional ce generalizeaz oinstruciune if-else.
switch(val)
{
case 1:
++contor_a;
break;
case 2:
case 3:
++contor_b;
break;default:
++contor_c;
}
4 Limbaje deprogramare Conf.dr.L.STOLERIU [email protected]
-
7/31/2019 Limbaj de programare C4
5/22
switch
switch este o instruciune condiional ce generalizeaz oinstruciune if-else.
Expresia de control dintre paranteze (ce urmeazcuvantului switch) trebuie s fie de tip integral (vomreveni). Dup evaluarea sa, controlul sare la etichetacorespunztoare valorii gsite. De obicei, ultimainstruciune de sub un case este break. Dac nuexist
break,atuncisevorexecuta iinstruciuniledinurmtoarelecase-uri.
Atenie!Omitereascrieriiluibreak esteogreealfoartefrecvent!
Poate apare cel mult un default.
5 Limbaje deprogramare Conf.dr.L.STOLERIU [email protected]
-
7/31/2019 Limbaj de programare C4
6/22
?:
Operatorul ?: (operator condiional) este mai puin obinuitdeoarece este ternar (cu trei argumente).expresie1 ? expresie2 : expresie3
Mai nti, se evalueaza expresie1. Daca aceasta esteadevrat, atunci se evalueaz expresie2, i aceasta va fivaloarea returnata. Dac expresie1 este 0 (false), atunci se
evalueaza expresie3, i aceasta va fi valoarea ntregii expresiicondiionale.
if (y < z)
x = y;
else x = ( (y < z) ? y : z );
x = z;
6 Limbaje deprogramare Conf.dr.L.STOLERIU [email protected]
-
7/31/2019 Limbaj de programare C4
7/22
Funcii
Un program este compus din una sau mai multe funcii, printrecare i main(). ntotdeauna execuia unui program ncepe cumain(). Cand o funcie este apelat atunci controlulprogramului este transmis ei. Dup ce aceasta i terminexecuia se transmite napoi controlul ctre program.
Codul C care descrie ce face o funcie se numete "definiiafunciei":tip nume_functie (lista_parametri)
{
declaratii
instructiuni
}
Limbajedeprogramare Conf.dr.L.STOLERIU [email protected]
-
7/31/2019 Limbaj de programare C4
8/22
Funcii
Primul rnd se numete headerul sau antetul funciei.Dac n antet nu precizm parametri, atunci se va scrie
void (list vid). Dac funcia nu ntoarce nici o valoare,atunci se va scrie ca tip ntors totvoid. Tipul de variabilntors de funcie trebuie s fie acelai ca expresia din
dreptul return. Parametrii din antetul funciei sunt dai printro list de
argumente separate prin virgul. Acestea sunt date prin
tipul argumentului urmat de un identificator. Se mai spunec acel identificator este parametru formal.
Limbajedeprogramare Conf.dr.L.STOLERIU [email protected]
-
7/31/2019 Limbaj de programare C4
9/22
Funcii
#include
void tipareste_mesaj(int k)
{
int i;
for (i = 0; i < k; ++i)
printf(" O zi buna ! \n");
}void main(void)
{
int n;
scanf("%d", &n);
tipareste_mesaj(n);
}
Limbajedeprogramare Conf.dr.L.STOLERIU [email protected]
-
7/31/2019 Limbaj de programare C4
10/22
Funcii prototipuri
Apelul unei funcii poate s apar i naintea declarrii ei.Funcia poate fi definit mai trziu n acelai fiier, sau nalt fiier sau n bibliotec standard. Prototipul funciei punela dispoziie numrul, tipul argumentelor funciei i tipulreturnat de funcie.
De exemplu:#include
int min(int x, int y);void main(void)
{ //aici se foloseste min()}
int min(int x, int y)
{ // aici se defineste min()
}
Limbajedeprogramare Conf.dr.L.STOLERIU [email protected]
-
7/31/2019 Limbaj de programare C4
11/22
Funcii return
return este folosit pentru dou scopuri. Controlul estetransmis napoi programului apelant i dac exist o
expresie dup return, atunci se va returna valoareaacestei expresii.
return; sau return expresie;
Limbajedeprogramare Conf.dr.L.STOLERIU [email protected]
#include int min(int x, int y)
{
if (x < y)
return x;
elsereturn y;
}
void main(void)
{
int j, k, m;
printf("Dati doi intregi: ");
scanf("%d%d", &j, &k);m = min(j, k);
printf("\n%d este minimul dintre
%d si %d.\n", m, j, k);
}
-
7/31/2019 Limbaj de programare C4
12/22
Funcii topdown
Descrierea top-down se refer la descompunerea problemein subprobleme care de obicei sunt mai uor de descris.
Presupunem c avem de citit civa ntregi i trebuie siafiam n ordine pe coloane (n partea de sus a coloanelortrebuie scris numele campului de tipul: "Numar", "Suma",
"Minimul", "Maximul"), trebuie afiat suma lor parial,minimul i maximul lor.
Descompunem problema n subprobleme:
1. Un antet pentru problema data;2. Calculul campurilor;
3. Citirea si scrierea lor pe coloane.
Limbajedeprogramare Conf.dr.L.STOLERIU [email protected]
-
7/31/2019 Limbaj de programare C4
13/22
Funcii topdown
void tipareste_antet(void);
void calculeaza_campurile(void);
void citeste_scrie_coloanele(void);
main()
{
...
tipareste_antet();
calculeaza_campurile();
citeste_scrie_coloanele();}
void tipareste_antet(void)
{ // functia care tipareste descrierea problemei}
void calculeaza_campurile(void)
{ // functia care calculeaza Suma etc. }
void citeste_scrie_coloanele(void)
{ // restul: citire de la tastatura si afisare}
Limbajedeprogramare Conf.dr.L.STOLERIU [email protected]
-
7/31/2019 Limbaj de programare C4
14/22
Funcii apelareaprinvaloare
O funcie este invocat prin scrierea numelui su mpreuncu lista sa de argumente ntre paranteze. Numrul i tipul
acestor argumente se "potrivete" cu parametrii din listaprezentat n definiia funciei.
Toate argumentele sunt apelate prin valoare: fiecare
argument este evaluat i valoarea sa este folosit ca valoarepentru parametrul formal corespunztor. De aceea, dac ovariabil este folosit la transmiterea unei valori, atunci
valoarea ei nu se schimb. Exist dou procedee de a returna o valoare.
return expresie sau exit(expresie)
Limbajedeprogramare Conf.dr.L.STOLERIU [email protected]
-
7/31/2019 Limbaj de programare C4
15/22
Declaraiidevariabile
Variabilele i constantele sunt obiecte cu care se lucreazntrun program. n C, toate variabilele trebuie declarate
nainte de a fi folosite. Declaraiile au dou scopuri:1. spun compilatorului ct spaiu de memorie trebuie rezervatpentru memorarea acelor variabile;
2. permit compilatorului s instruiasc maina pentru a faceoperaiile specifice corect.
De exemplu, n expresia a + b, operatorul + este aplicat
pentru dou variabile. Maina execut n mod diferitadunarea pentru variabile de tip int i pentru variabile detip float.
Limbajedeprogramare Conf.dr.L.STOLERIU [email protected]
-
7/31/2019 Limbaj de programare C4
16/22
Tipurifundamentalededate
char signed char unsigned char
signed short int signed int signed long int
unsigned short int unsigned int unsigned long int
float double long double
De obicei, signed nu se mai scrie (signed int este
echivalent cu int). De asemenea, short int, long inti unsigned int pot fi prescurtate ca short, long iunsigned:
char signed char unsigned char
short int long
unsigned short unsigned unsigned long
float double long double
Limbajedeprogramare Conf.dr.L.STOLERIU [email protected]
-
7/31/2019 Limbaj de programare C4
17/22
Tipurifundamentalededate
n C, variabilele ntregi pot fi folosite pentru reprezentareacaracterelor. Constante cum ar fi a sau + pe care le gndim
ca fiind caractere sunt de fapt de tip int, i nu de tip char.Practicnuexist constantedetipchar !
char c = 'a'; /* 'a' are codulASCII 97 */int i = 65; /* 65 este codulASCII pentru 'A' */
printf("%c", c + 1); /* este afisatb */
printf("%d", c + 2); /* este afisat 99 */
printf("%c", i + 3); /* este afisat D */
Limbajedeprogramare Conf.dr.L.STOLERIU [email protected]
-
7/31/2019 Limbaj de programare C4
18/22
Tipuridedate char
Este unul dintre tipurile fundamentale din limbajul C.Constantele i variabilele de acest tip sunt folosite pentru
reprezentarea caracterelor. Fiecare caracter este memoratpe 1 byte (octet), care este compus din 8 bii. Astfel, unoctet poate pstra 2^8=256 valori distincte.
Dei putem memora 256 valori distincte, doar o parte dinele sunt tiparibile (litere mici, mari, cifre, semne de
punctuatie, spaiu, tab, caractere speciale +, *, %). Exemplede caractere netipribile: newline, bell.
Limbajedeprogramare Conf.dr.L.STOLERIU [email protected]
-
7/31/2019 Limbaj de programare C4
19/22
Tipuridedate char
O constant caracter se scrie ntre apostroafe:'a', 'b'
O declaraie obinuit a variabilelor caracter:char c;
char c1 = 'A', c2 = '*';
codul ASCII: de la 2^5+2^4 pn la 57, n ordine: '0', '1', ..., '9'
de la 2^6+2^0 pn la 90, n ordine: 'A', 'B', ..., 'Z'
de la 2^6+2^5+2^0 pn la 112, n ordine: 'a', 'b', ..., 'z Pentru a obine litere mici din cele mari, schimbm doar un
bit. Astfel, A = 65 = 01000001, iar a= 97 = 01100001.
Limbajedeprogramare Conf.dr.L.STOLERIU [email protected]
-
7/31/2019 Limbaj de programare C4
20/22
Tipuridedate char
Nu me l e Mod descr ie re
Valoare
alert \a 7
backslash \\ 92
backspace \b 8
carriage return \r 13
ghilimea \" 34
formfeed \f 12tab orizontal \t 9
newline \n 10
caracterul nul \0 0
apostrof \' 39
tab vertical \v 11
20
n funciile "printf()" i "scanf()",pentru formatul caracter se folosete%c.
printf("%c", 'a');
va tipri a
printf("%c%c%c",A,B,C);va tipri ABC
printf("%d", 'a');
va tipri 97
printf("%c", 97);
va tipri a
Limbajedeprogramare Conf.dr.L.STOLERIU [email protected]
-
7/31/2019 Limbaj de programare C4
21/22
Tipuridedate char
Pentru citirea unui caracter de la tastatur se folosestegetchar(), iar pentru scrierea unui caracter pe ecranputchar()(n ).
Folosite pentru citirea i scrierea caracterelor.#include
main()
{
char c;
while (1)
{
c=getchar();
putchar(c);
} }
21 Limbajedeprogramare Conf.dr.L.STOLERIU [email protected]
-
7/31/2019 Limbaj de programare C4
22/22
Tipuridedate char
Alt variant:
while ((c = getchar()) != EOF){
putchar(c);
}
n biblioteca , exist o linie n care se declar#define EOF (-1) (EOF provine de la "endoffile)
EOF = CTRL+Z
22 Limbajedeprogramare Conf.dr.L.STOLERIU [email protected]