"Paskal" dasturlash tili taqdimoti. Tilning matn muharriri. ". Paskal dasturlash asoslari Yuklab olish Paskal kompyuter fanlari taqdimoti

Slayd 1

Bogdanov Vladimir TIL PASKALINI PROGRAMMALASH Bepul taqdimotlar http://prezentacija.biz/

Slayd 3

Paskal tili Niklaus Virt tomonidan 1968-1969 yillarda ALGOL-68 til standartini ishlab chiqish qo'mitasida ishtirok etganidan keyin yaratilgan. Tilga frantsuz matematikasi, fizigi, yozuvchisi va faylasufi Blez Paskalning nomi berilgan, u dunyodagi ikkita sonni qo'shadigan birinchi mexanik mashinani yaratgan. Wirthning ushbu tilda birinchi nashr etilishi 1970 yilda boshlangan bo'lib, tilni joriy qilgan holda, muallif uni yaratish maqsadi - tuzilgan dasturlash va tuzilgan ma'lumotlar yordamida yaxshi dasturlash uslubini targ'ib qiluvchi kichik va samarali tilni barpo etish deb ko'rsatgan. Wirtning keyingi faoliyati Paskal asosida dasturlash tilini yaratishga qaratilgan bo'lib, shu bilan birga uning asosida professional dasturlash bo'yicha tizimli, yaxlit mashg'ulotlar o'tkazish qobiliyatini saqlab qoldi. Ushbu ishning natijasi Modula-2 tili.

Slayd 4

UCSD Paskal Asosiy maqola: UCSD Paskal 1978 yilda San-Diego shahridagi Kaliforniya Universitetida UCSD p-System ishlab chiqilgan bo'lib, u Paskaldan portativ p-kod, manba kodi muharriri, faylga Wirth kompilyatorining portini o'z ichiga olgan. tizim va hk., shuningdek Paskal tiliga modullar, o'zgaruvchan uzunlikdagi belgilar qatorlari, tarjima direktivalari, kiritish-chiqarishda xatoliklar bilan ishlash, fayllarga ism-sharif bilan murojaat qilish va boshqa ko'plab kengaytmalarni amalga oshirdi. Keyinchalik, Paskal tilining asosiy tatbiq etilishi ushbu lahjaga asoslangan edi.

Slayd 5

Object Pascal] Asosiy maqola: Object Pascal 1986 yilda Apple kompaniyasi Paskal tilining ob'ekt kengaytmasini ishlab chiqdi, natijada Object Pascal yaratildi. U Niklaus Virt bilan maslahatlashgan Larri Tesler guruhi tomonidan ishlab chiqilgan.

Slayd 6

1983 yilda xuddi shu nomdagi Paskal dasturini amalga oshirishga asoslangan Borlanddan Turbo Pascal integratsiyalashgan rivojlanish muhitining birinchi versiyasi paydo bo'ldi. 1989 yilda Turbo Paskal 5.5 versiyasida tilning ob'ekt kengaytmasi qo'shildi. Oxirgi versiyasi (7.0) Borland Paskal deb o'zgartirildi. Ob'ekt ob'ektlari Apple-ning Object Pascal-dan qarz oldi va Turbo Pascal 5.5-ning Object Pascal va Apple-ning Object Pascal-laridagi til farqlari ahamiyatsiz. Borland bilan deyarli bir vaqtda, Microsoft o'zining ob'ektga yo'naltirilgan tilining Paskal tilidagi versiyasini chiqardi Va] Paskalning ushbu versiyasi keng qabul qilinmadi. Borlanddan Paskal dasturini yanada rivojlantirish Borland-dan Ob'ekt Paskal variantini keltirib chiqardi, keyinchalik Delphi dasturlash muhitini ishlab chiqish jarayonida xuddi shu nomni oldi.

Slayd 7

Tilni rivojlantirishdagi muhim qadam bu Paskal l va GNU Paskal tillarini erkin tatbiq etishning paydo bo'lishi bo'lib, ular nafaqat tilning boshqa ko'plab shevalarining xususiyatlarini o'zlashtirgan, balki unda yozilgan dasturlarning nihoyatda keng portativligini ta'minlagan ( masalan, GNU Pascal 20 dan ortiq turli xil platformalarni qo'llab-quvvatlaydi, 10 dan ortiq turli xil operatsion tizimlar ostida Free Pascal tilning Turbo Paskal (to'liq moslik), Delphi va boshqalar kabi turli xil keng tarqalgan dialektlari bilan moslikning maxsus rejimlarini ta'minlaydi. Delphi 2003 yildan boshlab, Net platformasi uchun dastur yaratildi, ammo dasturchilar Delphi-ning oldingi versiyalaridan foydalanishda davom etishmoqda. Free Pascal, GNU Pascal va TMT Pascal-dagi tijorat ishlanmalari haqida kam ma'lumot mavjud. Bundan tashqari, Janubiy Federal Universitet PascalABC.NET - Paskal dasturlash tilini ishlab chiqdi, bu Delphi tilining aksariyat xususiyatlarini va shuningdek, o'zining bir qator kengaytmalarini o'z ichiga oladi. U Microsoft.NT platformasiga asoslangan bo'lib, deyarli barcha zamonaviy til imkoniyatlarini o'z ichiga oladi: sinflar, ishning haddan tashqari yuklanishi, interfeyslar, istisnolardan foydalanish, umumiy sinflar va odatiy ishlar, axlat yig'ish, lambda iboralari.

Slayd 8

Tilning o'ziga xos xususiyatlari - bu qat'iy yozish va dasturiy (protsessual) dasturiy vositalarning mavjudligi. Paskal bu kabi tillarning birinchisi edi. Wirtning so'zlariga ko'ra, til intizomli dasturlashni osonlashtirishi kerak, shuning uchun Paskal kuchli matn terish bilan birga mumkin bo'lgan sintaktik noaniqliklarni minimallashtiradi va muallif o'zi sintaksisni til bilan birinchi tanishishda ham intuitiv qilishga urindi.

Slayd 9

Shunga qaramay, dastlab tilda bir qator cheklovlar mavjud edi: o'zgaruvchan uzunlikdagi massivlarni funktsiyalarga o'tkazish imkonsizligi, dinamik xotira bilan ishlashning normal vositalarining etishmasligi, cheklangan kiritish-chiqarish kutubxonasi, boshqa tillarda yozilgan funktsiyalarni ulash uchun vositalarning etishmasligi. tillar, alohida kompilyatsiya vositalarining etishmasligi va hk. o'sha paytdagi Paskal tilidagi kamchiliklarni batafsil tahlil qilishni Brayan Kernigan "Paskal nima uchun mening sevimli dasturlash tilim emas" maqolasida olib borgan (ushbu maqola 1980-yillarning boshlarida, Modula-2 tili allaqachon mavjud bo'lganida, Paskalning avlodi, aksariyat illatlardan xalos bo'ldi, shuningdek Paskalning rivojlangan shevalarida). Paskalning ba'zi kamchiliklari 1982 yil ISO standartida tuzatildi, xususan, tilda ochiq massivlar paydo bo'ldi, bu esa har xil o'lchamdagi bir o'lchovli massivlarni qayta ishlashda bir xil protseduralardan foydalanishga imkon berdi.

Slayd 10

Biroq, tilning ko'plab kamchiliklari dasturlashni o'rgatishda ko'rinmaydi yoki hatto afzalliklarga aylanadi. Bundan tashqari, 1970-yillarning akademik muhitidagi asosiy dasturlash tili bilan taqqoslaganda (bu juda katta kamchiliklarga ega bo'lgan Fortran edi) Paskal oldinga siljish yo'lini ko'rsatdi. 1980-yillarga kelib Paskal ko'plab o'quv dasturlarining asosi bo'ldi, ba'zi hollarda uning asosida dasturlashtirilgan tillarni o'qitish bo'yicha ixtisoslashtirilgan dasturlar yaratildi, masalan, 1980-yillarning boshlarida SSSRda maktab o'quvchilariga informatika va kompyuter texnologiyalari asoslarini o'rgatish. , Andrey Ershov algol-Paskalga o'xshash "Ta'lim algoritmik tili" ni ishlab chiqdi.

Slayd 11

Tilning keng tarqalishi va rivojlanishini ta'minlagan Paskalning eng mashxur dasturi bu Borlanddan Turbo Paskal bo'lib, keyinchalik DOS (5.5-versiyadan boshlab) va Windows va keyinchalik Delphi-da, keyinchalik kengaytirilgan Delphi-da ob'ektga aylandi. til joriy etildi. DOS uchun Turbo Paskalda va Windows uchun Delphi-da ishlatiladigan Paskal dialektlari boshqa muvaffaqiyatli tijorat dasturlarining etishmasligi tufayli ommalashgan.

Slayd 12

1970 yilda Paskal tilidan foydalanish boshlangandan va nafaqat qo'shimchalar, balki sintaksis bo'yicha ham ajralib turadigan dasturlar paydo bo'lgandan so'ng, tilni standartlashtirish masalasi ko'tarildi. Til standarti Niklaus Virt tomonidan 1974 yilda Ketlin Jensen bilan hamkorlikda ishlab chiqilgan. Keyinchalik ISO va Amerika ANSI dan xalqaro standart qabul qilindi. Ayni paytda uchta tubdan farq qiluvchi standartlar mavjud: Uzaytirilmagan Paskal (asl), Kengaytirilgan Paskal (kengaytirilgan), Paskalga ob'ektga yo'naltirilgan kengaytmalar (ob'ektga yo'naltirilgan Paskal kengaytmasi).

Slayd 13

Slayd 14

Sintaksis va til konstruktsiyalari Paskal o'zining asl shaklida faqat protsessual tildir va ko'plab algolga o'xshash tuzilmalarni va if, then, else, while, for va hokazo kabi ajratilgan so'z tuzilmalarini o'z ichiga oladi. Ammo Paskalda juda ko'p sonli asl ALGOL-60da mavjud bo'lmagan ma'lumot va abstraktsiyalarni tuzish imkoniyatlari, masalan, ta'riflar, yozuvlar, ko'rsatgichlar, ro'yxatlar va to'plamlar. Ushbu inshootlar qisman meros qilib olingan yoki Nikula Wirth AlgolW (inglizcha) ruscha tomonidan yaratilgan Simula-67, Algol-64 tillaridan ilhomlangan. va Xare tomonidan taklif qilingan. Zamonaviy shevalarda (Free Pascal) operator va funktsiyalarni ortiqcha yuklash kabi operatsiyalar mavjud.

Slayd 15

dastur p; boshlanish tugaydi. Dastur hech narsa qilmaydi va bo'sh bayonotlar blokini o'z ichiga oladi. "Salom, dunyo!" Qatorini chiqaradigan dasturga misol:

Slayd 16

begin Writeln ("Salom, dunyo!"); (satrlarni chiqarish operatori) end.

Slayd 17

Slayd 18

Slayd 19

Slayd 20

Paskalda tamsayı turlarida (bayt, shortint, word, integer, longint va ularning diapazonlari) bitli operatsiyalarga ruxsat beriladi. Bitlar ustidagi mantiqiy amallar: Ikki tamsayıli operandning bitlarida siz avval ko'rib chiqilgan mantiqiy amallarni bajarishingiz mumkin: not, va, yoki, xor. Bitsel va mantiqiy amallarning farqi shundaki, bit (bitwise) operatsiyalar ularning (odatda) o'nlik qiymatida emas, balki operandlarning alohida bitlarida bajariladi. Ma'lumotlarning tartibli turlari (tartibli) tushunchasi yoritilgan bo'lib, ularga butun sonlar (imzolangan va imzosiz), mantiqiy (mantiqiy), belgilar (char), sanab o'tilgan turlar va diapazon turlari kiradi. Tartib tiplari ord funktsiyasi yordamida olinadigan butun son (kod) sifatida ko'rsatilgan. Tartib turlari bo'yicha bajariladigan barcha operatsiyalar ularning kodlari bilan bajariladi.

Slayd 21

Slayd 22

Tartib turlari uchun inc, dec, succ, pred, ord, taqqoslash operatsiyalari (\u003d\u003e)

Slayd 23

Slayd 24

Slayd 25

Paskal Jensen va Virtda satrlar qadoqlangan belgilar qatori sifatida ifodalangan; shuning uchun ular belgilangan uzunlikda bo'lgan va odatda shu uzunlikka bo'shliqlar bilan to'ldirilgan. Zamonaviy Paskalda satrlar bilan ishlash uchun o'rnatilgan satr turidan foydalaniladi, bu biriktirish (+) va taqqoslashni (\u003e \u003d

Slayd 26

[N] turi yoki 1970-1990 yillar shevalaridagi shunchaki satr char belgilar qatori qatori sifatida aniqlandi (n sukut bo'yicha UCSD Paskalda 80 va Turbo / Borland Paskalda 255 qiymatini oldi), kodi ushbu vakolatxonadagi nol belgi satr uzunligini belgilashga xizmat qiladi, shuning uchun mag'lubiyat maksimal hajmi 255 belgidan iborat bo'lishi mumkin. Odatiy bo'lib, Delphi va FreePascal AnsiString turini String sifatida ishlatadi, uning xotirasi dinamik ravishda ajratiladi va kompilyator tomonidan bo'shatiladi va joriy bajarilishdagi maksimal satr hajmi 2 gigabaytni tashkil qiladi. Bundan tashqari, Delphi va Free Pascal-da WideString turi UCS-2 kodlashda belgilarning 16-bitli vakolatlanishidan foydalanadigan qator sifatida ishlatilishi mumkin, shu bilan birga bitta baytli satrlardan ko'p baytli va aksincha standart til kutubxonasida.

Slayd 27

Mavjud turlaridan yangi turlarini aniqlash mumkin: turi (turlarni e'lon qilish bo'limi) x \u003d Integer; y \u003d x;

Slayd 28

Bundan tashqari, kompozit tiplar ibtidoiy turlardan tuzilishi mumkin: type (turlarni e'lon qilish bo'limi) a \u003d Integer Array; (massiv ta'rifi) b \u003d yozuv (yozuv ta'rifi) x: Integer; y: Char; oxiri; c \u003d a fayl; (fayl ta'rifi)

Slayd 29

Paskal tilidagi fayl turlari tipik, matnli va tipsiz fayllarga bo'linadi. Yuqoridagi misolda ko'rsatilgandek, Paskalda terilgan fayllar bir xil turdagi elementlarning ketma-ketligi. Har bir fayl uchun bufer uchun o'zgaruvchan ko'rsatgich mavjud, u f ^ bilan belgilanadi. Get (o'qish) va qo'yish (yozish) tartiblari ko'rsatkichni keyingi elementga o'tkazadi. O'qish (f, x) get (f) bilan bir xil bo'lishi uchun amalga oshiriladi; x: \u003d f ^. Shunga ko'ra, yozish (f, x) f ^ bilan bir xil bo'lgan tarzda amalga oshiriladi: \u003d x; qo'yish (f). Matnli fayllar char tipidagi faylning kengaytmasi sifatida tavsiflanadi va yozilgan fayllar bo'yicha standart operatsiyalarga qo'shimcha ravishda (belgini o'qish, yozish), ular konsolning kirish-chiqishiga o'xshash barcha ma'lumotlar turlarini faylga belgi kiritish-chiqarish imkoniyatini beradi.

Slayd 30

Faylsiz fayllar tipdagi fayl o'zgaruvchilari sifatida e'lon qilinadi. Ular yordamida siz bufer orqali belgilangan uzunlikdagi bir necha bayt bloklari uchun baytlarni kiritishsiz kiritish operatsiyalarini bajarishingiz mumkin, buning uchun maxsus protsedura blokirovka va blokirovka (UCSD kengaytmasi) ishlatiladi.

Slayd 31

Slayd 32

Slayd 33

Slayd 34

Slayd 35

Ko'rsatkichlar Paskal ko'rsatgichlardan foydalanishni qo'llab-quvvatlaydi (yozilgan ^ tip va tiplanmagan ko'rsatkichlar): a \u003d ^ b turi; b \u003d yozuv x: Integer; y: Char; z: a; oxiri; var pointer_to_b: a;

Slayd 36

Bu erda pointer_to_b o'zgaruvchisi yozuv bo'lgan b tipidagi ma'lumotlar ko'rsatkichidir. Kiritilgan ko'rsatgich turi unga tegishli bo'lgan turdagi deklaratsiyadan oldin ko'rsatilishi mumkin. Bu har qanday narsani ishlatishdan oldin e'lon qilinishi kerak bo'lgan qoidadan istisno. Ushbu istisno joriy etilishi ma'lumotlar tuzilmalarining rekursiv ta'riflarini, shu jumladan chiziqli ro'yxatlar, to'plamlar va navbatlarni, shu jumladan ushbu yozuvning tavsifidagi yozuvga ko'rsatgichni tashkil etishga imkon berdi (shuningdek qarang: null ko'rsatkich - nol). Yo'naltirilgan operatsiya terilgan ko'rsatgich uchun aniqlanadi (uning sintaksisi ^ ko'rsatkichidir). Yangi yozuv yaratish va undagi x va y maydonlariga 10 qiymatini va A belgisini berish uchun sizga quyidagi operatorlar kerak:

Slayd 37

yangi (pointer_to_b); (ko'rsatgichga xotira ajratish) pointer_to_b ^ .x: \u003d 10; (ko'rsatgichni ajratib ko'rsatish va yozuv maydoniga kirish) pointer_to_b ^ .y: \u003d "A"; pointer_to_b ^ .z: \u003d nil; ... tashlash (pointer_to_b); (ko'rsatgich ostidan xotirani bo'shatish)

Slayd 38

Yozuvlar va ob'ektlar maydonlariga murojaat qilish uchun, misolda ko'rsatilgandek with operatoridan foydalanishingiz mumkin: new (pointer_to_b); pointer_to_b ^ bilan boshlash x: \u003d 10; y: \u003d "A"; z: \u003d nol oxiri; ... tashlash (pointer_to_b);

Slayd 39

Protsessual tip Paskal Jensen va Wirtning asl tilida protsessual tip faqat rasmiy parametrni tavsiflashda ishlatilgan. TPda allaqachon to'liq protsessual tur mavjud edi. Tur deklaratsiyasida protsedura yoki funktsiya sarlavhasi mavjud (ismsiz), odatda subroutine interfeysini tavsiflaydi. Ushbu turdagi qiymat subroutine uchun ko'rsatgichni tip deklaratsiyasida tasvirlanganga mos keladigan sarlavha bilan o'z ichiga oladi. O'zgaruvchan identifikator yordamida tegishli protsedura yoki funktsiyani chaqirish mumkin.

Slayd 40

Paskal - bu tuzilgan dasturlash tili, ya'ni dastur GOTO buyrug'idan foydalanmasdan ketma-ket, ideal tarzda bajariladigan individual standart bayonotlardan iborat.

Slayd 41

While, for, if, case ifodalarida blok bajariladigan ibora sifatida ishlatilishi mumkin. Oddiy operator yoki blok bo'lgan bunday qurilish murakkab operator deb ataladi. Turbo Paskalda kompilyatsiya jarayonini boshqarish uchun izohlarga joylashtirilgan va kompilyatorning ishlash rejimlarini almashtirishga imkon beruvchi direktivalar mavjud - masalan, kiritish-chiqarish operatsiyalari tekshirilishini yoqish va o'chirib qo'yish, to'ldirish:

Slayd 42

Paskal tilida pastki dasturlar protsedura va funktsiyalarga bo'linadi: Sintaktik ravishda protseduralar va funktsiyalar sarlavhadan iborat (protsedura yoki funktsiya kalit so'zini o'z ichiga olgan ism, keyin qavs ichida berilgan parametrlarning tavsifi, funktsiyalar uchun nuqta bilan ajratilgan qaytish turi, va protseduralar uchun vergul), sarlavhadan so'ng tanasi, so'ngra belgisi;

Slayd 43

Protsedura tanasi, xuddi dastur singari, protseduralar va funktsiyalarning tavsiflarini o'z ichiga olishi mumkin. Shunday qilib, protseduralar va funktsiyalar bir-birlariga kerakli darajada chuqur joylashishi mumkin, shu bilan birga dasturning tanasi zanjirning eng yuqori qismidir. Bundan tashqari, uning ichida protsedura / funktsiya tavsifidan oldin joylashgan o'zgaruvchilarni, turlarini, doimiylarini, tashqi tanasini (protsedura, funktsiya, dastur) tavsiflovchi bo'limlarning tarkibi mavjud. Shuningdek, protseduradagi aksar lahjalarda siz tashqi protsedura parametrlariga murojaat qilishingiz mumkin. Tananing o'rniga protsedura / funktsiya sarlavhasidan so'ng oldinga yo'naltirilgan kalit so'zni qo'yish mumkin, agar bu protsedura / funktsiya tavsifi chaqirilgandan so'ng dasturda joylashgan bo'lsa va dasturni bitta o'tish joyida kompilyatsiya qilish qobiliyati bilan bog'liq bo'lsa, Paskalda qo'llab-quvvatlanadi. Protseduralar funktsiyalardan farq qiladi, chunki funktsiyalar qiymatni qaytaradi, ammo protseduralar bunday emas.

Slayd 44

Zamonaviy shaklda ulangan modullar paydo bo'lishidan oldin, ba'zi Paskal dasturlari C tilidagi #include mexanizmiga o'xshash sarlavha fayllarini kiritish mexanizmi tufayli modullikni qo'llab-quvvatladi: masalan, soxta sharh sifatida formatlangan maxsus ko'rsatma yordamida , ($ INCLUDE "fayl"), ko'rsatilgan faylning tarkibi to'g'ridan-to'g'ri asl nusxasida dastur matniga kiritilgan. Shunday qilib, tahrir qilishni osonlashtirish uchun dastur kodini ko'plab qismlarga bo'lish mumkin edi, ammo kompilyatsiya qilinishidan oldin ular avtomatik ravishda bitta dastur fayliga birlashtirilib, oxir-oqibat kompilyator tomonidan qayta ishlandi. Ushbu modullikni amalga oshirish ibtidoiy va ko'plab aniq kamchiliklarga ega, shuning uchun u tezda almashtirildi. Paskal tilining zamonaviy dasturlari (UCSD Paskaldan boshlab) modullarni qo'llab-quvvatlaydi. Dastur modullari ikki xil bo'lishi mumkin: odatdagidek dastur kalit so'zidan boshlanadigan va asosiy qismida dastur xotiraga yuklanganidan so'ng ishlaydigan kodni o'z ichiga olgan asosiy modul va turlar, doimiylar, boshqa modullarda, shu jumladan asosiy modulda foydalanish uchun mo'ljallangan o'zgaruvchilar, protseduralar va funktsiyalar.

Slayd 45

Paskal tilidagi plaginning umumiy tuzilishi quyidagicha: birlik UnitName1; interfeys ... amalga oshirish ... boshlash (yo'q bo'lishi mumkin - agar ishga tushirish bayonotlari joylashtirilishi kerak bo'lsa ishlatilgan) ... end.

Slayd 46

Boshqa variant ham mumkin: UnitName2 birligi; interfeys ... amalga oshirish ... ishga tushirish ... yakunlash .... tugatish.

Slayd 47

Asosiy dasturdan farqli o'laroq, modul fayli UNIT kalit so'zidan boshlanadi, so'ngra modul nomi va vergul. Zamonaviy dasturlar odatda modul nomini modulni o'z ichiga olgan manba fayl nomi bilan bir xil bo'lishini talab qiladi. Modul uchta bo'limni o'z ichiga oladi: interfeys qismi, amalga oshirish qismi va modul tanasi.

Slayd 48

Interfeys bo'limi birinchi bo'lib INTERFACE kalit so'zidan boshlanadi va modulning amalga oshirish bo'limi yoki tanasi boshlanadigan nuqtasida tugaydi. Interfeys bo'limi modul tashqarisida bo'lishi mumkin bo'lgan ob'ektlarni (turlari, doimiylari, o'zgaruvchilar, protseduralar va funktsiyalar - ular uchun sarlavhalar joylashtirilgan) e'lon qiladi. Bunday holda, turlarni qisman e'lon qilishga ruxsat beriladi: ular faqat bitta nom bilan tuzilmani ko'rsatmasdan e'lon qilinishi mumkin. Ushbu turdagi tashqi dasturda foydalanilganda, ushbu turdagi o'zgaruvchilar va parametrlarni e'lon qilishga, qiymatlarni belgilashga ruxsat beriladi, ammo uni amalga oshirish tafsilotlariga kirish imkoni yo'q. Interfeys bo'limidagi protseduralar va funktsiyalar oldinga - parametrlarga ega sarlavha sifatida e'lon qilinadi, lekin tanasiz. Modulning interfeys bo'limining tarkibi shuki, ushbu modul yordamida kod yaratish etarli bo'ladi. Interfeys qismida e'lon qilingan o'zgaruvchilar global hisoblanadi, ya'ni ular bitta nusxada mavjud va ushbu modul yordamida dasturning barcha qismlarida mavjud.

Slayd 49

Amalga oshirish bo'limi interfeys bo'limiga amal qiladi va IMPLEMENTATION kalit so'zidan boshlanadi. U interfeys qismida e'lon qilingan protsedura va funktsiyalarning tavsiflarini, shuningdek interfeys protseduralari va funktsiyalarini amalga oshirish uchun zarur bo'lgan turlar, konstantalar, o'zgaruvchilar, protsedura va funktsiyalarning tavsiflarini o'z ichiga oladi. Interfeys qismida e'lon qilingan protsedura yoki funktsiyalarning tavsifi deklaratsiyadagi kabi to'liq nomga ega bo'lishi kerak. Tana ushbu modulning interfeys qismida ham, amalga oshirish qismida ham e'lon qilingan boshqa protseduralari va funktsiyalaridan foydalanishi mumkin. Amalga oshirish qismida e'lon qilingan o'zgaruvchilar, aslida, global (ya'ni, butun dastur uchun har bir bunday o'zgaruvchining bitta nusxasi mavjud), ammo ularga faqat ushbu modulning amalga oshirish qismida tasvirlangan protsedura va funktsiyalar orqali kirish mumkin, shuningdek, uning tanasidan. Agar interfeys qismida qisqartirilgan turdagi deklaratsiyalar mavjud bo'lsa, unda ushbu turlar amalga oshirish qismida to'liq tavsiflangan bo'lishi kerak.

Slayd 50

Modulning tanasi yuqori darajadagi BEGIN kalit so'zidan boshlanadi. Tanada modul yuklanganda bir marta bajariladigan dastur kodi mavjud. Tanani ishga tushirish, modul o'zgaruvchilariga dastlabki qiymatlarni berish, uning ishlashi uchun resurslarni ajratish va hk. Modul tanasi etishmayotgan bo'lishi mumkin. Bir qator Paskal dasturlarida, masalan, Delphi-da, modul tanasi o'rniga ikkita bo'lim (shuningdek, ixtiyoriy) ishlatilishi mumkin - INITIALIZATION va FINALIZATION. Ular modulning oxirida, tegishli kalit so'zdan keyin joylashgan. Birinchisi, ishga tushirish qismida modul yuklanganda bajarilishi kerak bo'lgan kod, ikkinchisida yakunlash qismida modul tushirilganda bajariladigan kod mavjud. Yakunlash bo'limi ishga tushirishga teskari harakatlarni amalga oshirishi mumkin - ob'ektlarni xotiradan o'chirish, fayllarni yopish, ajratilgan resurslarni chiqarish. Modul tugmachali tugmachali END so'zi bilan tugaydi.

Slayd 51

Moduldan foydalanish uchun asosiy dastur yoki boshqa modul ushbu modulni import qilishi kerak, ya'ni undan foydalanish to'g'risida deklaratsiyani o'z ichiga oladi. Ushbu deklaratsiya USES kalit so'zi va keyin ulanishni xohlagan modullarning vergul bilan ajratilgan nomlari bo'lgan modulga ulanish bayonoti yordamida amalga oshiriladi. Ulanish ko'rsatmasi to'g'ridan-to'g'ri dastur sarlavhasidan keyin yoki agar modulda ulanish o'rnatilsa, INTERFACE kalit so'zidan keyin bajarilishi kerak.

Slayd 52

Interfeys bo'limiga ulangan modullardan butun modulda foydalanish mumkin - amalga oshirish qismida ham, tanada ham. Ammo dastur bo'limida interfeys bo'limida bo'lmagan, ammo amalga oshirish bo'limiga kerak bo'lgan plaginlarning nomlari mavjud bo'lgan o'z ulanish bayonoti bo'lishi mumkin (u IMPLEMENTATION so'zidan keyin). Amalga oshirish bo'limi uchun alohida ulanish ro'yxatidan foydalanishning sabablaridan biri bu ikki yoki undan ortiq modulning bir-biridan foydalanishi. Bunday modullardan foydalanish to'g'risidagi deklaratsiyalarda dumaloq havolalardan qochish uchun ulardan kamida bittasi ikkinchisini amalga oshirish bo'limiga kiritishi kerak.

Slayd 53

Ushbu modullar bog'langan dasturda modullarning interfeys bo'limlarida e'lon qilingan har qanday ob'ektlardan foydalanish mumkin. Plaginlardan import qilingan ob'ektlarning nomlari bir xil bo'lib qoladi va to'g'ridan-to'g'ri ishlatilishi mumkin. Agar ikkita yoki undan ortiq ulangan modullarda bir xil nomlangan ob'ektlar mavjud bo'lsa va kompilyator ularni ajrata olmasa, unda bunday ob'ektdan foydalanishda kompilyatsiya xatosi paydo bo'ladi - noaniq ism. Bunday holda, dasturchi ismning malakasini ishlatishi kerak - "." Formatdagi ismini ko'rsating.

Slayd 54

Agar dasturda bir xil nomdagi ikki xil moduldan foydalanish zarurati tug'ilsa, muammolar paydo bo'lishi mumkin. Agar modullar faqat kompilyatsiya qilingan shaklda mavjud bo'lsa (ya'ni ularning nomlarini o'zgartirish mumkin bo'lmasa), ularni bir vaqtning o'zida import qilish imkonsiz bo'lib chiqadi. Til darajasida bunday to'qnashuv uchun standart echim yo'q, lekin aniq kompilyatorlar uning atrofida ishlashning u yoki bu usulini taklif qilishlari mumkin, xususan, import qilingan modullarga taxalluslar berish va qaysi fayldan qaysi modulni olish kerakligini to'g'ridan-to'g'ri belgilash.

Slayd 55

Modullar alohida kompilyatsiya qilish uchun mo'ljallangan - kompilyator ularni ishlatadigan modulni kompilyatsiya qilish uchun import qilingan modullarni kompilyatsiya qilishi shart emas. Biroq, modulni to'g'ri kompilyatsiya qilish uchun kompilyator o'zi foydalanadigan barcha modullarning interfeys bo'limiga kirish huquqiga ega bo'lishi kerak. Bunday kirishni tashkil qilishda ikki xil, ba'zan birlashtirilgan yondashuvlar mavjud. Modullar interfeys bo'limida e'lon qilingan ob'ektlar haqida batafsil ma'lumot saqlanadigan maxsus formatdagi (har bir kompilyatorning o'zi bor) ikkilik fayllarga yig'iladi, ular tarkibida modulni kompilyatsiya qilish jarayonida yaratilgan til ob'ekti ham bo'lishi mumkin, ammo foydalanadi faqat modulning interfeys qismi. Agar kutubxona moduli kompilyatsiya qilingan shaklda (to'liq manba matnlarisiz) taqdim etilsa, u holda faqat interfeys qismini o'z ichiga olgan modulning manba kodining qisqartirilgan fayli ikkilik faylga qo'shiladi. Bu kompilyator uchun ishlatilayotgan modullardan qilingan qo'ng'iroqlarni to'g'ri ishlashi uchun etarli bo'ladi va dasturni yaratish bosqichida bog'lovchi shunchaki dasturga ikkilik faylni kiritadi.

Slayd 56

Modullarni yuklash va tushirish Modulning normal ishlashi uchun uni ishlatishdan oldin ba'zi bir amallarni bajarishingiz kerak bo'lishi mumkin: o'zgaruvchilarni ishga tushirish, kerakli fayllarni ochish, xotira yoki boshqa resurslarni ajratish. Bularning barchasi modul tanasida yoki boshlash bo'limida amalga oshirilishi mumkin. Boshlashning teskari harakatlari yakunlash qismida amalga oshiriladi.

Slayd 57

Birliklarni ishga tushirish va yakunlash tartibi bilvosita foydalanishga oid bandda e'lon qilish tartibi bilan belgilanadi, lekin statik ravishda tuzilgan dasturlar uchun (bu erda birlik yoki asosiy dastur bilan bitta bajariladigan faylga yig'iladi yoki alohida dinamik kutubxonada bo'ladi, lekin dastlabki yuklash bosqichida yuklangan), kompilyator har doim ushbu modifikatsiyani birinchi marta ishlatishdan oldin ishga tushirilishini kafolatlaydi. Yakunlash, dastur tugagandan so'ng, asosiy modul tugagandan so'ng amalga oshiriladi, shunda ishlatilgan modullar ulardan foydalanganlarga nisbatan kechroq yakunlanadi.

Slayd 58

Dasturchining o'zi tomonidan boshqariladigan modullarni dinamik ravishda yuklashda initsializatorlar yuk paytida bajariladi, ya'ni modulni yuklash buyrug'i boshqaruvni qaytaradigan vaqtda uning initsializatori allaqachon bajarilgan. Yakuniylashtiruvchi tushirgandan so'ng, odatda modulni tushirish buyrug'i bajarilganda bajariladi. Agar bu buyruq chaqirilmasa, dinamik ravishda yuklangan modullar boshqalar singari yakunlanadi - dastur oxirida.

Slayd 59

Ob'ektga yo'naltirilgan dasturlash (OOP) - bu murakkab dasturiy ta'minotni yaratish texnologiyasi, bu dasturni ob'ektlar to'plami sifatida namoyish etishga asoslangan bo'lib, ularning har biri ma'lum bir sinfning misoli bo'lib, sinflar xususiyatlarning merosxo'rligi bilan iyerarxiyani tashkil qiladi.

Slayd 60

OOPning asosiy afzalligi - bu modullararo qo'ng'iroqlar sonining kamayishi va modullar o'rtasida uzatiladigan ma'lumotlarning kamayishi. Bunga ma'lumotlarning to'liq lokalizatsiyasi va ularni qayta ishlash tartiblari bilan birlashtirish orqali erishiladi.

Slayd 61

OOP-ning asosiy kamchiliklari - bu dasturiy ta'minot tizimini yanada murakkab tashkil etilishi tufayli ishlashning biroz pasayishi, shuningdek, qoida tariqasida, ikkilik kod hajmining sezilarli darajada oshishi (ayniqsa kichik dasturlarda standart sinf kutubxonalaridan foydalanganda). aksariyat zamonaviy kompilyatorlar va bog'lovchilar foydalanilmayotgan sinflar, virtual usullar va OOPning boshqa elementlari bilan bog'liq bo'lgan barcha kodlarni aniqlay olmaydi va olib tashlay olmaydi.

Slayd 62

Object Pascal-da, ma'lumotlar maydonlaridan tashqari protsedura va funktsiyalarning sarlavhalarini o'z ichiga olishi mumkin bo'lgan yozuvga o'xshash ob'ekt turi yordamida sinflar aniqlanadi (ular metodlar deb ataladi). Ta'riflangan usullarning nomlari nuqta bilan ajratilgan sinf nomiga amal qiladi.

Slayd 63

Konstruktor va destruktor oddiy protseduralar sifatida ko'rsatilgan, ammo protsedura identifikatori o'rniga konstruktor va destruktor kalit so'zlari ko'rsatilgan. Shunga ko'ra, C ++ kabi tillardan farqli o'laroq, ularning nomi sinf nomidan farq qiladi, bir nechta destruktorlar bo'lishi mumkin va ular parametrlarga ega bo'lishi mumkin (amalda bu xususiyat kamdan kam qo'llaniladi, odatda sinfda bitta destruktor mavjud Ota-ona sinfining virtual destruktorini bekor qiladigan Destroy).

Slayd 64

Yagona meros, sinf polimorfizmi va virtual usullar mexanizmi qo'llab-quvvatlanadi (sinf usuli sarlavhasidan keyin virtual so'z). Dinamik usullar ham mavjud (TPda ular virtual so'zidan keyin butun sonni qo'shish bilan tavsiflanadi va asosan xabarlarni qayta ishlash uchun ishlatiladi; Delphi va FreePascal-da bu maqsad uchun xabar so'zi, yaratish uchun dinamik so'z ishlatiladi oddiy dinamik usullar), bu VMT avlodida ajdodlarning dinamik usullarining takrorlanishining yo'qligi sababli kamroq xotiradan foydalanish va kamroq qo'ng'iroq tezligi bilan ajralib turadi (ammo FreePascal virtual va dinamik usullarni ajratmaydi). Delphi, FPC operatsiyani haddan tashqari yuklashni, mavhum usullarni, xususiy, himoyalangan, ommaviy, e'lon qilingan direktivalarni amalga oshiradi (sukut bo'yicha sinf a'zolari jamoat):

Slayd 65

Delphi dialektida sinflar sinf so'zi yordamida ham qurilishi mumkin (va ob'ekt sinflari bilan o'zaro merosga yo'l qo'yilmaydi) va interfeyslar kiritiladi - barcha usullar mavhum bo'lib, ma'lumotlar maydonlarini o'z ichiga olmaydi. Barcha sinflar (sinf yordamida yaratilgan) TObject-dan meros bo'lib, barcha interfeyslar IUnknown-dan kelib chiqadi. Sinf bilan yaratilgan sinflar bir nechta interfeyslarni amalga oshirishi mumkin.

Slayd 66

Delphida Microsoft kompaniyasining COM texnologiyasini qo'llab-quvvatlovchi interfeyslar joriy etildi. Sinflar (Class), oddiy sinflardan (Object) farqli o'laroq, aniq xotira ajratish / bo'shatish kerak emas, ular uchun xotira Create nomli konstruktor tomonidan dinamik ravishda ajratiladi, sinf nomi bilan chaqiriladi va Destroy nomli destruktor chaqirilganda bo'shatiladi ( ularning boshqa ismlari ham bo'lishi mumkin) ... Bunday sinfning o'zgaruvchisi, ob'ekt sinfidan farqli o'laroq, sinfning bir nusxasi manzilini xotirada saqlaydi, nol qiymati bo'sh ma'lumotnomani ko'rsatish uchun ishlatiladi, shuning uchun TObject-da ob'ektni bo'shatish uchun maxsus bepul usul aniqlanadi, bu nol uchun ma'lumotni tekshiradi va virtual destruktorni Destroy deb ataydi. Bunday sinflardan foydalanadigan kod quyidagicha ko'rinadi:

Slayd 67

Dars mavzusi: "Dasturlarda tsikl (takrorlash)"

1) chiziqli, tarmoqlangan dasturlarni tuzish bo'yicha bilimlarni ko'rib chiqish va mustahkamlash; 2) Siklik operator yordamida dasturlar tuzishni o'rganing - FOR i: \u003d 1 TO n DO Begin operatorlari (tsikl tanasi) oxiri; 3) Oddiy masalalarni echishda operatorlardan foydalaning. Darsning maqsadi:

