- •Введение в конструирование программ
- •Пенза 2006 г.
- •Предисловие
- •1 Обработка информации на компьютере
- •1.1 Модель обработки информации на компьютере
- •1.2 Основные объекты языка программирования
- •1.2.1 Синтаксические элементы языка программирования
- •1.2.2. Значения и типы
- •1.2.3. Константы и переменные
- •1.2.4. Выражения
- •1.2.5. Операторы
- •1.3 Лабораторные задания
- •1.3.1 Логическая разминка
- •1.3.2 Реализовать схемы программ на языке Object Pascal
- •2 Структурное конструирование программ
- •2.1 Простая программа
- •2.2 Консольное приложение
- •2.2.1 Создание, сохранение и загрузка программы
- •2.2.2 Компиляция и выполнение программы
- •2.3 Лабораторные задания
- •2.3.1 Составление простых программ
- •2.3.2 Выполните трассировку и определите результаты работы программы
- •2.3.3 Программирование с использованием управляющих структур
- •2.4 Подпрограммы
- •2.4.1 Глобальные данные
- •2.4.2 Способы передачи параметров
- •2.4.3 Функции
- •2.4.4 Процедуры
- •2.4.5 Значения параметров по умолчанию
- •2.4.6 Перегрузка функций
- •2.4.7. Рекурсивные подпрограммы
- •2.4.8. Передача наименования подпрограммы как параметра
- •2.5 Отладка программ
- •2.6 Лабораторные задания. Подпрограммы
- •2.6.1 Конструирование подпрограмм
- •2.6.2 Разработка рекурсивных подпрограмм
- •2.7. Модули
- •Interface {интерфейс модуля}
- •Implementation {реализация}
- •Initialization {инициализация}
- •3. Структуры данных
- •3.1. Массивы
- •3.1.1. Действия над массивами
- •I, j : byte; { индексы элементов массивов }
- •3.1.2 Передача массивов в качестве параметров
- •3.1.2.1. Формальные параметры как массивы с фиксированными размерами
- •3.1.2.2. Формальные параметры как массивы со «свободными» размерами
- •3.1.2.3. Определение наименьшего/наибольшего значения массива
- •3.1.3 Лабораторные задания
- •3.1.3.1 Одномерные массивы
- •3.1.3.2. Двумерные массивы
- •3.2. Строки
- •3.2.1 Лабораторные задания
- •3.3. Записи
- •3.3.1 Лабораторные задания
- •3.4 Файлы.
- •3.4.1 Основные понятия и операции
- •3.4.2 Типизированные файлы
- •3.4.3 Текстовые файлы
- •3.4.4 Лабораторные задания
- •3.5 Динамические структуры данных. Указатели
- •3.5.1 Основные понятия и определения
- •3.5.2 Процедуры выделения и освобождения памяти
- •3.5.3 Односвязный список
- •3.5.4 Лабораторные задания. Указатели, список
- •3.5.5 Динамические массивы
- •4. Введение в объектно-ориентированное конструирование программ
- •4.1 Основные понятия и определения
- •4.2 Классы и объекты
- •4.2.1 Структура класса
- •4.2.2 Создание и уничтожение объектов
- •4.2.3 Пример. Класс – динамический массив
- •4.2.5 Операции с объектами
- •4.2.5.1 Оператор is
- •4.2.5.2 Оператор as
- •4.2.5.3 Копирование объектов одного класса
- •4.2.6 Свойства
- •4.2.7 Наследование и полиморфизм
- •4.2.8 События
- •4.2.9 Исключительные ситуации
- •4.2.9.1 Операторы try…except
- •4.2.9.2 Операторы try…finally
- •5. Визуальная разработка программ в delphi
- •5.1. Интегрированная среда разработки программ
- •5.1.1 Проект
- •5.2 Конструирование простого приложения
- •5.2.1 Интерфейс Пользователя
- •5.2.2 Визуальное конструирование
- •5.2.3 Реализация методов
- •5.2.4 Обработка исключительных ситуаций
- •5.2.5 Файлы приложения Калькулятор
- •5.3 Компоненты ввода/вывода данных StringGrid и Memo
- •5.3.1 Компонент StringGrid – таблица строк
- •5.3.1 Ввод массива. Компонент StringGrid
- •5.3.3 Компонент Memo – многострочное окно редактирования
- •5.3.4 Ввод массива. Компонент Memo
- •5.4 Немного о графике
- •5.4.1 Свойство Canvas. Построение графика функции
- •5.4.2 Событие OnPaint
- •Список литературы
- •Приложение а. Кратко о Delphi а.1 Свойства проекта
- •А.2 Программный код пустой формы
- •А.3 Главная форма
- •А.3.1 Свойства главной формы
- •А.3.2 События главной формы
- •А.4 Компоненты Delphi
- •Приложение b. Приложение «Калькулятор»
5.3.1 Ввод массива. Компонент StringGrid
Используем компонент StringGrid (Massiv: TStringGrid;) для ввода значений элементов массива (A: array[1..N] of integer;).
Шаг 1. Интерфейс Пользователя
Р азмещаем компонент StringGrid на форме.
В Инспекторе объектов определяем значения следующих свойств
-
Свойство
Значение
Комментарий
ColCount
10
Количество столбцов
DefaultColWidth
40
Ширина столбца (по умолчанию)
FixedCols
0
Количество фиксированных столбцов
FixedRows
0
Количество фиксированных строк
RowCount
1
Количество строк
Шаг 2. Обработка события OnKeyPress компонента StringGrid
procedure TForm1.MassivKeyPress(Sender: TObject; var Key: Char);
begin
case Key of
#8,'0'..'9' : ; ; // можно ввести числа 0..9 и удалить предыдущий
// символ ( #8 – клавиша Backspace)
#13: // клавиша Enter
if Massiv.Col < Massiv.ColCount-1
then
Massiv.Col := Massiv.Col + 1; // курсор устанавливается в
// следующий столбец
else
key := Chr(0); // не обрабатывать нажатие других клавиш
end;
end;
Шаг 3. Формирование массива из строк компонента StringGrid
Поместим этот код в обработчик события (например, OnClick – щелчок по кнопке), которой вызывается после заполнения ячеек компонента StringGrid
for i:= 1 to N do
if Length(Massiv.Cells[i-1, 0]) <>0
then // ячейка содержит непустую строку
a[i]:= StrToInt(Massiv.Cells[i-1,0]) // преобразуем строку в число и
// помещаем в массив
else
a[i] := 0; // пустая ячейка – значение элемента массива = 0
Шаг 4. Выполнение приложения
После запуска приложения (вычисляет сумму значений элементов массива, рисунок 5.12) щелкнем мышью в первой ячейке компонента StringGrid, вводим значение и нажимаем клавишу Enter. Повторяем эти действия для ввода остальных значений массива.
Для примера введем значения 1, 2, …, 10. Щелкнем по кнопке Сумма. Вызывается обработчик, который формирует массив из строк ячеек StringGrid (смотри Шаг 3) и вычисляет сумму.
Рисунок 5.12 – Компонент StringGrid и его использование для ввода значений элементов массива
5.3.3 Компонент Memo – многострочное окно редактирования
Компонент Memo обладает так же, как компонент Edit, свойствами и функциями редактора текста.
Основное свойство – Lines содержит текст окна редактирования в виде списка строк.
Свойство Strings[Index:Integer] можно использовать для того, чтобы получить текст строки.
Например, Memo1.Strings[0] – это текст первой строки в окне редактирования.
Методы LoadFromFile/SaveToFile свойства Lines позволяют загружать/сохранять текст в/из окна редактирования.
Свойство CaretPos может использоваться для определения положения курсора в окне редактирования, а, следовательно, и получения значения символа (перед которым стоит курсор).
Например, Memo1.CaretPos.Y+1 – номер строки,
Memo1.CaretPos.X+1 – номер символа в строке.