М у н д а р и ж а кириш 6 I. Аналитик қисм 10


Лойихалашда С++ Builder дастурлаш тизимидан фойдаланиш


Download 1.56 Mb.
bet4/21
Sana25.07.2020
Hajmi1.56 Mb.
#124794
1   2   3   4   5   6   7   8   9   ...   21
Bog'liq
Ibrohimov A

2.3. Лойихалашда С++ Builder дастурлаш тизимидан фойдаланиш


C++ дастурлаш тили C тилига асосланган C эса ўз навбатида Б ва БCПЛ тилларидан келиб чиққан. БCПЛ 1967 йилда Мартин Ричардс томонидан оператион системаларни ёзиш учун мўлжалланган эди. Кен Томпсон ўзининг Б тилида БCПЛ нинг кўп ҳоссаларини Керриган Б да UNIX операцион системасининг биринчи версияларини ёзган.

БCПЛ ҳам, Б ҳам типсиз тил бўлган. Яъни ўгарувчиларнинг маълум бир типи бўлмаган - ҳар бир ўзгарувчи комъпютер ҳотирасида фақат бир байт ер эгаллаган. Ўзгарувчини қандай сифатда ишлатиш эса, яъни бутун сонми, касрли сонми ёки ҳарфдекми, дастурчи вазифаси бўлган.

C тилини Деннис Ритчие Б дан келтириб чиқарди ва уни 1972 йили илк бор Белл Лабораториес да, ДЭC ПДП-11 компютерида қўллади. C ўзидан олдинги Б ва БCПЛ тилларининг жуда кўп муҳим томонларини ўз ичига олиш билан бир қаторда ўзгарувчиларни типлаштирди ва бир қатор бошқа янгиликларни киритди. Бошланишда C асосан UNIX системаларида кенг тарқалди. Ҳозирда операцион системаларнинг асосий қисми C/C++ да ёзилмоқда. C машина арҳитектурасига боьланган тилдир. Лекин яҳши режалаштириш орқали дастурларни турли компютер платформаларида ишлайдиган қилса бўлади.

1983 йилда, C тили кенг тарқалганлиги сабабли, уни стандартлаш ҳаракати бошланди. Бунинг учун Америка Миллий Стандартлар Комитети (АНСИ) қошида Х3Ж11 теҳник комитет тузилди. Ва 1989 йилда ушбу стандарт қабул қилинди.

Стандартни дунё бўйича кенг тарқатиш мақсадида 1990 йилда АНСИ ва Дунё Стандартлар Ташкилоти (ИСО) ҳамкорликда C нинг АНСИ/ИСО 9899:1990 стандартини қабул қилишди.

Шу сабабли C да ёзилган дастурлар кам миқдордаги ўзгаришлар ёки умуман ўзгаришларсиз жуда кўп компютер платформаларида ишлайди.

C++ 1980 йиллар бошида Бжарне Строуструп томонидан C га асосланган тарзда тузилди. C++ жуда кўп қўшимчаларни ўз ичига олган, лекин энг асосийси у объектлар билан дастурлашга имкон беради.

 Дастурларни тез ва сифатли ёзиш ҳозирги кунда катта аҳамият касб этмоқда. Буни таъминлаш учун объектли дастурлаш ғояси илгари сурилди. Ҳудди 70-чи йиллар бошида структурали дастурлаш каби, программаларни ҳаётдаги жисмларни моделлаштирувчи объектлат орқали тузиш дастурлаш соҳасида инқилоб қилди.

C++ дан ташқари бошқа кўп объектли дастурлшга йўналтирилган тиллар пайдо бўлди. Шулардан энг кўзга ташланадигани Херох нинг Пало Алтода жойлашган илмий-қидирув марказида (ПАРC) тузилган Смаллталк дастурлаш тилидир.

Смаллталк да ҳамма нарса объектларга асосланган. C++ эса гибрид тилдир. Унда C га ўҳшаб структурали дастурлаш ёки янгича, объектлар билан дастурлаш мумкин. Янгича дейишимиз ҳам нисбийдир. Объектли дастурлаш фалсафаси пайдо бўлганига ҳам йигирма йилдан ошаяпти. C++ функсия ва объектларнинг жуда бой кутубҳонасига эга. Яъни C++ да дастурлашни ўрганиш икки қисмга бўлинади. Биринчиси бу C++ ни ўзини ўрганиш, иккинчиси эса C++ нинг стандарт кутубҳонасидаги тайёр объект/функсияларни қўллашни ўрганишдир.



