logo

Sanoq sestemalari ustida amallar bajarish uchun interaktiv dasturiy ta’minot

Загружено в:

12.08.2023

Скачано:

0

Размер:

634.306640625 KB
O’ZBEKISTON RESPUBLIKASI	 	
OLIY VA O’RTA	-MAXSUS TA’LIM VAZIRLIGI	 	
 	
SAMARQAND DAVLAT UNIVERSITETI	 	
 	
MEXANIKA	-MATEMATIKA FAKULTETI	 	
AMALIY MATEMATIKA VA INFORMATIKA BO’LIMI	 	
5110700	-INFORMATIKA O’QITISH METODIKASI YO’NALISHI	 	
 	
„Sanoq sestema	lari ustida amallar 	bajarish uchun interaktiv dasturiy ta’minot	“ 	 	
MAVZUSIDAN	 	
 	
 	
 	
                           	206 guruh ta	laba	si : Xasanov J.	 	
                                                                     	Kurs ishi rahbari: Nazarov F	. 	
SAMARQAND	-2016	  Mundar	ija	 	
 
 Kirish.	 	
I.  C++  tilida 	bir  sanoq  sestemadan  boshqa  sanoq  sestemaga    o’tuvchi  dastur 	
tuzish	doir nazariy tushunchalar;	 	
1.1	Turlar va C++ da o’zgaruvchilarni tavsiflash	 	
1.2	.Bеlgi va satrlar	. 	
II.  C++  tilida 	bir  sanoq  sestemadan  boshqa  sanoq  sestemaga    o’tuvchi 	
dastur	dasturiy ta’minoti;	 	
2.1	. Sanoq sistemalarni boshqasiga o’tkazishning matematik tahlili.	 	
      	2.2. 	Borland  C++  da 	bir  sanoq  sestemadan  boshqa  sanoq  sestemaga    o’tuvchi  dastur	 	
dasturiy ta’minoti;	 	
 Xulosa.	 	
 Foydalanilgan adabiyotlar ro’yhati	 	
 
 
 
 
 
 
 
  Kirish	. 	
Bizga    ma’lumki,    dasturlash    tillarining    yuzdan	 ortiq 	ko‘rinishlari    mavjud,    lekin  	
qo‘llanilishi  ko‘lamiga  qarab  C/C++  va  C# dasturlash tillari yuqori dasturlash sinfiga 
mansubdir.Keyingi    yillarda    amaliy    dasturchilarga    juda    ko‘p    integratsion	  	dastur  	
tuzishmuhitlari    taklif    etilmoqda.    Bu    muhitlar    u    yoki    bu    imkoniyatlari    bilan    bir	–	
biridanfarq qiladi.	 	
Men  ham  ushbu  kurs  ishim  davomida  C++  tilida  sanoq  sestemalar  bilan  ishlovchi 	
obektlarga  mo’ljallangan  dasturni  tuzib  chiqmoqchiman.  Ush	bu  dastur  kichik  dastur 	
bo’lsada  kelajakda  boshqa  dasturlar  tuzishim  uchun  fundament  vazifasini  bajarishga 
harakat qilaman.	 	
Bu  dasturni  tuzib  nafaqat  hisoblashni  amalga  oshirish  balki  kichik  dastur 	
ko’	rinishdagi  hisoblash  dasturi  va  sanoq  sestemani  tushinm	aydigan  foydalanuvchi  ham 	
bir ko’rinishda tushinadigan tushinarli, bejirm  ko’rinishga ega dastur tuzmoqchiman. 	 	
Men  bu  dasturni  tuzib  obektlar  yaratishni  va  ular  orqali  shunga  o’xshash  yana 	
boshqa  obektlar  yaratmoqchiman  bu  dasturda  ishlashimga  yana  bir  s	abab  boshqa 	
obektlarga  mo’ljallanmagan  dasturlash  tilla	rida  faqat  masalani  matematik  d	asturi  tuzib 	
natija olinadi bunda yani C++ builderda esa b	oshqa imkoniyatlar va kampanentalar bilan 	
ham ishlash imkoni bor.	 	
EHM 	- bu  elektron  raqamli  qurilmadir.  Elektron	 qurilma  deyilishiga  sabab  har  qanday 	
ma’lumotlar  EHM  da  elektr  signallari  orqali  qayta  ishlanadi.  Raqamli  deyilishiga  sabab 
EHM  da  har  qanday  ma’lumot  sonlar  yordamida  tasvirlanadi.	  	
Sonlarni yozish usuliga sanoq sistemasi deb ataladi. Sonlarni yozish uch	un har bir sanoq 	
sistemasida  o‘ziga  xos  turli  belgilar  to‘plamidan  foydalaniladi.  Foydalanilgan 
to‘plamdagi belgilar ularning soni, sanoq sistemasini xarakterlovchi asosiy kattaliklardir. 
Sanoq  sistemasida  foydalaniladigan  belgilar  soni  sanoq  sistemasining	 asosini  tashkil 	
etadi.  Berilgan  sanoq  sistemasida  sonlarni  yozishdagi  foydalanilgan  belgilar  soniga 
qarab, o‘nlik, ikkilik, sakkizlik, o‘n oltilik va boshqa sanoq sistemalarni kiritish mumkin. 	 	
 
  C++ tilida 	bir sanoq sestemadan boshqa sanoq sestemaga  o’t	uvchi dastur tuzish	 	
