Documente Academic
Documente Profesional
Documente Cultură
Date variabile si date constante. Datele unui program pot fi constante sau
variabile. Datele constante sunt constantele in sensul obișnuit al cuvântului.
Valoarea unei constante este definita de caracterele care intra in reprezentarea
ei si nu poate fi schimbata. Așa sunt, de exemplu, numerele 3, -2, 2003, 1.2,
3.141592653, -123.456, caracterele 'a', 'S', '%', șirurile de caractere
"Informatica", "CiBeR" etc. Pentru a scrie o constanta caracter, scriem
caracterul necesar intre doua caractere apostrof: 'a', '4', '&', ';' etc. Altfel se scrie
caracterul apostrof, care se reprezintă cu un caracter backslash in fata:'\''. In
același mod se reprezintă caracterul backslash si caracterul ghilimele: '\\',
'\"' .Pentru a scrie o constanta sir de caractere, scriem șirul respectiv intre doua
caractere ghilimele: "Arborele Lumii". Constantele numerice se scriu in mod
obișnuit: 5, -12, 65432, 3.14, -123.456, 0.314E+1 etc. Datele variabile, spre
deosebire de cele constante, își pot schimba valorile in timpul execuției
programului. Atunci când lucrează, programul păstrează datele in memoria
calculatorului. Datele variabile sunt păstrate in variabile. Variabila este numele
unei locații de memorie in care se poate păstra o valoare. Numele unei
variabile este format din litere, cifre si caracterul de subliniere '_' . Primul
caracter al numelui nu poate fi o cifra.
1
valoare, are si ea tip. Dar tipul constantei, ca si valoarea ei, se determina de
caracterele ce intra in reprezentarea ei si nu poate fi schimbat.
2
Pentru a păstra numere raționale cu mai multe cifre precise, se folosește
tipul double. O valoare de acest tip se păstrează pe 8 octeti. Numerele se
păstrează cu o precizie dubla, adică pana la 15 cifre corecte. Diapazonul de valori
este de la 1.7×10-308 pana la 1.7×10+308.
Pentru reprezentarea numerelor raționale, mai ales atunci când ele sunt
destul de "lungi", se folosește notația E ( notația științifica ). De exemplu, distanta
in kilometri a unui an lumina este 9460800000000. In notația științifica acest
număr poate fi scris in mai multe moduri: 9.4608E12, 94.608e11, 0.94608E13
etc. Aici litera E mare, ca si litera e mica, semnifica un factor care exprima o
putere a lui 10. Deci, 3.14E0, 0.314e1, 31.4E-1, 314.0e-2 reprezintă unul si
același număr 3.14. Forma unui număr in notația științifica, unde partea
întreaga a numărului este o cifra diferita de 0, se numește forma normalizata a
numărului.
3
atunci pentru long este de 4 octeți. Iar in cazul, ca int cere 4 octeți, atunci si
long ocupa 4 octeți.
4
revine cu valoarea 0, iar la cel de al doilea apel ea revine cu valoarea specifica
tastei acționate. Funcția nu are parametri.
5
memorie, ci scrie caracterul NUL ( '\0' ), care semnifica sfârșitul șirului.
Deci '\n' se substituie prin '\0'. Fiecare caracter ocupa un octet in memorie.
Rezulta, ca un sir de n caractere ocupa n+1 octeți.
Funcția printf( c, p1, p2, p3, … ) scrie la ieșirea standard date sub controlul
unor formate. Are unul sau mai mulți parametri. De obicei, parametrul c este
un sir de caractere scris in ghilimele, care conține textele eventuale de extras si
specificatorii de format eventuali pentru datele de extras. Textele din
parametrul c sunt extrase fără schimbare. Secvențele escape, cum ar fi '\n', '\t',
'\0' s.a., nu sunt extrase, ci sunt "executate". Parametrii p1, p2, p3, … sunt
expresii, valorile cărora vor fi extrase. La fiecare din acești parametri, in șirul de
caractere c, ii corespunde un specificator de format, care indica cum se va
extrage valoarea respectiva. Un specificator de format începe cu % si se termina
cu una sau doua litere anumite. El determina conversia valorii de extras din
formatul intern in formatul extern. Parametrii p1, p2, p3, … pot lipsi. Atunci vor
fi extrase numai textele din parametrul c.
6
necompletate. Daca lungimea ceruta pentru câmpul de extragere este prea mica,
atunci ea este ignorata si valoarea este extrasa pe numărul necesar de poziții.
Semnul minus determina alinierea valorii in stânga câmpului de extragere. In
acest caz, pozițiile nefolosite, din dreapta câmpului, rămân necompletate.
Funcția scanf( c, p1, p2, p3, … ) citește de la intrarea standard date sub
controlul unor formate. Are mai mulți parametri. De obicei, parametrul c este un
sir de caractere scris in ghilimele, care conține specificatorii de format pentru
datele de la intrare. El poate conține si caractere albe care sunt neglijate.
Parametrii p1, p2, p3, … sunt adresele zonelor de memorie unde se vor păstra
datele citite. De obicei, adresa unei zone de memorie se exprima prin
operatorul & in fata numelui unei variabile simple sau cu indice. La fiecare din
acesti parametri, in șirul de caractere c, ii corespunde un specificator de format
care indica cum se va citi data respectiva de la intrare. Un specificator de format
începe cu % si se termina cu una sau doua litere anumite . El determina
conversia datei de citit din formatul extern in formatul intern.
7
Funcția are prototipul in fișierul <stdlib.h> si in fisierul <process.h>.
sizeof este un operator care determina dimensiunea in octeti a unei date sau
a unui tip de date. De exemplu, sizeof( int ) determina numărul de octeți
necesari pentru a păstra o valoare de tipul int, iar sizeof d determina numărul
de octeți alocați datei cu numele d.
Exemple de programe:
#include <conio.h>
#include <stdio.h>
int main()
{ char a;
a=getch();
putch(a);
getch();
return 0;
}
#include <conio.h>
#include <stdio.h>
int main()
{ char a;
getch(); // Primul apel
printf("%d\n",getch()); // Al doilea apel
getch(); // Primul apel
a=getch(); // Al doilea apel
printf("%d\n",a);
getch(); // Primul apel
printf("%d\n",a=getch()); // Al doilea apel
getch();
return 0;
}
#include <conio.h>
#include <stdio.h>
int main()
8
{ char c;
c=getchar();
putchar(c-1);
getch();
return 0;
}
#include <conio.h>
#include <stdio.h>
#include <string.h>
int main()
{ char s[256];
gets(s);
printf("Sirul are %d caractere",strlen(s));
getch();
return 0;
}
Exemplul 1.5. Programul citește trei numere întregi si afișează media lor
aritmetica rotunjita pana la doua cifre zecimale.
#include <conio.h>
#include <stdio.h>
int main()
{ int a,b,c;
scanf("%d %d %d",&a,&b,&c);
printf("a=%d\tb=%d\tc=%d\nmedia=%.2f",
a,b,c,(a+b+c)/3.0); //media cu 2 zecimale
return 0;
Exemplul 1.6. Programul afișează intre doua caractere '*' constanta 123.456f (
definita prin directiva #define ) cu diferiți specificatori de format pentru date de
tip float.
#include <conio.h>
#include <stdio.h>
#define a 123.456f
int main()
{ printf("*%f*\n",a);
printf("*%2f*\n",a);
printf("*%20f*\n",a);
printf("*%-20f*\n",a);
9
printf("*%020f*\n",a);
printf("*%.2f*\n",a);
printf("*%.10f*\n",a);
printf("*%2.2f*\n",a);
printf("*%2.10f*\n",a);
printf("*%20.10f*\n",a);
printf("*%-20.10f*\n",a);
printf("*%020.10f*\n",a);
return 0;;
}
Continutul lucrarii:
1.6. Programul afișează pe ecran intre doua caractere '*' textul "Limbajul C++",
folosind următorii specificatori de format: %s, %15s, %-15s, %10s, %15.10s,
%-15.10s. Explicati rezultatele.
10
1.7. Programul citește un caracter ASCII ( cu getchar() ) si apoi afișează (
cu printf() ) caracterul citit si codul lui.
1.11. Programul afișează intre doua caractere '*' constanta 123 ( definita prin
directiva #define ) cu următorii specificatori de format: %d, %2d, %10d, %-10d,
%010d, %ld, %u, %lu.
Explicați rezultatele.
1.12. Programul afișează intre doua caractere '*' constanta 123.456 ( definita
prin directiva #define ) cu diferiti specificatori de format pentru date de tip
double.
Explicați rezultatele.
1.13. Programul afișează intre doua caractere '*' constanta 123.456l ( definita
prin directiva #define ) cu diferiți specificatori de format pentru date de tip long
double.
Folosiți literele Lf, Le, LE, Lg, LG. Încercați si alte litere.
Explicați rezultatele.
11
1.16. Programul citește ( cu gets() ) numele si prenumele unei persoane, apoi
afișează ( cu printf() ) numele pe un rând si prenumele pe altul. Ce se întâmpla
daca numele si prenumele la intrare sunt separate prin spatii albe si nu prin
acționarea tastei Enter?
1.17. Programul citește ( cu scanf() ) un numar întreg zecimal format din cel mult
patru cifre si apoi afișează ( cu printf() ) numărul citit in zecimal, octal si
hexazecimal.
1.18. Programul citește ( cu scanf() ) un număr întreg zecimal format din cel mult
noua cifre si apoi afișează ( cu printf() ) numărul citit in zecimal, octal si
hexazecimal.
Intrebari de control:
12
1.13. Care sunt deosebirile dintre putch() si putchar()?
1.17. Care funcții citesc datele prin intermediul unui tampon ( buffer )?
1.18. Cum "reacționează" funcțiile de intrare la acționarea tastelor Enter, ^z, ^c,
F1, BS, Esc etc.?
1.19. Cum "reacționează" funcțiile de ieșire la caracterele '\n', '\t', '\a', ^z, ^c,
EOF, NUL etc.?
1.20. Cum se poate afișă codul atașat unei taste ce nu corespunde unui caracter
ASCII?
1.31. Câtă memorie ocupa o valoare de tipul: char, int, float, double, long
double?
13