С++ тилида ўзгармаслар, ўзгарувчилар ва уларнинг тоифалари.

Дастур бажарилиши жараёнида ўз қийматини ўзгартирмайдиган катталиклар ўзгармаслар, яъни константалар деб аталади. Дастур бажарилиши жараёнида ўз қийматини ўзгартира оладиган катталиклар эса ўзгарувчилар деб аталади. Ўзгарувчи номлари харфлар ёки харф ва сонлардан иборат бўлиши мумкин. С++ тилида ўзгарувчиларни белгилашда катта ва кичик харфларнинг фарқи бор. Масалан А ва а харфлари 2 хил ўзгарувчини билдиради.



С++ тилида қуйидаги константалар ишлатилади:

  • Бутун типли константалар: улар фақат бутун сондан иборат бўладилар. Масалан: 5; 76; -674 ва х.к.

  • Хақиқий типли константалар: улар бутун ва каср қисмлардан иборат бўладилар. Масалан: 8,1; -12,59 ва х.к. Хақиқий типли сонларнинг бу кўриниши оддий кўриниш дейилади. Жуда катта ёки жуда кичик хақиқий типли сонларни ёзишда даражали (экспоненционал) формада ёзиш қулай. Масалан: 7,204 1012 ёки 3,567 10-11 каби сонларни 7.204е+12 ва 3.567е-11 кўринишда ёзилади.

  • Символли константалар. Улар қаторига дастур бажарилиши давомида ўзгармайдиган барча символларни киритиш мумкин.

С++ тилида хар қандай ўзгарувчи ишлатилишидан олдин эълон қилиниши керак. Эълон қилиш дегани уларнинг тоифаларини аниқлаб қўйиш демакдир. С++ тилида қуйидаги тоифадаги ўзгарувчилар ишлатилади:

  • Бутун тоифали ўзгурувчилар: int. Масалан: int a,i,j ; Бу ерда дастурда ишлатилаётган a, i, j ўзгарувчиларининг тоифаси бутун эканлиги кўрсатилди. Бу тоифадаги ўзгарувчилар 2 байт жой эгаллайди. Уларнинг ўзгариш интервали: -32 768 дан +32 767 гача;

  • Бутун тоифали катта (узун) ўзгарувчилар: long. Масалан: long s, s2, aa34; Бу тоифадаги ўзгарувчилар 4 байт жой эгаллайди. Улар –2147483648 дан +2 147483647 оралиқдаги сонларни қабул қилиши мумкин.

  • Ишорасиз бутун ўзгарувчилар: unsigned short – 2 байт жой олади, ўзгариш интервали 0 дан 65535 гача; unsigned long – 4 байт жой олади, ўзгариш интервали: 0 дан 4 294 967 295 гача; unsigned char – 1 байт жой олади, ўзгариш чегараси 0 дан 255 гача.

  • Хақиқий тоифадаги ўзгарувчилар: float. Масалан: float a,b: Бу ерда дастурда ишлатилаётган a,b ўзгарувчиларининг тоифаси хақиқий эканлиги кўрсатилган. Бу тоифадаги ўзгарувчилар 4 байт жой эгаллайди ва қабул қилиш чегараси 10-38 дан 10+38 гача. Жуда катта ёки жуда кичик ўзгарувчиларни ифода этишда duble тоифаси ишлатилади. Улар учун 8 байт жой ажратилади.

  • Символли ўзгарувчилар учун char тоифаси ишлатилади. Улар 1 байт жой олади ва қабул қилиш чегараси –128 дан +127 гача. Символли ўзгарувчилар апострof (‘) ичида ёзилади ва ASCII кодларига мос равишда танланади.

  • Қатор типидаги ўзгарувчилар учун хам char тоифаси белгиланган. Улар хам 1 байт жой олади ва 0 дан 256 тагача бўлган символлар кетма-кетлигидан иборат бўлиши мумкин. +атор тоифасидаги ўзгарувчилар қўштирноқ (“) ичида ёзилади.

С++ тилида ўзгарувчиларни инициализация қилиш деган тушунча хам мавжуд. Инициализация қилиш дегани ўзгарувчини эълон қилиш баробарида унга бошлан\ич қийматини хам бериш демакдир. Масадан: int a=5, b, s=-100; - a,b,s ўзгарувчилари бутун тоифали эканлиги кўрсатилди ва a ўзгарувчисига 5 (a=5), s ўзгарувчисига эса –100 (s=-100) бошланғич қийматлар берилди.

С++ тилида маълумотларни киритиш ва чиқариш процедуралари.

Маълумки, инсондаги эшитиш ва кўриш органлари ўрнини Компютерда хотира бажаради, яъни хар қандай ўзгарувчининг қийматлари хотирага киритилади, барча амаллар хотирадаги ўзгарувчилар устида бажарилади ва натижа хам хотирада пайдо бўлади.

С++ тилида маълумотларни хотирага клавиатурадан киритиш процедурасининг умумий кўриниши қуйидагича:

scanf (“формат”, ўзгарувчи);

С++ тилида ўзгарувчилар учун қуйидаги форматлар ишлатилади:



% с

Символли ўзгарувчи учун;

% s

+атор типидаги ўзгарувчи учун

% d

Бутун типдаги ўзгарувчи учун

% ld

Бутун типдаги катта ўзгарувчилар учун (long)

% lu

Бутун типдаги ишорасиз катта сонлар учун

% u

Бутун типдаги ишорасиз сонлар учун (char, int ...)

% f

Хақиқий типдаги ўзгарувчилар учун (float)

% e

Экспоненционал формадаги хақиқий ўзгарувчилар учун

% g

Хақиқий типдаги натижани яхлитлаб, қисқа кўринишда олиш учун

% lf

Хақиқий типдаги катта ўзгарувчилар учун (long float)

% le

Экспоненционал формадаги хақиқий ўзгарувчилар (жуда катта ёки жуда кичик) учун

% lg

Хақиқий типдаги катта натижани яхлитлаб, қисқа кўринишда олиш учун

Ўзгарувчиларни 8 ва 16 лик саноқ системасидаги кўринишида хам киритиш мумкин. Улар учун алоҳида форматлар белгиланган.



% о

Бутун типдаги 8 с.с.даги ўзгарувчилар учун

% х

Бутун типдаги 16 с.с.даги ўзгарувчилар учун

% lo

Бутун типдаги катта 8 с.с.даги ўзгарувчилар учун

% lx

Бутун типдаги катта 16 с.с.даги ўзгарувчилар учун

С++ тилида натижани чиқариш учун қуйидаги процедура ишлатилади:

printf (“формат”,ўзгарувчи);

Форматда ўзгарувчи (ўзгарувчилар)нинг тоифалари уларнинг номлари билан кўрсатилиши мумкин. Тоифалар бўш жой (пробел) орқали ажратиб ёзилади. Умуман олганда форматда қатор ўзгарувчисининг ўзини хам ёзса бўлади. Масалан:

printf (“Натижалар”);

printf (“%f %d”, x, y);

printf (“x=%f y=%d”, x, y);

Агар формат охирига \n белгисини қўйсак, натижани чиқарганидан кейин курсор кейинги қаторга ўтади, акс ҳолда курсор турган ерида қолади. \n белгисини формат бошига хам қўйса бўлади. Маслан:

printf (“a=%d b=%ld \ n”, a, b);

printf (“\n йиғинди=%f”, s);

printf (“%s, жавоб тўғри \n\n”, im); - агар im=Рустам бўлса, натижа Рустам, жавоб тўғри кўринишида чиқади ва курсор 2 қатор пастга тушади.

С++ тилида ишлатиладиган асосий амаллар.


  1. Арифметик амаллар: +, -, *, /. Бутун сонни бутун сонга бўлиш натижаси хам бутун чиқади, шунинг учун бўлиш амалини ишлатганда сурат ёки махраждаги сонлардан бирини хақиқий тоифага ўтказиш керак (ёнига нуқта (.) қўйиб ёзилса бўлади), шунда натижа хақиқий чиқади. Масалан: 7/2=3. Уни 7/2. деб ёзилса, натижа 3,5 чиқади.

  2. Таққослаш амаллари: >, <, <=, >=, != (тенг эмас), = = (тенгми?). Таққослаш амаллари доим қавс ичида ёзилади.

  3. Мантиқий амаллар: && - мантиқий кўпайтириш (ва); || - мантиқий қўшиш (ёки) ва ! – инкор (эмас). Мантиқий амалларни ихтиёрий тоифадаги сонлар устида бажариш мумкин. Агар жавоб рост бўлса, натижа 1 га тенг чиқади; агар жавоб ёл\он бўлса натижа 0 чиқади. Умуман олганда 0 дан фарқли жавоб рост деб қабул қилинган. Масалан: (i < 50 && j=24); (s1 < s2 && (s3>5.5 || s4=20));

  4. Қиймат бериш амаллари:

  • юбориш амалси (=): а=5; в=2*с; x=y=z=1 ёки a= (b+c)+d деб ёзиш мумкин.

  • «Қабул қилдим ва алмаштирдим» деб номланадиган амаллар:

+= : a+=b ёзуви a=a+b ни англатади

-= : a-=b ёзуви a=a-b ни англатади

*= : a*=b ёзуви a=a*b ни англатади

/= : a/=b ёзуви a=a/b ни англатади



  • Инкремент (++) ва декремент (--) амаллари икки маънода ишлатилади:

    1. i++ - ўзгарувчининг қиймати унга мурожаат қилганимиздан кейин 1 га оширилади (i= i+1).

++i - ўзгарувчининг қиймати унга мурожаат қилишдан олдин 1 тага ошади;

    1. i-- - ўзгарувчининг қиймати унга мурожаат қилинганидан кейин 1тага камаяди (i= i-1);

--i - ўзгарувчининг қиймати унга мурожаат қилишдан олдин 1тага камаяди.


  1. С++ тилида стандарт функцияларнинг ёзилиши.

Математик ифодаси

С++ тилида ёзилиши

Математик ифодаси

С++ тилида ёзилиши

Sin x

sin (x)

logab

log(b) / log(a)

Cos x

cos(x)

xa

pow (x, a)

tg x

tan (x)



pow (x, 1/2.)

ex

exp(x)

| x |

abs(x)

Ln x

log(x)

Arctg x

atan (x)

С++ тилидаги дастурнинг таркиби.

С++ тилида тузиладиган дастур қуйидаги таркибдан (кетма-кетликдан) ташкил топади:



  1. Директивалар – функциялар кутубхонасини чақириш. Улар махсус INCLUDE каталогида жойлашган ва .h файллар деб номланади. С++ тилида масаланинг қўйилишига қараб керакли include лар чақирилади. Бу эса дастурнинг хотирада эгаллайдиган жойни минималлаштиради.

Масалан: маълумотларни киритиш-чиқариш прцедуралари учун:

# include тизимдан чақириш

# include “stdio.h” жорий каталогдан чақириш.

Махсус стандарт функциялардан фойдаланиш учун:

# include ёки # include “math.h”

Графикадан фойдаланиш учун:

# include ёки # include “graphics.h”

Директивалардан кейин ; (нуқта-вергул) белгиси қўйилмайди.



  1. Макролар (#define) – дастур бажарилиши давомида ўзгарувчи кўрсатилган қийматни қабул қилиши учун (const). Унда макронинг номи ва унинг қиймати кўрсатилади. Масалан:

# define pi 3.1415

# define x 556

# define s[100]

# define M x*x*x

Макролардан кейин хам ; (нуқта-вергул) белгиси қўйилмайди.


  1. main () функцияси. main – асосий (главный) деган маънони англатади. Бу функция “{“ белгисидан бошланади ва дастурнинг асосини ташкил этувчи ўзгарувчиларнинг тоифалари кўрсатилади. Дастур “}” белгиси билан якунланиши шарт. Агар дастурда қисм дастурлардан фойдаланилаётган бўлса, уларнинг номлари ва хақиқий параметрлар келтирилади. Сўнгра дастурнинг асосий буйруқлари ёзилади. Агар буйруқлар мураккаб структурага эга бўлса, улар алоҳида “{ }” белгилари орасига олинган бўлиши керак. Умуман олганда “{ }” белгилар сони тенг бўлиши шарт.

С++ тилида дастурнинг асоси бўлмиш буйруқлар кичик харфлар билан ёзилади. Буйруқлар ; (нуқта-вергул) белгиси билан якунланади. Буйруқлар 1 қатор қилиб кетма-кет ёзилиши хам мумкин.

Агар дастурда clrscr(); - процедураси ишлатилса, экран эски натижалардан тозаланиб, янгисини кўрсатади.



getch(); - процедураси эса ихтиёрий клавишани босилгунича экранда натижа кўриниб туриши учун ишлатилади. Уни ишлатилмаса натижани кўриш учун ALT+ F5 тугмаларини босиш керак бўлади.

Янги ахборот технологияси – бу Компютерларни ахборот жараёнида кенг иштирок этишлари, дўстона фойдаланиш интерфейсининг юқори даражаси, умумий ва муаммоли белгиланишдаги амалий дастурлар пакетларидан кенг фойдаланиш, ЭХМ нинг тармоқлари туфайли фойдаланувчиларни маълумотларнинг узоқлаштирилган базалари ва дастурларига киришларига асосланган технологиядир.

Янги ахборот технологиясининг (ЯАТ) асосини тақсимланган Компютер техникаси дустона дастурий таъминланиш ва ривожланган коммуникациялар киради. Бундай Компютерлаа ахборот унумдорлигини яратмайдилар. Балки инсонга унумдорликни ишлар хажмини кўпайтириш йули билан оширишга имкон беради.

ААТ ни мавжуд (машинада ёзиш, телефон буйича алоқа, диктофонга ёзишдан тубдан фарқи нафақат ахборотларнинг шаклларини ёки жойлашган жойини ўзгартириш жараёнларини автоматлаштиришдан, балки унинг мазмунини ўзгартиришдан иборатдир.

Бошқарув сохаси ходимлари фаолияти ҳозирги вақтда ривожланган техналогиялардан фойдаланишга қаратилган. Бошқарув вазифаларини ташкил қилиш ва амалга ошириш хам бошқарув техналогиясининг ўзини ва хам ахборотларни ишлаб чиқишнинг техник воситаларини тубдан ўзгартиришни талаб қилади, кейинчалик шахсий компъютерлар асосий ўринни эгаллайди. Улар борган сари кирувчи ахборотларни автоматик қайта ишлаш тизимларидан бошқарув ходимларининг тажрибасини жойлаш, энг самарали иқтисодий қарорларни тахлил қилиш, бахолаш ва танлаш воситаларига айланмоқда.

Бошқарувнинг марказлаштирилмаслигини кучайиш тенденсияси ўз орқасидан ахборотларни хисоблаш техникаси воситаларини марказлашмаган ҳолда қўллаш ва фойдаланувчиларнинг бевосита иш жойларини ташкил қилишни такомиллаштиришбилан тақсимланган ҳолда ишлаб чиқишни олиб келади.

АИЖ ни якуний фойдаланувчига маълумотларни ишлаб чиқиш ва аниқ предметли сохада бошқарув вазифаларини автоматлаштиришни таъминловчи ахборот дастурий техник ресурсларнинг мажмуаси сифатида белгилаш мумкин.

АИЖ ни яратиш ахборотларни жамлаш, сақлаш ва ишлаб чиқиш буйича асосий операциялар хисоблаш техникасига юкланишни, иқтисодчи эса қўлдаги операцияларни бир қисмини ва бошқарув қарорларини қабул қилишда ижодий ёндашишни талаб қилувчи операцияларни бажарилишини кўзда тутади. Шахсий техник фойдаланувчи томонидан ишлаб чиқариш, хўжалик фаолиятини , вазифани ечишни боришидан айрим предметларнинг миқдорини ўзгаришини назорат қилиш учун ААТ га дастлабки маълумотларни киритиш учун қўлланилади.

АИЖ бошқарув фаолиятини рационализациялаш ва интенфикациялаш учун вазифаларни баъзи бир гурухларини бажарилишини таъминлаш учун қурол сифатида яратилади. Ахборотли – маълумотли хизмат кўрсатиш АИЖ нинг энг оддий шакли бўлади. Бу вазифа у ёки бу даражада хар қандай АИЖ га хос бўлса хам, уни амалга оширишнинг хусусиятлари кўпроқ фойдаланувчининг котегориясига боғлиқ.

АИЖ аниқ предметли сохага муаммоли касбий йуналтиришга эга. Касбий АИЖ инсоннинг хисоблаш тизимлари билан мулоқотининг асосий қуроли бўлади, у автоном иш жойи, катта ЭХМ нинг ақлий терминлари , махаллий тармоқларда ишчи станциялари ролини ўйнайди. АИЖ очиқ архитектурага эга ва муаммовий соҳаларга осонликча мослашади.

АИЖ ни махаллийлаштириш у буйича келиб тушган ахборотларни дархол оператив ишлаб чиқишни амалга оширишга , ишлаб чиқиш натижаларини эса фойдаланувчининг талаби буйича кераклигича сақлашга имкон беради.

Бошқарув жараёнини амалга ошириш шароитларида АИЖ ни тадбиқ этишдан мақсад бошқарув вазифаларини интеграциялашувини кучайиши бўлади, хар қандай кўпроқ ёки камроқ ақлий иш жойи кўп вазифавий режимдаги ишни таъминланиши керак.

АИЖ маълумотларнинг тақсимланган базалари таркибида бажарувчиларнинг иш жойларида иқтисодий ахборотларни марказлашмаган бир вақтдаги ишлаб чиқишни бажаради. ШЭХМ ва МБ ларига чиқишлари, шунинг билан ШЭХМ ни жамоавий ишлаб чиқиш жараёнида хамкорликни фаолият юритишни таъминлашлари керак.

ШК лар базасида яратилган АИЖ – ташкилий бошқарув сохаси ходимлари учун автоматлаштирилган иш жойининг энг содда ва кенг таркалган вариантидир. Бундай АИЖ ишининг интерактив режимида аниқ ходимга ишнинг бутун сеансида якка хокимликни таъминлашнинг бутун турларини тақдим этувчи тизим сифатида кўриб чиқилади. Бунга АИЖ нинг бундай таркибий қисмини ички ахборотли таъминланиш сифатида лойихалаштиришга ёндашиш жавоб беради. Бунга кўра аниқ АИЖ нинг магнитли манбалардаги ахборот фонди АИЖ дан фойдаланувчининг якка ҳолдаги ихтиёрида бўлади. Фойдаланувчи ахборотларни қайта ўзгартириш буйича вазифавий мажбуриятларни ўзи бажаради.

Ечилаётган вазифалар ва предметли сохага кўра АИЖ нинг хар хил турлари белгиланиши мумкин. Аммо иқтисодчилар АИЖ гурухига кирувчи тизимлар энг катта гурух бўлади.

Ушбу гурух АИЖ таркибига хар хил турдаги корхоналар, муассасаларнинг турли туман хўжалик фаолиятини хисобга олиш, назорат ва тахлил қилиш вазифаларини ечишни таъминловчи дастурий воситалар киради. АИЖ диалогли татбирларни ривожланган компонентли ташкил қилишида фойдаланувчини АИЖ муҳитида ишлашга тайёргарликдаражасини хисобга олиш зарур.

Диалогли татбирлар таркибига қўшимча ахборотларга эга блокларни АИЖ ишининг таклиф қилинган режимлари бўйича киритиш зарур.

Хўжалик юритиш янги шароитларида бошқарувнинг иқтисодий усулларига алоҳида этибор берилади. Бунда алоқалар иерархияси билан бир қаторда корхоналар, ташкилотлар, етказиб берувчининг, истеъмолчилар ўртасидаги горизонтал, алоқалар катта ривожланиш касб этади. Бу шароитларда ишлаб чиқаришнинг самарадорлигини оширишга ўзаро боғланган ахборот техналогияларининг тармоғи билан қўллаб-қувватловчи тегишли ахборот окимларини ташкил қилиш билан эришилади. Янги ахборот технологиялари барча даражаларнинг барча соҳаларини қамраб олади.

Бошқарувда янги ахборот техналогияларидан фаол фойдаланиш хам горизонтал ва хам вертикал бўйича тармоққа бирлашган маълумотларни ишлаб чиқиш тизимларини ривожланишни кўзда тутади, бу тармоқларда АИЖ га алоҳида, рол ажратилади. Ишлаб чиқарилаётган ахборотларнинг хажмлари ва АИЖ бажарилаётган вазифаларнинг даражасига кўра ШЭХМ нинг хар хил моделларни танлаб олиниши мумкин. Хар бир даражадаги АИЖ фаолиятининг барча даражаларини акс эттириши керак.


Download 1.56 Mb.

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




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