
- •Занятие 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
- •Стандартный подход к работе с файлами
- •Описание файловой переменной
- •Открытие файлов
- •Запись в файл
- •Считывание из файла
- •Закрытие файла
- •Установка новой позиции в файле
- •Текстовые файлы
- •Конец файла
- •Стандартные подпрограммы для работы с файлами и каталогами
- •Пример работы с нетипизированными файлами
- •Пример работы с типизированными файлами
- •Пример работы с текстовыми файлами
- •Объектный подход к работе с файлами
- •Задания для самостоятельной работы
- •Контрольные вопросы
Цикл с предусловием: while
Циклы с предусловием используются тогда, когда выполнение операторов тела цикла зависит от некоторого условия, которое проверяется перед очередным шагом цикла.
Блок-схема цикла приведена на рисунке.
Из блок-схемы видно, что операторы тела цикла выполняются до тех пор, пока условие входа в цикл равно истине.
При использовании цикла с предусловием необходимо понимать, что:
значение условия выполнения цикла должно быть определено до начала цикла;
если условие входа в цикл ложно, то происходит выход из цикла;
хотя бы один из операторов тела цикла должен влиять на условие выполнения цикла, иначе цикл будет повторяться бесконечное число раз;
цикл может не выполниться ни разу, если условие входа в цикл ложно.
Синтаксис оператора, реализующего цикл с предусловием приведен ниже:
While <условие> do <оператор>;
Если перевести на русский язык все английские слова этого предложения, то получится следующая понятная русская фраза: до тех пор, пока условие=истина делать операторы. При этом:
Условие – это логическое выражение, которое может принимать значение либо истина (true), либо ложь (false).
Оператор – это либо одиночный, либо составной оператор.
Пример 1. Посчитать сумму ряда чисел: 1+1/2+1/3+…1/n , до тех пор, пока n<=100.
var
i:integer;
sum:real;
begin
sum:=0; i:=1;
while i<=100 do
begin
sum:=sum+1/i;
i:=i+1;
end;
label1.Caption:='sum='+FloatToStr(sum);
Пример 2. Рисовать концентрические окружности в окне, до тех пор, пока они входят в окно.
var x0,y0:integer;
sh,i:integer;
begin
sh:=10; {расстояние между окружностями}
{ координаты левого верхнего угла}
x0:=width div 2 - sh; y0:=height div 2 - sh ;
with canvas do
begin
pen.Color:=clGreen;
pen.Width :=5;
{ делаем окружности прозрачными }
brush.Style:=bsClear;
i:=1;
while (x0>0) and (y0>0) and
(x0+2*i*sh<ClientWidth) and (y0+2*i*sh<ClientHeight) do
begin
ellipse(x0,y0,x0+2*sh*i,y0+2*sh*i);
i:=i+1;
x0:=x0-sh;
y0:=y0-sh;
end; { end while }
end; { end with}
end;
Цикл с постусловием: repeat..Until
Цикл с постусловием напоминает цикл с предусловием. Отличие заключается в том, что проверка выхода из цикла выполняется в конце цикла. Блок-схема цикла приведена ниже:
Как видно из блок-схемы операторы тела цикла будут выполняться пока условие ложно. Выход из цикла выполняется, когда условие приобретает значение истина.
Синтаксис оператора имеет следующий вид:
Repeat
<операторы>
Until <условие>;
Если перевести на русский язык, получим: повторять операторы тела цикла до тех пор, пока условие ложно.
Следует отметить, что в данной конструкции последовательность операторов, определяющих тело цикла, не заключается в операторные скобки begin.. end., поскольку ими служит пара операторов repeat..until.
При использовании цикла repeat..until следует иметь в виду следующее:
Цикл обязательно выполнится хотя бы один раз;
Хотя бы один из операторов тела цикла должен влиять на условие выполнения цикла, иначе цикл будет повторяться бесконечное число раз;
Пример 1. Найти сумму ряда чисел: 1+1/2+1/3+…1/100 с использованием цикла repeat.
Var
i :integer;
sum:real;
begin
sum:=0; i:=1;
repeat
sum:=sum+ 1/i;
i:=i+1;
until i>100;
end;
Пример 2. Рисовать концентрические прямоугольники с центром в середине экрана, пока они входят на экран. Внешний вид экрана приведен на рисунке:
Программный код имеет следующий вид:
var x0,y0:integer;
sh,i:integer;
begin
sh:=10; {расстояние между прямоугольниками}
{ координаты левого верхнего угла}
x0:=width div 2 - sh; y0:=height div 2 - sh ;
with canvas do
begin
pen.Color:=clBlue;
pen.Width :=3;
{ делаем прямоугольники прозрачными }
brush.Style:=bsClear;
i:=1;
repeat
rectangle(x0,y0,x0+2*sh*i,y0+2*sh*i);
i:=i+1;
x0:=x0-sh;
y0:=y0-sh;
until (x0<=0) or (y0<=0) or
(x0+2*i*sh>=ClientWidth) or (y0+2*i*sh>=ClientHeight)
end;