O’zbekiston Respublikasi Samarqand Davlat Universiteti Matematika fakulteti Matematik Informatika yunalshi



Download 432,51 Kb.
Pdf ko'rish
bet8/8
Sana08.02.2022
Hajmi432,51 Kb.
#436363
1   2   3   4   5   6   7   8
Bog'liq
C kurs ishi-конвертирован (1)

Stack 
Overflow error
olasiz.
 
II AMALIY QISMI 
2.1 C++ da Ko’rsatkichlar qo’lanilshi. 
Ko'rsatkich. O'zining qiymati sifatida xotira manziliini ko'rsatuvchi (saqlovchi) 
o'zgaruvchilarga - ko'rsatkich o'zgaruvchilar deyiladi. 
Masalan : Ko'rsatkichning qiymati 
1) 0x22ff40 
2) 0x22ff33
3) va xakazo kabi xotiraning aniq qismi bo'lishi mumkin.
Boshqa o'zgaruvchilar kabi, ko'rsatkichlardan foydalanish uchun ularni e'lon qilish, 
toifasini aniqlash shart. 


22 
int *countPtr, count; 
bu yerda countPtr - int toifasidagi ob'ektga ko'rsatkich, count esa oddiy butun (int) 
toifasidagi o'zgaruvchi. Ko'rsatkichlarni e'lon qilishda har bir o'zgaruvchi oldigan * 
qo'yilishi shart. 
Maslahat: Ko'rsatkich o'zgaruvchilarini e'lon qilishning uchta usuli mavjud, ammo birinchi 
usul afzal ko'riladi: 
void printFun(
int 
test) //C++
{
if 
(test < 
1
)
return
;
else
{
cout << test << 
" "
;
printFun(test-
1
);
cout << test << 
" "
;
return
;
}

int 
main()
{
int 
test = 
3
;
printFun(test);
}
string* 
mystring;
// Preferred 
string *
mystring;
string * 
mystring; 
*
operator ( 
dereference
operatori) yordamida o'zgaruvchining qiymatini olish uchun 
ko'rsatgichdan foydalanishingiz mumkin : 
#include  
#include  
using namespace std; 


23 
int 
main() { 
string food = 
"Palov"
;
string* ptr = &food;
cout << ptr << 
"
\n
"

cout << *ptr << 
"
\n
"

return 
0


void 
cplusStili(
int 
& a

int 
& b) 

a *= 
10

b *= 
11


void 
cStili(
int 
* a

int 
* b) 

*a = -
10

*b = -
2


int 
main(
int 
argc

char ** argv) 

int 
* a; 
int 
* b; 
a = new 
int
; // xotiradan 
joy 
ajratish 


24 
b = new 
int

*a = 
3
; // boshlang 
'ish qiymat berish (muhim!) 

*b=4; 
cplusStili(*a

*b); 
cout << 
" *a=" 
<< 
*a << endl; 
cout << 
" *b=" 
<< 
*b << endl; 
cStili(a

b); 
cout << 
" *a=" 
<< 
*a << endl; 
cout << 
" *b=" 
<< endl; 
return 
0


2.2 C++ da Funksiylardan foydalanib masalalar yechish 
Misol 1
:
To'g'ri burchakli uchburchakning katetlari berilgan. (3, 4), (6, 8), (12, 5) bo'lgan 
xollar uchun uchburchak gipotenuzasini hisoblovchi dastur tuzilsin. 
1) Parametrli funksiya 
#include  
#include  
// funksiya prototipi 
float 
hisobla(
float 

float 
); 
int 
main() 

float 
c; 
c = hisobla(
3

4
); 
cout << c << endl; 
c = hisobla(
6

8
); 


25 
cout << c << endl; 
c = hisobla(
12

5
); 
cout << c << endl; 
system (
"pause"
); 
return 
0


float 
hisobla(
float 
a

float 
b) 

//lokal o
'zgaruvchi 
float 
natija; 
natija = sqrtf(a*a + b*b); 
return 
natija; 

2
) void 
Misol 2:
Kiritilgan n sonini 3 - darajasini hisoblovchi funksiya tuzilsin 
#include  
void kub (
int 
*); 
int 
main() 

