- •Символьный и строковой типы.
- •Операции над символами и строками
- •Преобразование строк
- •Строки в 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;