SlideShare una empresa de Scribd logo
1 de 183
Windows үйлдлийн системийн ерөнхий зохион байгуулалтын талаар
товчхон
Windows-н өмнөх хувилбарууд MS-DOS үйлдлийн системтэй сайн зохицон
ажилладаг боловч үйлдлийн систем гэсэн утгандаа бүрэн хүрч чадахгүй байсан
бол өнөөгийн Windows95 өөрөө 1 цогц үйлдлийн системийг илэрхийлж чадах
болжээ.
Windows95 үйлдлийн систем нь ерөнхийдөө 3 дэд системд хуваагддаг.
1. Win KERNEL
2. Win GDI
3. Win USER
Windows95 нь 16 болон 32 битийн программуудыг ажиллуулахдаа системийн
виртуаль машин болон дээрхи 3 дэд системийн тусламжтайгаар зохион
байгуулдаг. Системийн виртуаль машин гэдэг нь Windows-н бүх ажлыг дэмжиж
байдаг Windows95-н бүрэлдхүүнд ордог үйлдлийн орчин юм. Мөн дээрхи 3 дэд
системийн ажлыг дэмжиж байдаг.
32 битийн win гэдэг нь санах ойн 32 битийн моделийг ашиглаж байдаг windows-н
шинэ хэрэглээ юм. Харин 16 битийн win гэдэг нь бидний урьд өмнө хэрэглэж
байсан windows-н хуучин хувилбарууд юм. Тэдгээр нь санах ойн сегментийн
хаяглалтийг буюу чухамдаа 80286 процессорын санах ойн моделийг ашигладаг.
Тэдгээр нь Windows 3.x –нх шиг ажиллахдаа Windows95 нх шиг нэгдмэл нэг
орон зайг хуваан эзэмшдэг бөгөөд олон бодлогын зарчимтай зохицодоггүй.
Windows95-н хэрэглээний программийн төвшинд Windows 3.x –н API бүрэн
тохирч ажилладаг.
Win32 API нь Microsoft –н WinNT, Win32S, Win3.1-н өргөтгөл win32 битийн
интерфейс юм. Windows95 үйлдлийн систем нь олон бодлогын аргад үндэслэн
дээрх application-уудыг жолооддог. Бүрхүүл гэдэг нь хэрэглэгчийг системтэй
харилцах үйлдлийг хангаж байдаг 32 битийн Windows application юм.
Windows95-н бүрхүүл нь windows3.x-н программ менежер, файл менежер
зэргийг нэгтгэсэн application юм.

KERNEL
KERNEL нь windows-н доод түвшиний динамик санах ойн функцүүдээр хангаж
өгч байдаг үйлдлийн системийн цөм юм. Энэ нь 16 ба 32 битийн windows-н
үйлдлүүд тохирох
үйлчилгээг хангадаг.

GDI
GDI нь graphic device interface гэсэн товчилсон үг. Энэ нь Windows95-н график
боломж болон дэлгэцэнд харуулах өнгө, хэлбэр дүрс, resolution-г хангаж байдаг.
Win32 –т байдаг бүх шинэ боломжуудыг агуулна.

USER
USER нь дэлгэцийн диспетчер юм. Windows-н интерфейсийг үүсгэх, удирдах
функцүүдийн цргц юм. Жишээ нь Хэрэглэгч хэд хэдэн MS-DOS –н Prompt гарган
ашиглаж болно.
Хэрэглэгч арай илүү виртуалчилах боломжийг хангадаг хэд хэдэн давуу тал гарч
ирлээ.

Системийн виртуаль машин
Windows-н API функцийн төвшин
Дээр харлуулсан орон зайг хамтарч эзэмшинэ. Энэдээс Windows95 нь 16 битийн
программуудад тусад нь орон зай гарган өгч орчинийг нь бүрдүүлж өгдөг нь
харагдаж байна.
Windows
32 bit
Windows
32 bit
16 bit
16 bit
Бүрхүүл
Windows-н дэд систем
Win KERNEL
KERNEL
Win USER Win GDI

Файл удирдах дэд систем
Сүлжээ удирдах дэд систем
Үйлдлийн системийн үйлчилгээ
Виртуал машин удирдах дэд
систем
Хөтлөгч хэрэгслүүд
Бүрхүүл
Энэ нь хэд хэдэн системийн удирдлагыг хэрэглэх нөөцүүдийн боломжуудаар
хангах программ юм. Windows95-үйлдлийн системийн бүрхүүл нь дэлгэц
системийн нөөцүүдтэй харилцан ажиллахыг удирдан зохион байгуулдаг.
API
Хэд хэдэн зуун API функцүүд windows-н бүх системийн хийх үйлдчилгээг хангаж
өгдөг. Windows-н орчин бол интерфейс баазын дуудалтаар ханддаг. Үүнийг API
гэдэг.
Системийн виртуаль машин
Windows-н бүх application ситемийн виртуаль машины тухайн хил хязгаарт
үйлдлээ гүйцэтгэдэг. 16 битын application –ууд өөрийн нэгдмэл хаяглалын орон
зайд ажилладаг.
Энэ нь application бүрийн өөрийн орон зайн хаяглалтыг 32 битын хаяглалтаар
хангаж дэмжиж өгдөг.
MS-DOS-н виртуаль машин
Windows95 олон тооны MS-DOS-н программыг хамгаалалтын горим эсвэл 8086
виртуаль үйл ажиллагаа ажиллуулж дэмжиж байдаг. MS-DOS-н виртуаль машин
хэд хэдийг үүсгэж болно.
Виртуаль машины диспетчер
Виртуаль машины диспетчер нь үнэндээ үйлдлийн системийн зүрх юм. Энэ нь
доод түвшиний санах ойн удирдлага болон драйверуудын виртуаль зохион
байгуулалтын үйлчилгээг хянаж ажилллаж байдаг.
| Windows95 –н диспетчерүүд
Windows95 –н виртуаль машины диспетчер дотор хоёр диспетчер ажиллаж
байдаг.
Үүнд: Үндсэн диспетчер. (primary scheduler)
Энэ нь thread-дын приоретитүүдийг тооцоолж хариу өгнө.
Квантын диспетчер (timeslice scheduler)
Энэ нь хугацааны квантуудад хувааж хэсэгчлэн ажилуулана.
Үнэн хэрэгтээ квантын диспитчер аль thread-н ямар хувийг нь ямар хугацаанд
процессороор үйлчлүүлэхийг тооцоолно.
Процесс 0-31 хүртэл приоритеттой байдаг ба үүнийг үндсэн диспетчер бодоод
квантын диспетчер лүү гаргана. Хэрвээ процессийн хугацааны квант 100 хувь
болсон бол VMStat_Background эсвэл VMStat_High_Pri_Background гэдэг
төлвийг үлдээдэг.

DELPHI ДЭЭР АНХНЫ АЛХАМ ХИЙЦГЭЭЕ
Та мэдэж байгаа Delphi бол Borland пүүсийн Windows-ийн орчны програмыг
бичдэг дээд түвшний програм юм. Delphi -ээр та Windows -ийн орчны
программыг урьд байгаагүйгээр хялбар бөгөөд хурдан бичих боломжтой.
Win32 эсвэл Win32 graphical user interface (GUI) -ийг та нээж ажиллуулж
болно. Win32 GUI -ийг ажиллуулснаар та дээд түвшний програмчлалын
хэлний үнэн хүч чадлыг мэдрэх болно. Мөн та Web browsers –ийг минутийн
дотор үүсгэдэг шигээ form дээрх ActiveX control -оор тусгай програмуудыг
үүсгэж болно. Энэ мэт олон зүйлийн давуу талууд Delphi -д байдаг ба
Delphi нь өөрөө кодоо үүсгэдэг тул програмын биелэлт хурдан байдаг.
Танд л гэж хэлэхэд Pascal -ын программчлалыг жаахан судлах хэрэгтэй.
Delphi нь Windows програмчлалын доод түвшний нарийн зүйлүүдийг нуудаг
ба энэ нь танд чухал биш. Эцэст нь та програмист л болохыг хүсч байгаа
бол энэ нь бүгдийг судлах хэрэгтэй. Delphi нь танд урьд байгаагүй хөгжил
таашаалыг авчрах болно. Ингээд ханцуйгаа шамлан бүх ажилдаа орогтун.
Delphi сэтгэлийн таашаалыг авчрах агуу программ юм.
Delphi IDE -ийг өнгөц харъя
Энэ хэсэг нь Delphi integrated development environment (IDE) -ийг агуулна.
Windows програмчлалыг судлах бүхэнд энэ нь хэрэгтэй юм. Та одоо Delphi
-ийг эхлэх урам зоригтой байгаа гэж бодож байна. Программыг эхлүүлэхэд
та хоосон form ба IDE -ийг харах болно.




Delphi IDE нь 3 хэсэгт хуваагдана. Дээд хэсгийг нь үндсэн цонх гэдэг. Энэ
нь toolbars болон Component palette -ийг агуулдаг. Delphi toolbars нь
compiling project, хадгалах, нээх үйлдлүүдийг нэг товшилтоор гүйцэтгэх
боломжийг танд олгоно.
Component palette нь wide array of components агуулдаг ба түүнийг form
дээр чирч тавьж болно. Component -ууд нь text labels, edit controls, list
boxes, buttons ба бусад болно. . Componentууд нь бүлгүүдэд хуваагдсан
байна. Component palette -ийн дээд талын tab -ыг харав уу?
Дээр нь очоод click хийвэл өөр өөр component гарч ирнэ. Form дээрээ
component -оо байрлуулахын тулд Component palette -ийн компонентын
button дээр click хийж component -оо харагдах хэсэгт нь очоод click хийх
хэрэгтэй. Яаж хэрэглэх үр дүнд юу болох бол гэж санаа зовох хэрэггүй.
Эдгээр нь хормын дотор болно.
Шинэ нэр томъёо: Component гэдэг бол software -ийн 2 хэсгийг агуулсан
ба тусгай урьдчилан тодорхойлогдсон функц үйлдлийг нь гүйцэтгэж
байдаг. Жишээ нь: text label, edit control, list box.
Обьектийн инспектор
Үндсэн цонхны доор дэлгэцийн зүүн талд Object Inspector байна. Энэ нь
component -ийн properties ба events -үүдийг өөрчлөхөд ашиглагддаг. Delphi
-тэй ажиллах явцдаа үргэлж Object Inspector -ийг та хэрэглэх болно. Object
Inspector нь 2 хэсэгтэй. Properties tab ба Events. Component -ийн properties
нь component -ийг яаж ажиллуулахыг удирдана. Жишээ нь : Color property -
ийг өөрчлөхөд background color -нь өөрчлөгддөг.
Шинэ нэр томъёо: property –нь component -ийн үйл ажиллагааг
тодорхойлдог.
Events хэсэг нь component -ын event -уудын жагсаалтуудаас бүрдэнэ.
Component дотор үйлдэл хийхэд event -ийг ашигладаг. Жишээ нь
component дарагдахад event нь component дарагдсан байна шүү гэж танд
хэлнэ.Та component -д хамаарах код бичиж болох ба тусгай үйлдлийг
гүйцэтгэхэд хэрэглэж болно.
Шинэ нэр томъёо: event бол цонх ба хэрэглэгчтэй ажиллах component -
ийн харилцан ажиллагааны үр дүн юм.
Delphi –ийн ажлын талбар
Delphi IDE -ийн үндсэн хэсэг нь ажлын талбар юм. Ажлын талбар нь Form
Designer -ийг үүсгэнэ. Энэ нь гайхмаар юм биш Form Designer нь өөрөө
form үүсгэдэг. Delphi -д form гэдэг нь программын цонхыг хэлнэ. Form нь
программын үндсэн цонх байж болно, dialog box эсвэл цонхны янз бүрийн
хэлбэртэй байж болно.
Form Designer -ийг, form -ийг үүсгэх процессийн хэсэгт component -уудыг
нь байрлуулах, зөөх зэргээр ашиглаж болно. Form Designer -ийн ард Code
Editor байдаг. Программын кодыг Code Editor дээр бичдэг. Application -ийг
үүсгэн ажиллах явцад Object Inspector, Form Designer, Code Editor, ба
Component palette -ууд нь харилцан уялдаатай байдаг. Та Delphi IDE-ийг
мэддэг боллоо одоо ямар нэг зүйлийг хийж үзье.

Таны эхний програм: Hello World
Дэлгэцэнд Hello World гэж хэвлэх нь бүх програмчлалын хэлний сурах
бичигт байдаг уламжлалт програм юм. Заавал ийм байх албагүй гэж би
боддог. Pascal хэлийг өмнө нь судалсан бол сайн юм. Та гайхаж магадгүй
юм, Delphi танд одоогийн Windows program -ийн Hello World -д хүрэх
хамгийн хялбар замыг зааж өгнө.
Програм бичих
Та яг одоо Delphi -ийг ажиллуулж байгаа бол blank form -ийг харсан байх
ёстой. Form нь Form1 гэж нэрлэгдсэн байдаг. Form -ийн зүүн хэсэгт Object
Inspector form -ийн properties -үүдийг харуулна. Object Inspector -ийн title bar
дээр товш. Caption property нь идэвхжих ба cursor нь тэнд юу хийхийг
хүлээнэ. Hello World! гэж бичин form -ийн caption -ийг өөрчил.
Санамж: Properties -ийг өөрчлөх бол Delphi шууд өөрчлөлтийг нь гаргадаг.
Caption -ийг өөрчлөх үед form -ийн window caption нь өөрчлөгдөж байгааг
ажигла.
Toolbar дахь Run товчийг товш. Form нь гарахдаа caption нь Hello World!. -
ийг гаргана. Энэ тохиолдолд ажиллаж байгаа программ нь бараг л blank
form шиг харагдана.
Програмыг өөрчлөх
Одоо программаа жаахан өөрчилье. Hello World чинь байгаа бол Close
button дээр товшин хаах хэрэгтэй. Form Designer дахин гарч ирэх ба form-
ийг өөрчлөх боломжтой. Программыг илүү сайжруулахын тулд цонхны төвд
текст нэмэх хэрэгтэй. Үүнийг хийснээр form -доо text label -ийг та нэмж өгнө.
1. Эхлээд Component palette -ийн Standard хэсэгт товш.
2. Label button -ийг товшоод form -ийн хаа нэгтээ товш. Label
component нь form -ийн дотор байна.
3. Object Inspector дээр буцаад оч. Label1 -ийн properties -ууд гарч
ирсэн байгаа. Caption property нь бас идэвхжсэн байгаа.
4. Object Inspector эсвэл Caption property -ийн titlebar дээр товш
тэгээд Hello World! гэж бич. Form -дээрх label нь Hello World!. гэж
гаргана.
5. Үүнийг хийсэн бол label -ийн text -ийн хэмжээг өөрчилж чадна.
Font property дээр 2 товш. Property нэмэлт font attribute -ийг
харуулахын тулд өргөн болно.
6. Font -ийн Size property -ийг 24 болгоод form -дээрээ товш. Label
шинэ хэмжээтэй болно.
Програмаа хаах
Delphi -д жаахан дурласан бол энэ нь бүхнээс илүү таны сонирхлыг татна.
Дараа нь юу хийх вэ гэвэл одоогийн прожектийг хаах хэрэгтэй. File цэсний
Close All -ыг сонго. Project1 -ийн өөрчлөлтийг хадгалах бол No -ийг сонго.
Таны 2 дахь программ: Hello World, II хэсэг
Pascal -ийг судлахаасаа өмнө Delphi хэрхэн ажиллдаг талаар мэдэх
хэрэгтэй. Танд Pascal –ийн олон төрөл дээр ажиллахад энэ нь хэрэг болно.
Энэ хэсэг нь Delphi -ийн үнэн хүчийг хальт агуулна.