int 
n; 
cout << 
"n="
; cin >> n; 
kub (&n); 
cout << 
"n ning qiymati =" 
<< n << endl; 
system (
"pause"
); 
return 
0


void kub (
int 
*nPtr) 

*nPtr = *nPtr * *nPtr * *nPtr; 

Quydagi masalani yechilishni kurib chiqsak. 


26 
int 
fac (
int 
k) /*formulani hisoblash*/ 

int 
i

j; /*lokal o’zgaruvchi*/ 
for 
(i = 
1

j = 
1
; i <= k; i++) 
/*hisoblash qiymati*/ 
j = j * i; 
return 
j; 

int 
main() 

int 
n

m

nmc

nm; 
while 
(
1


printf (
"
\n
n ni kiriting n = "
); 
scanf (
"%d"

&n); 
printf (“\n n ni kiriting m = 
"); 
scanf (
"%d"

&m); 
if 
(m>=

&& n>=m && n<
10

break

printf (
"Xatolik! 0<=m<=n<10 bo’lishi kerak "
); 

nm = n-m; 
nmc = fac (n) /fac (m) / fac (nm); 
printf (
"\ n binomial koeffisient = % d"

nmc); 
getch(); 
return 
0


2.3 C++ da Rekursif funksiyalar foydalanish.
 
1-misol: n! faktorialni rekursiyali funksiya orqali hisoblochi dastur 
tuzilsin. n!=1*2*…*(n- 1)*n; 
#include  
int 
fack1(
int
); 


27 
int 
main() 

int 
n; 
cout << 
"n="
; cin >> n; 
cout << fack1(n) << endl; 
qaytish 
0

tizim (
"pauza"
); 

int 
fack1(
int 
k) 

if 
(k < 
0


ni qaytaradi; 
agar (k == 
0

1
ni qaytarsa; 
Aks holda fack1(k)*fack1(k-
1
)ni qaytaring; 

 
Misol 2: Fibonachchi ketma ketligining n – hadini rekursiya qism orqali 
hisoblovchi dasturi; 
#include  
int 
fib(
int
); 
int 
main() 

int 
n; 
cout << 
"n="
; cin >> n; 
cout << fib(n) << endl; 
qaytish 
0


int 
fib(
int 
k) 

agar (k == 

|| k == 
1

1
ni qaytarish; 
Aks holda qaytaring fib(k - 
1
) + fib(k - 
2
); 

 
2.4 Funksiya qiymatini qaytarish haqida
 


28 
Barcha dasturlarda 
int main( ) 
asosiy funksiyasidan foydalandik va bu
funksiyadan xohlagancha boshqa funksiyalarga murojaat tashkil qilish mumkin.
v
oid 
turida bo‗lmagan har qanday funksiya 
return 
so‗zi bilan yakunlanadi.
Jumladan, 
main() 
funksiyasi ham shu operator bilan yakunlanadi. 
return 
o p e r a t o r i d a n f o y d a l a n i s h d a q u y i d a g i l a r g a e ‘ t i b o r b e r i s h k e r a k :
a) faqat 
void 
turli funksiyalar parametrsiz 
return 
operatori bilan yakunlanishi
mumkin. Chunki qiymat chaqiriq byurug‗iga qaytarilmaydi. Shuning uchun bu
turli funksiyalar 
return operatorisiz 
ham yakunlanishi, ya‘ni blok belgisi bilan
b) 
void
turidan boshqa turli barcha funksiyalar 
ret urn
operatori bilan
yakunlanadi, ya‘ni 
return parametr 
ko‗rinishida bo‗lishi kerak. Agar bu
operatordan parametrsiz foydalanilsa, kompilyator qaytariladigan qiymat yo‗q deb
c) 
void 
turidan boshqa turli funksiya 
return
siz tugasa ham, blok belgisi 
(}) 
ni
uchratgach, kompilyator funksiya tanasini bajarish tugaganligini tushunadi va
xatolik haqida xabar bermaydi. Ammo funksiya tanasidagi hisob natijalari
qaytarilmaganligi tufayli, chaqiriq byurug‗i qandaydir o‗zgaruvchiga qiymat
sifatida berilgan bo‗lsa, o‗sha o‗zgaruvchi qiymat sifatida tasodifiy sonni oladi va
t a b i i y k i , k e y i n g i b u y r u q l a r d a m a n t i q i y x a t o l i k l a r s o d i r b o ‗ l a d i ;
d) 
return 
so‗zidan keyin parametr sifatida biror o‗zgaruvchi nomidan,
masalan, 
return p 
kabi foydalanilgan bo‗lib, p e‘lon qilingan, ammo qiymati
a n iq l an mag an b o‗ ls a h a m qiy ma t s i fa ti da t a sod i fiy s on q ay t aril a di;
e) chaqiriq byurug‗idan foydalanilgandan keyin qandaydir qiymat qaytariladi.


