4-mustaqil ish Nostandart funksiyalar. Foydalanuvchining funksiyalari



Yüklə 47,39 Kb.
tarix24.12.2023
ölçüsü47,39 Kb.
#192877
4-mustaqil ish dasturlash


4-mustaqil ish

  1. Nostandart funksiyalar. Foydalanuvchining funksiyalari.

  2. Fayllar bilan ishlashning yangi usullari (I/O texnologiyasi).

  3. Voris sinflar yaratish va ular yordamida masalalarni yechish

  4. Ob’ektlar massivi bilan ish yuritish

  5. Dinamik massivlar va ko‘rsatgichlar



Funksiya nomi


Tilda yozilishi


Funksiya nomi


Tilda yozilishi


Sinx
Cosx


Lnx
ex

SIN(x)
COS(x)


Ln(X)
EXP(x)

Arctgx 
|x|


x2
ab

SQRT(x)
ARCTAN(x)


ABS(x)
SQR(x)
EXP(b*LN(a))

Nostandart matematik funksiyalar. 
O‘zgartirish funksiyalari.

Funksiya

Qiymati

Chr(n)

Kodi n ga teng simvol

IntToStr(k)

Butun k ni tasvirlovchi satr

FloatToStr (n)

Haqiqiy n tasvirlovi satr

StrToInt (s)

Satrni butun songa o‘tkazish

StrToFloat (s)

Satrni haqiqiy songa o‘tkazish

Round (n)

Haqiqiy sonni yaxlitlash

Trunc (n)

Haqiqiy son kasr qismini olib tashlash

Frac(n)

Kasrli sonning kasr qismi

Int (n)

Kasr sonning butun qismi

6.Arifmetik va mantiqiy ifodalar 
Ifodalarda hisoblashlar tartibi qavslar ichidagi ifodalar bajarilgandan keyin quyidagi amallar bajariladi:
1.NOT amali;
2. *, /, DIV, MOD, AND;
3.+, -, OR;
4.taqqoslash belgilari: <, >, <=, >=, <>, =, IN.
Ifodadagi amal natijasi qanday turda bo‘lishi amallarda qatnashayotgan o‘zgaruvchilarning turlariga bog‘liq. Agar ikkita o‘zgaruchining turi Integer yoki Real bo‘lsi, amal natijasi ham Integer yoki Real bo‘ladi. Agar biri Integer ikkinchisi Real bo‘lsa natija Real bo‘ladi. NOT, OR, AND va taqqoslash amallarining natijalari esa Boolean turida bo‘ladi.
Pascal tilida shart - bu mantiqiy turdagi ifoda bo‘lib, u faqat «chin»(True) yoki «yolg‘on»(False) qiymatni qabul qiladi.
Quyidagi mantiqiy amallar ishlatiladi: NOT-«inkor»; AND-«mantiqiy va»; OR-«mantiqiy yoki».
Bu mantiqiy amallarning bajarilish natijalari quyidagicha:
















False
False
True
True

False
True
False
True

False
False
False
True

False
True
True
True

True
True
False
False

Masalan: (5<6) AND (6<50) -mantiqiy ifoda rost (True),


