Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции / Программирование!!!.docx
Скачиваний:
18
Добавлен:
04.04.2018
Размер:
219.34 Кб
Скачать

Строки в 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;

После подключение содержимого модулей исполняется как будто они уже предопределены в языке.

Модули полезны в двух случаях:

  1. Для построения собственной библиотеки процедур и функций

  2. Модульность позволяет создавать программу практически любого размера, по ограничению АЗУ.

Структурно модуль делится на части

  1. Until <имя>;

  2. Interface – раздел объявлений, содержащий описание типов, констант и переменный, которые будут привноситься в программу при включении модуля.

В interface есть заголовки процедур функций, составляющих библиотеку. !Не допустимо использование заголовков с директивой forward!

  1. Раздел реализаций – Implementation. В этом разделе объявляются свои типы и переменные. Так же свои тела объявляются в интерфейсе.

  2. Раздел инициализации – initialization

Begin оп-ры end

Выполняются до первого исполняемого оператора.

  1. Раздел финализации – 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;