Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебник Турбо Паскаль.doc
Скачиваний:
789
Добавлен:
10.04.2015
Размер:
1.84 Mб
Скачать

Var c: char; j, I: word;

s: array[1..10] of string[12];

a: array[1..10, 1..6] of word;

f1, f2: text;

BEGIN

assign(f1, 'F1.txt'); reset(f1);

assign(f2, 'F2.txt'); rewrite(f2);

for i:= 1 to 10 do begin read(f1, s[i]); { считывание строки }

for j:= 1 to 6 do read(f1, a[i,j]); { считывание шести чисел }

readln(f1) { считывание символа конца строки }

end;

for c:= 'А' to 'Я' do { цикл по перебору символов }

for i:= 1 to 10 do

if s[i,1] = c then begin

write(f2, s[i]); { запись строк в алфавитном порядке первых символов }

for j:= 1 to 6 do write(f2, a[i,j]:2); { запись шести чисел }

writeln(F2)

end;

close(f1); close(f2);

END.

Здесь полагается что в файле F1. txt записаны данные, которые в редакторе текста имеют вид:

Леонтьев 5 4 4 5 4 3

Ивлев 4 5 3 4 3 4

и т. д.

После считывания данных в программе происходит их сортировка перебором и запись в файл F2. txt в алфавитном порядке первой буквы фамилии.

Примечание: Линейный массив "S" строкового типа можно представить как двумерный массив "S" символьного типа. Здесь первый индекс соответствует номеру элемента одномерного массива "S", а второй-номеру символа в элементе одномерного массива "S".

При считывании данных из файла неопределенной длины можно использовать функцию EoF(f);возвращающую признак конца файла, а именно: EoF(f) равен True если указатель стоит на признаке конца файла (код #26), иначе EoF(f) равен False. Приведем пример операторов для считывания текста из файла FF1. t, кодировки текста и записи в файл FF2. t с сохранением кода #13.

assign(f1, 'FF1. t'); reset(f1);

assign(f2, 'FF2. t'); rewrite(f2);

while not EoF(f1) do begin read(f1,c); {считываем переменную типа Char }

if c <> #13 then c:=pred(c); write(f2,c){кодируем и выводим на экран }

end;

52

Практическое задание N 1. 26

1. В первой программе рассчитать значения функции Y=sin(x) при изменении "х" с шагом 0. 01 в диапазоне от 0 до 3. Записать в файл F1. txt значения "х" и "y". Во второй программе считать из файла F1. txt значения "х" и "y", рассчитать значения функций Z1=y2, Z2=y3 и добавить значения Z1, Z2 в конец файла F1. txt.

2. Выполнить пункт 1 для функции Y=ex.

3. Записать в файл F1. d массив отрицательных целых чисел "A" по убыванию, а в файл F2. d массив положительных целых чисел "A" по возрастанию. Массив "A" из 25 целых чисел задается в диапазоне от -10 до +10 функцией Random.

4. Записать в файл F1. d массив четных целых чисел "A" по убыванию, а в файл F2. d массив нечетных целых чисел "A" по возрастанию. Массив "A" из 30 целых чисел задается в диапазоне от 0 до 20 функцией Random.

Примечание к п. п. 3, 4:одинаковые числа должны располагаться в одной строке.

5. Записать в конец файла F1. t список из фамилий (в алфавитном порядке) с оценками по пяти предметам. Список фамилий (в произвольном порядке) с оценками считывается из файла F1. t, предварительно набранного в редакторе текста.

6. Зашифровать текст, считанный из файла F1. t, предварительно набранного в редакторе текста и записать в конец файла F1. t. Во второй программе дешифровать текст и добавить в конец файла F1.t. Алгоритм шифровки разработать самостоятельно.

В Турбо-Паскале имеется возможность программной установки атрибутов файла.Атрибуты устанавливаются для закрытых файлов после связи файловой переменной с именем файла на диске.

Узнать исходный атрибут файла можно процедурой GetFattr(f, af);

Установить атрибут файла можно процедурой SetFattr(f, af);

Здесь f -имя файловой переменной,

af-имя переменной исходного, либо устанавливаемого атрибута (тип Word).

Стандартные атрибуты файла(обозначим "ads") заданы в модуле DOS константами:

Значение константы "ads"

Наименование Константа "ads" Двоичное Шестнадцатиричное

Только для чтения ReadOnly0000 0001 $01

Скрытый файл Hidden 0000 0010 $02

Системный файл System 0000 0100 $04

Архивный файл Archiv 0010 0000 $20

При "добавлении" стандартных атрибутов файла "ads" необходимо учитывать исходный атрибут "af". Например, если файл имеет исходный атрибут ReadOnly, то выражение af:= af + ReadOnly эквивалентно записи af:= $01+$01; т. е. атрибут файла станет Hidden ($02).

Следовательно процедуры GetFattr(f,af);иSetFattr(f,af+ReadOnly); в данном случае уберут атрибут ReadOnly и установят атрибут Hidden. Таким образом, арифметические операции сложения, вычитания атрибутов можно проводить, только зная исходный атрибут файла.

53

Использование правил логических операций над битами позволяет анализировать и изменять атрибуты файлов.

Напомним эти правила:

Выводы:

бит "A" операция бит "B" результат

1. Результат операции "A and B"

1 and 1 1 равен значению бита "В",

1 and 0 0 кроме случая "добавления" к

0 and 0 0 нулевому биту единичного.

0 and 1 0

2. Результат операции "A or B"

1 or 0 1 равен значению бита "A",

0 or 0 0 кроме случая "добавления" к

0 or 1 1 нулевому биту единичного.

1 or 1 1

Здесь важно проследить результат "добавления" битов к исходным, поскольку стан

дартный атрибут "ads" имеет только один единичный бит в соответствующей позиции.

Таким образом, условие (af and ads) = adsверно, если "af" и "ads" содержат единичные биты в соответствующей позиции.

Следовательно, операторы для снятия стандартного атрибутаиз исходного могут иметь вид:

GetFattr(f,af); If (af and ads) = ads then SetFattr(f,af-ads);

В обратном случае можно "добавить" к исходному атрибуту "af" стандартный "ads"."Добавить" стандартный атрибут можно без проверки исходного атрибута, используя операцию"or". Например:

GetFattr(f,af); SetFattr(f, af or ads);

В данном случае "добавление" единичного бита однозначно изменяет исходный атрибут файла.

Практическое задание N 1. 27

1. Cчитать фамилии и оценки учащихся из файла (IN. TXT), предварительно набранного в редакторе текста и вывести в файл (OUT. TXT) таблицу: фамилии -оценки, для учащихся с оценкой >=4. Установить атрибут "ReadOnly" для файла IN. TXT и атрибут "Hidden" для файла OUT. TXT. Попробовать изменить данные файла IN.TXT в текстовом редакторе. Во второй программе убрать атрибуты.

54