Yo'qolganlarni joylashtiring: Program Sql; Var A, B, C, D, XI, X2: ??? ; Begin Writeln ("Kvadrat tenglamaning koeffitsientlarini kiriting"); Readln (???); D: \u003d B * B-4 * A * C; Agar D

Guruhga savollar: 1) Tarmoqlanuvchi va chiziqli dasturlardan farqi nimada? 2) dasturlarda tanlash uchun qanday operatorlardan foydalaniladi? 3) start ... .end - bu nima? Dasturda foydalanish qoidalari qanday?

1) kiritish-chiqarish operatorlari; 2) Tanlov operatorlari; 3) a: \u003d a + 3 - nima bo'ladi? 4) ma'lumotlar turlari ro'yxati; 5) keraksiz AND, OR, END, NOT, IF ni olib tashlang; 6); - bu nima degani? 7) Dasturning oxiri qanday ko'rsatiladi? 8) Arifmetik amallarni sanab o'ting. 9) 120 mod 65 \u003d nima? 10) Tsikl operatorlari.

Shunga mos ravishda joylashtiring: 1. O'qing 2. Oxiri 3. Boshlang 4. 5-sonli son .; 6. Agar .. Keyin 7 .: \u003d 8. Kiriting 9. Oxiri 10. Butun sonlar 11. Tayinlang 12. Keyingi harakat 13. Boshlang 14. If..That

Natijada 3 dan kammi? a: \u003d 7 b: \u003d - 10 a: \u003d a * (- 7) b: \u003d 159 a: \u003d b + a

Dasturda 5 ta xatoni toping: Program krug; VAR Pi, r, S: haqiqiy; Pi: \u003d 3.14, WRITELN ('vvedite radiuc r \u003d'), O'QING (r); S \u003d Pi * r * r; WRITELN ('Ploshad kruga S \u003d', S) tugaydi

Dastur krugi; VAR Pi, r, S: haqiqiy; begin Pi: \u003d 3.14, WRITELN ('vvedite radiuc r \u003d'), READ (r); S: \u003d Pi * r * r; WRITELN ('Ploshad kruga S \u003d', S) tugaydi.

1-masala N tamsayı berilgan holda, uning juft yoki toq ekanligini aniqlang. 2, 4, 6,… teng, chunki qoldiqsiz 2 ga bo'linadi (N mod 2 \u003d 0) 1, 3, 7, ... - toq, chunki qoldiq 1 bilan 2 ga bo'linadi (N mod 2 \u003d 1)

Algoritm Chislo algoritmi; o'zgaruvchi N: butun sonlar; Chiqishni boshlash ("vvedite chislo"); Enter (N); IF N mod 2 \u003d 0 T O Chiqish (N, '- chetnoe'); IF N mod 2 \u003d 1 T O Chiqish (N, '- nechetnoe'); oxiri.

2-sonli masala N (DE) ikki xonali butun son berilgan, bu erda D - o'nlik soni, E - birlik. Ushbu sonning raqamlari yig'indisi 10 bo'ladimi-yo'qligini aniqlang. Masalan: 28-chi uchun S \u003d 2 + 8 \u003d 10 - yig'indisi bo'ladi, 27-chi uchun S \u003d 2 + 7 \u003d 9 bo'lmaydi. O'nliklarni sanaylik: D \u003d N div 10 va birliklari: E \u003d N mod 10

Algoritm Chislo algoritmi; o'zgaruvchi N, E, D, S: butun sonlar; Chiqishni boshlash ("vvedite chislo"); Enter (N); E: \u003d N mod 10; D: \u003d N div 10; S: \u003d E + D; IF S \u003d 10 T O Chiqish ('summa \u003d 10') Aks holda ('summa10'); oxiri.

Ta'rif: bir xil turdagi harakatlar ko'p marta takrorlanadigan dasturlar - tsiklik dasturlar (takrorlash bilan).

Masala: 1 dan 100 gacha bo'lgan 100 ta natural son berilgan (1,2,3, ... 99,100) Ularning yig'indisini va S o'zgaruvchiga chiqishini hisoblang.

Algoritm yig'indisi; Var i, S: butun sonlar; S boshlash: \u003d 0; I: \u003d 1 dan 100 gacha takrorlash uchun Start S: \u003d S + i tanasi End; pastadir Chiqish (S) End.

Dastur summasi; VAR i, S: tamsayı; S boshlang: \u003d 0; I uchun: \u003d 1 dan 100 gacha DO boshlanadi S: \u003d S + i tana oxiri; pastadir WRITE (S) oxiri.

Dastur summasi; VAR i, S: tamsayı; S boshlang: \u003d 0; I uchun: \u003d 1 dan 100 gacha DO boshlanadi S: \u003d S + i; tana WRITE (‘S’, i, ’\u003d’, s) oxiri; oxiri.

Tsiklning tanasi - bu ko'p marta takrorlanishi kerak bo'lgan harakat. Loop tanasi operator qavslariga kiritilgan ...… oxiri;

ALT + F9 - xatolarni tuzatish CTRL + F9 - ALT + F5 dasturini ishga tushirish - natijani ko'rish

Vazifa: 1) N har qanday butun sonni ko'paytirish jadvalining ustunini 1 dan 10 gacha bo'lgan raqamlar bo'yicha ko'rsatish. Masalan: N \u003d 5, keyin ustun shunday bo'ladi - 1 * 5 \u003d 5 2 * 5 \u003d 10 3 * 5 \u003d 15 i * N \u003d P, bu erda men …… .. 1… 10 10 * 5 \u003d 50 gacha o'zgarib turadi

Uyga vazifa: "Ko'paytirish jadvalining ustuni to'g'risida" masala bo'yicha dasturni sharhlash

Diqqat uchun tashakkur!

Dars mavzusi: Dasturlash tili "PASKAL" Tilning matn muharriri.

IT o'qituvchisi

GBOU nomidagi 293-sonli maktab DA. Tvardovskiy, Moskva

Baxtinova Natalya Valerievna


Darsning maqsadi :

  • Paskal tili haqida birinchi ma'lumotni shakllantirish; Paskal tilidagi matn muharririda ishlash ko'nikmalariga ega bo'ling .

Paskal tili haqida tarixiy ma'lumotlar

  • Paskal dasturlash tili o'z nomini 1642 yilda buyuk frantsuz matematikasi va fizigi Blez Paskal sharafiga oldi. "Paskal g'ildiragi" deb nomlangan arifmetik operatsiyalar uchun hisoblash mashinasini ixtiro qildi. 1968 yil oxirida professor Virt va uning Tsyurixdagi Shveytsariya Federal Texnologiya Institutidagi hamkorlari Paskal tilining birinchi versiyasini ishlab chiqdilar. Ikki yildan so'ng - kompilyatorning birinchi versiyasi. 1971 yilda Virt o'z tilining tavsifini nashr etdi.

Blez Paskal - frantsuz matematikasi, mexanik, fizik, yozuvchi va faylasuf


Paskal Virtni yaratishda u ikkita maqsadga intildi:

  • birinchidan, sistematik intizom sifatida dasturlashni o'rgatish uchun mos bo'lgan tilni rivojlantirish;
  • ikkinchidan, tilni amalga oshirish samarali va ishonchli bo'lishi kerak.
  • Paskal tilining afzalliklaridan biri shundaki, u tizimli dasturlash g'oyasini to'liq o'zida mujassam etgan, uning mohiyati shundaki, bir nechta konstruktsiyalar yordamida, asosan, har qanday algoritmlarni ifodalash mumkin.

