Программирование алгоритмов линейной структуры

Текст программы (проекта) в системе программирования Delphi представляет собой обычный текстовый файл, который Вы будете составлять в текстовом редакторе интегрированной инструментальной оболочки.

Проект Delphi представляет собой набор программных единиц — модулей. Один из модулей — главный, содержит инструкции, с которых начинается выполнение программы. Главный модуль приложения полностью формируется Delphi.

Главный модуль представляет собой файл с расширением dpr. Для того чтобы увидеть текст главного модуля приложения, нужно из меню Project выбрать команду View Source.

Program Project1;

Uses

  Forms,

  Unit1 in 'Unit1.pas' {Form1};

{$R *.res}

Begin

  Application. Initialize;

  Application.CreateForm(TForm1, Form1);

  Application. Run;

End.

Начинается главный модуль словом program, за которым следует имя программы, совпадающее с именем проекта. Имя проекта задается в момент сохранения проекта, и оно определяет имя создаваемого компилятором исполняемого файла программы. Далее за словом uses следуют имена используемых модулей: библиотечного модуля Forms и модуля формы vrunl.pas.

Строка {$R *.RES}, которая похожа на комментарий, — это директива компилятору подключить файл ресурсов. Файл ресурсов содержит ресурсы приложения: пиктограммы, курсоры, битовые образы и др. Звездочка показывает, что имя файла ресурсов такое же, как и у файла проекта, но с расширением res.

Файл ресурсов не "является текстовым файлом, поэтому просмотреть его с помощью редактора текста нельзя. Для работы с файлами ресурсов используют специальные программы, например, Resource Workshop. Можно также применять входящую в состав Delphi утилиту Image Editor, доступ к которой можно получить выбором из меню Tools команды Image Editor.

Основные действия в Delphi выполняются процедурами и функциями (называемыми иногда подпрограммами). Процедуры и функции представляют собой важный инструмент Delphi, позволяющий писать хорошо структурированные программы. В структурированных программах обычно легко прослеживается основной алгоритм, их проще понять любому читателю, они удобнее в отладке и менее чувствительны к ошибкам программирования. Все эти свойства являются следствием важной особенности подпрограмм, каждая из которых представляет собой во многом самостоятельный фрагмент программы, связанный с основной программой лишь с помощью нескольких параметров. Самостоятельность подпрограмм позволяет локализовать в них все детали программной реализации того или иного алгоритмического действия, и поэтому изменение этих деталей, например, в процессе отладки обычно не приводит к изменениям основной программы.

Процедура (подпрограмма)

Процедурой в Delphi называется особым образом оформленный фрагмент программы, имеющий собственное имя. Упоминание этого имени в тексте программы приводит к активизации процедуры и называется ее вызовом. Сразу после активизации процедуры начинают выполняться входящие в нее операторы, после выполнения последнего из них управление возвращается обратно в основную программу, и выполняются операторы, стоящие непосредственно за оператором вызова процедуры.

Подпрограмма, как и программа, состоит из отдельных разделов или блоков, которые должны располагаться в следующем порядке:

[ — заголовок подпрограммы;              ]

[ — раздел объявления констант;        ]

[ — раздел объявления типов;              ]

[ — раздел объявления переменных;  ]

  — тело программы.

Разделы, названия которых заключены в квадратные скобки, могут отсутствовать в программе.

В данный момент мы изучим назначение и правила описания только некоторых разделов подпрограммы.

Заголовок подпрограммы

Заголовок подпрограммы состоит из зарезервированных слов Prosedure и названия события (напр. OnClick). Завершается заголовок, так же как и любая другая строка программы, точкой с запятой. Заголовок подпрограммы генерируется автоматически и изменению не подлежит.

Тело подпрограммы

Тело подпрограммы начинается словом Begin, а заканчивается словом End с точкой с запятой, которая является признаком конца подпрограммы. Границы начала и конца тела подпрограммы также как и заголовок генерируется автоматически.

Идентификаторы, участвующие в программах

При написании программ возникает необходимость обозначения, как самой программы, так и переменных, констант, типов данных, функций, употребляемых в ее тексте. Для этой цели используются идентификаторы (имена). Идентификатор — это последовательность цифр и латинских букв, удовлетворяющая следующим условиям:

·     должен начинаться с латинской буквы или с символа подчеркивания;

·     Delphi не различает большие и малые буквы;

·     начиная со второй позиции можно применять наряду с буквами цифры;