29 
Lekin o‗sha qiymatni zarurat bo‗lmasa biror o‗zgaruvchiga berib, chaqiriq
166byurug‗idan keyingi buyruqlarda foydalanish shart emas. Bunday holda funksiya
t a n a s i d a g i a m a l l a r n a t i j a s i o ‗ z - o ‗ z i d a n y o ‗ q o l i b k e t a d i ;
f) funksiya tanasidagi hisob natijalari qanday bo‗lishidan qat‘iy nazar 
return 
da ko‗rsatilgan son yoki parametrning qiymati qaytariladi. Masalan, funksiya.
return 20 
kabi yakunlangan bo‗lsa, funksiya tanasidagi hisob natijalari turi va
qiymatidan qat‘iy nazar, chaqiriq byurug‗i natijasi 20 ga teng bo‗ladi;
d) yuqorida funksiya turi qanday bo‗lsa unga qaytariladigan qiymat turi ham
shunday bo‗lmasa, xatolik sodir bo‗lishi haqida aytilgan edi. Bu xatolik ham
mantiqiy xatolik bo‗lishi mumkin. Ya‘ni kompilyator xato haqida xabar bermasligi
mumkin. Masalan, funksiya turi 
int 
bo‗lsin. Lekin unga haqiqiy qiymat qaytarilsa,
qaytarilgan qiymatning kasr qismi tashlab yuboriladi. Xatto, butun turli funksiyaga
return true 
kabi 
bool 
turli qiymat qaytarilsa, bu qiymat 1 deb, 
false 
qiymat
h) 
return
operatori orqali faqat massivning qiymatini qaytarib bo‗lmaydi.
L e k i n m a s s i v e l e m e n t i q i y m a t i n i q a y t a r i s h m u m k i n ;
i) main () 
bosh funksiyasida qiymat qaytarish uchun 
return 0
; byurug‗idan
foydalaniladi. Bunda nol butun son bo‗lganligi uchun foydalanilgan. Ammo nol
o‗rnida ixtiyoriy manfiy va musbat, butun va haqiqiy sonlardan, qiymati aniq
bo‗lgan arifmetik va mantiqiy ifodalardan ham foydalanish mumkin. Shuningdek,
return operatori bo‗lmasa ham dastur ijro etiladi. Ya‘ni bosh funksiyaning blok
b e l g i s i n i u c h r a t g a c h C + + d a s t u r y a k u n l a n g a n l i g i n i t u s h u n a d i .


