Dastur natijasi: Komplex raqam c1 = (4,3)
c1 ning haqiqiy qismi bu haqiqiy ( c1 ) = 4.
c1 ning no'malum qismi bu imag ( c1 ) = 3.
c1 ning komplex kasr qismi bu c2 = conj ( c1 )= (4,-3)
c2 ning haqiqiy qismi bu real ( c2 ) = 4.
c2 ning no'malum qismi bu imag ( c2 ) = -3.
(c1 * conj (c1) ) ning haqiqiysi bu c1 * c2 = 25
imag() complex funksiyasiga misol:
Funksiya shabloni:
template Typeimag(constcomplex& complexNum); Dastur matni: #include "stdafx.h"
#include
#include
int main( )
{
using namespace std;
complex c1 ( 4.0 , 3.0 );
cout << " c1 komplex son = " << c1 << endl;
double dr1 = real ( c1 );
cout << " c1 ning haqiqiy qismi bu real ( c1 ) = "
<< dr1 << "." << endl;
double di1 = imag ( c1 );
cout << " c1 ning noma'lum qismi bu imag ( c1 ) = "
<< di1 << "." << endl;
getchar();
}
Dastur natijasi: c1 komplex son = (4,3)
c1 ning haqiqiy qismi bu real ( c1 ) = 4.
c1 ning noma'lum qismi bu imagine ( c1 ) = 3.
Dastur natijasi: c1 = polar ( 5.0 ) = (5,0)
c2 = polar ( 5.0 , pi / 6 ) = (4.33013,2.5)
c3 = polar ( 5.0 , 13 * pi / 6 ) = (4.33013,2.5)
c2 & c3 komplex sonlar bir xil argumentlardan tashkil topgan.
c2 ning moduli bu : abs ( c2 ) = 5
c2 argumenti bu :
arg ( c2 ) = 0.523599 radianda, qaysiki 30 daraja.
Sintaktis tahlil Masala: Matinli faylda “ ; ” (nuqta-vergul) belgisi bilan ajratilgan arifmetik iboralar mavjud. Arifmetik ifodalar: identifikatorlardan, o'nlik suzuvchi nuqta raqamlaridan, o’zlashtirish belgisi ( = ), ishoralar +, -, *, / va figurali qavs({}) lardan iborat.
1) Topshiriqqa muvofiq kirish matnini leksik tahlilini bajaradigan va ularning turlarini ko'rsatgan holda tokenlar jadvalini tuzadigan dastur yozing. Dastur kirish matnida leksik tahlil bosqichida aniqlanishi mumkin bo'lgan xatolar (sintaksis tahlil) mavjudligi to'g'risida xabarlarni chiqarishi kerak;
2) leksik va sintaksis tahlil analizator kodini yaratishda Visual C++ dan kompilyator sifatida foydalaning.
Masalaniyechish g‘oyasi: Oqimlar sinfi (fstream.h) dan foydalanib, matnli fayl ma’lumotlari o’zlashtiriladi. Tokenlar jadvali yaratish uchun birinchi: faylning nechta satr borligi getline(oqi, line ) funksiyasidan foydalanilanib aniqlanadi. Xar bir sat sikl qadamlar bilan sanaladi (i++). O’zlashtirib olingan satr o’zgaruvchi (line) ning xar bir elementi vazifada belgilangan belgilarga tekshiriladi.
Ko‘pincha kompilyator va translyator tushunchalari bir ma’noda ishlatiladi.
Shuning uchun ham C, C++, Paskal kompilyatorlari degan tushunchalari ishlatiladi.
Ixtiyoriy kompilyator tarkibi quyidagi 3ta qismdan iborat:
1. Leksik tahlil.
2. Sintaksis tahlil.
3. Mashina kodini generatsiya qilish.
Kompilyatorlarning o’zaro bog’lanish tartibi quyidagicha:
C++ tilida programma yaratish bir nechta bosqichlardan iborat bo‘ladi. Dastlab, matn tahririda (odatda programmalash muhitining tahririda) programma matni teriladi, bu faylning kengaytmasi «.cpp» bo‘ladi. Keyingi bosqichda programma matni yozilgan fayl kompilyatorga uzatiladi, agarda programmada xatoliklar bo‘lmasa, kompilyator «.obj» kengaytmali obyekt modul faylini hosil qiladi. Oxirgi qadamda komponovka (yig‘uvchi) yordamida «.exe» kengaytmali bajariluvchi fayl programma hosil bo‘ladi. Bosqichlarda yuzaga keluvchi fayllarning nomlari boshlang‘ich matn faylining nomi bilan bir xil bo‘ladi.
Kompilyatsiya jarayonining o‘zi ham ikkita bosqichdan tashkil topadi. Boshida preprotsessor ishlaydi, u matndagi kompilyatsiya direktivalarini bajaradi, xususan #include direktivasi bo‘yicha ko‘rsatilgan kutubxonalardan C++ tilida yozilgan modullarni programma tarkibiga kiritadi. Shundan so‘ng kengaytirilgan programma matni kompilyatorga uzatiladi. Kompilyator o‘zi ham programma bo‘lib, uning uchun kiruvchi ma’lumot bo‘lib, C++ tilida yozilgan programma matni hisoblanadi. Kompilyator programma matnini leksema (atomar) elementlarga ajratadi va uni leksik, keyinchalik sintaktik tahlil qiladi. Leksik tahlil jarayonida u matnni leksemalarga ajratish uchun «probel ajratuvchisini» ishlatadi. Probel ajratuvchisiga - probel belgisi ('─'), '\t' - tabulyatsiya belgisi, '\n'- keyingi qatorga o‘tish belgisi, boshqa ajratuvchilar va izohlar (kommentariylar) kiradi.
Programma matni tushunarli bo‘lishi uchun izohlar ishlatiladi. Izohlar kompilyator tomonidan «o‘tkazib» yuboriladi va ular programma amal qilishiga hech qanday ta’sir qilmaydi.
C++ tilida izohlar ikki ko‘rinishda yozilishi mumkin.
Birinchisida "/*" dan boshlanib, "*/" belgalari bilan tugagan barcha belgilar ketma-ketligi izoh hisoblanadi, ikkinchisi «satriy izoh» deb nomlanadi va u "//" belgilardan boshlangan va satr oxirigacha yozilgan belgilar ketma-ketligi bo‘ladi. Izohning birinchi ko‘rinishida yozilgan izohlar bir necha satr bo‘lishi va ulardan keyin C++ operatorlari davom etishi mumkin.
Misol.
int main(){
// bu qator izoh hisoblanadi
int a=0; //int d;
int c;
/* int b=15 */
/*- izoh boshlanishi
a=c;
izoh tugashi */
return 0;