- •Символьный и строковой типы.
- •Операции над символами и строками
- •Преобразование строк
- •Строки в Delphi
- •Множества и операции с ними
- •Модули в Delphi
- •Событийно – ориентированное программирование
- •Объективно-ориентирование программирование
- •Классы и объекты
- •Объявление класса
- •Абстрактные методы
- •Перегружаемые методы
- •Структура проекта Делфи
- •Визуальное программирование
- •Реакция на события.
- •Компоненты Делфи
- •Фокус ввода
- •Общие свойства объектов
- •Модуль Math
- •Класс tLabel
- •Панели и их назначение
- •Обработка исключительных ситуаций
- •Класс tExeption
- •Создание нового класса исключения
- •Компоненты страницы Dialogs
- •Компоненты tOpenDilog, tSaveDialog
- •Графика в Делфи
- •Класс tCanvas
- •Метод класса tCanvas
- •Класс Tpen
- •Класс tFont
- •Класс tBrush
- •Класс tGraphics Tpicture
- •Класс TpaintBox
- •Класс tBitMap
- •Методы BitMap
- •Класс tImage
- •Подрограмма формирования преобразования строк.
- •Класс tForm
- •Печать из программы
- •Работа с файлами
- •Работа с файловой системой Windows.
Строки в Delphi
Статическая Динамическая
Var (содержит адрес) s:string[20] – статическая строка
12
Строка
симв
0 1 23 4 5 6 7 8 910111213..20
Статическая (0 есть)
Shotstring; (255) Используется: ord(s[0]) извещает о символе и преобразование его в число for i:=1 to ord (s[0]) do writeln (s[i]);
Пр. Дана строки символов, ввести с клавиатуры, посчитать сколько пробелов
Program
p;
Var S:string [30]; a:integer; begin writeln (‘введите строку’); readln(s); a:=0; for i:=1 to ord (s[0]) do if s[i]=#32 then a:=a+1; writeln(a); readln; end.
Множества и операции с ними
Множества – сложный тип языка, конструирующий специальным предложением с set of <базовый тип> Базовый тип должен быть перечислимым. Он не может быть вещественным, потому что там бесконечное число значений. По умолчанию в операционной системе на базовый тип 256 штук. Сюда относится char, byte либо собственный тип введённый под директивой type.
Type
digit=1..9;
month (feb,fab,..);
var
m:set
of month;
t:set of digit
На физическом уровне (оп.п) любое множество представляет собой битовый вектор. Под любым множеством всегда резервируется столько бит, сколько штук в базе.

Program
m
var
s: set of digit; //объявляем
множества
m:set
of month;
m1:month;
begin
s:=[]; //задание
пустого
множества
s:=s+[2];
m:=[];
m:=m+[sep];
(m:=m-[sep];)
m1:=sep;
m1:=m1+1;
m=m-[m1];
Каждый элемент множества имеет сопоставимый номер от 0 до 255. Максимум 32 байт.
Операции:
= проверка эквивалентности; возвращает True, если оба множества эквивалентны; <> проверка неэквивалентности; возвращает True, если оба множества неэквивалентны;
<= проверка вхождения; возвращает True, если первое множество включено во второе; >= проверка вхождения; возвращает True, если второе множество включено в первое; in проверка на вхождение элемента в множество. + объединение множеств - разность множеств * пересечение множеств
If ch in [‘a’..’x’,’A’..’X’]
Основной недостаток невозможен прямой вывод на экран или прямой вывод элемента в множества с клавиатуры.
Var
g:integer begin
Readln(g); s:=s+[g];
Пр.
Ввести
строку и вычислить сколько в ней
цифр.
Program
z;
var
s:string[20];
a:integer;
ch:char;
Begin
a:=0;
writeln(‘Введите строку’); readln(s);\
for i:=1 to ord(s[0]) do if s[i] in[‘0’..’9’] then a:=a+1; writeln(a); readln; end.
Var
A,B:array of integer; //динамический массив (n) begin readln (n); setlength(A,n); B:=A; //ссылка на одну и ту же область динамической памяти если
Setlenght(B,n); //то потеряет т.к. присв. for i:=0 to N do A^[i]:=B^[i]; //не ссылка, а элемент массива. (^ - типизированный указатель)
Пр. двумерного массива setlength(A,10,10) (400 байт) A,B:array of array of integer;
Модули в Delphi
-специальным образом оформленная библиотека типов, констант, переменных, процедур и функций. Модуль в отличие от программы не может выполняться самостоятельно. Он может учувствовать в построение программы или другого модуля.
Модуль предварительно компилируется .dcu затем модуль подключается к программе с помощью директивы uses A1,A2;
После подключение содержимого модулей исполняется как будто они уже предопределены в языке.
Модули полезны в двух случаях:
Для построения собственной библиотеки процедур и функций
Модульность позволяет создавать программу практически любого размера, по ограничению АЗУ.
Структурно модуль делится на части
Until <имя>;
Interface – раздел объявлений, содержащий описание типов, констант и переменный, которые будут привноситься в программу при включении модуля.
В interface есть заголовки процедур функций, составляющих библиотеку. !Не допустимо использование заголовков с директивой forward!
Раздел реализаций – Implementation. В этом разделе объявляются свои типы и переменные. Так же свои тела объявляются в интерфейсе.
Раздел инициализации – initialization
Begin оп-ры end
Выполняются до первого исполняемого оператора.
Раздел финализации – Finalization
Until zero; Interface Implementation end.
Оформить в виде статической библиотеки в виде среднего арифметического среднего геометрического для входного массива. Затем в главную программу подключить массив Xn,Yn и рассчитать с помощью библиотеки.
Библиотека
Unit
j;
Interface
Type mass=array[1..100] of real;
Function srednee_or(x:mass; i:integer):real; Function srednee_ge(x:mass; i:integer):real; implementation Function stedree or; var m:integer, a:real;
Begin a:=0 for m:=1 to i do a:=a+x[m]; srednee_or:=a/i; end;
Function srednee_ge; …………………….
end;
Program j1; uses j;
var
x,y:mass;
a,b:real;
i,j,n,L:integer;
begin
writeln
(‘введите
количество’);
readln(n,L);
writeln
(‘введите
массивы’);
for
i:=1 to n do
read (x[i]);
for j:=1 to L do
read
(y[j]);
a:=srednee_or(x,n);
b:=srednee_ge(y,L);
readln;
end;
