Documente Academic
Documente Profesional
Documente Cultură
pentru Avionica
PACA
LABORATOR 2
Tipuri de date si operatori
in C , C++ si in C#
Tipurile de date si operatorii stau la baza oricarui limbaj de
programare. Ele stabilesc limitele unui limbaj si determina tipurile de
activitati pentru care poate fi utilizat.
• O variabila este o locatie de memorie cu nume, careia ii poate fi stocata o
valoare. Valoarea se poate modifica pe parcursul executarii programului.
Nu exista conceptul de variabila fara “tip” pentru ca tipul unei valori
determina in mod exact operatiile permise asupra sa.
• O constanta (literal), spre deosebire de variabila, desemneaza o valoare
fixa. Pentru fiecare tip de data exista un mod de declarare.
• Tipuri valorice
• Cuvinte cheie ale unei aplicatii
• Literali
• Variabile
• Operatori
Date in C
• Numele unei date
Numele unei date este un identificator si, ca urmare, trebuie sa respecte regulile
specifice identificatorilor. De asemenea, numărul de caractere care intra în compunerea unui
identificator este nelimitat, însa, implicit, numai primele 32 de caractere sunt luate în
considerare. Aceasta înseamnă ca doi identificatori care au primele 32 de caractere identice,
diferențiindu-se prin caracterul 33, vor fi considerați identici.
• In C sunt 4 tipuri de date de baza:
Tip Semnificatie
int Numar intreg
float Numar real, in virgula mobila, simpla precizie
double Numar real, in virgula mobila, dubla precizie
char Caracter (un singur octet)
Sunt 5 tipuri specifice datelor:
a) long
b) long long
c) short
d) unsigned
e) signed
Lungimea zonei de
memorie ocupate
Tip (în biţi) Descriere
MS- UNIX
DOS LINUX
char 8 8 Valoarea unui singur caracter; poate fi întâlnit în
expresii cu extensie de semn
unsigned char 8 8 Aceeaşi ca la char, fară extensie de semn
signed char 8 8 Aceeaşi ca la char, cu extensie de semn obligatorie
int 16 32 Valoare întreagă
long (long int) 32 64 Valoare întreagă cu precizie mare
long long int 32 64 Valoare întreagă cu precizie mare
short int 16 32 Valoare întreagă cu precizie mică
unsigned int 16 32 Valoare întreagă, fără semn
unsigned long int 32 64 Valoare întreagă, fără semn
float 32 32 Valoare numerică cu zecimale, simplă precizie (6 )
double 64 64 Valoare numerică cu zecimale, dublă precizie (10 )
long double 80 128 Valoare numerică cu zecimale, dublă precizie
Cuvinte cheie in C
auto else long switch
break enum register typedef
case extern return union
char float short unsigned
const for signed void
continue goto sizeof volatile
default if static while
do int struct _Packed
double
In general, cuvintele cheie nu pot fi folosite in programele pe care le scriem dandu-le o alta
semnificatie. In cazul in care, totusi, dorim sa le dam o alta semnificatie, va trebui sa le scriem cu
simbolul @ ca prefix.
Cele mai importante fisiere antet standard ANSI sunt:
Fisiere header alloc.h - declara functii de alocare, redactare si eliberare memorie;
assert.h - defineste macroinstructiunea assert ( ) care se foloseste la
diagnosticarea de erori din program;
Fisierele header se includ in bios.h - contine definitii de functii pentru verificarea echipamentelor periferice si
pentru apelarea directa a serviciilor BIOS;
program cu ajutorul directivei :
conio.h - defineste functii video pentru lucrul cu consola: afisare texte, controlul
#include ferestrelor, pozitionarea cursorului, controlul atributelor de scriere etc;
ctype.h - contine functii pentru transformarea si clasificarea codurilor de
caractere;
# include <fisier-header> -in dir.h - defineste functii pentru lucrul in directoare si cu specificari de fisier
acest mod fisierul de inclus este MS-DOS;
cautat doar in directorul specificat errno.h - defineste constante simbolice cu coduri de eroare MS-DOS;
in Options/Directories/Include graphics.h - contine functii grafice: setare paleta de culoare; desenare linii,
dreptunghiuri, curbe, sectoare de umplere; salvare, restaurare imagini video etc;
directories
io.h - contine functii de I / O pentru prelucrarea la nivel inferior a fisierelor;
# include “fisier-header” -in math.h - defineste majoritatea functiilor matematice uzuale precum si acelor
acest mod fisierul de inclus este mai importante constante matematice;
cautat mai intai in directorul curent mem.h - contine functii pentru copiere zone de memorie, cautare, comparare
siruri de caractere;
si daca nu este gasit aici este cautat
signal.h - defineste semnale si functii necesare la depanarea programului;
in directorul specificat in
stdarg.g - defineste macrouri si functii ce permit lucrul cu functii cu numar
Options/Directories/Include variabil de argumente;
directories stdio.h - contine functii de intrare / iesire cu tastatura si consola precum si
functii pentru prelucrarea la nivel superior a fisierelor;
stdlib.h - defineste tipuri, macrouri si functii generale: sortare, conversii, alocare
memorie, generare numere aleatoare, comunicare cu mediul etc.;
string.h - contine functii ce permit prelucrarea sirurilor de caractere;
time.h - defineste functii pentru fixarea si obtinerea timpului sistem.
Literali
REGULI
- primul caracter al unei variabile trebuie sa fie o litera, caracterul underscore “_” sau
simbolul at “@” ;
-urmatoarele caractere pot fi litere, numere sau caractere underscore;
-nu pot fi utilizate cuvinte cheie drept identificatori.
Operatori
• Un operator reprezinta un simbol care determina compilatorul sa
realizeze o anumita operatie matematica sau logica. Sunt patru
categorii de operatori: aritmetici, pe biti, relationali si logici.
Operatori aritmetici Operatori aritmetici Semnificatie
•Atunci cand se aplica operatorul / asupra unor + Adunare ( si plus unar )
intregi, restul este trunchiat, de exemplu: 14/3 este
- Scadere ( si minus unar )
egal cu 4.
•O diferenta in C# fata de C si C++ este faptul ca * Inmultire
1=true. & SI
p q p&q p|q p^q !p | SAU
0 0 0 0 0 1 ^ SAU exclusiv
1 0 0 1 1 0
&& SI logic (scurtcircuitat)
0 1 0 1 1 1
|| SAU logic (scurtcircuitat)
1 1 1 1 0 0
Tabelul de prioritati
Instructiunea while
Instructiunea while are sintaxa:
while (conditie) {Instructiuni};
Cat timp conditie este indeplinita se executa Instructiuni.
- O funcţie in C este echivalentă cu o rutină sau o funcţie
Functii în FORTRAN sau cu o procedură în PASCAL.
- O funcţie furnizează o modalitate convenabilă de a
încapsula anumite calcule care pot fi reluate ulterior.
#include "stdafx.h"
#include <stdio.h>
#include "conio.h" int putere(int baza, int n)
int putere (int m, int n); //prototip functie {int i,p;
void main() p=1;
for(i=1;i<=n;++i)
{
p=p*baza;
int i, a[10]; // declaratie tablou return p;
a[0]=1; }
for (i=0; i<10; ++i)
{
a[i]=2*i;
printf("%d %3d %6d \n",i, putere (a[i],i), putere(-2*a[i],i));
}
_getch();
return ;
}
#include <stdafx.h>
#include <stdio.h> Variabile externe, variabile
#include <iostream> automate si domenii de
#include "conio.h" vizibilitate
int p; // variabila externa
int putere (int m, int n);
int putere(int baza, int n)
void main()
{int i; // variabila interna
{ (automatica)
int i, a[10], dummy, p1, p2; p=1;
a[0]=1; for(i=1;i<=n;++i)
for (i=0; i<10; ++i) p=p*baza; // modificarea variabilei
{ externe
a[i]=2*i; return 0;
dummy=putere(a[i],i); }
p1=p ;
In cadrul funcţiilor se definesc variabile locale care
dummy=putere(-2*a[i],i);
sunt volatile (automate) (ex: i, p1, p2). Trebuie
p2=p; iniţializate de fiecare dată urmând ca la închiderea
printf("%d %3d %6d \n",i, p1, p2); funcţiei să piardă valoarea.
Spre deosebire de acestea in afara funcţiilor se pot
} defini o serie de variabile externe care au valoarea
_getch(); „0” începând de la momentul definirii, dar ulterior
return; pot fi modificate cu ajutorul funcţiilor, putându-se
face astfel transferul rezultatelor intre funcţii prin ele
} ( ex: variabila p)
Utilizarea operatorilor
#include "stdafx.h"
#include "conio.h"
#include <stdio.h>
// definitia an bisect: (sa fie divizibil cu 4 dar sa nu fie
// divizibil cu 100) sau (sa fie divizibil cu 400)
Evaluarea anului void main()
bisect { int an;
printf("introduceti anul\n");
scanf_s("%d",&an);
if((an%4==0&&an%100!=0)||an%400==0)
printf("%d este an bisect\n",an);
else
printf("%d nu este un an bisect\n",an);
_getch();
return;
}
Operatori şi expresii de atribuire, expresii condiţionale
#include "stdafx.h"
#include "conio.h"
#include " stdio.h “
void main()
{
int i, a[20], b[20],z[20];
Gasirea valorii maxime
din 2 tablouri for (i=0; i<20; i+=2)
{
a[i]=-7+2*i;
b[i]=i;
z[i]=a[i]>b[i]?a[i]:b[i];
printf("%d %3d %3d %3d\n",i, a[i], b[i], z[i]);
}
_getch();
return;
}
Verificarea paritatii
unui numar intreg
C sau C++ C#
using System;
using System.Collections.Generic;
using System.Linq;
#include "stdafx.h" using System.Text;
#include "conio.h" namespace NumarPar
#include "stdio.h" {
class Program
void main() {
{ int x; static void Main(string[] args)
printf("introduceti nr intreg x=\n"); { int x;
scanf_s("%d",&x); x = Convert.ToInt32(Console.ReadLine());
if (x % 2 == 0) printf("Acest nr if (x % 2 == 0) Console.WriteLine("Acest numar
este par\n"); este par");
else printf("Acest numar este else System.Console.WriteLine("Acest numar este
impar"); impar");
_getch(); Console.ReadKey();
return; }
} }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
Exemple in C#
namespace ConsoleApplication1
{ Verificare operator
class Program
{
static void Main(string[] args)
{
char op;
Console.WriteLine("Introduceti un operator: ");
op = (char)Console.Read();
switch(op)
{
case '+': Console.WriteLine("Operator plus: folosit pentru adunare\n"); break;
case '-': Console.WriteLine("Operator minus: folosit pentru scadere\n"); break;
case '*': Console.WriteLine("Operator de inmultire\n"); break;
case '/': Console.WriteLine("Operator de impartire\n"); break;
case '=': Console.WriteLine("Operator egal\n"); break;
default: Console.WriteLine("Operator necunoscut\n"); break;
}
Console.ReadKey();
}
}
}
#include "stdafx.h"
#include "conio.h"
#include "stdio.h"
void main()
Exemple in C
{char op;
printf("Introduceti un operator: "); Verificare operator
scanf("%c",&op);
printf("%c",op);
switch(op)
{
case '+': printf("Operator plus: folosit pentru adunare\n");
break;
case '-': printf("Operator minus: folosit pentru scadere\n");
break;
case '*': printf("Operator de inmultire\n");
break;
case '/': printf("Operator de impartire\n");
break;
case '=': printf("Operator egal\n");
break;
default: printf("Operator necunoscut\n");
break;
}
_getch();
return ;
}