
- •Занятие 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
- •Стандартный подход к работе с файлами
- •Описание файловой переменной
- •Открытие файлов
- •Запись в файл
- •Считывание из файла
- •Закрытие файла
- •Установка новой позиции в файле
- •Текстовые файлы
- •Конец файла
- •Стандартные подпрограммы для работы с файлами и каталогами
- •Пример работы с нетипизированными файлами
- •Пример работы с типизированными файлами
- •Пример работы с текстовыми файлами
- •Объектный подход к работе с файлами
- •Задания для самостоятельной работы
- •Контрольные вопросы
Описание и вызов функции
Синтаксис описания функции очень похож на описание процедуры и имеет следующий вид:
Function <имя функции>[(список формальных параметров)]:<тип результата>;
[<раздел описаний>]
begin
<операторы>
end;
Ключевое слово function – задает описание заголовка функции. Заголовок содержит:
имя функции, которое используется при ее вызове;
список формальных параметров, при этом каждый параметр описывается со своим типом, также как при описании процедуры;
тип возвращаемого функцией значения.
Раздел описаний функции содержит описания переменных, констант и других подпрограмм, которые используются только внутри этой функции.
Тело функции заключается в операторные скобки begin..end.
Внутри каждой функции есть зарезервированная локальная переменная с таким же именем, что и сама функция, имеющая тот же тип, что и возвращаемое функцией значение. Она доступна для чтения и может быть использована в промежуточных вычислениях. Она обязательно должна получить значение на выходе из функции.
Пример описания функции:
function maxim(a,b:integer):integer;
begin
if a>b then
maxim:=a
else
maxim:=b;
end;
Синтаксис вызова функции имеет следующий вид:
<Переменная>:=<Имя функции>[(Список формальных параметров)]
Так как функция возвращает результат, она может использоваться в выражениях, при этом вместо функции подставляется возвращаемое ей значение.
Например, вызов функции maxim:
k:=maxim(100,56)
Где описывать процедуры(функции)
Процедура(функция) описывается внутри модуля. Если требуется, чтобы процедура(функция) была доступна для других модулей, в части Interface необходимо описать ее заголовок, а в части Implementation описать ее реализацию, например:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs;
type
TForm1 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
end;
{описание заголовка функции, которая будет доступна для других модулей}
function min(a,b:real):real;
var
Form1: TForm1;
implementation
{$R *.dfm}
{ описание функции }
function min(a,b:real):real;
begin
if a>b then
min:=a
else min:=b;
end;
end.
Если процедура(функция) будет использоваться только в данном модуле, не требуется описание ее заголовка в секции Interface.
Передача параметров по ссылке и по значению
Любой из формальных параметров подпрограммы может быть либо:
1) параметром-значением (передача по значению)
2) параметром переменной (передача по ссылке)
3) параметром-константой (передача по ссылке)
Например, в следующем описании процедуры:
procedure MyProc(var a:real; b:integer; const c:string);
задан список формальных параметров где
a - передается по ссылке, для этого используется ключевое слова var;
b - передается по значению;
c - передается по ссылке, для этого используется ключевое слова const.
При передаче по значению параметр вычисляется, копируется во временную память и передается подпрограмме, т.е. передается копия параметра, поэтому на выходе из подпрограммы значение параметра не меняется. Например:
procedure A(c:real);
begin
....
c:=c+10;
...
end;
Использование процедуры:
c:=5;
A(c);
При выходе из процедуры А переменная c - будет равна 5.
При использовании параметра-переменной передается адрес переменной. Поэтому на выходе из подпрограммы ее значение может быть изменено. Например:
procedure Double( var c:real);
begin
c:=c*2;
end;
Использование процедуры:
a:=10;
Double(a);
После выхода из процедуры значение переменной A изменится и будет равно 20.
Параметр-константа будет использоваться в подпрограмме только для считывания данных, любые изменения параметра-константы запрещены. Параметр-константа передается по адресу. Использование такого параметра позволяет организовать эффективную обработку соответствующего параметра, не беспокоясь о возможных изменениях его значения. Например:
Procedure Sum( const A: integer);
Процедуре Sum передается параметр A, который нельзя менять в теле процедуры.