
- •Занятие 1. Введение Почему именно Delphi?
- •Что мы видим на экране
- •Контрольные вопросы:
- •Занятие 2. Мое первое приложение в Delphi Вывести текст в окне
- •Задания для самостоятельной работы
- •Кнопки. Какие они бывают и зачем они?
- •Задания для самостоятельной работы
- •Поле редактирования
- •Задания для самостоятельной работы
- •Контрольные вопросы
- •Занятие 3. Введение в язык программирования Pascal
- •Понятие алгоритма
- •Структура процедуры
- •Правила задания имен языка Pascal
- •Задания для самостоятельной работы
- •Тип данных
- •Числовой тип данных. Целые числа
- •Числовой тип данных. Вещественные числа
- •Описание данных
- •Задания для самостоятельной работы
- •Операции
- •Присвоение значения переменной. Оператор присваивания
- •Задания для самостоятельной работы
- •Задача «Простой калькулятор»
- •Встроенные функции
- •Задания для самостоятельной работы
- •Контрольные вопросы
- •Занятие 4. Разветвляющийся алгоритм
- •Логический тип данных
- •Описание данных логического типа
- •Логические выражения
- •Разветвляющийся алгоритм
- •Оператор if
- •Оператор выбора case
- •Задания для самостоятельной работы
- •Списки. Компоненты ListBox и ComboBox
- •Зависимые переключатели. Компоненты RadioButton, RadioGroup
- •Задание для самостоятельной работы
- •Добавление формы к проекту
- •Структура модуля Pascal
- •Как открыть форму
- •Задание для самостоятельной работы
- •Способность форм ссылаться друг на друга
- •Задание для самостоятельной работы
- •Просмотр форм и ассоциированных с ними модулей
- •Основные свойства, методы и события формы
- •Менеджер проектов
- •Опции пpоекта
- •Упpавление пpоектами
- •Компиляция и сборка проекта
- •Выполнение и отладка проекта
- •Задания для самостоятельной работы
- •Контрольные вопросы
- •Занятие 6. Начинаем рисовать
- •Рисование линий
- •Задание цвета
- •Рисование фигур
- •Свойства класса tBrush
- •Вывод текста
- •События формы OnPaint и OnResize
- •Задания для самостоятельной работы
- •Занятие 7. Циклы
- •Цикл со счетчиком: for
- •Цикл с предусловием: while
- •Цикл с постусловием: repeat..Until
- •Использование операторов Continue и Break в циклах
- •Задание случайных чисел. Функция Random. Процедура Randomize
- •Вложенные циклы
- •Задания для самостоятельной работы
- •Контрольные вопросы
- •Занятие 8. Массивы
- •Одномерные массивы
- •Двумерные массивы
- •Компонент tStringGrid
- •Задание для самостоятельной работы
- •Контрольные вопросы
- •Занятие 9. Строки и символы
- •Символьный тип данных
- •Строковый тип данных
- •Сравнение текстовой информации
- •Функции для работы с текстовой информацией
- •Задания для самостоятельной работы
- •Контрольные вопросы
- •Занятие 10. Работа с изображениями
- •Редактор Image Editor
- •Как отобразить рисунок в форме
- •Компонент Timer
- •Как заставить картинку двигаться
- •Случайное движение
- •Задание для самостоятельной работы.
- •Движение по закону
- •Задание для самостоятельной работы
- •Управляемое движение
- •Задание для самостоятельной работы
- •Как совместить разные виды движения
- •Задание для самостоятельной работы
- •Использование мыши
- •Занятие 11. Процедуры и функции
- •Описание и вызов процедуры
- •Описание и вызов функции
- •Где описывать процедуры(функции)
- •Передача параметров по ссылке и по значению
- •Контрольные вопросы
- •Задание для самостоятельной работы
- •Занятие12. Еще про компоненты Еще раз про списки
- •Функция MessageDlg
- •Задание для самостоятельной работы
- •Главное меню приложения. Компонент MainManu
- •Задание для самостоятельной работы
- •Кнопочная панель. Компонент ToolBar
- •Область редактирования. Компонент Memo
- •Контекстное меню. Компонент PopupMenu
- •Диалоговые окна Windows
- •Задание для самостоятельной работы
- •Занятие 13. Объектно-ориентированный подход (ооп) в программировании Основные понятия ооп
- •Основные принципы ооп
- •Тип данных запись (структура)
- •Задание для самостоятельной работы
- •Классы и объекты в Delphi
- •Задание для самостоятельной работы
- •Контрольные вопросы
- •Занятие 14. Работа с файлами
- •Общая технология работы с файлами в Delphi
- •Стандартный подход к работе с файлами
- •Описание файловой переменной
- •Открытие файлов
- •Запись в файл
- •Считывание из файла
- •Закрытие файла
- •Установка новой позиции в файле
- •Текстовые файлы
- •Конец файла
- •Стандартные подпрограммы для работы с файлами и каталогами
- •Пример работы с нетипизированными файлами
- •Пример работы с типизированными файлами
- •Пример работы с текстовыми файлами
- •Объектный подход к работе с файлами
- •Задания для самостоятельной работы
- •Контрольные вопросы
Использование операторов Continue и Break в циклах
В теле цикла могут использоваться операторы Break и Continue.
Оператор Break обеспечивает выход из циклов for, while, repeat, и продолжает выполнение программы с оператора, непосредственно следующего за циклом. Например:
var
n:integer;
begin
n:=100;
while True do
begin
n:=n - 2;
if n = 0 then Break;
{ другие операторы цикла }
end;
end;
end;
В данном учебном примере в теле цикла выполняется изменение переменной n, если значение n становится равным 0, то с помощью оператора break выполняется выход из этого бесконечного цикла.
Оператор Continue позволяет перейти на начало цикла for, while, repeat. Пример использования Continue будет приведен ниже.
Задание случайных чисел. Функция Random. Процедура Randomize
При отладке широкого класса алгоритмов ввод значений переменных с клавиатуры, либо программным путем с помощью инициализации переменных является очень трудоемким. Значения переменных можно получать во время выполнения программы с помощью генерации случайных чисел, для этого используются функция Random и процедура Randomize.
Функция Random обеспечивает генерацию псевдослучайного числа. Синтаксис функции:
function Random [ ( Range: Integer) ];
Функция Random возвращает случайное число X, равномерно распределенное в интервале 0 <= X < Range.
Если функция используется без аргументов, возвращается вещественное число типа real в интервале 0 <= X < 1.
Для инициализации датчика случайных чисел используется процедура Randomize. Синтаксис:
Randomize.
Процедура не имеет аргументов. Достаточно выполнить процедуру один раз в теле программы. Ее единственное назначение это обеспечение возможности получения каждый раз разных последовательностей случайных чисел.
Генерация случайных чисел широко используется при создании игр, она позволяет исключить повторение игровых ситуаций при новых запусках программы.
Например:
Random(4) – вернет случайное число от 0 до 3.
Random(15)+1 – вернет случайное число от 1 до 15.
Вложенные циклы
При создания сложных алгоритмов часто приходится использовать вложенные циклы. Это означает, что внутри одного цикла может содержаться один или несколько вложенных циклов. Различные варианты вложений циклов приведены на рисунке.
|
|
|
В качестве примера использования вложенного цикла рассмотрим такую задачу: нарисовать игровое поле размером 10 на 10, состоящее из разноцветных клеточек случайного цвета, как изображено на рисунке:
Для решения задачи введем ряд переменных:
X0,Y0 –задают координаты левого верхнего угла поля;
DX,DY – размер клеточки по X и Y;
TX,TY – переменные для хранения координат текущей клеточки по X и Y.
Col – переменная, в которой будет содержаться цвет очередной клеточки, который будем задавать случайным путем.
Алгоритм решения задачи очень прост. Так как поле состоит из рядов клеточек, то во внутреннем (вложенном) цикле будем рисовать, например, горизонтальный ряд клеточек. Во внешнем цикле будем сдвигаться по Y и снова с помощью внутреннего цикла рисовать очередной горизонтальный ряд.
Так как число шагов и внешнего и внутреннего цикла известно, это 10, то будем использовать циклы со счетчиком – for. Для задания счетчиков цикла обычно используются переменные i,j или k. Итак, опишем все необходимые переменные:
Var
x0, y0, dx, dy, tx, ty : integer;
i, j : integer;
col:TColor;
Зададим начальные значения для переменных (инициализируем переменные):
x0:=20; y0:=20; dx:=30;dy:=30;
Так как цвет клеточки будет формироваться случайным путем, необходимо выполнить процедуру Randomize один раз в теле программы, например, на событие OnCreate формы.
Программный код для рисования поля может выглядеть таким образом:
with canvas do
begin
ty:=y0;
{ внешний цикл}
for i:=1 to 10 do
begin
tx:=x0;
{вложенный цикл}
for j:=1 to 10 do
begin
col:=RGB(random(256),random(256),random(256));
brush.Color:=col;
rectangle(tx,ty,tx+dx,ty+dy);
tx:=tx+dx;
end;
ty:=ty+dy;
end;
end;
Перед входом во вложенный цикл необходимо установить значение переменной TX, которая во вложенном цикле будет использоваться для задания X-координаты очередной клеточки:
tx:=x0;
Во вложенном цикле выполняется рисование очередного горизонтального ряда клеточек. Счетчик j задает число повторов внутреннего цикла. Во вложенном цикле необходимо смещаться по оси X для рисования очередного элемента ряда:
tx:=tx+dx;
Во внешнем цикле переменная i задает число повторов внешнего цикла. Перед рисованием очередного ряда необходимо сместиться по оси Y:
ty:=ty+dy;
И установить переменную tx, равной X0:
tx:=x0;