Смекни!
smekni.com

Обработка матриц (стр. 3 из 5)

Описание подпрограммы — это только описание, которое никогда не выполняется само по себе и может располагаться в любом месте исходного текста (но обязательно до первого вызова подпрограммы). Вызывается процедура или функция только внутри логического блока begin/end с указанием конкретных значений для каждого из ее параметров.

Способы вызова подпрограмм

Подпрограммы с точки зрения прикладного программиста вызываются всегда одинаково, но машинный код, который создается компилятором, для разных подпрограмм может отличаться. Это зависит от целей применения конкретной подпрограммы. Она может использоваться:

- в рамках разрабатываемой прикладной программы;

- как функция, доступная из динамической библиотеки .DLL;

- как процедура, вызываемая из внешних программ или из Windows и т. д.

Для каждого из таких нестандартных случаев вслед за заголовком подпрограммы (за точкой с запятой) должно следовать одно из ключевых слов. Хотя в Паскале не допускается использование одинаковых названий для переменных, констант и других идентификаторов, для локальных переменных и подпрограмм делается исключение. Так как в Паскале предъявляются строгие требования к типам данных, обращаться к подпрограмме, формальные параметры которой имеют тип Integer, с фактическими параметрами, имеющими тип Real, нельзя. Однако при решении задачи подчас бывает необходимо, чтобы подпрограмма с одним и тем же именем работала с разными типами данных. Когда в тексте программы указывается имя ранее описанной подпрограммы с фактическими параметрами, то выполнение основной части программы останавливается и управление передается подпрограмме, до тех пор пока в ходе работы не будет достигнут ее конец (зарезервированное слово end). После этого управление передается обратно в программу (или другую подпрограмму), вызывавшую данную подпрограмму.

Хотя переменные, описанные как процедурные типы, фактически являются указателями, от программиста эта их особенность скрыта. Но Паскаль разрешает также явно описывать переменные-указатели на подпрограммы. Для этого в языке введен особый тип данных Pointer, представляющий собой указатель на информацию, не имеющую конкретного типа. Получение адреса начала подпрограммы выполняется с помощью операции @, так же, как и для получения адреса любых других данных.

Операторы

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

Условный оператор

Один из важнейших операторов Паскаля — условный оператор. Он позволяет изменить порядок выполнения операторов в зависимости от некоторого условия, представляющего собой логическое выражение типа Boolean. Если это значение равно True, то выполняется одна группа операторов, если оно равно False, то выполняется другая группа операторов или не выполняется ничего.

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

Оператор цикла

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

Оператор перехода

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

goto метка;

Компоненты первостепенной важности расположены на панели Standard (Стандартные) палитры компонентов (рис. 4).

Они соответствуют основным элементам управления Windows, без которых не обходится ни одна программа.Все компоненты Delphi 7 хранятся в библиотеке визуальных компонентов VisualComponentLibrary (VCL). Каждый из компонентов, а также форма (будущее окно) описаны соответствующими классами Паскаля: к названию компонента добавляется буква Т; например, форма описывается классом TForm, кнопка (компонент Button) — классом TButton и так далее.

Создаваемая в среде Delphi 7 программа состоит из нескольких файлов. Это файлы с исходными текстами на Паскале и файлы описаний форм. Все они связаны друг с другом. Кроме того, в среде Delphi 7 имеется множество настроек, которые желательно сохранять на жестком диске в промежутках между сеансами работы с системой.

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

Чтобы сохранить текущий проект, надо выполнить команду File > • Save Al l

(Файл > • Сохранить все) или щелкнуть на одноименной командной кнопке. Сначала разработчику будет предложено сохранить файл с исходным текстом (Unitl.pas), а затем — файл проекта Project! с расширением .DPR. Сохранять их лучше в отдельном каталоге, специально отведенном для данного проекта. В этом же каталоге компилятор в будущем создаст и исполнимое приложение. Теперь можно приступать к этапу проектирования пользовательского интерфейса — подготовке внешнего вида окна программы и размещению на нем элементов управления. Для этого надо переключиться в Проектировщик форм с помощью клавиши F12 или командной кнопки Toggle Form/Uni t (Выбрать Форму/Модуль). Проектировщик форм работает по принципу WYSIWYG, в соответствии с которым окно созданной программы будет выглядеть в точности так, как оно было подготовлено в Проектировщике форм. Например, изменить размер формы можно стандартным способом для системы Windows — протягиванием мыши. Создаваемая в Проектировщике форма — это только внешнее представление будущего окна, а не работоспособное приложение.

Любой объект Проектировщика форм доступен в исходном тексте программы по его имени. Имя (или название) объекта — это одно из его свойств, которые можно изменять и настраивать в Инспекторе объектов. Соответствующее свойство называется Name (Имя). Оно имеется у всех объектов без исключения и расположено в Инспекторе объектов в категории Miscellaneous (Дополнительныв) (рис. 5).

Первоначально значением этого свойства является строка Forml, сгенерированная системой Delphi 7 автоматически. Если ее изменить, например на MyForm, и нажать клавишу ENTER, то в проекте произойдут следующие изменения.

- Заголовок формы изменится с Forml на MyForm. Система Delphi 7 считает, что заголовок окна совпадаете его названием, пока разработчик не изменит заголовок явно.

- Тип формы в файле Unitl.pas изменится с TForml наТтуРогт.

- Имя переменной Forml изменится на MyForrn.

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

Заголовок формы — это свойство Caption (Заголовок). В Инспекторе объектов оно находится в категории Visua l (Внешний вид). Здесь можно ввести строку

Пример. В свойстве Name (Имя) можно использовать только латинские буквы и цифры, так как содержимое этого свойства соответствует названию переменной Паскаля — идентификатору. Заголовок — это произвольная строка, не имеющая прямого отношения к программированию.

На форме размешаются объекты, соответствующие компонентам с палитры компонентов. Чтобы создать на форме текстовое ноле, надо:

- выбрать панель Standard (Стандартная);

- щелкнуть на кнопке Edit (Текстовое поле);

- щелкнуть на том месте формы, где требуется поместить текстовое ноле.

В этом месте появится новый элемент управления (рис. 6).

Черные маркеры по контуру объекта указывают, что он выделен. Эти маркеры предназначены для изменения размеров объекта с помощью мыши. По умолчанию в системе Delphi 7 принято, что название нового объекта совпадает с его заголовком. Это название создается средой Delphi по следующему принципу.

Берется название компонента (для формы это Form, для текстового поля — Edit и так далее), и к нему добавляется порядковый номер, начиная с единицы. Если теперь на форму поместить еще одно текстовое поле, то его названием будет Edit2,

Если теперь взглянуть на исходный текст класса TMyForm, то окажется, что в разделе private появилось новое поле:

Editl: TEdit;

Оно было добавлено средой Delphi 7 в описание класса TMyForm автоматически.

Создание работоспособной программы

Хотя пока задан только внешний вид главного окна, уже можно получить работоспособную программу. Если ее запустить, она позволит вводить в текстовые поля различные значения, щелкать на кнопке, менять размеры окна. Правда, выполнять суммирование введенных чисел программа пока не будет — это действие надо запрограммировать вручную.

Чтобы контролировать ход компиляции и создания готового приложения, надо в настройках среды Delphi 7 включить флажок Show compiler progress (Отображать ход компиляции) (рис. 7). Соответствующее диалоговое окно открывается командой TooU x Environment Options > Preferences (Сервис > Настройки среды > Предпочтения разработчика).