Inkrement va decrement amallari
Pascal tilida butun turdagi operatorlarni bittaga oshirish va bittaga kamaytirishning
samarali vositalari mavjud. Ortrish uchun n:=0; deb boshlang`ich qiymatni berib olib
keyin n:=n+1; har safar qiymat birga oshib boradi. Kamaytirish uchun ko`rinishda
n:=10; deb boshlang`ich qiymatni berib olib keyin n:=n-1; har safar birga kamayib
boradi.
C++ tilida butun turdagi operatorlarni bittaga oshirish va bittaga kamaytirishning
samarali vositalari mavjud. Bular inkrement (“++”) va decrement (“--”) unar
amallaridir.
Operatorlarga nisbatan bu amallarning prefix va papostfiks ko`rinishlari bo`lad.
Prefiks ko`rinishida amal til ko`rsatmasi bo`yicha ish bajarilishidan oldin operandga
qo`llaniladi. Postfiks xolatda esa amal til ko`rsatmasi bo`yicha ish bajarilgandan keyin
operandga qo`llaniladi.[8]
Prefix yoki postfiks amal tushunchasi qiymat berish va boshqa amallar bilan bog`liq
ifodalarda o`rinli:
x=y++ // postfiks inkrement
index =--i; // prefix decrement
count++; // undan amal, “++count;” bilan ekvivalent
abc--; // undan amal, “--abc;” bilan ekvivalent
Bu erda y o`zgaruvchining qiymatini x o`zgaruvchiga o`zlashtiriladi va keyin bittaga
oshiriladi, i o`zgaruvchining qiymati bittaga kamaytirib, index o`zgaruvchga
o`zlashtiriladi. O`zgaruvchilarning aniq bir qiymatlari uchun misol:
int s=10, i=5;
41
s+=++i; //s=16 va i=6
s+=i++; // s=22 va i=7.
C++ tilini o`zgaruvchilarni har bir qiymat uchun alohida elon qilish hajim va vaqtda
ancha yutuq beradi
Oliy matematika kursidagi tanish masalalar tanlab olib, Pacal va C++ tilarida tilarida
dastur tuzib, ularning farqlarini ko`rib o`tamiz. [12,13]
1-masala. Ikki butun musbat son m va n larning eng katta umumiy bo’luvchisi
(EKUB) ni aniqlash dasturini tuzing.
Dastur matni
program ekub;
var m,n,x,y:ineteger;
Function
ekub(a,b:integer):integer;
Begin
If a<>0 then
ekub:=ekub(b mod a, a)
else ekub:=b;
End;
begin
write('m=');read(m);
write('n=');read(n);
write('x=',ekub(n,m));
end.
C++da dasturu:
#include
#include
int ekub(int aa, int bb){
return
aa!=0?ekub(bb%aa,aa):bb;
}
int main(){
int a,b;
cin>>a>>b;
cout<
getch();
}
Bu ikki misolda ham bir xil
natijaga ega bo`lamiz.
Lekin C++ dagi bu kod
orqali
aa!=0?ekub(bb%aa,aa):bb;
pascaldagi If operatori
ichidagi vazifani bajarib
dastur hajmini va vaqttidan
yutiq C++ da.
42
2-masala. Ikkita x va y sonlarning kattasini tanlash (EKT) dacturini tuzing.
program ekt;
var m,y,x:ineteger;
begin
write('x=');read(x);
write('y=');read(y);
if x>y then begin
m:=x; write('m=',m);
end
else if y>x then begin
m:=y; write('m=',m);
end
else write('‘PAUSE’’);
end.
C++ da dasturu:
#include
Int main()
{
int m,y,x;
cout<<”x=”;cin>>x;
cout<<”y=”;cin>>y;
if (x==y)
cout<<("Bu sonlar teng");
if (x>y) m=x; cout <<"m=" <if (xcout <<"x1=" <system("PAUSE");
return 0;
}
Qiyosiy taqoslash
Bu ikki misolda ham
bir xil natijaga ega
bo`lamiz. Lekin C++
dagi bu kod orqali
if (x>y) m=x; cout
<<"m=" <if (xb/(2*a);;
pascaldagi If
operatori ichidagi
vazifani bajarib
dastur hajmini va
vaqttidan yutiq
pascalda.
Dostları ilə paylaş: |