30 
Qiymat qaytarish bo‗yicha aytilgan fikrlarni quyidagi dastur misolida . 
# include using namespace std; 
int 
fun1 (
int 
x

int 
y); 
int 
main() 
{
int 
i
,
j
,
k
,
m
,
r; i=
5
; j=
2

m=fun1(i
,
j); k=
10
+m; 
cout<<‖\n k=‖<system (―pause‖); 
return 
-
56


int 
fun1 (
int 
x
,
int 
y) 
{
int 
q1
,
p; q1=x+y; 
cout<<‘\n q1=‖<return 
q1; system(―pause‖); } 
 
Qachonki funksiya turli xil argumentlar bilan chaqirilsa, funksiya turli xil natijalarni 
qaytaradi. cube_volume(2) chaqiruvini e’tiborga oling. 2chi argument side_ length 
parametr o’zgaruvchisiga mos keladi. Shu sababli bu chaqiruvda side_length bu 2. 
Funksiya side_length * side_length * side_length, yoki 2 * 2 * 2.ni amalga oshiradi. 
Qachonki funksiya turli xil argumentlar bilan chaqirilganda,aytaylik 10 bilan, so’ngra 
funksiya 10 * 10 * 10 ni aniqlaydi. Endi biz ikkala funksiyani test dasturida 
birlashtiramiz. Chunki main calls cube_ volume ni chaqiradi . cube_volume funksiyasini 
main funksiyasini aniqlanishdan oldin bilish lozim. Bunga cube_volume ni dastlabki 
faylga birinchi va main ni esa oxirida joylashtirish orqali osongina erishiladi. Mana 
to’liq dastur.Funksiya harakatini tasvirlaydigan izohga e’tibor bering.
 
#include  
using namespace std; 
/** 
Computes the volume of a cube. 
86 
@param 
side_length the side length of the cube 
@
return 
the volume 
*/ 
double cube_volume(double side_length) 


31 

double volume = side_length * side_length * 
side_length; 
return 
volume; 

int 
main() 

double result1 = cube_volume(
2
); 
double result2 = cube_volume(
10
); 
cout << 
"A cube with side length 2 has volume " 
<< 
result1 << endl; 
cout << 
"A cube with side length 10 has volume " 
<< 
result2 << endl; 
return 
0


 
 Agar foydalanuvchi tomonidan belgilangan funktsiya, masalan myFunction(),
main() funktsiyadan so'ng e'lon qilingan bo'lsa , xato yuz beradi . Buning sababi, 
C ++ yuqoridan pastga ishlaydi; Agar funksiya yuqorida e'lon qilinmasa main(), 
dastur bundan bexabar bo'ladi
XULOSA 
Bugungi kunga kelib axborot texnologiyalari juda shiddad bilan rivojlanib 
ketmoqda. Yuqori darajali dasturlash tillarini kunnan kunga har xil versialari 
oylap topilmoqda. Bundan maxsad insonlarning dastur tuzish paytida eng 
birinshi orinda vaqtini tejash undan keyin esa qulaylilik yaratish hisoplanadi. 
Bugungi kunga kelip C++, Delphi, Pascal dasturlash tillari mavjud ekan. Bu 
dasturlash tillari orqali axborot texnolagiyalari boyisha harqanday maumualarni 
hal etish mumkun. Delphi dasturlash tilining asosini esa Pascal dasturlash tili 
tashkil etar ekan. Buning sababi esa Pascal tilini takomillashtirish bolip 
hisoplanadi. Bu takomillashtirish natiyjasida esa yangi bir Delphi dasturlash tili 
juvudga keldi. Bu yuqori darajali dasturlash tillari ishida C++ dasturlash tili juda 


32 
kata ahamiyatga ega ekan. Saba bu dasturlash tilida ishlash ansha qulay eng 
ahamiyatliysi C++tili mashina kodiga juda yaqin
 
Bu ishlarini ham biz kurs ishimizda korsatishga harakat qilganmiz. 
Dasturlash – kompyuterlar va boshqa mikroprosersorli elektron mashinalar 
uchun 
dasturlar tuzish
, sinash va oʻzgartirish jarayonidan iborat.Odatda dasturlash yuqori 
saviyali dasturlash tillari (Delphi, C++ Builder, Pascal) vositasida amalga oshiriladi. Bu 
dasturlash tillarining semantikasi odam tiliga yaqinligi tufayli dastur tuzish jarayoni 
ancha oson kechadi
 
 
 
 
 
Foydalanilgan adabiyotlar
1.
Бьярн Страустрап. Введение я язык С++ 2. Крис Паппас, Уильям Мюррей. 
Программирование на С и С++ “Ирина”, BHV, Киев 2000г 3. Фридман 
Александр Львович, Язык программирование С++ 4. Aripov M.M., Imomov T., 
Irmuhamedov Z.M. va boshqalar. Informatika.5.Axborot texnologiyalari. Toshkent, 1-
qism. 2002, 2-qism. 2003 Foydalanilgan elektron saytlar: http://www.infocity.kiev.ua/ 
http://www.intuit.ru/ 
http://www.ziyonet.com/
 

Download 432,51 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish