Reja: Takrorlanuvchi operatorlar



Download 19,89 Kb.
Sana01.01.2022
Hajmi19,89 Kb.
#285138

Mavzu: Takrorlanuvchi operatorlardan foydalanib dasturlar tuzish. Massivlar bilan ishlash.

Reja:


  1. Takrorlanuvchi operatorlar.

  2. Massivlar haqida ma’lumot.

  3. Massivlarga oid misollar.

Paskal bir butn deb qaraluvchi  bir xil turdagi elementlar to`plamidan iborat obyektlar ham ishlatilishi mumkin .Bular massivlar ular bir qancha bir turdagi bir butun deb qaraluvchi obyektlar(sonlar,belgilar,satrlar va hokazo)ning rasmiy birlashmasidir.         

Massiv ismi (idenfikator) va massiovning kerakli nelementini ko`rsatish uchun zarur bo`lgan o`lchamlari (koordinatalar) bilan aniqlanadi.Massiv ismi uning hamma elementlari uchuin yagonadir.          

Har bir alohida elementga massiv olchamiga bog’liq ravishda bir yoki bir nechta indekslar yordamida murojaat qilish mumkin. Indeks sifatida o`zgarmaslar va ефкеши turdagi o`zgauvchilar bilan bir qatorda murakkab turdagi (massivlar ,satrlar va hokazolar) o`zgaruvchilar ham massiv o`zgaruvchilari bo`lishi mumkin. Massiv turi bayoni quyidagicha ko`rinishda beriladi: =ARRAY [] OF Bu yerda -to`g’ri idenfikator’ ARRAY ,OF-rezerv so`zlar (massiv…dan); - bir biridan vergullar bilan ajratilgan ,indeksli turlar ro`yxati; ro`yxatni o`rab olgan kvadrat qavslar –sintaksis talabi; -Turbo Paskalning ixtiyoriy turi. Indeks turlari sifatida TurboPaskal LONGINT va LONGINT baza-turli soha turlaridan boshqa ixtiyoriy ефкеши turlarni ishlatish mumkin.       

To`g’ri tuzilgandasturda indeks soha- turi tomonidan aniqlangan  chegaradan tashqarida chiqmasligi kerak.Masalan: a:array[] of real,bo`lsa A[0] ni c:array[] of Boolean,bo`lsa C [38] ni ishlatish mumkin emas. Of  dan keyin keluvchi Turbo Paskalning ixtiyoriy turi jumladan boshqa massiv ham bo`lishi mumkin,masalan,  Var Mat : array [0..5] of array [-2..2] of array [Char] of byte; Bu yozuvni ixcham holda quyidagicha yozish mumkin: Type Mat:array [0..5,-2..2,char] of byte.   Umuman strukturali turlarning ,demak,massivning ichma –ichlik chuqurligi ixtiyoriy ,shuning uchun indeks turning  ro`yxatdagi elementlar soniga ham chegara yo`q ,lekin ixtiyoriy massivning ichki uzunligi yig’indisi 65520 baytdan oshmasligi kerak .shaxsiy kompyuter xotirasida massiv elementlari biri ketidan ikkinchisi shunday keladiki , buda kichik adresli xonadan kattasiga o`tganda massivning eng chekka o`ng indeksi tez almashinadi agar , masalan, Var a:array [1..2,1..2] of byte; begin a[1,1]=1; a[2,1]:=2; a[1,2]:=3; a[2,2]:=4; end bo`lsa, xotirada 1,2,3,4 qiymatli baytlar ketma-ket joylashadi. Bu xolda xotirani nusxalashning MOVE standart protsedurasini islatishda muhim bo`lishi mumkin . Turbo Pascalda bitta o`zlashtirish operatori bilan bir massivning hamma elementlarini shu turdagi boshqa massivga uzatish mumkin, masalan, Var a,b:array[1..5] of single; begin ……….. a:=b; ……….        End.        Shu o`zlashtirishda keyin A massivning hamma beshta elementi B massiv elementlari qiymatlarini qabul qiladi. Lekin massivlar ustida munosabat amallar aniqlanmagan. Masalan, If a=b then… Deb yozish mumkin emas.Ikki massivni elementlari bo`yicha taqqoslash mumkin, Masalan: Var a,b: array [1..5] of  single; eg:Boolean; i:Byte; begin ……………… eg:=True; for i:=1 to 5 do if a [i]<>b[i] then eg:=false; if eg then ……………… End. Masalalar yechoshda bir , ikki va uch o`lchovli massivlardan foydalaniladi. Katta o`lchamdagi massivlar amalda oz uchraydi. Bir o`lchovli massivlar: umumiy holda bir olchovchi massivlarni tasvirlash quyidagi ko`rinishida beriladi; VAR    V:ARRAY[N..M] OF T Bunda, V-massiv nomi ,N  va  M-mos  ravishda massiv indeksining quyi va yuqori o`zgarish chegarasi ,T – massiv turi. Agar bir nechta massivlarning indeks o`zgarish chegarasi va turi bir xil bo`lsa , u holda bu massivlarni tasvirlashda birlashtirish mumkin , masalan, Var a,b,c:array[1..5] of  real;      Indekslar turi real va integer  dan tashqari boshqa oddiy turlar bo`lishi mumkin, chunki massivlar cheklangan elementlar soniodan iborat bo`ladi.      Ko`p hollarda  indekslar turi sifatida cheklangan turlardan foydalaniladi. Chunki cheklangan turlarning qiymatlar top’lami  tartiblangan va nomerlangan bo`ladi. Masalan: 50 ta elementdan iborat A massiv quyidagicha tasvirlanadi. VAR A:ARRAY[1..50]0F REAL; Indeks o`zgarishning chegarasini butun turli o`zgarmas bilan ham ifodalash mumkin.

Masalan: CONST MMAX=50; VAR A:ARRAY[1..MMAX] OF REAL; Massivlarni TYPE bo`limida yoki to`g’ridan-to`g’ri o`zgaruvchilar bo`limida tasvirlash mumkin. Masalan: a)  Type           Massiv=1..100           Vector=array[masiv] of real;           Мулешк2=array[-109..-1] of integer;           Var           a,b:vector;           c,d:vektor2; b)   var           a,b:array[1..100] of real;           c,darray[-109..-1] of integer. Sanab o`tilgan turlar ham indeks turi sifatida qo`llaniladi. Masalan: Tupe Oy=(yanvar,fevral,aprel,mart,iyun,iyul,avgust,sentyabr,oktyabr,noyabr,dekabr); Hafta=(dushanba,seshanbva,chorshanba,payshanba,juma,shanba,yakshanba); O`zgaruvchilar esa quyudagicha aniqlanadi: Var T,r:array[hafta] of real;     



Massiv elementlarini kiritish va chiqarish tsikl kiritish va chiqarish operatorlari orqali amalgam oshiriladi. Masalan: 50 ta elementdan iborat A massiv elementlari quyidagicha kiritiladi: For i:=1 to 50 do Real (A[i]); Masiv elementlarini chiqarish quyidagicha  amalgam oshiriladi : For i:=1 to 50 do Write (B[i]); Misol. X(x1,x2,…,x20)Massivning musbat elementlari yig’indisini hisoblash dasturini tuzing. Program summa (imput , output); Typen:=1..20 Var X:array[n] of real; i:integer; s:real; Begin S:=0; For i:=1 to 20 do Read(x[i]){massiv elementlarini kiritish} For i:=1 to20 do If x[i]>=0 then s:=s+x[i]; Writeln(“s=”;s); End.     Ikki o`lchovli massivlar: Paskal tilida bir o`lchovli massivlardan tashqari ko` o`lchovli massivlardan ham foydalaniladi. Ular ichida eng ko`p tarqalgani ikki o`lchovli massvlar, ya’ni matritsalar yoki to`g’ri burchakli jadvallardir. Ikki o`lchovli massivlar satr va ustun elementlaridan iborat, ularning elementlari ikki indeks orqali ifodalaniladi. Bu indekslarning biri shu elementning satr  bo`yicha o`rnini, ikkinchi indeks ustun bo`yicha o`rnini ko`rsatadi. Ikki o`lchovli massivlarni ifodalash ham bir massiv kabi amalgam oshiriladi. Umumiy holda ikki o`lchovli massiv quyidagicha tasvirlanadi: VAR C:ARRAY[N..M, K..L] OF T; Bunda, C-massiv nomi, N,K vaM,L lar mos ravishda massiv indeksining quyi va yuqori o`zgarish chegarasi, T-massiv  turi. Masalan; Type Matritsa=array[1..4,1..5] of real; Matritsa2=array [bush..yaksh] of array[Boolean] of-20..20 Var a,b:matritsa; C:matritsa2; var a,b :array[1..4,1..5] of real; c:array[bush..yaksh] of array[Boolean] of -20..20 Ikki o`lchovli massivlar elementlarini kiritish yoki chiqarish quyidagicha amalgam oshiriladi: Masalan: A matritsa (I,j=1…3) elementlari quyidagicha kiritiladi For i:=1 to3 do For j:=1to3do Read(A[i,j]); B matritsa (i,j=1…3) elementlari quyidagicha chiqariladi: For i:=1 to  3do For j:=1 to3 do Write (B[i,j]); Paskal dasturlash tilida massivlar bilan ishlash.         Umumiy nomga ega bo`lgan bir xil ko`rinishda  tartiblangan elementlar ketma-ketligi massiv deyiladi. Massiv elementlari uning komponentlari deb ataladi. Komponenta tipi – baza tipi hisoblanadi. Har bir tip o`zining indeksiga va nomiga ega,ular qavs ichiga keltiriladi.         Massiv elementlari ixtiyoriy tipda ,hattoki ma’lumotlar ham bo`lishi mumkin. Massiv elementlarining tiplari bazali deyiladi. Massiv elementlarining soni programma ishlash jarayonida o`nga ozlashtirib boriladi. Uning har bir alohida elementiga murojaat massiv elementlariga mos kelgan indekslari bo`yicha bo`ladi. Massiv indeksi  tushunchasi xuddi vektorlar  indeksi tushunchasi kabi bo`ladi Massivlarni e’lon qilish uchun Array of (massivda) so`z birligi ishlariladi. Yozilishi: TYPE =array[indeks tipi] of ; VAR :; Massivlarni tiplarni e’lon qilmasdan turib ham qo`llash mumkin. VAR <>identifikator,…:array[indeks tipi] of ; Misol; TYPE Klass=(k1,k2,k3,k4); Znak=array[1..255] of char; VAR M1: Znak;{Znak tipi tiplar bo`limida oldindan keltirilgan} M2: array[1..60] of integer;{M2 massivning yozilishi} M3: array[1..4] OF Klass; Mas: array[1..4] of integer;     Massivning baza tipi har qanday tip bo;lishi mumkinligi  sababli u boshqa massiv ham bo`lishi mumkin.Natijada,Ko`p o`chamli massiv hosil bo`ladi. Masalan. TYPE Vector=array[1..4] of integer; Massiv=array[1..4] of vetor; VAR Matr : Massiv; Xuddi shu strukturani boshqa turdagi yozuvni qo`llash natijasida ham hosil qilish mumkin.: VAR Matr: array[1..4,1..4] of integer; Massiv bilan ishlashda konstantalar ham ishlatilishi mumkin. CONST G1=4 ; G2=6; VAR MasY : array[1..G1,1..G2] of real; Massiv elementlari xotirada ketma-ket joylashadi. Indekslari kichkina bo`lgan elementlar  xotoraning pastki indekslarida saqlanadi.Ko`p elementli massivlarda eng o`ng tarafidagi indeks birinchi bo`lib o`sib boradi.Masalan ; Agarda A:array[1..5,1..5] of integer; Bo`lsa u holda massiv elementlari adreslarnig o`sishi bo`yicha joylashadi. A[1,1] A[1,2] ………. A[1,5] A[2,1] A[2,2]     Massivlarni bir butun holda ishlatilgan paytda massiv nomlaridagi indekslardagi kvadrat qavsga olinmay ishlatiladi.Massivlar kiritish operatorida “teng” yoki “teng emas” operatsiyalarida ishlatilishi mumkin      Bu amallarda ishlatiladigan massivlar bir xil tipdagi indeks va komponentalarda ega bo`lib strukturasi bir biriga o`xshash bo`lishi kerak. Masalan, A va B massivlar Var  A,B: array[1..20] of real; Ko`rinishida ifodalangan bo`lsa unda natija quyidagicha bo`ladi. A=B  True,agarda A massivning elementlarining qiymatlari V massiv elementlarining qiymatlariga mos ravishda teng bo`lsa. A<>V True, agarda A massiv elementining bron bir qiymati V massiv elementining qiymatlariga mos ravishda mos bo`lsa. A :=V   V  massiv elementining hamma qiymatlari A massiv elementlari tomonidan o`zlashtirilsa V massiv elementlarining qiymatlari o`zgarmasdan qoladi. Massiv e’lon qilingandan keyin uni elementlarini nomlari qavs ichida ko`rsatilgan holda ishlatish mumkin..Masalan:mas[2],vektorZ[10] massivning ikkinchi va uchinchi elementlariga murojaat etishni bildiradi. Ikki o`lchovli massivlar ikita indeks  n o`lchovlilarida esa n ta indeks ko`rsatiladi Masalan, MatrU[4,4] bu yozuv MatrU massivning 4 ta qator 4 ta ustundagi elementini bildiradi.Array tipidagi qiymatlar bilan ishlashda quyidagi holatlar bo`lishi mumkin: VAR A,D : array[1..4] of real; B:array[1..10,1..15] of integer; I,J: integer;K:integer;S:real; Bu operatsiyani FOR operatori yordamida ham bajarish mumkin: FOR I: =1TO 4 Do A[I]:=0; Ikki o`lchovli massivlarga indeks qo`yish uchun ichma-ich  joylashgan operatorlar ishlatiladi: FOR I:=1TO 10 DO FOR J:=1 TO 15 DO B[I,J]:=0; Paskal algoritmik tilida massiv elementlarini birdaniga kiritish-chiqarish imkoniyati yo`qligi sababli elementlar bittadan kiritiladi.Massiv elementiga qiymatni o`zlashtirish operatori yodamida beriladi,initsializatsiya  misolda ko`rsatilgandek ,lekin ko`p hollarda READ yoki READLN operatori yordamida o`zlashtiriladi va sikl operatoridan foydalanamiz. FOR I:= 1 TO 10 Do FOR J:=1 TO 15 DO READLN(D[I,J]); WRITELN operatori ishlatilishi sababli har bir qiymat yangi qatordan kiritiladi.Alohida elementlarni qiymatlarini ham kiritish mumkin.Bunda quyidagi operatorlardan foydalaniladi: READ (A[3]); READ (B[6,9]); Bu yerda A vektoriga 3ta element qiymati va V matritsaning 6- qator 9-ustuniga joylashgan elementlari qiymatlarini kiritadi. Ikkala qiymat ham ekranning bitta qatorida ,kursirning joriy pazitsiyasidan teriladi. Massiv elementlari qiymatini chiqarish ham xuddi shunday bajariladi, lekin bunda WRITE yoki WRITELN operatori qo`llaniladi. FOR I:=1 TO 4 DO Writeln (A[I]);      {A massiv elementlari qiymatini chiqarish} Yoki FOR I:=1 TO 10 DO FOR J:=1 TO 15 DO Writeln (V[I,J]);  {B massiv elementlari qiymatini chiqarish} 1-Misol: 5 ta elementdan hosil bo`lgan X massivning elementlarini kiriting. Har bir elementning kvadrati va ildizini ekranga chiqaring. Yechish: PROGRAM P7_2; VAR Sum,I:integer; Sr:real; X:array [1..5] of integer; Kor,Kv:array[1..5] of real; Begin Sum:=0; Writeln(‘5 ta butun qiymatlarni kiriting:’); FOR I:=1 TO 5 DO BEGIN Write(‘I-sonni kiriting: ‘); Readln (X[I]); Kor[I]:= sqrt(X[I]); Kv[I]:=sqr(X[I]); END; FOR I:=1 TO 5 DO Write(Kor[I]:8:2); Writeln; FOR I:=1 TO 5DO Write (Kv[I]:8:2); Readln; END. 2-misol: 3x3 massiv elementlarini kiriting va har bir qator yig’indisini hisoblang. Yechish: PROGRAMP7_8; VAR Xarray[1..3,1..3] of integer; Sum:array[1..3] of integer; I,J:integer; BEGIN Randomize; FOR I=1 TO 3 DO FOR J:=1 TO 3 DO BEGIN X[I,J]:=random(300); END; FOR I:=1 TO 3DO Sum[I]:=0 FOR I:=1 TO 3 DO FOR J:=1TO 3 DO Sum[I]:=Sum[I]+X[I,J]; FOR I:=1 TO 3 DO Write(Sum[I]:3); Readln; END. Massivdan nusxa olish deb, bitta massiv elementlari qiymatlarini boshqa massiv elementlarini o`zlashtirishiga aytiladi. Nusxa olish bitta o`zlashtirish operatori yordamida amalga oshirish mumkin,masalan  A:=D yoking FOR  operatori yordamida . FOR I: =1TO 4 DO  A[I]:=D[I];          Ikkala holda ham massiv elementlari qiymatlari o`zgarmaydi, A  massiv elementlarining qiymatlari D massiv elementlari qiymatiga teng bo`lib qoladi. Ko`rinib turibdiki ,ikkala massiv ham struturasi bo`yicha bir-biriga o`xshash. Ko`pchilik holatlarda massivda qaysidir elementlarni izlashga to`g’ri keladi. Masalan: A massivning nechta elementi nol qiymatga ega ekanligini bilish talab etiladi. Buning uchun qo`shimcha o`zgaruvchi K ni kiritamiz va FOR , IF operatorlarida foydalanamiz. K:=0; FOR I:=1 TO 4 DO IF  A[I]=0  THEN K:=K+1; Sikl bajarilgandan keyin K o`zgaruvchi A massivning nolga teng bo`lgan qiymatlarini o`z ichiga oladi. Massiv elementlari qiymatlarini joyini almashtirish massivning bazali tipiga o`xshash tipdagi yordamchi o`zgaruvchi yordamida amalga oshiriladi.Masalan, A massivning birinchi va beshinchi elementlari qiymatlarini joyini almashtiring. Vs:=A[5] A[5]:=A[1]; A[1]:=Vs; MASSIVLAR BILAN ISHLASHDA TASODIFIY SONLARDAN FOYDALANIB MISOLLAR YECHISH.

1-misol. Sonlarni ko`paytira olishni tekshirish. Var m1,m2,p: integer; {ko`paytuvchilarni va ko`paytma} jav: integer; {sinaluvchi javobi} begin Randomize; {tasodifiy sonlar generatorini initsializatsiyalash} m1:=rondom  (9)+1; {Rondom (a) funktsiyasi qiymati, y} m2:=Rondom (9)+1;{o dan a-1 gacha sohadagi son} p:=m1*m2; writeln (m1, ‘x’,m2, ‘necha bo`ladi?’) writeln (‘Javobini kiriting va ni bosing’); write (‘         ’); readln (jav); if p+jav then writeln (‘To`g`ri.’) else writeln (‘Siz adashdingiz.’, m1, ‘x’, m2,’p); readln; end. 2)-misol. Massiv elementlarini tasodifiy sonlar generatori orqali kiritish. Tasodifiy sonlar  uchun Turbo Paskal tilining operatorlari. random:real –Tasodifiy sonlar generator diapazoni  0...0.99. random(i:word):word – Tasodifiy sonlar generator diapazoni 0...1. randomize - изменение базы генератора случайных чисел. program mas1; var a: array [1..10] of integer; i: integer; begin randomize; for i:=1 to 10 do begin a[i]:=random(20); write('a(', i, ')=', a[i], ' ') end; readln; end. 3)-misol: 3x3 massiv elementlarini kiriting va har bir qator yig’indisini hisoblang . Yechilishi: PROGRAM P7_8; VAR X: array[1..3,1..3] of integer; Sum: array[1..3] of integer; I, J: integer; BEGIN Randomize;         FOR I:= 1 TO 3 DO FOR J:= 1 TO 3 DO BEGIN X[I,J]:=Random(300); {Massivni  tasodifiy qiymatlari bilan to`ldiramiz }            END; FOR I:= 1 TO 3 DO Sum[I]:= 0;   {yigindini 0 ga tenglashyiramiz} FOR I:= 1 TO 3 DO   FOR J:= 1 TO 3 DO Sum[I]:= Sum[I]+X[I,J]; FOR I:=1 TO 3 DO Write(Sum[I]:3); { Yig’indini chiqaramiz} Readln; END. 4)-misol Dastur ekranda 20 ta tasodifiy aylana chizadi. Program krugi; Uses Graph; Var x,y,r,z,i,grDriver,grMode:integer; Label 1; Begin grDriver:=detect; initGraph(grDriver,grMode,’d:/tp/bgi’); randomize; for i:=1 to 20 do begin z:=random(15); y:=random(480); r:=random(100); setcolor(z); 1:    x:=random(640); if x>340 then circle(x,y,r) else goto 1; end; readln; closeGraph; end.
Download 19,89 Kb.

Do'stlaringiz bilan baham:




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