·     пробел в Delphi является разделителем и не может присутствовать внутри идентификатора;

·     зарезервированные слова (такие как Begin, End, Unit, Program и др.) в качестве идентификатора использовать запрещено;

·     максимальная длина идентификатора при сравнении 63 символа.

Раздел объявления переменных

 

Переменными называются параметры программы, значения которых могут изменяться в процессе ее выполнения. Все используемые в программе переменные должны быть идентифицированы и объявлены с указанием их типов в разделе объявления переменных. Этот раздел начинается служебным словом Var

Var <список переменных _1>: < тип_1>;

       <список переменных_2>: <тип_2>;

Действительные переменные (числа с плавающей точкой) объявляются с помощью служебного слова Real, целые — с помощью служебного слова Integer. Например:

Var a: Integer;

       b, gh5: Real;

В этом примере объявлено три переменных. Переменная "а" целого типа и переменные "b", "gh5" вещественного типа. Объявить переменную, это значить зарезервировать в памяти машины ячейку памяти для хранения любого числа. Обратиться к этой ячейке можно по имени (идентификатору), которое выбрано Вами в разделе объявления переменных.

Операция присваивания

Операция присваивания применяется для записи информации в объявленную в программе переменную. Знак операции присваивания ":=" (двоеточие равно). Например:

с:=2006;

При выполнении этой операции число 2006 заносится в ячейку памяти под именем "с". Прочесть информацию из ячейки памяти "с" можно просто указав в программе имя этой переменной.

Ввод информации

Ввод информации  достигается происходит через визуальные компоненты Edit и MaskEdit

 Мы рассмотрим компонент Edit.

Компонент класса TEdit представляет собой однострочный редактор текста. С его помощью можно вводить и/или отображать достаточно длинные текстовые строки.

Центральным свойством компонента является Text, которое представляет собой отображаемую компонентом строку. С помощью обработчика события onchange программа может контролировать вводимый пользователем текст и при необходимости фильтровать его, игнорируя недопустимые символы.

Свойства компонента:

property AutoSelect: Boolean;

Указывает, будет ли выделяться весь текст в момент получения компонентом фокуса ввода

property AutoSize: Boolean;

Если содержит True и BorderStyle=bsSingle,

высота компонента автоматически меняется при изменении свойства Font. Size

TBorderStyle =

bsNone..bsSingle;

property BorderStyle: TBorderStyle;

Определяет стиль обрамления компонента:

bsNone - нет обрамления; bsSingle - компонент

обрамляется одной линией

property CanUndo: Boolean;

Содержит True, если сделанные пользователем изменения в тексте Text можно убрать методом Undo

TEditCharCase = (ecNormal,

ecUpperCase, ecLowerCase) ;

Определяет автоматическое преобразование высоты букв: ecNormal - нет преобразования; ecUpper

property CharCase: TEditChar

Case;

Case - все буквы заглавные; ecLowerCase - все буквы строчные. Правильно работает с кириллицей

property HideSelection: Boolean;

Если содержит False, выделение текста сохраняется при потере компонентом фокуса ввода

property MaxLength: Integers;

Определяет максимальную длину текстовой строки. Если имеет значение 0, длина строки не ограничена

property Modified: Boolean;

Содержит True, если текст был изменен

property OnChange: TNotifyEvent;

Определяет обработчик события OnChange, которое возникает после любого изменения текста

property OEMConvert: Boolean;

Содержит True, если необходимо перекодировать текст из кодировки MS-DOS в кодировку Windows и обратно

property PasswordChar: Char;

Если символ PasswordChar определен, он заменяет собой любой символ текста при отображении в окне. Используется для ввода паролей

property Readonly: Boolean;

Если содержит True, текст не может изменяться

property SelLength: Integers;

Содержит длину выделенной части текста

property SelStart: Integers;

Содержит номер первого символа выделенной части текста

property SelText: Strings-

Содержит выделенную часть текста

property Text: String;

Содержит весь текст

Методы компонента:

 procedure Сlears;

Удаляет весь текст

procedure ClearSelection;

Удаляет выделенный текст

procedure ClearUndo;

Очищает буфер метода Undo

procedure CopyToClipboard;

Копирует выделенный текст в clipboard

procedure CutToClipboard;

Копирует выделенный текст в clipboard, после чего удаляет выделенный текст из компонента

function GetSelTextBuf(Buffer: PChar; BufSize: Integer): Integers;

Копирует не более BufSize символов выделенного текста в буфер Buffer

procedure PasteFromClipboard;

Заменяет выделенный текст содержимым Clipboard, а если нет выделенного текста, копирует содержимое Clipboard в позицию текстового курсора

procedure SelectAll;

Выделяет весь текст

procedure SetSelText-Buf(Buffer: PChar);

Заменяет выделенный текст содержимым Buffer, а если нет выделенного текста, копирует содержимое Buffer в позицию текстового курсора

procedure Undo;

Восстанавливает текст в том виде, в каком он был перед последним получением компонентом фокуса ввода

Свойство CanUndo и методы СlearUndo и undo впервые введены в версии Delphi 4.

Пример использования:

G := Edit1.Text;

Переменной G был присвоен текст введенный в компоненте Edit1.

Любой введенный текст может быть присвоен какой-либо переменной, но существует одна проблема: вводимый текст воспринимается Delphi как строка (набор символов). Для того чтобы ввести число, надо преобразовать строку в число существуют функции перевода:

 StrToInt — перевод строки в целое число;

StrToFloat— перевод строки в вещественное число;

Пример использования:

G := StrToInt(Edit1.Text);

Переменной G было присвоено целое число введенное в компоненте Edit1. Если  было введено не целое число, то появится сообщение об ошибке.

Выполнение процедуры (подпрограммы)

Выполнение процедур обеспечивается командными компонентами, одним из них является командная кнопка — Button.

Свойства компонента:

 

 

Свойство

Описание

 

 

 

Name

Имя компонента. Используется в программе для доступа к компоненту и его свойствам

 

 

 

Caption

Текст на кнопке

 

 

 

Enabled

Признак доступности кнопки. Кнопка доступна, если значение свойства равно True, и недоступна, если значение свойства равно False

 

 

 

Left

Расстояние от левой границы кнопки до левой границы формы

 

 

 

Top

Расстояние от верхней границы кнопки до верхней границы формы

 

 

 

Height

Высота кнопки

 

 

 

Width

Ширина кнопки

 

property Cancel: Boolean;

Если имеет значение True, событие OnClick кнопки возникает при нажатии клавиши Esc

 

property Default: Boolean;

Если имеет значение True, событие OnClick кнопки возникает при нажатии клавиши Enter

 

type TModaiResult = Low(Integer)..High(Integer) ; property ModalResult: TModaiResult;

Определяет результат, с которым было закрыто модальное окно (см. ниже пояснение)

 

В терминологии Windows модальными окнами называются такие специальные окна, которые, раз появившись на экране, блокируют работу пользователя с другими окнами вплоть до своего закрытия. Обычно с их помощью реализуется диалог, требующий от пользователя принятия некоторого решения. Для этого в состав модального окна включается несколько кнопок. Если у кнопки определено свойство ModalResult, нажатие на нее приводит к закрытию модального окна и возвращает в программу значение ModalResult как результат диалога с пользователем. В Delphi определены следующие стандартные значения ModalResult:

mrNone Модальное окно не закрывается

mrlgnore Была нажата кнопка Ignore

mrOk Была нажата кнопка Oк

mrYes Была нажата кнопка Yes

mrCancel Была нажата кнопка Cancel

mrNo Была нажата кнопка No

mrAbort Была нажата кнопка Abort

mrAll Была нажата кнопка All

mrRetry Была нажата кнопка Retry

В отличие от большинства других видимых компонентов кнопка TButton является компонентом самой Windows и поэтому не может изменять свой цвет произвольным образом - она его меняет вместе с изменением палитры Windows. Кнопка всегда имеет системный цвет clBtnFace и не имеет свойства Color. Шрифт надписи на кнопке может менять свой стиль и размер, но компонент игнорирует изменение его цвета.

Кнопки TButton широко используются для управления программами. Связанный с кнопкой алгоритм управления реализуется в обработчике события OnClick.

Для запуска этого обработчика достаточно дважды щелкнуть на компоненте и появившейся процедуре написать текст программы. Вот с этой процедурой мы и будет с вами работать.

Procedure TForm1.Button1Click(Sender: TObject);

Begin

End;

Вывод информации

Компоненты класса TLabel (метка) предназначены для размещения на форме различного рода текстовых надписей. Для этого служит центральное свойство компонента - Caption. С помощью свойства Font можно разнообразить вид надписи (оба эти свойства достались метке от предка TGraphicControl и поэтому не отображаются в таблице ниже). С компонентом может быть связан оконный управляющий элемент, который выбирается при нажатии Alt+Буква, где Буква - выделенная подчеркиванием буква в тексте метки. Такие символы в терминологии Windows называются акселераторами.

Свойства компонента (кроме унаследованных от TGraphicControl):

type TAlignment =

(taLeftJustify,

taRightJustify, taCenter) ; property lignment:

TAlignment;

Определяет выравнивание текста по горизонтали относительно границ компонента (для AutoSize=False):

taLeftJustify - Прижат К левой границе; taRightJustify - прижат к правой границе; taCenter - выровнен по центру

property AutoSize: Boolean;

 

Указывает, будет ли метка изменять свои размеры в зависимости от помещенного в ее свойство Caption текста: True - будет

property FocusControl:

TWinControl;

TTextLayout = (tITop,

tICenter, tiBottom) ;

property Layout:

TTextLayout;

Содержит имя оконного компонента, который связан с меткой-акселератором Определяет выравнивание текста по вертикали относительно границ метки: tiTop - текст располагается вверху; ticenter - текст центрируется по вертикали; tiBottom - текст располагается внизу

property ShowAccelChar:

Boolean;

Если содержит True, символ & в тексте метки предшествует символу-акселератору

property Transparent: Boolean;

Определяет прозрачность фона метки. Если False, фон закрашивается собственным цветом Color, в противном случае используется фон родительского компонента

property Wordwrap: Boolean;

 

Разрешает/запрещает разрыв строки на границе слова. Для вывода многострочных надписей задайтеAuroSize=False, wordwrap=True и установите подходящие размеры метки

Метка Label может отображать длинную текстовую строку своего свойства Caption в виде нескольких строк: для этого установите в AutoSize значение False, задайте достаточно большие размеры метки и поместите в Wordwrap значение True. Для отображения действительно многострочного текста используется компонент TMemo

Пример использования:

Label1.Caption := G

В компоненте Label1 отображаются символы из переменной G.

Компонент Label1 позволяет выводить только данные строкового типа (наборы символов), но не числа. Для перевода из численных типов данных в строковый используются следующие функции:

IntToStr — перевод целого числа в строку;

FloatToStr — перевод вещественного числа в строку;

Эти обратные операции от операций перевода для компонента ввода Edit.

Пример использования:

Label1.Caption := IntToStr(G);

На компоненте Label1 отображается целое число взятое из переменной G.

Арифметические операции

"+" — сложение

"-" — вычитание

"*" — умножение

"/" — деление

Некоторые стандартные функции

sin (x) — синус

cos (x) — косинус

sqrt (x) — корень квадратный

sqr (x) — квадрат числа

Выполнение программ и просмотр результатов ее выполнения

Для того чтобы осуществить выполнение программы в Delphi необходимо сначала разместить необходимые компоненты на форме (для этого нужно просто выбрать необходимый компонет в панели инструментов (вверху экрана), а затем поместить его на форму (щелкнув на ней мышкой)). Затем необходимо изменить нужные вам свойства и вызвать обработчик события OnClick (щелкнув дважды на кнопке Button). Далее набрать программный код и сохранить проект. Ну а потом отдать команду Delphi запустить проект: нажав на кнопку или  выбрав в меню: Run Run, или нажав на клавишу F9.

Для прекращения работы программы щелкните в вашей форме на значке   или нажмине комбинацию клаваш Alt+F4.

Примеры программ

№1

Интефейс (форма):

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

                                             

Запуск обработчика событий OnClick и набор программного кода:

Запуск программы (F9) и результат ее работы:

№2

Интерфейс (форма):

Запуск обработчика OnClick и набор программного кода:

Запуск программы и результат ее работы:

Контрольные вопросы

1.      Что такое модуль и из каких разделов он состоит?

2.      Зачем нужны процедуры и из каких разделов они состоят? Какие разделы являются обязательными?

3.      Что такое идентификатор?

4.      Какие ограничения накладываются на идентификатор?

5.      Кратко охарактеризуйте следующие визуальные компоненты: Edit, Label, Button?

6.      Каковы основные свойства компонентов  Edit, Label, Button?

7.      Что значат функции: StrToFloat, StrToInt, FloatToStr, IntToStr?

8.      Назовите известные вам арифметические операции и функции.

9.      Как объявляются целые переменные? вещественные переменные?

10.  Как определить значение переменной?

11.  Опишите оператор присваивания и правила его использования.

На главную.
Используются технологии uCoz