Darslar 49–50 · 2 ta dars · N. I. Taylaqov (umumiy muharrir), A. B. Axmedov, M. D. Pardayeva, A. A. Abdug‘aniyev, U. M. Mirsanov. Informatika va axborot texnologiyalari, 10-sinf, 1-nashr. «Extremum-Press», Toshkent, 2017
49
Ma’lumot turini o‘zgartirish
Darslik: 106–110-betlar
MaqsadMa’lumot turlarini (Integer, Real, String) farqlaydi, StrToInt, IntToStr, StrToFloat va FloatToStr bilan turni o‘zgartiradi va protsedura ichida lokal o‘zgaruvchilar e’lon qiladi.
Yangi so‘zlar
StrToInt · StrToInt: converts a text string to an integerStrToFloat · StrToFloat: converts a text string to a real numberlokal o‘zgaruvchi · local variable: a variable declared in a procedure and usable only therevar · var: the section where variables and their types are declared
Tushuntirish
Edit dagi son aslida matn, shuning uchun uni hisoblashdan oldin songa aylantirish kerak: Delphi bir turdagi o‘zgaruvchiga boshqa turdagi ifodani to‘g‘ridan-to‘g‘ri berishga yo‘l qo‘ymaydi. Butun son uchun StrToInt (matndan songa) va IntToStr (sondan matnga), haqiqiy son uchun StrToFloat va FloatToStr ishlatiladi. Hisoblashda oraliq natijalar o‘zgaruvchilarda saqlanadi: ular protsedura sarlavhasi ostidagi var qismida e’lon qilinadi, masalan var r: Real; yoki var i, m, n, s: Integer; Bunday o‘zgaruvchi lokal bo‘lib, faqat shu protsedura ichida ishlaydi va protsedura tugagach yo‘qoladi. Edit ga son o‘rniga harf kiritilsa yoki haqiqiy sonda noto‘g‘ri ajratuvchi (nuqta o‘rniga vergul yoki aksincha) yozilsa, StrToInt va StrToFloat xato xabarini chiqaradi, shuning uchun foydalanuvchiga qanday yozish kerakligini Label da ayting. FloatToStr natijani kompyuter sozlamasidagi ajratuvchi bilan beradi.
Namunalar
Kub: Edit1 – qirra uzunligi a. procedure TForm1.Button1Click(Sender: TObject); ⏎ var a: Integer; ⏎ begin ⏎ a := StrToInt(Edit1.Text); ⏎ Label1.Caption := 'Hajm: ' + IntToStr(a * a * a); ⏎ Label2.Caption := 'Sirt: ' + IntToStr(6 * a * a); ⏎ end; a = 4 da Hajm: 64, Sirt: 96.
Faktorial: procedure TForm1.Button2Click(Sender: TObject); ⏎ var i, n, f: Integer; ⏎ begin ⏎ n := StrToInt(Edit2.Text); ⏎ f := 1; ⏎ for i := 1 to n do ⏎ f := f * i; ⏎ Label3.Caption := 'Faktorial: ' + IntToStr(f); ⏎ end; n = 6 da 1·2·3·4·5·6 = 720; Faktorial: 720. Integer turi 2 147 483 647 gacha sonlarni saqlaydi, shuning uchun n 12 dan oshmasin (13! juda katta). Doira uchun r := StrToFloat(Edit1.Text); FloatToStr(Pi * r * r) – Pi tayyor doimiy.
Sinfda faoliyat
«Hisoblagich»: juftlik ikki Edit li ilova yaratadi; tugma yig‘indi, ayirma va ko‘paytmani uch Label da chiqaradi; noto‘g‘ri kiritishda ilova qanday xabar berishini sinaydi.
Mashq
1
Matnni butun songa aylantiradigan funksiya qaysi?
StrToInt
2
a = 5 bo‘lsa, 6 * a * a nechaga teng?
150
3
n = 5 da f := f * i (f boshida 1, i = 1..n) oxirida f nechaga teng?
120
4
Nima uchun lokal o‘zgaruvchidan boshqa protsedurada foydalanib bo‘lmaydi?
U faqat e’lon qilingan protsedura ishlayotganda mavjud bo‘ladi va tugagach yo‘qoladi.