Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Paskal_metodichka.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
807.42 Кб
Скачать

Примеры выполнения задания 9

Дан текстовый файл abc.txt. Удалить из каждой строки файла abc.txt все пробелы и расположить символы строки в обратном порядке.

Результат записать в файл def.txt.

Примечание. Формирование текстового файла с исходными данными abc.txt можно выполнить в любом текстовом редакторе, в том числе и в редакторе Турбо Паскаля.

Порядок создания файла:

  • войти в редактор Турбо Паскаля;

  • набрать несколько строк текста (в конце последней строки обязательно нажать Enter);

  • сохранить под именем: abc.txt.

program lab6;

uses crt;

var s : string;

f, g: text;

n,k,i:integer;

begin clrscr;

assign (f, abc.txt);

assign (g, def.txt);

reset (f); {открыть файл abc.txt на чтение}

rewrite (g); {открыть файл def.txt на запись}

while not eof (f) do

begin readln (f, s); {текущая строка файла запишется в ОЗУ в ячейку, отведенную под переменную s}

п := pos( ); {позиция первого по порядку пробела}

while n > 0 do

begin

delete(s, n, 1); {удаление пробела в позиции п}

п := pos( );

end;

{формирование новой строки s1 из символов строки s,

расположенных в обратном порядке}

k:=length(s);

for i:= 1 to k do

s1[i]:=s[k+1-i];

{запись строки s1 в файл g }

writeln(g, s1);

end; close(f); close(g);

end.

Тема 10

Работа с комбинированными типами данных

(Записями)

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

Достаточно часто приходится обрабатывать данные об объектах, состоящих из элементов различных типов. Например, для такого объекта, как абитуриент, можно при описании использовать следующие характеристики

Фамилия

Имя

Отчество

Год рождения

Гражданство

Телефон

Факультет

Иванов

Сергей

Петрович

1990

Россия

1234567

ФАВТ

Для описания подобных объектов в Турбо Паскале используется специальный тип данных – запись.

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

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

Описание записи начинается со служебного слова record, затем следует список полей с указанием их типов. Заканчивается описание записи словом end:

Record имя поля 1 : тип поля 1;

имя поля 2 : тип поля 2;

. . . . . . . . . . . . . . . . . . .

имя поля N : тип поля N

end;

Если типы нескольких полей совпадают, то имена полей перечисляются через запятую.

Рассмотрим примеры.

Представить комплексные числа А и В в виде записей (re + im*i), где re, im – вещественные числа, а также описать дату (число, месяц, год).

type comp = record

re, im: real

 end;

data = record

day: 1..31;

month: 1..12;

year: integer

end;

var a, b: comp; dt: data;

Особенности работы с записями

1. Обращение к записи в целом возможно только в операторе присваивания, где слева и справа от знака присваивания используются имена записей одинакового типа, например: b := a;

Естественно, что до выполнения этого оператора значения всех полей переменной – записи a должны быть определены. Во всех прочих случаях оперируют отдельными полями записи.

2. Реализуется прямой доступ к любому полю записи. Чтобы обратиться к отдельному полю записи, необходимо задать имя переменной типа запись и через точку указать имя нужного поля, например:

a. re := 1.54; a. im := – 2.45;

Такое имя называется составным.

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

3. Допускается любая степень вложенности одной записи в другую. Любое поле записи может быть само записью, например:

type stud = record

name : string[15];

data: record

day : 1 .. 31:

month : 1 .. 12;

year : integer

end;

sex : ( m, w )

end;

var cc : stud;

Значения переменной сс можно задать, определив значения всех полей, например, следующим образом:

cc. name := 'Миронов А. В. ';

cc. data. day := 15;

cc. data. month := 11;

cc. data. year := 1989;

cc. sex := m;

4. Для упрощения работы с записями используется оператор присоединения with . Он позволяет заменить составные имена, характеризующие каждое поле, просто именами полей, а имена записи определить в операторе присоединения:

with M do S;

гдеМ – имя записи,

S – оператор, простой или составной.

Оператор S представляет собой область действия оператора присоединения, в пределах которой можно не использовать составные имена.

Иначе говоря, оператор присоединения позволяет работать с полями записи, как с простыми переменными.

Без оператора присоединения:

С оператором присоединения

Пример 1

a.re := 1.54;

a.im := 2.45

with a do

begin re := 1.54;

im := 2.45

end;

Пример 2

data.day := 15;

data.month := 12;

data.year:=1989

with data do

begin day := 15;

month := 12;

year:=1989

end;

5. Допускается использование записей в качестве компонент других сложных типов, например, массивов. Массив комплексных чисел можно задать так:

var mascomp : array [1 .. 10] of comp;

Оператор присваивания нового значения полю re во второй записи массива имеет вид:

mascomp [2] .re := 1.54.

При вводе элементов массива из записей с клавиатуры обычно используют оператор присоединения:

write(‘Введи комплексное число’);

for i := 1 to 10 do

with mascomp[i] do

begin writeln (‘действительная часть: ’);

readln(re);

write(‘мнимая часть: ’);

readln(im)

end;

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