Arifmetik operatorlar
№
|
Java dasturlash tilida operatorning berilishi
|
Vazifasi
|
C++dasturlash tilida operatorning berilishi
|
Vazifasi
|
Operatorning formati
|
1
|
+
|
Qo’shish
|
+
|
Qo’shish
|
Bir xil
|
2
|
-
|
Ayirish
|
-
|
Ayirish
|
Bir xil
|
3
|
*
|
Ko’paytirish
|
*
|
Ko’paytirish
|
Bir xil
|
4
|
/
|
Bo’lish
|
/
|
Bo’lish
|
Bir xil
|
5
|
%
|
Modul bo’yicha bo’lish
|
%
|
Modul bo’yicha bo’lish
|
Bir xil
|
6
|
++
|
Inkrement
|
++
|
Inkrement
|
Bir xil
|
7
|
++
|
Dekrement
|
--
|
Dekrement
|
Bir xil
|
Solishtirish operatorlari.
№
|
Java dasturlash tilida operatorning berilishi
|
Vazifasi
|
C++dasturlash tilida operatorning berilishi
|
Vazifasi
|
Operatorning formati
|
1
|
= =
|
Tenglik
|
= =
|
Tenglik
|
Bir xil
|
2
|
! =
|
Teng emas
|
! =
|
Teng emas
|
Bir xil
|
3
|
>
|
Katta
|
>
|
Katta
|
Bir xil
|
4
|
<
|
Kichik
|
<
|
Kichik
|
Bir xil
|
5
|
> =
|
Katta yoki teng
|
> =
|
Katta yoki teng
|
Bir xil
|
6
|
< =
|
Kichik yoki teng
|
< =
|
Kichik yoki teng
|
Bir xil
|
MANTIQIY OPERATORLAR.
№
|
Java dasturlash tilida operatorning berilishi
|
Vazifasi
|
C++ dasturlash tilida operatorning berilishi
|
Vazifasi
|
Operatorning formati
|
|
&
|
And operatori bir necha amallar bir vaqtda bajarilish kerak bo’lgan holatda qo’llaniladi. qo’llaniladi.
|
&
|
C++ da &
operatoriga
adresni olish amali deyiladi,ya’ni
& belgisi
Oldiga qo’yilgan o’zgaruvchi adresini oladi.
|
Java dasturlash tili va C++ dasturlas tillarida & operatorining ishlash prinspi har xil.
|
|
|
|
Or operatori bir necha amallardan bittasi rost bo’lgan holatda,yoki barchasi rost bo’lganda qo’llaniladi
|
|
|
Or operatori bir necha amallardan bittasi rost bo’lgan holatda,yoki barchasi rost bo’lganda qo’llaniladi
|
Java dasturlash tilida va C++ dasturlash tilida I operatorining ishlash prinsipi bir xil.
|
|
^
|
Mantiqiy XOR(yoki inkor)
|
^
|
Mantiqiy XOR(yoki inkor)
|
Java dasturlash tilida va C++ dasturlash tilida ^ operatorining ishlash prinsipi bir xil.
|
|
||
|
Mantiqiy operator "OR" deb nomlanadi. Agar ikkala operanddan biri yolg’on qiymatga teng bo'lmasa, u holda shart to'g'ri bo'ladi
|
||
|
Mantiqiy operator "OR" deb nomlanadi. Agar ikkala operanddan biri yolg’on qiymatga teng bo'lmasa, u holda shart to'g'ri bo'ladi
|
Java dasturlash tilida va C++ dasturlash tilida || operatorining ishlash prinsipi bir xil.
|
|
&&
|
"VA" mantiqiy operatori deyiladi. Agar har ikkala operator ham yolg’on qiymatga bo'lmasa, shart bajariladi
|
&&
|
"VA" mantiqiy operatori deyiladi. Agar har ikkala operator ham yolg’on qiymatga bo'lmasa, shart bajariladi
|
Java dasturlash tilida va C++ dasturlash tilida && operatorining ishlash prinsipi bir xil.
|
|
!
|
Agar shart rost bo’lsa noto’g’ri ishlaydi va aks holda tog’ri ishlaydi
|
!
|
Agar shart rost bo’lsa noto’g’ri ishlaydi va aks holda tog’ri ishlaydi
|
|
Bu qiyosiy tahlil jadvallaridan shuni xulosa qilib aytish kerakki operatorlar yuqori dasturlash tillarida mavjud.Ammo har bir dasturlash tillari boshqa dasturlash tillaridan farqli tomonlari mavjud.Masalan dastur tuzish jarayonidagi maxsus buyruq kodlari va ular ustida bajariladigan amallar turli xil ko’rinishda bo’ladi.Java va C++ dasturlash tillarida boshqarish operatorlari deyarli bir xil ammo ularni farqli jihatlari ham mavjud.Java dasturlash tili bilan C++ dasturlash tilidagi boshqarish operatorlarini solishtiradigan bo’lsak,Java tilidagi for-each operatori c++ tilida mavjud emas,ammo c++ dasturlash tilining c++11 versiyasida for-each funsiyasi yaratilgan.Bu funksiya xuddi Java dasturlash tilidagi for-each operatori bilan bir xil vazifani bajaradi.Java dasturlash tilida Goto operatori mavjud emas.C++ tilida Goto operatori mavjud,ammo undan foydalanish xatoliklarga olib kelishi mumkin.Java da Labeled for loop operatorinig vazifasi c++ tilidagi Goto operatorining vazifasi bilan bir xil .Ammo ularni dastur tuzish jarayonidagi dastur kodining sintaksisi turlicha.Mantiqiy operatorlardan bir & operatori Java va C++ tillarida har xil vazifalarni bajaradi.C++ tilida & address olish amali hisoblanib ,ko’rsatkichlarda foydalaniladi.Java da esa & mantiqiy operator bir necha amallar bir vaqtda bajarilish kerak bo’lgan hollarda qo’llaniladi.
Sinflar bilan ishlash.
Ikkala C++ va Java tillarida ham sinflarni e`lon qilish bir-xil class kalit so’zi yordamida e`lon qilinadi. Sintaksisi ikki tilda ham bir xil bo’lganiga qaramasdan, ularning ishlash prinspida biroz farqlar mavjud. Quyida o’asha o’xshashlik va farqlarga birma-bir to’xtalib o’tamiz:
Murojaat huquqlari.
Java tilida sinflar public yoki paket murojaat huquqlari yordamida e`loin qilinishi mumkin (public kalit so’zi sintaksisda tushirib qoldiriladi) .Bunday ko’rinish C++ da mavjud emas.
Ikkala C++ va Java tillari ham Sinf a`zolariga public, protected, yoki private murojaat huquqini beradi.
Javaning muhim jihati, hech qanday murojaat huquqi e`lon qilinmagan holda o’z huquqi (package)ni qabul qiladi. public va private huquqlari ikki tilda ham aynan bir xil namoyon bo’ladi. Chunki, C++ da Javadagidek package strukturasi yo’q, protected murojaat huquqining ishlash prinspi esa biroz boshqacha. Javada protected a`zolar merosxo’r sinflar va shu paketda joylashgan boshqa qo’shni sinflar tomonidan foydalanilishi mumkin bo’lsa, C++ da bu holat faqat merosxo’r sinflar tomonidan bajarilishi mumkin.
Java va C++ tillari a`zo sinflarga murojaat huquqlarini biroz boshqacharoq sintaksisdan foydalanishadi. Java tili har-bir a`zo sinfni o’z sintaksisida huquqlarini yozib belgilashi lozim, hech qanday huquq berilmagan holda – o’z huquqi (package) ishlatiladi. C++ tili a`zo sinflarining huquqlarini guruhlarga ajratadi, vergul bilan ajratilgan huquqlar ro’yxati shaklida beriladi. Shuning uchun, quyidagi 2-misolda ko’rsatilgan kodda sinf konstruktori va setAge(), getName() getAge() hamda print() metodlari public, ichki o’zgaruvchilari _name va _age lar esa
private.
Example 2: C++ Version
file person.h:
/* This class represents a Person */
#include
using std::string;
class Person
{
public:
// Constructor
Person(string name, int age);
// Mutator
void setAge(int age);
// Accessors
string getName() const;
int getAge() const;
// Print out full information
void print() const;
private:
string _name;
int _age;
}; // *** NOTE TO THE READER: THIS
// SEMICOLON IS _REALLY_ IMPORTANT
file person.cc:
/* Implementation for class Person */
#include "person.h"
#include
using std::cout;
Person::Person(string name, int age)
: _name(name), _age(age)
{ }
void Person::setAge(int age)
{
_age = age;
}
string Person::getName() const
{
return _name;
}
int Person::getAge() const
{
return _age;
}
void Person::print() const
{
cout << "Name: " << _name
<< "Age: " << _age;}
|
Example 2: Java Version
file Person.java:
/* This class represents a Person */
public class Person
{
/**Constructor
*
@param name the person's name
* @param age the person's age
*/
public Person(String name, int age)
{
this.name = name;
this.age = age;
}
/** Mutator for age
*
@param age the new age
*/
public void setAge(int age)
{
this.age = age;
}
/** Accessor for name
*
@return the person's name
*/
public String getName()
{
return name;
}
/** Accessor for age
*
@return the person's age
*/
public int getAge()
{
return age;
}
/** Print out full information */
public void print()
{
System.out.print("Name: " + name +
" Age: " + age);
}
private String name;
private int age;
} // *** NOTE TO THE READER:
// NO SEMICOLON HERE
|
C++ tili qo’shimcha ravishda boshqa sinf yoki funksiyani friend(do’st) deb e`lon qilishi mumkin, bu degani o’sha do’st tutingan sinf hech qanday ruxsatsiz bir-birining har-qanday a`zolariga murojaat qilish huquqiga ega bo’ladi. Demak, faraz qilaylik, quyida shu kabi C++ sinflarga misollarni ko’rib chiqamiz:
class A
{
friend class D;
public: int x;
protected: int y;
private: int z;
...
}
class B : public A
{ ...
}
class C
{ ...
}
class D
{ ...
}
Yuqoridagi misolda A sinfning har qanday metodi x,y va z, a`zolarga murojat huquqiga ega. B sinfning metodlari x va y a`zolarga murojat qilishi mumkin, lekin z ga emas. C sinfning metodlari (A sinfga bog’liq bo’lmagan) faqat x ga bog’lana oladi. D sinfining metodlari esa (A sinfning do’sti) x,y va z larga murojaat qilish huquqiga egaligini ko’rishimiz mumkin.
b. O’zgaruvchilar nomlanishi
Yuqoridagi 2-misoldan shuni takidlash lozimki, Java kod qismida ishlatilayotgan o’zgaruvchilarning nomlari va metod ichida keltirilgan parametrlar nomlari bir hilda berilgan. Bu metodlardagi o’zgaruvchilar ba`zilari oldiga “this” kalit so’zi qo’yilgan va bu o’sha o’zgaruvchilarni bir xil nomdagi metod parametrlaridan farqlashni ta`minlaydi.
Lekin, huddi shu holat C++ tilida o’zgaruvchilar nomlari va metod parametrlari boshqa-boshqa farqli nomlar bilan belgilangan. (masalan: _age va age). Bu holat C++ tilida eng maqbul ko’riladigan usul bo’lib, konstruktorning dastlabki ma`lumotlarni berish qismida ham ishlatiladi. Shuni yodda saqlash lozimki, bunga erishishning ikki odatiy yo’li mavjud: o’zgaruvchilar nomlariga “Kelishilgan nomlar” beriladi va parametrlar nomlariga esa yangi nom qo’llaniladi. (masalan: setAge o’zgaruvchisi newAge parametri kabi ko’rinishda); yoki so’zlardagi ajratmalar “_” bilan ajratilgan tarzda yoziladi. Nomlashning bu ikkinchi usuli (“_” bilan ajratish) C++ dasturchilari tomonidan juda ko’p qo’llaniladigan holat bo’lib, ilmiy ishimizning boshqa C++ kod misollarida ham huddi shu holatni qo’llagan holda keltiriladi.
c. Initsializatsiya
Shuni yodda tutish lozimki, C++ konstruktori uchun o’zgaruvchilarni e`lon qilish uchun alohida (Person::Person()) sintaksis qo’llaniladi. Bu C++ dagi ishlatiladigan sintaksis faqat konstruktorda qo’llaniladi. Shunday bo’lsada, Javada ishlatiladigan “Topshiriqli Initsizalizatsiya” (initialization by assignment) yondashuvham C++ da qo’llanilishi mumkin. Ba`zida esa ikkala sintaksisni ham birgalikda qo’llanilishini ko’rishimiz mumkin.
d. C++ dagi a`zo funksiyalarning const bilan berilishi
C++ dagi kodli misolimizdagidek, ma`lumotga huquq beruvchi metodlar (getName(), getAge(), va print()) oxirida const kalit so’zi ikkala: sinf deklaratsiyasi va sinf implementatsiyasida yoziladi. Shu tarzda const ning yozilishidan maqsad, metod qo’llanilgan paytda uning obyektini o’zgartirmaslikni taminlaydi. (Shu deklaratsiya berilganda, kompelyator _name yoki _age bilan berilgan o’zgaruvchilarni qiymatlarini o’zgartirishga ruxsat bermaydi.). const kalit so’zi shuning uchun faqat qabul qiluvchimetodlarda qo’llaniladi, konstruktor yoki mutatorlarda emas. Bu sintaksisning Javada ekvivalenti mavjud emas.
e. C++ da sinfni e`lon qilish kodi oxirida nuqtali vergulni unutmang, lekin Javada buni ishlatmang!.
Mavzu:Massivlar
Java tilida bir o‘lchovli massivlar quyidagicha aniqlanadi :
Elementlarining_turi massiv_nomi[];
Masalan,
int A[];
double b[];
char s[];
Demak, massivlarni aniqlashda (ta’riflashda) oldin massiv
elementlarining turi va undan keyin massivning nomi, nomdan keyin esa []
o‘rta qavslar qo‘yilar ekan. Agar [] qo‘yilmasa, bu oddiy o‘zgaruvchilani
ta’riflash bo‘ladi.
Yuqoridagi keltirilgan massivlarni aniqlash bu hali massiv to‘liq
aniqlandi, degan so‘z emas. Bu yerda hosil qilinmoqchi bo‘lgan massivning
shakli (obrazi) yaratildi. Xotiradan massiv uchun hali joy ajratilgani yo‘q.
Yuqorida biz uchta massivning obrazini yaratdik. Massivni to‘liq aniqlash
uchun quyidagi qoidadan foydalaniladi:
Massiv nomi=new elementlarning turi[o‘lchov];
Masalan, yuqorida keltirilgan massivlar uchun:
A=new int[10];
b=new double[20];
s=new char[40];
Endi programma elementlari butun sonlar bo‘lgan A massiv uchun
xotiradan 10 ta joy, elementlari haqiqiy sonlar bo‘lgan b massiv uchun 20 ta
joy va elementlari belgilar bo‘lgan s massiv uchun 40 ta joy ajratildi. Java da
ajratilgan joylar nuldan boshlab nomerlanadi. Massiv elementlariga murojaat
qilish uchun massiv nomi va [ ] ichida elementning tartib nomeri ko‘rsatiladi.
Masalan,
A[0]-A massivning 1-elementi;
A[1]- A massivning 2- elementi;
Yuqorida massivlarni ta’riflashni ikki bosqichda amalga oshirishni
ko‘rdik. Java da bu ishni bir bosqichda ham amalga oshirish mumkin.
Masalan, yuqorida ta’riflangan massivlarni quyidagicha ham aniqlash
mumkin.
int A[]=new int[10];
double b[]=new double[20];
char s[]=new char[40];
Java tilida massivlarni birdaniga aniqlash va elementlariga qiymat berish
ham mumkin. Masalan,
int A[]={4,5,10,-3,1,-8,25,100,23,6};
bu holda A nomli 10 ta butun elementli bir o‘lchovli massiv aniqlanadi . Bu
yerda A[0]=4, A[1]=5, A[2]=10, A[3]=-3, A[4]=1, A[5]=-8, A[6]=25,
A[7]=100, A[8]=23, A[9]=6.
Do'stlaringiz bilan baham: |