doir nazariy tushunchalar;	 	
1. Turlar va C++ da o’zgaruvchilarni tavsiflash	 	
Har  bir  nom  va  har  bir  o’zgaruvchi  ular  ustida  bajariluvchi  amallar aniqlovchi 	
turlarga  ega  bo’ladi.  Masalan,    int i;    tavsiflash  i  o’zgaruvchi  int  tur	iga  tegishli,    ya’ni    i  	
butun    o’zgaruvchi    deb    aniqlaydi.    Tavsiflash   	-  dasturga    nom  kirituvchi    buyruqdir.  	
Tavsiflash    o’zgaruvchining    turini    aniqlaydi.    Tur    nom    va  ifodalardan    to’g’ri  
foydalanishni    aniqlaydi.    Butun    tur    uchun    quyidagi    a	mallar  aniqlangan:  +, 	-,  *  va 	
/.Asosiy  turlar	. Bevosita  apparat  ta’minotiga  javob  beradigan  asosiy  turlar  quyidagilar: 	
char; short;  int; long;  float; double.  Birinchi  to’rtta  tur butun kattaliklarni,  oxirgi ikkitasi 
suzuvchi    nuqtali,    ya’ni    kasr    sonlarn	i    tasvirlash    uchun    ishlatiladi.      char    turidagi 	
o’zgaruvchi  mazkur  kompyuterda  belgilarni  (odatda  bayt)  saqlash  o’lchoviga  ega,  int  
turidagi    o’zgaruvchi    esa    mazkur    kompyuterdagi    butun    arifmetikaga    mos  o’lchovga 
ega  (odatda  so’z).  Turlar  bilan  t	asvirlangan  butun  sonlar  diapazoni  uning  o’lchoviga 	
bog’liq  bo’ladi  (uni  sizeof  buyrug’i  yordamida  hisoblash  mumkin).C++    da    o’lchovlar  
char    turidagi    kattaliklar    o’lchovi    birligida    o’lchanadi.  Asosiy  turlar  o’rtasidagi 
munosabatlarni quyidagicha yoz	ish mumkin:	 	
1 = sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long) = sizeof(float) 	 	
<= sizeof(double).	 	
Umuman,  asosiy  turlar  xususida  yana  boshqa  narsalarni  faraz  qilish  ma’nosiz. 	
Xususan,    ko’rsatgichlarni    saqlash    uchun    butun    tur    etarli,    d	egan    xulosa    barcha 	
kompyuterlar  uchun  to’g’ri  emas.  Asosiy  turlarga  const  so’zini  qo’shib  tavsiflash 
mumkin. Bu boshlang’ich turga shu  turning o’zini beradi, faqat bu holatda const turidagi 
o’zgaruvchilarning qiymatlari initsializatsiyadan so’ng o’zgari	shi mumkin emas.	 	
const float pi = 3.14;	 	
const char plus = '+'; 	 	
Bittalik  qo’shtirnoqqa  olingan  belgilar  belgi  o’zgarmaslar  hisoblanadi. 	 	
Shunga    e’tibor    berish    lozimki,    bu    usulda    tavsiflangan    o’zgarmaslar    xotirada    joy 
egallamaydi.  uning  qiymati  talab  qilingan  joyda  bevosita  ishlatiladi.  O’zgarmaslar  initsializatsiya    paytida    tavsiflanishi    shart.    O’zgaruvchilar    uchun    initsializa	tsiya 	
shartemas,    ammo  albatta  tavsiya  qilinadi.  Lokal  o’zgaruvchilarni  initsializatsiyasiz 
kiritish asoslari juda ko’p.Bu  turlarning  ixtiyoriy  kombinatsiyasiga  quyidagi  arifmetik  
amallar qo’llanilishi mumkin:  	 	
+ (plyus, unar va binar);	 	
- (minus, un	ar va binar);	 	
* (ko’paytirish);	 	
/ (bo’lish).	 	
Hamda taqqoslash amallari:	 	
== (teng);	 	
!= (teng emas);	 	
< (kichik);	 	
> (katta);	 	
<= (kichik yoki teng);	 	
>= (katta yoki teng).	 	
Agar  operandlar  qo’yilgan  shartni  qanoatlantirsa  ,  u  holda  taqqoslash  amallari 	
natijada 1	 qiymatni beradi,  aks  holda  esa 0 qiymatni beradi.Butunga bo’lish  amali butun 	
natijani  beradi:  7/2  =  3.  Butun  kattaliklar  ustida  % 	- qoldiqni  hisoblash  amali  bajariladi: 	
7%2 = 1.O’zlashtirishda  va  arifmetik  amallarda  C++  ularni  guruhlash  uchun  asos	iy 	
turlar o’rtasida barcha ma’noli almashtirishlarni bajaradi:	 	
double d = 1;	 	
int i = 1;	 	
d = d + i;	 	
i = d + i;	 	
Satriy turlar	. C++  da  belgilarning  biron	-bir  ketma	-ketligi  (massivlar)  dan  iborat  	
matn qatorlarini xotirada saqlash uchun maxsus AnsiStrin	g ma’lumotlar turi qo’llaniladi.	 	
«Stroka»  	-  «Satr» turidagi o’zgaruvchilar barcha boshqa o’zgaruvchilar kabi e’lon 	
va  initsializatsiya  qilinadi.Kompilyatorga  navbatdagi  belgilar  ketma	-ketligi  yangi 	
o’zgaruvchining  nomi  emas,    balki    satr    eka    nnligini   	bildirish    uchun    satrlar    bittalik  	
qo’shtirnoq  ichiga olinadi.Misol:	  AnsiString st = ‘matn qatori’;	 	
Satr  turidagi  o’zgaruvchilar  ustida  boshqa  satr  o’zgaruvchilar  bilan  qo’shish  amali  	
bajarilishi    mumkin.   Bu    amal   ikkita   satrni   ularning   kelish  ta	rtibida  birlashtirish deb 	
tushuniladi.Misol:	 	
AnsiString s1 = ‘qatori’;	 	
AnsiString s2 = ‘ matn’;	 	
AnsiString s = s1 + s2; 	 	
Natijada    s      o’zgaruvchi    s1    va    s2    o’zgaruvchilardan    tashkil    topgan    ‘stroka 	
teksta’  degan qiymatni  qabul qiladi.Qo’shimcha  turla	rBorland  C++   da   butun   qiymatli  	
o’zgaruvchilarning    turlarini    qo’shimcha  ajratish    imkoni    mavjud.    Bu    holda  
o’zgaruvchilarning    barcha    tur    nomlari  quyidagicha    yoziladi   	-  int    X,    bu    erda    X  	
o’zgaruvchiining    bitlardagi    maydon  o’lchami.  X  qu	yidagi  qiymatlardan  birini  qabul 	
qilishi  mumkin:  8,  16,  32  va  64.  Bu    turdagi    o’zgaruvchilardan    foydalanish    standart  
turda  aniqlangan o’zgaruvchilardan foydalanishdan farq qilmaydi.	 	
Quyidagi jadvalda bunday turlar bilan ishlash yaqqol ko’rsatilgan.	 	
Tur nomi misol  O’lcham 	 	
int8	 c = 128;  8 bit	 	
int16 s = 32767;  16 bit	 	
int32 i = 123456789;  32 bit	 	
int64 big = 12345654321;  64 bit	 	
Turlarni  o’zgartirish  protseduralari	. 	Standart  turlarni  o’zgartirishC++  ning 	
ma’lumotlarning  turlari  ustida  qattiq  nazorati	 	tufayli  imkoni  boricha  qiymatlarni 	
saqlovchi,  turlarni  o’zgartirish  amallari  kiritilgan.Boshqa    o’zgaruvchidan    ma’lum    bir  
tur    qiymatlarini    olish    uchun    quyidagi  konstruksiya  ishlatiladi:  (yangi 
tur)o’zgaruvchi.Misol:	 	
short S = 100;	 	
int I = (int)S;	 	
Bu  misol  ortiqcha  buyruqlarga  ega.  C++  da  ko’pgina  tur  o’zgaruvchilarining  to’g’ridan	-	
to’g’ri  o’zlashtirilishi  nazarda  tutilgan,  ammo  ba’zi  hollarda  bu buyruqlar  majburiy  
hisoblanadi  (masalan,  o’zgaruvchining  qiymatini  biror funksiyaga uzatishd	a).	  Sonli 	qiymatlarni  satrga  almashtirish. 	C++  turlarning  to’g’ridan	-to’g’ri  almashtirishda 	
o’zgaruvchini uning o’nlik  ko’rinishidan   belgilar   qatori   ko’rinishiga    yo’l   qo’ymaydi,  
chunonchi,    ular  shakllarning  ko’gina  komponentalarida    ishlatiladi.  To’	g’ridan	-to’g’ri  	
almashtirish faqatgina  asosiy  va  qo’shimcha  turlar  uchun  amalga  oshiriladi.  Massiv 
hisoblanadigan    satr    kattaliklar    hosilaviy    tur    bo’lganligi    sababli    bunday 
almashtirishga  yo’l  qo’yilmaydi.Bunday    almashtirishlar    uchun    quyi	dagi    standart  	
almashtirish    funksiyalari  ishlatiladi:    IntToStr,    StrToInt,    FloatToStr    va    boshqalar.  
Ko’pchilik    ma’lumotlar  turlari  uchun  shu  kabi  satrga  va  teskari  o’tkazish  funksiyalari 
mavjud.Misol:	 	
char S[10];  // belgilar massivi	 	
int I = 100;  	// butun qiymatli o’zgaruvchi	 	
S = IntToStr(I);  // o’tkazish	 	
Shartli buyruq	. Dasturda  tarmoqlanishni  amalga  oshirish,  ya’ni  ba’zi  faktorlarga  	
bog’liq  holda  turli  amallar  bajarilishi  uchun  if  buyrug’i  ishlatiladi.Buyruq  quyidagi 
formatga ega: 	 	
if (if	oda){ 1 	- operator;} [else { 2 	- operator;}] 	 	
if-buyrug’ining    bajarilishi    ifodaning    qiymatini    hisoblashdan    boshlanadi.  So’ngra  ish 	
quyidagi sxema asosida amalga oshiriladi: 	 	
agar ifoda rost bo’lsa (ya’ni 0 dan farqli), u holda 1 	- operator bajariladi.	 	
agar ifoda yolg’on bo’lsa (ya’ni 0 ga teng), u holda 2 	- operator bajariladi. 	 	
agar    ifoda    yolg’on    va    2   	-  	operator    yo’q    bo’lsa    (kvadrat    qavsga    zarur 	
bo’lmagan konstruktsiya kiritiladi), u holda if dan keyingi buyruq bajariladi. Misol: 	 	
if (i < j	)  	
{ 
i++;	 	
} 
else	 	
{ 
j = i	-3;	 	
i++; 	  } 	
Bu    misol    1   	-  operatorning    o’rnida    ham,    2   	-  operatorning    o’rnida    ham  murakkab  	
konstruktsiya    qatnashishi    mumkinligini    bildiradi.    Ichma	-ich      if  buyrug’ini  ishlatish 	
imkoniyati ham  mavjud. if buyrug’i boshqa	 if buyrug’ining if yoki else konstruktsiyalari 	
ichida qatnashishi ham mumkin.	 	
 2.	Bеlgi  va  satrlar	: 	Standart  C++  tili  ikki  xildagi  b	еlgilar  majmuasini  qo’llab 	
quvvatlaydi.  Birinchi  toifaga,  an'anaviy,  «tor»  b	еlgilar  d	еb  nomlanuvchi  8	-bitli  b	еlgilar 	
majmuasi  kiradi,  ikkinchisiga  16	-bitli  «k	еng»  b	еlgilar  kiradi.  Til  kutubxonasida  har  bir 	
guruh b	еlgilari uchun maxsus funksiyalar to’plami aniqlangan.	 	
C++  tilida  satr  uchun  maxsus  tur  aniqlanmagan.  Satr  char  turidagi  b	еlgilar  massivi 	
sifatida  qaraladi  va  b	u  b	еlgilar  k	еtma	-kеtligi  satr  t	еrminatori  d	еb  nomlanuvchi  0  kodli 	
bеlgi  bilan  tugaydi  (‘	\0’).  Odatda,  nol	-tеrminator  bilan  tugaydigan  satrlarni  AS	СIIZ	-	
satlar  d	еyiladi.	 	
Quyidagi jadvalda 	С++ tilida b	еlgi sifatida ishlatilishi mumkin bo’lgan o’zgarmaslar 	
to	’plami k	еltirilgan.	 	
С++ tilidagi	 bеlgi o’zgarmaslar	 	
Bеlgilar sinflari	 	Bеlgi o’zgarmaslar	 	
Katta harflar	 	'А' ...'	Z', 'А'...'Я'	=	
Kichik qarflar	=	Da' ...'	z', '	a'...'я'	=	
Raqamlar	=	'0' ...'9'	=	
Bo’sh joy	=	=gorizontal  tabulyatsiya  (ASCII  kodi  9),satrni  o’tkazish 
(ASCII  kodi    10),  vеrtikal  tabulyatsiya  (ASCII  kodi 
11),  formani  o’tkazish  (ASCII  kodi  12)  karеtkani 
qaytarish (ASCII kodi 13F	=	
Punktuasiya bеlgilari	=	
(ajratuvchilarF	=	
! ” # $ & ‘ ( ) * + 	-=, . / 	:;Y== > ? 	@ [ 	y=] ^ _ { | } ~	=	
Boshqaruv bеlgilari	=	ASCII kodi 0…1Fh oralig’ida va 7Fh bo’lgan bеlgilar	=	
Probеl	=	ASCII kodi 32 bo’lgan bеlgi	=	
O’n oltilik raqamlar 	=	‘0’…’9’,’A’…’F’,’a’…’f’	=	
=  	
Satr  massivi  e'lon  qilinishida,  satr  oxiriga  tеrminator  qo’yilishi  va 	natijada  satrga 	
qo’shimcha bitta bayt bo’lishini inobatga olinishi kеrak:	 	
сhаr  satr[10] ;	 	
Ushbu e'londa satr satri uchun jami 10 bayt ajratiladi 	- 9 satr hosil qiluvchi bеlgilar uchun 	
va 1 bayt tеrminator uchun.	 	
Satr  o’zgaruvchilar  e'lon  qilinishida  boshl	ang’ich  qiymatlarni  qabul  qilishi  mumkin.  Bu 	
holda  kompilyator  avtomatik  ravishda  satr  uzunligini  hisoblaydi  va  satr  oxiri	ga 	
tеrminatorni qo’shib qo’yadi	 	
Satrqiymatinio	’qishdaoqimlio	’qishop	еratori	 	">>" 	o’rnigagetline	() 	funk	-	
siyasiniishlatganma	'qulhisoblana	di	, 	chunkioqimlio	’qishdaprob	еllarinkorqilinadi	 	
(garchiularsatrb	еlgisihisoblansaham	) 	o’qilayotganb	еlgilark	еtma	-kеtligisatrdan	 	«oshib	» 	
kеtgandahamb	еlgilarnikiritishdavometishimumkin	. 	
Natijadasatro	’zigaajratilgano	’lchamdanortiqb	еlgilarni	 	«qabul	» 	qiladi	. 	Shusababli	, 	
getline	() 	funksiyasiikkitaparam	еtrgaegabo	’lib	, 	
birinchiparam	еtro	’qishamalgaoshirilayotgansatrgako	’rsatkich	, 	
ikkinchiparam	еtrdaesao	’qilishik	еrakbo	’lganb	еlgilarsoniko	’rsatiladi	. 	
Programmadaishlatilgansatrsatri	 	5 	tab	еlginiqabulqilishimumkin	, 	
ortiq	chalaritashlabyuboriladi	. 	getline	() 	
funksiyasigamurojaatdaikkinchiparam	еtrqiymatio	’qilayotgansatruzunligidankattabo	’lmas	
ligik	еrak	. 	
Satr  bilan    ishlaydigan    funksiyalarning    aksariyati    «string.h»  kutubxonasida 	
jamlangan. Nisbatan ko’p ishlatiladigan funksi	yalarning tavsifini k	еltiramiz.	 	
Satr  uzunligini  aniqlash  funksiyalari:	Satrlar    bilan  ishlashda,    aksariyat  hollarda  satr 	
uzunligini  bilish  zarur    bo’ladi.  Buning  uchun  «string.h»  kutubxonasida  strlen() 
funksiyasi aniqlangan bo’lib, uning sintaksisi 	quyidagicha bo’ladi:	 	
 
size_t strlen(const char* string )	 	
Bu funksiya uzunligi hisoblanishi k	еrak bo’lgan satr boshiga ko’rsatkich bo’l	-gan yagona 	
param	еtrga  ega  va  u  natija  sifatida  ishorasiz  butun  sonni  qaytaradi.  strlen()  funksiyasi 	
satrning  r	еal  uzunlig	idan  bitta  kam    qiymat  qaytaradi,      ya'ni      nol	-tеrmina	tor      o’rni   	
hisobga olinmaydi.	  Xuddi      shu      maqsadda    sizeof()  funksiyasidan  ham  foydalanish  mumkin  va  u  strlen() 
funksiyasidan farqli ravishda satrning r	еal uzunligini qaytaradi. 	 	
Odatda  sizeof()  f	unksiyasidan  getline()  funksiyasining  ikkinchi  argumеnti  si	-fati 	
ishlatiladi va satr uzunligini yaqqol	 ko’rsatmaslik imkonini bеradi:	 	
 	Satrlarni  nusxalash	: Satr    qiymatini    biridan    ikkinchisiga    nusxalash    mumkin. 	
Bu maqsadda bir qator standart 	funksiyalar aniqlangan bo’lib, ularni ayrimlarining tavsif	-	
larini kеltiramiz.	 	
strcpy() funksiyasi prototipi	 	
char* strcpy	(char* str1, const char* str2);	 	
ko’rinishga  ega  va  bu  funksiya  str2  satrdagi  b	еlgilarni  str1  satrga  baytma	-bayt 	
nusxalaydi.  Nusxalash  st	r2  ko’rsatib  turgan  satrdagi  nol	-tеrminal  uchraguncha  davom 	
etadi. Shu sababli, str2 satr uzunligi str1 satr uzunligidan katta emas	-ligiga ishonch hosil 	
qilish  k	еrak,  aks  hol  b	еrilgan  sohasida  (s	еgm	еntda)  str1  satrdan  k	еyin  joylashgan 	
bеrilganlar «ustita» 	str2 satrning «ortib qolgan» qismi yozilishi mumkin.	 	
Navbatdagi programma qismi “Satrni nusxalash!” satrini Str satrga nusxalaydi:	 	
char Str[20];	 	
strcpy(Str, “Satrni nusxalash!”);	 	
Zarur bo’lganda satrning qaysidir joyidan boshlab, oxirigacha nusxalash mumkin. 	 	
strncpy() funksiyasining strcpy() funksiyasidan farqli joyi shundaki, unda bir satrdan 	
ikkinchisiga  nusxalanadigan  b	еlgilar  soni  ko’rsatiladi.  Uning  sintaksisi  quyidagi 	
ko’rin	ishga ega:	 	
char* strncpy(char* str1, const char* str2, size_t num)	 	
Agar  str1  satr  uzunligi  str2  satr  uzunligidan  kichik  bo’lsa,  ortiqcha  b	еlgilar  «k	еsib» 	
tashlanadi.	 	
strdup()  funksiyasiga  yagona  param	еtr  sifatida  satr	-manbaga  ko’rsatkich  uzatiladi. 	
Funksiy	a,  satrga  mos  xotiradan  joy  ajratadi,  unga  satrni  nusxalaydi  va  yuzaga  k	еlgan 	
satr	-nusxa adr	еsini javob sifatida qaytaradi, strdup() funksiya sintaksisi:	 	
char* strdup(const char* sourse)	 	
Quyidagi programma bo’lagida satr1 satrining nusxasi xotiraning satr2	 	
ko’rsatgan joyida paydo bo’ladi:	   	
char* satr1=”Satr nusxasini olish.”; char* satr2;	 	
satr2=strdup(satr1);	 	
 
 	Satrlarni  ulash	:Satrlarni  ulash    (konkat	еnatsiya)  amali  yangi  satrlarni  hosil 	
qilishda  k	еng  ko’llaniladi.  Bu  maqsadda  «string.h»  kutubxonasida 	strcat()  va  strncat() 	
funksiyalari aniqlangan.	 	
strcat() funksiyasi sintaksisi quyidagi ko’rinishga ega:  	 	
char* strcat(char* str1, const char* str2)	 	
Funksiya  ishlashi  natijasida  str2  satr,  funksiya  qaytaruvchi  satr  str1  satr  oxiriga  ulanadi. 
Funksiyani  cha	qirishdan  oldin  str1  satr  uzunligi,  unga  str2  satri  ulanishi  uchun  y	еtarli 	
bo’lishi hisobga olingan bo’lishi k	еrak.	 	
Quyida k	еltirilgan amallar k	еtma	-kеtligining bajarilishi natijasida satr satriga qo’shimcha 	
satr ulanishi ko’rsatilgan:	 	
 	
char satr[80];	 	
strc	py(satr,”Bu satrga”);	 	
strcat(satr,”satr osti ulandi.”);	 	
 
Amallar  k	еtma	-kеtligini  bajarilishi   natijasida ko’rsatayotgan joyda “Bu satrga satr 	
osti ulandi.” satri paydo bo’ladi.	 	
strncat()  funksiyasi  strcat()  funksiyadan  farqli  ravishda  str1  satrga  str2  s	atr	-ning 	
ko’rsatilgan uzunlikdagi satr qismini ulaydi. Ulanadigan satr qismi uzunligi funksiyaning 
uchinchi param	еtri sifatida b	еriladi.	 	
Garchi  bu  masala  ostilarining  y	еchimlari  C++  tilning  standart  kutubxonalarida 	
funksiyalar  ko’rinishida  mavjud  bo’lsa 	ham,  ular  kodini  qayta  yozish  foydalanuv	-chiga 	
bu amallarning ichki mohiyatini tushunishga imkon b	еradi.	 	
II.C++  tilida 	bir  sanoq  sestemadan  boshqa  sanoq  sestemaga    o’tuvchi  dastur	 	
dasturiy ta’minoti;	  1.Sanoq sistemalarni boshqasiga o’tkazishning matematik 	tahlili.	 	
EHM 	- bu  elektron  raqamli  qurilmadir.  Elektron  qurilma  deyilishiga  sabab  har  qanday 	
ma’lumotlar  EHM  da  elektr  signallari  orqali  qayta  ishlanadi.  Raqamli  deyilishiga  sabab 
EHM  da  har  qanday  ma’lumot  sonlar  yordamida  tasvirlanadi.	  	
Sonlarni yozish u	suliga sanoq sistemasi deb ataladi. Sonlarni yozish uchun har bir sanoq 	
sistemasida  o‘ziga  xos  turli  belgilar  to‘plamidan  foydalaniladi.  Foydalanilgan 
to‘plamdagi belgilar ularning soni, sanoq sistemasini xarakterlovchi asosiy kattaliklardir. 
Sanoq  sistema	sida  foydalaniladigan  belgilar  soni  sanoq  sistemasining  asosini  tashkil 	
etadi.  Berilgan  sanoq  sistemasida  sonlarni  yozishdagi  foydalanilgan  belgilar  soniga 
qarab, o‘nlik, ikkilik, sakkizlik, o‘n oltilik va boshqa sanoq sistemalarni kiritish mumkin. 
Shu  bil	an  birga  sanoq  sistemalarini	 pozision	 va	 nopozision	 turlarga  ajratish  mumkin. 	
Pozitsion  sanoq  sistemasida  berilgan  sonning  qiymati  sonni  tasvirlovchi  raqamlarning 
egallagan o‘rniga bog‘liq bo‘ladi. Misol sifatida, 0,1,2,3,. . . ,9 arab raqamlaridan tashkil	 	
topgan  o‘nlik  sanoq  sistemani  qarash  mumkin.  Nopozitsion  sanoq  sistemalarida, 
belgining  qiymati  uning  egallagan  o‘rniga  bog‘liq  emas.  Misol  sifatida  rim  raqamlari 
sanoq  sistemasini  keltirish  mumkin.  Masalan,  XX  sonida  X  raqami,  qayerda 
joylashganiga  qaram	asdan  o‘nlik  sanoq  sistemasidagi  10  qiymatini  anglatadi.	 	
Quyidagi  jadvalda  o‘nlik  sanoq  sistemasida  berilgan  1  dan  16  gacha  sonlarning  ikkilik, 
sakkizlik va o‘n oltilik sanoq sistemalaridagi ko‘rinishi keltirilgan.	 	
 	
SANOQ SISTEMALARI	 	
2 	3 	4 	5 	6 	8 	10	 	16	 	
0 	0 	0 	0 	0 	0 	0 	0 	
1 	1 	1 	1 	1 	1 	1 	1  10	 	2 	2 	2 	2 	2 	2 	2 	
11	 	10	 	3 	3 	3 	3 	3 	3 	
100	 	11	 	10	 	4 	4 	4 	4 	4 	
101	 	12	 	11	 	10	 	5 	5 	5 	5 	
110	 	20	 	12	 	11	 	10	 	6 	6 	6 	
111	 	21	 	13	 	12	 	11	 	7 	7 	7 	
1000	 	22	 	20	 	13	 	12	 	10	 	8 	8 	
1001	 	100	 	21	 	14	 	13	 	11	 	9 	9 	
1010	 	101	 	22	 	20	 	14	 	12	 	10	 	? 	
1011	 	102	 	23	 	21	 	15	 	13	 	11	 	? 	
1100	 	110	 	30	 	22	 	20	 	14	 	12	 	? 	
1101	 	111	 	31	 	23	 	21	 	15	 	13	 	? 	
1110	 	112	 	32	 	24	 	22	 	16	 	14	 	? 	
1111	 	120	 	33	 	30	 	23	 	17	 	15	 	F 	
10000	 	121	 	100	 	31	 	24	 	20	 	16	 	10	 	
 
Bu  jadval  bo‘yicha  bir  sanoq sistamasidan  ikkinchisiga  o‘tish masalasini ko‘rib o‘taylik. 
Masalan: 10 lik sanoq sistemasidagi 13 soniga 8 lik sanoq sistemasida 15 soni mos keladi  va u 13  ni 8 ga bo‘linganda hosil  bo‘lgan  butun  son 1 va qoldiq 5 lardan  tash	kil  topgan. 	
Xuddi  shuningdek  13  ni  6  ga  bo‘lganda  hosil  bo‘luvchi  butun  son  2  va  qoldiq  1  lar  21 
sonini  hosil  qiladi.  Bu  son  13  sonining  6  lik  sanoq  sistemasidagi  qiymatidir.	  	
Odatda  biror  X  sonining  qaysi  sanoq  sistemasiga  tegishliligini  ko‘rsatish  uchun 	uning 	
pastida  indeks  sifatida  zarur  sanoq  sistemasining  asosi  ko‘rsatiladi.	 	
Masalan, X6 	– X sonining 6 lik sanoq sitemasiga tegishli ekanligini ko‘rsatadi.	 	
X	10=13	 sonining X2	-ikkilik sanoq sistemasidagi ko‘rinishini topaylik. Yuqoridagidek, 13 	
ni  ketma	-ket	 2  ga  bo‘lamiz  va  bo‘lishni  to  butun  qismida  nol  hosil  bo‘lguncha  davom 	
ettiramiz.	 	
 	
O‘ngdan  chapga  tartibida  yozilgan  qoldiqlar,  ya’ni  1101  soni  X	10=13	10 sonining  ikkilik 	
sanoq  sistemasidagi  ko‘rinishi  bo‘ladi.	  	
Endi  8  lik  sanoq  sistemasidan  10  lik  sanoq 	sistemasiga  bo‘lish  yo‘li  bilan  o‘tishga 	
doir	misol	lar  ko‘raylik.  Masalan,  jadval  bo‘yicha  15	8 ga  13	10 mos  keladi.  Endi  uni  topib 	
kuraylik,  buning  uchun  15	8 ni  10  lik  sanoq  sistemasining  asosi	–10  ning  8  lik  sanoq 	
sistemasidagi ko‘rinish 	– 12 ga bo‘lish kera	k bo‘ladi. 158 ni 128 ga bo‘lsa butun qismida 	
1  va  qoldiqda  3,  ya’ni  13	10 – hosil  bo‘ladi.  Bunga  jadval  orqali  ishonch  hosil  qilish  ham 	
mumkin.	  	
Ikkinchi	 misol	:  175	8 sonini  10  lik  sanoq  sistemasidagi  ko‘rinishini  topish  talab  qilingan 	
bo‘lsin. Xuddi yuqori	dagidek 175	8 ni 12	8 ga ketma	-ket bo‘lamiz. Eslatib o‘tamiz, bo‘lish 	
amali 8 sonlik sanoq sistemasida olib boriladi. 	(Jadvalga qaralsin)	   	
R  sanoq  sistemasida  berilgan  sonni  Q  sanoq  sistemasiga  o‘tkazish  uchun,  R  sanoq 
sistemasidagi  X  soni  Q  sanoq 	sistemasining  asosiga,  ya’ni  Q  ga  ketma	-ket,  to  butun 	
qismida 0 hosil bo‘lguncha davom ettirish kerak. Qoldiqlar o‘ngdan chapga karab ketma	-	
ket  yozilsa,  R  sanoq  sistemasida  berilgan  Xr  sonining  Q  sanoq  sistemasidagi  Xq 
ko‘rinishi  hosil  bo‘ladi.  Bo‘lish  ama	li  berilgan  R  sanoq  sistemasida  amalga  oshiriladi.	 	
Ba’zi  bir sanoq sistemalaridan  ikkinchisiga  qulayroq,  osonroq holda o‘tish imkoniyatlari 
mavjud. 	Xususiy  holda,  2  ga  karrali  sonlarning  biridan  2  ikkinchisiga  o‘tish  qoidasini 	
ko‘rib o‘tamiz.	 	
Masalan, 8 li	k sanoq sistemasida berilgan X	8=5361 sonidan X	2 ga bo‘lish uchun, X	8ning 	
har bir raqamini 2 likdagi ko‘rinishi	-triadalar (2	3=8) bilan almashtirib chiqamiz:	 	
 	
D8A2	16ni  2  lik  sanoq  sistemasiga  o‘tkazish  uchun  uning  har  bir  raqamini  2  lik  sanoq 	
sistemasidagi 	to‘rtliklar	-tetradalar bilan	 	
almashtiramiz:	 	
 	
Ikkilik  sanoq  sistemasida  berilgan  sondan  8  lik  sanoq  sistemasiga  o‘tish  uchun,  uning 
o‘ng  tomonidan  boshlab  har  bir  uchliklarni  (triadalarni)  8  likdagi  mos  raqamlar  bilan 
almashtiramiz. 	Masalan	   	
Yuqoridagi  X	2 sonini  16  lik  sanoq  sistemasiga  o‘tkazish  uchun  X	2 ni  o‘ng  tomondan 	
boshlab to‘rtliklar (tetradalar) bilan	 	
almashtiramiz.	 	
 	
Endi, ixtiyoriy sanoq sistemasidan o‘nlik sanoq sistemasiga	  o‘tishning xususiy qoidasini 	
ko‘rib  o‘tamiz.	 	
Sakkizlik sanoq sistemasi	da berilgan sonning 175	8o‘nlik sanoq sistemasidagi ko‘rinishini 	
X	10 topish talab etilsin. Buning uchun	  	
berilgan sonning 8 lik sanoq sistemasidagi yoyilmasini yozib olamiz.	 	
 	
va 8 lik sanoq sistemasida 10	8 =8 ekanligini hisobga olib topamiz.	 	
 	
Xuddi yuqori	dagilardek, quyidagi	 misol	larni ham qurish mumkin:	 	
 	
Shu  paytgacha  biz  butun  sonlarni  bir  sanoq  sistemasidan  boshqasiga  o‘tkazish  bilan 
shug‘ullandik.  Kasr  sonlarni  bir  sanoq  sistemasidan  ikkinchisiga  o‘tkazish  uchun,  uning 
butun  qismi  yuqorida  keltirilgan  qoida,  ya’ni  bo‘lish  asosida  amalga  oshiriladi.  Kasr	 	
qismini  R  sanoq  sistemasidan  Q  sanoq  sistemasiga  o‘tkazish  uchun  kasr  sonni  Q  ga  ketma	-ket  ko‘paytirishda  hosil  bo‘lgan  sonning  butun  kismlari  ketma	-ketligi,  berilgan 	
son  kasr  qismining  Q  sanoq  sistemasidagi  ko‘rinishini  hosil  qiladi.  Misol  sifatida  o‘nli	k 	
sanoq  sistemasida  berilgan  X	10=25,205  sonini  8  lik  sanoq  sistemasiga  o‘tkazaylik. 	
Berilgan  sonning  butun  qismi	-25	10 sakkizlik  sanoq  sistemasida  41	8 ga  teng.  Endi  kasr 	
qismi  0,205  ni  8  lik  sanoq  sistemasiga  o‘tkazamiz.  Buning  uchun  uni  ketma	-ket  8  ga 	
ko‘p	aytiramiz va hosil bo‘lgan butun qismini chiziqning chap tomoniga o‘tkazamiz.	 	
 	
0,205  ni  8  ga  ko‘paytirganimizda  1,640  hosil  bo‘ladi  va  uning  butun  qismini  chiziqning 
chap  tomoniga  o‘tkazamiz.  Keyin  0,640  yana  8  ga  ko‘paytiramiz  va  hosil  bo‘lgan  5,040 
soni	ning  butun  qismini  chiziqning  chap  tomoniga  o‘tkazamiz.  Ko‘paytirishni  shu  tarzda 	
davom  ettiramiz  natijada  0,15028  sonini  hosil  qilamiz  va  butun  qismini  41	8 ni  hisobga 	
olib, berilgan X	10=25,205 sonini 8 lik sanoq sistemasidagi ko‘rinishini topamiz:	 	
2. Borl	and C++ da bir sanoq sestemadan boshqasiga o’tkazuvchi dastur.	 	
Dasturni tuzish jarayoni.	 	
Dastlab  C++  Builder  dasturlash  tilini  ishga  tayyorlab  olamiz. 	Bu  dasturni    uchun 	
quyidagi  ketma	- ketlikda  C++  Builder  6  dasturiga  kiramiz: 	Пуск	 ->Всепрограмми	 -> 	
Borland  C++  Builder  6 	->  C++  Builder  6  .	dastur  ishga  tushirgach  quydagi  oyna  hosil 	
bo’ladi	   	
Form oynasi hosil bo’lgach unga mos ravishda 2 ta edit, 2	 label, 5 ta radiobutton,	 	
 5ta  button  kampanentalarini  form  oynsiga  tashlaymiz.  Keyin  mos  ravishda  bu 	
kampanentalarni xossalarni dastur ishlashiga to’g’irlaymiz quydagicha:	 	
Edit1 va edit2 larning text xossasini bo’	sh holatga aylantiramiz.	 	
Label1 va label2 larning caption xossasini 	bo’sh holatga aylantiramiz.	. 	
Form1  ni  tanlab  uning  xam  vaption  xossasini  o’zgartirish  mumkin  va  color 	
xossasidan o’zimizga yoqqan rang ni tanlaymiz.	 	
Radiobuttonlarning  caption  xossasiga  mos  ravishda  ikkilik,  to’rtlik,  sakkizlik, 	
o’nlik,  o’noltilik  deb  yozi	b  chiqamiz	va  font  xossasidan  o’zimiz  xoxlagan  rangni,  shrift 	
o’lchamini  tanlaymiz.  Checked  xossasini  ham  ture  (rost)  qilamiz  bunday  qilishga  sabab 
dastur ishlagan vaqtda radiobuttonlarni tanlash mumkin bo’ladi.	 	
Buttonlarni  xamcaption  xossasiga  mos  ravishda	 ikkilikga,  to’rtlikga,  sakkizlikga, 	
o’nlikga, o’noltilikga deb yozib chiqamiz.	 	
Form  oynasiga  kerakli  kampanentalarni  tashlab  ularning  xossalarini 	
o’zgartirgandan so’ng form oynasi quydagi ko’rinishni egallaydi.	   	
Formani  shakillantirib  bo’lgach  “ikkilik” 	yani  button1	 	ning  kod  oynasiga 	
quydagilarni kiritamiz .	 	
void __fastcall TForm1::Button1Click(TObject *Sender)	 	
{ Label1	->Caption ="ikkilikka" ;	 	
String u;	 	
 u=Edit1	->Text ;	 	
if (RadioButton1	->Checked ==true) Edit2	->Text =u;	 	
 String a,s,c ;	 	
int i,n,k,z,q,m,j;	 	
if (RadioButton2	->Checked==true)	 	
{ u=Edit1	->Text ;	 	
n=u.Length();	 	
m=0;	 	
for (i=1; i<=n; i++ )	 	
{ 
q=StrToInt(u[i]);	 	
z=1;	 	
for (k=1;  k<=n	-i; k++)	 	
z=z*4;	 	
m=m+q*z;    }	 	
             	s="";  k=0;	 	
while (m!=0)        {	 	
j= m % 2;	 	
c= IntToStr(j);	 	
k=k+1;	 	
s+=c;	 	
m=m/2;  	                         	}  Edit2	->Text ="";	 	
for (i=k; i>=1; i	--) 	
Edit2	->Text=Edit2	->Text+s[i];;	 	
} 
if (RadioButton3	->Checked==true)	 	
{ u=Edit1	->Text ;	 	
n=u.Length();	 	
m=0;	 	
for (i=1; i<=n; i++ )	 	
{ 
q=StrToInt(u[i]);	 	
z=1;	 	
for (k=1;  k<=n	-i; k++)	 	
z=z*8;	 	
m=m+q*z;	 	
} 
 
s="";  k=0;	 	
while (m!=0)	 	
{ 
j= m % 2;	 	
c= IntToStr(j);	 	
k=k+1;	 	
s+=c;	 	
m=m/2;	 	
 } 
Edit2	->Text ="";	 	
for (i=k; i>=1; i	--) 	
Edit2	->Text=Edit2	->Text+s[i];;	 	
} 
if (RadioButton4	->Checked==true)	 	
{ u=Edit1	->Text ;	 	
n=u.Length();	 	
m=0;	 	
for (i=1; i<=n; i++ )	 	
{ 
q=StrToInt(u[i]);	 	
z=1;	  for (k=1;  k<=n	-i; k++)	 	
z=z*10;	 	
m=m+q*z;}	 	
s="";  k=0;	 	
while (m!=0             	{ 	
j= m % 2;	 	
c= IntToStr(j);	 	
k=k+1;	 	
s+=c;	 	
m=m/2; }	 	
Edit2	->Text ="";	 	
for (i=k; i>=1; i	--) 	
Edit2	->Text=Edit2	->Text+s[i];;}	 	
if (RadioButton5	->Checked==true)	 	
{ u=Edit1	->Text ;	 	
n=u.Length();	 	
m=0;	 	
for (i=1; i<=n; i++ )	 	
{if (u[i]==char(65))  q=10; else	 	
if (u[i]==char(66)) q=11; else	 	
if (u[i]==char(67))  q=12 ; else	 	
if (u[i]==char(68))  q=13; else	 	
if (u[i]==char(69))  q=14; else	 	
if (u[i]==char(70))  q=15; else	 	
q=StrToInt(u[i]);	 	
z=1;	 	
for (k=1;  k<=n	-i; k++)	 	
z=z*16;	 	
m=m+q*z;}	 	
s="";  k=0;	 	
while (m!=0){	 	
j= m % 2;	 	
c= IntToStr(j);	 	
k=k+1;	 	
s+=c;	 	
m=m/2;	 	
 } 
Edit2	->Text ="";	  for (i=k; i>=1; i	--) 	
Edit2	->Text=Edit2	->Text+s[i];;	 	
}} 
“To’rtlik” yani button2 ning kod oynasiga qu	ydagilarni kiritamiz .	 	
void __fastcall TForm1::Button2Click(TObject *Sender)	 	
{ Label1	->Caption ="to'rtlikka" ;	 	
String u;	 	
 u=Edit1	->Text ;	 	
if (RadioButton2	->Checked ==true) Edit2	->Text =u;	 	
 String a,s,c ;	 	
int i,n,k,z,q,m,j;	 	
if (RadioButton1	->Checked==true)	 	
{ u=Edit1	->Text ;	 	
n=u.Length();	 	
m=0;	 	
for (i=1; i<=n; i++ ){	 	
q=StrToInt(u[i]);	 	
z=1;	 	
for (k=1;  k<=n	-i; k++)	 	
z=z*2;	 	
m=m+q*z;}	 	
s="";  k=0;	 	
while (m!=0){	 	
j= m % 4;	 	
c= IntToStr(j);	 	
k=k+1;	 	
s+=c;	 	
m=m/4;}	 	
Edit2	->Text ="";	 	
for (i=k; i>=1; i	--) 	
Edit2	->Text=Edit2	->Text+s[i];;}	 	
if (RadioButton3	->Checked==true)	 	
{ u=Edit1	->Text ;	 	
n=u.Length();	 	
m=0;	 	
for (i=1; i<=n; i++ ){	 	
q=StrToInt(u[i]);	 	
z=1;	  for (k=1;  k<=n	-i; k++)	 	
z=z*8;	 	
m=m+q*z;}	 	
s="";  k=0;	 	
while (m!=0){	 	
j= m % 4;	 	
c= IntToStr(j);	 	
k=k+1;	 	
s+=c;	 	
m=m/4;}	 	
Edit2	->Text 	="";	 	
for (i=k; i>=1; i	--) 	
Edit2	->Text=Edit2	->Text+s[i];;}	 	
if (RadioButton4	->Checked==true)	 	
{ u=Edit1	->Text ;	 	
n=u.Length();	 	
m=0;	 	
for (i=1; i<=n; i++ ){	 	
q=StrToInt(u[i]);	 	
z=1;	 	
for (k=1;  k<=n	-i; k++)	 	
z=z*10;	 	
m=m+q*z;}	 	
s="";  k=0;	 	
while (m!=0){	 	
j= m % 4;	 	
c= 	IntToStr(j);	 	
k=k+1;	 	
s+=c;	 	
m=m/4;                  	} 	
Edit2	->Text ="";	 	
for (i=k; i>=1; i	--) 	
Edit2	->Text=Edit2	->Text+s[i];;}	 	
if (RadioButton5	->Checked==true)	 	
{ u=Edit1	->Text ;	 	
n=u.Length();	 	
m=0;	 	
for (i=1; i<=n; i++ )	  {if (u[i]==char(65))  q=10; else	 	
if (u[i]==char(66)) q=11; else	 	
if (u[i]==char(67))  q=12 ; else	 	
if (u[i]==char(68))  q=13; else	 	
if (u[i]==char(69))  q=14; else	 	
if (u[i]==char(70))  q=15; else	 	
q=StrToInt(u[i]);	 	
z=1;	 	
for (k=1;  k<=n	-i; k++)	 	
z=z*16;	 	
m=m+q*z;}	 	
s="";  k=0;	 	
while (m!=0){	 	
j= m % 	4; 	
c= IntToStr(j);	 	
k=k+1;	 	
s+=c;	 	
m=m/4;}	 	
Edit2	->Text ="";	 	
for (i=k; i>=1; i	--) 	
Edit2	->Text=Edit2	->Text+s[i];;	 	
} 
 
“Sakkizlik” yani button3 ning kod oynasiga quydagilarni kiritamiz .	 	
void __fastcall TForm1::Button3Click(TObject *Sender)	 	
{  Label1	->Caption 	="sakkizlikka" ;	 	
String u;	 	
 u=Edit1	->Text ;	 	
if (RadioButton3	->Checked ==true) Edit2	->Text =u;	 	
 String a,s,c ;	 	
int i,n,k,z,q,m,j;	 	
if (RadioButton1	->Checked==true)	 	
{ u=Edit1	->Text ;	 	
n=u.Length();	 	
m=0;	 	
for (i=1; i<=n; i++ ){	 	
q=StrToInt(u[i]);	 	
z=1;	  for (k=1;  	k<=n	-i; k++)	 	
z=z*2;	 	
m=m+q*z;                       	} 	
s="";  k=0;	 	
while (m!=0){	 	
j= m % 8;	 	
c= IntToStr(j);	 	
k=k+1;	 	
s+=c;	 	
m=m/8;}	 	
Edit2	->Text ="";	 	
for (i=k; i>=1; i	--) 	
Edit2	->Text	 	
while (m!=0){	 	
j= m % 8;	 	
c= IntToStr(j);	 	
k=k+1;	 	
s+=c;	 	
m=m/8;}	 	
Edit2	->Text ="";	 	
for (i=k; i>=1; i	--) 	
Edit2	->Text=Edit2	->Text+s[i];;}	 	
if (RadioButton4	->Checked==true)	 	
{ u=Edit1	->Text ;	 	
n=u.Length();	 	
m=0;	 	
for (i=1; i<=n; i++ ){	 	
q=StrToInt(u[i]);	 	
z=1;	 	
for (k=1;  k<=n	-i; k++)	 	
z=z*10;	 	
m=m+q*z;}	 	
s="";  k=0;	 	
while (m!=0){	 	
j= m % 8;	 	
c= 	IntToStr(j);	 	
k=k+1;	 	
s+=c;	  m=m/8;	 	
 } 
Edit2	->Text ="";	 	
for (i=k; i>=1; i	--) 	
Edit2	->Text=Edit2	->Text+s[i];;	 	
} 
if (RadioButton5	->Checked==true)	 	
{ u=Edit1	->Text ;	 	
n=u.Length();	 	
m=0;	 	
for (i=1; i<=n; i++ )	 	
{if (u[i]==char(65))  q=10; else	 	
if (u[i]==char(66)) q=11	; else	 	
if (u[i]==char(67))  q=12 ; else	 	
if (u[i]==char(68))  q=13; else	 	
if (u[i]==char(69))  q=14; else	 	
if (u[i]==char(70))  q=15; else	 	
q=StrToInt(u[i]);	 	
z=1;	 	
for (k=1;  k<=n	-i; k++)	 	
z=z*16;	 	
m=m+q*z;}	 	
s="";  k=0;	 	
while (m!=0){	 	
j= m % 8;	 	
c= IntToStr(j);	 	
k=k+1;	 	
s+=c;	 	
m=m/8;}	 	
Edit2	->Text ="";	 	
for (i=k; i>=1; i	--) 	
Edit2	->Text=Edit2	->Text+s[i];;	 	
} 
“O’nlik” yani button1 ning kod oynasiga quydagilarni kiritamiz .	 	
void __fastcall TForm1::Button4Click(TObject *Sender)	 	
{  Label1	->Caption ="o'nlikka" ;	 	
String 	a,s,c,u,jj ;	 	
int i,n,k,z,q,m,j;	  if (RadioButton1	->Checked==true)	 	
{ u=Edit1	->Text ;	 	
n=u.Length();	 	
m=0;	 	
for (i=1; i<=n; i++ ){	 	
q=StrToInt(u[i]);	 	
z=1;	 	
for (k=1;  k<=n	-i; k++)	 	
z=z*2;	 	
m=m+q*z;	 	
Edit2	->Text =IntToStr(m);	 	
}} else if (RadioButton2	->Checked==true)	 	
{ u=Edit1	->Text ;	 	
n=u.Length();	 	
m=0;	 	
for (i=1; i<=n; i++ ){	 	
q=StrToInt(u[i]);	 	
z=1;	 	
for (k=1;  k<=n	-i; k++)	 	
z=z*4;	 	
m=m+q*z;	 	
Edit2	->Text =IntToStr(m);	 	
}}if (RadioButton3	->Checked==true)	 	
{ u=Edit1	->Text ;	 	
n=u.Length();	 	
m=0;	 	
for (i=1; i<=n; i++ ){	 	
q=StrToInt(u[i]);	 	
z=1;	 	
for (k=1;  k<=n	-i; k++)	 	
z=z*8;	 	
m=m+q*z;	 	
Edit2	->Text =IntToStr(m);	 	
}} else if (RadioButton5	->Checked==true)	 	
{ u=Edit1	->Text ;	 	
n=u.Length();	 	
m=0;	 	
for (i=1; i<=n; i++ )	  { if (u[i]==char(65))  q=10; else	 	
if (u[i]==char(66)) q=11; else	 	
if (u[i]==char(67))  q=12 ; else	 	
if (u[i]==char(68))  q=13; else	 	
if (u[i]==char(69))  q=14; else	 	
if (u[i]==char(70))  q=15; else	 	
q=StrToInt(u[i]);	 	
z=1;	 	
for (k=1;  k<=n	-i; k++)	 	
z=z*16;	 	
m=m+q*z;	 	
Edit2	->Text =IntToStr(m);	 	
}} if (RadioButton4	->Checked==true) Edi	t2->Text =Edit1	->Text ;}	 	
void __fastcall TForm1::Button5Click(TObject *Sender)	 	
{  Label1	->Caption ="o'noltilikka" ;	 	
String u;	 	
 u=Edit1	->Text ;	 	
 
“O’noltilik” yani button5 ning kod oynasiga quydagilarni kiritamiz .	 	
if (RadioButton5	->Checked ==true) Edit2	->Text =u;	 	
 String a,s,c ;	 	
int i,n,k,z,q,m,j;	 	
if (RadioButton1	->Checked==true)	 	
{ u=Edit1	->Text ;	 	
n=u.Length();	 	
m=0;	 	
for (i=1; i<=n; i++ )                    	{ 	
q=StrToInt(u[i]);	 	
z=1;	 	
for (k=1;  k<=n	-i; k++)	 	
z=z*2;	 	
m=m+q*z;                             }	 	
s=""; 	 k=0;	 	
while (m!=0)                      	{ 	
j= m % 16;	 	
if (j==10) c="A"; else	 	
if (j==11) c="B"; else	 	
if (j==12) c="C"; else	  if (j==13) c="D"; else	 	
if (j==14) c="E"; else	 	
if (j==15) c="F"; else	 	
c= IntToStr(j);	 	
k=k+1;	 	
s+=c;	 	
m=m/16;                        	} 	
Edit2	->Text ="";	 	
for (i=k; i>=1; i	--) 	
Edit2	->Text=Edit2	->Text+s[i];;	} 	
if (RadioButton2	->Checked==true)	 	
{ u=Edit1	->Text ;	 	
n=u.Length();	 	
m=0;	 	
for (i=1; i<=n; i++ )           	{ 	
q=StrToInt(u[i]);	 	
z=1;	 	
for (k=1;  k<=n	-i; k++)	 	
z=z*4;	 	
m=m+q*z;              }	 	
s=""	;  k=0;	 	
while (m!=0)                    	{ 	
j= m % 16;	 	
if (j==10) c="A"; else	 	
if (j==11) c="B"; else	 	
if (j==12) c="C"; else	 	
if (j==13) c="D"; else	 	
if (j==14) c="E"; else	 	
if (j==15) c="F"; else	 	
c= IntToStr(j);	 	
k=k+1;	 	
s+=c;	 	
m=m/16;                             	 } 	
Edit2	->Text ="";	 	
for (i=k; i>=1; i	--) 	
Edit2	->Text=Edit2	->Text+s[i];;	} 	
if (RadioButton3	->Checked==true)	 	
{ u=Edit1	->Text ;	  n=u.Length();	 	
m=0;	 	
for (i=1; i<=n; i++ )	 	
{ 
q=StrToInt(u[i]);	 	
z=1;	 	
for (k=1;  k<=n	-i; k++)	 	
z=z*8;	 	
m=m+q*z;             }	 	
s="";  k=0;	 	
while (m!=0)                        	{ 	
j= m % 16;	 	
if (j==10) c="A"; else	 	
if (j==11) c="B"; else	 	
if (j==12) c="C"; else	 	
if (j==13) c="D"; else	 	
if (j==14) c="E"; else	 	
if (j==15) c="F"; else	 	
c= IntToStr(j);	 	
k=k+1;	 	
s+=c;	 	
m=m/16;	 	
 } 
Edit2	->Text ="";	 	
for (i=k; i>	=1; i	--) 	
Edit2	->Text=Edit2	->Text+s[i];;	 	
} 
if (RadioButton4	->Checked==true)	 	
{ u=Edit1	->Text ;	 	
n=u.Length();	 	
m=0;	 	
for (i=1; i<=n; i++ )	 	
{ 
q=StrToInt(u[i]);	 	
z=1;	 	
for (k=1;  k<=n	-i; k++)	 	
z=z*10;	 	
m=m+q*z;                         }	  s="";  k=0;	 	
while (m!=0)               	{ 	
j= m % 16;	 	
if (j==10) c="A"; else	 	
if (j==11) c="B"; else	 	
if (j==12) c="C"; else	 	
if (j==13) c="D"; else	 	
if (j==14) c="E"; else	 	
if (j==15) c="F"; else	 	
c= IntToStr(j);	 	
k=k+1;	 	
s+=c;	 	
m=m/16;	 	
 } 
Edit2	->Text ="";	 	
for (i=k; i>=1; i	--) 	
Edit2	->Text=Edit2	->Text+s[i];;	 	
} 
Qaysi  sanoq  sestemada  edit1  ga  raqam  kiritish  va  qaysi  sanoq  sestemani 	
tanlashimizga  qarab  qaysi  raqamlar  kiritilishi  label2  ning  captionda  xossasida  chiqishi 
uchun radiobuttonning click xossasiga quydagilarni kiritamiz	 	
voi	d __fastcall TForm1::RadioButton1Click(TObject *Sender)	 	
{ 
Label2	->Caption ="0 dan 1 gacha raqamlar kiriting";	 	
} 
//--------------------------------------------------------------------------	 	
void __fastcall TForm1::RadioButton2Click(TObject *Sender)	 	
{ 
Label2	->Caption ="0 dan 3 gacha raqamlar kiriting";	 	
} 
//---------------------------------------------------------------------------	 	
void __fastcall TForm1::RadioButton3Click(TObject *Sender)	 	
{ 
Label2	->Caption ="0 dan 7 gacha raqamlar kiriting";	 	
} 
//-------	--------------------------------------------------------------------	 	
void __fastcall TForm1::RadioButton4Click(TObject *Sender)	  { 
Label2	->Caption ="0 dan 9 gacha raqamlar kiriting";	 	
} 
//----------------------------------------------------------------------	-----	 	
void __fastcall TForm1::RadioButton5Click(TObject *Sender)	 	
{ 
Label2	->Caption ="0 dan 9 gacha va A,B,C,D,E,F larni kiriting ";	 	
} 
Barcha kodlarni kod oynasiga kiritgac	h tuzgan dasturimizni ishga tush	iramiz	 	
Dasturni ishga tushurgach dastur  tog’ri 	ishlashini sinab ko’ramiz ikkilikni tanlab 	
ikkilikda son kiritamiz va javobni skkizlikda chiqaramiz	 	
Ushbu dasturi taminot yordamida ikkilik, to’rtlik, sakkizlik, o’nlik, o’noltilik sanoq 
sestemadagi sonlarni boshqasiga o’tkazishga moslashgan.	 	
  Xulosa.	 	
Men	 ushbu  dasturni  ishlab  chiqish  jarayonida  C++  builder  obektlar  bilan  ishlash 	
muhitida  turli  kampanentalar  bilan  ishlashni  o’rgandim.  C++  builder  obektlar  bilan 
ishlash  muhitida  nafaqat  berilgan  masalani  yechish  dasturini  tuzishni  balki  bu  yerda 
xuddi  hisob	lash  qurilmasida  ishlayotgandek  obektlar  bilan  ishladim,  bu  obektga  o’zim 	
xoxlagandek dizayn berib	, obekt yaratdim.	 	
Bu 	dasturni  tuzib  obektlar  yaratishni  va  ular  orqali  shunga  o’xshash  yana  boshqa 	
obektlar  yaratmoqchiman  bu  dasturda  ishlashimga  yana  bir 	sabab  boshqa  obektlarga 	
mo’ljallanmagan dasturlash tillarida faqat masalani matematik dasturi tuzib natija olinadi 
bunda  yani  C++  builderda  esa  boshqa  imkoniyatlar  va  kampanentalar  bila	n  ham  ishlash 	
imkoni o’rgandim	. 	
 
 
 
 
 
 
 
 
 
 
 
 
 
 	
 
 
   Foydalanilganadabiyotlarro	’yhati	 	
1.  	СтрауструпБ	.  	Язык	  программирования	  С++.  	Третье  издание,  М.: 	 	
Бином, 1999.	 	
2.  Шмидский  Я.К.Программирование  на  языке  С++:  Самоучитель. 	 	
Учебное пособие. Диалектика. 361 стр, 2004 г.	 	
3.  Q.Abduraximov C++ 	Dasturlash asoslari 2014	 	
4.  Ашарина Н.А. Основы программирования на языках Си,С++. Учебный 	 	
курс.М.: 2002 г.	 	
5.  Подбельский В.В. Язык С++  М.: Финансы и статистика, 1996.	 	
6.  	www	.tammi	.uz	 	
7.  	www	.ziyonet	.uz	 	
8. 	www.google.uz	 qidiruv sayti

O’ZBEKISTON RESPUBLIKASI OLIY VA O’RTA -MAXSUS TA’LIM VAZIRLIGI SAMARQAND DAVLAT UNIVERSITETI MEXANIKA -MATEMATIKA FAKULTETI AMALIY MATEMATIKA VA INFORMATIKA BO’LIMI 5110700 -INFORMATIKA O’QITISH METODIKASI YO’NALISHI „Sanoq sestema lari ustida amallar bajarish uchun interaktiv dasturiy ta’minot “ MAVZUSIDAN 206 guruh ta laba si : Xasanov J. Kurs ishi rahbari: Nazarov F . SAMARQAND -2016

Mundar ija Kirish. I. C++ tilida bir sanoq sestemadan boshqa sanoq sestemaga o’tuvchi dastur tuzish doir nazariy tushunchalar; 1.1 Turlar va C++ da o’zgaruvchilarni tavsiflash 1.2 .Bеlgi va satrlar . II. C++ tilida bir sanoq sestemadan boshqa sanoq sestemaga o’tuvchi dastur dasturiy ta’minoti; 2.1 . Sanoq sistemalarni boshqasiga o’tkazishning matematik tahlili. 2.2. Borland C++ da bir sanoq sestemadan boshqa sanoq sestemaga o’tuvchi dastur dasturiy ta’minoti; Xulosa. Foydalanilgan adabiyotlar ro’yhati

Kirish . Bizga ma’lumki, dasturlash tillarining yuzdan ortiq ko‘rinishlari mavjud, lekin qo‘llanilishi ko‘lamiga qarab C/C++ va C# dasturlash tillari yuqori dasturlash sinfiga mansubdir.Keyingi yillarda amaliy dasturchilarga juda ko‘p integratsion dastur tuzishmuhitlari taklif etilmoqda. Bu muhitlar u yoki bu imkoniyatlari bilan bir – biridanfarq qiladi. Men ham ushbu kurs ishim davomida C++ tilida sanoq sestemalar bilan ishlovchi obektlarga mo’ljallangan dasturni tuzib chiqmoqchiman. Ush bu dastur kichik dastur bo’lsada kelajakda boshqa dasturlar tuzishim uchun fundament vazifasini bajarishga harakat qilaman. Bu dasturni tuzib nafaqat hisoblashni amalga oshirish balki kichik dastur ko’ rinishdagi hisoblash dasturi va sanoq sestemani tushinm aydigan foydalanuvchi ham bir ko’rinishda tushinadigan tushinarli, bejirm ko’rinishga ega dastur tuzmoqchiman. Men bu dasturni tuzib obektlar yaratishni va ular orqali shunga o’xshash yana boshqa obektlar yaratmoqchiman bu dasturda ishlashimga yana bir s abab boshqa obektlarga mo’ljallanmagan dasturlash tilla rida faqat masalani matematik d asturi tuzib natija olinadi bunda yani C++ builderda esa b oshqa imkoniyatlar va kampanentalar bilan ham ishlash imkoni bor. EHM - bu elektron raqamli qurilmadir. Elektron qurilma deyilishiga sabab har qanday ma’lumotlar EHM da elektr signallari orqali qayta ishlanadi. Raqamli deyilishiga sabab EHM da har qanday ma’lumot sonlar yordamida tasvirlanadi. Sonlarni yozish usuliga sanoq sistemasi deb ataladi. Sonlarni yozish uch un har bir sanoq sistemasida o‘ziga xos turli belgilar to‘plamidan foydalaniladi. Foydalanilgan to‘plamdagi belgilar ularning soni, sanoq sistemasini xarakterlovchi asosiy kattaliklardir. Sanoq sistemasida foydalaniladigan belgilar soni sanoq sistemasining asosini tashkil etadi. Berilgan sanoq sistemasida sonlarni yozishdagi foydalanilgan belgilar soniga qarab, o‘nlik, ikkilik, sakkizlik, o‘n oltilik va boshqa sanoq sistemalarni kiritish mumkin.

C++ tilida bir sanoq sestemadan boshqa sanoq sestemaga o’t uvchi dastur tuzish doir nazariy tushunchalar; 1. Turlar va C++ da o’zgaruvchilarni tavsiflash Har bir nom va har bir o’zgaruvchi ular ustida bajariluvchi amallar aniqlovchi turlarga ega bo’ladi. Masalan, int i; tavsiflash i o’zgaruvchi int tur iga tegishli, ya’ni i butun o’zgaruvchi deb aniqlaydi. Tavsiflash - dasturga nom kirituvchi buyruqdir. Tavsiflash o’zgaruvchining turini aniqlaydi. Tur nom va ifodalardan to’g’ri foydalanishni aniqlaydi. Butun tur uchun quyidagi a mallar aniqlangan: +, -, * va /.Asosiy turlar . Bevosita apparat ta’minotiga javob beradigan asosiy turlar quyidagilar: char; short; int; long; float; double. Birinchi to’rtta tur butun kattaliklarni, oxirgi ikkitasi suzuvchi nuqtali, ya’ni kasr sonlarn i tasvirlash uchun ishlatiladi. char turidagi o’zgaruvchi mazkur kompyuterda belgilarni (odatda bayt) saqlash o’lchoviga ega, int turidagi o’zgaruvchi esa mazkur kompyuterdagi butun arifmetikaga mos o’lchovga ega (odatda so’z). Turlar bilan t asvirlangan butun sonlar diapazoni uning o’lchoviga bog’liq bo’ladi (uni sizeof buyrug’i yordamida hisoblash mumkin).C++ da o’lchovlar char turidagi kattaliklar o’lchovi birligida o’lchanadi. Asosiy turlar o’rtasidagi munosabatlarni quyidagicha yoz ish mumkin: 1 = sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long) = sizeof(float) <= sizeof(double). Umuman, asosiy turlar xususida yana boshqa narsalarni faraz qilish ma’nosiz. Xususan, ko’rsatgichlarni saqlash uchun butun tur etarli, d egan xulosa barcha kompyuterlar uchun to’g’ri emas. Asosiy turlarga const so’zini qo’shib tavsiflash mumkin. Bu boshlang’ich turga shu turning o’zini beradi, faqat bu holatda const turidagi o’zgaruvchilarning qiymatlari initsializatsiyadan so’ng o’zgari shi mumkin emas. const float pi = 3.14; const char plus = '+'; Bittalik qo’shtirnoqqa olingan belgilar belgi o’zgarmaslar hisoblanadi. Shunga e’tibor berish lozimki, bu usulda tavsiflangan o’zgarmaslar xotirada joy egallamaydi. uning qiymati talab qilingan joyda bevosita ishlatiladi. O’zgarmaslar

initsializatsiya paytida tavsiflanishi shart. O’zgaruvchilar uchun initsializa tsiya shartemas, ammo albatta tavsiya qilinadi. Lokal o’zgaruvchilarni initsializatsiyasiz kiritish asoslari juda ko’p.Bu turlarning ixtiyoriy kombinatsiyasiga quyidagi arifmetik amallar qo’llanilishi mumkin: + (plyus, unar va binar); - (minus, un ar va binar); * (ko’paytirish); / (bo’lish). Hamda taqqoslash amallari: == (teng); != (teng emas); < (kichik); > (katta); <= (kichik yoki teng); >= (katta yoki teng). Agar operandlar qo’yilgan shartni qanoatlantirsa , u holda taqqoslash amallari natijada 1 qiymatni beradi, aks holda esa 0 qiymatni beradi.Butunga bo’lish amali butun natijani beradi: 7/2 = 3. Butun kattaliklar ustida % - qoldiqni hisoblash amali bajariladi: 7%2 = 1.O’zlashtirishda va arifmetik amallarda C++ ularni guruhlash uchun asos iy turlar o’rtasida barcha ma’noli almashtirishlarni bajaradi: double d = 1; int i = 1; d = d + i; i = d + i; Satriy turlar . C++ da belgilarning biron -bir ketma -ketligi (massivlar) dan iborat matn qatorlarini xotirada saqlash uchun maxsus AnsiStrin g ma’lumotlar turi qo’llaniladi. «Stroka» - «Satr» turidagi o’zgaruvchilar barcha boshqa o’zgaruvchilar kabi e’lon va initsializatsiya qilinadi.Kompilyatorga navbatdagi belgilar ketma -ketligi yangi o’zgaruvchining nomi emas, balki satr eka nnligini bildirish uchun satrlar bittalik qo’shtirnoq ichiga olinadi.Misol: