CATEGORII DOCUMENTE |
Este instructiunea prin care unei variabile i se atribuie o expresie. Simbolul folosit este semnul "=".
In tabelul de mai jos sunt prezentate principalele variante ale instructiunii de atribuire
Tabelul Principalele variante ale instructiunii de atribuire
operatia |
sintaxa |
exemple |
observatii |
Atribuire simpla |
<variabila> = <expresie>; |
x=tan(pi()/3); | |
Atribuirea combinata cu un operator |
<variabila> <op> = <expresie>; |
x+=y; i-=2; a*=ln(a); alfa /=n; |
Este echivalenta cu: <variabila> = <variabila> op <expresie>; |
Operatori aritmetici unari (3): -, ++ , --
"++" - Incrementare - Mareste valoarea variabilei cu 1.
"--" - Decrementare - Micsoreaza valoarea variabilei cu 1
Pot fi in forma prefixata (Ex. ++a) - prioritate mare, sau postfixata (Ex. b++) - prioritate mica.
Operatori aritmetici binari (5): +, -, *, /, % (modulo)
Observatie.: In C, prin impartirea a doi intregi se obtine tot un intreg
Operatori aritmetici binari compusi (cu atribuire) (5): +=, -=, *=, /=, %=
Semnif: expr1 op = expr2 expr1 = expr1 op expr2.
Ex. a+=2 a=a+2
Operatori relationali binari (6): >, >=, <, <=, ==, != (diferit)
Operatori logici pe cuvant (3): && (SI), || (SAU), ! (NOT)
Ordinea descrescatoare a prioritatii: !, >, >=, <, <=, &&, ||
Tabelul Compunerea operatorilor logici pe cuvant
a |
b |
a&&b |
a||b |
aXORb |
!a |
Pentru aXORb nu exista operator dar se poate folosi (a||b)&&!(a&&b)
Operatori logici pe bit (6): ~ (NOT), & (SI), | (SAU), ^ (XOR), <<, >> (deplasare biti stanga/dreapta)
Operatorul conditional " ? :"
Este un operator ternar (necesita 3 operanzi), utilizat in constructii de forma:
expresie1 ? expresie2:expresie3
Se evalueaza expresia1. Daca aceasta are o valoare diferita de zero, atunci tipul si valoarea intregii expresii vor fi aceleasi cu tipul si valoarea expresiei2. Altfel (daca expresie1 are valoarea zero), tipul si valoarea intregii expresii vor fi aceleasi cu tipul si valoarea expresiei3. Deci operatorul conditional este folosit pentru a atribui intregii expresii tipul si valoarea expresiei2 sau a expresiei3, in functie de o anumita conditie. Acest lucru este echivalent cu:
Daca expresie1 diferita de zero
Atunci evalueaza expresie2
Altfel evalueaza expresie3
Tabelul 5.1 prezinta ierarhia tuturor operatorilor (grupati pe categorii) folositi in limbajul C cu prioritatile lor si regulile de asociativitate. Operatorii dintr-o categorie au aceeasi prioritate. Retineti ca toti operatorii, cu exceptia operatorilor unari, a acelor combinati cu atribuire si a operatorului ?, se asociaza de la stanga la dreapta. Operatorii unari (*, &, -) si operatorul ? se asociaza de la dreapta la stanga.
Tabelul Prioritatea operatorilor
Nr. |
Clasa de operatori |
Operatori |
Asociativitate |
Primari |
[] . -> :: |
de la stanga la dreapta |
|
Unari |
! (NOT pe cuvant) ~ (NOT pe bit) ++ -- sizeof (tip) |
de la stanga la dreapta |
|
-(unar) *(deferentiere) &(referentiere) |
de la dreapta la stanga |
||
Multiplicativi |
de la stanga la dreapta |
||
Aditivi |
de la stanga la dreapta |
||
Deplasare pe bit |
<< >> |
de la stanga la dreapta |
|
Relationali |
< <= > >= |
de la stanga la dreapta |
|
De egalitate |
de la stanga la dreapta |
||
& (SI logic pe bit) |
de la stanga la dreapta |
||
^ (XOR pe bit) |
de la stanga la dreapta |
||
| (SAU logic pe bit) |
de la stanga la dreapta |
||
&& (SI logic pe cuvant) |
de la stanga la dreapta |
||
|| (SAU logic pe cuvant) |
de la stanga la dreapta |
||
Conditional |
de la dreapta la stanga |
||
De atribuire |
+= -= *= %= &= ^= |= <<= >>= |
de la dreapta la stanga |
|
Virgula |
de la stanga la dreapta |
Operatie |
Cat |
Rest |
|
||
|
||
Aceasta se realizeaza prin impartiri succesive la doi pana cand catul devine zero; sirul resturilor in ordine inversa formeaza numarul in baza doi.
Ex.: 2410 = 110002. Acest lucru s-a obtinut conform operatiilor din tabelul alaturat.
Numarul in baza 10 este suma produselor dintre cifrele numarului in baza doi si doi ridicat la o putere egala cu pozitia cifrei in numar; numerotarea incepe din dreapta cu pozitia zero.
Ex.: 110102 = 1∙24 + 1∙23 + 0∙22 + 1∙21 + 0∙20 = 2610
Se scrie fiecare simbol al numarului hexazecimal sub forma binara.
Ex.: DFH = 110111112 deoarece DH = 1310 = 11012, iar FH = 1510 = 11112
Numarul binar se imparte in grupuri de cate patru cifre, incepand de la dreapta la stanga, iar apoi fiecare grup de cifre este scris in baza saisprezece.
Ex.: 1101010 = 01101010 = 6AH deoarece 0110 = 610 = 6H, iar 1010 = 1010 = AH
//Program cu operatii aritmetice
#include<iostream.h>
void main(void)
//Aria triunghiului- formula lui Heron
#include <iostream.h>
#include <math.h>
main()
1.citeste a11,a12,a21,a22,b1,b2
2.det = a11*a22-a21*a12
3.detx = b1*a22-b2*a12
4.dety = a11*b2-a21*b1
5.x = detx/det; y = dety/det
SCRIE x,y
Care sunt valorile variabilelor a,b si dupa executia fiecareia dintre urmatoarele instructiuni (Valori initiale: a= 0; b= 0; c= 0):
a=(++b)+(++c)
a=b+++c++
a=(++b)+c++
a=b--+--c
a=(++c)+c
a+=2
b-=3
c*=4
a/=2
Rezultatele programului se vor interpreta urmarind valorile variabilelor a, b si c in fereastra Watch
//Operatori relationali si logici
#include<conio.h>
#include<stdio.h>
void main ()
#include <iostream.h>
void main()
Sa se scrie un program care citeste un intreg din intervalul [1600, 4900], ce reprezinta un an calendaristic, afiseaza 1 daca anul este bisect si 0 in caz contrar sau daca anul nu apartine intervalului indicat mai sus.
Un an, din calendarul gregorian, este bisect daca este multiplu de patru si nu este multiplu de 100 sau daca este multiplu de 400. Aceasta regula este valabila pentru anii care nu sunt anteriori anului 1600.
Daca notam cu an anul calendaristic, atunci el este bisect daca de exemplu:
an%4==0 (an este multiplu de 4)
an%100!=0 (an nu este multiplu de 100). Deci anul este bisect daca expresia
(1) an%4==0 && an%100!=0 este adevarata.
De asemenea, anul este bisect si in cazul in care expresia
(2) an%400==0 (an este multiplu de 400) este adevarata.
Deci anul este bisect daca este adevarata expresia (1) sau (2), adica daca este adevarata expresia:
an%4==0 && an%100! =0 || an%400==0
//An bisect
#include <stdio.h>
void main ( )
Programul afiseaza rezultatul urmatoarelor expresii:
Val initiala x= 7, in binar 00000111
Deplasare biti
x=x<<1 da x= 14, in binar 00001110
x=x<<3 da x= 112, in binar 01110000
x=x<<2 da x= 192, in binar 11000000
x=x>>1 da x= 96, in binar 01100000
x=x>>2 da x= 24, in binar 00011000
x=~x da x= 231, in binar 11100111
SI
7, in binar 00000111; 14, in binar 00001110
x=(7&14) da x= 6, in binar 00000110
SAU
128, in binar 10000000; 3, in binar 00000011
x=(128|3) da x= 131, in binar 10000011
XOR
127, in binar 01111111 120, in binar 01111000
x=(127^120) da x= 7, in binar 00000111
//Operatii pe biti
#include<conio.h>
#include<iostream.h>
//Functie de afisare
dectobin(int x)
do
while(x);
for(i=0;i<8;i++)
cout<<r[i];
void main()
Sa se scrie un program care citeste doua numere si afiseaza maximul dintre ele.
Operatorul ternar - maximul a 2 numere
#include <stdio.h>
void main ()
Sa se scrie un program care citeste un numar si afiseaza valoarea lui absoluta.
modulul unui numar
#include <stdio.h>
void main()
Sa se scrie un program care citeste un intreg si afiseaza radacina patrata din numarul respectiv.
#include <stdio.h>
#include <math.h>
void main( )
Observatie: in acest program, pentru extragerea radacinii patrate s-a utilizat functia sqrt. Ea are prototipul: double sqrt(double). Acest prototip este definit in fisierul math.h.
Sa se scrie un program care citeste pe n de tip intreg si afiseaza valoarea expresiei n/(n+1) cu 15 zecimale.
#include <stdio.h>
void main( )
Observatie: Expresia n/(n+1) realizeaza impartirea intreaga a lui n la n + 1. Pentru a obtine catul impartirii cu 15 zecimale este necesar sa se efectueze impartirea neintreaga. In acest scop s-a convertit operandul n spre lipul double. In felul acesta, conform regulii conversiilor implicite, se converteste spre double si cel de al doilea operand si apoi se face impartirea celor doi operanzi flotanti.
Sa se scrie un program care citeste doi intregi si afiseaza maximul dintre valorile lor absolute.
#include <stdio.h>
void main( )
Observatie: Expresia: (c = a<0 ?-a), (d = b<0 ?-b:b), (c>d) se compune din trei expresii care se evalueaza de la stanga la dreapta.
Prima atribuie lui c valoarea absoluta a lui a, a doua atribuie lui d valoarea absoluta a lui b, iar a treia testeaza relatia c>d. Valoarea intregii expresii coincide cu 1 daca c>d si cu zero in caz contrar.
Ce reprezinta datele si care sunt atributele lor ?
Care sunt diferentele intre constante si variabile ?
Cine determina tipul unei constante ?
Ce sunt identificatorii ?
Ce sunt directivele preprocesor ?
Ce reprezinta variabilele ?
Ce sunt constantele ?
Enumerati tipurile simple de variabile.
Cate tipuri de directive preprocesor cunoasteti ? Exemple.
Care este modalitatea de a interzice modificarea valorii unei variabile ?
Ce loc ocupa declararea variabilelor in cadrul unui program sursa scris in limbajul C++ ?
Ce contin fisierele antet (header) ?
Ce tipuri de variabile se utilizeaza pentru datele numerice ?
Care sunt calificatorii folositi alaturi de tipurile de baza pentru obtinerea tipurilor derivate de date ?
Ce semnifica parantezele unghiulare < > care incadreaza numele unui fisier header ?
Care este diferenta intre constantele 35.2e-1 si 3.52 ? Dar intre 't' si 't' ?
Ce tip are constanta 6.44 ?
Care este diferenta intre operatorii = si == ?
Ce reprezinta caracterele 'escape' ?
Constante intregi.
Constante caracter.
Ce tipuri de conversii cunoasteti ?
Care sunt conversiile realizate in mod automat, de catre compilator ?
Constante sir de caractere.
Constante reale.
Operatorul virgula.
Operatorul sizeof.
Operatori aritmetici binari compusi.
Operatorul de referentiere.
Operatori relationali binari.
Sa se scrie declaratiile pentru definirea constantelor simbolice: pi, g (acceleratia gravitationala), unghi_drept, dimensiune_MAX.
Care va fi rezultatul afisat pe ecran in urma executiei urmatoarelor secvente de instructiuni:
double a=9/2; cout<<a*5<<'n';
double a=9.7, b=5.6; cout<<(a+6<b)<<'n';
double a=9/4; cout<<a*6<<'n';
double x=3;int y=++x+5;cout<<y<<'n';
int a=7; cout<<(!a)<<'n';
int a=10.5; cout<<a++<<'n'; cout<<a<<'n';
int a=7; cout<<++a<<'n'; cout<<a<<'n';
int a=10; cout<<a++<<'n'; cout<<a<<'n';
double a=7/2; cout<<a<<'n';
int x=3; int y=x++-2; cout<<y<<'n';
int x=3; int y=++x+5; cout<<y<<'n';
double a=5.6, b=7.45; cout<<(a>b)<<'n';
Sa se verifice corectitudinea urmatoarelor secvente. Pentru cele incorecte, explicati sursa erorilor.
double a=9.7, b=5.2; int c=(a+6<b)++; cout<<c<<'n';
double a=7/5; double c=a*5++; cout<<c<<'n';
double a=9.7, b=5.6; int c=(a%6<b)++; cout<<c<<'n';
double a=5.6, b=7.45; cout<<++(a+5>b)<<'n';
double a=9.8; double b=9.7; cout<<a%b<<'n';
cout<<&(a+8)<<'n';
int I=8; cout<<(I+10)++<<'n';
double a=8.7; A=(a+8)/56; cout<<A<<'n';
int x=3/5; int y=x++; char x='J'; cout<<'y='<<y<<'n';
char a='X'; const int b=89; b+=8; cout<<'b='<<b<<' a='<<a<<'n';
Sa se scrie un program care afiseaza urmatoarele mesaje:
Sirul 'este dupa-amiaza' este memorat pe . octeti.
marime intreaga este memorata pe octeti.
marime reala, in simpla precizie este memorata pe octeti!
marime reala, in dubla precizie este memorata pe byti!
Constanta caracter 'Q' memorata pe octeti!
Sirul 'ann' este memorat pe octei!
Sirul 'n' este memorat pe biti!
Caracterul '' este memorat pe . biti.
Sa se evalueze expresiile, stiind ca: int i=1; int j=2; int k=-7; double x=0; double y=2.3;
-i - 5 * j >= k + 1
3 < j < 5
i + j + k == -2 * j
x && i || j - 3
Ce operatie logica si ce masca trebuie sa folositi pentru a converti codurile ASCII ale literelor mici in litere mari ? Dar pentru conversia inversa ?
O deplasare la dreapta cu 3 biti este echivalenta cu o rotatie la stanga cu cati biti ?
Sa se seteze pe 1 toti bitii dintr-un octet, cu exceptia bitului cel mai semnificativ.
Sa se scrie un program care citeste o valoare intreaga. Sa se afiseze un mesaj care sa indice daca numarul citit este par sau impar.
Sa se citeasca doua valori intregi. Sa se calculeze si sa se afiseze restul impartirii celor doua numere.
Sa se realizeze programe care executa urmatoarele actiuni:
Se citeste un unghi in grade; se cere sa se transforme in radiani (360 = 2p rad)
Calculeaza perimetrul si aria unui cerc de raza r citita de la tastatura
Calculeaza perimetrul si aria unui triunghi de laturi date.
Calculeaza expresia: -3∙x2 + x∙y - y/x
Sa se scrie un program care sa converteasca o temperatura in grade Celsius in echivalentul ei in grade Farenheit. Formula de conversie este F = 32 + 9/5 C Programul trebuie sa tipareasca ambele valori ale temperaturii (in grade Celsius si grade Farenheit) cu mesaje corespunzatoare
Care dintre variabilele care intervin in secventa de operatii urmatoare isi vor pastra valoarea avuta initial?
a ← b+c; a si c; c ← a-c; b si c
b ← c; b si a; c ← a-b; a, b si c
Care dintre operatiile urmatoare atribuie variabilei intregi x una din cifrele sale, stiind ca x > 10000:
x ← x mod 100; x ← x mod 10;
x ← x div 10 mod 10; x ← x div 100 mod 10;
x ← x mod 10 div 1; x ← x mod 50;
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 1813
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved