Увод в програмирането  alpha
Операции и изрази

Разглеждаме програма, която по дадена хипотенуза и разлика между катетите, намира катетите.

#include<iostream.h>
#include<math.h>
void main()
{
double z,a,d,x,y;
cout<<"Въведете z и a: ";
cin>>z>>a;
d = sqrt(2*z*z - a*a );
x = ( a + d ) / 2 ;
y = ( -a + d ) / 2;
cout<<"x= "<<x<<"y= "<<y<<endl;
}

Израз наричаме всяка валидна за езика комбинация от операции, операнди и кръгли скоби. Операндите могат да бъдат константи, променливи, обръщения към функции и в общия случай изрази. Под валидна комбинация разбираме комбинация, която не противоречи на зададените в езика съответствия между операции и операнди и на синтаксиса на езика.

В зависимост от броя на операндите различаваме:

  • едноместни ( унарни ) операции - 1 операнд
  • двуместни (бинарни ) операции - 2 операнда
  • триместни ( тернарни ) операции - 3 операнда

двуместни +, - и * Типът на резултата от една операция зависи от типа на операндите. Ако типът на двата операнда е цял, то резултатът е цял. Ако поне един от операндите е с плаваща точка, то резултатът е с плаваща точка. Ако и на двата операнда са цели, то при делене резултатът е целочислено.

% -> остатък от целочислено деление

едноместни + , -

В C/C++ истина ( true ) е всяка стойност различна от 0 и лъжа ( false ) е всяка стойност равна на 0. Възприето е стойността на резултата при операции за отношения и логически операции да е винаги или 1 ( за true ), или 0 ( за false ). Операндите за отношения се използват за сравняване на стойности: >, >= , <, <=, ==, !=

Логически опрации са:

  1. && и and логическо умножение
  2. || или or логическо събиране
  3. не not логическо отрицание

При логическо събиране и умножение някой компилатори правят оптимизация операнд 1 && операнд 2 операнд 1 || операнд 2 понякога трябва да се избере опция да не се оптимизира

Присвояване! Присвояването е операция променлива = израз

  • връща резултат Пресмята се изразът, типът на стойността на израза се преобразува към типа на променлива, стойността става стойност на променливата. Връща стойността на израза Присвояването на променливата е страничен ефект. x = a++ ; x = y = z приосвояването става израз x = y = 100 е израз x = y = 100; оператор

Съкратен запис на комбинация от операции: преработи в табличка a = a+b a+=b a = a-b a-=b a = a*b a*=b a = a/b a/=b a = ab a%=b a = a+1 ++a a++ a = a-1 –a a– еквиваленти, ако се ползват автономно

При поставянето на двата + или - преди променливата, първо се изпълнява операцията и след това променливата се използва с новата си стойност.

int x, y; x = 15; еквивалентно на: x=x+1; y = ++x; y=x;

x = 15; y = x; y = x++; еквивалентно на x = x + 1;

++ или – след променлива - първо се използва променливата със старата си стойност и след това се изпълнява операцията.

операция за последователно изпълнение операнд 1, операнд 2 резултатът е стойността на операнд 2 ( стойността на последния израз )

  • явно преобразувание на типовете (тип) операнд използва се за явно преобразуване на типа на операнда към посочения в кръглите скоби тип

int suma, broj; float sr_uspeh; sr_uspeh = ( float ) suma/broj;

операция за размер на обект sizeof(операнд) резултатът е размерът на операнда в B. операндът е променлива или тип sizeof(sr_uspeh) cout<<sizeof(int)<<endl;

Редът на извикване на операндите в един израз се определя от техния приоритет и асоциативност. По-висок приоритет преди по-нисък. Операциите с един и същ приоритет се изпълняват отляво надясно или отдясно наляво в зависимост от техните асоциативност.