(20>0) OR (20<0.5) -mantiqiy ifoda rost (True),
NOT(100>3) -mantiqiy ifoda yolg‘on (False).
Mantiqiy ifodalarni biror bir mantiqiy o‘zgaruvchiga yuborish ham mumkin. 
Masalan: F:=(A
Bu erda, agar ikkala shart bajarilgandagina F mantiqiy o‘zgaruvchi “chin” (True) qiymatni qabul qiladi. Aks holda “yolg‘on” (False) qiymatni qabul qiladi.
7.Paskal tilida dastur strukturasi
Paskal tilida dastur matni bosh va asosiy bo‘limdan tashkil topadi. Bosh bo‘lim dastur nomi va o‘zgaruvchilar, o‘zgarmaslar, massivlar, belgilar(metkalar), protseduralar va funksiyalarni tavsiflashdan iborat bo‘ladi. Asosiy bo‘lim dastur tanasi deyilib, unda dasturda bajariladigan hamma operatorlar ketma-ketligi beriladi va u Begin (boshlamoq) so‘zi bilan boshlanib End (tugash) so‘zi bilan tugaydi. Umumiy holda dastur strukturasi quyidagi ko‘rinishga ega:
Program ;
Uses ;
Label ;
Const ;
Type ;
Var ;
Begin
End.
Biror bir masalani echishning chiziqli bo‘lgan algoritmiga dastur tuzishda algoritmdagi keltirilgan ketma-ketliklar asosida operatorlar yoziladi. Bunday dasturlarni tuzushda asosan o‘zgaruvchilar qiymatini kiritish, natijalarni chiqarish va shu bilan birga o‘zlashtirish operatorlari ishlatiladi. 
Kompьyuter foydalanuvchi tomonidan qo‘yilgan masalani aniq va tushunarli ko‘rsatmalar berilgandagina bajara oladi. Bu ko‘rsatmalar ma’lum bir ma’noni anglatuvchi so‘zlardan iborat bo‘lib, kompьyuterga qanday operatsiyani bajarish lozimligini bildiradi va bu ko‘rsatmalarga operatorlar deyiladi. Operatorlar dastur ishlaganda ketma-ket ravishda bajariladi. Paskal tilida bir satrga bir necha operatorlarni yozish mumkin.
Dasturdagi o‘zgaruvchilar qiymatlarini dastur ichida o‘zlashtirish operatori yordamida ham berish mumkin. Lekin dasturda o‘zgaruvchi qiymatini tashqaridan kiritish qulaylik tug‘diradi va umumiylikni ta’minlaydi.
Read operatori o‘zgaruvchilar qiymatlarini ekrandan kompьyuter xotirasiga kiritish uchun ishlatiladi.
U quyidagi ko‘rinishlarga ega.
Read(c1,c2,...,cn); Readln(c1,c2,...,cn); Readln;
bu erda c1,c2,...,cn - o‘zgaruvchilar nomi; ln - qo‘shimchasi qiymatni kiritib keyingi qatorga o‘tishni bildiradi.
Misollar: Read(Sm1,Sm2); Readln(x1,x2,x3);
Readln;
Bu erda birinchi operator Sm1 va Sm2 o‘zgaruvchilar qiymatini ekrandan kiritadi. Ikkinchi operator esa x1,x2,x3 o‘zgaruvchilar qiymatini ekrandan kiritadi va kiritishni keyingi qatorga o‘tkazadi. Oxirgi operator esa kiritishni kutadi va qator o‘tkazadi.
Write operatori oddiy ma’lumotlarni va o‘zgaruvchilar qiymatlarini kompьyuter ekraniga chiqarish uchun ishlatiladi. U quyidagi ko‘rinishlarga ega.
Write(c1,c2,...,cn); Writeln(c1,c2,...,cn); Writeln;
bu erda c1,c2,...,cn - oddiy matnlar yoki o‘zgaruvchilar nomi; ln - qo‘shimchasi chiqarishni keyingi qatorga o‘tishni bildiradi.
Misollar: Write(Summa); Write(‘Natija yuk’);
Write(‘Tenglama echimi x1=’, x1, ’x2=’, x2);
Oddiy ma’lumotlarni chiqarishda ular matn deb qaraladi va u qo‘shtirnoq ichida yoziladi. CHiqarish operatori yordamida o‘zgaruvchilar qiymatini format ko‘rinishda ham berish mumkin: Write(c:m:n);
bu erda s-o‘zgaruvchi; m-shu o‘zgaruvchi qiymati uzunligi; n-qiymatning kasr qismi va unda n-1
Misol. Write(x:8:4); 
Agar x=155.01021 bo‘lsa, quyidagi yozuv chiqadi 115.0102.
Write(‘Maxsulot soni:’, kol:5);
Agar kol=15 bo‘lsa, quyidagi yozuv ekranga chiqadi. Maxsulot soni: 15
Dastur matnini tushuntirish maqsadida ko‘pincha dasturda izohlar keltiriladi. Dasturda izohlar istalgan joyda berilishi mumkin. Izoh katta qavs ichida yoziladi.
Masalan: { Bu matn dasturga izoh beradi } { Bu joyda echim aniqlanmoqda }
Dasturda ma’lum hisoblashlarning natijalarini biror bir o‘zgaruvchida saqlash uchun o‘zlashtirish (yuborish) operatori ishlatilib, u «:=» belgisi yordamida qiymat yuborilishi kerak bo‘lgan o‘zgaruvchidan keyin qo‘yiladi.
Masalan: i:=0; i-qiymati nolga tenglashadi, ya’ni i o‘zgaruvchiga nol yuboriladi deb tushuniladi. Bunda mashina i o‘zgaruvchi uchun ajratilgan xotirasiga nol yozib saqlaydi. Misol: B:=5; C:=4; A:=(B+C)/2;
Bu erda, agar A butun identifikator bo‘lsa, uning qiymati 4 ga, aks holda esa 4.5 qiymatga ega bo‘ladi.
O‘zlashtirish operatori yordamida ixtiyoriy ifodalarni hisoblash va natijalarni xotiraga joylashtirish mumkin.
CHiziqli strukturali algoritmlarni dastur shaklida yozish uchun oldin ishlatiladigan o‘zgaruvchilar ruyxati keltirilib, keyin algoritmdagi bajarilishlar ketma-ket ravishda amalga oshirilishi kerak.
Misol: Tekislikdagi ikki nuqta orasidagi masofani topish dasturi.
Program XY;
Var x1,y1,x2,y2,d: Real;
Begin
Write(‘Nukta koordinatalarini kiriting:’); Readln(x1,y1,x2,y2);
d:=Sqrt(Sqr(x1-x2)+Sqr(y1-y2));
Writeln(‘Masofa=’,d);
Readln;
End.
Uch qatordan iborat faylimiz
π\piπ
sonining qiymatini saqlaydi (30 xona aniqlik bilan).
Fayli to'lqi o'qish uchun quyidagi kodni yozamiz:
with open('pi.txt') as fayl:
pi = fayl.read()
Kodni tahlil qilamiz:
Birinchi qatorda open() funksiyasi yordamida faylni ochayapmiz. Bunda funksiyaga argument sifatida fayl nomini berayapmiz. Bu yerda biz ochayotgan fayl va dasturimiz bir papkada bo'lishi muhim.
open() funksiyasi faylni obyekt sifatida qaytaradi, as operatori yordamida esa biz obyektimizga fayl deb nom berayapmiz.
Ikkinchi qatorda .read() metodi yordamida fayl obyektining tarkibidan bizga kerakli matnni olib, yangi, PI o'zgaruvchisiga yuklayabmiz.
with operatorining vazifasi biz fayl bilan ishlab bo'lganimizdan so'ng faylni yopish. Yuqoridagi misolda, 2-qatordan so'ng Python zudlik bilan faylni yopadi.
Yuqorida ko'rgan usulimiz fayl bilan ishlashning eng xavfsiz usuli. Aslida biz fayllarni to'g'ridan-to'g'ri fayl=open('pi.txt') yordamida ochishimiz, fayl bilan ishlab bo'lgandan so'ng esa fayl.close() komandasi yordamida faylni yopishimiz ham mumkin edi:
fayl = open('pi.txt')
PI = fayl.read()
print(pi)
fayl.close()
Lekin, bu usul xavfli hisoblanadi va tavsiya qilinmaydi. Gap shundaki, open() funksiyasi yordamida faylni ochganimizdan keyin, toki close() metodini chaqirgunga qadar faylimiz ochiq holatda turadi. Agar, faylni vaqtida yopmasak, yoki fayl yopilmasidan avval dasturimiz to'xtab qolsa fayl tarkibiga ziyon yetishi, ma'lumotlar yo'qotilishi mumkin. Misol uchun, boshqa dasturlarda ham (masalan Microsoft Word) faylni yopmasdan oldin kompyuteringiz o'chib qolsa, yoki dastur behosdan yopilib ketsa faylingizga ziyon yetkani kabi.
Shuning uchun open() funksiyasiga with orqali murojat qilganimizda, faylimiz with blokining oxirigacha ochiq turadi, va with tugashi bilan, fayl ham yopiladi. Demak fayl ustidagi amallarni biz with bloki ichida bajarib olishimiz kerak.
Keling endi pi ning qiymatini konsilga chiqaramiz:
>>> print(pi)
3.1415926535
8979323846
2643383279
Matn faylda qanday saqlangan bo'lsa, huddi shu ko'rinishda konsolga chiqdi. Saqlangan ma'lumot son bo'lsada, fayldan o'qiganimizda qaytgan qiymat matn ko'rinishida bo'ladi. Matnni songa o'tkazish uchun, unga biroz ishlov beramiz:
pi = pi.rstrip() # qator ohiridagi bo'shliqlarni olib tashlaymiz
pi = pi.replace('\n','') # qator tashlash belgisini almashtiramiz
pi = float(pi) # matnni float (o'nlik) songa o'tkazamiz
print(pi)
Natija: 3.141592653589793
.replace() metodi matn tarkibidagi biror harf yoki belgini boshqa harf yoki belgi bilan almashtirish uchun ishlatiladi.
PAPKA ICHIDAGI FAYLLARNI OCHISH
Agar siz ochayotgan fayl dasturimiz bilan bir papkada emas, shu papka ichidagi papkada joylashgan boʻlsa, fayl nomidan avval papka nomi yoziladi:
with open('data/pi.txt') as fayl:
pi = fayl.read()
Agar papkalar bir necha qavat boʻlsa, fayl nomini va ungacha boʻlgan papkalarni alohida yozib olgan afzal:
faylnomi = 'data/math/numbers/pi.txt'
with open(faylnomi) as fayl:
pi = fayl.read()
Windowsda papkalar orasida "\" belgisi ishlatilsada, Pythonda "/" belgisini ishlataveramiz. Agar \ belgisini ishlatishni istasangiz, bu belgini 2 marta yozing: C:\\python\\darslar\\data
FAYLNI QATORMA-QATOR OʻQISH
Baʻzida faylni toʻliqligicha emas, qatorma-qator oʻqish talab qilinishi mumkin. Masalan, faylda talabalrning ismi yoki kundalik ob-havo maʻlumotlari saqlangdanda va hokazo. Bunday hollarda for tsiklidan foydalanamiz:
filename = 'data/talabalar.txt'
with open(filename) as file:
for line in file:
print(line)
Natija:
alijon valiyev
hasan olimov
rahima muminova
Qatorlarni ro'yxat ko'rinishida saqlab olish uchun, .readlines() metodidan foydalanamiz.
with open(filename) as file:
talabalar = file.readlines()
print(talabalar)
Natija: ['alijon valiyev\n', 'hasan olimov\n', 'rahima muminova\n', 'hamida oqilova']
E'tibor bering, har bir talaba ismidan so'ng qator tashlah belgisi (\n) tushib qolgan. Biz bu belgilarni .rstrip() metodi yordamida olib tashlashimiz mumkin:
talabalar = [talaba.rstrip() for talaba in talabalar]
print(talabalar)
Natija: ['alijon valiyev', 'hasan olimov', 'rahima muminova', 'hamida oqilova']
FAYLGA YOZISH
Ma'lumotlarni saqlashning eng qulay usuli bu faylga yozish. Dasturimiz bajarilishdan to'xtaganidan so'ng, xotiradagi ma'lumotlar o'chib ketishi mumkin, lekin faylga yozilgan ma'lumotlar saqlanib turaveradi. Fayllarni kelajakda qaytdan xotiraga yuklab, dasturimizni to'htagan joyidan davom etishimiz mumkin.
Massivga biz “bir xil tipdagi elementlar guruhi shu bilan birga bir xil nom va xotiraga ega ” deb tarif beramiz.
Massivlarni yozishdan oldin qanday qilib yozish kerakligini bilishimiz kerak bo’ladi . Bunda biz yozayotgan massivli kodimizda massivni barcha elementlari eng birinchi o’rinda bir xil tipda va shu bilan birga massiv bitta nomga ega bo’lishi lozim . Massivlarni barcha elementlari xotirada ketma -ket joylashgan boladi. C++ dasturida massivlarnig elementlarining indeksi 0 dan boshlanadi . Massivlarni quydagicha bo’ladi
Massiv turlari :
Massivlar ikki turga bo’linadi : 1- dinamik massiv va 2- statik massivlarga . Massivlar tuzilishiga ko’raham 2 xil bo’ladi bir o’kchamda va ko’p o’lchamda. Bir o’lchamli massivni e`lon qilish quyidagicha bo’ladi: [elementlar soni]={ boshlang’ich qiymatlar } “ int A[n] ; “ bu yerda “int “ massiv toifasini bildirsa (“int “o’rninga istalgan toifa bersak boladi: float,char,double,bool… ) “ A [] ” esa massiv nomi “n” massivning chegarasi ya’ni agr biz “n” ning o’rniga istalgan raqam yozsak bu unga shuncha element kirita olish imkoniyatini beradi va biz agar kiritgan element miqdoridan katta bo’lsa biz bergan chegaragacha oladi .
1-misol : massiv elementlaridan eng kattasini toping .Buyerda for orqali berilgan shart ya’ni i<3 shartiga mofiq
{.. ..} ichidagi berilgan buyruq 3 marta takrorlanadi bu degani ekrandan “ son kiritin=”degan yozuv 3 tarta chiqadi va har qiymat kiritganimizada if (..) qismga jonatadi va oxrgi sondan keyin natijanini if(..)qism tekshirb ekranga chqargan . (Bu jarayonda bir o’lchamli massivga misol boladi ).
Ko’p o’lchamli massivlar :
Dinamik massiv:Biz ma’lumotlarni 3 ga bo’lamiz (qo’lash vaqti bo’yicha) bular statik,avtomatik va dinamik.
Statik (global va statik deb ta'riflangan): funktsiyalardan tashqarida yoki static yordamida kompilyatsiya bosqichida xotirada taqsimlanadi va dasturning barcha ish vaqti davomida mavjud xotiradagi joyi-statik segmentida bir xil nomdagi mahalliy o'zgaruvchilarga ega bo'lgan funksiya-dasturlardan tashqari, dasturning istalgan qismida mavjud bo’ladi.
Dinamik: ma'lumotlar emas, balki ularning manzillari (ko'rsatgichlari) bilan maxsus buyruqlar yordamida dasturni bajarish bosqichida xotirada taqsimlanadi va o'chiriladi ,xotiradagi joy - dinamik xotira (ingl. uyum-heap) ko'rsatkichlarning ishlash muddati va ko'lami an'anaviy (statik yoki avtomatik) ma'lumotlar kabi belgilanadi.
Dinamik hotira ishlatilishi
Biz dinamik xotrani asosan ma'lumotlar dasturni bajarish jarayonida real vaqtda qism qism bilan qabul qilinishida ishlatladi.Bu bizga statik jarayondagi ortiqcha xotrani band qilishni oldini olishga yordam beradi.Chunki yuqorida takidlangandek dinamik jarayon xotira bilan ishlaydi va shubhasiz biz yaratayotgan kodimizani hotirada ish jarayonida o’chirib va boshqa bir ma’lumotni aynan shu bo’shatilgan xotiraga joylash imkonini beradi.
Biz dinamik massivda ko’rsatkichlardan keng qamroda foydalanamiz . Ko’rsatkich ozi nima ? – dasturdagi o’zgaruvchilar, turlixil funksiyalar vas hu kabi obektlarni alohida hotrada saqlash va ular ustida amallar bajarish mumkin, ularning qiymatlari adres bo’lgan o’zgaruvchilarga ko’rsatgich o’zgaruvchlar deyiladi.
Ko’rsatgichlar 3 xil turda bo’lishi mumkin :
Birorta obektga ( hususan o’zgaruvchiga ko’rsatkich)
Funksiyaga ko’rsatgich
Void ko’rsatgich

Xulosa
Statik (global va statik deb ta'riflangan): funktsiyalardan tashqarida yoki static yordamida kompilyatsiya bosqichida xotirada taqsimlanadi va dasturning barcha ish vaqti davomida mavjud xotiradagi joyi-statik segmentida bir xil nomdagi mahalliy o'zgaruvchilarga ega bo'lgan funksiya-dasturlardan tashqari, dasturning istalgan qismida mavjud bo’ladi.
Dinamik: ma'lumotlar emas, balki ularning manzillari (ko'rsatgichlari) bilan maxsus buyruqlar yordamida dasturni bajarish bosqichida xotirada taqsimlanadi va o'chiriladi ,xotiradagi joy - dinamik xotira (ingl. uyum-heap) ko'rsatkichlarning ishlash muddati va ko'lami an'anaviy (statik yoki avtomatik) ma'lumotlar kabi belgilanadi.
Biz dinamik xotrani asosan ma'lumotlar dasturni bajarish jarayonida real vaqtda qism qism bilan qabul qilinishida ishlatladi.Bu bizga statik jarayondagi ortiqcha xotrani band qilishni oldini olishga yordam beradi.Chunki yuqorida takidlangandek dinamik jarayon xotira bilan ishlaydi va shubhasiz biz yaratayotgan kodimizani hotirada ish jarayonida o’chirib va boshqa bir ma’lumotni aynan shu bo’shatilgan xotiraga joylash imkonini beradi.

Internet resurslar.


1. http://www.stroustrup.com/4th.html
2. http://www.cplusplus.com/
3. http://acm.tuit.uz/- дастурий ечим тўғрилигини автоматик тестловчи тизим.
4. http://acm.tuit.uz/forum/
5. http://acm.timus.ru/ – дастурларни тестловчи тизим.
6. http://codeforces.com/ - дастурий ечим тўғрилигини автоматик тестловчи тизим
Yüklə 47,39 Kb.

Dostları ilə paylaş:




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin