СДЕЛАЙТЕ СВОИ УРОКИ ЕЩЁ ЭФФЕКТИВНЕЕ, А ЖИЗНЬ СВОБОДНЕЕ

Благодаря готовым учебным материалам для работы в классе и дистанционно

Скидки до 50 % на комплекты
только до

Готовые ключевые этапы урока всегда будут у вас под рукой

Организационный момент

Проверка знаний

Объяснение материала

Закрепление изученного

Итоги урока

Геометрия алгебра

Категория: Геометрия

Нажмите, чтобы узнать подробности

Трапециянын аянтын бийиктигин ортоклаз сызылған кобойтконго барабар. 

Просмотр содержимого документа
«Геометрия алгебра»

Мазмуну


1-глава. Delphi программалоо чөйрөсү 3

1.1. Delphi чөйрөсү жөнүндө жалпы маалымат 3

1.2. Delphi чөйрөсүн орнотуу 4

1.2. Delphi программасын жүктөө. Проекттердин жумушчу каталогу 4

1.4. Delphi’нин беш терезеси 5

1.5. Delphi’деги колдонмонун проекти 7

1.5. Standard барагынын Label, Button жана Edit компоненталары менен программа түзүү 14

2-глава. Delphi программалоо тили 16

§ 2.1. Берилгендердин тиби. Өзгөрмөлөр жана турактуулар. 16

2.1.1. Берилгендердин тиби 16

2.1.2. Өзгөрмөлөр 18

2.1.3. Турактуулар (константалар) 19

2.1. ListBox компонентасы жана анын жалпы мүнөздөмөсү 24

BitBtn компоненти (сүрөттүү баскыч) 26

3-глава. Delphi тилиндеги башкаруучу конструкциялар 28

§ 3.1. Бутактуу алгоритмдерди программалоо 28

3.2.1. Шарттуу конструкция 28

3.2.2. Тандоо конструкциясы 29

Берилгендерди кийирүүчү жана жыйынтыктарды чыгаруучу диалогдук терезелер 36

§ 7. Циклдер, алардын түрлөрү жана колдонулушу 42

For инструкциясы 43

6-глава. Массивдер 46

6.1. Массивди жарыялоо 46

6.2. Массивдердин үстүнөн аткарылган операциялар 47

6.2.1. Массивди чыгаруу 47

6.2.2. Массивди киргизүү 49

6.2.3. Массивдин максималдык (минималдык) элементин табуу. 53

6.2.4. Массивден элементти издөө 55

6.2.5. Массивди сорттоо 57

6.3. Көп ченемдү массивдер 59

StringGrid компоненти 64

7-глава. Символдор жана жолчолор 66

7.1. Символдор менен иштөөчү функциялар 66

7.2. Жолчолор менен иштөөчү стандарттык функциялар 67

7.3. Жолчолор менен иштөөчү стандарттык процедуралар 69

7-глава. Подпрограмма. Процедуралар жана функциялар 73

10-лекция. Процедуралар 80

8-глава. Файлдар 83

5-глава. Консолдук колдонмолор 89

5.1. Консолдук колдонмону түзүү редактору жана программанын структурасы 89

5.2. Read оператору 90

5.3. Write оператору 90

Функцияны табуляциялоо 93

Каталыктарды түзөө 94

Графика жана мультимедиа 100

Берилгендер базасы 101

1. Телефондордун электрондук справочниги 101

1.1. Microsoft Access менен маалыматтар базасын түзүү 101

1.2. ADO технологиясы 103

1.3. Программанын тизмеги 104

Колдонулган адабияттар 107



1-глава. Delphi программалоо чөйрөсү

§ 1. Delphi программалоо чөйрөсү

1.1. Delphi чөйрөсү жөнүндө жалпы маалымат

Delphi (Дельфи) — бул объекттердин касиеттерин, окуяларын жана методдорун колдонуу менен визуалдуу түрдө колдонмолорду түзүүгө ылайыкташтырылган чөйрө болуп саналат.

Delphi’де программалоо тили катары Object Pascal тили алынган жана анын 1-версиясы 1995-жылы 14-февралда Borland фирмасы тарабынан презентация кылынган. Кийинки версияларынын өнүгүү тарыхы төмөнкүдөй:

Delphi 1 (1995), Delphi 2 (1996), Delphi 3 (1997), Delphi 4 (1998), Delphi 5 (1999), Delphi 6 (2001), Delphi 7 (2002), Delphi 8 (for .NET, 2003).

Delphi 2005 (2004), Delphi 2006 (2005), Delphi 2007 (2007), Delphi 2009 (2008), Delphi 2010 (2009).

Delphi XE (2010), Delphi XE2 (2011), Delphi XE3 (2012), Delphi XE4 (2013), Delphi XE5 (2013), Delphi XE6 (2014), Delphi XE7 (2014), Delphi XE8 (2015), Delphi 10 Seattle (2015).

2006-жылы Borland фирмасынан CodeGear (Embarcadero) кампаниясы бөлүнүп чыгат жана ал 2007-жылы веб-колдонмолорду PHP программалоо тилинде түзүү үчүн Delphi for PHP пакетин чыгарган. Ошондой эле тармактык технологияларды колдонуу үчүн Delphi for .NET жана Delphi Prism (for .NET, 2008), Delphi Prism 2011 (for .NET) версиялары да чыгарылган.

Delphi пакетинин - Borland Delphi 7 версиясында жөнөкөй бир терезелүү колдонмолордон маалыматтар базасын башкарууга чейинки программаларды түзүү өтө ыңгайлуу болгондуктан аны окутуу процессинде кеңири колдонулушууда.

Borland Delphi 7 пакети менен Windows операциялык системасынын чөйрөсүндө иштөөгө болот. Процессорго коюлуучу талаптар: такттык жыштыгы 166 МГц тен кем эмес, оперативдик эси 128 Мбайттан кем эмес болушу керек. Программаны толук орнотуу үчүн 475 Мбайт мейкиндик керек болот.

Borland Delphi 7 пакетинин төрт варианты бар: Personal, Professional, Enterprise жана Architect. Пакеттин деңгээли канчалык жогору болсо, ошончолук мүмкүнчүлүгү кеңири болот. Мисалы, Enterprise пакети обочолонгон базалар менен (мисалы, InterBase) иштей алса, Personal пакетинин андай мүмкүнчүлүгү жок.

1.2. Delphi чөйрөсүн орнотуу

Delphi 7 ни орнотуу үчүн анын диструбитиви жазылган дисктен Delphi Setup Launcher командасын жүктөө керек.

1.2.1. Delphi программасын жүктөө. Проекттердин жумушчу каталогу

Программаны орноткондон кийин Delphi’ни жүктөөгө болот. Бирок эң оболу D:\ дискине жумушчу каталог (проекттердин каталогун) түзүп алуу керек. Ал үчүн чычкандын көрсөткүчүн

Пуск | Программы | Borland Delphi 7 | Delphi 7

к омандасына алып келип оң баскычты басып, Свойства деген команданы тандоо керек (1.1-сүрөт). Натыйжада Свойства: Delphi 7 терезеси ачылат (1.2-сүрөт). Рабочая папка деген талаага проекттерди жазуу үчүн дайындалган папканын атын киргизүү керек. Андан кийин ОК баскычын басабыз.


Delphi 7’ ни жүктөө

Пуск | Программы | Borland Delphi 7 | Delphi 7

командасы аркылуу ишке ашырылат.

Эгерде жумушчу столдо Delphi 7’ нин ярлыгы болсо, аны эки жолу чыкылдатуу менен да жүктөөгө болот.

1.2.2. Delphi’нин беш терезеси

Delphi жүктөлгөндө экранда беш терезе пайда болот (1.3-сүрөт):

  1. Башкы терезе — Delphi 7;

  2. Форманын алгачкы терезеси — Form1;

  3. Объекттердин касиеттеринин редактору терезеси — Object Inspector;

  4. Объекттердин тизмесин кароо терезеси — Object TreeView;

  5. Коддор редакторунун терезеси — Unitl.pas.

А р бир терезени өз алдынча өзгөртүүгө болот. Коддор редакторунун терезеси форманын алгачкы терезеси аркылуу дээрлик жабылып турат, аны көрүү үчүн F12 же Togle Form / Unit (F12) баскычын басуу керек.

Коддор терезесинен формалар терезесине өтүү үчүн жогорудагы баскычты кайрадан басуу керек.


1). Башкы терезеде менюлар жолчосу, командалар, инстру-менттер панели жана компоненттер палитрасы жайгашкан (1.4-сүрөт).

2). Форманын алгачкы терезеси — колдонмолорду түзүү үчүн ылайыкташтырылган контейнер болуп эсептелет, анткени анын бетине каалагандай компоненттерди жайгаштырууга болот (1.3-сүрөт).

3). Object Inspector терезеси — объекттердин касиеттеринин редакторунун терезеси болуп эсептелет жана ал объекттердин касиеттеринин маанисин редактирлөө үчүн колдонулат (1.3-сүрөт). Объекттин касиетибул объекттин түрүн, абалын жана кыймылын мүнөздөйт. Мисалы, width и height касиеттери форманын өлчөмүн (туурасын жана бийиктигин), top жана left касиеттери — форманын э крандагы абалын, caption касиети — бөрктүн текстин аныктайт.



4). Объекттердин тизмесин кароо терезеси — объекттердин формадагы жайгашуу дарагын мүнөздөйт, б.а. объекттерди табуу жана тандоо үчүн колдонулат (1.3-сүрөт).

5). Коддор редактору терезесинде программанын тексти жазылат. Жаңы проект менен ишти баштоонун алдында Delphi тарабынан программанын шаблону сунушталат (1.5-сүрөт).

1.2.3. Delphi’деги колдонмонун проекти

Delphi’де түзүлгөн ар бир колдонмо (программа) үчүн проект түзүлөт.

Проекттин структурасы

Delphi проекти программалык бирдиктердин жыйындысынан – модулдардан турат.

Модулдардын бири – башкы модул болуп эсептелет жана ал программанын аткарылышы баштала турган инструкцияны кармап турат. Колдонмонун башкы модулу Delphi тарабынан толугу менен түзүлөт.

Башкы модул деп кеңейтилиши dpr болгон файлды айтабыз. Колдонмонун башкы модулунун текстин көрүү үчүн Project менюсунан View Source командасын тандоо керек.


Проектти сактоо

Проект — бул файлдардын жыйындысы болуп эсептелет жана төмөнкүлөрдөн турат:

  • проектти баяндоо файлы (DOF-файл);

  • башкы модулдун файлы (DFM-файл);

  • ресурстар файлы (RES-файл);

  • форманы баяндоо файлы (DFM-файл);

  • колдонмонун негизги коддору жайгашкан форманын модулунун файлы;

  • форманын компоненталарынын окуяларын иштетүүчү функциялар (PAS-файл);

  • конфигурация файлы (CFG-файл).

Компилятор жогорудагы файлдарды пайдалануу менен программаны аткаруучу файлды (ЕХЕ-файл) түзөт.

Проектти сактоо үчүн File менюсунан Save Project As командасын тандоо керек. Эгерде проект мурда бир да жолу сакталбаган болсо, анда Delphi эң оболу модулду (коддор редактору терезесиндеги малыматтарды) сактоону сунуштайт. Ошондуктан экранга Save Unitl As терезеси чыгарылат. Бул терезеде проект сакталуучу папканы тандап алуу керек жана модулдун аталышын кийирүү керек.

Программа модулдун аталышын Unit1.pas деп атоону сунуштайт. Бирок модулдун аталышын маселени чечүү темасы менен байланышкан ат катары берүү туура болот, мисалы биз сандардын суммасын табуу маселесин карап жатсак, Usumma.pas деп атаганыбыз оң болот. Бул жерде файлдын аталышындагы биринчи тамганын U тамгасы менен байланышы ал модулдун файлы экендигин билдирип турат жана аны проекттен жеңил эле айырмалоого болот.

«Сохранить» баскычын баскандан кийин кийинки терезе, башкача айтканда, проектти сактоо терезеси экранга чыгарылат. Мында проекттин файлынын аталышын тандоо менен проектти сактайбыз. Проекттин аталышын модулдун аталышына жакындаштырып, мисалы, Psumma.dpr деп атоого болот.


Эскертүү

Проект файлдардын жыйындысы болгондуктан ар бир проектти өзүнчө папкага сактоо сунуш кылынат.




§ 2. Форма жана компоненттер. Окуялар, методдор жана касиеттер

Delphi’де жаңы проектти даярдоо үчүн эң биринчи жүктөлө турган баштапкы форманы түзүү керек. Ал үчүн Form1 формасынын касиеттеринин маанилерин өзгөртүү жана формага керектүү компонеттерди жайгаштыруу керек.

Форманын касиеттери анын тышкы көрүнүшүн, б.а. өлчөмүн, экрандагы абалын, бөрктөгү текстин, рамкасынын түрүн аныктайт (1-табл.).

1-таблица


Касиеттери

Түшүндүрмөсү

Name

Форманын аты

Caption

Заголовканын тексти.

Width

Форманын туурасы

Height

Форманын бийиктиги

Top

Экрандын жогорку чекарасынан форманын жогорку чекарасына чейинки аралык

Left

Экрандын сол чекарасынан форманын сол чекарасына чейинки аралык

BorderStyle

Чекаранын түрү. Чекаранын түрү кадимкидей (bsSizeable), жөнөкөй (bsSingle) же жок (bsNone) болушу мүмкүн

BorderIcons

Терезени башкаруу кнопкасы

Icon

Диалогдук терезенин бөркүндөгү значогу

Color

Фондун түсү

Font

Шрифт

Программанын ишин аяктоо үчүн негизги терезени жабуу керек, б.а. форманы экрандан алып таштоо керек. Ал үчүн формага кнопка жайгаштырып, анын onClick окуясын иштетүүчү процедурага Close методун колдонобуз. Программалык код төмөнкүдөй болот:

procedure TForm1.Button1Click(Sender: TObject);

begin

Form1.Close;

end;

Окуялар жана аларды иштетүү процедуралары

Программа иштеп жаткан учурдагы аткарылуучу аракеттер окуя деп аталат.

Delphi де ар бир окуяга ат берилген. Мисалы, чычкандын баскычын чыкылдатуу - OnClick окуясы, ал эми чычкандын баскычы менен эки жолу (кош) чыкылдатуу - OnDblClick окуясы болуп саналат.

1-таблицада Windows’дүн кээ бир окуялары келтирилген.

1-таблица. Окуялар.

Окуялар

Качан аткарылат

OnClick

Чычкандын баскычын чыкылдатканда

OnDblClick

Чычкандын баскычын кош чыкылдатканда

OnMouseDown

Чычкандын баскычын басканда

OnMouseUp

Чычкандын баскычын коюп жибергенде

OnMouseMove

Чычканды жылдырганда

OnKeyPress

Клавиатураны басканда

OnKeyUp

Басылган клавиатураны коюп жибергенде

OnCreate

Объекти (форманы, башкаруу элементин) түзгөндө.


Окуяга реакция болуш үчүн кандайдыр бир аракет жасалыш керек. Ошондуктан колдонуучунун аракетине программа кандайдыр бир ишти аткаруусу үчүн программист тиешелүү окуяны иштетүүчү процедураны жазышы керек.

Окуяны иштетүүчү процедураны түзүү методикасын Эсептөө баскычынын OnClick окуясын иштетүүчү процедуранын мисалында түшүндүрөбүз.

Окуяны иштетүү процедурасын түзүү үчүн эң оболу Object Inspector терезесинен компонентти тандап алуу керек. Андан кийин ушул эле терезеде Events (Окуялар) барагына өтөбүз.

Events (Окуялар) барагынын сол колонкасында тандалган компонент кабыл ала турган окуялардын аттары көрсөтүлгөн. Эгерде окуя үчүн иштетүү процедурасы жазылган болсо, анда оң колонкада бул процедуранын аты көрсөтүлгөн.

Окуяны иштетүү функциясын түзүү үчүн процедуранын аты турган талаага чычкандын баскычын эки жолу чыкылдатуу керек. Натыйжада коддордун редактору ачылып, окуяларды иштетүү процедурасынын шаблону пайда болот.





1.5. Standard барагынын Label, Button жана Edit компоненталары менен программа түзүү

S tandard барагы базалык компоненттер барагынын катарында (унчукпаганда) биринчи болуп жайгашат. Мында 17 компонента бар. Алардын ичинен Label, Button жана Edit компоненталарын карайбыз.

1). Label компонентасы. Label компонентасы A символу менен белгиленген. Ал текстти форманын бетине чыгаруу үчүн колдонулат. Анын касиеттери тексттин көрүнүшүн жана жайгашышын аныктайт (1-таблица).

1-таблица.

Касиети

Колдонулушу

Name

Компоненттин аты. Компонентти жана анын касиеттерин тандоо үчүн колдонулат.

Caption

Компоненттин талаасына жазыла турган текст.

AutoSize

Талаанын өлчөмү тексттин узундугуна жараша өзгөрөт.

WordWrap

Учурдагы жолчого батпай калган текст автоматтык түрдө кийинки жолчого өткөрүлөт.

Alignment

Талаанын ичинде тексттин түздөлүшүн аныктайт.

Font

Тектти чагылдыруучу шрифтти аныктайт.

Color

Текст чыгарыла турган областтын фонунун түсүн аныктайт.

Visible

Текстти көрүнбөөчү (False) же көрүнө (True) турган кылат.

2). Button компонентасы. Button компонентасы A символу менен белгиленген. Ал текстти форманын бетине чыгаруу үчүн колдонулат. Анын касиеттери тексттин көрүнүшүн жана жайгашышын аныктайт (1-таблица).

BitBtn (графиктик баскыч)

BitBtn компоненти Additional барагында жайгашкан. Анын негизги касиеттери Button компонентинин касиеттерине окшош. Бирок, андан айырмаланып, бул баскычтын бетине текст менен кошо сүрөттү да жайгаштырса болот. Ал үчүн Glyph касиетин пайдалануу керек. Сүрөттү коюу үчүн объекттер инспекторундагы Glyph касиетинин үч чекиттүү баскычын басабыз. Натыйжада экранга Picture Editor диалогдук терезеси чыгарылат. Сүрөттү жүктөө үчүн Load баскычын басабыз жана файлды ачуу диалогдук терезесин пайдаланып керектүү файлды тандоо менен сүрөттү баскычтын бетине чыгарабыз. Жүктөлүүчү сүрөттүн файлынын кеңейтилиши .bmp түрүндө болгону жакшы болот. Керек болгон учурда сүрөттүн өлчөмүн өзгөртүп койсо болот.

2-глава. Delphi программалоо тили

§ 2.1. Берилгендердин тиби. Өзгөрмөлөр жана турактуулар.

Delphi программалоо чөйрөсүндө Delphi программалоо тили колдонулат, анын негизин обьектке багытталган Object Pascal тили түзөт.

Программа деп маселени чечүү үчүн түзүлгөн инструкциялардын (көрсөтмөлөрдүн) удаалаштыгын айтабыз.

Инструкциялар бири биринен үтүрлүү чекит менен ажыратылат. Инструкциялар идентификаторлордон турат.

Идентификаторлор төмөнкүлөрдү билдирет:

  • тилдин инструкциясы (if, while, for ж.б.);

  • өзгөрмөлөр;

  • турактуулар (бүтүн, чыныгы сан же жолчо);

  • арифметикалык (+, -, *, /) операцияларды;

  • логикалык (and, or, not) операцияларды;

  • подпрограммаларды (процедура же функция);

  • подпрограммалардын башталышын белгилөө;

  • блоктун башталышын (begin) жана аягын (end).

Программада берилгендердин төмөнкүдөй типтери колдонулат:

  • бүтүн сандар;

  • чыныгы сандар;

  • символдор;

  • жолчолор (символдор жолчосу);

  • логикалык чоңдуктар.

2.1.1. Берилгендердин тиби

Delphi тилинде берилгендердин 5 түрдүү типтери бар:

  • бүтүн сандар, бөлчөк сандар, символдор, символдордун жолчосу, логикалык чоңдуктар.

Бүтүн сандар тиби. Delphi тилинде бүтүн сандар тиби 7 типке бөлүнөт: ShortInt, SmallInt, LongInt, Int64, Byte, Longword.


Тип

Диапазон

Формат

ShortInt

-128 – 127

8 бит

SmallInt

-32 768 - 32 767

16 бит

LongInt

-2 147 483 648 - 2 147 483 647

32 бит

Int64

-263- 263 – 1

64 бит

Byte

0 – 255

8 бит

Word

0 - 65 535

16 бит

Longword

0 - 4 294 967 295

32 бит


Мындан тышкары универсалды бүтүн тип болгон Integer тиби дЛДБЮа колдонулат жана ал Longint тибине эквиваленттүү.

Чыныгы сандар тиби. Delphi тилинде чыныгы сандар тиби 6 типке бөлүнөт: Real48, Single, Double, Extended, Comp, Currency.


Тип

Диапазон

Формат

Real48

2.9·10-39 - 1.7·1038

6 байт

Single

1.5·10-45 - 3.4·1038

4 байт

Double

5.0·10-324 - 1.7·10308

8 байт

Extended

3.6·10-4951 - 1.1 104932

10 байт

Comp

263+1 - 263-1

8 байт

Currency

-922 337 203 685 477.5808 –

922 337 203 685 477.5807

8 байт


Мындан тышкары униве рсалдык бүтүн тип болгон Real тиби да колдонулат жана ал Double тибине эквиваленттүү.

Символдук тип. Символдук тип 2ге бөлүнөт: AnsiChar жана WideChar.

  • AnsiChar тиби — бул ANSI кодировкасындагы символдор, аларга 0 дөн 255 диапазонундагы сандар туура келет;

  • WideChar тиби — бул Unicode кодировкасындагы символдор, аларга 0 дөн 65 535 диапазонундагы сандар туура келет;

Мындан тышкары универсалдык cимволдук тип болгон Char тиби да колдонулат жана ал AnsiChar тибине эквиваленттүү.

Жолчолук тип. Жолчолук ти п 3кө бөлүнөт: ShortString, LongString, WideString.

  • ShortString тиби компьютердин эсинде статикалык түрдө жайгаша турган жана узундугу 0 дон 255 символго чейин болгон жолчо болуп саналат;

  • LongString тиби компьютердин эсинде динамикалык түрдө жайгаша турган жана узундугу бош эстин көлөмү менен гана чектелген жолчо болуп саналат;

  • WideString тиби компьютердин эсинде динамикалык түрдө жайгаша турган жана узундугу бош эстин көлөмү менен гана чектелген жолчо болуп саналат. WideString тибиндеги ар бир символ Unicode-символ болуп саналат.

Мындан тышкары жолчолук тип үчүн String тиби да колдонулат жана ал ShortString тибине эквиваленттүү.

Логикалык тип. Логикалык тип Boolean тибине таандык болот. Ал True (истина, чын Чын) же False (ложь, жалган) болгон эки маанинин бирин гана кабыл ала алат.

2.1.2. Өзгөрмөлөр

Өзгөрмө деп берилгендер сакталган эстин бөлүгүн (областын) айтабыз. Программа өзгөрмөгө кайрыла алышы үчүн өзгөрмөнүн аты болушу керек. Өзгөрмөнүн аты үчүн латын алфавитининЖД тамгалары, араб цифралары жана атайын символдор колдонулат. Өзгөрмөнүн атындагы 1-символ сөзсүз тамга болуш керек. Өзгөрмөнүн атында пробелдер (боштуктар) болбош керек. Delphi тилиндеги компилятор чоң же кичине тамганы ажыратпайт. Ошондуктан Summa, summa, SUMMA сөздөрү бир эле өзгөрмөнү аныктайт.

Delphi тилинде колдонулуучу ар бир өзгөрмө алдын ала жарыяланган болушу керек. Өзгөрмөлөрдү жарыялоо төмөнкүдөй форматта болот:

Аты : тиби;



мында Аты - өзгөрмөнүн аты, өзгөрмөнүн аты.

Мисалы: var: i: Integer; a,b : Real;


ас

2.1.3. Турактуулар (константалар)

Delphi тилинде турактуулар эки түрдүү болот: кадимки жана ат коюлган (именованнщ9яый).

1). Кадимки турактуу деп бүтүн же бөлчөк санды, өзүнчө алынган символду же символдор жолчосун, логикалык маанини түшүнөбүз.

2). Логикалык турактуулар. Логикалык айтуулар (туюнтмалар) “Чын” же “Жалган” болушу мүмкүн. “Чын” маанисине True, ал эми “Жалган” маанисине False турактуусу (константасы) туура келет.


Программаны даярдоодо типтерди өзгөртүү функциялары колдонулушу мүмкүн. Алар төмөнкүлөр: StrToInt, IntToStr, StrToFloat, FloatToStr.

Мисалы, StrToInt(Edit1.Text) функциясы Edit1 терезесиндеги символду бүтүн санга айландырып берет. Ал эми IntToStr(n) функциясы n санын символго айландырып берет.

О шондой эле StrToFloat(Edit1.Text) функциясы Edit1 терезесиндеги символду чыныгы санга айландырып берет, ал эми FloatToStr(α) функциясы α чыныгылщ санын символго айландырып берет.

2-мисал (Эки сандын суммасы). Эки санды киргизүүнү жана алардын суммасын табууну талап кылган программа түзгүлө.

Delphi нин мүмкүнчүлүгүн жана визуалдык проектирлөө техноллоогиясын демонстрациялоо үчүн эки сандын суммасын аныктоочу колдонмону даярдайбыз.

Жаңы программаны түзүү үчүн Delphi ни жүктөйбүз. Эгерде компьютерде башка проект жүктөлгөн болсо File (Файл) менюсунан New | Application (Создать | Приложение) командасын тандайбыз.

Жогорудагыдай эле жаңы проектти даярдоо алгачкы форманы (диалогдук терезени) түзүүдөн башталат. Эң оболу Form1 формасынын элементтеринин (бел-гилердин, киргизүү талааларынын, командалык баскычтардын) касиет-теринин маанисин өзгөртүүдөн башталат.

Формага Standard барагынын Label1, Label2, Label3, Label4, Label5, Edit1, Edit2 жана Button1, Button2, Button3 компоненттерин жайгаштырабыз.

Форманын касиеттерин өзгөртүү үчүн Object Inspector терезесин колдонобуз. Object Inspector терезесинин жогору жагында объекттин аты жана касиеттеринин маанилери көрсөтүлгөн. Анын эки барагы бар: Properties (Свойства) жана Events (События). Properties барагынын сол жагында объекттин касиеттери, ал эми оң жагында алардын маанилери көрсөтүлгөн. Эгерде Events барагына өтсөк, анда деле сол жакта объекттердин касиеттери, ал эми оң жагында алардын маанилери көрсөтүлгөн. Компоненттердин касиеттерин төмөнкү таблицадагыдай өзгөртүп чыгабыз:


Обьекттин аталышы

Обьекттин касиетинин

Обьекттин касиетинин мааниси

Label1

Caption

a жана b сандарын киргизгиле

Label2

Caption

a=

Label3

Caption

b=

Label4

Caption

c=

Button1вв

Caption

Эсептегиле

Button2

Caption

Тазалоо

Button3

Caption

Аяктоо

Edit1

Caption

Edit1 жазуусун өчүрөбүз

Edit2

Caption

Edit2 жазуусун өчүрөбүз


Натыйжада биздин формабыз төмөнкүдөй көрүнүшкө келет (1.10-сүрөт).

Edit1 жана Edit2 компоненталары киргизүү-редактирлөө компоненталары болуп эсептелет. Унчукпаганда бул талаалардын терезесинде Edit1 жана Edit2 деген сөздөр жазылган болот. Аларды өчүрүү үчүн Properties барагынан Text касиетин тандап, анда жазылган сөздү өчүрөбүз.

“Аяктоо” баскычына эки чыкылдатып коддор терезесине киребиз да анда жазылган программанын даяр шаблонуна төмөнкү сөздү жазабыз:

close;

Андан кийин “Эсептегиле” баскычына эки чыкылдатып коддор терезесине киребиз да төмөнкү программаны жазабыз:


procedure TForm1.Button1Click(Sender: TObject);

b egin

a:=StrToInt(Edit1.Text);

b:=StrToInt(Edit2.Text);

c:=a+b;

Label5.Caption:=FloatToStr(c);

end;н6


“Тазалоо” баскычына эки чыкылдатыгоп төмөнкү кодду жазабыз:

procedure TForm1.Button3Click(Sender: TObject);

begin

Edit1.Text:='';

Edit2.Text:='';

Label5.Caption:='';

end;

Программанын иштешин текшерүү үчүн F9 баскычын басабыз жана программанын иштешин текшерип көрөбүз, б.а. “Эсептегиле”, “Тазалоо” жана “Аяктоо” деген баскычтардын туура иштеп жаткандыгын текшеребиз.

Акырында программаны сактайбыз. Ал үчүн

File / Save As …

командасын беребиз. Ачылган Save терезесиндеги Имя файла деген талаага Un_summa деген ат берип, “Сохранить” баскычын басабыз. Натыйжада биздин форма сакталат.

Эгерде

File / Project Save As …

командасын берүү менен биздин Проектти да сактап алабыз. Бул учурда биздин проектибГШОГиз компиляцияланып exe файл да даяр болот.

Биринчи проект

Delphi нин мүмкүнчүлүгүн жана визуалдык проектирлөө технологиясын демонстрациялоо үчүн эки сандын суммасын аныктоочу колдонмону даярдайбыз.

Жаңы программаны түзүү үчүн Delphi ни жүктөйбүз. Эгерде компьютерде башка проект жүктөлгөн болсо File (Файл) менюсунан New | Application (Создать | Приложение) командасын тандайбыз.


Жаңы проектти даярдоо алгачкы форЛманы түзүүдөн башталат. Ал программаны даярдоо этабында диалогдук терезе деп аталат.

Алгачкы форма Form1 формасынын элементтеринин (киргизүү жана чыгаруу талааларынын, командалык баскычтардын) касиеттеринин маанисин өзгөртүүдөн башталат.

Форманын 1-таблицадагы касиеттери анын тышкы түрүн: өлчөмүн, экрандагы абалын, бөрктүн текстин, рамканын түрүн аныктайт.

Форманын касиеттерин өзгөртүү үчүн Object Inspector терезеси колдонулат. Object Inspector терезесинин жогору жагында объекта аты жана касиеттеринин маанилери көрсөтүлгөн. Properties (Свойства) барагынын (вкладки) сол жагында объекта касиеттери ал эми оң жагында алардын маанилери көрсөтүлгөн.


1-таблица. Форманын касиети.


Касиети

Баяндамасы

Name

Форманын аты. ПрограммШада форманын аты форманы башкаруу жана анын компоненттерине жетүү үчүн колдонулат

Caption

Бөрктүн тексти

Width

Форманын туурасы

Height

Форманын бийиктиги

Top

Форманын жогорку чекарасынан экрандын жогорку чекарасынан чейинки аралык

Left

Форманын сол чекарасынан экрандын сол чекарасынан чейинки аралык


Delphi’нин ар бир компонентине компоненттин атынан жана анын катар номеринен турган ат ыйгарылат. Мисалы, формага Edit элементинин эки компонентин жайгаштырсак, анда алардын аттары тиешелеш түрдө Edit1 жана Edit2 болот. Программист Name касиетин өзгөртүү менен компонентке жаңы ат бериши мүмкүн.













Standard барагынын компоненттерин программа түзүүдө колдонуу.

2.1. ListBox компонентасы жана анын жалпы мүнөздөмөсү

ListBox компонентти Standard барагында жайгашкан жана ал тексттик информацияны сактоо жана кайра иштетүү үчүн колдонулат (2.1-сүрөт).



ListBox компонентиндеги ар бир жолчого String тибиндеги тексттик информацияны сактоого болот. ListBox компонентине – жолчолордун массивин жайгаштырууга болот. Бул компоненттин касиеттери 2.1-таблица көрсөтүлгөн.


2.1-таблица. ListBox1 компонентасынын касиеттери


Касиети

Колдонулушу

1

Name

Компоненттин аты. Компонентти жана анын касиеттерин тандоо үчүн колдонулат.

2

Items

Тизменин элементтери.

3

ItemIndex

Тизменин тандалган элементинин номери. Эгерде эч кандай элемент тандалбаган болсо, анда ItemIndex=-1 болот.

4

Font

Тизменин элементтерин чагылдыруучу шрифтти аныктайт.


ListBox компонентинин конструкциялоо этабындагы көрүнүшү 2.1-сүрөттө көрсөтүлгөн.

Жолчолорго 2.1-таблицада көрсөтүлгөндөй компоненттин Items касиети аркылуу жетүүгө болот.

Мисалы, ListBox1 компонентасын формага жайгаштырып, анын талаасына тизмени киргизүү үчүн Object Inspector терезесинин Items касиетин тандап, андагы үч чекиттүү баскычка чычкандын көрсөткүчүн чыкылдатканда String List Editor терезеси ачылат. Ага тизменин ар бир элементин өзүнчө жолчого жайгаштырабыз.Ал үчүн ар бир элементти киргизгенден кийин Enter баскычын басабыз. Акыркы элемент киргизилгенден кийин Enter баскычын баспастан туруп ОК баскычын басабыз. Натыйжада тизменин элементтери ListBox1 компонентасынын терезесине жазылып калат (2.2-сүрөт).

К омпоненттин биринчи жолчосунун номери 0 гө барабар болгондуктан i номерлүү жолчого

ListBox1.Items[i-1];

командасы менен кайрылууга болот..

I temIndex касиети тизмедеги тандалган жолчонун номерин аныктайт. Мисалы тизменин үчүнчү элементи тандалган болсо, анда ItemIndex=2, ал эми эч кандай элемент тандалбаган болсо, анда ItemIndex=-1 болот.

2.1-мисал. Формадагы терезеде көрсөтүлгөн түстөрдү тандаганда форманын түсү өзгөрө турган программа түзгүлө.

Маселени чыгаруу үчүн форманын моделин 2.2-сүрөттө көрсөтүлгөндөй кылып түзөбүз. Б.а. формага Label1, Label2, ListBox1, BitBtn1 компоненталарын жайгаштырабыз.

L abel1 компонентасынын Caption касиетине “Форманын тусун тандагыла”, ал эми Label2 компонентасынын Caption касиетине “Тандалган тустун константасы” деген сөздөрдү жазабыз.

ListBox1 компонентасынын Object Inspector терезесиндеги Items касиетин тандап, андагы үч чекиттүү баскычка чычкандын сол көрсөткүчүн чыкылдатып String List Editor терезесин ачабыз. Пайда болгон терезеге “Кызыл”, “Сары”, “Жашыл”, “Кара”, “Боз” деген сөздөрдү жазып Enter баскычын басабыз. Натыйжада ListBox1 компонентасынын терезесине жогорудагы түстөрдүн тизмеси жазылып калат. BitBtn1 компонентасынын Kind касиетиндеги bkOK баскычын тандайбыз жана Caption касиетине “Аяктоо” деген сөздү жазабыз (2.3-сүрөт).

Андан кийин формадагы ListBox1 компонентасынын терезесине эки чыкылдатып коддордун терезесиндеги төмөнкү процедуранын форматын алабыз:

procedure TForm1.ListBox1Click(Sender: TObject);

begin


end;

BitBtn компоненти (сүрөттүү баскыч)

BitBtn компоненти (сүрөттүү баскыч) Additional барагында жайгашкан. Ал стандарттык Button классынын мураскери болот. BitBtn компоненти Button компонентинен айырмаланып, ага текст менен кошо растрдык сүрөттү да койсо болот.

Растрдык сүрөттү коюу үчүн Glyph касиетин пайдаланабыз. Анын баштапкы мааниси None болот. Бул учурда баскычта сүрөт болбойт. Баскыч бир убакта өз алдынча болгон үч сүрөттү коюуга болот. Баскычка коюлуучу сүрөттүн кеңейтилиши bmp форматында болушу керек.

Сүрөттөрдү тандап алу үчүн Glyph касиетинин жанындагы үч чекиттүү баскычты басабыз. Экранга Picture Editor терезеси чыгарылат. Андан кийин Load баскычын басуу менен кеңейтилиши .bmp болгон файлды тандап, OK баскычын басуу менен баскычка сүрөт коёбуз.

Баскычка коюлуучу сүрөттүн өлчөмү анча чоң эмес болуш керек жана аны Delphi’нин курамына кирген Image Editor редактору же Adobe Photoshop программасы менен даярдап алса болот. Кеңейтилиши *.bmp болгон сүрөттү компью-терден издөө системасы аркылуу таап алса да болот.

Kind касиетин өзгөртүү менен Delphi’де алдын ала белгилүү болгон 10 түрдүү сүрөтү бар баскычтарды колдонууга болот.

Эгерде сүрөттүн форматы башка болсо, аны bmp форматка, мисалы, Photoshop программасы менен өзгөртүп алса болот.




3-глава. Delphi тилиндеги башкаруучу конструкциялар

§ 3.1. Бутактуу алгоритмдерди программалоо

Бутактануучу процесс деп берилген шарттын аткарылышына карап программанын тигил же бул бутагы аткарыла турган процесстерди айтабыз.

Мындай процесстерди программалоо учун шарттуу «if – then» жана тандоо «case – of» конструкциялары колдонулат.

3.2.1. Шарттуу конструкция

Бутактануучу процесстер белгилүү бир шарттардын аткарылышына, б.а. ал шарттардын “чын” же “жалган” экендигине байланыштуу аткарылат. Бутактануучу процесстерди программалоо үчүн төмөнкү башкаруучу конструкциялар колдонулат.

1) Кыскартылган шарттуу конструкция

if шарт then

begin

инструкция

end;


Бул конструкция төмөнкүдөй иштейт: эгерде if кызматчы сөзүнөн кийинки «чын» болсо, анда then кызматчы сөзүнөн кийинки «инструкция» аткарылат, ал эми «жалган» болгон учурда эч нерсе аткарылбайт.

2) Шарттуу конструкциянын стандарттык формасы

if шарт then

begin

инструкция end

else

begin

2-инструкция

end;

end;


Бул учурда конструкция төмөнкүдөй иштейт: эгерде if кызматчы сөзүнөн кийинки «чын» болсо, анда then кызматчы сөзүнөн кийинки «1-инструкция» аткарылат, эгерде ал шарт «жалган» болсо, анда else кызматчы сөзүнөн кийинки «2-инструкция» аткарылат.

3) Шарттуу конструкциянын толук формасы

Ж


if шарт then

begin 1-инструкция end

else if 2-шарт then

begin end

else if then

begin end

……………………………………

else if then

begin end

else

begin -инструкция end;

end;

алпы учурда конструкция төмөнкүдөй иштейт: эгерде if кызматчы сөзүнөн кийинки «чын» болсо, анда then кызматчы сөзүнөн кийинки «1-инструкция» аткарылат, эгерде «жалган» болсо, анда else if кызматчы сөздөрүнөн кийинки текшерилет. Эгерде «чын» болсо, анда then кызматчы сөзүнөн кийинки «2-инструкция» аткарылат. Ушул процесс уланып акырында текшерилет. Эгерде «чын» болсо, анда then кызматчы сөзүнөн кийинки «n-инструкция» аткарылат, тескери учурда else кызматчы сөзүнөн кийинки аткарылат.



3.2.2. Тандоо конструкциясы

Эгерде шарттардын саны эки же андан көп болсо, анда «case–of» тандоо конструкциясы колдонулат. Анын форматы төмөнкүдөй:

case «Селектор» of

К1: begin {1-инструкция} end;

К2: begin {2-инструкция} end;

………………………………

КN: begin {N-инструкция} end;

else begin {N+1-инструкция} end;

end;

Мында «Селектор» - мааниси саналуучу тип боло турган туюнтма, KN - саналуучу типтин константасы. Тандоо конструкциясынын иштөө принциби төмөнкүдөй. Эң оболу Селектордун мааниси аныкталат, андан кийин ал маани саналуучу типтин константалары менен салыштырылат. Эгерде Селектордун мааниси KI мааниси менен дал келсе, анда бул мааниге туура келген I-инструкция аткарылат. Эгерде Селектордун мааниси KI маанилеринин эч бири менен дал келбесе, анда N+1 инструкция аткарылат да, тандоо конструкциясы өз ишин аяктайт.

Ctrl+J командасы менен пайда болгон динамикалык терезеден case statement командасын тандасак «case-of» инструкциясынын төмөнкү калыбын алабыз:

c ase of

: ;

: ;

end;





“case-of” конструкциясынын негизги параметри катары ListBox1.ItemIndex өзгөрмөсүн алабыз жана 2.1-листингде көрсөтүлгөн программалык коддорду жазабыз.




2.1-листинг. Форманын түсүн өзгөртүү программасы.

procedure TForm1.ListBox1Click(Sender: TObject);

begin

case ListBox1.ItemIndex of

0 :

begin

Form1.Color:=clRed;

Label1.Caption:='Сиз кызыл түстү тандадыңыз';

Label2.Caption:='Кызыл түстүн константасы '+' clRed';

end;

1 :

begin

Form1.Color:=clYellow;

Label1.Caption:='Сиз сары түстү тандадыңыз';

Label2.Caption:='Сары түстүн константасы '+' clYellow';

end;

2 :

begin

Form1.Color:=clAqua;

Label1.Caption:='Сиз жашыл түстү тандадыныз';

Label2.Caption:='Жашыл түстүн константасы'+' clAqua';

end;

3 :

begin

Form1.Color:=clBlack;

Label1.Caption:='Сиз кара түстү тандадыныз';

Label2.Caption:='Кара түстүн константасы'+' clBlack';

end;

4 :

begin

Form1.Color:=clWhite;

Label1.Caption:='Сиз ак түстү тандадыныз';

Label2.Caption:='Ак түстүн константасы'+' clWhite';

end;

end;

end;


procedure TForm1.BitBtn1Click(Sender: TObject);

begin

close;

end;

end.

ListBox компонентине жолчолорду кошуу, өчүрүү жана сорттоо методдору

ListBox компоненти дисктен маалыматтарды жүктөй алат жана информацияларды файлга сактай алат. ListBox компонентине жолчолорду кошуу алгоритми төмөнкү кадамдардан турат:

  • Файлдан окуу;

  • Тизменин акырына жолчону кошуу;

  • Номери i болгон жолчонун алдына жолчо кошуу;

  • Түзүү (конструкциялоо) этабында жолчолорду кошуу.


Кадамдар

Аткарылуучу аракеттер

Файлдан окуу жана жазуу

// Файлдан окуу процедурасы ListBox1.Items.LoadFromFile('Файлдын аты');

// Файлга жазуу процедурасы

ListBox1.Items.SaveToFile('Файлдын аты');

Тизменин акырына жолчолорду кошуу

// Тизменин акырына жолчолорду кошуу.

ListBox1.Items.Add('Жаңы жолчо');

{Компоненттеги жолчолор саны ListBox1.Items.Count процедурасы менен аныкталгандыктан акыркы жолчонун номери ListBox1.Items.Count-1 болот, анткени номерлөө 0 дөн башталат}

Номери i болгон жолчонун алдына жолчо кошуу

// Номери i болгон жолчонун алдына жолчо кошуу

ListBox1.Items.Insert(i, 'Жаңы жолчо');

// Бул учурда жаңы жолчонун номери i болот.

Түзүү (конструкциялоо) этабында жолчолорду кошуу

Объекттер инспекторуна кирип Items касиетин тандап, үч чекиттүү баскычка чыкылдатуу керек. Натыйжада String List Editor редакторунун терезеси ачылат. Керектүү маалыматтарди киргизгенден кийин OK баскычын бассак, формадагы ListBox компонентасынын терезесине тиешелүү маалыматтар жазылып калат.

Бардык тизмени тазалоо

ListBox1.Items.Clear;

Тизмеден элементти өчүрүү

// Тизмедеги экинчи элемент өчүрүлөт

ListBox1.Items.Delete(1);

Тизмени сорттоо

ListBox1.Sorted := True;




Standard барагынын компоненттерин программа түзүүдө колдонуу.

3.1. ComboBox компоненти жана анын жалпы мүнөздөмөсү

C omboBox компонентти Standard барагында жайгашкан жана ал тексттик информацияны сактоо жана кайра иштетүү үчүн колдонулат (3.1-сүрөт).



3.1-мисал. Жаны терминдердин создугун түзгүлө.



unit Unit2;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Buttons, StdCtrls;

type

TForm1 = class(TForm)

ComboBox1: TComboBox;

Button1: TButton;

Button2: TButton;

Button3: TButton;

Button4: TButton;

BitBtn1: TBitBtn;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure Button4Click(Sender: TObject);

procedure ComboBox1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

num:integer;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject); // Кошуу

begin

ComboBox1.Items.Add(ComboBox1.Text);

if ComboBox1.ItemIndex=-1 then ComboBox1.Text:='';

end;

procedure TForm1.Button2Click(Sender: TObject); // Очуруу

begin

if MessageDlg('Сиз жазууну чын эле очурууну каалайсызбы?',mtWarning,

[mbYes,mbNo],0)=mrYes then ComboBox1.Items.Delete(ComboBox1.ItemIndex);

end;

procedure TForm1.Button3Click(Sender: TObject); // Редактирлоо

begin

ComboBox1.Items.Delete(num);

ComboBox1.Items.Add(ComboBox1.Text);

if ComboBox1.ItemIndex=-1 then ComboBox1.Text:='';

ComboBox1.Items.SaveToFile('Termin.txt');

end;

procedure TForm1.Button4Click(Sender: TObject); // Сактоо

begin

ComboBox1.Items.SaveToFile('Termin.txt');

end;

procedure TForm1.FormCreate(Sender: TObject); // Файлды окуу

begin

ComboBox1.Items.LoadFromFile('Termin.txt');

end;

procedure TForm1.ComboBox1Click(Sender: TObject); // Тандалган саптын номери

begin

num:= ComboBox1.ItemIndex;

end;

end.

Берилгендерди кийирүүчү жана жыйынтыктарды чыгаруучу диалогдук терезелер

Программа иштеп жатканда берилгендерди кийирүүгө жана жыйынтыктарды чыгарууга туура келет. Мындай маселелерди чечүү үчүн Delphi’де кийирүү жана билдирүү терезелери колдонулат.

1. Кийирүү терезеси

Берилгендерди кийирүү үчүн стандарттык диалогдук терезе – кийирүү терезеси колдонулат. Кийирүү терезеси InputBox функциясы менен чакырылат. InputBox функциясынын мааниси колдонуучу тарабынан кийирүү талаасына жазылган жолчого барабар болуп эсептелет.

Жалпы учурда InputBox функциясын чакыруу инструкциясы төмөнкүдөй болот:



var s:string;

begin

s:=InputBox('Бөрк','Түшүндүрмө','Маани');

end;







мында

  • s – мааниси кийирүү талаасына жазылган текстке барабар;

  • Бөрк – кийирүү терезесинин бөркүндөгү текст;

  • Түшүндүрмө – билдирүүнү түшүндүрүүчү текст;

  • Мааниэкранда пайда болгон терезенин кийирүү талаасындагы текст.

Э герде колдонуучу программа иштеп жатканда кийирүү талаасына тектти кийирсе жана ОК баскычын басса, анда InputBox функциясынын мааниси кийирилген текстке барабар болот.

Эгерде колдонуучу кийирүү талаасына эч кандай маалымат кийирбестен эле Cancel баскычын басса, анда InputBox функция-сынын мааниси үчүнчү параметрде көрсөтүлгөн текстке барабар болот (1-сүрөт).




2-мисал. InputBox диалогдук терезесинин кийирүү талаасынан белгилер талаасына (Label), редактирлөө талаасына (Edit) жана көп жолчолуу талаага (Memo) маалыматтарды кийиргиле (2-сүрөт).

Программанын листинги

procedure TForm1.Button1Click(Sender: TObject);

var s:string;

begin

s:=InputBox('InputBox функциясы','Кийирүү терезеси',

'Берилгендерди кийиргиле');

Label2.Caption:=s;

Edit1.Text:=s;

Memo1.Clear;

Memo1.Lines.Add(s);

end;


2. Билдирүү терезесине чыгаруу

Программа аткарылып жатканда жыйынтыктарды билдирүү терезесине чыгарууга болот. Берилгендерди чыгаруу үчүн стандарттык диалогдук терезелерди – билдирүү терезелери колдонулат.

Билдирүү терезелери колдонуучунун көңүлүн буруу зарыл болгондо, мисалы, экранга каталыктарды чыгаруу же кайтарууга болбой турган операцияларды аткаруу сыяктуу билдирүүлөрдү чыгаруу үчүн колдонулат.

Билдирүү терезелери төмөнкү каражаттар менен чыгарылат:

  • ShowMessage процедурасы;

  • MessageDlg функциясы.

2.1. ShowMessage процедурасы. ShowMessage процедурасы ОК деген баскычы бар жана берилген текст жазылган жөнөкөй диалогдук терезени экранга чыгарат. Процедуранын структурасы төмөнкүдөй:


ShowMessage('Билдирүү');






мында 'Билдирүү' – ShowMessage терезесине чыгарылуучу текст.

Көп жолчолуу билдирүүнү чыгаруу үчүн chr(13) функциясын колдонууга болот. Бул функция Enter баскычын имитациялайт.

2.2. MessageDlg функциясы. MessageDlg функциясы универсалдык билдирүү терезесин аныктайт. MessageDlg функциясы экранга билдирүүнү, белгилерди жана тандалган баскычтарды чыгарат.

Ф


MessageDlg('Билдирүү',DialogType,

Buttons, HelpContext)

мында:

1). 'Билдирүү' - билдирүү тексти, ал жалгыз кавычканын ичине жазылат;

2). DialogType - билдирүүнүн тиби (информациялык, эскертүүчү, критикалык каталык ж.б.). Ар бир типке анык бир значок туура келет. Билдирүүнүн тиби аталышы бар константалар менен берилет (1-таблица);

3). Buttons - билдирүү терезесине чыгарылуучу баскычтардын тизмесин аныктайт. Тизме үтүрлөр менен ажыратылган аталышы бар константалардан турушу мүмкүн (2-таблица). Жалпы тизме квадраттык кашаанын ичине жазылышы керек.

4). HelpContext - колдонуучу баскычын басканда экранга справкалык системанын бөлүмүн чыгаруучу параметрди аныктайт. Эгерде мындай справклык система каралбаган болсо, анда бул параметрдин мааниси 0 болушу керек.

ункциянын структурасы төмөнкүдөй:


MessageDlg функциясынын 4 аргументи бар, ал эми анын мааниси integer тибинде болот.


MessageDlg функциясын программада колдонуу үчүн төмөнкү форматты пайдаланса болот:







var m:integer;

begin

m:=MessageDlg('Билдирүү',DialogType,

Buttons, HelpContext);

end;










1-таблица. MessageDlg функциясынын константалары


Константа

Билдирүү тиби

Значок

mtWarning

Илеп белгиси символу (Көңүл бургула)

mtError

Кызыл "х" символу (Каталык бар)

mtInformation

"i" символу (Информация үчүн)

mtConfirmation

Суроо белгиси (Тактоо зарыл)

mtCustom

Билдирүү гана чыгарылат

Значок жок


2-таблица. MessageDlg функциясынын баскычтарынын константалары


Баскыч

Константа

1

mbYes

"Yes" баскычын чыгарат

2

mbNo

"No" баскычын чыгарат

3

mbOK

"OK" баскычын чыгарат

4

mbCancel

"Cancel" баскычын чыгарат

5

mbHelp

"Help" баскычын чыгарат

6

mbAbort

"Abort" баскычын чыгарат

7

mbRetry

"Retry" баскычын чыгарат

8

mblgnore

"Ignore" баскычын чыгарат

9

mbAll

"All" баскычын чыгарат


Мисалы, билдирүү терезесине ОК жана Cancel баскычтарын чыгаруу үчүн Buttons тизмеси төмөнкүдөй болушу керек: [mbOK, mbCancel].

Жогоруда келтирилген константалардан башка төмөнкү константаларды да колдонууга болот:

mbYesNoCancel = [mbYes, mbNO, mbCancel]

mbYesAllNoAllCancel = [mbYes, mbYesToAll, mbNo, mbNoToAll, mbCancel]

mbOKCancel = [mbOK, mbCancel]

mbAbortRetryCancel = [mbAbort, mbRetry, mbCancel]

mbAbortIgnore = [mbAbort, mbIgnore]

Бул константалар диалогдук терезелерде командалык баскычтардын комбинациясы катарында көп колдонулат.

MessageDig функциясы кайтарып берген маани колдонуучу тарабынан кайсыл константа басылганын аныктап берет (7-таблица).

7-таблица. MessageDlg функциясынын маанилери


MessageDlg функциясынын маанилери

Басылган баскычтын аталышы

mrOk

1

Ok

mrCancel

2

Cancel

mrAbort

3

Abort

mrRetry

4

Retry

mrIgnore

5

Ignore

mrYes

6

Yes

mrNo

7

No

mrAll

8

All


1-мисал. Ишти аяктоодо колдонулуучу диалогдордун программасын түзгүлө


unit Un_summa_vivod;

var

Form1: TForm1;

a,b,c:real;

ms:integer;

implementation

{$R *.dfm}

procedure TForm1.Button2Click(Sender: TObject);

begin

ms:=MessageDlg('Вы хотите завершить работу с программой?',

mtWarning, mbOKCancel, 0);

if ms=mrOK then

begin

ShowMessage('Завершаем работу!');

close;

end;

if ms=mrCancel then

begin

ShowMessage('Возращаемся к работе!');

end;

end;


procedure TForm1.Button1Click(Sender: TObject);

begin

a:=StrToInt(Edit1.Text);

b:=StrToInt(Edit2.Text);

c:=a+b;

Label5.Caption:=FloatToStr(c);

end;


procedure TForm1.Button3Click(Sender: TObject);

begin

Edit1.Text:='';

Edit2.Text:='';

Label5.Caption:='';

end;




















§ 7. Циклдер, алардын түрлөрү жана колдонулушу

Эгерде маселени чечүү алгоритминде инструкциялардын тобу бир нече жолу кайталанса, анда мындай алгоритмдерди циклдик деп атайбыз.

Кайталоо саны алдын ала белгилүү болгон циклдерди арифметикалык циклдер деп айтабыз.

Эгерде циклди аяктоо шарты гана белгилүү болуп, кайталоо саны алдын ала белгилүү болбосо, анда мындай циклдерди итерациялык циклдер деп айтабыз.

Delphi тилинде циклдик алгоритмдер боюнча программа түзүүдө төмөнкү инструкциялар колдонулат:

  • For;

  • While;

  • Repeat.


Циклдердин классификациясы


For инструкциясы

For инструкциясы кайталануучу аракеттердин саны алдын ала белгилүү болгон учурда колдонулат.

Жалпы учурда For инструкциясынын формасы төмөнкүдөй болот (2-схема):











мында

  • i — өзгөрмө-эсептегич, цикл инструкцияларынын кайталоо санын аныктайт;

  • n1 — циклдин эсептегичинин баштапкы маанисин аныктайт;

  • n 2 — циклдин эсептегичинин акыркы маанисин аныктайт;

For инструкциясын колдонгондо өзгөрмө-эсептегич i жана n1, n2 маанилери бүтүн типте болушу керек.

Циклдин инструкцияларынын кайталануу санын формуласы менен аныктоого болот.

For инструкциясы төмөнкүдөй аткарылат. Эң оболу i өзгөрмө-эсептегичке n1 мааниси ыйгарылат. Эгерде эсептегичтин мааниси n2 ден кичине же ага барабар болсо, анда циклдин кайталануучу инструкциялары аткарылат. Андан кийин эсептегичтин маанисине 1 мааниси кошулат. Эгерде эсептегичтин жаңы мааниси n2 ден кичине же ага барабар болсо, анда циклдин кайталануучу инструкциялары кайрадан аткарылат. Ошентип, циклдин кайталануучу инструкциялары эсеп-тегичтин мааниси n2 ден ашып кеткенге чейин аткарылат.

Эгерде болсо, анда цикл өз ишин аяктайт. Бул учурда башкаруу циклден кийинки турган инструкцияга өткөрүлүп берилет.

For инструкциясынын блок-схемасы 3-схемада келтирилген.

1-мисал. 1 ден N ге чейинки сандардын суммасын тапкыла.

Чыгаруу. Функциянын маанилерин For инструкциясын колдонуу менен төмөнкүдөй аныктайбыз. Программанын аткарылышы 2-сүрөттө көрсөтүлдү.

Эгерде n1n2 болсо, анда to кызматчы сөзүнүн ордуна downto сөзү жазылат да, циклдин телосундагы инструкция аткарылгандан кийин эсептегичтин мааниси кичирейет.







FloatToStrF функциясы

FloatToStrF функциясы жылуучу чекити бар чыныгы санды жолчого форматтоо менен өзгөртөт.

Функцияны колдонуу форматы төмөнкүдөй:

function FloatToStrF ( n, f, k, m );

мында

n

чыныгы сан;

f

формат

ffGeneral - универсалдык;

ffExponent - илимий;

ffFixed – фиксирленген чекити менен;

ffNumbe – разряддардын группалары ажыратылат;

ffCurency – финансылык.

k

тактыкты билдирет, б.а. жалпы керектүү болгон цифралардын саны;

m

ондук чекиттен кийинки цифралардын саны










6-глава. Массивдер 6.1. Массивди жарыялоо

Массив деп атайын атка ээ болгон жана ар бир элементи индекстер менен аныкталган бирдей типтеги өзгөрмөлөрдүн жыйындысын айтабыз.

Мисалы, математикада векторлор массивдин мисалы боло алат.

Массивдер типтерди жарыялоо бөлүмүндө төмөнкүдөй жарыяланат:

type

name : array[n1..n2] of тип;





мында, name – массивдин атын, n1 массивдин элементтеринин диапазонунун төмөнкү, n2 – жогорку чегин, ал эми тип массивдин элементтеринин тибин аныктайт.

Мисалы 100 элементтен турган бүтүн сандардын массиви төмөнкүдөй жарыяланат:


type bytyn : array[1 .. 100] of Integer;


Андан кийин bytyn типке тиешелүү болгон өзгөрмөлөрдү жарыялоого болот:

var A, B: bytyn;


Массивдерди өзгөрмөлөрдү жарыялоо бөлүмүндө аларды айкын түрдө төмөнкүдөй жарыялоого болот:

var

name : array[n1..n2] of тип;






var A, B : array[1..100] of Integer;


Массивдин элементин көрсөтүү үчүн массивдин атын жана квадраттык кашаанын ичине элементтин индексин көрсөтүү керек:

A[5] := 101;

В[30] := 165;


6.2. Массивдердин үстүнөн аткарылган операциялар

Массивдердин үстүнөн төмөнкүдөй операцияларды аткарууга болот:

  • Массивди чыгаруу;

  • Массивди киргизүү;

  • Массивдин максималдык (минималдык) элементин табуу;

  • Массивдин берилген элементин издөө;

  • Массивди сорттоо (иреттөө).

6.2.1. Массивди чыгаруу

Массивди чыгаруу деп анын элементтерин монитордун экранына чыгарууну түшүнөбүз. Бул максатта Label компонентин колдонууга болот.

1-мисал. Аптанын күндөрүн чыгаргыла.



unit Un_day;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Grids, StdCtrls, Buttons;

type

TForm1 = class(TForm)

Label1: TLabel;

Button1: TButton;

BitBtn1: TBitBtn;

Label2: TLabel;

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

i:integer;

st:string;

day : array[1..7] of string[10]=('Дуйшомбу','Шейшемби','Шаршемби','Бейшемби',

'Жума','Ишемби','Жекшемби');

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

begin

for i:=1 to 7 do

st:=st+IntToStr(i)+'. '+day[i]+#13;

Label1.Caption:=st;

end;

end.


6.2.2. Массивди киргизүү

Массивди киргизүү деп программа иштеп жатканда колдонуучудан же файлдан массивдин элементин алууну түшүнөбүз. Бул максатта Additional барагынын StrinGrid компонентин колдонууга болот.

2-мисал. Массивдин элементтеринин арифметикалык орточо маанисин тапкыла.

StrinGrid1 компонентасынын касиеттеринин мааниси

Касиети

Мааниси

ColCount

5

FixedCols

0

RowCount

1

DefaultRowHeight

24

Height

24

DefaultColWidth

64

Width

328

Options.goEditing

True

Options.goAlwaysShowEditing

True

Options.goTabs

True





unit Un_massiv;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Grids, Buttons;

type

TForm1 = class(TForm)

Label1: TLabel;

StringGrid1: TStringGrid;

Button1: TButton;

Label2: TLabel;

BitBtn1: TBitBtn;

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

var a:array[1..5] of integer; // массив

sum_elem: integer; // сумма элементов

sr_arif:real; // среднее арифметическое

i: integer; // индекс

begin

for i:=1 to 5 do

if Length(StringGrid1.Cells[i-1,0])0

then a[i]:=StrToInt(StringGrid1.Cells[i-1,0])

else a[i]:=0;

sum_elem:=0;

for i:=1 to 5 do

sum_elem:=sum_elem+a[i];

sr_arif:=sum_elem/5;

L abel2.Caption:='Сумма элементов '+IntToStr(sum_elem)+#13+

'Среднее арифметическое: '+FloatToStr(sr_arif);

end;

end.

2-мисал. Символдук массивди киргизүү программасын түзгүлө.

Элементтери символдор болгон массивди киргизүү үчүн Memo компоненти ыңгайлуу.




















unit Un_memo;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Buttons, StdCtrls;

type

TForm1 = class(TForm)

Label1: TLabel;

Memo1: TMemo;

Button1: TButton;

BitBtn1: TBitBtn;

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

var

a: array[1..5] of string[30];//массив

n:integer; // киргизилген жолчолордун саны

i:integer; // массивдин элементинин индекси

st:string;

begin

n:=Memo1.Lines.Count;

if n=0 then

begin

ShowMessage('Маалыматтар киргизилбеген');

Exit;

end;


if n5 then

begin

ShowMessage('Жолчолордун саны массивдин олчомунон чон!');

n:=5;

end;

for i:=1 to n do

a[i]:=Form1.Memo1.Lines[i-1];

if n0 then

begin

st:='Киргизилген массив:'+#13;

for i:=1 to n do

st:=st+IntToStr(i)+' '+a[i]+#13;

ShowMessage(st);

end;

end;

end.



6.2.3. Массивдин максималдык (минималдык) элементин табуу.

Массивдин минималдык элементин табуу маселесин бүтүн сандардын массивинин мисалында карайлы.

Массивдин минималдык элементин табуу алгоритми төмөнкүдөй:

1). Массивдин 1-элементин минималдык элемент деп алабыз.

2). Тандалган 1-элемент менен калган элементтердин ар бирин салыштырабыз.

3). Эгерде кийинки элемент 1-элементтен кичине болсо, анда ушул элементти эң кичине элемент деп тандап алабыз жана бул процессти акыркы элементке менен салыштырганга чейин улантабыз.

4). Ошентип эң кичине элемент табылат жана аны экранга чыгарабыз.

1-таблица

Касиети

Мааниси

ColCount

5

FixedCols

0

RowCount

1

DefaultRowHeight

24

Height

24

DefaultColWidth

64

Width

328

Options.goEditing

True

Options.goAlwaysShowEditing

True

Options.goTabs

True

1-мисал. Массивдин эң кичине элементин тапкыла.

Маселени чечүү үчүн StringGrid, Label1, Label2, Buttonl жана BitBtnl компоненталарын формага жайгаштырабыз.

S tringGrid1 компонентасынын касиеттеринин мааниси 1-таблицада көрсөтүлгөндөй кылып тандап алабыз.



Buttonl баскычына төмөнкүдөй программалык код жазабыз:

1-листинг. Минималдык элементти табуу.

procedure TForm1.Button1Click(Sender: TObject);

var

a: array[1..5] of integer; // массив

min: integer; // минималдык элементтин номери

i: integer; // салыштырылуучу элементтин номери

begin

for i:=1 to 5 do

a[i]:=StrToInt(StringGrid1.Cells[i-1,0]);

min:=1; // 1-минималдык элемент

for i:=2 to 5 do

if a[i]

label2.caption:='Минималдык элемент: '

+IntToStr(a[min]) +#13+'Элементтин номери: '+ IntToStr(min);

end;


6.2.4. Массивден элементти издөө


Массивдердин үстүнөн төмөнкүдөй операцияларды аткарууга болот: Көп маселелерди чечүүдө массивде бул же тигил маалыматтын, мисалы, массивде “Асанов” деген студенттин фамилиясынын, бар же жок экендигин текшерүүгө туура келет. Мындай маселелерди массивдеги издөөнү уюштуруу маселеси деп атайбыз.

Бул маселени чечүү үчүн ар түрдүү алгоритмдерди колдонууга болот. Алардын ичинен эң жөнөкөйү “жөнөкөй тандоо” алгоритми деп аталат. Алгоритмдин иштөө принциби төмөнкүдөй:

1). Изделүүчү маалыматты үлгү катары кабыл алабыз.

2). “Үлгү” менен массивдин ар бир элементи дал келгенге чейин салыштырылып чыгат.

Бул “жөнөкөй тандоо” алгоритми массив иреттелбеген учурда колдонулат.

2-мисал. Массивдин элементин издөө программасын түзгүлө.

Элементти издөө программасынын макетин 2-сүрөттөгүдөй түзөбүз.












Программанын жыйынтыгы боюнча маалыматты чыгаруу үчүн ShowMessage функциясын пайдаланабыз.











Түзүлгөн программанын листинги төмөнкүдөй.

2-листинг. Элементти издөө.

procedure TForm1.Button1Click(Sender: TObject);

var

a: array[1..5] of integer; //массив

obr: integer; // издөө үчүн үлгү

found: boolean; // TRUE - үлгүнүн элемент менен дал келиши

i: integer; // массивдин элементинин индекси

begin

// массивди киргизүү

for i:=1 to 5 do

a[i] := StrToInt(StringGrid1.Cells[i-1,0]);

// үлгүнү киргизүү

obr := StrToInt(Edit1.text);

// издөө

found := FALSE; // керектүү элемент массивде жок болсун

i:= 1;

repeat

if a[i] = obr

then found := TRUE else i := i+1;

until (i 5) or (found = TRUE);

if found

then ShowMessage(IntToStr(i)+' номерлүү элемент менен дал келди'

+#13+'Издөө ийгиликтүү аяктады.')

else ShowMessage('Сиз издеген маалымат жок.');

end;

6.2.5. Массивди сорттоо

Массивди сорттоо (иреттөө) деп массивдин элементтерин өсүү же кемүү тартибинде жайгаштырууну айтабыз. Бул маселени чечүүнү Additional барагындагы StrinGrid компонентин колдонуу менен көрсөтөбүз.

3-мисал. 10 элементтүү массивди иреттөө программасын түзгүлө.

Элементтерди иреттөө программасынын макетин 4-сүрөттөгүдөй түзөбүз.

3-листинг. Массивди иреттөө.

procedure TForm1.Button1Click(Sender: TObject);

var

a:array[1..10] of integer;

i,k,j:integer;

buf:integer;

min:integer;


begin

// массивди киргизүү

for i:=1 to 10 do

a[i]:=StrToInt(StringGrid1.Cells[i-1,0]);

Label2.Caption:='';

// массивди иреттөө

for i:=1 to 9 do

begin

min:=i;

for j:=i+1 to 10 do

if a[j]

buf:=a[i];

a[i]:= a[min];

a[min]:=buf;

end;

// массивди чыгаруу

for k:=1 to 10 do

Label2.Caption:=Label2.Caption+' '+IntToStr(a[k]);

Label2.Caption:=Label2.Caption+#13;

end;






6.3. Көп ченемдү массивдер

Аныктама. Эгерде массивдин элементтери эки же андан көп индекстер менен аныкталса, анда мындай массивдерди көп ченемдүү массивдер деп айтабыз.

Эгерде индекстердин саны экөө болсо, массивди эки ченемдүү массив деп айтабыз.

М атематикада матрицаны эки ченемдүү массив катары кароого болот. Мисалы, үч жолчодон жана үч мамычадан турган 3х3 өлчөмүндөгү А матрицасын карасак, анын ар бир элементи жолчосунун жана мамычасынын номерлери менен бир маанилүү аныкталат жана ал номерлер индекстер катары каралып, матрицанын элементтери төмөнкүдөй жазылат: .

Э ки ченемдүү массивдин мисалы катары шахматтык досканы да алууга болот. Шахматтык доскадагы ар бир фигуранын абалы дагы эки индекс менен аныкталат: a1, b1, … , h8.

Үч ченемдүү массивдин мисалы катары Рубиктин кубигин алсак болот, анткени ал 3×3×3 өлчөмүндөгү кичинекей кубиктердин жыйындысынан туруп, анын ар бир кубиги x, y жана z координаталары менен аныкталат.

Э ки ченемдүү массивдер типтерди баяндоо бөлүмүндө төмөнкүдөй жарыяланат:

м

type

name : array [n1..n2, m1..m2] of тип;

ында, name – массивдин атын, n1 массивдин биринчи индексинин диапазонунун төмөнкү, n2 – жогорку чегин, m1 массивдин экинчи индексинин диапазонунун төмөнкү, m2 – жогорку чегин, ал эми тип массивдин элементтеринин тибин аныктайт.

Эки ченемдүү массивдерди өзгөрмөлөрдү жарыялоо бөлүмүндө аларды айкын түрдө төмөнкүдөй жарыялоого болот:

var

name : array[n1..n2, m1..m2] of тип;





Эки ченемдүү массивдин элементин көрсөтүү үчүн массивдин атын жана квадраттык кашаанын ичине элементтердин индексин көрсөтүү керек:

A[5,6]:= 101;

В[1,30]:= 165;

Эки ченемдүү массивдин элементтерин кийирүү үчүн камтылуучу циклдерди колдонуу ыңгайлуу болот. Мисалы, биринчи цикл жолчолорду кийирсе, ар бир жолчонун элементтерин ички цикл кийире тургандай кылып программа түзүү керек.

1-мисал. Эки ченемдүү массивдин элементтерин кокустук сандар менен толтургула.

1-листинг. Массивди элементтери менен чыгаруу

procedure TForm1.Button1Click(Sender: TObject);

var i, j:integer;

s:string;

a:array[1..100,1..100] of real;

begin

// Массивдин кийирүү

for i:=1 to 5 do

begin

for j:=1 to 5 do

begin

a[i, j]:=random(9);

end;

end;

// Массивди чыгаруу

for i:=1 to 5 do

begin

for j:=1 to 5 do

begin

s:=s+'a[i, j])='+FloatToStr(a[i, j])+' ';

end;

s:=s+chr(13);

end;

Label2.Caption:=s;

end;


1-листингде камтылуучу циклдерди эң оболу массивдин элементтерин кокустук сандар менен толтуруу, андан кийин экинчи камтылуучу циклдин жардамы менен массивдин элементтерин координаталары боюнча чыгаруу каралган.


2-листинг. Массивди чыгаруу

procedure TForm1.Button3Click(Sender: TObject);

var i, j:integer;

s1:string;

a:array[1..100,1..100] of real;begin

// Массивдин кийирүү

For i:=1 to 5 do

begin

for j:=1 to 5 do

begin

a[i, j]:=random(9);

end;

end;

// Массивди чыгаруу

For i:=1 to 5 do

begin

for j:=1 to 5 do

begin

s1:=s1+FloatToStr(a[i, j])+' ';

end;

s1:=s1+chr(13);

end;

Label3.Caption:=s1;

end;

2-листингде камтылуучу циклдерди массивдин элементтерин кокустук сандар менен толтуруу жана массивди толугу менен чыгаруу каралган.

Программанын жыйынтыгы 1-сүрөттө көрсөтүлдү.
























2-мисал. Эки ченемдүү массивдин элементтерин кокустук сандарды колдонуу менен StringGrid компонентинин ячейкаларына жазгыла.

Маселени чечүүнү бир нече кадамдарга бөлүп алабыз.

1-кадам. Формага StringGrid компонентин жайгаштырып, андагы фиксирленген жолчону (FixedRows=1) жана мамычаны (FixedCols), берилгендерди кийирүү үчүн керектүү болгон жолчолордун (RowCount=10) жана мамычалардын (ColCount=10) санын, ошондой эле таблицанын ячейкаларын редактирлөөгө мүмкүн боло тургандай кылып таблицанын касиеттерин (Options.goEditing=True, Options.goTab=True, Options.GoAlways-ShowEditor= True) саздап алабыз.

2-кадам. Форма жүктөлүшү менен таблицанын фиксирленген эң жогорку жолчосуна латын алфавитинин тамгалары, ал эми фиксирленген сол мамычасына цифралар чыга тургандай кылып форманын OnCreate касиетине төмөнкүдө программа жазып алабыз:

procedure TForm1.FormCreate(Sender: TObject);

var i,j:integer;

begin

// Мамычалардын аталыштарын кийируу

for i:=1 to 10 do

StringGrid1.Cells[i,0]:=chr(64+i);

// Жолчолордун номерлерин кийируу

for j:=1 to 10 do

StringGrid1.Cells[0,j]:=IntToStr(j);

end;

3-кадам. Кокустук сандарды генерациялоочу random() функциясын колдонуп, камтылуучу циклдерди пайдаланып, формадагы таблицанын ячейкаларын кокустук сандар менен толтурабыз.

procedure TForm1.Button1Click(Sender: TObject);

var i,j:integer;

begin

// Массивди кокустук сандар менен толтуруу

for i:=1 to 10 do

for j:=1 to 10 do

begin

StringGrid1.Cells[i,j]:=FloatToStr(random(10));

end;

end;

4-кадам. Таблицанын ячейкаларын кокустук сандардан тазалоочу программаны түзүп алабыз.

procedure TForm1.Button2Click(Sender: TObject);

var i,j:integer;

begin

// Массивди тазалоо

for i:=1 to 10 do

for j:=1 to 10 do

begin

StringGrid1.Cells[i,j]:='';

end;

end;

5-кадам. Программанын ишин аяктоочу программаны жазып алабыз.

procedure TForm1.Button3Click(Sender: TObject);

begin

Close;

end;


Программанын жыйынтыгы 2-сүрөттө чагылдырылды.




















StringGrid компоненти

StringGrid компоненти Additional барагында жайгашкан. Ал таблицаны элестетет жана анын ячейкаларына символдорду же символдордун жолчосун жазууга болот.

Компонентти колдонууда төмөнкү таблицада келтирилген касиеттерди пайдаланууга болот.


Таблица 1. StringGrid компонентинин касиеттери

Касиети

Мааниси

Name

Компоненттин аты. Программада компонент менен иштөө үчүн колдонулат

ColCount

Таблицанын мамычаларынын саны

RowCount

Таблицанын жолчолорунун саны

Cells

Таблицанын ячейкасы. col номерлүү мамыча менен row номерлүү жолчонун кесилишиндеги элемент cells[col, row] форматында аныкталат

FixedCols

Таблицанын сол жагындагы фиксирленген колонка.

FixedRows

Таблицанын жогору жагындагы фиксирленген колонка

Options.goEditing

Таблицанын ячейкаларында редактирлөө мүмкүнчүлүгүн аныктайт. True — редактирлөөгө уруксат, False — уруксат эмес дегенди билдирет

Options.goTab

Таблицанын кийинки ячейкасына баскычы менен өтүүгө уруксат (True) берүүнү же тыюу (False) салууну аныктайт

Options.GoAlways-ShowEditor

Компоненттин редактирлөө режимин аныктайт

Left

Таблицанын сол талаасынын чегинен форманын сол чегине чейинки аралык

Top

Таблицанын жогорку талаасынын чегинен форманын жогорку чегине чейинки аралык

Height

Таблицанын талаасынын бийиктиги

Width

Таблицанын талаасынын кеңдиги

Font

Таблицанын ячейкасында жайгашкан элементтердин шрифти

7-глава. Символдор жана жолчолор 7.1. Символдор менен иштөөчү функциялар

Символ деп тамганы, цифраны же кандайдыр бир белгини түшүнөбүз. Тексттер символдордон куралат, ошондуктан символ тексттин бир бирдиги болуп эсептелет.

С имволдордун коддук таблицасы 256 позициядан турат, б.а. ар бир символ 0 дөн 256 га чейинки өзүнүн уникалдуу кодуна ээ болот. Эгерде символдун коду N болсо, анда ал символду программада #N деп жазабыз. Эсте 1 символ 1 байт менен аныкталат. Таблицалардын символун төмөнкү маршрут боюнча көрүп алууга болот (1-cүрөт):


  • Пуск

  • Программы

  • Стандартные

  • Служебные

  • Таблица символов


Символдор менен иштөөдө негизи-нен Chr жана Ord функциялары кол-донулат. Chr функ-циясы берилген код боюнча сим-волду кайтарып берсе, Ord функ-циясы берилген символдун кодун аныктап берет.

1. Chr функциясы

Chr функциясы берилген ASCII-коду боюнча символду аныктап берет.

Функциянын синаксиси:

Chr (:Byte):Char;

Функцияга кайрылуу форматы төмөнкүдөй:

Chr ();

Функциянын аргументи byte тибиндеги сан, ал эми функциянын мааниси - char тибиндеги символ болот.


2. Ord функциясы

Ord функциясы берилген символдун ASCII-кодун аныктап берет.

Функциянын синаксиси:

Ord ( : char) : integer;

Функцияга кайрылуу форматы төмөнкүдөй:

Ord ();

Функциянын аргументи char тибиндеги символ, ал эми функциянын мааниси - integer тибиндеги бүтүн сан болот.

ShowMessage('A = '+IntToStr(Ord(A))); // A=65

ShowMessage('C = '+IntToStr(Ord(C))); // C=67

7.2. Жолчолор менен иштөөчү стандарттык функциялар

Delphi тилинде жолчолор менен иштөөчү стандарттык функциялар бар.

1. Length функциясы

Length функциясы жолчонун узундугун, б.а. жолчодогу символдордун санын аныктап берет.

Функциянын синаксиси:

Length (: string): integer;

Функцияга кайрылуу форматы төмөнкүдөй:

length();

Функциянын аргументи катары жолчо же жолчо тибиндеги туюнтма боло алат. Функциянын мааниси - жолчодогу символдордун санын аныктап турган сандык маани болот.

Мисалы,

d:=length('Асанов');

d өзгөрмөсүнүн мааниси 6 га барабар болот.

2. Pоs функциясы

Pоs функциясы саптагы жолчонун позициясын аныктайт. Функциянын синаксиси:

Pos(: string; : string): integer;

мында – string тибиндеги берилген жолчолордун жыйындысы, – string тибиндеги изделүүчү жолчолук константа же өзгөрмө.

Pos – функциясы изделүүчү жолчонун саптагы биринчи кездешүүсүнүн позициясын аныктайт жана анын мааниси integer тибиндеги бүтүн сан болот.

Мисалы

р:= pos('ша', 'Бишкек шаары');

инструкциясы аткарылгандан кийин р өзгөрүлмөсүнүн мааниси 8 ге барабар болот. Эгерде сапта мындай жолчо жок болсо, анда роs() функциясынын мааниси нөлгө барабар болот.

3. Cору функциясы

Cору функциясы саптагы жолчонун фрагментин бөлүп алат.

Функциянын синаксиси:

Сору(: string; р, n : integer) : string;

мында – string тибиндеги берилген сап;

  • р – бөлүнүп алына турган жолчонун биринчи символунун номери;

  • n – бөлүнүп алына турган жолчонун узундугу.

Сору – функциясы берилген жолчонун р-позициясынан баштап n символду бөлүп (копиялап) алат жана анын мааниси string тибиндеги жолчо сан болот.

Мисалы

st:= 'Инженер Акматов';

fam:=copy(st, 9, 7);

инструкциясы аткарылганда fam өзгөрмөсүнүн мааниси 'Акматов' болот.

4. Concat функциясы

Concat функциясы бир нече жолчолорду бириктирет.

Функциянын синтаксиси:

Concat (, ,...,: string):string;

мында ,..., – string тибиндеги берилген жолчолор. Функциянын мааниси - string тибиндеги жолчо болот.

1-мисал.

var s: string;

begin

s:= Concat('Асанов', 'Акмат', 'Ошто жашайт');

// Натыйжада s := 'Асанов Акмат Ошто жашайт' болот.

end;

5. Trim функциясы

Trim функциясы жолчонун башындагы жана акырындагы боштуктарды (пробелдерди) жана башкаруучу символдорду өчүрөт.

Функциянын синтаксиси:

Trim (:string):string;

мында – string тибиндеги берилген жолчо, ал эми функциянын мааниси - string тибиндеги жолчо болот.

var s1,s2:string;

l1,l2:integer;

begin

s1:=#13' Îø ';

l1:= length(s1); // l1 := 5

s2:= Trim(s1); // s2 := 'Îø'

l2:= l1-length(s2); // l2 := 3

Label1.Caption:=IntToStr(l1)+' '+IntToStr(l2);

Label2.Caption:=s2;

end;

7.3. Жолчолор менен иштөөчү стандарттык процедуралар

Delphi тилинде жолчолор менен иштөөчү процедуралар бар.

1. Delete процедурасы

Delete процедурасы жолчонун бир бөлүгүн өчүрөт.

Процедуранын синаксиси:

Delete (: string; n, m: integer);

Процедурага кайрылуу төмөнкүдөй болот:

delete(жолчо, n, m);

мында:

  • жолчо – жолчолук типтеги өзгөрмө же константа;

  • n – ушул симводон баштап жолчонун бөлүгү өчүрүлөт;

  • m – өчүрүлүүчү жолчонун узундугу.

Мисалы, төмөнкү

s:='Бишкек шаары';

delete(s,7,5);

инструкциялар аткарылгандын кийин s өзгөрмөсүнүн мааниси 'Бишкек' болуп калат.

2. Insert процедурасы

Insert процедурасы бир жолчону экинчи жолчого берилген позициядан баштап койот.

Процедуранын синтаксиси:

Insert (: string; : string; n : integer);

мында

  • жолчо – коюлуучу жолчо;

  • – коюла турган сап;

  • n – коюла турган жолчонун позициясынын номери.


Создание строкового калькулятора


unit U_StrCalc;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Buttons;

var

Form1: TForm1;

implementation

{$R *.dfm}

……………………………………………………………………………………………………………………………….

// Ввод текста для обработки

procedure TForm1.FormCreate(Sender: TObject);

begin

Edit1.Text:='Создание приложений в Delphi'

end;


// Определение длины строки

procedure TForm1.Button2Click(Sender: TObject);

var

st:string;

dl:integer;

begin

st:=Edit1.Text;

dl:=Length(st);

Edit2.Text:=IntToStr(dl);

end;


// Удаление части строки

procedure TForm1.Button3Click(Sender: TObject);

var

s:string;

n,m:integer;

begin

s:=Edit1.Text;

n:=StrToInt(Edit3.Text);

m:=StrToInt(Edit4.Text);

Delete(s,n,m);

Edit5.Text:=s;

end;


// Поиск подстроки

procedure TForm1.Button4Click(Sender: TObject);

var

st,pst:string;

n:integer;

begin

st:=Edit1.Text;

pst:=Edit6.Text;

n:=pos(pst,st);

Edit7.Text:=IntToStr(n);

end;


// Копирование части строки

procedure TForm1.Button5Click(Sender: TObject);

var

st:string;

n,m:integer;

begin

st:=Edit1.Text;

n:=StrToInt(Edit8.Text);

m:=StrToInt(Edit9.Text);

Edit10.Text:=copy(st,n,m);

end;


// Вставка подстроки в строку

procedure TForm1.Button6Click(Sender: TObject);

var

st,st1:string;

n:integer;

begin

st:=Edit1.Text;

n:=StrToInt(Edit11.Text);

st1:=Edit12.Text;

Insert(st1,st,n);

Edit13.Text:=st;

end;


// Очистка всех элементов типа TEdit

procedure TForm1.Button7Click(Sender: TObject);

var

i : Integer;

begin

for i := 1 to ComponentCount - 1 do

TEdit(FindComponent('Edit' + IntToStr(i + 1))).Text:='';

end;


end.










7-глава. Подпрограмма. Процедуралар жана функциялар


1. Подпрограмма жана анын түрлөрү. Программалоо тилдеринде маселелерди чечүү үчүн белгилүү бир инструкциялардын тобун бир нече жолу өзгөртпөстөн кайталоого жана аларды программанын ар кайсы бөлүгүндө аткарууга туура келет. Ошондуктан мындай учурларда түзүлгөн программанын ыкчам иштеши үчүн подпрограмма концепциясы колдонулат.

Delphi тилинде да негизги программалык бирдик болуп подпрограмма эсептелет.

Подпрограмма деп атайын атка ээ болгон жана белгилүү бир маселени чечүү үчүн дайындалган инструкциялардын жыйындысын айтабыз.

Ар бир подпрограммага атайын ат берилет жана ал подпрограмманын параметрлери болот. Подпрограмманын аты аны чакыруу үчүн, ал эми параметрлер маанилерди киргизүү үчүн колдонулат.

Подпрограмманын параметрлери формалдуу жана чыныгы деп бөлүнөт. Формалдуу параметрлер подпрограмманын жарыялоодо бөлүмүндө жарыяланышы керек, ал эми подпрограмманы чакырганда көрсөтүлгөн параметрлер учурдагы (реалдуу) деп аталат.

Подпрограмма негизги программанын жарыялоо бөлүмүндө жарыяланышы керек. Подпрограмманы негизги программанын каалаган бөлүгүндө чакырып алса болот.

Подпрограмма бөрктөн жана телодон турат. Подпрограмманын телосу жарыялардан жана аткарылуучу инструкциялардын удаалаштыгынан турат.

Подпрограмманын эки түрү бар: функция жана процедура.


















2. Функция жана анын түрлөрү. Delphi тилинде функциялар эки түргө бөлүнөт (2-схема).


Delphi системасына коду тиркелген көптөгөн стандарттык функциялар жана процедуралар бар:

  • Математикалык функциялар: abs(x), sin(x), cos(x), tan(x), arctan(x), exp(x), ln(x), sqr(x), sqrt(x), int(x), arcos(x), random(x), ...;

  • Жолчолорду иштетүү функциялары: length(S), concat(S1, S2), copy(S, n, m), delete(S, n, m),...

  • Типтерди өзгөртүү функциялары (IntToStr, StrToint, FloatToStr, StrToFloat,...);


Бирок көп маселелерди чечүүдө стандарттык функциялар жана процедуралар жетишсиз болот, ошондуктан программист тарабынан функцияларды жана процедураларды аныктоого туура келет.


3. Функция жана анын структурасы. Функция деп атайын атка ээ болгон жана маселени чечүүдө бир эле маанини аныктоо үчүн дайындалган инструкциялардын жыйындысын айтабыз.

Функциянын структурасы төмөнкүдөй: ал бөрктөн жана телодон турат. Функциянын телосу константаларды, типтерди, өзгөрмөлөрдү жарыялоо бөлүмдөрүнөн жана инструкциялар бөлүмүнөн турат.

Жалпы учурда функция төмөнкүдөй жарыяланат:


Функциянын бөркү function сөзүнөн башталат, функциянын аты жазылат, тегерек кашаанын ичине параметрлердин тизмеси типтери менен кошо көрсөтүлөт, кош чекит коюлуп, функциянын тиби көрсөтүлөт жана акырында үтүрлүү чекит коюлат.

Бөрктөн кийин константаларды, типтерди, өзгөрмөлөрдү жарыялоо бөлүмдөрү жана инструкциялар бөлүмү жазылат.

Инструкциялар бөлүмүндөгү эң акыркы инструкцияда функциянын атына алынган негизги жыйынтык ыйгарылышы керек.


4. Функцияны чакыруу жана колдонуу. Функцияны чакыруу үчүн функциянын атын жазып, андан кийин тегерек кашаалардын ичине чыныгы параметрлерди үтүрлүү чекит менен ажыратып жайгаштырабыз жана эң акырында үтүрлүү чекит коёбуз:


9.1-мисал. Программа аткарылып жатканда киргизилген a,b,c сандарынын арифметикалык орточо маанисин функция түшүнүгүн колдонуп аныктагыла.

Чыгаруу. a, b, c сандарынын арифметикалык орточо маанисин аныктоо үчүн функция түзүп алабыз (4-схема).












Мында f_ort – функциянын аты, x1, x2, x3 – формалдуу параметрлер, арифметикалык орточо маани функциянын атына ыйгарылат.

Бул функцияны колдонуу үчүн 9.1-сүрөттө көрсөтүлгөндөй моделди түзүп алабыз.


Программанын листинги төмөнкүдөй.

unit Un_a_ort;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Buttons, StdCtrls;

type

TForm1 = class(TForm)

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Edit1: TEdit;

Edit2: TEdit;

Edit3: TEdit;

Button1: TButton;

Button2: TButton;

BitBtn1: TBitBtn;

GroupBox1: TGroupBox;

Label5: TLabel;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

function f_ort (x1,x2,x3:real):real;

begin

f_ort:=(x1+x2+x3)/3;

end;

procedure TForm1.Button1Click(Sender: TObject);

var

a,b,c,s:real;

begin

a:=StrToFloat(Edit1.Text);

b:=StrToFloat(Edit2.Text);

c:=StrToFloat(Edit3.Text);

s:=f_ort(a,b,c);

Label5.Caption:='(a+b+c)/3= '+FloatToStr(s);

end;


procedure TForm1.Button2Click(Sender: TObject);

begin

Edit1.Text:='';

Edit2.Text:='';

Edit3.Text:='';

Label5.Caption:='';

end;

procedure TForm1.Button1Click(Sender: TObject) процедурасын-дагы a, b, c - өзгөрмөлөрү учурдагы параметрлер болуп, f_ort(x1, x2, x3) функциясы чакырылганда x1, x2, x3 - өзгөрмөлөрү менен алмаштырылат. f_ort(x1, x2, x3) функциясы арифметикалык орточо маанини аныктайт жана ал маани s өзгөрмөсүнө ыйгарылат, ал маани Label5.Caption:='(a+b+c)/3= '+FloatToStr(s1); инструкциясы менен монитордун экранына чыгарылат.

Өз алдынча иш. Программа аткарылып жатканда киргизилген a, b, c сандарынын геометриялык орточо маанисин функция түшүнүгүн колдонуп аныктагыла.

Көрсөтмө. a, b, c сандарынын геометриялык орточо маани-син төмөнкү формула менен аныкталат:



10-лекция. Процедуралар

Процедуранын структурасы. Процедура подрограмманын бир түрү болуп эсептелет. Ал эки учурда колдонулат.

1). Подпрограмма эч кандай мааниини кайтарып бербеген учурда;

2). Подпрограмма экиден көп маанини кайтарып берген учурда.

Жалпы учурда анын структурасы төмөнкүдөй:


unit Un_dohod;

1-мисал. Банкка салынган акчадан түшкөн кирешени эсептегиле.

Программаны түзүүдө FloatToStrF(x, f, k, n) стандарттык функциясын колдонобуз. Бул функция х чыныгы санынын символдук сүрөттөлүшүн берет. Мында f – форматты аныктайт, мисалы ffCurrency – финансылык формат, k – тактыкты аныктайт, б.а. цифралардын жалпы саны, n – ондук чекиттен кийинки цифралардын саны.

u nit Un_dohod;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Buttons, StdCtrls;

type

TForm1 = class(TForm)

Label1: TLabel;

Label2: TLabel;

Button1: TButton;

Edit1: TEdit;

Edit2: TEdit;

Label3: TLabel;

BitBtn1: TBitBtn;

Button2: TButton;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

procedure vklad(sum1: real; t:integer;var pr:real;var sum2:real);

var

p:real;

begin

case t of

1..3 : p:=0.08; // 8 процент

4..6 : p:=0.085; // 8.5 процент

else

p:=0.1; // 10 процент

end;

pr:=sum1*(p/12); // доход

sum2:=sum1+pr*t; // мөөнөттүн акырындагы сумма

end;

procedure TForm1.Button1Click(Sender: TObject);

var

pr1:real;

s1,s2:real;

t1:integer;

begin

s1:=StrToFloat(Edit1.Text);

t1:=StrToInt(Edit2.Text);

vklad(s1,t1,pr1,s2);

Label3.Caption:='Баштапкы сумма: '+FloatToStr(s1)+#13+

'1 айдагы киреше:='+FloatToStrF(pr1,ffCurrency,6,2)+#13+

'Мөөнөттүн акырындагы'+ #13+'сумма: '+FloatToStrF(s2,ffCurrency,6,2);

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

Edit1.Text:='';

Edit2.Text:='';

Label3.Caption:='';

end;

end.


8-глава. Файлдар

1. Файлды жарыялоо. Файл деп атайын атка (ысымга) жана кеңейтилишке ээ болгон берилгендердин бирдей типптеги удаалаштыгынан турган физикалык эстин бөлүгүн айтабыз.

Файлдын элементтеринин саны физикалык эстин өлчөмүнө жараша чектелет.

Delphi программалоо тилинде программада алынган жыйынтыктарды клавиатураны колдонбостон туруп эле дискке сакталуучу файлдарга жазууга, файлдагы маалыматтарды окууга жана аларды кайра иштетүүгө болот.

Файлдар негизинен үч типке бөлүнөт:

  • Тексттик файлдар (тексттик файлдагы информациялар ASCII символдорунда сакталат);

  • Типтештирилген файлдар (файлдагы берилгендерди тиби аныкталган, б.а. алардын тиби бүтүн, чыныгы, символдук, логикалык же жолчолук типте болушу мүмкүн);

  • Типтештирилбеген (экилик) файлдар (файлдардын универсалдык форматы: графиктик, аудио- жана видеофайлдар, электрондук таблицалар, HTML, ж.б. файлдар).

Тексттик жана типтештирилген файлдар экилик файлдардын айрым бир учуру болуп эсептелет.

Берилгендердин структурасы сыяктуу эле файл дагы өзгөрмөлөрдү жарыялоо бөлүмүндө жарыяланышы керек.

1). Тексттик файлдар төмөнкүдөй жарыяланат:









2). Типтештирилген файлдарды жарыялоо төмөнкүдөй болот:








Мисалы:

f: file of integer; // бүтүн сандардын файлы

koef: file of real; // чыныгы сандардын файлы

res: file of char; // символдор файлы


3). Типтештирилбеген (экилик) файлдар төмөнкүдөй жарыяланат:









2. Файлдык өзгөрмөнү файлдын аты менен байла-ныштыруу. Файлдын ичиндеги маалыматтарды окууга же файлга маалыматтарды жазуу үчүн файлдык өзгөрмөнү конкреттүү файл менен байланыштыруу керек.

A ssignFile процедурасы файлдык өзгөрмөнү конкреттүү файл менен байланыштыруу үчүн кызмат кылат жана анын жазылышы төмөнкүдөй:


Файлдын аты Windows операциялык системасында кабыл алынган эрежелер боюнча берилет. Файлдын аты толук болушу мүмкүн, б.а. файлын аты менен кошо файлга баруучу жол – дисктин аты, каталог жана камтылуучу каталогдор жалгыз апострофтун ичине жазылып көрсөтүлүшү мүмкүн.

Мисалдар:

AssignFile(f, ‘c:\result.txt’);

AssignFile(f, ‘c:\pogoda.txt’);

fname:=(‘usd.txt’);

AssignFile(f, fname);


Эгерде файлга баруучу жол көрсөтүлбөсө, анда файл аткарылуучу файл сакталган каталогдо жатат деп түшүнүү керек.


3. Тексттик файлдар менен иштөө. Файлдык өзгөрмө менен конкреттүү файлды байланыштыргандан кийин төмөнкү маселелерди чечүүгө болот:

  • Маалыматтарды файлга жазуу;

  • Файлдан маалыматтарды окуу.

Ф айлдар менен иштөөнүн схемасын төмөнкүдөй көрсөтүүгө болот:


1). Rewrite(f) процедурасы жаңы файлды түзүү менен файлды ачат жана ал маалыматтарды файлга жазуу же кайра жазуу үчүн колдонулат.

Мисалы: AssignFile(f, ‘result.txt’);

Rewrite(f);

инструкциялары менен result.txt файлы түзүлүү менен ачылат жана ага маалыматтарды жазуу үчүн же мурда бар болгон result.txt файлын ачып, ага маалыматтарды кайра жазуу үчүн колдонууга болот.

2). Append(f) процедурасы менен бар файл ачылат жана ал маалыматтарды файлдын акырына кошуп жазуу үчүн колдонулат. Мисалы,

AssignFile(f, ‘result.txt’);

Append(f);

инструкциялары менен result.txt файлы ачылат жана файлдын акырына маалыматтарды кошуп жазуу үчүн шарт түзүлөт.

3). Reset(f) процедурасы менен файл маалыматтарды файлдан окуу үчүн гана ачылат. Мисалы,

AssignFile(f, ‘result.txt’);

Reset(f);

инструкциялары менен result.txt файлындагы маалыматтарды окуу үчүн колдонууга болот.

4). Writeln() жана Readln() процедуралары тиешелеш түрдө маалыматтарды жазуу жана окуу үчүн колдонулат.

5). CloseFile(f) процедурасы ачылган файлды жабуу үчүн колдонулат. Мисалы,

AssignFile(f, ‘result.txt’);

CloseFile(f);

инструкциялары менен result.txt файлын жабуу үчүн колдонууга болот.


1-мисал. Студенттердин тизмесин файлга жазуу программасын түзгүлө.

Чыгаруу. Маселени чечүү үчүн төмөнкүдөй макет түзүп алабыз (1-сүрөт). Ал үчүн сүрөттө көрсөтүлгөн компоненталарды формага жайгаштырып, касиеттерин саздайбыз (настройкалайбыз).



“Файлга жазуу” баскычына эки чыкылдатып, төмөнкүдөй программа түзөбүз.

1-листинг. Файлга жазуу процедурасы.

procedure TForm1.Button1Click(Sender: TObject);

var

f : TextFile;

fname:string;

i : integer;

begin

fname:=Edit1.Text;

AssignFile(f, 'c:\'+ fname);

Rewrite(f);

for i:=0 to Memo1.Lines.Count do

writeln(f, Memo1.Lines[i]);

CloseFile(f);

MessageDlg('Берилгендер '+fname+' аттуу файлга жазылды!', mtInformation,[mbOk],0);

end;

end.


Программа аткарылган учурда тиешелүү фамилияларды киргизип, “Файлга жазуу” баскычын басканда маалыматтар файлга жазылат (2-сүрөт) жана маалымат монитордун экранына чыгат (3-сүрөт).





























5-глава. Консолдук колдонмолор 5.1. Консолдук колдонмону түзүү редактору жана программанын структурасы

Консолдук колдонмодо графиктик интерфейс болбойт. Эгерде колдонуучунун катышышы зарыл болбогон учурдагы программаны түзүү керек болсо, анда консолдук колдонмону пайдаланышат.

Консолдук колдонмону түзүү үчүн Console Application деп аталган программалык коддордун атайын редакторун жүктөп алуу керек. Ал үчүн төмөнкү команданы аткарабыз:

File / New / Other…

Натыйжада New Items диалогдук терезеси ачылат. Бул терезеден Console Application деген пунктту тандоо менен программалык коддорду редактирлөө терезесин ачабыз. Бул терезеде консолдук колдонмонун проектисинин жалпы структурасын кармап турган даяр шаблон пайда болот (1-сүрөт):


Консолдук колдонмодо программалоонун бардык негизги башкаруучу структуралары иштейт: ыйгаруу инструкциясы, шарттуу жана циклдик инструкциялар.

Консолдук колдонмолорду түзүүдө кийирүү (read) жана чыгаруу (write) операторлору көп колдонулат.


5.2. Read оператору

Клавиатурадан информацияларды кийирүү үчүн read оператору колдонулат жана анын төмөнкүдөй форматтары бар:


read(x1,x2,…,xn);

readln(x1,x2,…,xn);

мында x1,x2,…,xn – кийирилүүчү өзгөрмөлөрдүн тизмеси








Эгерде программада аткаруу кезеги read операторуна келсе, анда аргументте көрсөтүлгөн өзгөрмөнүн мааниси киргизилмейинче аткаруу орундалбайт.

Сандык маанилерди кийирүүдө, мисалы эки санды кийирүүнү аткаруу үчүн алардын арасына жок дегенде бир боштукту (пробелди), табуляция символун коюу керек же жолчонун акырын билдирүүчү баскычты (Enter) басуу керек. Акыркы маанини кийиргенден кийин да Enter’ди басуу керек.

readln оператору read операторуна окшош, бирок тизмедеги акыркы маани окулгандан кийин, кийинки кезектеги readln операторунун өзгөрмөлөрүнө кийирилүүчү маанилер жаңы жолчодон башталат.

5.3. Write оператору

Информацияларды (сандарды, символдорду, жолчолорду, логикалык маанилерди) экранга чыгаруу үчүн write оператору колдонулат жана анын төмөнкүдөй форматтары бар:


write(x1,x2,…,xn);

writeln(x1,x2,…,xn);

мында x1,x2,…,xn – чыгарылуучу өзгөрмөлөр, константалар, туюнтмалар









write жана writeln операторлору берилгендердин бардыгын (өзгөрмөлөрдү, константаларды, туюнтмаларды) экранга удаалаш чыгарып берет.

writeln оператору колдонулган учурда, берилгендер чыгарылып бүткөндөн кийин, курсор жаңы жолчого жылдырылат.

Чыныгы сандар жылышууучу чекит (плавающая точка) формасында чыгарылат.

Чыныгы сандарды фиксирленген чекит формасында чыгаруу үчүн форматталган чыгаруу ыкмасын пайдалануу керек:


write(x1:n:m);

мында x1 – чыгарылуучу өзгөрмө, n – чыгаруу үчүн берилген талаанын узундугу (жалпы позициялардын саны), m – жалпы позициялардын ичинен бөлчөк бөлүк үчүн ажыратылган позициянын саны




1-мисал. Эки сандын суммасын эсептөө программасын консолдук колдонмо түзүү жолу менен түзгүлө.

Ал үчүн File / New / Other… командасы менен Console Application – консолдук колдонмолорду түзүү редакторун жүктөп алабыз жана программаны түзөбүз.

Төмөндө эки сандын суммасын эсептөө программасынын коду келтирилди жана жыйынтыгы көрсөтүлдү (2-сүрөт).

program P_summa;

{$APPTYPE CONSOLE}

uses

SysUtils;

var a,b,c:real;

begin

// Эки сандын суммасын табуу программасы

write('a=');

read(a);

write('b=');

read(b);

c:=a+b;

write('c=',c:6:2);

readln;

readln;

end.



Функцияны табуляциялоо

Функцияны табуляциялоо деп белгилүү бир туруктуу кадам менен эсептелген функциянын маанилеринин таблицасын түзүү процессин айтабыз.

Мисал катарында бир өзгөрмөлүү функцияны табуляциялоо маселесин карайбыз, б.а.   функциясынын   сегментиндеги   кадамы менен эсептелген маанилеринин таблицасын түзөбүз. Ал үчүн   сегментин   бөлүккө бөлүп,   кадамын төмөнкүдөй тандап алабыз:  .   сегментиндеги чекиттерди төмөнкүдөй белгилеп алабыз:  

Бул учурда функциянын маанилери төмөнкүдөй аныкталат:  

Функциянын маанилеринин таблицасын түзүү үчүн параметрлүү циклди колдонууга болот.



Чектүү суммаларды эсептөө

 

колдонмону түзүү үчүн Console Application деп аталган программалык коддордун атайын редакторун жүктөп алуу керек. Ал үчүн төмөнкү команданы аткарабыз:

File / New / Other…

Чектүү көбөйтүндүлөрдү эсептөө











Каталыктарды түзөө


Ошибки, которые могут быть в программе, принято делить на три группы:

  • Синтаксические;

  • Ошибки времени выполнения;

  • Алгоритмические.

Синтаксические ошибки, их также называют ошибками времени компиляции (Compile-time error), наиболее легко устранимы. Их обнаруживает компилятор, а программисту остается только внести изменения в текст программы и выполнить повторную компиляцию.


Ошибки времени выполнения, в Delphi они называются исключениями (exception), тоже легко устранимы. Они обычно проявляются уже при первых запусках программы и во время тестирования.

При возникновении ошибки (исключения) в программе, запущенной из Delphi, на экране появляется окно Debugger Exception Notification, в котором отображается информация о типе (классе) исключения и информационное сообщение, поясняющее причину возникновения исключения.

При возникновении ошибки программист может либо прервать выполнение программы (для этого надо в меню Run выбрать команду Program Reset), либо продолжить ее выполнение, например, по шагам (для этого в меню Run выбрать команду Step), наблюдая результат выполнения каждой инструкции.

С алгоритмическими ошибками дело обстоит иначе. Компилятор обнаружить их не может. Ошибки выявляются только в процессе тестирования программы.

Процесс проверки работоспособности программы называется тестированием.

Процесс поиска и устранение ошибок называется отладкой.


1. Исключительные ситуации в Delphi встречаются постоянно. Исключительная ситуация это такая ситуация, в результате которой генерируется ошибка, и выполнение программы прерывается. Именно потому такая ситуация и называется исключительной. Например, деление на ноль - классический пример исключительной ситуации.

Как в такой ситуации действует человек? Возникает вопрос, почему бы не поставить проверку, например, на равенство нулю знаменателя при делении? Можно и поставить. Но во многих случаях источник исключительной ситуации далеко не так очевиден, а на все случаи жизни проверки не введёшь.

Итак, для контроля исключительных ситуаций программист должен подготовить как основной вариант фрагмента, где возможна исключительная ситуация, так и его вариант, в котором она заведомо невозможна, или выводится информационное сообщение для пользователя.

Вот как выглядит оператор контроля исключительных ситуаций:


try

Основные инструкции фрагмента;

except

Альтернативный вариант фрагмента;

end;










Вначале производится попытка выполнить операторы секции try/except, содержащие основной вариант программы. При возникновении в каком-либо операторе этой секции исключительной ситуации остальные операторы секции пропускаются, и выполняется секция except/end.

Если всё "проходит штатно", то секция except/end пропускается.


Рассмотрим пример определения тока по закону Ома.


procedure TForm1.Button1Click(Sender: TObject);

var

u:real;// Чыналуу

r:real;// Каршылык

i:real;// Ток

begin

Label5.Caption:='';

try

u:=StrToFloat(Edit1.Text);

r:=StrToFloat(Edit2.Text);

i:=u/r;

except

on EZeroDivide do

begin

ShowMessage('Каршылык ноль болушу мумкун эмес!');

exit;

end;


on EConvertError do

begin

if (Edit1.Text='') or (Edit2.Text='') then

begin

ShowMessage('Эч кандай маалымат киргизилген жок!');

exit;

end;

begin

ShowMessage('Чыналуу жана Каршылык сан болушу керек!'+

#13+'Болчок сандарды жазганда утурду колдонгула.');

exit;

end;

end;

end;

Label5.Caption:=FloatToStrF(i,ffGeneral,4,2)+' A';

end;


procedure TForm1.Button3Click(Sender: TObject);

begin

Close;

end;


procedure TForm1.Button2Click(Sender: TObject);

begin

Edit1.Text:='';

Edit2.Text:='';

Label5.Caption:='';

end;




















2. Ещё один вариант оператора контроля исключительных ситуаций применяется, когда необходимо, чтобы определённый фрагмент кода выполнился в любом случае, возникла исключительная ситуация или нет:




try

Основные инструкции фрагмента;

finally

Заключительные действия;

end;










Основные инструкции, находящиеся в секции try, могут пройти штатно, или вызвать исключительную ситуацию. Операторы заключительных действий, находящиеся в секции finally, будут выполнены в любом случае.


3. Есть ещё один способ контроля исключительных ситуаций, касающийся ошибок операций ввода-вывода.

Перед участком программы, где возможны ошибки ввода-вывода (а это, по сути, все инструкции ввода-вывода), ставится директива {$I-}, заставляющая компилятор не включать в код автоконтроль ошибок ввода-вывода. Таким образом, в случае ошибки ввода или вывода программа не прерывается. В конце участка с операторами ввода-вывода ставится директива, включающая автоконтроль: {$I+}. Затем анализируется результат вызова функции IOResult. Если функция IOResult (вызывается без параметров) возвращает 0, значит ошибок ввода-вывода на данном участке не было.

Вот какой пример использования директив {$I} и функции IOResult содержит справка системы Delphi:

var

f: file of Byte;

begin

if OpenDialog1.Execute then

begin

AssignFile(F, OpenDialog1.FileName);

{$I-}

Reset(F);

{$I+}

if IOResult = 0 then

begin

MessageDlg('File size in bytes: ' + IntToStr(FileSize(F)), mtInformation, [mbOk], 0);

CloseFile(F);

end

else

MessageDlg('File access error', mtWarning, [mbOk], 0);

end;

end;

Функция IOResult досталась Delphi в наследство от Turbo Pascal. Тот же самый фрагмент можно составить и с использованием инструкции try.


4. При работе программы под управлением Delphi, система будет сама реагировать на исключительные ситуации, мешая работе инструкции обработки исключений. Чтобы проверить их действие, можно запускать программу непосредственно, сворачивая Delphi и пользуясь ярлыком, установленном на Рабочем столе. Или можно отключить реакцию системы на исключительные ситуации, тем самым давая возможность отработать специально для этого написанным фрагментам программы - нашим операторам try/except/end.

Для этого откроем пункт системного меню Delphi Tools - Debugger Options.... В появившемся окошке нужно снять галку в чекбоксе Stop on Delphi Exceptions, расположенном на вкладке Language Exceptions.

Теперь система Delphi будет предоставлять вашей программе возможность самостоятельно обрабатывать исключительные ситуации, среди которых могут быть и ситуации, возникновение которых прописано специально как удобный инструмент достижения необходимых результатов.






Графика жана мультимедиа

1. Delphi’нин графиктик мүмкүнчүлүктөрү

Delphi’де графиктерди: схемаларды, чиймелерди, иллюстрация-ларды чыгара турган программаны түзүүгө болот.

Программа объекттин (форманын же Image компонентинин) бетине графиканы чыгарып берет. Объекттин бети canvas касиетине туура келет. Ошондуктан объекттин бетине графиктик элементти (түз сызыкты, айлананы, тик бурчтукту ж. б.) чыгаруу үчүн canvas касиетине тиешелүү методду колдонуу керек.

Мисалы, экранга тик бурчтукту чыгаруу үчүн төмөнкү команда берилет:

F orm1.Canvas.Rectangle (10,10,100,100)






Берилгендер базасы 1. Телефондордун электрондук справочниги

Бүгүнкү күндө бирге окугандардын, иштегендердин же тааныштардын иштеги, үйдөгү жана мобилдик телефондорунун электрондук справочнигин түзүп алуу зарыл маселелердин бири болуп калды.

1-маселе. 1-таблицада көрсөтүлгөндөй телефондордун электрондук справочнигин түзүү талап кылынсын.

1-таблица

Фамилиясы

Аты

Иш телефону

Үй телефону

Мобилдик телефону

Акматов

Мурат

5-23-18

2-12-24

0552-41-35-84

Керимбекова

Айнура

4-36-90

5-56-34

0772-35-23-95

1-таблицада Акматов Мурат менен анын иштеги, үйдөгү жана мобилдик телефондору бири бири менен байланышкан маалыматтар болуп эсептелет.

Бири бири менен байланышкан маалыматтардын жыйындысын маалыматтар базасы деп айтабыз.

1-маселени чечүү үчүн 1-таблицага туура келүүчү маалыматтар базасын Microsoft Access программасы менен түзүп жана аны башкарууну Delphi программалоо тилинин каражаты менен жүзөгө ашырабыз.

1.1. Microsoft Access менен маалыматтар базасын түзүү

Проводник менен С:\ каталогунда BD аттуу папка түзүп, ага Microsoft Access менен түзүлгөн Contacts.mdb аттуу малыматтар базасын сактайбыз. Contacts.mdb базасынын мүнөздүк касиеттери 2-таблицадагыдай болсун.

2-таблица

Поле

Тип

Размер

Описание

Fam

Текстовый

50

Фамилиясы

Name

Текстовый

50

Аты

Phone_work

Текстовый

50

Иш телефону

Phone_hous

Текстовый

50

Үй телефону

Phone_mobil

Текстовый

50

Мобилдик телефон


Маалыматтар базасын төмөнкү кадамдар боюнча түзөбүз.

1. Microsoft Access программасын жүктөп, Файл \ Создать \ Новая база данных... командасын бергенден кийин имя файла деген талаада базанын атын киргизүү талап кылынат. Базага Contacts.mdb деп ат берип, аны С:\ BD\ каталогуна сактайбыз.

2. Маалыматтар базасында 2-таблицага туура келүүчү таблицанын макетин Создание таблицы в режиме конструктора деген команда менен же Конструктор режимин тандап алуу менен түзөбүз (1-сүрөт). Таблицаны Создание таблицы с помоөью мастера же Создание таблицы путем ввода данных командалары менен түзсө да болот. Бирок биз үчүн ыңгайлуусу Конструктор режими болуп эсептелет.












Макетти сактаганыбызда таблицанын атын сурайт. Анын атын contact деп атайбыз. Андан кийин бул таблица менен башка таблицаларды байланыштыруу үчүн ачкыч түзүү сунушталат. Ага Да деп жооп берсек, анда таблица түзүлөт. Натыйжада макеттин толук формасы төмөнкүдөй болот (2-сүрөт).








3. Түзүлгөн таблицаны 1-таблицадагы маалыматтар менен толтургандан кийин төмөнкү көрүнүштөгү таблица алынат (2-сүрөт).










1.2. ADO технологиясы

Берилген маалыматтар менен иштөө үчүн Delphi программалоо каражатынын ADO (ActiveX Data Object) технологиясын колдонобуз. Ал үчүн ADOConnection, ADODataSet, ADOTable жана ADOQuery компоненталарын пайдалабыз.

1. Delphi программасын жүктөгөндөн кийин формага ADO каражатынын ADOConnection жана ADODataSet компоненталарын, DataAccess каражатынын DataSourse компонентасын жана DataControls каражатынын DBGrid компонентасын жайгаштырабыз. ADOConnection, ADODataSet жана DataSourse компоненталары программа аткарылганда көрүнбөгөндүктөн аларды форманын каалаган жерине жайгаштырууга болот. Ал эми DBGrid компонентасын чычкандын сол баскычы менен чагылдырыла турган маалыматтарга ылайык формага келтирип жайгаштырабыз (4-сүрөт).

2. Проектти C: \ Program Files \ Bourland \ Delphi7 \ Projects\ маршруту боюнча сактап алабыз. Ал үчүн File \ Save Project As… командасын бергенден кийин Имя файла талаасында сунушталган unit1.pas атынын ордуна phone.pas атын, ал эми Project1.dpr атынын ордуна Phones.dpr атын беребиз.

3. ADOConnection компонентасынын жардамы менен C:\BD\Contacts.mdb маршруту боюнча маалымат базасы менен байланыштырабыз. Ал үчүн ADOConnection компонентасын активдештиребиз. Object Inspector терезесиндеги ConnectionString пунктундагы үч чекитти … тандайбыз. Андан кийин Use Connection String талаасында Build баскычынын жардамы менен ьаалыматтар базасынын атын киргизүү менен төмөнкүдөй формуланы алабыз:

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\BD\Contacts.mdb; Persist Security Info=False.

4. ADODataSet компонентасын тандайбыз. Connection касиетине ADOConnection1 маанисин беребиз. Ал эми Active касиети үчүн False маанисин тандап алабыз.

Маалыматтар Contacts.mbd базасынын Contacts деген таблицасында жайгашкан. Бул маалыматтар ADODataSet компонентасына келип түшүшү үчүн CommandText касиетине керектүү маалыматтарды тандап жазуу максатында SQL-командасын жазуу керек.

Мисалы, Contacts таблицасынан берилгендерди окууну камсыз кылуучу команда төмөнкүдөй жазылышы мүмкүн:

SELECT Fam, Name, Phone_work, Phone_hous, Phone_mobil FROM Contacts ORDER BY Fam

5. DataSourse компонентасын настройка кылуу үчүн DataSet касиетине ADODataSet1 маанисин берүү жетиштүү.

6. Маалыматтарды таблица түрүндө формага жайгаштыруу үчүн DBGrid компонентасын колдонобуз. Эң оболу Columns коллекциясына канча мамыча чыгаруу керек болсо, ошончо элемент кошуу керек. Ал үчүн Columns касиетинин тушунда турган үч чекитти ... тандап, коллекциялардын редактору болгон терезени ачабыз. Андан кийин терезедеги Add New баскычын басабыз.


1.3. Программанын тизмеги

unit Contact;


interface


uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Grids, DBGrids, DB, ADODB;


type

TForm1 = class(TForm)

ADOConnection1: TADOConnection;

ADODataSet1: TADODataSet;

DataSource1: TDataSource;

DBGrid1: TDBGrid;

procedure FormActivate(Sender: TObject);

procedure FormClose(Sender: TObject; var Action: TCloseAction);

private

{ Private declarations }

public

{ Public declarations }

end;


var

Form1: TForm1;


implementation


{$R *.dfm}


procedure TForm1.FormActivate(Sender: TObject);

begin

try

ADOConnection1.Open ;

ADODataSet1.Active :=True;

except

on e:Exception do begin

DBGrid1.Enabled :=False;

MessageDlg('Ошибка доступа к файлу C:\BD\Contacts.mdb',

mtError,[mbOK],0);

end;

end;

end;


procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);

begin

if DBGrid1.EditorMode then

begin

ADODataSet1.UpdateBatch(arCurrent);

end;

end;


end.



Колдонулган адабияттар

Негизги адабияттар

1. Культин Н. Основы программирования в Delphi 7. – 2-е изд., перераб. И доп. - СПб.: БХВ-Петербург, 2009. – 640 с.

2. Культин Н. Delphi 7 в задачах и примерах. - СПб.: БХВ-Петербург, 2006. – 288 с.

Кошумча адабияттар

3. Осипов Д. Delphi. Профессиональное программирование. – СПб.: Символ-Плюс, 2006. – 1056 с.

4. Осмоналиев А.Б., Аркабаев Н.К. Borland Paskal 7.0. Программалоонун негиздери. 1-бөлүк. – Ош: Ош обл. басмакана, 2008. – 256 б.

5. Кайыпбердиев Н.А., Кожобеков К.Г., Мадазимов Р.М. Delphi мисалдар менен. Баштоочулар курсу. – Ош: “ДИП полиграфия”, 2006. – 120 б.




125



Скачать

Рекомендуем курсы ПК и ППК для учителей

Вебинар для учителей

Свидетельство об участии БЕСПЛАТНО!