- •Программирование на языке
- •Object pascal в среде delphi
- •(Лабораторные работы)
- •Содержание
- •Лабораторная работа 1. Программирование линейных алгоритмов
- •1.1. Базовые элементы языка Object Pascal
- •1.1.1. Алфавит языка
- •1.1.2. Синтаксис языка
- •1.1.3. Основные типы данных
- •1.1.4. Оператор присваивания
- •1.1.5. Целые типы данных
- •1.1.6. Вещественные (действительные) типы данных
- •1.1.8. Cимвольные типы данных
- •1.1.9. Строкоые типы данных
- •1.1.10. Арифметические вычисления
- •1.2. Интегрированная среда разработчика delphi
- •1.3. Структура программ delphi
- •Interface
- •Implementation
- •1.4. Пример написания программы
- •1.4.2. Изменение заголовка формы
- •1.4.6. Написание программы обработки события
- •1.4.7. Написание программы обработки события
- •2.3. Оператор выбора Case
- •2.4. Составной оператор
- •2.5. Некоторые возможности, предоставляемые Delphi для организации разветвлений
- •Interface
- •Implementation
- •2.7. Индивидуальные задания
- •3.1.2. Организация цикла с помощью оператора repeat
- •3.2. Организация вложенных циклов
- •3.3. Организация прерывания цикла
- •3.4. Алгоритмы, использующие рекуррентную последовательность
- •3.5. Пример написания программы
- •Interface
- •Implementation
- •3.6. Индивидуальные задания
- •Лабораторная работа 4. Программирование с использованием массивов
- •4.1. Работа с массивами
- •4.2. Операции над массивами
- •4.3. Примеры часто встречающихся алгоритмов работы с массивами
- •4.4. Компонент tStringGrid для ввода/вывода массивов
- •4.5. Пример написания программы с использованием tStringGrid
- •Interface
- •Implementation
- •4.6. Компонент tEdit для ввода одномерных массивов
- •4.7. Пример написания программы с использованием tEdit
- •4.7. Компонент tMemo для ввода/вывода одномерных массивов
- •4.8. Пример написания программы с использованием tMemo
- •4.9. Индивидуальные задания
- •Лабораторная работа 5. Программирование с использованием строковых данных
- •5.1. Работа со строками
- •5.2. Пример написания программы
- •Лабораторная работа 6. Программирование с использованием подпрограмм и модулей
- •6.1. Описание подпрограмм
- •6.2. Передача данных через формальные параметры
- •6.3. Процедурные типы
- •6.4. Область видимости переменных
- •6.5. Пример написания программы с использованием процедур
- •Interface
- •Implementation
- •6.6. Использование модулей
- •6.7. Пример написания программы с использованием модуля
- •6.7.1. Создание модуля
- •6.7.2. Подключение модуля
- •Implementation
- •6.8. Индивидуальные задания
- •Лабораторная работа 7. Построение графиков
- •7.1. Компонент tChart
- •7.2. Пример написания программы
- •7.4. Индивидуальные задания
- •Лабораторная работа 8. Работа с файлами
- •8.2. Прямая работа с файлами (классический способ)
- •Доступ к файлам
- •Подпрограммы для работы с файлами
- •Запись и чтение типизированных файлов
- •Запись и чтение нетипизированных файлов
- •8.3. Диалоги открытия и сохранения файлов
- •8.4. Пример написания программы
- •8.5. Индивидуальные задания
- •Средства отладки программ в delphi
- •Литература
4.4. Компонент tStringGrid для ввода/вывода массивов
В Delphi имеется возможность организовать ввод/вывод двухмерных и одномерных массивов с отображением их на форме. Для этого используют специальный компонент TStringGrid (находится на странице Additional), который предназначен для отображения информации в виде двухмерной (одномерной) таблицы каждая ячейка которой представляет собой окно однострочного редактора (аналогично окну TEdit). Доступ к информации осуществляется с помощью свойства Cells[ACol : Integer; ARow : Integer] : String, где ACol, ARow – индексы элемента двумерного массива. Свойства ColCount и RowCount устанавливают количество столбцов и строк в таблице, а свойства FixedCols и FixedRows задают количество столбцов и строк фиксированной зоны. Фиксированная зона выделена другим цветом, и в нее запрещен ввод информации с клавиатуры.
4.5. Пример написания программы с использованием tStringGrid
Задание: Двухмерный массив (матрица) вещественных чисел A, размером NxM, вводится с клавиатуры (компонент TStringGrid). Найти количество положительных элементов массива и их сумму, а также количество отрицательных элементов массива и их произведение.
Интерфейс программы приведен на рис. 4.1, а текст программы - на Листинге 4.1.
Рис. 4.1. Интерфейс программы
В программе для задания числа строк и столбцов матрицы использованы компоненты TSpinEdit (страница Samples). Использование этих компонентов очень удобно для ввода целых чисел, т.к. у них есть такие свойства как MinValue и MaxValue, с помощью которых можно задавать диапазон изменения значений в компоненте. В данной программе следует задать эти свойства как: MinValue=1, MaxValue=10. Это будет означать, что значение переменной в поле TSpinEdit будет изменяться от 1 и до 10. Подстройка числа столбцов и строк таблицы TStringGrid в зависимости от значений переменных TSpinEdit выполняется в обработчиках OnChange (см. Листинг 4.1).
Заметим, что вместо компонента TSpinEdit можно использовать комбинацию двух компонентов TEdit и TUpDown (компонент TUpDown находится на странице Win32). Для этого надо поместить на форму эти два компонента по отдельности, а затем с помощью свойства Associate связать TUpDown с TEdit. Визуально это будет выглядеть так, что как будто компонент TUpDown "перепрыгнет" к TEdit и займет свое положение в конце поля TEdit.
Для упрощения и ускорения процесса ввода данных в ячейки таблицы можно сделать так, чтобы курсор автоматически переходил в следующую ячейку таблицы, например, в результате нажатия клавиши <Enter>. Сделать это можно при помощи процедуры обработки события OnKeyPress для таблицы. На эту же процедуру можно возложить задачу фильтрации данных, вводимых в ячейку таблицы.
В нашем случае надо разрешить:
-ввод в ячейку только цифр;
-ввод минуса только на первой позиции, т.е. когда ячейка пустая;
-точку автоматически заменять на запятую;
-ввод только одной запятой.
-при нажатии в ячейке клавиши <Enter>, курсор должен переходить на следующую ячейку, расположенную справа.
Текст процедуры обработки события OnKeyPress для таблицы приведен также на Листинге 4.1.
Листинг 4.1
unit Unit1;