![]()
Главная Обратная связь Дисциплины:
Архитектура (936) ![]()
|
Событие и процедура обработки события
Реакцией на событие должно быть какое-либо действие. В Delphi реакция на событие реализуется как процедура обработки события. Таким образом, для того чтобы программа выполняла некоторую работу в ответ на действия пользователя, программист должен написать процедуру обработки соответствующего события. Следует обратить внимание на то, что значительную часть обработки событий берет на себя компонент. Поэтому программист должен разрабатывать процедуру обработки события только в том случае, если реакция на событие отличается от стандартной или не определена. В листинге В1 приведен текст функции обработки события onclick для командной кнопки Вычислить.Обратите внимание на то, как представлена программаФункция Button1click выполняет расчет скорости и выводит результат расчета в поле Label4. Исходные данные вводятся из полей редактирования Editl и Edit2 путем обращения к свойству Text. Вычисленное значение выводится в поле Label4 путем присваивания значения свойству Caption. Для преобразования чисел в строки используются функции IntToStr И FloatToStr.
80) Программа, написанная в среде Delphi при помощи языка Object Pascal, всегда состоит из нескольких модулей. Как минимум таких модулей должно быть два. Один модуль всегда является головной программой и имеет название program. Прочие модули играют вспомогательную и зависимую от головной программы или от других модулей роль и называются unit. Минимально структурированная программа имеет один модуль program и один модуль unit. Серьезные программы помимо модуля program могут содержать до нескольких десятков авторских модулей unit и большое количество ссылок на фирменные или разработанные как самим автором, так и другими разработчиками модули unit. Программа всегда начинает работу с модуля program, активизируя функционирование одного или нескольких зависимых модулей unit. Те в свою очередь могут активизировать другие модули unit и т. д. Исходный программный текст каждого модуля составляется на языке Object Pascal и помещается в отдельный файл, который всегда имеет расширение . pas. Текст модуля program имеет расширение . dpr. Полный программный текст любого модуля также имеет свою структуру, которая может включать блоки определения констант, внутренних структур описания типов, тексты процедур, функций и др.
Зарезервированные (служебные) слова. Этот класс состоит из слов, построенных только с помощью букв алфавита. Служебные слова можно использовать только по прямому назначению, т. е. так, как их назначение определил разработчик языка. Ни в каком другом виде, например в качестве имен переменных, их использовать нельзя. Значение –это постоянная величина или структурный комплекс постоянных величин, выраженных в явном виде. Значение не имеет имени. Примеры значений: Константа –это ячейка, в которой всегда хранится одно значение. Константы не могут быть изменены в ходе выполнения программы. В этом смысле константа отвечает общепринятому определению постоянной (неизменяемой) величины. Всякая константа должна быть описана, т. е. должно быть явно указано ее значение. Значение константы неявно определяет ее тип. Необходимо отметить, что в языке существуют так называемые типизованные константы, которые в ходе прохождения программы могут быть изменены. Тип константы указывается в специальной языковой конструкции, начинающейся словом Type (тип). Переменная –это ячейка, в которой в каждый момент времени хранится одно значение или не хранится ничего. Переменная в любой момент времени может быть изменена программой. Всякая переменная должна быть описана. т . е. должен быть явно указан ее тип. Тип переменной указывается в специальной языковой конструкции, начинающейся словом Var (от английского variable– постоянная). Тип –это структура и описание множества значений, которые могут быть присвоены переменной. Оператор присваивания –это команда, предназначенная для изменения содержимого ячейки. С его помощью происходит изменение значения переменной (или типизованной константы). Синтаксис оператора присваивания:
81) Object pascal:основные синтаксические единицы В программе используются символы таблицы ASCII. Символ пробел (space) и управляющие символы (control characters) с кодами 0..31 называются «пустыми» символами (blanks) и используются, наряду с комментариями, в качестве разделителей (separators). Программа состоит из лексем (token), которые отделяются друг от друга разделителями (separator). Лексема – это минимальная значимая единица текста программы. Из лексем составляются: ü описания (declarations); ü выражения (expressions); ü операторы (statements). Лексемы подразделяются на следующие категории: ü специальные символы (special symbols); ü идентификаторы (identifiers); ü зарезервированные слова (reserved words); ü директивы (directives); ü числа (numerals); ü метки (labels); ü строки символов (character string). Специальные символы – те же, что и в Borland Pascal: # $ & ' ( ) * + , – . / : ; < = > @ [ ] ^ { } К специальным символам относятся также следующие пары символов: (* (. *) .) .. // := <= >= <> Новая пара символов – это //,используемая для однострочного комментария. Идентификаторы– составляются по тем же правилам, но длина идентификатора может быть любой. В идентификаторе распознаются первые 255 символов.
82) Object pascal:основные операторы языка В реальных программах выполнение операций не бывает строго последовательным: постоянно требуются различные переходы, ветвления, повторения и т.д. Собственно за переход, в классическом варианте, отвечает небезызвестная инструкция безусловного перехода goto, которая в Pascal используется совместно с метками, декларируемыми в заголовочной части программы при помощи ключевого слова label. Использование инструкции безусловного перехода восходит корнями к тем временам, когда создавались первые высокоуровневые языки программирования, в том числе и Pascal. Она досталась им в наследство от низкоуровневых языков типа Assembler, в которых описание программы создавалось в виде, удобным для машины. Но на сегодня такой подход уже не востребован и вышел из употребления, вместе с безусловным переходом и инструкцией goto. В тех же случаях, когда наоборот, по правилам языка можно использовать всего лишь одно выражение или оператор, а нужно несколько, используют составные операторы. Составной оператор представляет собой группу из произвольного числа любых инструкций, ограниченных ключевыми словами begin и end: begin <инструкция 1>; <инструкция 2>; ... <инструкция N>; end; Сколько бы ни входило инструкций в такой блок, для компилятора он воспринимается как единое целое и может располагаться в любом месте программы, где допускается наличие хотя бы одного оператора. Составные операторы могут вкладываться один в другой, при этом глубина таких вложений в Object Pascal не ограничена.
83) Object pascal: условный оператор и оператор выбора CASE. Условный оператор удобен в тех случаях, когда необходимо проверить 1-2-3 варианта. При большем числе получается слишком громоздкая и неудобная для восприятия конструкция из множества вложенных инструкций. Очевидно, что код получается слишком громоздким, и малоэффективным. В таких случаях на помощь приходит семафор - оператор множественного выбора case. Он состоит из выражения, являющегося селектором, списка вариантов, представленного константами или значениями, и необязательной части else. Таким образом, формат оператора case таков: case [выражение-селектор] of <значение 1>: <код для значения 1>; <значение 2>: <код для значения 2>; ... <значение N>: <код для значения N>; [else <код для непредусмотренных явно значений>;] end Единственным ограничением семафора, в сравнении с условным оператором, является то, что в качестве селектора могут выступать лишь данные порядкового типа, скажем, целым числом или же символом. Впрочем, для подавляющего числа случаев этого достаточно. Инструкция выбора выполняется следующим образом: вначале, при необходимости, вычисляется значение селектора, затем производится последовательный обход вариантов на предмет совпадения с селектором. В случае совпадения, выполняется инструкция, предусмотренная для этого варианта, после чего выполнение оператора выбора заканчивается. Если же ни один из перечисленных вариантов не совпал со значением селектора (для нашего случая - если x меньше 1 или больше 5), то либо оператор завершается без каких-либо действий, либо, при наличии блока else, выполняются заданные в нем инструкции.
![]() |