Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ООП_ЛР1,2_A5_Часть1.doc
Скачиваний:
44
Добавлен:
08.11.2019
Размер:
1.7 Mб
Скачать

5. Выражения и операции

Язык Object Pascal полностью поддерживает все возможности предыдущих версий Паскаля по обработке выражений и множеству используемых для этого операций. Имеются два нововведения:

  • операции as и is, позволяющие осуществить доступ к информации о типах времени выполнения (RTTI – Run Time Type Information) для классов и объектов;

  • правила преобразования типов и выполнения операций при вычислении выражений, в которых присутствуют операнды нового типа Variant.

Операции as и is позволяют определять во время выполнения принадлежность объектов к определенному классу или одному из его потомков, а также осуществлять безопасное преобразование классовых типов. Такие действия широко используются при работе с компонентами DELPHI. Они рассматриваются в лабораторной работе № 3, посвященной изучению основ объектно-ориентированного программирования в языке Object Pascal.

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

Задание 3. В программе заданы 4 подряд идущих переменных X,Y,Z,W, имеющих типы соответственно Byte, Word, Longint, Integer. Подготовить и выполнить программу вывода адресов и размеров памяти (в байтах) этих переменных в виде таблицы следующей формы:

Адрес

Размер

Byte

Word

Longint

Integer

.

Примечание. Для вычисления адресов можно воспользоваться операцией @. Чтобы вывести значение адреса на экран, следует преобразовать адрес в целое число, например типа Longint, с помощью функции IntToStr.

Чтобы найти размеры областей памяти, отводимых под переменные, следует сравнить адрес текущей переменной и адрес следующей переменной. Для нахождения размера памяти последней переменной нужно после нее записать какую-либо дополнительную переменную.

Для создания таблицы в форме следует использовать компоненту StingGird, которая расположена на странице Additional. С помощью инспектора объектов удалить линейку скроллинга таблицы и задать ее размеры с помощью свойств RowCount и ColCount.

Содержимое каждой ячейки таблицы задается свойством Cells. При этом положение каждой ячейки определяется двумя индексами, задающими номер столбца и строки. Нумерация столбцов и строк начинается с нуля.

6. Операторы

По сравнению с версией Turbo/Borland Pascal в Object Pascal в операторах языка сделаны следующие дополнения:

1. В семантике оператора case введены два изменения, которые позволяют получить на этапе компиляции более эффективный машинный код для этого оператора:

  • диапазоны, задаваемые списками констант, не должны пересекаться;

  • списки констант в альтернативных ветвях оператора case должны располагаться в возрастающем порядке.

Первое требование является обязательным, второе – нет. Однако при его невыполнении сгенерированный компилятором код не будет оптимальным.

2. Введен новый оператор try, который предназначен для обработки исключительных ситуаций и имеет две разновидности. Конструкция try…except служит для обработки конкретных исключительных ситуаций. Конструкция try…finally обеспечивает выполнение группы операторов вне зависимости от возникновения исключительной ситуации.

Примечание. Обработке исключительных ситуаций посвящена отдельная лабораторная работа.

Состав основных групп операторов языка и их функции не претерпели изменений.

Задание 4. Подготовить и выполнить программу, выполняющую ввод целого числа и вывод символа в ANSI-коде, соответствующего этому числу. Если символа нет, то должно быть выведено сообщение “Символа нет”. Управляющие символы не учитываются.

Примечание. Ввод числа и вывод результата выполнить с помощью компонент типа Edit. Строку ввода исходного числа пометить текстом “Число”, а строку вывода результата – текстом “Символ”.

Задание 5. Внести изменения в предыдущую программу, чтобы она при вводе каждого очередного знака распознавала его тип и выдавала следующие сообщения: “Цифра”, “Строчная буква”, “Прописная буква”, “Управляющий символ”, “Другой символ”.

Задание 6. Подготовить и выполнить программу нахождения всех положительных делителей целого числа (кроме единицы и самого числа).

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

Примечание 2. Для ввода исходного числа в форме использовать строку ввода Edit, которую пометить текстом “Целое число”. Для вывода делителей числа использовать компоненту ListBox (Список) страницы Standard. 1 Выполнение программы начать нажатием кнопки “Операция”. Для вывода элементов списка использовать свойство Items. компоненты ListBox. С целью многократного использования программы без перезагрузки перед началом поиска делителей очистить список с помощью метода Clear свойства Items. При обнаружении очередного делителя записывать в список его порядковый номер и значение с помощью метода Add. Если делителей у числа нет, вывести сообщение “Исходное число – простое”.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]