Niklaus Virt (1934 yil 15 fevralda tug'ilgan) - shveytsariyalik olim, dasturlash tillari sohasidagi taniqli nazariyotchilardan biri. Paskal, Modula-2, Oberon dasturlash tillarining etakchi ishlab chiqaruvchisi va yaratuvchisi.


Paskal tilini ishga tushirish

Paskal tilini ishga tushirish uchun, PASCAL katalogida, qoida tariqasida joylashgan PASCAL.EXE faylini yuklashingiz kerak.

Masalan: D: \\ PASCAL \\ PASCAL.EXE



  • Biz dasturni ko'k fonga yozamiz.
  • Yordam chiziqlari kulrang fonda yozilgan.
  • Yuqori satrda ochiladigan menyu mavjud: F orol, T matn, IN ijro, TO jamlama, R rejimlar, HAQIDA tladka, H kuzatuv.
  • Yuqori menyuga o'tish uchun F10 tugmasini bosing. Alt tugmachasini va yuqori menyuda biron bir so'zning birinchi harfini bosish oynani chiqaradi. (misol alt + B)

  • Dasturni kompyuterga kiritish bu kompyuterga matn terishdir. Quyida eng ko'p ishlatiladigan Turbo Pascal matn muharriri buyruqlari keltirilgan.

  • PgUp - sahifani yuqoriga ko'tarish;
  • PgDn - bitta sahifa pastga;
  • Uy - satr boshiga;
  • End - satr oxirigacha;
  • Ctrl-PgUp - matn boshiga;
  • Ctrl-PgDn - matn oxirigacha.

  • Backspace (←) - kursorning chap tomonidagi belgini o'chirish;
  • Del - kursor ko'rsatgan belgini o'chirish (kursorning o'ng tomonida);
  • Ctrl-Y - kursor joylashgan qatorni o'chirish;
  • Kirish - yangi qatorni kiriting, eskisini kesib oling;
  • Ctrl-Q L - joriy qatorni tiklash (agar kursor o'zgartirilgan qatordan chiqmasa samarali bo'ladi).

  • Ctrl-K B - blok boshlanishini belgilang;
  • Ctrl-K K - blokning oxirini belgilang;
  • Ctrl-K Y - blokni o'chirish;
  • Ctrl-K C - nusxa ko'chirish bloki;
  • Ctrl-K V - blokni siljitish;
  • Ctrl-K W - diskdagi faylga blok yozish;
  • Ctrl-K R - diskdagi fayldan blok o'qish;
  • Ctrl-K P - bosma blok;
  • Ctrl-K H - blok tanlovini olib tashlash.

  • Paskal dasturlash tilining birinchi versiyasi qaysi yilda paydo bo'ldi?
  • Paskal tilining afzalliklari nimada?
  • Dastur orqali kursorni ekranning yuqori chap burchagidan pastki o'ng burchakka tezlik bilan ko'chirish uchun qanday tugmachalardan foydalanish qulay? (aksincha bo'lsa nima bo'ladi?)
  • Dasturning bir qismini nusxalash uchun nima qilishim kerak?
  • Dastur matnida kiritilgan o'zgarishlarni tiklash mumkinmi?

2006 YILNING PROGRAMLASH TILIGA PASKAL KIRISH KURS TUZILISHI interfeysi va asosiy ta'riflari; dasturning tuzilishi; matnli ma'lumotlarni ko'rsatish; klaviaturadan ma'lumotlarni kiritish; tizim modullarini ulash va ulardan foydalanish; asosiy ma'lumotlar turlari bilan ishlash (tamsayı, real, qator, massiv, fayl); grafikalar bilan ishlash; pastki dasturlardan foydalanish (protsedura va funktsiyalar); modullardan foydalanish. 2 Paskal atrof-muhit interfeysi Turbo Pascal 7.0 dasturlash tili qobiq ichiga kiritilgan. Bunga quyidagilar kiradi: ko'p oynali matn muharriri; dasturlarning bog'lovchisi; dasturni tuzatuvchi; yordam tizimi; kompilyator. 3 PASKAL MUHITI 4 Ochiq fayllar ro'yxati: Alt + 0 Ochiq fayllarga tezkor kirish: Alt +<№ окна> ASOSIY TA'RIFLAR Zaxira qilingan so'z - bu dasturning mantiqiy sohalarini ajratish uchun dasturlash tili tomonidan ishlatiladigan maxsus so'z. Operator - bu harakatni amalga oshiradigan (shartni tekshirish, tsiklni tashkil qilish va hk.) Til buyrug'i, identifikator - bu dastur elementlari uchun dasturchi tomonidan erkin tanlangan ism. Ma'lumot turi - bu qabul qilishi mumkin bo'lgan qiymatlar to'plamini aniqlaydigan identifikatorning xarakteristikasi (tamsayılar yoki kasr sonlar, belgilar qatorlari, mantiqiy ifodalar va boshqalar). 5 UMUMIY DASTUR TUZILISHI Dastur nomi_nomi; Plaginlar bo'limidan foydalanadi; Yorliqlarni tavsiflovchi yorliq bo'limi; Konstantalarni tavsiflovchi Const bo'limi; Mahalliy ma'lumotlar turlarini tavsiflovchi turdagi bo'lim; Var - o'zgaruvchilarni e'lon qilish bo'limi; Boshlash Dasturning asosiy qismi; Oxiri. Minimal kod: 6 EKRANDA ChIQARISh Ekranda ma'lumotlarni aks ettirish uchun quyidagi operatorlardan foydalaniladi: Yozish yoki Yozish. F9 - kompilyatsiya + tekshirish Ctrl + F9 - ishga tushirish F9 → Ctrl + F9 - xatolardan saqlaning Dasturni bajarish natijalarini ko'rsatish 7 EKRANDA KO'RSATISH Bayonotlardan foydalanish natijasi: WRITE "Bo'sh" WRITELN iborasi bo'sh satr qo'shadi WRITELN 8 EXCERISE Quyida ko'rsatilgandek ma'lumot Salom ! Sizni ko'rganimdan xursandman! Meni kompyuter deb chaqiring. Amaldagi material: Chiqish bayonotlari: Write, WriteLn "Bo'sh" WriteLn bayonoti; bo'sh qatorni qo'shadi. 9 QO'ShIMChA MODULLARNI ULANISH Qo'shimcha modullar qo'shimcha operatorlarni taklif qilish orqali dasturlaringizning imkoniyatlarini kengaytiradi. Modullar Uses bo'limiga ulangan. Mening dasturim; Module1, Module2 dan foydalanadi; ________________________ ______________________________ ______________________________ 1-modul Resurslar to'plami 1 ... Module N Modullar: Tizimning o'ziga xos manbalari to'plami N Matn ekrani tugmachasini bosishni kutish CRT 10 nomli plagin har qanday ekran joylashuviga chiqish GotoXY (X, Y: Integer) qaerda X, Y - ekrandagi tanish koordinatasi. X 1 dan 80 gacha, Y esa 1 dan 25 gacha qiymatlarni qabul qilishi mumkin. Masalan: My_program dasturi; (Modulga ulanish) Crt-dan foydalanadi; ClrScr-ni boshlang; (Ma'lumotlarni chiqarish) GotoXY (1, 1); yozish ("▒"); GotoXY (80, 1); yozish ("▒"); GotoXY (1, 25); yozish ("▒"); GotoXY (80, 25); yozish ("▒"); (Ekranni kechiktirish) ReadKey; Oxiri. Dastur ekranning burchaklarida "▒" (kod 177) belgisini aks ettiradi. 11 COLOR IN OUTPUT TextColor (rangli); Belgilar rangini belgilaydi. TextBackground (Color); Tanishning rangini belgilaydi. MyProgram dasturi; Crt-dan foydalanadi; TextColor (qizil) ni boshlang; TextBackGround (Moviy); Yozing ("Hovlida"); TextColor (Oq); Yozing ("o't",); TextColor (Yashil); TextBackGround (sariq); Yozing ("o't ustida"); TextBackGround (Magenta); Yozing ("o'tin. 0) 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Ranglar Qora Moviy Yashil Moviy Qizil Magenta Jigarrang YengilOch To'qOchrang Yorug'likMavi Moviy YashilYengilCyan LightRed LightMagenta Yellow White 12 - qora - ko'k - yashil - moviy - qizil - lilac - jigarrang - och kulrang - to'q kulrang - ko'k - och yashil - och moviy - pushti - och lilac - sariq - oq QIMMATLAR Ma'lumotlar bilan ishlash operatsiyalari identifikatorlari Termin identifikatori konstantalarga, o'zgaruvchilarga, funktsiyalarga, protseduralarga, komponentlarga va boshqa foydalanuvchi tomonidan belgilangan. ob'ektlar. .bir nechta so'zlarni o'z ichiga olmaydi. hech qanday kalit so'zlarga mos kelmaydi ... Xato identifikatorlari: Ma'lumotlar Mening ismim 2Array Var ((((ruscha belgilar ishlatiladi) Bo'sh joy mavjud) Raqam bilan boshlanadi) Kalit so'z bilan bir xil) 15 MA'LUMOT TURLARI Ma'lumot turi - bu qiymatlar to'plamini belgilaydigan identifikatorning xarakteristikasi Olishi mumkin (tamsayı yoki kasr sonlari, belgilar qatorlari, mantiqiy ifodalar va boshqalar). 16 INTEGRAL MA'LUMOTLAR TURI 17 Mumkin bo'lgan qadriyatlarning cheklangan to'plami bayt qisqartmasi so'zi butun uzunlik oralig'i 0..255 -128..127 0..65535 -32768..32767 -2147483648..2147483647! Chegaradan tashqarida xatolik yuz berdi! size o'zgaruvchilarning deklaratsiyasi O'zgaruvchan - bu dasturni ishlashi davomida qiymatni (raqam, satr va boshqalarni) saqlashga va o'zgartirishga qodir bo'lgan identifikator. Sintaksis: Var<имя переменной> : <тип переменной> ; Program_name dasturi; Plaginlar bo'limidan foydalanadi; Var - o'zgaruvchilarni e'lon qilish bo'limi; Boshlash Dasturning asosiy qismi; Oxiri. 3 ta o'zgaruvchiga mo'ljallangan kompyuter xotirasidagi bo'sh joy 18 O'zgaruvchilarga qiymatlarni o'rnatish, o'zgaruvchining qiymatini belgilash uchun siz tayinlash operatoridan foydalanishingiz kerak: \u003d Sintaksisini yozib olish:<Переменная> := <Значение> ; A nomli o'zgaruvchi (tamsayı) qiymati 3 bilan to'ldiriladi 19 TO'G'RISI VARIBLELARNI ISHLAB CHIQARISH 20 Arifmetik amallar: + - * / Standart amallar: div | mod | sqr tamsayı turlari bilan foydalanib bo'lmaydi S nomli o'zgaruvchi X va Y o'zgaruvchilarda saqlanadigan qiymatlar yig'indisi bilan to'ldiriladi S nomli o'zgaruvchida saqlanadigan qiymat aks ettiriladi 21-MAShQ 1. 1. natijasini ko'rsatadigan dastur yozing 15 va 20 sonlarni ko'paytirish 2. f 2 x 3 y funktsiya qiymatini ko'rsatadigan dastur yozing, x \u003d 11, y \u003d 3 uchun Foydalanilgan material: Var bo'limida o'zgaruvchilar e'lon qilingan Butun son Integer sintaksis deyiladi o'zgaruvchiga qiymat berish uchun:<Переменная> := <Значение> ; Har bir operatordan keyin belgi qo'yiladi; (boshi va oxirgi oxiri bundan mustasno) REAL DATA TYPE Qadriyatlar to'plami √ √ Oddiy tip Haqiqiy tip Bir tomonlama moslik: Real Integer Integer Real! Chegaradan tashqarida va moslik qoidalariga rioya qilmaslik xatoga olib keladi! Haqiqiy o'zgaruvchilardan 22 ta operatsiya 23 ta standart operatsiyalar: pi | Sqrt | Gunoh | Cos | Abs | Exp | Ln davra | Trunc (real → integer) Masalan (X, S - Real turi): X: \u003d pi / 3; S: \u003d Sin (X) * 100; Yozing (Dumaloq (S)); S nomli o'zgaruvchiga X va Y o'zgaruvchilarida saqlanadigan qiymatlarning nisbati kiritiladi.E - sonning kasr qismidagi raqam va belgilar sonining joylashuvi raqamning kuchini bildiradi. 5.6E-5 \u003d 5.6 · 10-5 LINE DATA TYPE 24 Satrlar - bu tartiblangan belgilar to'plami. Chiziqlar apostroflar bilan yopilgan. Satrlar butun va haqiqiy turlarga mos kelmaydi. Range String-ni yozing 255 ta belgi (satrlar uchun asosiy operatorlar) + (birlashtirish) Uzunlik (S); (chiziq uzunligi) Masalan: X: \u003d ‘Vasya’; Yozing ("Sizning nomingizga", Uzunlik (X), "harflar"); S: \u003d X; X: \u003d S; Mashq 12.89 va 0.22 raqamlarini bo'linish natijasini, o'nlik punktdan keyin faqat uchta muhim raqamni quyidagi formatda ko'rsatadigan dasturni yozing: birinchi raqamni ikkinchi raqamga bo'ling \u003d natija Yozing (X: 1: 3, 'razdelit na ', y: 1: 3,' \u003d 'z: 1: 3) Amaldagi material: Ip turi String deb nomlanadi Iplar satrlari opostraflarda joylashtirilgan. Iplarning birlashishi + belgisi orqali sodir bo'ladi Ko'rsatish operatorida har xil turlar a bilan ajratiladi vergul 25 Klaviatura ma'lumotlari 26 Klaviaturadan ma'lumotlarni kiritish uchun siz kiritish operatoridan foydalanishingiz kerak: Read yoki ReadLn. Sintaksis: O'qing (N1, N2, ... Nn); Bu erda N1, N2,… Nn o'zgaruvchilar (tamsayı, haqiqiy, satr) X o'zgaruvchiga klaviaturadan kiritilgan qiymat kiritiladi Qiymat kiritilgandan so'ng Enter tugmachasini bosish kerak Agar operatorda bir nechta o'zgaruvchilar bo'lsa, ular bo'sh joy yoki tugmachani bosish orqali kiritiladi KIRISh 27-MASQA 1. Klaviaturadan kiritilgan ikkita raqam yig'indisini hisoblaydigan "mini-kalkulyator" dasturini yozing. 2. Ismingizni so'raydigan dastur yozing va siz ismingizni yozganingizdan keyin tabrik chiqadi. Masalan, Vanya ismini kiritgan bo'lsangiz, dasturda quyidagi ibora paydo bo'ladi: Salom, Vanya !!! Ishlatilgan material: Kiritish operatorlari: Read, ReadLn OPERATORLARNING SHARTLI BOShQARMASI 29 Shartli operator "tarmoqlanishni" amalga oshiradi, ya'ni ma'lum bir shartning haqiqati yoki yolg'onligiga qarab bayonotlarning bajarilish tartibini o'zgartiradi. Vaziyatni tekshirish YO'Q 1-qadam Men plyajga boraman YOG'IR YO'Q YO'M 2-qadam Men soyabon olaman 3-qadam Men kinoteatrga boraman ShARTLARNI TEKSHIRISH Taqqoslash operatsiyalari:\u003e - ko'proq< - меньше = - равно >\u003d - ko'p yoki teng<= - меньше или равно <> - 30 ta mantiqiy amalga teng emas: Yoki Yoki - Yo'q -Va - Yoki Masalan: Mening balandligim\u003e Petitning balandligi bo'lsa, Men Petitdan balandroq bo'laman If (yomg'ir yog'sa) Yoki (qor yog'ayotgan bo'lsa), keyin men qolaman uyda Agar Yo'q ((yomg'ir yog'ayotgan bo'lsa) VA (shamol)), keyin men sayrga chiqaman Mantiqiy operatsiyalardan foydalanganda, shartlar qavs ichiga olinadi SHARTLI BAYOROT SNOPSISI Qisqa shakl: Agar<условие> keyin<оператор>; Masalan, agar X o'zgaruvchining qiymati 0 dan kichik bo'lsa, u holda 1 qiymati bir xil o'zgaruvchiga yoziladi: Agar X<0 Then X:= 1; Полная форма: If <условие> keyin<оператор_1> boshqa<оператор_2> ; Masalan: Agar X\u003e 5 bo'lsa X: \u003d X - 1 Boshqa X: \u003d X + 1; So'ngra bitta so'zdan keyin foydalanish mumkin va Else Else oldin, imzo qo'ying; etishmayotgan 31-MASHQA 1. Dollar va summani evro bilan qabul qiladigan dasturni yozing, so'ngra ekranda qaysi valyutada miqdori kattaroqligini ko'rsating (1 dollar \u003d 28 rubl, 1 evro \u003d 35 rubl.) 2. Uchta raqamni kiritish sifatida qabul qiladigan va keyin ularning maksimal miqdorini ko'rsatadigan dastur yozing. Amaldagi material: Shartli bayon shakllari: Agar<условие> Keyin<оператор>; Agar<условие> Keyin<оператор_1> Boshqa<оператор_2> ; Boshqa belgidan oldin; qo'ymang Taqqoslash operatsiyalari:\u003e< = <> >= <= Логические операции: Not Or And ОПЕРАТОРНЫЕ СКОБКИ Если после слов Then или Else необходимо записать несколько операторов, то их заключают в операторные скобки (составной оператор). Операторные скобки начинаются словом Begin, а заканчиваются словом End; Например: If Z > 0 Keyin X boshlang: \u003d 1; Y: \u003d -1; WriteLn ("Ma'lumot qabul qilindi"); End Else WriteLn tugashi ("Xato"); 33 SELECT STATE CASE Select operatori ichki joylashtirilgan shartli gaplardan tuzilmalarni almashtirish uchun ishlatiladi. Case sintaksisi<порядковая_переменная> ning<значение_1> : <оператор_1> ; <значение_2> : <оператор_2> ; ……… <значение_N> : <оператор_N> Boshqa<оператор_N+1> ; Oxiri; Operator qavslarini Select operatorida tanlash mumkin. Ixtiyoriy 34-satr. SELECTOR CASE Case Talaba balandligi 16..30.: Siz boshlang'ich sinf o'quvchisiz; 31,32,33: Siz 5-6 sinfdasiz; 34..50: Siz o'rta maktab o'quvchisisiz, qiymatlarni ro'yxatlash uchun vergul, diapazonni tanlash uchun nuqta qo'yiladi, boshqasi siz aniq o'quvchi emassiz; Oxiri; -128 ..- 1-sonli x holat: writeln ("Salbiy"); 0: writeln ('Nol'); 1..127: writeln ("Ijobiy") Else WriteLn ("Chegaradan tashqarida"); Oxiri; Mashq Raqamni qabul qiladigan va haftaning tegishli kunini ko'rsatadigan dastur yozing. Masalan, agar siz 2 raqamini kiritgan bo'lsangiz, dastur "seshanba" ni bosib chiqarishi kerak. Agar raqam 1..7 dan oshsa, unda bunday kun yo'qligi haqida xabar paydo bo'lishi kerak. Amaldagi material: Tanlov bayonoti: Case<порядковая_переменная> ning<значение_1> : <оператор_1> ; ……… <значение_N> : <оператор_N> ; Boshqa<оператор_N+1> ; Oxiri; 36 tsikllar 37 Tsiklik algoritmlar - bu ba'zi bir operatorlar bir xil o'zgartirilgan ma'lumotlar bilan bir necha marta bajariladigan algoritmlar (masalan, ularning ko'p sonli qo'shilishi orqali sonlarni ko'paytirish protsedurasi). Paskalda uchta tsikl bayonoti mavjud: For (parametrli tsikl yoki berilgan sonli takrorlash uchun) While (WHILE tsikli) Takrorlash (a TO tsikli) Agar takrorlanishlar soni ma'lum bo'lsa, parametrli loop operatori. PARAMETRA BILAN DAVRA 38 Parametrining ortib yoki kamayib borishi bilan berilgan takroriy soni uchun tsikl For (juftliklar): \u003d (start_zn) To (end_zn) Do (operator); Loop tanasining izohlari Parametr butun son turidir; Siz tsiklda operator qavslaridan foydalanishingiz mumkin; Siz loop tanasida loop parametrini o'zgartira olmaysiz; Loop parametri bittaga ko'paytiriladi; Boshlang'ich qiymati\u003e Yakuniy qiymat, aks holda tsikl tanasi e'tiborga olinmaydi; Parametrni kamaytirish uchun To o'rniga, DownTo dan foydalaning. 39-PARAMETRE BILAN DAVRA (a, b) butun sonlarni so'raydigan dasturni yozing := <нач_зн> Kimga<кон_зн> Qil<оператор> ; Parametr tamsayı turi (odatda Integer); Siz tsiklda operator qavslaridan foydalanishingiz mumkin; Loop parametri bitta 40 WHILE CYCLE-ga ko'paytiriladi. While Loop avval shartni tekshiradi va agar u haqiqatan ham loop tanasini bajarsa. While (shart) do (operator); Quyida yozilgan kod tanasida tsikl hech qachon bajarilmaydi: x: \u003d 1; X\u003e 1 bajarilayotganda x: \u003d x-1; Siz cheksiz pastadir olishingiz mumkin. Masalan: x: \u003d 1 while x\u003e 0 do x: \u003d x + 1; 41 WHILE CYCLE - a dan b gacha bo'lgan sonlar yig'indisini aks ettiruvchi dastur. Klaviatura bosilmasa ham, kechikish boshlanadi (2000); Oxiri; O'zgaruvchan f o'zgaruvchisi b qiymatidan kattaroq bo'lguncha tsikl ishlaydi 42 42-mashq 1. Kosmonavtlar Oyga qayinlar ekishga va har yili qayinlar sonini ikki baravar ko'paytirishga qaror qildilar, birinchi yilda ular 3 qayin ekdilar. Qayinlar soni necha yilda 10000 dan oshishini ekranda chop eting 2. Klaviaturadan kiritilgan sonlarning maksimal miqdorini aniqlaydigan dastur yozing (raqamlarni kiritish 0 raqami bilan tugaydi). Quyida tavsiya etilgan ekran tartibi berilgan: Raqamlarni kiriting. Yozishni yakunlash uchun 0. 89 15 0 maksimal 89 raqamini kiriting. Amaldagi material: While Loop bayonoti: while<условие> qil<оператор> ; While Loop birinchi navbatda shartni tekshiradi va agar u haqiqatan ham tsiklning asosiy qismini bajarsa. REPEAT CYCLE 44 Repeat tsikli avval tsikl tanasini bajaradi va shundan keyingina Repeat holatini tekshiradi (loop-body) Until (shart); Repeat tsiklida birikma operatoridan foydalanishga hojat yo'q, chunki ushbu qurilish bitta emas, balki takrorlash va qadar so'zlari orasida joylashgan bir nechta operatorlarning bajarilishini ta'minlaydi. REPEAT CYCLE - a dan b gacha bo'lgan sonlar yig'indisini aks ettiruvchi dastur. O'zgaruvchan f o'zgaruvchisi b qiymatidan katta bo'lgunga qadar tsikl ishlaydi 45 Qaytish uchun qarashlarni taqqoslash 46 Qaytish modelini tanlash faqat uning muayyan vaziyatda foydalanish qulayligiga bog'liq. Jismoniy mashqlar tsiklining bir turi o'rniga deyarli har doim boshqasini ishlata olamiz. MASQA Y x 3 x 2 16 x 43 funktsiyasining x uchun -4 dan 4 gacha, shu jumladan 0,5 oralig'ida o'zgarib turadigan x qiymatini hisoblang. Amaldagi material: Repeat loop bayonoti: Repeat<тело_цикла> Gacha<условие> Repeat tsikli avval tsiklning tanasini bajaradi va shundan keyingina shartni tekshiradi 47 tsikllarning uzilishi 48 Tsiklik operatorlarni moslashuvchan boshqarish uchun quyidagi protseduralar qo'llaniladi: Break - tsikldan chiqish; Davom etish - navbatdagi ko'chadan o'tishni yakunlash; Misollar: 1 dan i gacha bo'lgan sonlar yig'indisi 100 dan katta bo'lgan minimal i sonini toping. S (1 dan i gacha bo'lgan sonlar yig'indisi) 100 dan katta bo'lishi bilan break operatori ishga tushiriladi va tsikl bo'ladi chiqdi. s: \u003d 0; chunki I: \u003d 1 dan 100 gacha boshlanadi, agar s\u003e 100 bo'lsa, u holda buziladi; s: \u003d s + i; oxiri; Writeln (‘minimal son i, shunday qilib (1 + 2 + .. + i)\u003e 100 ga teng’, i); Klaviaturadan 10 ta raqam kiritiladi va tsikldagi faqat ijobiy summalar hisoblanadi. Agar raqam manfiy bo'lsa, u holda tsikldan keyingi o'tishni boshlaydigan davom etish operatori bajariladi. s: \u003d 0; chunki I: \u003d 1 dan 10 gacha Readln (k) boshlanadi; agar k<0 then Сontinue; s:= s + k; end; Writeln (‘Сумма положительных чисел равна ’,s); МАССИВЫ МАССИВЫ 50 Простые типы: одна переменная – одно значение Структурированные типы: одна переменная – несколько значений Массив – это фиксированное количество значений одного типа. Доступ к конкретному значению осуществляется через индекс. Переменная массива Структура массива: A= Доступ к массиву: 0 1 2 3 Индекс 9 7 0 0 Значения <Имя массива> [ <Индекс> ] A: \u003d 7; ARRAYS Var qismida massiv e'lon qilinadi: (Nomi): Array [(start_zn) .. (end_zn)] of (type); Massivlarni e'lon qilishga misollar: Var A: Array of String; B: "Real" massivi; S: Butun sonli massiv; Massivlarni qiymatlari bilan to'ldirishga misollar: A: \u003d 'Vasya'; A: \u003d "Petya"; A: \u003d "Masha"; A: \u003d "Olesya"; Yozing (A); F: \u003d 1 dan 10gacha C [f]: \u003d f * 2; F: \u003d 1 dan 10 gacha WritLn (C [f]) \u200b\u200bni bajaring; 52-mashq. Foydalanuvchidan 7 ta butun sonni so'raydigan va ularni massivda saqlaydigan dastur yozing. Massiv maksimal elementni o'z ichiga oladi va ekranda aks etadi. Masalan: 1 raqamni kiriting: 4 2 raqamni kiriting: 8 3 raqamni kiriting: 9 4 raqamni kiriting: 2 5 raqamni kiriting: 4 6 raqamni kiriting: 5 7 raqamni kiriting: 0 Maksimal raqam: 9 Ishlatilgan material: Array deklaratsiyalari:<Имя> : Array [<нач_зн> … <кон_зн> ] ning<тип> ; Massivga kirish:<Имя массива> [ <Индекс> ] RANDOM NUMBER GENERATOR (RNG) Dasturda tasodifiy sonlarni yaratish uchun quyidagi operatorlardan foydalaning: Randomize - RNG initsializatsiyasi. Bu faqat dasturning boshida e'lon qilinadi; Tasodifiy - 0 dan 1 gacha bo'lgan tasodifiy sonni hosil qiladi (haqiqiy turi); Tasodifiy (N) - tasodifiy sonni 0 dan N-1 gacha (butun son turi) hosil qiladi; 53 Ko'p o'lchovli massivlar 54 Massivning har bir o'lchovi uchun intervallar ro'yxati (Ism): Array [(start_zn) .. (end_zn), (start_zn) .. (end_zn), (va boshqalar)] ning (turi); 4 qator va 6 ustunli ikki o'lchovli massivni (matritsa, jadval) e'lon qilishga misol: Var A: Array of Integer; Massivni to'ldirishga misol: For i: \u003d 1 to 4 do for j: \u003d 1 to 6 do A: \u003d i + j; Ai, j 2 3 4 5 3 4 5 6 4 5 6 7 5 6 7 8 6 7 8 9 7 8 9 10 MAShQ -10 dan 20 gacha bo'lgan tasodifiy sonlar bilan ikki o'lchovli qatorni to'ldiradigan va yig'indilarni ko'rsatadigan dastur yozing. jadvalning diagonalida joylashgan elementlarning ... Amaldagi material: RNG boshlashi: Tasodifiy son 0 dan N-1 gacha bo'lgan tasodifiy raqam: Tasodifiy (N) 55 XAVFLAR BILAN ISHLASH 57 Fayl: Fayl boshlanishi indeks) [elektron pochta bilan himoyalangan]$ ku⌂ | "Hd9v * 9 (L * M \u003d BYGRMxduV █ 8e * BOtCDrTVzHGJ1aBD\u003e @ B \\ (r8sE) █: wcJvAmRa" v / .Wai; $ `SWI \u003d y2] suB █? Hq\u003e vF (LmBcV ^. 6b] o (QkV8 █ kub<6`8Z":M^1;:8ANwak;,b2-4…u5 █ 2]suB?Hq>vF (LmBcAdz4wcP] o (QkV █ 8c8df] e "v, su\u003e +), VAEFBjFV, W $ Q- █ y0G1GjN $ -eB | sqZ0`QnV% \\ BD% y █ █ █ - terminator fari Vari Fayllar bilan ishlashni yaratish, o'qish, yozish, yopish, fayllar bilan ishlashda ketma-ketliklar ketma-ketligi: 1. Fayl o'zgaruvchisi deklaratsiyasi (FP); 2. FP-ning fayl bilan assotsiatsiyasi; 3. o'qish / yozish uchun faylni ochish; 4. Fayl bilan ishlash; 5. Faylni yopish (fayl bilan FP o'rtasidagi aloqa ham buzilgan); 1. FP deklaratsiyasi<Имя> : Fayl<тип> ; <Имя> : Matn; Var f: Matn; h: Integer fayli; 2. FP-ning Assign bilan assotsiatsiyasi (<ФП>, <имя файла>); Assign (f, ‘c: \\ my \\ Data.ghm’) 58 FAYLLAR BILAN ISHLASH 3. O'qish / yozish uchun faylni qayta tiklash (<ФП>); - Qayta yozishni o'qish uchun faylni ochadi (<ФП>); - faylni yozish uchun ochadi 4. Read (Fayl bilan ishlash)<ФП>, <П1> , <П2> , ...); - o'zgaruvchiga o'qiydi<П1>, <П2> va hokazo. ko'rsatkich elementidan bir vaqtning o'zida bitta element. Yozing (<ФП> , <П1> , <П2> , ...); - o'zgaruvchining qiymatlarini faylga yozadi<П1>, <П2> va hokazo. ko'rsatkich elementidan bir vaqtning o'zida bitta element. EoLn (<ФП>); - Agar satr oxiriga yetgan bo'lsa, True-ni qaytaradi. EoF (<ФП>); - Fayl oxiriga yetgan bo'lsa, True-ni qaytaradi. 5. Faylni yopish Yopish (<ФП>); 59 DAVOLALAR BILAN ISHLASH Agar matritsaning 5x5 ekanligini bilsangiz, dasturni soddalashtiring (For ko'chadan foydalaning) 60-mashq 61 "DOM-3" dasturini yozing. Birinchi fayl nominativ ish ishtirokchilarining ismlarini o'z ichiga oladi. Ikkinchisida xuddi shu ismlar, ammo ayblovchida. Uchinchisida his-tuyg'ular yoki qandaydir harakatlar ifodasi ro'yxati (sevadi, yoqtirmaydi, o'padi, tishlamoqchi bo'ladi, sig'inadi, hurmat qiladi, yomon ko'radi, ko'rishni xohlaydi, quchoqlaydi). Dastur ushbu fayllardan tasodifiy ravishda ma'lumot olib, quyidagi printsipga muvofiq yangisini yaratishi kerak:<имя в им. пад> <чувство/действие> <имя в вин. пад> Olga Sergey Olegni sevadi Roman Katya Nastya va boshqalarni hurmat qilishini xohlaydi. Amaldagi material: Operator nomlari: Tayinlash, Qayta yozish, Qayta tiklash, Yozish, O'qish, Yopish. Grafika GRAFIKASI Paskal tilida grafikalar bilan ishlash uchun sizga ikkita fayl kerak - graph.tpu moduli va egavga.bgi grafik adapter drayveri. Birinchisi \\ UNITS katalogida, ikkinchisi \\ BGI-da. ! Egavga.bgi haydovchisi. Exe faylini ishga tushirishda talab qilinadi! Chizish uchun sizga quyidagilar kerak: 1. GRAPH modulini ulang (Uses bo'limida); 2. grafikani ishga tushirish (InitGraph); 3. nimanidir chizmoq; 4. grafik rejimni yopish (CloseGraph) 63 GRAPHICS Grafik rejimini boshlash. Qalam (0,0) nuqtadan (639, 479) nuqtaga o'tadi. PROGRAM Primer_1; Graph, crt dan foydalanadi; Var Gd, Gm: Butun son; GD BEGIN: \u003d 0; InitGraph (Gd, Gm, 'd: \\ BP \\ bgi "); Line (0,0,639,479); ReadKey; CloseGraph; END. 639 piksel Koordinatali tizim 479 piksel 64 Grafik rejimini yopish 65-MASHQ 1. Markazga to'rtburchaklar chizish ekran uchburchagi 2. Ekranning o'rtasiga tomonlari ekranning mos tomonlaridan ikki baravar kichik to'rtburchak chizilgan Amaldagi material: Grafika moduli: Grafika grafikasini boshlash: InitGraph Yopishdagi grafik rejim: CloseGraph; GRAPHICS + COLOR SetColor (Rang GetColor: word; qalam rangini qaytaradi SetBkColor (color: word); GetBkColor: word fon rangini belgilaydi; fon rangini qaytaradi Ranglar Qora Moviy Yashil Moviy Qizil Magenta Jigarrang Ochiq To'qrang Yorqin Moviy Yashil LightCyan LightRed LightMagenta Sariq Oq 66 - qora - ko'k - yashil - moviy - qizil - lilac - jigarrang - och kulrang - quyuq kulrang - ko'k - och yashil - och ko'k - pushti - och lilac - sariq - oq Grafika PRIMITIVLARI Chiziq (x, y); Joriy qalam koordinatasidan (x, y) koordinatalariga chiziq tortadi. MoveTo (x, y); Qalamni koordinatalarga o'rnatadi (x, y). PutPixel (x, y, Color); Koordinatalar (x, y) da Color bilan nuqta chizadi. GetPixel (x, y): so'z; Koordinatali (x, y) nuqta rangini qaytaradi. To'rtburchak (x1, y1, x2, y2); To'rtburchakning konturini chizadi. Doira (x, y, r); Markazi (x, y) va radiusi r bo'lgan aylana chizadi. SetLineStyle (Ln, 0, T) konturlar parametrlarini o'zgartiradi. Ln - chiziq uslubi (0..3): 67 x1, y1 T - chiziq qalinligi: 1 \u003d normal; 3 \u003d qalin. FillEllipse (x, y, Xr, Yr); (X, y) markazida Xr va Yr radiuslari bilan to'ldirilgan ellipsni chizadi. SetFillStyle (turi, rangi); Yopiq shakllarning turini (0..11) va lyuk rangini ClearDevice-ga o'rnatadi; Grafik ekranni hozirgi x2, y2 fon rangiga bo'yash orqali tozalaydi GRAFIK PRIMITIVLARI 68 69-mashq. Monitor ekraniga uy chizadigan dastur yozing; 2. Monitor ekraniga tasodifiy radiusi (1 dan 5 pikselgacha) va tasodifiy joylashtirilgan yulduzlar bilan yulduzli osmonni chizadigan dastur yozing. Rangi ham tasodifiy (oq, och kulrang, to'q kulrang); Ishlatilgan material: SetColor (Rang: so'z); - SetBkColor chizilgan rangini o'rnatadi (rang: so'z); - Joriy fon rangini belgilaydi. Chiziq (x, y); - Hozirgi ruchka koordinatasidan (x, y) koordinatalariga chiziq tortadi. MoveTo (x, y); - Qalamni koordinatalarga o'rnatadi (x, y). PutPixel (x, y, Color); - Color bilan koordinatalari (x, y) bilan nuqta chizadi. To'rtburchak (x1, y1, x2, y2); - Joriy rangdagi chiziqlardan to'rtburchaklar konturini tuzadi. Doira (x, y, r); - markazi (x, y) va radiusi r bo'lgan doira chizadi. FillEllipse (x, y, Xr, Yr); - (x, y) va Xr va Yr radiuslari markazida to'ldirilgan ellipsni chizadi. GRAFIKA + ANIMASIYA mS da pauza. 70 SUBPROGRAM SUBPROGRAMLAR Subprogramlar kodning takrorlanadigan qismini alohida fragmentlarda tanlash va ularni dasturning kerakli joylariga qo'shish imkonini beradi. Funksiya, protseduradan farqli o'laroq, qo'ng'iroq natijasini qaytaradi. Protseduralar Funksiyalarning pastki dasturlari: Begin End kalit so'zlari orasida yozilgan; identifikatorlarni ko'rsatish qoidalariga muvofiq yozilgan ismlar bilan aniqlangan; kirish va chiqish parametrlariga ega bo'lishi mumkin; asosiy dastur tuzilishini to'liq takrorlang. 72 Mening dasturim; Subroutine 1 [Subroutine code 1] Subroutine 2 [Subroutine code 2] Start Subroutine 2 Subroutine 1 System subroutines-ga misol: Write (“Ok”); ClrScr; Uzunlik (S); Tasodifiy; // // // // protsedura bitta parametr protsedurasi bilan parametrsiz ishlaydi, bitta parametr funktsiyasiz parametrsiz subroutine 2 End. SUBPROGRAMLAR (PPR) Subproutine-ning uyasi Dastur Subroutine 1 Subroutine 3 Subroutine 4 Subroutine 2 73 O'zgaruvchilarning kirish maydoni Ba'zi PPR-da tasvirlangan o'zgaruvchilar uning tanasida ma'lum, shu jumladan barcha joylashtirilgan PPR (PPR1-da tasvirlangan o'zgaruvchi PPR3-da mavjud bo'ladi) 4) ... PMD-da tasvirlangan o'zgaruvchilarning nomlari boshqa PMD-lardagi o'zgaruvchilar nomlari bilan mos kelishi mumkin (har bir PMD-da bir xil o'zgaruvchini e'lon qilish mumkin). PPR-da tasvirlangan o'zgaruvchining nomi PPR-dan berilgan bir xil o'zgaruvchini ekranga chiqaradi (agar bir xil o'zgaruvchilar PPR1 va PPR3-da e'lon qilingan bo'lsa, unda har bir PPR-da bu o'zgaruvchilar noyob bo'ladi). Dastur o'zgaruvchilari global, pastki dastur o'zgaruvchilari mahalliy deb nomlanadi. PARAMETRASIZ TARTIBLAR Sintaksis: protsedura (protsedura nomi); (O'zgaruvchilar, doimiylar, turlar, yorliqlar, modullar bo'limi) Begin (protsedura tanasi); Oxiri; Parametrlarsiz protseduradan foydalanish misoli: PARAMETRASIZ 74 TARTIBLAR Shu nomdagi o'zgaruvchilardan qochib chiqishga misol: My_program dasturi; Crt-dan foydalanadi; Var A: mag'lubiyat; // My_Procedure protsedurasining tavsifi; Var A: String; Boshlash A: \u003d "Subroutine"; Writeln (A); Oxiri; A boshlang: \u003d "Tana"; Writeln (A); Mening protseduram; Writeln (A); Oxiri. // Protsedurali qo'ng'iroq 75 PARAMETRALAR BILAN TARTIBLAR 76 Subproduktsiyalarni yanada universal qilish uchun dastur va uning pastki dasturlari o'rtasida ma'lumotlar almashinuvining maxsus mexanizmlaridan foydalaniladi. Parametrlari bo'lgan tizim protseduralari: SetColor (Red); (To'rtburchak bilan protsedura (0, 0, 639, 479); (InitGraph bilan protsedura (Gd, Gm, 'd: \\ BP \\ bgi "); ((bitta parametr bilan) protsedura, bir nechta parametrlar) bir nechta turli xil)) sintaksisini yozing parametrlari bo'lgan protseduralar Processure (Name) ((Kirish o'zgaruvchilar ko'lami) Var (Chiqish o'zgaruvchilar doirasi (har bir o'zgaruvchi uchun o'z Var)))); Hududlarning tuzilishi: Variable_1, Variable_2,…: Type; ....... .... ............. Variable_N-1, Variable_N,…: Type; Maydonlarning har biri yo'q bo'lishi mumkin PARAMETRALAR BILAN TARTIBLAR Kirish parametrlaridan foydalanish a ekrani bilan chegaradosh to'rtburchak chizish protsedurasi belgilangan rang Parametrlarsiz parametrlari bilan Processure Cir; Begin SetColor (i); SetBkColor (b); Rectangle (0, 0, 639, 479); End; Process Cir (i, b: Integer); Begin SetColor (i); SetBkColor (b); To'rtburchak (0, 0, 639, 479); Tugatish; Dasturdagi protsedura chaqiruvi: Dasturdagi protsedura chaqiruvi: i: \u003d 6; b: \u003d 12; Cir; Cir (6, 12); 77 TARTIBI PARAMETRALAR BILAN Chiqish parametrlaridan foydalanish tartibi Ra burchakni gradusdan radianga aylantiradi. EX_26_3 DASTURI; VAR x, a: real; TARTIBI Rad (alfa: real; var betta: real); (chiqish o'zgaruvchisi) BEGIN Betta: \u003d pi * alfa / 180; OXIRI; BEGIN Write ("Burchakni gradus bilan kiriting:"); Readln (x); Rad (x, a); (Protsedurani chaqirish) Writeln ("Bu burchak radianlarga teng \u003d", a: 6: 4); OXIRI. 79-mashq 1. Quyidagi formatda uchburchak chizadigan protsedurani yozing: Uchburchak (x1, y1, x2, y2, x3, y3, Rang) 2. Quyidagi formatda to'rtburchakning maydonini hisoblash tartibini yozing. : SRect (a, b, S) bu erda, S - protseduraning chiqish parametri. Amaldagi material: Protsedura (Nomi) ((Kirish o'zgaruvchan doirasi) Var (Chiqish o'zgaruvchisi doirasi)); Hududlarning tuzilishi: O'zgaruvchan_1, O'zgaruvchan_2,…: Turi; ........................ Variable_N-1, Variable_N,…: Type; FUNKSIYALAR 80 Funksiyani yozish uchun sintaksis Funktsiya ((Kirish o'zgaruvchan maydoni) Var (Chiqish o'zgaruvchisi maydoni)): (Type); Protsedurani formatlash S (a, b: real; var s: real) funktsiyasini formatlash; Boshlang'ich s: \u003d a + b; Oxiri; Funktsiya yig'indisi (a, b: real): real; Boshlang'ich yig'indisi: \u003d a + b; Oxiri; Chaqiruv protsedurasi S (10, 20, A) funktsional qo'ng'iroq; Yozing (A); A: \u003d S (10, 20); WriteLN (A); WriteLN (S (20, 30)); Agar ba'zi bir subroutineni funktsiya sifatida ishlab chiqish maqsadga muvofiq bo'lsa, faqat uning ishining biron bir natijasi kutilsa. Agar subroutin faqat ma'lum bir harakatlar ketma-ketligini bajarishga yo'naltirilgan bo'lsa (namoyish qilish, chizish va hk), uni protsedura sifatida tuzgan ma'qul. MAShQ To'rtburchakning maydonini quyidagi formatda hisoblash funktsiyasini yozing: SRect (a, b) Amaldagi material: Funktsiya (Ism) ((Kirish o'zgaruvchilar doirasi) Var (Chiqish o'zgaruvchilar doirasi)): (Tur) ; Maydonlarning tuzilishi: Var_1, Var_2,…: Turi; ........................ Variable_N-1, Variable_N,…: Type; 81 UNITS UNITS 83 UNIT - bu resurslardan (protsedura va funktsiyalardan) boshqa dasturlar foydalanishi mumkin bo'lgan mustaqil dastur birligi. My1 dasturi; Module1, Module2 dan foydalanadi; __________________________ __________________________ __________________________ __________________ 1-modul Resurslar to'plami 1… My2 dasturi; Module1, Module2 dan foydalanadi; __________________________ __________________________ __________________________ __________________ N MODUL N Resurslar to'plami N Modullar FOYDALANISH MODULLARI bo'limi orqali dasturga ulangan. TARKIBI 84 Modul quyidagi qismlardan iborat: 1. Modul sarlavhasi. 2. Interfeys qismi. (ko'rinadigan narsalarning tavsiflari) 3. Amalga oshirish qismi. (yashirin ob'ektlarning tavsiflari) 4. Boshlash qismi (ixtiyoriy). Birlik (birlik nomi); Interfeys (Global o'zgaruvchilar, doimiylar, turlar bo'limi) (modullar) (Protsedura va funktsiyalar sarlavhalari ro'yxati) Amalga oshirish (Mahalliy o'zgaruvchilar, konstantalar, turlar bo'limi) (Protseduralar va funktsiyalarni amalga oshirish) Boshlang (Ishga tushirishning bir qismi) Tugatish. ! Modul sarlavhasining nomi modul fayli nomiga to'g'ri kelishi kerak! MODULLAR Modulga misol: My_Unit birligi; Inter ms Var: Array of Real; (Global massiv) Funktsiya kubi (x: integer): Integer; (Cub funktsiyasi \u003d x ^ 3) funktsiya ext4 (x: integer): Integer; (Funksiya ext4 \u003d x ^ 4) Amalga oshirish funktsiyasi kub (x: integer): Integer; (Cub funktsiyasini amalga oshirish) Begin Cub: \u003d x * x * x; Oxiri; Ext4 funktsiyasi (x: integer): Integer; (Ext4 funktsiyasini amalga oshirish) Ext4-ni boshlang: \u003d x * x * x * x; Oxiri; Oxiri. 85-mashq. Bitta funktsiyasi va bitta protsedurasi bilan modul yozing: (X1 funktsiyani hisoblash \u003d 1 / x) X1 (a: real): real; (S so'zini ekranda X, Y WriteXY holatida chop etish tartibi (S: String; X, Y: Iteger); Ishlatilgan material (modul tuzilishi): birlik (modul nomi); interfeys (global o'zgaruvchilar bo'limi, konstantalar, turlar) (modullar) (protsedura va funktsiyalar sarlavhalari ro'yxati) Amalga oshirish (lokal o'zgaruvchilar, doimiylar, turlar bo'limi) (protseduralar va funktsiyalarni amalga oshirish) boshlang (boshlanish qismi) tugatish.)

Maqola sizga yoqdimi? Do'stlar bilan bo'lishish uchun: