Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Билеты 16-30.docx
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
30.62 Кб
Скачать

28 Вопрос

Общие сведения

Переменные типа String аналогичны массивам типа Char. Их отличием является то, что число символов (длина строки) может динамически меняться в интервале от единицы до заданного верхнего значения.

Тип String (строка) в Турбо Паскале широко используется для обработки текстов. Этот тип является стандартным и во многом похож на одномерный массив символов Array [0..N] of Char. Значение N соответствует количеству символов в строке и может меняться от 0 до 255. Символы, входящие в строку, занимают позиции с 1 до N. Начальный байт строки с индексом 0 содержит информацию о ее длине, т.е. это символ с кодом, равным длине строки.

Можно, также описывать переменные типа String[K], где K - целое число не больше 255. Так определяются строки с длиной не больше K. Этот тип уже не является стандартным. С символами строки можно работать как с элементами массива из символов, но в отличие от массивов, строки можно вводить целиком, сравнивать друг с другом и сцеплять операцией "+".

Сравнение строк выполняется посимвольно в соответствии с их кодами до первого несовпадения. Если одна из строк закончилась до первого несовпадения, то она считается меньшей. Пустая строка меньше любой строки. ПРИМЕР: Сравнение строк.

'abcd' > 'abcD' { 'd'>'D' }

'abcd' > 'abc' { 'd'>'' }

'abc' < 'axxc' { 'b'<'x' }

'abcd' = 'abcd'

29 Вопрос

Записи

В программах часто возникает необходимость логического объединения данных. Например, база данных предприятия содержит для каждого сотрудника его фамилию, дату рождения, должность, оклад и так далее. Однотипные данные организуются в массивы, а для объединения разнотипных данных предназначен тип "запись". Он вводится с помощью ключевого слова record. Элементы записи называются полями:

type имя_типа = record

описание 1-го поля записи;

описание 2-го поля записи;

...

описание n-го поля записи;

end;

Поля записи могут быть любого типа, кроме файлового. Например, для каждого товара на складе требуется хранить его наименование, цену и количество единиц:

type goods = record

name : string[20];

price : real;

number: integer;

end;

Переменные типа "запись" описываются обычным образом. Можно задавать описание типа при описании переменной, создавать массивы из записей, записи из массивов:

var g1, g2 : goods;

stock : array [1 .. 100] of goods;

student : record

name : string [30];

group : byte;

marks : array [1 .. 4] of byte;

end;

Можно присваивать одну запись другой, если они одного типа, например:

g1 := g2;

g2 := stock[3];

Все остальные действия выполняются с отдельными полями записи. Есть два способа доступа к полю записи: либо с помощью конструкции имя_записи.имя_поля, либо с использованием оператора присоединения with, например:

g1.price := 200;

with g1 do begin

price := 200; number := 10

end;

Пример 1

Сведения о товарах на складе хранятся в текстовом файле. Для каждого товара отводится одна строка, в первых 20 позициях которой записано наименование товара, а затем через произвольное количество пробелов его цена и количество единиц. Программа по запросу выдает сведения о товаре или сообщение о том, что товар не найден.

program store;

const Max_n = 100;

type

str20 = string [20];

goods = record

name : str20;

price : real;

number : integer;

end;

var stock : array[1 .. Max_n] of goods;

i, j, len : integer;

name : str20;

found : boolean;

f : text;

begin

assign(f, 'stock.txt'); reset(f);

i := 1;

while not Eof(f) do begin

with stock[i] do readln(f, name, price, number);

inc(i);

if i > Max_n then begin {1}

writeln('Переполнение массива'); exit end;

end;

while true do begin {2}

writeln('Введите наименование'); Readln(name);

len := length(name);

if len = 0 then break; {3}

for j := len + 1 to 20 do name := name + ' '; {4}

found := false;

for j := 1 to i - 1 do begin {5}

if name <> stock[j].name then continue;

with stock[j] do writeln (name:22, price:7:2, number:5);

found := true;

break;

end;

if not found then writeln ('Товар не найден'); {6}

end;

end.

Инициализация записей выполняется в разделе констант, при этом для каждого поля задается его имя, после которого через двоеточие указывается значение:

const g : goods = ( name: 'boots';

price: 200; number: 10 );

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]