Санамж: Компонентийн properties -ийг өөрчилсөн бол design-time өөрчлөлт
хийсэн гэсэн үг. Харин кодоор property -ийг нь өөрчилсөн бол runtime
өөрчлөлт гэж нэрлэгддэг.
Ажиллах үед нь Caption property -ийг өөрчлөхийн тулд:
1. Form дээрх button –ийг 2 товш. Ингэхэд Delphi нь event handler -ийг
button -ийн OnClick event дээр үүсгэнэ. Үүсгэсэн код нь дараах
байдалтай байна
procedure TForm1.Button1Click(Sender: TObject);
begin
end;
2. Засварлагч курсор нь begin ба end гэсэн зарлагааны хооронд
байдаг ба таныг код бичихийг хүлээж байдаг.
procedure TForm1.Button1Click(Sender: TObject);
begin
Label1.Caption := `Hello World, Part II';
end;

Энэ код маш энгийн юм. Энэ нь Hello World, Part II гэсэн өгүүлбэрийг
Caption property -руу шилжүүлдэг.
3. Одоо toolbar -т байгаа Run товчин дээр дарж программыг ажиллуул.
Программыг ажиллуулахад label -ийн caption нь Label1 гэж хэвээр
байгааг анхаарна уу. Form -ийн button дээр дарж label -ийн гарчгийг
өөрчил. Гайхамшигтай байгаа биз. Зүгээр л Delphi ажиллаж байгаа
юм. Иймэрхүүгээр олон дасгалыг ойрын хэд хоногт хийж form -ийн
бусад компонент labels, button –уудын талаар их туршлагатай болно.
Би үйл явдлын ард нь юу болдгийг бүхэлд нь тайлбарлах гээгүй
харин дараа нь бүх тайлбар хийхийг л хүсэхггүй байна.
Object Pascal хэлийг нягтлан харах нь
Delphi -ийн RAD онцлогийг суралцахаасаа өмнө обьект Паскал хэлний
үндсийг судлах хэрэгтэй. Энэ ном магадгүй хамгийн сайн нь биш юм шиг
танд санагдаж болох юм гэхдээ та юуны өмнө обьект Паскалийг судал.
Обьект Паскалийг дараалаар нь судалбал сайн хэрэг. III бүлгийн
хичээлийн дараа та обьект Паскалийн бүрэн дүр зурагтай болсон байна.
Хоромхон зуурын ухвар ойлголтонд бүү хуурт.
Зарим нь обьект Паскалийг бүрэн ойлгохыг шаарддаг ба энэ нь бодит
туршлага юм. Ойрын хэдэн өдрийн турш та зарим кодын хэсгийг харах ба
энэ нь обьект Паскалийн зарим онцлогийг дүрслэн үзүүлдэг. Та зарим
дасгал хийх ба таны олсон шинэ мэдлэгийг бататгана .Эхний хэдэн өдөр та
зөвхөн Delphi application -ийг жаахан хэсэгт харна.
Юун түрүүнд би Delphi IDE болон Visual Component Library (VCL) -ийг
судалмааргүй байна. Та бүрэн ойлголттой болсныхоо дараа эхлэх хүртлээ
бага багаар ахих хэрэгтэй.

Түүхийн шар хуудас
1994 онд Borland пүүс нь RAD хэрэгсэл дээр ажиллаж эхэлсэн ба энэ код
нь Delphi гэж нэрлэгдсэн байна. RAD -ийг хэрэгжүүлэх хамгийн шилдэг зам
нь компонентийн загвар архитектур байна гэж шийдэгдсэн байсан. Энэ нь
системийн гол цөм байх програмын хэлний асуудлыг шийдсэн байв.
Тэр үед Borland пүүс нь Pascal –ийн зах зээл дэх ганц борлуулагч байв.
Borland нь Pascal -ийн хэрэгсэлийг үйлдвэрлэдэг хамгийн сайн компани
байв. Та Pascal -ийн програмист байсан бол Borland -ийн TurboPascal -ийг
хэрэглэн амтанд нь орох байсан биз. Borland пүүс Pascal хэлийг хуулийн
хүрээнд бүрэн эзэмшдэггүй боловч Pascal -ийн ертөнцөд том байр эзэлдэг
гэдэгт эргэлзээ байдаггүй.
Энэ нь Pascal хэлний онцлогийг нэмэгдүүлэх тал дээр том байр эзэлдэг.
Энд хэлэхэд Pascal -ийн стандарт хороо байдаггүй ба Pascal хэлийг
тодорхойлон бичигдсэн стандарт байдаггүй. Borland пүүс Delphi -ийг Pascal
-ийн үндсэн дээр бичсэн юм. (Borland -ийн нэр нь програмын хэлний нэр
болсон) Delphi хэрэглээнд гарахаас өмнө Borland пүүс Pascal хэлийг
өөрчилсөн. Жишээлбэл : Pascal -ийг обьект Pascal болгон өөрчилсөн байв.
Энэ нь обьект Pascal нь Pascal -ийн хувьд C++ нь C -ээс ямар ялгаатай
байдаг шиг обьект Pascal нь классийг Pascal -д нэмсэн ба үүгээр обьект
хандлагат програмчлалд Pascal орж ирсэн. Delphi хөгжихийн хирээр шинэ
хэлний онцлог ба түлхүүр үг нэмэгдэн орж ирэн компонент загвартай
зохицож эхэлсэн. Түлхүүр үгүүд ба property өөр бусад нэмэгдэн орж ирсэн.
Энэ нь Borland -д компонент загварын бүрэн хүчийг хэрэгжүүлэх боломжийг
олгосон.
Компонентод тохируулан Паскал хэлийг өөрчилснөөрөө Borland нь RAD -
ийг хэрэгжүүлэх боломжтой болсон. Гол нь обьект Паскал хэл нь
өөрчлөгдсөнөөрөө Delphi -ийн боломжуудыг нээж өгсөн. Үр дүнд нь
компонент загвар ажиллаж эхэлсэн. Хэдийгээр Паскалийг өөрчилсөнөөрөө
Borland нь том алхам хийсэн боловч урьдах зүйлтэй холбоотой. Microsoft
компани BASIC хэлийг авч өөрчлөн Visual Basic хэлийг гаргасан байдаг.
Энэ шинэ хэл нь баазад ажилладаг эх Basic хэлнээсээ ялгагдахгүй шахам
байсан. Borland пүүс Паскал өөрчилснөөрөө эрсдэлтэй алхам хийсэн. Бүх
юмны дараа хэрэглэгчид таатай бус хүлээн авсан. Одоог хүртэл Borland нь
Паскалийн зах зээл дээр хатуу байр суурьтай байгаа ба энэ хэвээрээ
байгаа билээ. Үүнд алдаа хийхгүй бол обьект Паскал хүчирхэг хэл ба би
зарлалтыг нь тэгж хөнгөн хийхгүй байхсан.
Обьект Паскал нь сургалтанд бол хамгийн хүчирхэг байгаа билээ. Би
Обьект Паскалийг бүх онцлогийг агуулсан гэж хэлэхгүй. Паскал бол
програмчлалд түгээмэл хэрэглэгддэг.
Санамж: Юу хийхийг тодорхойлохдоо Delphi нь хэд хэдэн нэр томъёог
хуулан авсан. Delphi -ийн үндсэн хэл бол мэдээж обьект Паскал ба зарим
хүмүүс үүнийг Паскал гэж хэлдэг. Зарим Паскал дээр хийж байна хэлдэг.
Эцэст нь юу гэж хэлэхээ та шийд. Обьект Паскал нь обьект хандлагат
програмчлалд бүрэн зохицсон болно.
Шинэ нэр томъёо: Обьект - урьд нь компонентыг тодорхойлж байсан шиг
тусгай програмчлалын хоёр тал юм. (Компонент бол обьект юм, харин бүх
обьект нь компонент биш)
Pascal Unit -ууд
Програмчлал бол код бичихээс илүү ажил юм. Эцсийн эцэст энэ бол
програмын цогц бөгөөд код бичих нь програмчлах зорилгыг нь биелүүлж
байгаа болно. Таны бичсэн код бол зөвхөн текст файл руу ордог.
Компьютер тэр текст файлыг аван машины кодод хөрвүүлэлт хийн
ойлгодог. Delphi -ийн код агуулдаг текст файлыг unit гэдэг.
Шинэ нэр томъёо: unit бол кодын модульд хөрвүүлэгдэх боломжтой текст
файл юм.

Unit -ийн төрлүүд
Delphi GUI application нь багадаа хоёр unit -ийг агуулдаг. Project source unit
нь project source кодыг агуулдаг. Project source код нь DPR өргөтгөл байдаг.
Та project source unit -ийг Project | View Source -ийг үндсэн цэсээс сонгон
үзэж болно. Project source unit -ийг өөрчлөх хэрэгцээ нэг их байдаггүй.
Үнэндээ project source unit -ийг юу хийхээ мэдэхгүйгээр хийх хэрэггүй. Та
хэрэв project source unit -ийг санамсаргүй өөрчилсөн бол application тань
ажиллахгүй болно.
Delphi GUI application -ийн хоёр дахь төрөл нь үндсэн form -ийн unit байдаг.
Form unit гэдэг бол тухайн form -тай хамтардаг source code unit байдаг. Unit
-ийн энэ төрөл нь PAS өргөтгөлтэй файл байдаг. Delphi -д та энэ төрлийг
нь голлон хэрэглэнэ. Delphi GUI application нь голдуу нэг form unit -тэй
байдаг. (Үндсэн form -ийн хувьд) Харин энэ нь нэгээс илүү form unit -тэй
байж болно. Жишээ нь: About box -ийг гаргадаг application нь үндсэн form
unit -тэй байх ба About box -ийн unit байна.
Тэмдэглэл: "Delphi GUI application." нь console mode application -ийн GUI
application -ээс ялгаатай байдаг. Console mode application бол console
window (DOS box) -ийг ажиллуулдаг 32-bit Windows application юм.
Console application -д үндсэн form байдаггүй ба өөр form -уудыг агуулж ч
болно, агуулахгүй ч байж болно. Хэдий ийм боловч console application нь
нэг эсвэл түүнээс илүү unit -тэй байж болно.
Delphi application -д та 3 дахь unit -ийг хэрэглэж болно. Энэ төрлийн unit нь
source кодыг агуулдаг. Зөвхөн unit -ийг агуулдаг код нь project -ийн бусад
unit гэж дуудагддаг.

Delphi Unit –ийн бүтэц
Delphi unit нь урьд тодорхойлогдсон форматыг дагах ёстой. Unit урьд
тодорхойлогдсон форматанд байх ба энэ нь хөрвүүлэгч unit -ийг уншиж
чадах ба unit -ийн кодыг компиляц хийж чадна. Delphi project unit нь unit -
ийн нэртэй програмын түлхүүр үгийг агуулдаг ба кодын хэсэг нь begin ба
end гэсэн түлхүүр үгээр тэмдэглэгддэг. Та үндсэн unit -ийг Delphi -ийн
үндсэн цэсээс View | Project Source -ийг сонгон харж болох ба default Delphi
project -ийн project source unit -нь дараах байдалтай байна.
Тэмдэглэгээ: Доорх мөрийн дугаарууд нь unit -ийн өөрийнх нь хэсэг биш
болно. Үүнийг зөвхөн дарааллыг заахад ашигласан. Заримд нь ийм дугаар
байгаа ба заримд нь байхгүй болно. Аль алинд нь Паскал хэл нь бусад
хэлүүд шиг мөрийн дугаар авдаггүй гэдгийг ойлгох хэрэгтэй. (онцолбол,
BASIC).
Cтандарт DELPHI PROJECT –ийн PROJECT SOURCE
01: program Project1;
02:
03: uses
04: Forms,
05: Unit1 in ‘Unit1.pas’ {Form1};
06:
07: {$R *.RES}
08:
09: begin
10: Application.Initialize;
11: Application.CreateForm(TForm1, Form1);
12: Application.Run;
13: end.

/
1 мөрөнд програмын түлхүүр үг програмын үндсэн source unit -ээр энэ unit
-ийг тодорхойлсон. Үүнийг та unit -ийн нэр Project1 нь програмын түлхүүр
үгээ даган яваагаас харж болно. (Delphi таныг нэр өгөх хүртэл өөрөө
нэрийг нь автоматаар өгдөг)
3 мөрөөс эхлэн түлхүүр үгээр тодорхойлогдсон хэсгийг харж байна. Ямар ч
unit -ийн нэр нь цэгтэй таслалтай түлхүүр үгийг дагадаг ба компиляци энэ
дарааллаар хийгдэнэ.
7 мөрөнд компиляцийн директив нь Delphi нь project -ийн resource file -ийг
агуулдгийг харна. Resource файлууд нь VIII бүлгээр яригдана. “Creating
Applications in Delphi."
9 мөрөнд begin түлхүүр үг ба 13 мөрөнд end түлхүүр үгийг агуулсан.
Сүүлийн түлхүүр үг цэгээр төгссөн байгааг ажигла. (unit нь олон түлхүүр
үгтэй байж болох ба харин ганц төгсгөлийн end –тэй байна.)
10, 11, 12 -р мөрүүдэд код нь application -ийг үүсгэж байгаа ба application -
ийн үндсэн form -ийг үүсгэх ба application -ийн биелэлтийг эхлүүлнэ. Та энэ
кодын нарийн хэсэгт анхаарах хэрэггүй.
Тэмдэглэгээ: begin ба end нь кодыг блоклоно. Кодын блок нь кодын хэдэн
мөрийг агуулж болох ба мөн хэдэн зуун мөрийн кодыг ч агуулж болно.
Номонд ч бас ийм байгааг та харж болно. Та ном хэрэглэдэг бол яаж, хэзээ
хэрэглэхийг мэдэх болно.
Паскал unit -ийн өөр хэсэгт харцгаая. Үндсэн цэсээс File | New -ийг сонгоно.
New Items гарч ирэхэд icon -ийг байрлуулан 2 товшилт хий. Delphi шинэ unit
-ийг нээх ба харуулахдаа Code Editor -д unit код нь үүснэ.

Хоосон UNIT
01: unit Unit2;
02:
03: interface
04:
05: implementation
06:
07: end.
Цөөн байгаа биз? Энэ unit нь 2 зүйлтэй. Эхнийх нь unit нь нэр нь түлхүүр
үгтэйгээ байгаа. Түлхүүр үгтэй программ эхэлж байгаа ба код нь unit
түлхүүр үгтэй ба харин хэдхэн ерөнхий элементтэй байна. Pascal unit нь
unit нэртэйгээ байгаа түлхүүр үгээр эхлэх ба end нь хоёулангийнх нь сүүлд
байдаг. Энд end түлхүүр үг нь бас сүүлдээ цэгтэй байгаа.
Програмын main source unit -ийнх биш unit нь interface ба implementation -
уудыг агуулдаг. Энэ хоёр түлхүүр үг нь The interface Section" and
"Implementation Section," зэрэг хэсгүүдэд нарийн тодорхойлогдсон байгаа
болно. Программын үндсэн unit нь begin and end -ийг хоёуланг нь авч явах
ба харин source unit -нь төгсгөлдөө л end -тэй байна. Дараагийн хэсэг нь
Pascal unit дотор хэрэглэгддэг түлхүүр үгийг тодорхойлно.
Uses жагсаалт
Шинэ нэр томъёо: uses жагсаалт бол гаднах unit -уудын жагсаалт.
3 мөрөнд uses түлхүүр үгийг хэрэглэсэн байгаа. Uses нь бусад unit -уудын
жагсаалтыг агуулсан хэсгийн эхлэлтийг тодорхойлж байгаа бөгөөд энэ unit
нь түлхүүр үгээсээ хамаарна.
Application.CreateForm(TForm1, Form1);
Кодын энэ мөр нь бусад unit -уудад байрлах мэдээллийг агуулах ба энэ
unit -д олдохгүй. Application.CreateForm гэж тодорхойлогдсон процедур нь
Forms.pas гэгдэх Delphi unit -д байх ба TForm1 ба Form1 идентификаторууд
нь прожектийн main form unit-д байрлах ба Unit1.pas гэж хэлэгдэнэ. Та
холболтыг нь харав уу? Uses жагсаалт нь unit -ийг компиляци хийхэд
хэрэгтэй нэмэлт мэдээллийг агуулдаг гэж үзнэ. Энд uses жагсаалтийг
харуулав.
uses
Forms,
Unit1 in ‘Unit1.pas’ {Form1};
Uses жасгаалт нь 2 unit нэртэй байна. Forms ба Unit1. Заримдаа энэ нь
сайн жишээ биш байдаг. Яагаад гэвэл 2 -р unit жагсаалт нь нэмэлт текстийг
агуулсан байдаг. (Unit1 in ‘Unit1.pas' {Form1}).
Энэ текст нь form -ийг онцлоход хэрэглэгдэх ба unit -дээ байдаг бөгөөд
прожектийн main source unit -ээр л хэрэглэгддэг. (Угалзан хаалтанд байх
текст нь кодын бусад хэсэгт байх тайлбар)
Uses жагсаалтыг байгуулахад мэдвэл зохих 2 зарчим байдаг:
• Эхлээд жагсаалт дахь unit бүр дараах unit -ээсээ таслалаар
тусгаарлагдах ёстой.
• Дараа нь сүүлийн unit-ийн жагсаалт нь цэг таслалтай байх. Цэг таслал
нь uses жагсаалтыг төгссөнийг заана.
Ерөнхийдөө жагсаалт нь идэвхтэй unit -ийн нэрсийг агуулах ёстой. Uses
жагсаалт нь uses түлхүүр үг, цэг таслалтай end -ээр тодорхойлогдох ёстой.
Тэрнээс гадна uses жагсаалт нь яаж зохион байгуулагдсанаасаа
хамаарахгүй. Жишээ: Дараах 2 uses жагсаалтууд ижил:
uses
Windows, Messages, SysUtils, Classes, Graphics,
Controls, Forms, Dialogs, StdCtrls;
uses
Windows,
Messages,
SysUtils,
Classes,
Graphics,
Controls,
Forms,
Dialogs,
StdCtrls;
Unit нь uses жагсаалт нь ямар ч тоотой байж болно.
Тэмдэглэгээ: Зарим тохиолдолд Delphi нь танд uses жагсаалтанд unit -ийг
нэмж өгдөг. Энэ нь File | Use Unit цэсээр хийгддэг. Энэ онцлог нь IV бүлгээр
нарийвчлан яригдана.
Интерфейс хэсэг
Өмнөх кодонд интерфейс түлхүүр үг байгааг анзаарсан болов уу.
Интерфейс хэсэг бол идентификатор нь unit -ээсээ авч ирэн зарлагдсан
unit –ийн хэсэг юм. Ихэнх unit -ууд нь өөр unit –уудад хэрэглэгдэх кодыг
агуулсан байдаг. Энэ код нь класс, процедур, функц, хувьсагчаар
хангагдсан байж болно.
Аль ч обьект нь интерфейс хэсгээрээ нэг unit -ээс нөгөө unit -руу зарлагдах
боломжтой. Та интерфейс хэсэг нь жагсаалтыг агуулдаг гэдгийг хэлж
чадна. Интерфейс хэсэг нь интерфейс түлхүүр үгээр эхэлдэг ба
implementation түлхүүр үгээр дуусдаг.
Implementation хэсэг
Шинэ нэр томъёо: implementation хэсэг бол тухайн unit -ийн кодыг
агуулдаг хэсэг юм.
Implementation хэсэг implementation түлхүүр үгээр эхэлдэг ба дараагийн unit
-ийн түлхүүр үгээр дуусдаг. Дараагийн unit -ийн түлхүүр үг нь голдуу unit -
ийн төгсгөл end түлхүүр үг байдаг. Паскалийн тал байгаа учир илүү юм
ярих боломжгүй байна. Хэдий ийм боловч интерфейс ба implementation -
ийн жишээ нь танд ойлголтыг жаахан төрүүлэх болно.
DoSomething гэж нэрлэгдэх процедур нь unit -ийг үүсгэнэ. Та бусад unit -
уудад DoSomething –ийг дуудагдахыг хүсч байна уу? Энэ тохиолдолд
DoSomething процедурыг интерфейс хэсэгт зарлах ба implementation хэсэгт
тодорхойлох хэрэгтэй. Доорх хэлбэртэй байна.
PUBLIC функцтэй unit
unit Unit2;
interface
procedure DoSomething;
implementation
procedure DoSomething;
begin
{ Code for DoSomething goes here. }
end;
end.
DoSomething процедур нь interface section -д зарлагдсан байгааг анзаар.
Тэгээд implementation section -д тодорхойлогдсон байгаа.
Initialization ба finalization хэсэг
Initialization ба finalization хэсэг нь unit -ийн шаардлагатай кодыг цэвэрлэх,
эхлэл хийх, гүйцэтгэх боломжтой. Initialization section -д ямар ч код unit
санах ойд ачаалагдах үед биелэгддэг. Finalization section -д unit санах
ойгоос ачаалагдаагүй байхаас өмнө биелэгддэг. Initialization section -
гүйгээр та finalization section -тай байх боломжгүй. Энэ хоёр нь хоёул
сонголт юм.
Unit –д хэрэглэгддэг түлхүүр үгүүд
Pascal unit бусдыг агуулж болдог ба сонголтын түлхүүр үг нь өөр өөр
зорилгоор нь хэсгүүдийг ангилдаг. Эдгээр түлхүүр үгүүдийн зарим нь олон
хэрэглээтэй. Дараах хэсэг нь unit –д хамаарагдах түлхүүр үгийг л
тодорхойлсон байгаа.
Const түлхүүр үг
Ер нь unit нь нэг түүнээс илүү const хэсгийн сонголттой байх боломжтой.
Const хэсэг бол түлхүүр үгээр тодорхойлогдсон байдаг. Тогтмолоор
зарлагдсан хувьсагчаар const хэсэг нь тодорхойлогдоно.
Constant бол өөрчилж болохгүй идентификатор юм. Жишээ нь таны
програмд олон хэмжигдэхүүн байдаг гэе. Үүндээ та тогтмол хувьсагчийг
ашиглах боломжтой. Const section -ийг доорх програмд нэмье гээд
төсөөлөөд үзье. Та const хэсэгт нэг тогтмолыг нэмэх ба өөр const хэсэг нь 2
тогтмолыг нэмсэн.
unit Unit2;
interface
const
AppCaption = ‘My Cool Program 1.0’;
procedure DoSomething;
implementation
const
BaseX = 20;
BaseY = 200;
procedure DoSomething;
begin
{ Code for DoSomething goes here. }
end;
end.
AppCaption Тогтмол нь interface section -д зарлагдсан учир unit -ийн аль ч
хэсэгт энэ нь хэрэглэгдэж болох ба uses жагсаалтанд байгаа аль ч unit -
ийн хувьд мөн адил байна. BaseX and BaseY хувьсагчууд нь unit дотроо
боломжтой яагаад гэвэл тэд implementation section -д зарлагдсан.
Тогтмол түлхүүр үг нь нэгээс илүү хэрэглээтэй байж болно.
Type түлхүүр үг
Шинэ нэр томъёо: Type түлхүүр үг нь таны програм хэрэглэх шинэ
төрлийг зарлахад хэрэглэгддэг. Шинэ төрлийг зарлах нь esoteric
програмчлалын технологи бөгөөд энд тайлбарлах нь хэцүү болно. Доор 20
байтын массив таны application -д хэрэгтэй байгаа ба энэ төрөл нь дахин
дахин хэрэглэгдэнэ. Та доорх шиг зарлаж болно.
Type
TMyArray = array [0..19] of Byte;
Та одоо array [0..19] гэж бичихийн оронд TMyArray гэсэн төрлийг ашиглах
боломжтой.
“Var “Түлхүүр үг
Шинэ нэр томъёо: Энэ түлхүүр үг нь хувьсагчууд байдаг кодын хэсгийн
зарлалтын үед хэрэглэгддэг.
Энэ түлхүүр үгийг та элдэв хувьсагчуудыг зарлахад хэрэглэж болно. Var -
ийг зарлах хэдэн байрлал байдаг. Unit -ийн түвшинд var -ийг та зарлаж
болно. Мөн процедур, функцийн түвшинд var -ийн хэсэг байж болно.
unit Unit2;
http://www.csms.edu.mn/cheri/
interface
type
TMyArray = array [0..19] of Byte;
const
AppCaption = ‘My Cool Program 1.0’;
var
X : Integer;
MyArray : TMyArray;
procedure DoSomething;
implementation
const
BaseX = 20;
BaseY = 200;
procedure DoSomething;
begin
{ Code for DoSomething goes here. }
end;
end.
Const түлхүүр үг шиг, var -т бас олон хэрэглээ байдаг. Энэ нь бас функц,
процедурын параметр, хувьсагч параметруудыг зарлахад хэрэглэгддэг.
Тэмдэглэгээ: var -аар тодорхойлогдсон хэсэг нь түлхүүр үгээр эхэлж,
дараагийн unit -ийн түлхүүр үгээр дуусна.
Кодын тайлбар
Паскал хэл рүү нарийвлан орохын өмнө кодын тайлбарын тухай товч
танилцуулъя. Тайлбар нь таны source кодод текст хэлбэрийн тайлбар өгөх
зорилготой байна. Тайлбар нь код юу хийхийг тодорхойлоход хэрэглэгдэх
ба зохиогчийн эрхийн мэдээллийг хангах, өөртөө эсвэл бусдад тэмдэглэл
хийхэд л ашиглагддаг.
Тайлбар нь ялгаатай 3 аргаар тодорхойлогддог. Дараах зүйлүүд нь бүгд
шугмын хувьд хүчинтэй байна.
{ Don't forget to free this memory! }
{
ADTAPI.PAS 2.50
Copyright (c) TurboPower Software 1996-98
}
(* Оюутнуудаа энэ кодыг засах хэрэгтэй *)
// Энэ үнэн зэрлэг код
{ Энэ код дээр дараа тухтай ажиллана }
Магадгүй Delphi –д ихэнх тайлбарын төрөл нь угалзан хаалтыг хэрэглэдэг.
“{“ нь эхлэх үед тайлбарыг, ”}” –нь тайлбарын төгсгөлд хэрэглэгдэнэ.
Тайлбарын өөр нэг нь (*тайлбар эхлэх,ба *) байдаг. Энд бас нэг тайлбарын
тэмдэг байдаг: (*/*) тайлбарын тэмдэглэгээ нь том хэмжээний тайлбарыг
хийхэд болно. Эдгээр тайлбарын төрлүүд нь нэг эсвэл олон мөрт
тайлбарыг хийхэд ашиглагдана.
Тэмдэглэгээ: Угалзан хаалт нь Паскалд өөр хэрэглээтэй байдаг. $ -ийг
хэрэглэх үед хаалт нь компиляторын директорыг заадаг. Компиляторт
compiler hints үүсгэхгүй гэж зааж өгөн source коддоо {$HINTS OFF} гэж
бичих хэрэгтэй. Компилятор энэ мөрийг хараад unit -д дохио өгөхөө
{$HINTS ON} –тэй тулаад зогсооно.
Тайлбарын 3 дахь хэлбэр нь давхар зураас байдаг. Энэ нь голдуу С -
хэлбэрийн тайлбар гэгддэг яагаад гэвэл С ба С++ үүнийн хэрэглэдэг. Энэ
хэлбэр нь нэг мөрөнд хэрэглэгддэг. Delphi -д энэ хэлбэр ажилладаггүй
гэдгийг хэлье.
Тэмдэглэгээ: Энд угалзан хаалт хэрэглэсэн байгаа. ”//” -ийг богино
тайлбарт болон тестийн зорилгоор ашигласан .
Аль ч тайлбарлагдсан текст нь компиляторт хамааралгүй байдаг. Хэрэв та
default Delphi IDE settings -ийг ашиглаж байгаа бол бүх тайлбар мөр нь
бичмэл хөх текст байгаа. Энэ нь тайлбарыг хурдан ялгахад дөхөм байдаг.
Тэмдэглэгээ: Хэрэв та багийн бүрэлдэхүүнтэй програмчлалын ажил
хийдэг бол та хамтран ажиллагчдынхаа код, бичлэгийг уншдаг байх.
Кодонд товч тайлбар хийх нь аль ч програмистад цагийг нь хэмнэнэ. Та
ганцаараа ажилладаг гэсэн ч тайлбар бичих нь чухал. Та бичсэн кодоо
ямар амархан мартаж байгаагаа хараад л гайхна. Сайн кодын тайлбар нь
таны хамтрагчийн цагийг хэмнээд зогсохгүй таныг ч бас аварна. Кодын
тайлбар бичихээ бүү март!
Хувьсагчид
Хувьсагчид нь хэрэглэгдэхээсээ өмнө зарлагдсан байдаг. Та хувьсагчдыг
кодын тусгай хэсэгт зарлах ба var түлхүүр үгээр тодорхойлох хэрэгтэй.
Жишээ нь:
var
X : Integer; { X хувьсагч нь integer төрөлтэй }
Y : Integer; { Байршлын y утга }
Өмнө нь “var” түлхүүр үгийн тухай Паскалийн unit -ийн нэр томъёонд
дурдсан билээ. Тэр хэсэгт unit -д хувьсагчуудыг хэрэглэдэг ба unit -ийн var
хэсэгт зарладаг гэж үзсэн билээ. Тэр нь үнэн ч та бас функц,
процедуруудыг энэ хэсэгт зарлаж болно. Функц, процедурт хувьсагчуудыг
зарлах боломжийг энэ нь танд олгож байгаа болно. Доорх жишээ нь
процедурт var хэсэг байна.
procedure TForm1.Test;
var
S : string;
begin
S := ‘Hello World!’;
Label1.Caption := S;
end;
Та хувьсагчаа зарласны дараа үүнийгээ санах ойд өгөгдлийг зохицуулахад
хэрэглэж болно. Энэ мэдээж танд нэг их сэтгэгдэл төрүүлэхгүй байх гэхдээ
хэдэн жишээг танд танилцуулъя. Дараах кодын хэсэг нь X, Y гэж
зарлагдсан хувьсагчуудыг хэрэглэсэн. Мөр болгоны эцэст байгаа тайлбар
нь юу биелж байгааг тайлбарлана.
X := 100; { ‘X’ нь одоогийн утга нь: 100 }
X := X + 50; { ‘X’ нь одоогийн утга нь: 150 }
Y := 150; { ‘Y’ нь одоогийн утга нь: 150 }
X := X + Y; { ‘X’ нь одоогийн утга нь: 300 }
Inc(X); { Нэмэгдүүлж байна. ‘X’ нь одоогийн утга нь: 301 }
Хувьсагч бол компьютерийн санах ойд байрласан хэсэг утга юм. Эрхэм
уншигч та энэ кодны тухай зарим зүйлсийг тэмдэглэж аваарай. Юуны
түрүүнд Х хувьсагчийн өөрчлөлт (Бид дараа Object Pascal хэлний
хувьсагчийг удирдах оператор, функц, процедурын тухай үзэх болно.)
Дараах хувьсагчууд нь нэмэлт, сонгогдсон утга юм.
Програмын кодын мөр бүрийн төгсгөлд цэг таслал (;) тавидаг.
САНАМЖ: Паскаль хэлийг эхлэн суралцагчид програмын кодуудын
хоорондын ялгааг мэддэг байх хэрэгтэй. (зарлагдсан өгөгдөл, утга,
хувьсагч, илэрхийлэл г.м)
c := a + b;
Дээрх жишээнд с хувьсагчид a болон b хувьсагчдийн нийлбэрийн утгыг
олгож байгаа үйлдэл болно. Энд a + b нь илэрхийлэл юм. Нэг мөрөнд
олон илэрхийлэл бичигдэж болох бөгөөд төгсгөлд нь цэг таслал
тавигдана. Зарим тохиолдолд цэг таслал тавигдахгүй байж болдог. Үүнийг
бид дараа нь үзнэ.
Хувьсагчийн нэрийн ард хувьсагчийг тодорхойлсон төрөл бичигдэнэ. Функц
болон процедурт хувьсагч, хувьсагчийг тодорхойлсон төрлийг зарлаж
өгдөг. Мөн хувьсагчийн нэрэнд том жижиг үсэг болон доод зураас, тоог
хольж хэрэглэж болно. Ихэнхдээ том үсгээр эхэлдэг ба харин доод
зураасаар эхлэхийг зөвшөөрдөггүй. Хэдийгээр хувьсагчийн нэр нь 255
хүртлэх тэмдэгтээс тогтож болох боловч яг үнэндээ 20 тэмдэгт ч гэсэн
ашиглахад хэцүү байдаг.
МашУртХувьсагчийнНэр : Integer; { урт хувьсагчийн нэр }
Миний_хувьсагч : Integer; { доогуур зураас ашигласан }
x : Integer; { нэг тэмдэгт ашигласан }
X : Integer; { нэг тэмдэгт ашигласан}
Тэмдэглэгээ2 : string; { үсэг болон тоо ашигласан }
САНАМЖ: Паскал хэл нь тохиолдлыг нарийн мэдэрч
чаддаггүй. Жишээ нь:
var
XPos : Integer;
{ ...later }
XPos := 20;
XPOS := 200;
xpos := 110;
XpoS := 40;
Паскаль хэл нь С ба С++ хэлтэй харьцуулахад ойлгомж
муутай байж болох юм. Гэхдээ та удахгүй үүний ялгааг олж,
ашиглаж сурах болно.
САНАМЖ: Паскал хэл нь тохиолдлыг нарийн мэдэрч чаддаггүй
боловч та програмдаа тэмдэгт мөртэй ажиллахдаа том үсэг
ашиглаж сурах хэрэгтэй.
Обьект Паскал хэлний Өгөгдлийн төрөл
Шинээр: Объект Паскалийн өгөгдлийн төрөл нь санах ойд мэдээллийг
хадгалдаг хөрвүүлэгч /compiler/ аргыг тодорхойлсон.
Зарим програмчилалын хэлэнд хувьсагч олон төрлийн утгатай байж
болдог. Жишээ нь доорх BASIC код юм.
X = -1;
X = 1000;
X = 3.14;
BASIC хэлэнд тооны төрөл хэмжээг тааруулахын тулд санах ойн
зохицуулалтад анхаарах хэрэгтэй.
Хувьсагчийг зарлах
Паскал хэлэнд хувьсагчийг програмд ашиглахаасаа өмнө төрлийг нь
зарлаж өгөх ёстой.
var
X1 : Integer;
X : Integer;
Y : Double;
Z : Byte;
{ ...ө.х }
X1 := -1;
X := 1000;
Y := 3.14;
Z := 27;
Өгөгдлийн төрлөө зөв сонгосноор програмын үр дүн зөв гарна гэсэн үг.
Тиймээс програмаа ажиллуулахаас өмнө өгөгдлийн төрлөө сайн нягтлаж
шалгах хэрэгтэй.
Зарим өгөгдлийг signed, unsigned –аар өргөтгөж болдог. Өгөгдлийн signed
төрөл нь эерэг ба сөрөг утгыг авдаг бол unsigned төрөл нь зөвхөн эерэг
утгыг авдаг. Хүснэгт 1.1 д Паскалийн үндсэн өгөгдлийн төрлүүдийн санах
ойд эзлэх хэмжээ болон авч болох утгын хязгаарыг үзүүлэв. Хүснэгтэд
"String" буюу тэмдэгт мөрийг оруулаагүй. Харин "Strings" гэсэн дараагийн
бүлэгт авч үзнэ.
ХҮСНЭГТ 1.1. ОБЪЕКТ ПАСКАЛД АШИГЛАДАГ ӨГӨГДЛИЙН ТӨРЛҮҮД (32-BIT).
Дээрх хүснэгтэд үзүүлснээр 32 битийн орчинд Integer, LongInt төрлүүд нь
санах ойд ижил 4 байт эзлэж байна. Энэ нь Delphi 4.0 -ийн орчинд нийцэж
байна. Харин 16 битийн орчинд Integer нь 2 байт эзлэж байхад Longint нь 4
байт эзлэдэг.
Ихэнх програмистууд LongInt –ээс илүү Integer –г өргөн хэрэглэдэг.
Мөн Int64, Comp (computational) төрөлүүд нь авч болох утгын хэмжээ ижил
байна. Харин ялгаатай тал нь өөрсдийн дотоод хөрвүүлэлт хийдэг арга юм.
Int64 нь integer төрөл, харин Comp нь real төрөл юм.
Real ба Double төрлүүд нь ижил юм. Delphi програмын өмнөх хувилбарт
Real төрөл нь 6 байт байсан бол одоо 8 байт болсон. Энэ өөрчлөлт нь Real
төрлийг өнөөгийн хэв маягт ашиглах нөхцлийг бүрдүүлж өгсөн хэдий ч
Delphi програмд ашиглагдахдаа Double төрлөөс багаар ашиглагддаг буюу
хуучирсанд тооцогддог.
САНАМЖ: Windows нь 2,147,483,647 (integer –н maximum утга)
– аас илүү утга буцааж чадах GetDiskFreeSpaceEx функцыг
агуулдаг.
САНАМЖ: Single, Double, Extended, Currency өгөгдлийн
төрлүүд нь float төрөлд хамаарагдана.(10 -тийн тооллын
систем). Харин бусад төрөлтэй integer –ээр холбогддог. integer
нь бутархай тоон утгыг илэрхийлдэггүй. Жишээ нь дараахь
кодод буруу зарласан байна.
var
X : Integer;
{ Дараа нь... }
X := 3.75;
Энэ үед алдааг тань Паскал хэл тэр дор нь танд хэлж өгнө.
Харин та үүнийг мэдсэнээр float төрөл нь Windows орчинд
ямар их ашиглагдахыг анзаарах болно.
Өгөгдлийн төрлүүдийн хоорондох хөрвүүлэлт
Объект Паскаль нь өгөгдлийн төрлүүдийн хооронд хөрвүүлэлт хийж
чаддаг. Жишээ нь:
var
Res : SmallInt;
Num1 : Integer;
Num2 : Integer;
{ Дараа нь... }
Num1 := 200;
Num2 := 200;
Res := Num1 * Num2;
SmallInt дэх Integer төрөлтэй хоёр өгөгдлийг хооронд нь үржүүлж үр дүнг нь
гаргаж байна. Энэ томъёо нь хоёр өгөгдлийн төрлийг холисон хэдий ч
Обьъект Паскаль хөрвүүлэлт хийж чадаж байна. Хариу буюу үр дүн нь -
25,536 гарна. Хүснэгт 1.1 -д үзүүлснээр SmallInt нь хамгийн ихдээ 32,767
утга авдаг. Тэгвэл энэ 32,767 дээр нэгийг нэмбэл хариу нь -32,768 болно.
Та үүнийг туршихын тулд доорхи зааврын дагуу ажилларай.
1. Шинэ проект нээж form -д label ба button -г байрлуул.
2. button дээр Double-click хийж OnClick event -ийг сонго.
3. Дараахь байдлаар бичнэ.
procedure TForm1.Button1Click(Sender: TObject);
var
X : SmallInt;
begin
X := 32767;
X := X + 1;
Label1.Caption := IntToStr(X);
end;
4. Run хийж button товчоо дар.
Label -ийн caption дээр -32768 болж өөрчлөгдснийг та харах болно.
/IntToStr функц нь integer -ийн утгыг string болгон хөрвүүлнэ./ Дээрх дасгал
32767 нэмэх 1 тэнцүү 32768.
Дээрх жишээ нь overflow ба wrapping гэж юу болохыг харуулж байгаа юм.
Хувсагчдын утгын хувьд overflow буюу орон халилт үүсэхээргүй /ө.х
maximum -аас бага/ байх ёстой. Integer төрөл нь ойролцоогоор –2 -оос +2
тэрбумын алслалттай байдаг.
Зарим тохиолдолд Object Pascal нь хөрвүүлэлт хийж чаддаггүй. Сompiler
error нь Integer Real хоёр хоорондоо хамааралгүй төрлүүд гэж мэдээлнэ.
Сompiler error нь тодорхой төрлүүдэд хадгалагддаггүй утгуудыг зааж өгнө.
Жишээ болгон доорх кодыг авч үзье.
var
X : Byte;
begin
X := 1000;
end;
Тогтмолыг зарлах Сompiler error –г харуулж байна. Танд Х хувьсагчийн
утгыг 1000 гэж сонгож болохгүйг Сompiler нь мэдээллэх бөгөөд учир нь Х
хувьсагч нь Byte хэмжээтэй ба Byte нь 0 - 255 хүртэл хэмжээтэй байдаг.
Зөвлөгөө: Сompilе хийхдээ санамж анхааруулга алдааны
мэдээлэл зэргийг сайтар дагах хэрэгтэй. Тэдгээр нь
програмын кодын алдаа хэрэгцээтэй зарим мэдээллүүдийг
хэлж өгдөг.
Обьект Паскалийн Оператор
Хүснэгт 1.2 Түгээмэл ашиглагддаг операторууд.
Операторуудын хувьд байнга хэрэглэгдэж байдаг хэсэг нь байхад бас
хааях ашиглагддаг операторууд ч байдаг.
Аnd, or, not зэрэг түлхүүр үгс нь логикийн болон битийн гэсэн төрөлтэй
байдаг. Жишээ нь
if (Started = True) and (X > 20) then
Z := X and Y;
Дээрх жишээнд and үйлдэл нь хоёр янзаар хэрэглэгдэнэ.
Тогтмол
Өмнө хэлсэнчлэн тогтмол нь утгын хувьд өөрчлөгдлөггүй. Хувьсагчийн
утгыг програм бичигч өөрчилж чаддаг бол тогтмолын утгыг чаддаггүй.
Тогтмолыг зарлахдаа const түлхүүр үгийг ашигладаг.
const
DefaultWidth = 400;
DefaultHeight = 200;
Description = ‘Something really cool.’;
Тогтмолыг зарлахдаа (:=) тэмдэг бус = тэмдэгийг ашигладаг. Мөн ямар ч
өгөгдлийн төрлийг онцолж заадаггүй.
Массив
Массив буюу array нь бүлэг утгын цогц гэж хэлж тодорхойлж болно.
Өөрөөр хэлбэл нэг төрөлтэй хэсэг элемент юм. Зарлах үед түүнийг санах
ойн тодорхой зайд байрлуулдаггүй ба зөвхөн заагчийн эхлэх утга
тогтоогддог. Массивыг дараах хэлбэрээр зарладаг.
var
MyArray : array[0..4] of Integer;
Integer нь 4 байтын санах ойтой учраас дээрх массивын хувьд 5 индекстэй
тул санах ойд 20 байт эзлэж байна.
MyArray массив 5 гишүүн буюу индекстэй. Индексээ дугаарлаж
тэмдэглэхдээ [ ] хаалтад бичиж өгнө. Массивийн гишүүн тус бүрд доорх
жишээнд анхны утга олгов.
MyArray[0] := -200;
MyArray[1] := -100;
MyArray[2] := 0;
MyArray[3] := 100;
MyArray[4] := 200;
Дараагийн жишээнд 3 ба 4 –р индексуудын утгуудыг хооронд нь нэмж Х
хувьсагчид олгож байна.
X := MyArray[3] + MyArray[4]; { үр дүн 300 }
Олон хэмжээст массив
Массив нь олон хэмжээст байж болно. Өөрөөр хэлбэл санах ойд мөр
мөрөөрөө дараалж ажилладаг. Хоёр хэмжээст integer төрөлтэй массив
үүсгэхийн тулд кодыг дараахь хэлбэрээр бичнэ.
var
MdArray : array[0..2, 0..4] of Integer;
Энэ массив санах ойг 60 байтаар ачаалж байна. Массивын утга нь урд нь
санах ойд байрлаж байсан санамсаргүй өгөгдөл юм. Мөн индекс нь тэгээс
эхэлдэг. Массивийн элементүүдийг энгийн масив хэлбэрээр ашиглаж
болох ба [ ] хаалтын тусламжтай дараахь хоёр байдлаар ашиглаж болно.
Үр дүн нь ижил гарна.
X := MdArray[1][1] + MdArray[2][1];
X := MdArray[1, 1] + MdArray[2, 1];
САНАМЖ: Массивийн элементийн тооны хязгаарт байхгүй
индекс гарч ирвэл алдаа заана. Доорхи жишээнд үзүүлэв.
var
MyArray : array[0..4] of Integer;
X : Integer;
begin
X := MyArray[3] + MyArray[5]; { 5 дугаартай индекс байхгүй. }
end;
Тэгэхээр массивийн элементийн хязгаарыг анх зарлаж өгөх хэрэгтэй.
Жишээ нь 10*20 хэмжээтэй массив үүсгэе.
var
MyArray : array[10..20] of Integer;
10 баганатай 20 мөртэй хүснэгт мэтээр төсөөлье.
const
myArray : array[0..4] of Integer = ( -200, -100, 0, 100, 200 );
Их ба бага функц
Эдгээр функцуудыг массивт олон дахин ашиглаж болно. Хувьсагчийн утгын
дээд доод хязгаарыг массивт энгийн байдлаар зарлаж өгдөг. Бага /Low/
функц нь доод хязгаараас буцах үйлдэл /return/ хийдэг. Харин Их /High/
функц нь мөн адил массивын дээд хязгаараас буцдаг.
var
X, I, Lower, Upper : Integer;
MyArray : array[10..20] of Integer;
begin
{ MyArray массивын эхний хэсэг }
Lower := Low(MyArray); { Lower нь 10 }
Upper := High(MyArray); { Upper now contains 20 }
X := 0;
for I := Lower to Upper do
X := X + MyArray[I];
{ Х хувьсагч дээр ямар нэг зүйл хийнэ. }
end;
Массивийн хязгаарын гаднах утга нь ойртоход их ба бага функц тодорхой
биш хэрэглэгддэг.
Динамик Массив
Delphi 4 -т массивийг динамикаар оруулдаг. A динамикийн массивийн
эхний хэмжээг гаднаас зарласан ба массивийг зарлах цагт хэмжээг нь
тавьж агуулдаггүй. Дараа нь SetLength -ийн хэмжээг заан хэрэглэдэг.
Жишээ нь:
var
BigArray : array of Integer; { хэмжээ олгоогүй байна }
X : Integer;
begin
X := GetArraySize; { хэрэгтэй хэмжээг тодорхойлогч функц }
SetLength(BigArray, X); { динамикаар хэмжээ тогтоож байна }
{ одоо BigArray –г хэргэлнэ}
end;
Шинээр : A динамик массив нь массиваа санах ойд ачаалдаг. A динамик
массив нь програмд их бага хэмжээгээр хэрэглэгддэг.
Массивийн индекс бүрд элемент харгалзуулан байрлуулах нь ач
холбогдолтой. Санах ойд 10 integer хангалттай байлгах хэрэгтэй гэвч
бусад нь магадгүй 1000 integer хангалттай хэрэглэдэг.
Массиваа Copy функцээр байрлуулан хэрэглэж чадна.
Жишээ нь массив нь 100 ба 200 хэмжээтэй элемент хэрэглэдэг :
Copy(BigArray, 200);
Массивдаа утгыг нь хадгалсан ба массивийн хэмжээ нь 100 -с 200 элемент
болон өссөн.
Олон хэмжээст dynamic массивыг үүсгэх нь нэг хэмжээст массивыг
үүсгэхтэй бараг адилхан байдаг. Доор 2 хэмжээст массивыг үүсгэв. Код нь:
var
BigArray : array of array of Integer;
begin
SetLength(BigArray, 20, 20);
BigArray[0][0] := 200;
end;
Strings
Програмд String -тэй ажиллахад хэцүү. Object Pascal нь 3 string төрөлтөй:
long string, short string, ба wide string.
Нэмэлт string төрөлтөй, энэ нь төгсгөлгүй string-briefly ба stringmanipulation
функцтэй.
Short String
Богино string төрлийн урт нь тогтмол, тэмдэгтүүдийн хамгийн их хэмжээ нь
255 тэмдэгт байдаг. Богино string нь 1 -ээс 2 замтай ба 1 зам нь 255 byte
хэмжээтэй ShortString -д зарлагддаг.
var
S1 : ShortString; { 255 тэмдэгт }
S2 : string[20]; { 20 тэмдэгт }
String manipulation нь short төрөлтөй учир нь санах ой дахь string -ийн
хэмжээг өөрчлөхгүй. Богино string хуучин төрлийг нь бодох ба урт string
оруулна. Богино strings нь урт byte -тай учир нь string -ийн анхны элемент
нь уртаа агуулдаг. (тоо болон тэмдэгт). Short string -ийн анхны элементийн
утга нь string -ийнхээ уртыг тодорхойлдог. Жишээ нь :
var
S : ShortString; { 255 тэмдэгт }
Len : Integer;
begin
S := ‘Hello’;
Len := Ord(S[0]);
end;
Дээрх жишээнд string -ийн уртыг S[0] утга тодорхойлж байна. Мөн функцын
уртыг тодорхойлж чадна. Функцын урт нь bit байна.
Санамж : Ord функцын утгыг Char төрөл, integer утгаар
хувиргаж хэрэглэнэ. (дараалсан утга) Мөн Ord функц нь
жагсаалттай хамт хэрэглэгддэг.
Хэрэв та short string -ийн эхний элементийг хэрэглэх бол түүний урт нь
string байна. Тэгэхлээр програмын орчинд түүнийг хэрэглэх шаардлага
гарч ирж байна. Эхлэн суралцагч таны хувьд програм техникийн дэвшилтэт
технологид 0 байтын short string -ийг нэмж судлахыг санал болгож байна.
Long String
long string төрөл нь string объектэд динамик байдлаар байрладаг.
Хэмжээний хязгаар нь зөвхөн ачаалагдсан санах ойгоор тодорхойлогддог.
Объект Паскал нь санах ойд string -ийг байршуулж бас устгаж хэрэглэдэг.
Long strings нь харин маш их уян хатан чанартай бөгөөд заримдаа short
string шиг удаан болхи мэт нарийн төвөгтэй тэмдэгтүүдээ ачаалдаг.
Хэрэв үр дүн тань шүүмжлэлтэй санагдвал long string-ийг ашиглаарай.
Динамикаар санах ойд байрлуулснаар long string нь тэмдэгт мөрийн
гарчгийг өөрчлөх боломжтой болсон Доорх жишээнд string нь түлхүүр үг,
параметрийн хэмжээгүй зарлагдсан байна.
var
S : string; { динамикаар байрласан long string }
Учир нь string нь динамикаар байрласанд оршино. Харин танд одоо
үйлдлийн хэсэгт өөрчлөлт хийж чадах боломж үлдсэн шүү. Ер нь long string
нь хэрэглэхэд маш энгийн ба өөрөөр хэлбэл тэмдэгт мөрөө санах ойгоос
ачаалах үед зай завсар гэх мэтийн санаа зовоосон асуудал гарахгүй. Учир
нь энэ бүгд илүүчгүй дутуучгүй бүгд автомат юм.
Long string нь 0 элементийг зөвшөөрдөггүй бөгөөд хэрэв түүнд хандвал үр
дүн тань compiler error буюу алдаатай гарна гэсэн үг. SetLength функцийг
ашиглавал зохистой.
Wide String
Unicode төлөв байдалтай double-byte хэрэглэдэг. Windows API функцэд
хэрэглэгддэг. long string -ийн адилаар авах утгын хэмжээний хязгаар нь
зөвхөн ачаалагдсан санах ойгоор тодорхойлогддог. string объектэд
динамик байдлаар байрладаг. Үүнээс илүү деталчилсан мэдээллийг та
олж авч чадахгүй болов уу. Учир нь OLE function -той дуудуулах хязгаартай
байдаг.
Null /хоосон/ - Төгсгөгч Strings: PChar ба Char -ын Массив
Объект Паскал нь С ба C++ хэлнүүдээс string өгөгдлийн төрлөөрөө
ялгаатай. C ба C++ -д string нь 0 нь төгсгөлийг заадаг. Мөн массивын урт
нь байтаар биш байдаг. PChar төрлийг дүүргэж хэрэглэх хэрэгтэй ба
массивын бүх төрлийг ашиглаж болдог. Жишээ нь Windows MessageBox
функц юм. Энэ функц нь Windows -ийн стандарт message мэдээллүүдийг
дэлгэц дээр гаргадаг.
function MessageBox(hWnd: HWND; lpText, lpCaption: PChar; uType: UINT):
Integer;
Хоёр дахь ба гурав дахь параметрүүд нь массивын элементийг заагчаар
харуулж байна.(message box текст, message box caption). Эдгээр
функцуудыг та Delphi програмаас дуудан ажиллуулж болно. PChar type -
ийн жишээ код:
var
Text : string;
Caption : string;
begin
Text := ‘Шалгаж байна.’;
Caption := ‘Текст мэдээлэл’;
MessageBox(0, PChar(Text), PChar(Caption), 0);
end;
Дээрх жишээнд Pchar -ыг Pascal -ын long string, null-terminated string
ашиглан үзүүллээ. Харин та өөрөө Pchar -ыг үргэлжүүлж судлаарай.
var
Text : PChar;
begin
Text := ‘Шалгаж байна.’;
MessageBox(0, Text, ‘Message’, 0);
end;
Pascal -ын string нь хүчирхэг төдийгүй хялбарханаар хэрэглэгдэж байна.
Та үүнээс олон удаа хэрэглэх боломж байхгүй. Pchar -ыг long string, nullterminated
string руу хөрвүүлж болдгийг дээрх жишээ харууллаа. Төгсгөлд
нь та массивт Char төрлийн өгөгдлийг Pchar ашиглан байршуулж үйлдэл
хийж сурлаа.
var
Text : array [0..20] of Char;
begin
Text := ‘Шалгаж байна.’;
MessageBox(0, Text, ‘Message’, 0);
end;
Windows API функцийг дуудахдаа null-terminated string -ийг параметраар
ашиглавал илүү тохиромжтой.

Үндсэн Тэмдэгт мөр /String Basics/
Pascal нь нилээн хэдэн string төрлийн элементүүдтэй.
+ Operator
var
S1 : string;
S2 : string;
begin
S1 := ‘SW210 Kim’;
S2 := ‘Reisdorph’;
Label1.Caption := S1 + ‘ ‘ + S2;
end;
Дээрх кодод S1, S2 хувьсагчдийн үр дүнг label -ын Caption property –ээр
дамжуулан харууллаа. Одоо арай өөр жишээ үзье:
var
X : Integer;
begin
X := 199;
Label1.Caption := ‘The result is: ‘ + IntToStr(X);
end;
Энд IntToStr функц ашиглан 199 гэсэн тоог тэмдэгт мөр болгон
хувиргалаа.
Subscript Oператор
Тэмдэгт мөрөөс subscript ([ ]) –г ашиглан элемент бүрийг нь салган авч
болдог.
var
S1 : string;
S2 : Char;
begin
S1 := ‘Hello World!’;
S2 := S1[1];
Label1.Caption := S2;
end;
Дээрх жишээнд S2 хувьсагч нь Char төрлийн байна. Үр дүнд Н гэж
Label1.Caption дээр гарна. S[0] -ийг эхний элемент гэж long string, wide
string -үүд үздэггүй.
String -ийн контрол буюу тохируулга
Object Pascal нь String -ийн контрол буюу тохируулгыг шинээр нэвтрүүлж
өгсөн. Ихэвчлэн хэвлэдэггүй тэмдэгт мөрд ашигладаг.
Та control character хийхдээ # тэмдэг ашиглах ёстой. Доорх жишээнд (ASCII
27) гэж тэмдэглэжээ.
S := ‘This is a test. Escape follows.’#27’ Finished.’;
S1 := ‘This is a test. Escape follows.’;
S2 := ‘Finished.’;
S3 := S1 + #27 + S2;
Эндээс та хялбархан онол гаргаж болно. Form дээрээ button, label үүсгэ.
button дээрээ Double-click /хулганаа товших/ хийж event -ийг нь OnClick
болго:
Label1.Caption := ‘Line 1’ + #10 + ‘Line 2’;
Run хийж button товч дээрээ дар. Label 2 шугамаар мэдээллээ гаргадаг
гэдгийг та одоо мэдэж авлаа. Дээрх кодын хувьд (ASCII 10) -ыг 2 шугамаар
үзүүлхэд ашиглаж байна.
Том хэмжээний текстэн мэдээлэлийг нэг шугамаар авч болно.
(ойролцоогоор 200 орчим тэмдэгт орсон үед) Delphi Code Editor нь хамгийн
ихдээ буюу 1,024 тэмдэгтээс тогтож болдог. Ийм хэмжээний мэдээллийн
унших бүрэн бололцоотой гэж үздэг. Тэмдэгт мөрийн олон шугаман
хэлбэрийг + operator -той жишээг доор үзүүлэв.
MessageBox(0, ‘Энд маш урт message ‘ +
‘that seems to go on and on forever. In order ‘ +
‘to make the code more readable the message has ‘ +
‘been split across several lines of code.’, ‘Message’, 0);
Тэмдэгт мөрийн харьцуулах үйлдэл
String нь харьцуулах операторын тусламжтай харьцуулалт хийж чаддаг.
Хүснэгт 1.3 их ашиглагддаг операторуудыг жагсаан бичив.
ХҮСНЭГТ 1.3. ТЭМДЭГТ МӨРИЙН ХАРЬЦУУЛАХ ОПЕРАТОР.




                                        Эдгээр операторууд нь ASCII кодоор
харьцдаг. Мөн үйлдэлд биелэгдэх
дарааллаараа ялгагдана. Тэнцүү үйлдлийн буруу ашигласан жишээ:
if FileName = ‘TEST.TXT’ then
OpenFile(FileName)
else
ReportError;
String-Manipulation ФУНКЦ
Ихэвчлэн ашиглагддаг функцуудын тайлбарыг доорх 1.4 хүснэгтэд үзүүлэв.



ХҮСНЭГТ 1.4. ТЭМДЭГТ МӨРИЙН ФУНКЦ БА ПРОЦЕДУРУУД
САНАМЖ: Нэмэлт функцуудын талаар мэдээллийг Delphi
програмын help руу орж additional дотроос олж аварай.

Одоо жишээн дээр StrToInt function туршиж үзье.
Value := StrToInt(Edit1.Text);
Өөр StrToXXX функц (StrToFloat, StrToDate гэх мэт) дээрх замын дагуу
ажиллана.
Format function нь тэмдэгт мөр ба нэмэлт аргументэд хэвшүүлэлт хийдэг.
Доорх жишээн дээр үр дүнг нь үзье.
var
S : string;
X : Integer;
begin
X := 10 * 20;
S := Format(‘Үр дүн: %d’, [X]);
Label1.Caption := S;
end;
Үр дүн: 200
Энэ жишээнд %d тэмдэгт нь integer утгыг илэрхийлж байна. Мөн бусад
тэмдэгтэй хувьсагчаар дамжуулан ажиллана. Жишээ нь:
var
X : Integer;
Y : Integer;
begin
X := 20;
Y := 5;
Label1.Caption := Format(‘%d + %d = %d’, [X, Y, X + Y]);
end;
Дэлгэцэнд үр дүн нь гарахдаа дараах байдалтай байна.
20 + 5 = 25
Энэ жишээнд label -ын Caption property –г ашиглалаа. Өмнөх болон дараа
дараагийн жишээнд ашиглаж бас болно.
"Format Strings" –н талаар илүү их мэдээлэл үзье гэвэл Delphi help -ээс
аварай.
 Windows үйлдлийн системийн ерөнхий зохион байгуулалтын талаар
товчхон
Windows-н өмнөх хувилбарууд MS-DOS үйлдлийн системтэй сайн зохицон
ажилладаг боловч үйлдлийн систем гэсэн утгандаа бүрэн хүрч чадахгүй
байсан
бол өнөөгийн Windows95 өөрөө 1 цогц үйлдлийн системийг илэрхийлж
чадах
болжээ.
Windows95 үйлдлийн систем нь ерөнхийдөө 3 дэд системд хуваагддаг.
1. Win KERNEL
2. Win GDI
3. Win USER
Windows95 нь 16 болон 32 битийн программуудыг ажиллуулахдаа
системийн
виртуаль машин болон дээрхи 3 дэд системийн тусламжтайгаар зохион
байгуулдаг. Системийн виртуаль машин гэдэг нь Windows-н бүх ажлыг
дэмжиж
байдаг Windows95-н бүрэлдхүүнд ордог үйлдлийн орчин юм. Мөн дээрхи 3
дэд
системийн ажлыг дэмжиж байдаг.
32 битийн win гэдэг нь санах ойн 32 битийн моделийг ашиглаж байдаг
windows-н
шинэ хэрэглээ юм. Харин 16 битийн win гэдэг нь бидний урьд өмнө
хэрэглэж
байсан windows-н хуучин хувилбарууд юм. Тэдгээр нь санах ойн
сегментийн
хаяглалтийг буюу чухамдаа 80286 процессорын санах ойн моделийг
ашигладаг.
Тэдгээр нь Windows 3.x –нх шиг ажиллахдаа Windows95 нх шиг нэгдмэл нэг
орон зайг хуваан эзэмшдэг бөгөөд олон бодлогын зарчимтай
зохицодоггүй.
Windows95-н хэрэглээний программийн төвшинд Windows 3.x –н API бүрэн
тохирч ажилладаг.
Win32 API нь Microsoft –н WinNT, Win32S, Win3.1-н өргөтгөл win32 битийн
интерфейс юм. Windows95 үйлдлийн систем нь олон бодлогын аргад
үндэслэн
дээрх application-уудыг жолооддог. Бүрхүүл гэдэг нь хэрэглэгчийг
системтэй
харилцах үйлдлийг хангаж байдаг 32 битийн Windows application юм.
Windows95-н бүрхүүл нь windows3.x-н программ менежер, файл менежер
зэргийг нэгтгэсэн application юм.

KERNEL
KERNEL нь windows-н доод түвшиний динамик санах ойн функцүүдээр
хангаж
өгч байдаг үйлдлийн системийн цөм юм. Энэ нь 16 ба 32 битийн windows-н
үйлдлүүд тохирох
үйлчилгээг хангадаг.

GDI
GDI нь graphic device interface гэсэн товчилсон үг. Энэ нь Windows95-н
график
боломж болон дэлгэцэнд харуулах өнгө, хэлбэр дүрс, resolution-г хангаж
байдаг.
Win32 –т байдаг бүх шинэ боломжуудыг агуулна.

USER
USER нь дэлгэцийн диспетчер юм. Windows-н интерфейсийг үүсгэх,
удирдах
функцүүдийн цргц юм. Жишээ нь Хэрэглэгч хэд хэдэн MS-DOS –н Prompt
гарган
ашиглаж болно.
Хэрэглэгч арай илүү виртуалчилах боломжийг хангадаг хэд хэдэн давуу
тал гарч
ирлээ.

Системийн виртуаль машин
Windows-н API функцийн төвшин
Дээр харлуулсан орон зайг хамтарч эзэмшинэ. Энэдээс Windows95 нь 16
битийн
программуудад тусад нь орон зай гарган өгч орчинийг нь бүрдүүлж өгдөг
нь
харагдаж байна.
Windows
32 bit
Windows
32 bit
16 bit
16 bit
Бүрхүүл
Windows-н дэд систем
Win KERNEL
KERNEL
Win USER Win GDI

Файл удирдах дэд систем
Сүлжээ удирдах дэд систем
Үйлдлийн системийн үйлчилгээ
Виртуал машин удирдах дэд
систем
Хөтлөгч хэрэгслүүд
Бүрхүүл
Энэ нь хэд хэдэн системийн удирдлагыг хэрэглэх нөөцүүдийн
боломжуудаар
хангах программ юм. Windows95-үйлдлийн системийн бүрхүүл нь дэлгэц
системийн нөөцүүдтэй харилцан ажиллахыг удирдан зохион байгуулдаг.
API
Хэд хэдэн зуун API функцүүд windows-н бүх системийн хийх үйлдчилгээг
хангаж
өгдөг. Windows-н орчин бол интерфейс баазын дуудалтаар ханддаг.
Үүнийг API
гэдэг.
Системийн виртуаль машин
Windows-н бүх application ситемийн виртуаль машины тухайн хил хязгаарт
үйлдлээ гүйцэтгэдэг. 16 битын application –ууд өөрийн нэгдмэл хаяглалын
орон
зайд ажилладаг.
Энэ нь application бүрийн өөрийн орон зайн хаяглалтыг 32 битын
хаяглалтаар
хангаж дэмжиж өгдөг.
MS-DOS-н виртуаль машин
Windows95 олон тооны MS-DOS-н программыг хамгаалалтын горим эсвэл
8086
виртуаль үйл ажиллагаа ажиллуулж дэмжиж байдаг. MS-DOS-н виртуаль
машин
хэд хэдийг үүсгэж болно.
Виртуаль машины диспетчер
Виртуаль машины диспетчер нь үнэндээ үйлдлийн системийн зүрх юм.
Энэ нь
доод түвшиний санах ойн удирдлага болон драйверуудын виртуаль
зохион
байгуулалтын үйлчилгээг хянаж ажилллаж байдаг.
| Windows95 –н диспетчерүүд
Windows95 –н виртуаль машины диспетчер дотор хоёр диспетчер
ажиллаж
байдаг.
Үүнд: Үндсэн диспетчер. (primary scheduler)
Энэ нь thread-дын приоретитүүдийг тооцоолж хариу өгнө.
Квантын диспетчер (timeslice scheduler)
Энэ нь хугацааны квантуудад хувааж хэсэгчлэн ажилуулана.
Үнэн хэрэгтээ квантын диспитчер аль thread-н ямар хувийг нь ямар
хугацаанд
процессороор үйлчлүүлэхийг тооцоолно.
Процесс 0-31 хүртэл приоритеттой байдаг ба үүнийг үндсэн диспетчер
бодоод
квантын диспетчер лүү гаргана. Хэрвээ процессийн хугацааны квант 100
хувь
болсон бол VMStat_Background эсвэл VMStat_High_Pri_Background гэдэг
төлвийг үлдээдэг.

DELPHI ДЭЭР АНХНЫ АЛХАМ ХИЙЦГЭЭЕ
Та мэдэж байгаа Delphi бол Borland пүүсийн Windows-ийн орчны
програмыг
бичдэг дээд түвшний програм юм. Delphi -ээр та Windows -ийн орчны
программыг урьд байгаагүйгээр хялбар бөгөөд хурдан бичих боломжтой.
Win32 эсвэл Win32 graphical user interface (GUI) -ийг та нээж ажиллуулж
болно. Win32 GUI -ийг ажиллуулснаар та дээд түвшний програмчлалын
хэлний үнэн хүч чадлыг мэдрэх болно. Мөн та Web browsers –ийг
минутийн
дотор үүсгэдэг шигээ form дээрх ActiveX control -оор тусгай програмуудыг
үүсгэж болно. Энэ мэт олон зүйлийн давуу талууд Delphi -д байдаг ба
Delphi нь өөрөө кодоо үүсгэдэг тул програмын биелэлт хурдан байдаг.
Танд л гэж хэлэхэд Pascal -ын программчлалыг жаахан судлах хэрэгтэй.
Delphi нь Windows програмчлалын доод түвшний нарийн зүйлүүдийг
нуудаг
ба энэ нь танд чухал биш. Эцэст нь та програмист л болохыг хүсч байгаа
бол энэ нь бүгдийг судлах хэрэгтэй. Delphi нь танд урьд байгаагүй хөгжил
таашаалыг авчрах болно. Ингээд ханцуйгаа шамлан бүх ажилдаа
орогтун.
Delphi сэтгэлийн таашаалыг авчрах агуу программ юм.
Delphi IDE -ийг өнгөц харъя
Энэ хэсэг нь Delphi integrated development environment (IDE) -ийг агуулна.
Windows програмчлалыг судлах бүхэнд энэ нь хэрэгтэй юм. Та одоо
Delphi
-ийг эхлэх урам зоригтой байгаа гэж бодож байна. Программыг
эхлүүлэхэд
та хоосон form ба IDE -ийг харах болно.
Delphi IDE нь 3 хэсэгт хуваагдана. Дээд хэсгийг нь үндсэн цонх гэдэг. Энэ
нь toolbars болон Component palette -ийг агуулдаг. Delphi toolbars нь
compiling project, хадгалах, нээх үйлдлүүдийг нэг товшилтоор гүйцэтгэх
боломжийг танд олгоно.
Component palette нь wide array of components агуулдаг ба түүнийг form
дээр чирч тавьж болно. Component -ууд нь text labels, edit controls, list
boxes, buttons ба бусад болно. . Componentууд нь бүлгүүдэд хуваагдсан
байна. Component palette -ийн дээд талын tab -ыг харав уу?
Дээр нь очоод click хийвэл өөр өөр component гарч ирнэ. Form дээрээ
component -оо байрлуулахын тулд Component palette -ийн компонентын
button дээр click хийж component -оо харагдах хэсэгт нь очоод click хийх
хэрэгтэй. Яаж хэрэглэх үр дүнд юу болох бол гэж санаа зовох хэрэггүй.
Эдгээр нь хормын дотор болно.
Шинэ нэр томъёо: Component гэдэг бол software -ийн 2 хэсгийг агуулсан
ба тусгай урьдчилан тодорхойлогдсон функц үйлдлийг нь гүйцэтгэж
байдаг. Жишээ нь: text label, edit control, list box.
Обьектийн инспектор
Үндсэн цонхны доор дэлгэцийн зүүн талд Object Inspector байна. Энэ нь
component -ийн properties ба events -үүдийг өөрчлөхөд ашиглагддаг.
Delphi
-тэй ажиллах явцдаа үргэлж Object Inspector -ийг та хэрэглэх болно.
Object
Inspector нь 2 хэсэгтэй. Properties tab ба Events. Component -ийн
properties
нь component -ийг яаж ажиллуулахыг удирдана. Жишээ нь : Color property
-
ийг өөрчлөхөд background color -нь өөрчлөгддөг.
Шинэ нэр томъёо: property –нь component -ийн үйл ажиллагааг
тодорхойлдог.
Events хэсэг нь component -ын event -уудын жагсаалтуудаас бүрдэнэ.
Component дотор үйлдэл хийхэд event -ийг ашигладаг. Жишээ нь
component дарагдахад event нь component дарагдсан байна шүү гэж танд
хэлнэ.Та component -д хамаарах код бичиж болох ба тусгай үйлдлийг
гүйцэтгэхэд хэрэглэж болно.
Шинэ нэр томъёо: event бол цонх ба хэрэглэгчтэй ажиллах component -
ийн харилцан ажиллагааны үр дүн юм.
Delphi –ийн ажлын талбар
Delphi IDE -ийн үндсэн хэсэг нь ажлын талбар юм. Ажлын талбар нь Form
Designer -ийг үүсгэнэ. Энэ нь гайхмаар юм биш Form Designer нь өөрөө
form үүсгэдэг. Delphi -д form гэдэг нь программын цонхыг хэлнэ. Form нь
программын үндсэн цонх байж болно, dialog box эсвэл цонхны янз
бүрийн
хэлбэртэй байж болно.
Form Designer -ийг, form -ийг үүсгэх процессийн хэсэгт component -уудыг
нь байрлуулах, зөөх зэргээр ашиглаж болно. Form Designer -ийн ард
Code
Editor байдаг. Программын кодыг Code Editor дээр бичдэг. Application -ийг
үүсгэн ажиллах явцад Object Inspector, Form Designer, Code Editor, ба
Component palette -ууд нь харилцан уялдаатай байдаг. Та Delphi IDE-ийг
мэддэг боллоо одоо ямар нэг зүйлийг хийж үзье.
Таны эхний програм: Hello World
Дэлгэцэнд Hello World гэж хэвлэх нь бүх програмчлалын хэлний сурах
бичигт байдаг уламжлалт програм юм. Заавал ийм байх албагүй гэж би
боддог. Pascal хэлийг өмнө нь судалсан бол сайн юм. Та гайхаж магадгүй
юм, Delphi танд одоогийн Windows program -ийн Hello World -д хүрэх
хамгийн хялбар замыг зааж өгнө.
Програм бичих
Та яг одоо Delphi -ийг ажиллуулж байгаа бол blank form -ийг харсан байх
ёстой. Form нь Form1 гэж нэрлэгдсэн байдаг. Form -ийн зүүн хэсэгт Object
Inspector form -ийн properties -үүдийг харуулна. Object Inspector -ийн title
bar
дээр товш. Caption property нь идэвхжих ба cursor нь тэнд юу хийхийг
хүлээнэ. Hello World! гэж бичин form -ийн caption -ийг өөрчил.
Санамж: Properties -ийг өөрчлөх бол Delphi шууд өөрчлөлтийг нь
гаргадаг.
Caption -ийг өөрчлөх үед form -ийн window caption нь өөрчлөгдөж байгааг
ажигла.
Toolbar дахь Run товчийг товш. Form нь гарахдаа caption нь Hello World!. -
ийг гаргана. Энэ тохиолдолд ажиллаж байгаа программ нь бараг л blank
form шиг харагдана.
Програмыг өөрчлөх
Одоо программаа жаахан өөрчилье. Hello World чинь байгаа бол Close
button дээр товшин хаах хэрэгтэй. Form Designer дахин гарч ирэх ба form-
ийг өөрчлөх боломжтой. Программыг илүү сайжруулахын тулд цонхны
төвд
текст нэмэх хэрэгтэй. Үүнийг хийснээр form -доо text label -ийг та нэмж
өгнө.
1. Эхлээд Component palette -ийн Standard хэсэгт товш.
2. Label button -ийг товшоод form -ийн хаа нэгтээ товш. Label
component нь form -ийн дотор байна.
3. Object Inspector дээр буцаад оч. Label1 -ийн properties -ууд гарч
ирсэн байгаа. Caption property нь бас идэвхжсэн байгаа.
4. Object Inspector эсвэл Caption property -ийн titlebar дээр товш
тэгээд Hello World! гэж бич. Form -дээрх label нь Hello World!. гэж
гаргана.
5. Үүнийг хийсэн бол label -ийн text -ийн хэмжээг өөрчилж чадна.
Font property дээр 2 товш. Property нэмэлт font attribute -ийг
харуулахын тулд өргөн болно.
6. Font -ийн Size property -ийг 24 болгоод form -дээрээ товш. Label
шинэ хэмжээтэй болно.
Програмаа хаах
Delphi -д жаахан дурласан бол энэ нь бүхнээс илүү таны сонирхлыг
татна.
Дараа нь юу хийх вэ гэвэл одоогийн прожектийг хаах хэрэгтэй. File
цэсний
Close All -ыг сонго. Project1 -ийн өөрчлөлтийг хадгалах бол No -ийг сонго.
Таны 2 дахь программ: Hello World, II хэсэг
Pascal -ийг судлахаасаа өмнө Delphi хэрхэн ажиллдаг талаар мэдэх
хэрэгтэй. Танд Pascal –ийн олон төрөл дээр ажиллахад энэ нь хэрэг
болно.
Энэ хэсэг нь Delphi -ийн үнэн хүчийг хальт агуулна.
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi
Delphi

Más contenido relacionado

Destacado (20)

Лекц-1
Лекц-1Лекц-1
Лекц-1
 
For давталт ашиглах
For давталт ашиглахFor давталт ашиглах
For давталт ашиглах
 
Lec1 pragraming language
Lec1 pragraming languageLec1 pragraming language
Lec1 pragraming language
 
тест нараа
тест нараатест нараа
тест нараа
 
Lec2 c++helnii undeslel
Lec2 c++helnii undeslelLec2 c++helnii undeslel
Lec2 c++helnii undeslel
 
Java lecture3
Java lecture3Java lecture3
Java lecture3
 
Лекц 2 (Блок схем)
Лекц 2 (Блок схем)Лекц 2 (Блок схем)
Лекц 2 (Блок схем)
 
Лекц 3 (Давталт)
Лекц 3 (Давталт)Лекц 3 (Давталт)
Лекц 3 (Давталт)
 
10r angiin jishig daalgawar
10r angiin jishig daalgawar10r angiin jishig daalgawar
10r angiin jishig daalgawar
 
Програмчлалын хэл
Програмчлалын хэлПрограмчлалын хэл
Програмчлалын хэл
 
алгоритмчлалын үндэс
алгоритмчлалын үндэсалгоритмчлалын үндэс
алгоритмчлалын үндэс
 
цахим тест
цахим тестцахим тест
цахим тест
 
лекц-1
лекц-1лекц-1
лекц-1
 
лекц 2
лекц 2лекц 2
лекц 2
 
Lab3 it101
Lab3 it101Lab3 it101
Lab3 it101
 
Лекц 7 (Давталтуудын Си хэлэнд)
Лекц 7 (Давталтуудын Си хэлэнд)Лекц 7 (Давталтуудын Си хэлэнд)
Лекц 7 (Давталтуудын Си хэлэнд)
 
тооллын сис 10т 2т
тооллын сис 10т 2ттооллын сис 10т 2т
тооллын сис 10т 2т
 
си хэл 10
си хэл 10си хэл 10
си хэл 10
 
Business idea evaluation
Business idea evaluationBusiness idea evaluation
Business idea evaluation
 
Dev c хичээл
Dev c хичээлDev c хичээл
Dev c хичээл
 

Similar a Delphi

Similar a Delphi (20)

C++ суулгах
C++ суулгахC++ суулгах
C++ суулгах
 
лекц-2
лекц-2лекц-2
лекц-2
 
Лекц 2
Лекц 2Лекц 2
Лекц 2
 
C# hicheelin lekts
C# hicheelin lektsC# hicheelin lekts
C# hicheelin lekts
 
Lecture1
Lecture1Lecture1
Lecture1
 
Sw206 lec
Sw206 lecSw206 lec
Sw206 lec
 
Lecture13,14
Lecture13,14Lecture13,14
Lecture13,14
 
Андройд үйлдлийн системийн аппликейшний суурь ухагдахуунууд
Андройд үйлдлийн системийн аппликейшний суурь ухагдахуунуудАндройд үйлдлийн системийн аппликейшний суурь ухагдахуунууд
Андройд үйлдлийн системийн аппликейшний суурь ухагдахуунууд
 
Windows1
Windows1Windows1
Windows1
 
Lekts1
Lekts1Lekts1
Lekts1
 
Lekts1
Lekts1Lekts1
Lekts1
 
Lekts1
Lekts1Lekts1
Lekts1
 
Lec1
Lec1Lec1
Lec1
 
Pdf
PdfPdf
Pdf
 
Lekts 3
Lekts 3Lekts 3
Lekts 3
 
Windows1
Windows1Windows1
Windows1
 
Windows1
Windows1Windows1
Windows1
 
004 компьютерын програм хангамж
004 компьютерын програм хангамж004 компьютерын програм хангамж
004 компьютерын програм хангамж
 
203lab1
203lab1203lab1
203lab1
 
Lekts4
Lekts4Lekts4
Lekts4
 

Delphi

  • 1. Windows үйлдлийн системийн ерөнхий зохион байгуулалтын талаар товчхон Windows-н өмнөх хувилбарууд MS-DOS үйлдлийн системтэй сайн зохицон ажилладаг боловч үйлдлийн систем гэсэн утгандаа бүрэн хүрч чадахгүй байсан бол өнөөгийн Windows95 өөрөө 1 цогц үйлдлийн системийг илэрхийлж чадах болжээ. Windows95 үйлдлийн систем нь ерөнхийдөө 3 дэд системд хуваагддаг. 1. Win KERNEL 2. Win GDI 3. Win USER Windows95 нь 16 болон 32 битийн программуудыг ажиллуулахдаа системийн виртуаль машин болон дээрхи 3 дэд системийн тусламжтайгаар зохион байгуулдаг. Системийн виртуаль машин гэдэг нь Windows-н бүх ажлыг дэмжиж байдаг Windows95-н бүрэлдхүүнд ордог үйлдлийн орчин юм. Мөн дээрхи 3 дэд системийн ажлыг дэмжиж байдаг. 32 битийн win гэдэг нь санах ойн 32 битийн моделийг ашиглаж байдаг windows-н шинэ хэрэглээ юм. Харин 16 битийн win гэдэг нь бидний урьд өмнө хэрэглэж байсан windows-н хуучин хувилбарууд юм. Тэдгээр нь санах ойн сегментийн хаяглалтийг буюу чухамдаа 80286 процессорын санах ойн моделийг ашигладаг. Тэдгээр нь Windows 3.x –нх шиг ажиллахдаа Windows95 нх шиг нэгдмэл нэг орон зайг хуваан эзэмшдэг бөгөөд олон бодлогын зарчимтай зохицодоггүй. Windows95-н хэрэглээний программийн төвшинд Windows 3.x –н API бүрэн тохирч ажилладаг. Win32 API нь Microsoft –н WinNT, Win32S, Win3.1-н өргөтгөл win32 битийн интерфейс юм. Windows95 үйлдлийн систем нь олон бодлогын аргад үндэслэн дээрх application-уудыг жолооддог. Бүрхүүл гэдэг нь хэрэглэгчийг системтэй харилцах үйлдлийг хангаж байдаг 32 битийн Windows application юм. Windows95-н бүрхүүл нь windows3.x-н программ менежер, файл менежер зэргийг нэгтгэсэн application юм. KERNEL KERNEL нь windows-н доод түвшиний динамик санах ойн функцүүдээр хангаж өгч байдаг үйлдлийн системийн цөм юм. Энэ нь 16 ба 32 битийн windows-н үйлдлүүд тохирох үйлчилгээг хангадаг. GDI GDI нь graphic device interface гэсэн товчилсон үг. Энэ нь Windows95-н график боломж болон дэлгэцэнд харуулах өнгө, хэлбэр дүрс, resolution-г хангаж байдаг. Win32 –т байдаг бүх шинэ боломжуудыг агуулна. USER USER нь дэлгэцийн диспетчер юм. Windows-н интерфейсийг үүсгэх, удирдах функцүүдийн цргц юм. Жишээ нь Хэрэглэгч хэд хэдэн MS-DOS –н Prompt гарган ашиглаж болно. Хэрэглэгч арай илүү виртуалчилах боломжийг хангадаг хэд хэдэн давуу тал гарч ирлээ. Системийн виртуаль машин Windows-н API функцийн төвшин Дээр харлуулсан орон зайг хамтарч эзэмшинэ. Энэдээс Windows95 нь 16 битийн программуудад тусад нь орон зай гарган өгч орчинийг нь бүрдүүлж өгдөг нь харагдаж байна. Windows 32 bit Windows 32 bit 16 bit 16 bit Бүрхүүл
  • 2. Windows-н дэд систем Win KERNEL KERNEL Win USER Win GDI Файл удирдах дэд систем Сүлжээ удирдах дэд систем Үйлдлийн системийн үйлчилгээ Виртуал машин удирдах дэд систем Хөтлөгч хэрэгслүүд Бүрхүүл Энэ нь хэд хэдэн системийн удирдлагыг хэрэглэх нөөцүүдийн боломжуудаар хангах программ юм. Windows95-үйлдлийн системийн бүрхүүл нь дэлгэц системийн нөөцүүдтэй харилцан ажиллахыг удирдан зохион байгуулдаг. API Хэд хэдэн зуун API функцүүд windows-н бүх системийн хийх үйлдчилгээг хангаж өгдөг. Windows-н орчин бол интерфейс баазын дуудалтаар ханддаг. Үүнийг API гэдэг. Системийн виртуаль машин Windows-н бүх application ситемийн виртуаль машины тухайн хил хязгаарт үйлдлээ гүйцэтгэдэг. 16 битын application –ууд өөрийн нэгдмэл хаяглалын орон зайд ажилладаг. Энэ нь application бүрийн өөрийн орон зайн хаяглалтыг 32 битын хаяглалтаар хангаж дэмжиж өгдөг. MS-DOS-н виртуаль машин Windows95 олон тооны MS-DOS-н программыг хамгаалалтын горим эсвэл 8086 виртуаль үйл ажиллагаа ажиллуулж дэмжиж байдаг. MS-DOS-н виртуаль машин хэд хэдийг үүсгэж болно. Виртуаль машины диспетчер Виртуаль машины диспетчер нь үнэндээ үйлдлийн системийн зүрх юм. Энэ нь доод түвшиний санах ойн удирдлага болон драйверуудын виртуаль зохион байгуулалтын үйлчилгээг хянаж ажилллаж байдаг. | Windows95 –н диспетчерүүд Windows95 –н виртуаль машины диспетчер дотор хоёр диспетчер ажиллаж байдаг. Үүнд: Үндсэн диспетчер. (primary scheduler) Энэ нь thread-дын приоретитүүдийг тооцоолж хариу өгнө. Квантын диспетчер (timeslice scheduler) Энэ нь хугацааны квантуудад хувааж хэсэгчлэн ажилуулана. Үнэн хэрэгтээ квантын диспитчер аль thread-н ямар хувийг нь ямар хугацаанд процессороор үйлчлүүлэхийг тооцоолно. Процесс 0-31 хүртэл приоритеттой байдаг ба үүнийг үндсэн диспетчер бодоод квантын диспетчер лүү гаргана. Хэрвээ процессийн хугацааны квант 100 хувь болсон бол VMStat_Background эсвэл VMStat_High_Pri_Background гэдэг төлвийг үлдээдэг. DELPHI ДЭЭР АНХНЫ АЛХАМ ХИЙЦГЭЭЕ Та мэдэж байгаа Delphi бол Borland пүүсийн Windows-ийн орчны програмыг бичдэг дээд түвшний програм юм. Delphi -ээр та Windows -ийн орчны программыг урьд байгаагүйгээр хялбар бөгөөд хурдан бичих боломжтой. Win32 эсвэл Win32 graphical user interface (GUI) -ийг та нээж ажиллуулж болно. Win32 GUI -ийг ажиллуулснаар та дээд түвшний програмчлалын хэлний үнэн хүч чадлыг мэдрэх болно. Мөн та Web browsers –ийг минутийн дотор үүсгэдэг шигээ form дээрх ActiveX control -оор тусгай програмуудыг үүсгэж болно. Энэ мэт олон зүйлийн давуу талууд Delphi -д байдаг ба Delphi нь өөрөө кодоо үүсгэдэг тул програмын биелэлт хурдан байдаг. Танд л гэж хэлэхэд Pascal -ын программчлалыг жаахан судлах хэрэгтэй. Delphi нь Windows програмчлалын доод түвшний нарийн зүйлүүдийг нуудаг ба энэ нь танд чухал биш. Эцэст нь та програмист л болохыг хүсч байгаа
  • 3. бол энэ нь бүгдийг судлах хэрэгтэй. Delphi нь танд урьд байгаагүй хөгжил таашаалыг авчрах болно. Ингээд ханцуйгаа шамлан бүх ажилдаа орогтун. Delphi сэтгэлийн таашаалыг авчрах агуу программ юм. Delphi IDE -ийг өнгөц харъя Энэ хэсэг нь Delphi integrated development environment (IDE) -ийг агуулна. Windows програмчлалыг судлах бүхэнд энэ нь хэрэгтэй юм. Та одоо Delphi -ийг эхлэх урам зоригтой байгаа гэж бодож байна. Программыг эхлүүлэхэд та хоосон form ба IDE -ийг харах болно. Delphi IDE нь 3 хэсэгт хуваагдана. Дээд хэсгийг нь үндсэн цонх гэдэг. Энэ нь toolbars болон Component palette -ийг агуулдаг. Delphi toolbars нь compiling project, хадгалах, нээх үйлдлүүдийг нэг товшилтоор гүйцэтгэх боломжийг танд олгоно. Component palette нь wide array of components агуулдаг ба түүнийг form дээр чирч тавьж болно. Component -ууд нь text labels, edit controls, list boxes, buttons ба бусад болно. . Componentууд нь бүлгүүдэд хуваагдсан байна. Component palette -ийн дээд талын tab -ыг харав уу? Дээр нь очоод click хийвэл өөр өөр component гарч ирнэ. Form дээрээ component -оо байрлуулахын тулд Component palette -ийн компонентын button дээр click хийж component -оо харагдах хэсэгт нь очоод click хийх хэрэгтэй. Яаж хэрэглэх үр дүнд юу болох бол гэж санаа зовох хэрэггүй. Эдгээр нь хормын дотор болно. Шинэ нэр томъёо: Component гэдэг бол software -ийн 2 хэсгийг агуулсан ба тусгай урьдчилан тодорхойлогдсон функц үйлдлийг нь гүйцэтгэж байдаг. Жишээ нь: text label, edit control, list box. Обьектийн инспектор Үндсэн цонхны доор дэлгэцийн зүүн талд Object Inspector байна. Энэ нь component -ийн properties ба events -үүдийг өөрчлөхөд ашиглагддаг. Delphi -тэй ажиллах явцдаа үргэлж Object Inspector -ийг та хэрэглэх болно. Object Inspector нь 2 хэсэгтэй. Properties tab ба Events. Component -ийн properties нь component -ийг яаж ажиллуулахыг удирдана. Жишээ нь : Color property - ийг өөрчлөхөд background color -нь өөрчлөгддөг. Шинэ нэр томъёо: property –нь component -ийн үйл ажиллагааг тодорхойлдог. Events хэсэг нь component -ын event -уудын жагсаалтуудаас бүрдэнэ. Component дотор үйлдэл хийхэд event -ийг ашигладаг. Жишээ нь component дарагдахад event нь component дарагдсан байна шүү гэж танд хэлнэ.Та component -д хамаарах код бичиж болох ба тусгай үйлдлийг гүйцэтгэхэд хэрэглэж болно. Шинэ нэр томъёо: event бол цонх ба хэрэглэгчтэй ажиллах component -
  • 4. ийн харилцан ажиллагааны үр дүн юм. Delphi –ийн ажлын талбар Delphi IDE -ийн үндсэн хэсэг нь ажлын талбар юм. Ажлын талбар нь Form Designer -ийг үүсгэнэ. Энэ нь гайхмаар юм биш Form Designer нь өөрөө form үүсгэдэг. Delphi -д form гэдэг нь программын цонхыг хэлнэ. Form нь программын үндсэн цонх байж болно, dialog box эсвэл цонхны янз бүрийн хэлбэртэй байж болно. Form Designer -ийг, form -ийг үүсгэх процессийн хэсэгт component -уудыг нь байрлуулах, зөөх зэргээр ашиглаж болно. Form Designer -ийн ард Code Editor байдаг. Программын кодыг Code Editor дээр бичдэг. Application -ийг үүсгэн ажиллах явцад Object Inspector, Form Designer, Code Editor, ба Component palette -ууд нь харилцан уялдаатай байдаг. Та Delphi IDE-ийг мэддэг боллоо одоо ямар нэг зүйлийг хийж үзье. Таны эхний програм: Hello World Дэлгэцэнд Hello World гэж хэвлэх нь бүх програмчлалын хэлний сурах бичигт байдаг уламжлалт програм юм. Заавал ийм байх албагүй гэж би боддог. Pascal хэлийг өмнө нь судалсан бол сайн юм. Та гайхаж магадгүй юм, Delphi танд одоогийн Windows program -ийн Hello World -д хүрэх хамгийн хялбар замыг зааж өгнө. Програм бичих Та яг одоо Delphi -ийг ажиллуулж байгаа бол blank form -ийг харсан байх ёстой. Form нь Form1 гэж нэрлэгдсэн байдаг. Form -ийн зүүн хэсэгт Object Inspector form -ийн properties -үүдийг харуулна. Object Inspector -ийн title bar дээр товш. Caption property нь идэвхжих ба cursor нь тэнд юу хийхийг хүлээнэ. Hello World! гэж бичин form -ийн caption -ийг өөрчил. Санамж: Properties -ийг өөрчлөх бол Delphi шууд өөрчлөлтийг нь гаргадаг. Caption -ийг өөрчлөх үед form -ийн window caption нь өөрчлөгдөж байгааг ажигла. Toolbar дахь Run товчийг товш. Form нь гарахдаа caption нь Hello World!. - ийг гаргана. Энэ тохиолдолд ажиллаж байгаа программ нь бараг л blank form шиг харагдана. Програмыг өөрчлөх Одоо программаа жаахан өөрчилье. Hello World чинь байгаа бол Close button дээр товшин хаах хэрэгтэй. Form Designer дахин гарч ирэх ба form- ийг өөрчлөх боломжтой. Программыг илүү сайжруулахын тулд цонхны төвд текст нэмэх хэрэгтэй. Үүнийг хийснээр form -доо text label -ийг та нэмж өгнө. 1. Эхлээд Component palette -ийн Standard хэсэгт товш. 2. Label button -ийг товшоод form -ийн хаа нэгтээ товш. Label component нь form -ийн дотор байна. 3. Object Inspector дээр буцаад оч. Label1 -ийн properties -ууд гарч ирсэн байгаа. Caption property нь бас идэвхжсэн байгаа. 4. Object Inspector эсвэл Caption property -ийн titlebar дээр товш тэгээд Hello World! гэж бич. Form -дээрх label нь Hello World!. гэж гаргана. 5. Үүнийг хийсэн бол label -ийн text -ийн хэмжээг өөрчилж чадна. Font property дээр 2 товш. Property нэмэлт font attribute -ийг харуулахын тулд өргөн болно. 6. Font -ийн Size property -ийг 24 болгоод form -дээрээ товш. Label шинэ хэмжээтэй болно.
  • 5. Програмаа хаах Delphi -д жаахан дурласан бол энэ нь бүхнээс илүү таны сонирхлыг татна. Дараа нь юу хийх вэ гэвэл одоогийн прожектийг хаах хэрэгтэй. File цэсний Close All -ыг сонго. Project1 -ийн өөрчлөлтийг хадгалах бол No -ийг сонго. Таны 2 дахь программ: Hello World, II хэсэг Pascal -ийг судлахаасаа өмнө Delphi хэрхэн ажиллдаг талаар мэдэх хэрэгтэй. Танд Pascal –ийн олон төрөл дээр ажиллахад энэ нь хэрэг болно. Энэ хэсэг нь Delphi -ийн үнэн хүчийг хальт агуулна. Санамж: Компонентийн properties -ийг өөрчилсөн бол design-time өөрчлөлт хийсэн гэсэн үг. Харин кодоор property -ийг нь өөрчилсөн бол runtime өөрчлөлт гэж нэрлэгддэг. Ажиллах үед нь Caption property -ийг өөрчлөхийн тулд: 1. Form дээрх button –ийг 2 товш. Ингэхэд Delphi нь event handler -ийг
  • 6. button -ийн OnClick event дээр үүсгэнэ. Үүсгэсэн код нь дараах байдалтай байна procedure TForm1.Button1Click(Sender: TObject); begin end; 2. Засварлагч курсор нь begin ба end гэсэн зарлагааны хооронд байдаг ба таныг код бичихийг хүлээж байдаг. procedure TForm1.Button1Click(Sender: TObject); begin Label1.Caption := `Hello World, Part II'; end; Энэ код маш энгийн юм. Энэ нь Hello World, Part II гэсэн өгүүлбэрийг Caption property -руу шилжүүлдэг. 3. Одоо toolbar -т байгаа Run товчин дээр дарж программыг ажиллуул. Программыг ажиллуулахад label -ийн caption нь Label1 гэж хэвээр байгааг анхаарна уу. Form -ийн button дээр дарж label -ийн гарчгийг өөрчил. Гайхамшигтай байгаа биз. Зүгээр л Delphi ажиллаж байгаа юм. Иймэрхүүгээр олон дасгалыг ойрын хэд хоногт хийж form -ийн бусад компонент labels, button –уудын талаар их туршлагатай болно. Би үйл явдлын ард нь юу болдгийг бүхэлд нь тайлбарлах гээгүй харин дараа нь бүх тайлбар хийхийг л хүсэхггүй байна. Object Pascal хэлийг нягтлан харах нь Delphi -ийн RAD онцлогийг суралцахаасаа өмнө обьект Паскал хэлний үндсийг судлах хэрэгтэй. Энэ ном магадгүй хамгийн сайн нь биш юм шиг танд санагдаж болох юм гэхдээ та юуны өмнө обьект Паскалийг судал. Обьект Паскалийг дараалаар нь судалбал сайн хэрэг. III бүлгийн хичээлийн дараа та обьект Паскалийн бүрэн дүр зурагтай болсон байна. Хоромхон зуурын ухвар ойлголтонд бүү хуурт. Зарим нь обьект Паскалийг бүрэн ойлгохыг шаарддаг ба энэ нь бодит туршлага юм. Ойрын хэдэн өдрийн турш та зарим кодын хэсгийг харах ба энэ нь обьект Паскалийн зарим онцлогийг дүрслэн үзүүлдэг. Та зарим дасгал хийх ба таны олсон шинэ мэдлэгийг бататгана .Эхний хэдэн өдөр та зөвхөн Delphi application -ийг жаахан хэсэгт харна. Юун түрүүнд би Delphi IDE болон Visual Component Library (VCL) -ийг судалмааргүй байна. Та бүрэн ойлголттой болсныхоо дараа эхлэх хүртлээ бага багаар ахих хэрэгтэй. Түүхийн шар хуудас 1994 онд Borland пүүс нь RAD хэрэгсэл дээр ажиллаж эхэлсэн ба энэ код нь Delphi гэж нэрлэгдсэн байна. RAD -ийг хэрэгжүүлэх хамгийн шилдэг зам нь компонентийн загвар архитектур байна гэж шийдэгдсэн байсан. Энэ нь системийн гол цөм байх програмын хэлний асуудлыг шийдсэн байв. Тэр үед Borland пүүс нь Pascal –ийн зах зээл дэх ганц борлуулагч байв. Borland нь Pascal -ийн хэрэгсэлийг үйлдвэрлэдэг хамгийн сайн компани байв. Та Pascal -ийн програмист байсан бол Borland -ийн TurboPascal -ийг хэрэглэн амтанд нь орох байсан биз. Borland пүүс Pascal хэлийг хуулийн хүрээнд бүрэн эзэмшдэггүй боловч Pascal -ийн ертөнцөд том байр эзэлдэг гэдэгт эргэлзээ байдаггүй. Энэ нь Pascal хэлний онцлогийг нэмэгдүүлэх тал дээр том байр эзэлдэг. Энд хэлэхэд Pascal -ийн стандарт хороо байдаггүй ба Pascal хэлийг тодорхойлон бичигдсэн стандарт байдаггүй. Borland пүүс Delphi -ийг Pascal -ийн үндсэн дээр бичсэн юм. (Borland -ийн нэр нь програмын хэлний нэр болсон) Delphi хэрэглээнд гарахаас өмнө Borland пүүс Pascal хэлийг өөрчилсөн. Жишээлбэл : Pascal -ийг обьект Pascal болгон өөрчилсөн байв. Энэ нь обьект Pascal нь Pascal -ийн хувьд C++ нь C -ээс ямар ялгаатай байдаг шиг обьект Pascal нь классийг Pascal -д нэмсэн ба үүгээр обьект хандлагат програмчлалд Pascal орж ирсэн. Delphi хөгжихийн хирээр шинэ хэлний онцлог ба түлхүүр үг нэмэгдэн орж ирэн компонент загвартай зохицож эхэлсэн. Түлхүүр үгүүд ба property өөр бусад нэмэгдэн орж ирсэн.
  • 7. Энэ нь Borland -д компонент загварын бүрэн хүчийг хэрэгжүүлэх боломжийг олгосон. Компонентод тохируулан Паскал хэлийг өөрчилснөөрөө Borland нь RAD - ийг хэрэгжүүлэх боломжтой болсон. Гол нь обьект Паскал хэл нь өөрчлөгдсөнөөрөө Delphi -ийн боломжуудыг нээж өгсөн. Үр дүнд нь компонент загвар ажиллаж эхэлсэн. Хэдийгээр Паскалийг өөрчилсөнөөрөө Borland нь том алхам хийсэн боловч урьдах зүйлтэй холбоотой. Microsoft компани BASIC хэлийг авч өөрчлөн Visual Basic хэлийг гаргасан байдаг. Энэ шинэ хэл нь баазад ажилладаг эх Basic хэлнээсээ ялгагдахгүй шахам байсан. Borland пүүс Паскал өөрчилснөөрөө эрсдэлтэй алхам хийсэн. Бүх юмны дараа хэрэглэгчид таатай бус хүлээн авсан. Одоог хүртэл Borland нь Паскалийн зах зээл дээр хатуу байр суурьтай байгаа ба энэ хэвээрээ байгаа билээ. Үүнд алдаа хийхгүй бол обьект Паскал хүчирхэг хэл ба би зарлалтыг нь тэгж хөнгөн хийхгүй байхсан. Обьект Паскал нь сургалтанд бол хамгийн хүчирхэг байгаа билээ. Би Обьект Паскалийг бүх онцлогийг агуулсан гэж хэлэхгүй. Паскал бол програмчлалд түгээмэл хэрэглэгддэг. Санамж: Юу хийхийг тодорхойлохдоо Delphi нь хэд хэдэн нэр томъёог хуулан авсан. Delphi -ийн үндсэн хэл бол мэдээж обьект Паскал ба зарим хүмүүс үүнийг Паскал гэж хэлдэг. Зарим Паскал дээр хийж байна хэлдэг. Эцэст нь юу гэж хэлэхээ та шийд. Обьект Паскал нь обьект хандлагат програмчлалд бүрэн зохицсон болно. Шинэ нэр томъёо: Обьект - урьд нь компонентыг тодорхойлж байсан шиг тусгай програмчлалын хоёр тал юм. (Компонент бол обьект юм, харин бүх обьект нь компонент биш) Pascal Unit -ууд Програмчлал бол код бичихээс илүү ажил юм. Эцсийн эцэст энэ бол програмын цогц бөгөөд код бичих нь програмчлах зорилгыг нь биелүүлж байгаа болно. Таны бичсэн код бол зөвхөн текст файл руу ордог. Компьютер тэр текст файлыг аван машины кодод хөрвүүлэлт хийн ойлгодог. Delphi -ийн код агуулдаг текст файлыг unit гэдэг. Шинэ нэр томъёо: unit бол кодын модульд хөрвүүлэгдэх боломжтой текст файл юм. Unit -ийн төрлүүд Delphi GUI application нь багадаа хоёр unit -ийг агуулдаг. Project source unit нь project source кодыг агуулдаг. Project source код нь DPR өргөтгөл байдаг. Та project source unit -ийг Project | View Source -ийг үндсэн цэсээс сонгон үзэж болно. Project source unit -ийг өөрчлөх хэрэгцээ нэг их байдаггүй. Үнэндээ project source unit -ийг юу хийхээ мэдэхгүйгээр хийх хэрэггүй. Та хэрэв project source unit -ийг санамсаргүй өөрчилсөн бол application тань ажиллахгүй болно. Delphi GUI application -ийн хоёр дахь төрөл нь үндсэн form -ийн unit байдаг. Form unit гэдэг бол тухайн form -тай хамтардаг source code unit байдаг. Unit -ийн энэ төрөл нь PAS өргөтгөлтэй файл байдаг. Delphi -д та энэ төрлийг нь голлон хэрэглэнэ. Delphi GUI application нь голдуу нэг form unit -тэй байдаг. (Үндсэн form -ийн хувьд) Харин энэ нь нэгээс илүү form unit -тэй байж болно. Жишээ нь: About box -ийг гаргадаг application нь үндсэн form unit -тэй байх ба About box -ийн unit байна. Тэмдэглэл: "Delphi GUI application." нь console mode application -ийн GUI application -ээс ялгаатай байдаг. Console mode application бол console window (DOS box) -ийг ажиллуулдаг 32-bit Windows application юм. Console application -д үндсэн form байдаггүй ба өөр form -уудыг агуулж ч болно, агуулахгүй ч байж болно. Хэдий ийм боловч console application нь нэг эсвэл түүнээс илүү unit -тэй байж болно. Delphi application -д та 3 дахь unit -ийг хэрэглэж болно. Энэ төрлийн unit нь source кодыг агуулдаг. Зөвхөн unit -ийг агуулдаг код нь project -ийн бусад unit гэж дуудагддаг. Delphi Unit –ийн бүтэц
  • 8. Delphi unit нь урьд тодорхойлогдсон форматыг дагах ёстой. Unit урьд тодорхойлогдсон форматанд байх ба энэ нь хөрвүүлэгч unit -ийг уншиж чадах ба unit -ийн кодыг компиляц хийж чадна. Delphi project unit нь unit - ийн нэртэй програмын түлхүүр үгийг агуулдаг ба кодын хэсэг нь begin ба end гэсэн түлхүүр үгээр тэмдэглэгддэг. Та үндсэн unit -ийг Delphi -ийн үндсэн цэсээс View | Project Source -ийг сонгон харж болох ба default Delphi project -ийн project source unit -нь дараах байдалтай байна. Тэмдэглэгээ: Доорх мөрийн дугаарууд нь unit -ийн өөрийнх нь хэсэг биш болно. Үүнийг зөвхөн дарааллыг заахад ашигласан. Заримд нь ийм дугаар байгаа ба заримд нь байхгүй болно. Аль алинд нь Паскал хэл нь бусад хэлүүд шиг мөрийн дугаар авдаггүй гэдгийг ойлгох хэрэгтэй. (онцолбол, BASIC). Cтандарт DELPHI PROJECT –ийн PROJECT SOURCE 01: program Project1; 02: 03: uses 04: Forms, 05: Unit1 in ‘Unit1.pas’ {Form1}; 06: 07: {$R *.RES} 08: 09: begin 10: Application.Initialize; 11: Application.CreateForm(TForm1, Form1); 12: Application.Run; 13: end. / 1 мөрөнд програмын түлхүүр үг програмын үндсэн source unit -ээр энэ unit -ийг тодорхойлсон. Үүнийг та unit -ийн нэр Project1 нь програмын түлхүүр үгээ даган яваагаас харж болно. (Delphi таныг нэр өгөх хүртэл өөрөө нэрийг нь автоматаар өгдөг) 3 мөрөөс эхлэн түлхүүр үгээр тодорхойлогдсон хэсгийг харж байна. Ямар ч unit -ийн нэр нь цэгтэй таслалтай түлхүүр үгийг дагадаг ба компиляци энэ дарааллаар хийгдэнэ. 7 мөрөнд компиляцийн директив нь Delphi нь project -ийн resource file -ийг агуулдгийг харна. Resource файлууд нь VIII бүлгээр яригдана. “Creating Applications in Delphi." 9 мөрөнд begin түлхүүр үг ба 13 мөрөнд end түлхүүр үгийг агуулсан. Сүүлийн түлхүүр үг цэгээр төгссөн байгааг ажигла. (unit нь олон түлхүүр үгтэй байж болох ба харин ганц төгсгөлийн end –тэй байна.) 10, 11, 12 -р мөрүүдэд код нь application -ийг үүсгэж байгаа ба application - ийн үндсэн form -ийг үүсгэх ба application -ийн биелэлтийг эхлүүлнэ. Та энэ кодын нарийн хэсэгт анхаарах хэрэггүй. Тэмдэглэгээ: begin ба end нь кодыг блоклоно. Кодын блок нь кодын хэдэн мөрийг агуулж болох ба мөн хэдэн зуун мөрийн кодыг ч агуулж болно. Номонд ч бас ийм байгааг та харж болно. Та ном хэрэглэдэг бол яаж, хэзээ хэрэглэхийг мэдэх болно. Паскал unit -ийн өөр хэсэгт харцгаая. Үндсэн цэсээс File | New -ийг сонгоно. New Items гарч ирэхэд icon -ийг байрлуулан 2 товшилт хий. Delphi шинэ unit -ийг нээх ба харуулахдаа Code Editor -д unit код нь үүснэ. Хоосон UNIT 01: unit Unit2; 02: 03: interface 04: 05: implementation 06: 07: end.
  • 9. Цөөн байгаа биз? Энэ unit нь 2 зүйлтэй. Эхнийх нь unit нь нэр нь түлхүүр үгтэйгээ байгаа. Түлхүүр үгтэй программ эхэлж байгаа ба код нь unit түлхүүр үгтэй ба харин хэдхэн ерөнхий элементтэй байна. Pascal unit нь unit нэртэйгээ байгаа түлхүүр үгээр эхлэх ба end нь хоёулангийнх нь сүүлд байдаг. Энд end түлхүүр үг нь бас сүүлдээ цэгтэй байгаа. Програмын main source unit -ийнх биш unit нь interface ба implementation - уудыг агуулдаг. Энэ хоёр түлхүүр үг нь The interface Section" and "Implementation Section," зэрэг хэсгүүдэд нарийн тодорхойлогдсон байгаа болно. Программын үндсэн unit нь begin and end -ийг хоёуланг нь авч явах ба харин source unit -нь төгсгөлдөө л end -тэй байна. Дараагийн хэсэг нь Pascal unit дотор хэрэглэгддэг түлхүүр үгийг тодорхойлно. Uses жагсаалт Шинэ нэр томъёо: uses жагсаалт бол гаднах unit -уудын жагсаалт. 3 мөрөнд uses түлхүүр үгийг хэрэглэсэн байгаа. Uses нь бусад unit -уудын жагсаалтыг агуулсан хэсгийн эхлэлтийг тодорхойлж байгаа бөгөөд энэ unit нь түлхүүр үгээсээ хамаарна. Application.CreateForm(TForm1, Form1); Кодын энэ мөр нь бусад unit -уудад байрлах мэдээллийг агуулах ба энэ unit -д олдохгүй. Application.CreateForm гэж тодорхойлогдсон процедур нь Forms.pas гэгдэх Delphi unit -д байх ба TForm1 ба Form1 идентификаторууд нь прожектийн main form unit-д байрлах ба Unit1.pas гэж хэлэгдэнэ. Та холболтыг нь харав уу? Uses жагсаалт нь unit -ийг компиляци хийхэд хэрэгтэй нэмэлт мэдээллийг агуулдаг гэж үзнэ. Энд uses жагсаалтийг харуулав. uses Forms, Unit1 in ‘Unit1.pas’ {Form1}; Uses жасгаалт нь 2 unit нэртэй байна. Forms ба Unit1. Заримдаа энэ нь сайн жишээ биш байдаг. Яагаад гэвэл 2 -р unit жагсаалт нь нэмэлт текстийг агуулсан байдаг. (Unit1 in ‘Unit1.pas' {Form1}). Энэ текст нь form -ийг онцлоход хэрэглэгдэх ба unit -дээ байдаг бөгөөд прожектийн main source unit -ээр л хэрэглэгддэг. (Угалзан хаалтанд байх текст нь кодын бусад хэсэгт байх тайлбар) Uses жагсаалтыг байгуулахад мэдвэл зохих 2 зарчим байдаг: • Эхлээд жагсаалт дахь unit бүр дараах unit -ээсээ таслалаар тусгаарлагдах ёстой. • Дараа нь сүүлийн unit-ийн жагсаалт нь цэг таслалтай байх. Цэг таслал нь uses жагсаалтыг төгссөнийг заана. Ерөнхийдөө жагсаалт нь идэвхтэй unit -ийн нэрсийг агуулах ёстой. Uses жагсаалт нь uses түлхүүр үг, цэг таслалтай end -ээр тодорхойлогдох ёстой. Тэрнээс гадна uses жагсаалт нь яаж зохион байгуулагдсанаасаа хамаарахгүй. Жишээ: Дараах 2 uses жагсаалтууд ижил: uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; Unit нь uses жагсаалт нь ямар ч тоотой байж болно. Тэмдэглэгээ: Зарим тохиолдолд Delphi нь танд uses жагсаалтанд unit -ийг нэмж өгдөг. Энэ нь File | Use Unit цэсээр хийгддэг. Энэ онцлог нь IV бүлгээр нарийвчлан яригдана. Интерфейс хэсэг
  • 10. Өмнөх кодонд интерфейс түлхүүр үг байгааг анзаарсан болов уу. Интерфейс хэсэг бол идентификатор нь unit -ээсээ авч ирэн зарлагдсан unit –ийн хэсэг юм. Ихэнх unit -ууд нь өөр unit –уудад хэрэглэгдэх кодыг агуулсан байдаг. Энэ код нь класс, процедур, функц, хувьсагчаар хангагдсан байж болно. Аль ч обьект нь интерфейс хэсгээрээ нэг unit -ээс нөгөө unit -руу зарлагдах боломжтой. Та интерфейс хэсэг нь жагсаалтыг агуулдаг гэдгийг хэлж чадна. Интерфейс хэсэг нь интерфейс түлхүүр үгээр эхэлдэг ба implementation түлхүүр үгээр дуусдаг. Implementation хэсэг Шинэ нэр томъёо: implementation хэсэг бол тухайн unit -ийн кодыг агуулдаг хэсэг юм. Implementation хэсэг implementation түлхүүр үгээр эхэлдэг ба дараагийн unit -ийн түлхүүр үгээр дуусдаг. Дараагийн unit -ийн түлхүүр үг нь голдуу unit - ийн төгсгөл end түлхүүр үг байдаг. Паскалийн тал байгаа учир илүү юм ярих боломжгүй байна. Хэдий ийм боловч интерфейс ба implementation - ийн жишээ нь танд ойлголтыг жаахан төрүүлэх болно. DoSomething гэж нэрлэгдэх процедур нь unit -ийг үүсгэнэ. Та бусад unit - уудад DoSomething –ийг дуудагдахыг хүсч байна уу? Энэ тохиолдолд DoSomething процедурыг интерфейс хэсэгт зарлах ба implementation хэсэгт тодорхойлох хэрэгтэй. Доорх хэлбэртэй байна. PUBLIC функцтэй unit unit Unit2; interface procedure DoSomething; implementation procedure DoSomething; begin { Code for DoSomething goes here. } end; end. DoSomething процедур нь interface section -д зарлагдсан байгааг анзаар. Тэгээд implementation section -д тодорхойлогдсон байгаа. Initialization ба finalization хэсэг Initialization ба finalization хэсэг нь unit -ийн шаардлагатай кодыг цэвэрлэх, эхлэл хийх, гүйцэтгэх боломжтой. Initialization section -д ямар ч код unit санах ойд ачаалагдах үед биелэгддэг. Finalization section -д unit санах ойгоос ачаалагдаагүй байхаас өмнө биелэгддэг. Initialization section - гүйгээр та finalization section -тай байх боломжгүй. Энэ хоёр нь хоёул сонголт юм. Unit –д хэрэглэгддэг түлхүүр үгүүд Pascal unit бусдыг агуулж болдог ба сонголтын түлхүүр үг нь өөр өөр зорилгоор нь хэсгүүдийг ангилдаг. Эдгээр түлхүүр үгүүдийн зарим нь олон хэрэглээтэй. Дараах хэсэг нь unit –д хамаарагдах түлхүүр үгийг л тодорхойлсон байгаа. Const түлхүүр үг Ер нь unit нь нэг түүнээс илүү const хэсгийн сонголттой байх боломжтой. Const хэсэг бол түлхүүр үгээр тодорхойлогдсон байдаг. Тогтмолоор зарлагдсан хувьсагчаар const хэсэг нь тодорхойлогдоно. Constant бол өөрчилж болохгүй идентификатор юм. Жишээ нь таны програмд олон хэмжигдэхүүн байдаг гэе. Үүндээ та тогтмол хувьсагчийг ашиглах боломжтой. Const section -ийг доорх програмд нэмье гээд төсөөлөөд үзье. Та const хэсэгт нэг тогтмолыг нэмэх ба өөр const хэсэг нь 2 тогтмолыг нэмсэн. unit Unit2; interface const AppCaption = ‘My Cool Program 1.0’; procedure DoSomething; implementation
  • 11. const BaseX = 20; BaseY = 200; procedure DoSomething; begin { Code for DoSomething goes here. } end; end. AppCaption Тогтмол нь interface section -д зарлагдсан учир unit -ийн аль ч хэсэгт энэ нь хэрэглэгдэж болох ба uses жагсаалтанд байгаа аль ч unit - ийн хувьд мөн адил байна. BaseX and BaseY хувьсагчууд нь unit дотроо боломжтой яагаад гэвэл тэд implementation section -д зарлагдсан. Тогтмол түлхүүр үг нь нэгээс илүү хэрэглээтэй байж болно. Type түлхүүр үг Шинэ нэр томъёо: Type түлхүүр үг нь таны програм хэрэглэх шинэ төрлийг зарлахад хэрэглэгддэг. Шинэ төрлийг зарлах нь esoteric програмчлалын технологи бөгөөд энд тайлбарлах нь хэцүү болно. Доор 20 байтын массив таны application -д хэрэгтэй байгаа ба энэ төрөл нь дахин дахин хэрэглэгдэнэ. Та доорх шиг зарлаж болно. Type TMyArray = array [0..19] of Byte; Та одоо array [0..19] гэж бичихийн оронд TMyArray гэсэн төрлийг ашиглах боломжтой. “Var “Түлхүүр үг Шинэ нэр томъёо: Энэ түлхүүр үг нь хувьсагчууд байдаг кодын хэсгийн зарлалтын үед хэрэглэгддэг. Энэ түлхүүр үгийг та элдэв хувьсагчуудыг зарлахад хэрэглэж болно. Var - ийг зарлах хэдэн байрлал байдаг. Unit -ийн түвшинд var -ийг та зарлаж болно. Мөн процедур, функцийн түвшинд var -ийн хэсэг байж болно. unit Unit2; http://www.csms.edu.mn/cheri/ interface type TMyArray = array [0..19] of Byte; const AppCaption = ‘My Cool Program 1.0’; var X : Integer; MyArray : TMyArray; procedure DoSomething; implementation const BaseX = 20; BaseY = 200; procedure DoSomething; begin { Code for DoSomething goes here. } end; end. Const түлхүүр үг шиг, var -т бас олон хэрэглээ байдаг. Энэ нь бас функц, процедурын параметр, хувьсагч параметруудыг зарлахад хэрэглэгддэг. Тэмдэглэгээ: var -аар тодорхойлогдсон хэсэг нь түлхүүр үгээр эхэлж, дараагийн unit -ийн түлхүүр үгээр дуусна. Кодын тайлбар Паскал хэл рүү нарийвлан орохын өмнө кодын тайлбарын тухай товч танилцуулъя. Тайлбар нь таны source кодод текст хэлбэрийн тайлбар өгөх зорилготой байна. Тайлбар нь код юу хийхийг тодорхойлоход хэрэглэгдэх ба зохиогчийн эрхийн мэдээллийг хангах, өөртөө эсвэл бусдад тэмдэглэл хийхэд л ашиглагддаг. Тайлбар нь ялгаатай 3 аргаар тодорхойлогддог. Дараах зүйлүүд нь бүгд
  • 12. шугмын хувьд хүчинтэй байна. { Don't forget to free this memory! } { ADTAPI.PAS 2.50 Copyright (c) TurboPower Software 1996-98 } (* Оюутнуудаа энэ кодыг засах хэрэгтэй *) // Энэ үнэн зэрлэг код { Энэ код дээр дараа тухтай ажиллана } Магадгүй Delphi –д ихэнх тайлбарын төрөл нь угалзан хаалтыг хэрэглэдэг. “{“ нь эхлэх үед тайлбарыг, ”}” –нь тайлбарын төгсгөлд хэрэглэгдэнэ. Тайлбарын өөр нэг нь (*тайлбар эхлэх,ба *) байдаг. Энд бас нэг тайлбарын тэмдэг байдаг: (*/*) тайлбарын тэмдэглэгээ нь том хэмжээний тайлбарыг хийхэд болно. Эдгээр тайлбарын төрлүүд нь нэг эсвэл олон мөрт тайлбарыг хийхэд ашиглагдана. Тэмдэглэгээ: Угалзан хаалт нь Паскалд өөр хэрэглээтэй байдаг. $ -ийг хэрэглэх үед хаалт нь компиляторын директорыг заадаг. Компиляторт compiler hints үүсгэхгүй гэж зааж өгөн source коддоо {$HINTS OFF} гэж бичих хэрэгтэй. Компилятор энэ мөрийг хараад unit -д дохио өгөхөө {$HINTS ON} –тэй тулаад зогсооно. Тайлбарын 3 дахь хэлбэр нь давхар зураас байдаг. Энэ нь голдуу С - хэлбэрийн тайлбар гэгддэг яагаад гэвэл С ба С++ үүнийн хэрэглэдэг. Энэ хэлбэр нь нэг мөрөнд хэрэглэгддэг. Delphi -д энэ хэлбэр ажилладаггүй гэдгийг хэлье. Тэмдэглэгээ: Энд угалзан хаалт хэрэглэсэн байгаа. ”//” -ийг богино тайлбарт болон тестийн зорилгоор ашигласан . Аль ч тайлбарлагдсан текст нь компиляторт хамааралгүй байдаг. Хэрэв та default Delphi IDE settings -ийг ашиглаж байгаа бол бүх тайлбар мөр нь бичмэл хөх текст байгаа. Энэ нь тайлбарыг хурдан ялгахад дөхөм байдаг. Тэмдэглэгээ: Хэрэв та багийн бүрэлдэхүүнтэй програмчлалын ажил хийдэг бол та хамтран ажиллагчдынхаа код, бичлэгийг уншдаг байх. Кодонд товч тайлбар хийх нь аль ч програмистад цагийг нь хэмнэнэ. Та ганцаараа ажилладаг гэсэн ч тайлбар бичих нь чухал. Та бичсэн кодоо ямар амархан мартаж байгаагаа хараад л гайхна. Сайн кодын тайлбар нь таны хамтрагчийн цагийг хэмнээд зогсохгүй таныг ч бас аварна. Кодын тайлбар бичихээ бүү март! Хувьсагчид Хувьсагчид нь хэрэглэгдэхээсээ өмнө зарлагдсан байдаг. Та хувьсагчдыг кодын тусгай хэсэгт зарлах ба var түлхүүр үгээр тодорхойлох хэрэгтэй. Жишээ нь: var X : Integer; { X хувьсагч нь integer төрөлтэй } Y : Integer; { Байршлын y утга } Өмнө нь “var” түлхүүр үгийн тухай Паскалийн unit -ийн нэр томъёонд дурдсан билээ. Тэр хэсэгт unit -д хувьсагчуудыг хэрэглэдэг ба unit -ийн var хэсэгт зарладаг гэж үзсэн билээ. Тэр нь үнэн ч та бас функц, процедуруудыг энэ хэсэгт зарлаж болно. Функц, процедурт хувьсагчуудыг зарлах боломжийг энэ нь танд олгож байгаа болно. Доорх жишээ нь процедурт var хэсэг байна. procedure TForm1.Test; var S : string; begin S := ‘Hello World!’; Label1.Caption := S; end; Та хувьсагчаа зарласны дараа үүнийгээ санах ойд өгөгдлийг зохицуулахад хэрэглэж болно. Энэ мэдээж танд нэг их сэтгэгдэл төрүүлэхгүй байх гэхдээ хэдэн жишээг танд танилцуулъя. Дараах кодын хэсэг нь X, Y гэж зарлагдсан хувьсагчуудыг хэрэглэсэн. Мөр болгоны эцэст байгаа тайлбар
  • 13. нь юу биелж байгааг тайлбарлана. X := 100; { ‘X’ нь одоогийн утга нь: 100 } X := X + 50; { ‘X’ нь одоогийн утга нь: 150 } Y := 150; { ‘Y’ нь одоогийн утга нь: 150 } X := X + Y; { ‘X’ нь одоогийн утга нь: 300 } Inc(X); { Нэмэгдүүлж байна. ‘X’ нь одоогийн утга нь: 301 } Хувьсагч бол компьютерийн санах ойд байрласан хэсэг утга юм. Эрхэм уншигч та энэ кодны тухай зарим зүйлсийг тэмдэглэж аваарай. Юуны түрүүнд Х хувьсагчийн өөрчлөлт (Бид дараа Object Pascal хэлний хувьсагчийг удирдах оператор, функц, процедурын тухай үзэх болно.) Дараах хувьсагчууд нь нэмэлт, сонгогдсон утга юм. Програмын кодын мөр бүрийн төгсгөлд цэг таслал (;) тавидаг. САНАМЖ: Паскаль хэлийг эхлэн суралцагчид програмын кодуудын хоорондын ялгааг мэддэг байх хэрэгтэй. (зарлагдсан өгөгдөл, утга, хувьсагч, илэрхийлэл г.м) c := a + b; Дээрх жишээнд с хувьсагчид a болон b хувьсагчдийн нийлбэрийн утгыг олгож байгаа үйлдэл болно. Энд a + b нь илэрхийлэл юм. Нэг мөрөнд олон илэрхийлэл бичигдэж болох бөгөөд төгсгөлд нь цэг таслал тавигдана. Зарим тохиолдолд цэг таслал тавигдахгүй байж болдог. Үүнийг бид дараа нь үзнэ. Хувьсагчийн нэрийн ард хувьсагчийг тодорхойлсон төрөл бичигдэнэ. Функц болон процедурт хувьсагч, хувьсагчийг тодорхойлсон төрлийг зарлаж өгдөг. Мөн хувьсагчийн нэрэнд том жижиг үсэг болон доод зураас, тоог хольж хэрэглэж болно. Ихэнхдээ том үсгээр эхэлдэг ба харин доод зураасаар эхлэхийг зөвшөөрдөггүй. Хэдийгээр хувьсагчийн нэр нь 255 хүртлэх тэмдэгтээс тогтож болох боловч яг үнэндээ 20 тэмдэгт ч гэсэн ашиглахад хэцүү байдаг. МашУртХувьсагчийнНэр : Integer; { урт хувьсагчийн нэр } Миний_хувьсагч : Integer; { доогуур зураас ашигласан } x : Integer; { нэг тэмдэгт ашигласан } X : Integer; { нэг тэмдэгт ашигласан} Тэмдэглэгээ2 : string; { үсэг болон тоо ашигласан } САНАМЖ: Паскал хэл нь тохиолдлыг нарийн мэдэрч чаддаггүй. Жишээ нь: var XPos : Integer; { ...later } XPos := 20; XPOS := 200; xpos := 110; XpoS := 40; Паскаль хэл нь С ба С++ хэлтэй харьцуулахад ойлгомж муутай байж болох юм. Гэхдээ та удахгүй үүний ялгааг олж, ашиглаж сурах болно. САНАМЖ: Паскал хэл нь тохиолдлыг нарийн мэдэрч чаддаггүй боловч та програмдаа тэмдэгт мөртэй ажиллахдаа том үсэг ашиглаж сурах хэрэгтэй. Обьект Паскал хэлний Өгөгдлийн төрөл Шинээр: Объект Паскалийн өгөгдлийн төрөл нь санах ойд мэдээллийг хадгалдаг хөрвүүлэгч /compiler/ аргыг тодорхойлсон. Зарим програмчилалын хэлэнд хувьсагч олон төрлийн утгатай байж болдог. Жишээ нь доорх BASIC код юм. X = -1; X = 1000; X = 3.14; BASIC хэлэнд тооны төрөл хэмжээг тааруулахын тулд санах ойн зохицуулалтад анхаарах хэрэгтэй. Хувьсагчийг зарлах Паскал хэлэнд хувьсагчийг програмд ашиглахаасаа өмнө төрлийг нь
  • 14. зарлаж өгөх ёстой. var X1 : Integer; X : Integer; Y : Double; Z : Byte; { ...ө.х } X1 := -1; X := 1000; Y := 3.14; Z := 27; Өгөгдлийн төрлөө зөв сонгосноор програмын үр дүн зөв гарна гэсэн үг. Тиймээс програмаа ажиллуулахаас өмнө өгөгдлийн төрлөө сайн нягтлаж шалгах хэрэгтэй. Зарим өгөгдлийг signed, unsigned –аар өргөтгөж болдог. Өгөгдлийн signed төрөл нь эерэг ба сөрөг утгыг авдаг бол unsigned төрөл нь зөвхөн эерэг утгыг авдаг. Хүснэгт 1.1 д Паскалийн үндсэн өгөгдлийн төрлүүдийн санах ойд эзлэх хэмжээ болон авч болох утгын хязгаарыг үзүүлэв. Хүснэгтэд "String" буюу тэмдэгт мөрийг оруулаагүй. Харин "Strings" гэсэн дараагийн бүлэгт авч үзнэ. ХҮСНЭГТ 1.1. ОБЪЕКТ ПАСКАЛД АШИГЛАДАГ ӨГӨГДЛИЙН ТӨРЛҮҮД (32-BIT).
  • 15. Дээрх хүснэгтэд үзүүлснээр 32 битийн орчинд Integer, LongInt төрлүүд нь санах ойд ижил 4 байт эзлэж байна. Энэ нь Delphi 4.0 -ийн орчинд нийцэж байна. Харин 16 битийн орчинд Integer нь 2 байт эзлэж байхад Longint нь 4 байт эзлэдэг. Ихэнх програмистууд LongInt –ээс илүү Integer –г өргөн хэрэглэдэг. Мөн Int64, Comp (computational) төрөлүүд нь авч болох утгын хэмжээ ижил байна. Харин ялгаатай тал нь өөрсдийн дотоод хөрвүүлэлт хийдэг арга юм. Int64 нь integer төрөл, харин Comp нь real төрөл юм. Real ба Double төрлүүд нь ижил юм. Delphi програмын өмнөх хувилбарт Real төрөл нь 6 байт байсан бол одоо 8 байт болсон. Энэ өөрчлөлт нь Real төрлийг өнөөгийн хэв маягт ашиглах нөхцлийг бүрдүүлж өгсөн хэдий ч Delphi програмд ашиглагдахдаа Double төрлөөс багаар ашиглагддаг буюу хуучирсанд тооцогддог. САНАМЖ: Windows нь 2,147,483,647 (integer –н maximum утга) – аас илүү утга буцааж чадах GetDiskFreeSpaceEx функцыг агуулдаг. САНАМЖ: Single, Double, Extended, Currency өгөгдлийн төрлүүд нь float төрөлд хамаарагдана.(10 -тийн тооллын систем). Харин бусад төрөлтэй integer –ээр холбогддог. integer нь бутархай тоон утгыг илэрхийлдэггүй. Жишээ нь дараахь кодод буруу зарласан байна. var X : Integer; { Дараа нь... } X := 3.75; Энэ үед алдааг тань Паскал хэл тэр дор нь танд хэлж өгнө. Харин та үүнийг мэдсэнээр float төрөл нь Windows орчинд ямар их ашиглагдахыг анзаарах болно. Өгөгдлийн төрлүүдийн хоорондох хөрвүүлэлт Объект Паскаль нь өгөгдлийн төрлүүдийн хооронд хөрвүүлэлт хийж чаддаг. Жишээ нь: var Res : SmallInt; Num1 : Integer; Num2 : Integer; { Дараа нь... } Num1 := 200; Num2 := 200; Res := Num1 * Num2;
  • 16. SmallInt дэх Integer төрөлтэй хоёр өгөгдлийг хооронд нь үржүүлж үр дүнг нь гаргаж байна. Энэ томъёо нь хоёр өгөгдлийн төрлийг холисон хэдий ч Обьъект Паскаль хөрвүүлэлт хийж чадаж байна. Хариу буюу үр дүн нь - 25,536 гарна. Хүснэгт 1.1 -д үзүүлснээр SmallInt нь хамгийн ихдээ 32,767 утга авдаг. Тэгвэл энэ 32,767 дээр нэгийг нэмбэл хариу нь -32,768 болно. Та үүнийг туршихын тулд доорхи зааврын дагуу ажилларай. 1. Шинэ проект нээж form -д label ба button -г байрлуул. 2. button дээр Double-click хийж OnClick event -ийг сонго. 3. Дараахь байдлаар бичнэ. procedure TForm1.Button1Click(Sender: TObject); var X : SmallInt; begin X := 32767; X := X + 1; Label1.Caption := IntToStr(X); end; 4. Run хийж button товчоо дар. Label -ийн caption дээр -32768 болж өөрчлөгдснийг та харах болно. /IntToStr функц нь integer -ийн утгыг string болгон хөрвүүлнэ./ Дээрх дасгал 32767 нэмэх 1 тэнцүү 32768. Дээрх жишээ нь overflow ба wrapping гэж юу болохыг харуулж байгаа юм. Хувсагчдын утгын хувьд overflow буюу орон халилт үүсэхээргүй /ө.х maximum -аас бага/ байх ёстой. Integer төрөл нь ойролцоогоор –2 -оос +2 тэрбумын алслалттай байдаг. Зарим тохиолдолд Object Pascal нь хөрвүүлэлт хийж чаддаггүй. Сompiler error нь Integer Real хоёр хоорондоо хамааралгүй төрлүүд гэж мэдээлнэ. Сompiler error нь тодорхой төрлүүдэд хадгалагддаггүй утгуудыг зааж өгнө. Жишээ болгон доорх кодыг авч үзье. var X : Byte; begin X := 1000; end; Тогтмолыг зарлах Сompiler error –г харуулж байна. Танд Х хувьсагчийн утгыг 1000 гэж сонгож болохгүйг Сompiler нь мэдээллэх бөгөөд учир нь Х хувьсагч нь Byte хэмжээтэй ба Byte нь 0 - 255 хүртэл хэмжээтэй байдаг. Зөвлөгөө: Сompilе хийхдээ санамж анхааруулга алдааны мэдээлэл зэргийг сайтар дагах хэрэгтэй. Тэдгээр нь програмын кодын алдаа хэрэгцээтэй зарим мэдээллүүдийг хэлж өгдөг. Обьект Паскалийн Оператор Хүснэгт 1.2 Түгээмэл ашиглагддаг операторууд.
  • 17.
  • 18. Операторуудын хувьд байнга хэрэглэгдэж байдаг хэсэг нь байхад бас хааях ашиглагддаг операторууд ч байдаг. Аnd, or, not зэрэг түлхүүр үгс нь логикийн болон битийн гэсэн төрөлтэй байдаг. Жишээ нь if (Started = True) and (X > 20) then Z := X and Y; Дээрх жишээнд and үйлдэл нь хоёр янзаар хэрэглэгдэнэ. Тогтмол Өмнө хэлсэнчлэн тогтмол нь утгын хувьд өөрчлөгдлөггүй. Хувьсагчийн утгыг програм бичигч өөрчилж чаддаг бол тогтмолын утгыг чаддаггүй. Тогтмолыг зарлахдаа const түлхүүр үгийг ашигладаг. const DefaultWidth = 400; DefaultHeight = 200; Description = ‘Something really cool.’; Тогтмолыг зарлахдаа (:=) тэмдэг бус = тэмдэгийг ашигладаг. Мөн ямар ч өгөгдлийн төрлийг онцолж заадаггүй. Массив
  • 19. Массив буюу array нь бүлэг утгын цогц гэж хэлж тодорхойлж болно. Өөрөөр хэлбэл нэг төрөлтэй хэсэг элемент юм. Зарлах үед түүнийг санах ойн тодорхой зайд байрлуулдаггүй ба зөвхөн заагчийн эхлэх утга тогтоогддог. Массивыг дараах хэлбэрээр зарладаг. var MyArray : array[0..4] of Integer; Integer нь 4 байтын санах ойтой учраас дээрх массивын хувьд 5 индекстэй тул санах ойд 20 байт эзлэж байна. MyArray массив 5 гишүүн буюу индекстэй. Индексээ дугаарлаж тэмдэглэхдээ [ ] хаалтад бичиж өгнө. Массивийн гишүүн тус бүрд доорх жишээнд анхны утга олгов. MyArray[0] := -200; MyArray[1] := -100; MyArray[2] := 0; MyArray[3] := 100; MyArray[4] := 200; Дараагийн жишээнд 3 ба 4 –р индексуудын утгуудыг хооронд нь нэмж Х хувьсагчид олгож байна. X := MyArray[3] + MyArray[4]; { үр дүн 300 } Олон хэмжээст массив Массив нь олон хэмжээст байж болно. Өөрөөр хэлбэл санах ойд мөр мөрөөрөө дараалж ажилладаг. Хоёр хэмжээст integer төрөлтэй массив үүсгэхийн тулд кодыг дараахь хэлбэрээр бичнэ. var MdArray : array[0..2, 0..4] of Integer; Энэ массив санах ойг 60 байтаар ачаалж байна. Массивын утга нь урд нь санах ойд байрлаж байсан санамсаргүй өгөгдөл юм. Мөн индекс нь тэгээс эхэлдэг. Массивийн элементүүдийг энгийн масив хэлбэрээр ашиглаж болох ба [ ] хаалтын тусламжтай дараахь хоёр байдлаар ашиглаж болно. Үр дүн нь ижил гарна. X := MdArray[1][1] + MdArray[2][1]; X := MdArray[1, 1] + MdArray[2, 1]; САНАМЖ: Массивийн элементийн тооны хязгаарт байхгүй индекс гарч ирвэл алдаа заана. Доорхи жишээнд үзүүлэв. var MyArray : array[0..4] of Integer; X : Integer; begin X := MyArray[3] + MyArray[5]; { 5 дугаартай индекс байхгүй. } end; Тэгэхээр массивийн элементийн хязгаарыг анх зарлаж өгөх хэрэгтэй. Жишээ нь 10*20 хэмжээтэй массив үүсгэе. var MyArray : array[10..20] of Integer; 10 баганатай 20 мөртэй хүснэгт мэтээр төсөөлье. const myArray : array[0..4] of Integer = ( -200, -100, 0, 100, 200 ); Их ба бага функц Эдгээр функцуудыг массивт олон дахин ашиглаж болно. Хувьсагчийн утгын дээд доод хязгаарыг массивт энгийн байдлаар зарлаж өгдөг. Бага /Low/ функц нь доод хязгаараас буцах үйлдэл /return/ хийдэг. Харин Их /High/ функц нь мөн адил массивын дээд хязгаараас буцдаг. var X, I, Lower, Upper : Integer; MyArray : array[10..20] of Integer; begin { MyArray массивын эхний хэсэг } Lower := Low(MyArray); { Lower нь 10 } Upper := High(MyArray); { Upper now contains 20 } X := 0;
  • 20. for I := Lower to Upper do X := X + MyArray[I]; { Х хувьсагч дээр ямар нэг зүйл хийнэ. } end; Массивийн хязгаарын гаднах утга нь ойртоход их ба бага функц тодорхой биш хэрэглэгддэг. Динамик Массив Delphi 4 -т массивийг динамикаар оруулдаг. A динамикийн массивийн эхний хэмжээг гаднаас зарласан ба массивийг зарлах цагт хэмжээг нь тавьж агуулдаггүй. Дараа нь SetLength -ийн хэмжээг заан хэрэглэдэг. Жишээ нь: var BigArray : array of Integer; { хэмжээ олгоогүй байна } X : Integer; begin X := GetArraySize; { хэрэгтэй хэмжээг тодорхойлогч функц } SetLength(BigArray, X); { динамикаар хэмжээ тогтоож байна } { одоо BigArray –г хэргэлнэ} end; Шинээр : A динамик массив нь массиваа санах ойд ачаалдаг. A динамик массив нь програмд их бага хэмжээгээр хэрэглэгддэг. Массивийн индекс бүрд элемент харгалзуулан байрлуулах нь ач холбогдолтой. Санах ойд 10 integer хангалттай байлгах хэрэгтэй гэвч бусад нь магадгүй 1000 integer хангалттай хэрэглэдэг. Массиваа Copy функцээр байрлуулан хэрэглэж чадна. Жишээ нь массив нь 100 ба 200 хэмжээтэй элемент хэрэглэдэг : Copy(BigArray, 200); Массивдаа утгыг нь хадгалсан ба массивийн хэмжээ нь 100 -с 200 элемент болон өссөн. Олон хэмжээст dynamic массивыг үүсгэх нь нэг хэмжээст массивыг үүсгэхтэй бараг адилхан байдаг. Доор 2 хэмжээст массивыг үүсгэв. Код нь: var BigArray : array of array of Integer; begin SetLength(BigArray, 20, 20); BigArray[0][0] := 200; end; Strings Програмд String -тэй ажиллахад хэцүү. Object Pascal нь 3 string төрөлтөй: long string, short string, ба wide string. Нэмэлт string төрөлтөй, энэ нь төгсгөлгүй string-briefly ба stringmanipulation функцтэй. Short String Богино string төрлийн урт нь тогтмол, тэмдэгтүүдийн хамгийн их хэмжээ нь 255 тэмдэгт байдаг. Богино string нь 1 -ээс 2 замтай ба 1 зам нь 255 byte хэмжээтэй ShortString -д зарлагддаг. var S1 : ShortString; { 255 тэмдэгт } S2 : string[20]; { 20 тэмдэгт } String manipulation нь short төрөлтөй учир нь санах ой дахь string -ийн хэмжээг өөрчлөхгүй. Богино string хуучин төрлийг нь бодох ба урт string оруулна. Богино strings нь урт byte -тай учир нь string -ийн анхны элемент нь уртаа агуулдаг. (тоо болон тэмдэгт). Short string -ийн анхны элементийн утга нь string -ийнхээ уртыг тодорхойлдог. Жишээ нь : var S : ShortString; { 255 тэмдэгт } Len : Integer; begin S := ‘Hello’; Len := Ord(S[0]);
  • 21. end; Дээрх жишээнд string -ийн уртыг S[0] утга тодорхойлж байна. Мөн функцын уртыг тодорхойлж чадна. Функцын урт нь bit байна. Санамж : Ord функцын утгыг Char төрөл, integer утгаар хувиргаж хэрэглэнэ. (дараалсан утга) Мөн Ord функц нь жагсаалттай хамт хэрэглэгддэг. Хэрэв та short string -ийн эхний элементийг хэрэглэх бол түүний урт нь string байна. Тэгэхлээр програмын орчинд түүнийг хэрэглэх шаардлага гарч ирж байна. Эхлэн суралцагч таны хувьд програм техникийн дэвшилтэт технологид 0 байтын short string -ийг нэмж судлахыг санал болгож байна. Long String long string төрөл нь string объектэд динамик байдлаар байрладаг. Хэмжээний хязгаар нь зөвхөн ачаалагдсан санах ойгоор тодорхойлогддог. Объект Паскал нь санах ойд string -ийг байршуулж бас устгаж хэрэглэдэг. Long strings нь харин маш их уян хатан чанартай бөгөөд заримдаа short string шиг удаан болхи мэт нарийн төвөгтэй тэмдэгтүүдээ ачаалдаг. Хэрэв үр дүн тань шүүмжлэлтэй санагдвал long string-ийг ашиглаарай. Динамикаар санах ойд байрлуулснаар long string нь тэмдэгт мөрийн гарчгийг өөрчлөх боломжтой болсон Доорх жишээнд string нь түлхүүр үг, параметрийн хэмжээгүй зарлагдсан байна. var S : string; { динамикаар байрласан long string } Учир нь string нь динамикаар байрласанд оршино. Харин танд одоо үйлдлийн хэсэгт өөрчлөлт хийж чадах боломж үлдсэн шүү. Ер нь long string нь хэрэглэхэд маш энгийн ба өөрөөр хэлбэл тэмдэгт мөрөө санах ойгоос ачаалах үед зай завсар гэх мэтийн санаа зовоосон асуудал гарахгүй. Учир нь энэ бүгд илүүчгүй дутуучгүй бүгд автомат юм. Long string нь 0 элементийг зөвшөөрдөггүй бөгөөд хэрэв түүнд хандвал үр дүн тань compiler error буюу алдаатай гарна гэсэн үг. SetLength функцийг ашиглавал зохистой. Wide String Unicode төлөв байдалтай double-byte хэрэглэдэг. Windows API функцэд хэрэглэгддэг. long string -ийн адилаар авах утгын хэмжээний хязгаар нь зөвхөн ачаалагдсан санах ойгоор тодорхойлогддог. string объектэд динамик байдлаар байрладаг. Үүнээс илүү деталчилсан мэдээллийг та олж авч чадахгүй болов уу. Учир нь OLE function -той дуудуулах хязгаартай байдаг. Null /хоосон/ - Төгсгөгч Strings: PChar ба Char -ын Массив Объект Паскал нь С ба C++ хэлнүүдээс string өгөгдлийн төрлөөрөө ялгаатай. C ба C++ -д string нь 0 нь төгсгөлийг заадаг. Мөн массивын урт нь байтаар биш байдаг. PChar төрлийг дүүргэж хэрэглэх хэрэгтэй ба массивын бүх төрлийг ашиглаж болдог. Жишээ нь Windows MessageBox функц юм. Энэ функц нь Windows -ийн стандарт message мэдээллүүдийг дэлгэц дээр гаргадаг. function MessageBox(hWnd: HWND; lpText, lpCaption: PChar; uType: UINT): Integer; Хоёр дахь ба гурав дахь параметрүүд нь массивын элементийг заагчаар харуулж байна.(message box текст, message box caption). Эдгээр функцуудыг та Delphi програмаас дуудан ажиллуулж болно. PChar type - ийн жишээ код: var Text : string; Caption : string; begin Text := ‘Шалгаж байна.’; Caption := ‘Текст мэдээлэл’; MessageBox(0, PChar(Text), PChar(Caption), 0); end; Дээрх жишээнд Pchar -ыг Pascal -ын long string, null-terminated string ашиглан үзүүллээ. Харин та өөрөө Pchar -ыг үргэлжүүлж судлаарай.
  • 22. var Text : PChar; begin Text := ‘Шалгаж байна.’; MessageBox(0, Text, ‘Message’, 0); end; Pascal -ын string нь хүчирхэг төдийгүй хялбарханаар хэрэглэгдэж байна. Та үүнээс олон удаа хэрэглэх боломж байхгүй. Pchar -ыг long string, nullterminated string руу хөрвүүлж болдгийг дээрх жишээ харууллаа. Төгсгөлд нь та массивт Char төрлийн өгөгдлийг Pchar ашиглан байршуулж үйлдэл хийж сурлаа. var Text : array [0..20] of Char; begin Text := ‘Шалгаж байна.’; MessageBox(0, Text, ‘Message’, 0); end; Windows API функцийг дуудахдаа null-terminated string -ийг параметраар ашиглавал илүү тохиромжтой. Үндсэн Тэмдэгт мөр /String Basics/ Pascal нь нилээн хэдэн string төрлийн элементүүдтэй. + Operator var S1 : string; S2 : string; begin S1 := ‘SW210 Kim’; S2 := ‘Reisdorph’; Label1.Caption := S1 + ‘ ‘ + S2; end; Дээрх кодод S1, S2 хувьсагчдийн үр дүнг label -ын Caption property –ээр дамжуулан харууллаа. Одоо арай өөр жишээ үзье: var X : Integer; begin X := 199; Label1.Caption := ‘The result is: ‘ + IntToStr(X); end; Энд IntToStr функц ашиглан 199 гэсэн тоог тэмдэгт мөр болгон хувиргалаа. Subscript Oператор Тэмдэгт мөрөөс subscript ([ ]) –г ашиглан элемент бүрийг нь салган авч болдог. var S1 : string; S2 : Char; begin S1 := ‘Hello World!’; S2 := S1[1]; Label1.Caption := S2; end; Дээрх жишээнд S2 хувьсагч нь Char төрлийн байна. Үр дүнд Н гэж Label1.Caption дээр гарна. S[0] -ийг эхний элемент гэж long string, wide string -үүд үздэггүй. String -ийн контрол буюу тохируулга Object Pascal нь String -ийн контрол буюу тохируулгыг шинээр нэвтрүүлж өгсөн. Ихэвчлэн хэвлэдэггүй тэмдэгт мөрд ашигладаг. Та control character хийхдээ # тэмдэг ашиглах ёстой. Доорх жишээнд (ASCII 27) гэж тэмдэглэжээ.
  • 23. S := ‘This is a test. Escape follows.’#27’ Finished.’; S1 := ‘This is a test. Escape follows.’; S2 := ‘Finished.’; S3 := S1 + #27 + S2; Эндээс та хялбархан онол гаргаж болно. Form дээрээ button, label үүсгэ. button дээрээ Double-click /хулганаа товших/ хийж event -ийг нь OnClick болго: Label1.Caption := ‘Line 1’ + #10 + ‘Line 2’; Run хийж button товч дээрээ дар. Label 2 шугамаар мэдээллээ гаргадаг гэдгийг та одоо мэдэж авлаа. Дээрх кодын хувьд (ASCII 10) -ыг 2 шугамаар үзүүлхэд ашиглаж байна. Том хэмжээний текстэн мэдээлэлийг нэг шугамаар авч болно. (ойролцоогоор 200 орчим тэмдэгт орсон үед) Delphi Code Editor нь хамгийн ихдээ буюу 1,024 тэмдэгтээс тогтож болдог. Ийм хэмжээний мэдээллийн унших бүрэн бололцоотой гэж үздэг. Тэмдэгт мөрийн олон шугаман хэлбэрийг + operator -той жишээг доор үзүүлэв. MessageBox(0, ‘Энд маш урт message ‘ + ‘that seems to go on and on forever. In order ‘ + ‘to make the code more readable the message has ‘ + ‘been split across several lines of code.’, ‘Message’, 0); Тэмдэгт мөрийн харьцуулах үйлдэл String нь харьцуулах операторын тусламжтай харьцуулалт хийж чаддаг. Хүснэгт 1.3 их ашиглагддаг операторуудыг жагсаан бичив. ХҮСНЭГТ 1.3. ТЭМДЭГТ МӨРИЙН ХАРЬЦУУЛАХ ОПЕРАТОР. Эдгээр операторууд нь ASCII кодоор харьцдаг. Мөн үйлдэлд биелэгдэх дарааллаараа ялгагдана. Тэнцүү үйлдлийн буруу ашигласан жишээ: if FileName = ‘TEST.TXT’ then OpenFile(FileName) else ReportError; String-Manipulation ФУНКЦ Ихэвчлэн ашиглагддаг функцуудын тайлбарыг доорх 1.4 хүснэгтэд үзүүлэв. ХҮСНЭГТ 1.4. ТЭМДЭГТ МӨРИЙН ФУНКЦ БА ПРОЦЕДУРУУД
  • 24. САНАМЖ: Нэмэлт функцуудын талаар мэдээллийг Delphi програмын help руу орж additional дотроос олж аварай. Одоо жишээн дээр StrToInt function туршиж үзье. Value := StrToInt(Edit1.Text); Өөр StrToXXX функц (StrToFloat, StrToDate гэх мэт) дээрх замын дагуу ажиллана. Format function нь тэмдэгт мөр ба нэмэлт аргументэд хэвшүүлэлт хийдэг. Доорх жишээн дээр үр дүнг нь үзье. var S : string; X : Integer; begin X := 10 * 20; S := Format(‘Үр дүн: %d’, [X]); Label1.Caption := S;
  • 25. end; Үр дүн: 200 Энэ жишээнд %d тэмдэгт нь integer утгыг илэрхийлж байна. Мөн бусад тэмдэгтэй хувьсагчаар дамжуулан ажиллана. Жишээ нь: var X : Integer; Y : Integer; begin X := 20; Y := 5; Label1.Caption := Format(‘%d + %d = %d’, [X, Y, X + Y]); end; Дэлгэцэнд үр дүн нь гарахдаа дараах байдалтай байна. 20 + 5 = 25 Энэ жишээнд label -ын Caption property –г ашиглалаа. Өмнөх болон дараа дараагийн жишээнд ашиглаж бас болно. "Format Strings" –н талаар илүү их мэдээлэл үзье гэвэл Delphi help -ээс аварай. Windows үйлдлийн системийн ерөнхий зохион байгуулалтын талаар товчхон Windows-н өмнөх хувилбарууд MS-DOS үйлдлийн системтэй сайн зохицон ажилладаг боловч үйлдлийн систем гэсэн утгандаа бүрэн хүрч чадахгүй байсан бол өнөөгийн Windows95 өөрөө 1 цогц үйлдлийн системийг илэрхийлж чадах болжээ. Windows95 үйлдлийн систем нь ерөнхийдөө 3 дэд системд хуваагддаг. 1. Win KERNEL 2. Win GDI 3. Win USER Windows95 нь 16 болон 32 битийн программуудыг ажиллуулахдаа системийн виртуаль машин болон дээрхи 3 дэд системийн тусламжтайгаар зохион байгуулдаг. Системийн виртуаль машин гэдэг нь Windows-н бүх ажлыг дэмжиж байдаг Windows95-н бүрэлдхүүнд ордог үйлдлийн орчин юм. Мөн дээрхи 3 дэд системийн ажлыг дэмжиж байдаг. 32 битийн win гэдэг нь санах ойн 32 битийн моделийг ашиглаж байдаг windows-н шинэ хэрэглээ юм. Харин 16 битийн win гэдэг нь бидний урьд өмнө хэрэглэж байсан windows-н хуучин хувилбарууд юм. Тэдгээр нь санах ойн сегментийн хаяглалтийг буюу чухамдаа 80286 процессорын санах ойн моделийг ашигладаг. Тэдгээр нь Windows 3.x –нх шиг ажиллахдаа Windows95 нх шиг нэгдмэл нэг орон зайг хуваан эзэмшдэг бөгөөд олон бодлогын зарчимтай зохицодоггүй. Windows95-н хэрэглээний программийн төвшинд Windows 3.x –н API бүрэн тохирч ажилладаг. Win32 API нь Microsoft –н WinNT, Win32S, Win3.1-н өргөтгөл win32 битийн
  • 26. интерфейс юм. Windows95 үйлдлийн систем нь олон бодлогын аргад үндэслэн дээрх application-уудыг жолооддог. Бүрхүүл гэдэг нь хэрэглэгчийг системтэй харилцах үйлдлийг хангаж байдаг 32 битийн Windows application юм. Windows95-н бүрхүүл нь windows3.x-н программ менежер, файл менежер зэргийг нэгтгэсэн application юм. KERNEL KERNEL нь windows-н доод түвшиний динамик санах ойн функцүүдээр хангаж өгч байдаг үйлдлийн системийн цөм юм. Энэ нь 16 ба 32 битийн windows-н үйлдлүүд тохирох үйлчилгээг хангадаг. GDI GDI нь graphic device interface гэсэн товчилсон үг. Энэ нь Windows95-н график боломж болон дэлгэцэнд харуулах өнгө, хэлбэр дүрс, resolution-г хангаж байдаг. Win32 –т байдаг бүх шинэ боломжуудыг агуулна. USER USER нь дэлгэцийн диспетчер юм. Windows-н интерфейсийг үүсгэх, удирдах функцүүдийн цргц юм. Жишээ нь Хэрэглэгч хэд хэдэн MS-DOS –н Prompt гарган ашиглаж болно. Хэрэглэгч арай илүү виртуалчилах боломжийг хангадаг хэд хэдэн давуу тал гарч ирлээ. Системийн виртуаль машин Windows-н API функцийн төвшин Дээр харлуулсан орон зайг хамтарч эзэмшинэ. Энэдээс Windows95 нь 16 битийн программуудад тусад нь орон зай гарган өгч орчинийг нь бүрдүүлж өгдөг нь харагдаж байна. Windows 32 bit Windows 32 bit 16 bit 16 bit Бүрхүүл Windows-н дэд систем Win KERNEL KERNEL Win USER Win GDI Файл удирдах дэд систем
  • 27. Сүлжээ удирдах дэд систем Үйлдлийн системийн үйлчилгээ Виртуал машин удирдах дэд систем Хөтлөгч хэрэгслүүд Бүрхүүл Энэ нь хэд хэдэн системийн удирдлагыг хэрэглэх нөөцүүдийн боломжуудаар хангах программ юм. Windows95-үйлдлийн системийн бүрхүүл нь дэлгэц системийн нөөцүүдтэй харилцан ажиллахыг удирдан зохион байгуулдаг. API Хэд хэдэн зуун API функцүүд windows-н бүх системийн хийх үйлдчилгээг хангаж өгдөг. Windows-н орчин бол интерфейс баазын дуудалтаар ханддаг. Үүнийг API гэдэг. Системийн виртуаль машин Windows-н бүх application ситемийн виртуаль машины тухайн хил хязгаарт үйлдлээ гүйцэтгэдэг. 16 битын application –ууд өөрийн нэгдмэл хаяглалын орон зайд ажилладаг. Энэ нь application бүрийн өөрийн орон зайн хаяглалтыг 32 битын хаяглалтаар хангаж дэмжиж өгдөг. MS-DOS-н виртуаль машин Windows95 олон тооны MS-DOS-н программыг хамгаалалтын горим эсвэл 8086 виртуаль үйл ажиллагаа ажиллуулж дэмжиж байдаг. MS-DOS-н виртуаль машин хэд хэдийг үүсгэж болно. Виртуаль машины диспетчер Виртуаль машины диспетчер нь үнэндээ үйлдлийн системийн зүрх юм. Энэ нь доод түвшиний санах ойн удирдлага болон драйверуудын виртуаль зохион байгуулалтын үйлчилгээг хянаж ажилллаж байдаг. | Windows95 –н диспетчерүүд Windows95 –н виртуаль машины диспетчер дотор хоёр диспетчер ажиллаж байдаг. Үүнд: Үндсэн диспетчер. (primary scheduler) Энэ нь thread-дын приоретитүүдийг тооцоолж хариу өгнө. Квантын диспетчер (timeslice scheduler) Энэ нь хугацааны квантуудад хувааж хэсэгчлэн ажилуулана. Үнэн хэрэгтээ квантын диспитчер аль thread-н ямар хувийг нь ямар хугацаанд процессороор үйлчлүүлэхийг тооцоолно. Процесс 0-31 хүртэл приоритеттой байдаг ба үүнийг үндсэн диспетчер бодоод
  • 28. квантын диспетчер лүү гаргана. Хэрвээ процессийн хугацааны квант 100 хувь болсон бол VMStat_Background эсвэл VMStat_High_Pri_Background гэдэг төлвийг үлдээдэг. DELPHI ДЭЭР АНХНЫ АЛХАМ ХИЙЦГЭЭЕ Та мэдэж байгаа Delphi бол Borland пүүсийн Windows-ийн орчны програмыг бичдэг дээд түвшний програм юм. Delphi -ээр та Windows -ийн орчны программыг урьд байгаагүйгээр хялбар бөгөөд хурдан бичих боломжтой. Win32 эсвэл Win32 graphical user interface (GUI) -ийг та нээж ажиллуулж болно. Win32 GUI -ийг ажиллуулснаар та дээд түвшний програмчлалын хэлний үнэн хүч чадлыг мэдрэх болно. Мөн та Web browsers –ийг минутийн дотор үүсгэдэг шигээ form дээрх ActiveX control -оор тусгай програмуудыг үүсгэж болно. Энэ мэт олон зүйлийн давуу талууд Delphi -д байдаг ба Delphi нь өөрөө кодоо үүсгэдэг тул програмын биелэлт хурдан байдаг. Танд л гэж хэлэхэд Pascal -ын программчлалыг жаахан судлах хэрэгтэй. Delphi нь Windows програмчлалын доод түвшний нарийн зүйлүүдийг нуудаг ба энэ нь танд чухал биш. Эцэст нь та програмист л болохыг хүсч байгаа бол энэ нь бүгдийг судлах хэрэгтэй. Delphi нь танд урьд байгаагүй хөгжил таашаалыг авчрах болно. Ингээд ханцуйгаа шамлан бүх ажилдаа орогтун. Delphi сэтгэлийн таашаалыг авчрах агуу программ юм. Delphi IDE -ийг өнгөц харъя Энэ хэсэг нь Delphi integrated development environment (IDE) -ийг агуулна. Windows програмчлалыг судлах бүхэнд энэ нь хэрэгтэй юм. Та одоо Delphi -ийг эхлэх урам зоригтой байгаа гэж бодож байна. Программыг эхлүүлэхэд та хоосон form ба IDE -ийг харах болно.
  • 29. Delphi IDE нь 3 хэсэгт хуваагдана. Дээд хэсгийг нь үндсэн цонх гэдэг. Энэ нь toolbars болон Component palette -ийг агуулдаг. Delphi toolbars нь compiling project, хадгалах, нээх үйлдлүүдийг нэг товшилтоор гүйцэтгэх боломжийг танд олгоно. Component palette нь wide array of components агуулдаг ба түүнийг form дээр чирч тавьж болно. Component -ууд нь text labels, edit controls, list boxes, buttons ба бусад болно. . Componentууд нь бүлгүүдэд хуваагдсан байна. Component palette -ийн дээд талын tab -ыг харав уу? Дээр нь очоод click хийвэл өөр өөр component гарч ирнэ. Form дээрээ component -оо байрлуулахын тулд Component palette -ийн компонентын button дээр click хийж component -оо харагдах хэсэгт нь очоод click хийх хэрэгтэй. Яаж хэрэглэх үр дүнд юу болох бол гэж санаа зовох хэрэггүй. Эдгээр нь хормын дотор болно. Шинэ нэр томъёо: Component гэдэг бол software -ийн 2 хэсгийг агуулсан ба тусгай урьдчилан тодорхойлогдсон функц үйлдлийг нь гүйцэтгэж байдаг. Жишээ нь: text label, edit control, list box. Обьектийн инспектор Үндсэн цонхны доор дэлгэцийн зүүн талд Object Inspector байна. Энэ нь component -ийн properties ба events -үүдийг өөрчлөхөд ашиглагддаг. Delphi -тэй ажиллах явцдаа үргэлж Object Inspector -ийг та хэрэглэх болно. Object Inspector нь 2 хэсэгтэй. Properties tab ба Events. Component -ийн properties нь component -ийг яаж ажиллуулахыг удирдана. Жишээ нь : Color property - ийг өөрчлөхөд background color -нь өөрчлөгддөг. Шинэ нэр томъёо: property –нь component -ийн үйл ажиллагааг тодорхойлдог. Events хэсэг нь component -ын event -уудын жагсаалтуудаас бүрдэнэ. Component дотор үйлдэл хийхэд event -ийг ашигладаг. Жишээ нь component дарагдахад event нь component дарагдсан байна шүү гэж танд хэлнэ.Та component -д хамаарах код бичиж болох ба тусгай үйлдлийг гүйцэтгэхэд хэрэглэж болно. Шинэ нэр томъёо: event бол цонх ба хэрэглэгчтэй ажиллах component - ийн харилцан ажиллагааны үр дүн юм. Delphi –ийн ажлын талбар Delphi IDE -ийн үндсэн хэсэг нь ажлын талбар юм. Ажлын талбар нь Form Designer -ийг үүсгэнэ. Энэ нь гайхмаар юм биш Form Designer нь өөрөө form үүсгэдэг. Delphi -д form гэдэг нь программын цонхыг хэлнэ. Form нь программын үндсэн цонх байж болно, dialog box эсвэл цонхны янз бүрийн хэлбэртэй байж болно. Form Designer -ийг, form -ийг үүсгэх процессийн хэсэгт component -уудыг нь байрлуулах, зөөх зэргээр ашиглаж болно. Form Designer -ийн ард Code Editor байдаг. Программын кодыг Code Editor дээр бичдэг. Application -ийг үүсгэн ажиллах явцад Object Inspector, Form Designer, Code Editor, ба Component palette -ууд нь харилцан уялдаатай байдаг. Та Delphi IDE-ийг мэддэг боллоо одоо ямар нэг зүйлийг хийж үзье.
  • 30. Таны эхний програм: Hello World Дэлгэцэнд Hello World гэж хэвлэх нь бүх програмчлалын хэлний сурах бичигт байдаг уламжлалт програм юм. Заавал ийм байх албагүй гэж би боддог. Pascal хэлийг өмнө нь судалсан бол сайн юм. Та гайхаж магадгүй юм, Delphi танд одоогийн Windows program -ийн Hello World -д хүрэх хамгийн хялбар замыг зааж өгнө. Програм бичих Та яг одоо Delphi -ийг ажиллуулж байгаа бол blank form -ийг харсан байх ёстой. Form нь Form1 гэж нэрлэгдсэн байдаг. Form -ийн зүүн хэсэгт Object Inspector form -ийн properties -үүдийг харуулна. Object Inspector -ийн title bar дээр товш. Caption property нь идэвхжих ба cursor нь тэнд юу хийхийг хүлээнэ. Hello World! гэж бичин form -ийн caption -ийг өөрчил. Санамж: Properties -ийг өөрчлөх бол Delphi шууд өөрчлөлтийг нь гаргадаг. Caption -ийг өөрчлөх үед form -ийн window caption нь өөрчлөгдөж байгааг ажигла. Toolbar дахь Run товчийг товш. Form нь гарахдаа caption нь Hello World!. - ийг гаргана. Энэ тохиолдолд ажиллаж байгаа программ нь бараг л blank form шиг харагдана. Програмыг өөрчлөх Одоо программаа жаахан өөрчилье. Hello World чинь байгаа бол Close button дээр товшин хаах хэрэгтэй. Form Designer дахин гарч ирэх ба form- ийг өөрчлөх боломжтой. Программыг илүү сайжруулахын тулд цонхны төвд текст нэмэх хэрэгтэй. Үүнийг хийснээр form -доо text label -ийг та нэмж өгнө. 1. Эхлээд Component palette -ийн Standard хэсэгт товш. 2. Label button -ийг товшоод form -ийн хаа нэгтээ товш. Label component нь form -ийн дотор байна. 3. Object Inspector дээр буцаад оч. Label1 -ийн properties -ууд гарч ирсэн байгаа. Caption property нь бас идэвхжсэн байгаа. 4. Object Inspector эсвэл Caption property -ийн titlebar дээр товш тэгээд Hello World! гэж бич. Form -дээрх label нь Hello World!. гэж гаргана. 5. Үүнийг хийсэн бол label -ийн text -ийн хэмжээг өөрчилж чадна. Font property дээр 2 товш. Property нэмэлт font attribute -ийг харуулахын тулд өргөн болно. 6. Font -ийн Size property -ийг 24 болгоод form -дээрээ товш. Label шинэ хэмжээтэй болно.
  • 31. Програмаа хаах Delphi -д жаахан дурласан бол энэ нь бүхнээс илүү таны сонирхлыг татна. Дараа нь юу хийх вэ гэвэл одоогийн прожектийг хаах хэрэгтэй. File цэсний Close All -ыг сонго. Project1 -ийн өөрчлөлтийг хадгалах бол No -ийг сонго. Таны 2 дахь программ: Hello World, II хэсэг Pascal -ийг судлахаасаа өмнө Delphi хэрхэн ажиллдаг талаар мэдэх хэрэгтэй. Танд Pascal –ийн олон төрөл дээр ажиллахад энэ нь хэрэг болно. Энэ хэсэг нь Delphi -ийн үнэн хүчийг хальт агуулна.