Var М : Set Of Byte;

В разделе операторов ей присваивается значение

М := [3,4,7,9];

Тогда операции отношения дадут следующие результаты:

М = [4, 7, 3, 3, 9, ] - True;

М <> [7, 4, 3, 9, ] - False;

[3, 4] <= М -True;

[] <= М -True;

М >= [1..10] - False;

М <= [3..9] - True.

Операция вхождения устанавливает связь между множеством и скалярной величиной, тип которой совпадает с базовым типом множества, т. Е. Если х — скалярная величина данного типа, а М — множество, то операция вхождения записывается в виде

х In M.

Результатом здесь будет логическая величина True, если значе­ние x входит в множество M, и False — в противном случае. Для описанного ранее множества М

4 In М - True,

5 In М - False.


Порядок выполнения задания к лабораторной работе № 8П

1. На основании теоретических сведений составьте программу определения количества знаков препинания (. ─ , * : ! ?) в символьной строке (см. п.1 раздела Задание к лабораторной работе № 8П). При решении используйте в условном операторе (в логическом выражении) множественную константу с символьным типом элементов и оператор вхождения.

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

Program Primer1M;

Var S: String; I, K: Byte;

Begin

ReadLn(S); К := 0;

For I := 1 To Length(S) Do

If S[I] In ['.','-',',',';',':','!','?']

Then К := К + 1;

WriteLn('Число знаков препинания равно', К)

End.

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

НЕ нашли? Не то? Что вы ищете?

4. Самостоятельно напишите и отладьте вариант программы без применения множества (см. п.2 раздела Задание к лабораторной работе № 8П), и присвойте ему имя Primer2M. Для написания программы используйте в операторе IF длинное логическое выражение вида

(S[I]='.') Or (S[I]='-') и т. д.,
которое является проверкой вхождения каждого знака препинания в символьную строку. Отлаженную программу предъявите препдавателю.

5. Сравните две программы Primer1M и Primer2M, сформулируйте вывод о целесообразности использования множеств в программах, и обоснуйте свой вывод.

Лабораторная работа № 9П

Файлы в ТурбоПаскале.

Задание к лабораторной работе № 9П

1. Набрать и отладить программу последовательного ввода с клавиатуры 20 вещественных чисел в файловую переменную Fx.

2. Набрать и отладить программу получения в переменной х элемента вещественного файла Fx, полученного по п. 1 Задания, с номером, соответствующим вашему порядковому номеру в журнале по предмету ОАП.

3. Дополнить программу, полученную при выполнении п. 1 данного задания фрагментом, обеспечивающим суммирование всех чисел из файла Fx, и отладить новую программу, дав ей имя Summa.

Краткие теоретические сведения

В Паскале понятие файла имеет два значения:

· поименованная информация на внешнем устройстве (вне­шний файл);

· переменная файлового типа в Паскаль-программе (внутрен­ний файл).

В программе между этими объектами устанавливается связь. Вследствие этого все, что происходит в процессе выполнения программы с внутренним файлом, дублируется во внешнем фай­ле. С элементами файла можно выполнять только две операции: считывать из файла, записывать в файл.

Файловый тип переменной — структурированный тип, представ­ляющий собой совокупность однотипных элементов, число кото­рых заранее (до исполнения программы) не определено.

Структура описания файловой переменной имеет вид

Var <имя переменной> : File Of <тип элемента>;

Здесь <тип элемента> может быть любым, кроме файлового. Например:

Var Fi : File Of Integer;

Fr : File Of Real;

Fc : File Of Char;


Файл можно представить как последовательную цепочку эле­ментов (Эл.), пронумерованных от 0, заканчивающуюся специ­альным кодом, называемым маркером конца (М. к.):

Число элементов, хранящихся в данный момент в файле, на­зывается его текущей длиной. Существует специальная ячейка па­мяти, которая хранит адрес элемента файла, предназначенного для текущей обработки (записи или считывания). Этот адрес на­зывается указателем, или окном, файла.

Любые файлы, а также логические устройства становятся доступны программе только после выполнения особой процедуры открытия файла (логического устройства). Эта процедура заключается в связывании ранее объявленной файловой переменной с именем существующего или вновь создаваемого файла, а также в указании направления обмена информацией: чтение из файла или запись в него.

Файловая переменная связывается с именем файла в результате обращения к стандартной процедуре ASSIGN (FV, <имя файла или л. у.>). Здесь: FV — файловая переменная (правильный идентификатор, объявленный в программе как переменная файлового типа); <имя файла или л. у.> — текстовое выражение, содержащее имя файла или логического устройства (текстовое выражение, как принято в ТурбоПаскале, заключается в апострофы). Пример обращения к процедуре Assign:

Assign(Fx, 'Fx.dat');

Для того чтобы начать запись в файл, его следует открыть для записи. Это обеспечивает процедура Rewrite(FV); (где FV — имя файловой переменной). При этом указатель устанавливается на на­чало файла. Если в файле до этого была информация, она исчезает.


Схематически выполнение процедуры Rewrite можно предста­вить в следующем виде:

­

Стрелкой снизу отмечается позиция указателя.

Запись в файл осуществляется процедурой Write(FV, V); (где V — переменная того же типа, что и файл FV). Запись проис­ходит в том месте, на которое установлено окно (указатель файла). Сначала записывается значение, затем указатель смещается в сле­дующую позицию. Если новый элемент вносится в конец файла, сдвигается маркер конца.

Схема выполнения данной процедуры следующая:

Рассмотрим пример 1. Пусть требуется в файловую переменную Fx внести 15 ве­щественных чисел, последовательно вводимых с клавиатуры. Фрагмент программы для решения данной задачи может иметь следующий вид:

Var Fx : File Of Real;

X : Real; I: Byte;

Begin

Assign(Fx,'Fx. dat');

Rewrite(Fx);

For I := 1 To 15 Do

Begin

Write ('? '); ReadLn(X) ;

Write(Fx, X)

End

End.

Конец примера 1.

Для считывания элементов файла с его начала следует открыть файл для считывания, что выполняется процедурой Reset (FV). В ре­зультате указатель устанавливается на начало файла. При этом вся информация в файле сохраняется.


Схема выполнения данной процедуры следующая:

Считывние из файла осуществляется процедурой Read(FV, V); (где V — переменная того же типа, что и файл FV). При этом значение текущего элемента файла записывается в переменную V, а указатель смещается к следующему элементу.


Схема выполнения данной процедуры следующая:

Доступ к элементам файла может быть последовательным или прямым. В стандартном Паскале допускается только последователь­ный доступ к элементам.

Принцип последовательного доступа: для того чтобы прочитать n-ю запись файла, сначала следует прочитать все предыдущие за­писи с 1-й по (n-1)-ю.

Рассмотрим пример 2. Требуется в переменной х получить 12-й элемент вещественного файла Fx. Программа решения такой задачи следующая:

Program А;

Var Fx : File Of Real;

X : Real;

Begin

Reset(Fx) ;

For I := 1 To 12 Do Read(Fx, х)

End.

Конец примера 2.

Функция Eof(FV) проверяет маркер конца файла (end of file). Это логическая функция, которая получает значение True, если указатель установлен на маркер конца, и значение False — в про­тивном случае. Рассмотрим пример 3, где используется функция Eof(FV). Пусть требуется просуммировать все числа из файла Fx, описанного в примере 1. Программа решения следующая:

Reset(Fx) ;

Sx : = 0;

While Not Eof(Fx) Do

Begin

Read(Fx, х);

Sx := Sx + X

End;

Также решить данную задачу можно с помощью цикла Repeat:

Repeat

Read(Fx, х);

Sx := Sx + X

Until Eof(Fx);

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

Конец примера 3.

Порядок выполнения задания к лабораторной работе № 9П

1. На основании теоретических сведений составьте программу с именем Vvod_kl последовательного ввода с клавиатуры 20 вещественных чисел в файловую переменную Fx (см. п.1 раздела Задание к лабораторной работе № 9П). При решении используйте пример 1, где показано применение процедуры открытия для записи Rewrite и процедуры записи в файл Write.

2. Произведите отладку программы Vvod_kl и предъявите отлаженную программу преподавателю.

3. На основании теоретических сведений составьте программу Elem_N получения в переменной х элемента с номером N из вещественного файла Fx, причем номер N должен соответствовать вашему порядковому номеру в журнале по предмету ОАП (см. п.2 раздела Задание к лабораторной работе № 9П). Для решения этой задачи воспользуйтесь примером 2, где показано применение принципа последовательного доступа для осуществления доступа к n-й записи файла. Естественно, для получения в переменной х элемента с определенным номером необходимо сначала в программе Elem_N создать файловую переменную Fx и записать в нее все элементы, как это было сделано в программе Vvod_kl, и только потом методом последовательного доступа получить значение нужного элемента.

4. Произведите отладку программы Elem_N и предъявите отлаженную программу преподавателю.

5. Дополните программу, полученную при выполнения п. 1 данного задания, фрагментом, обеспечивающим суммирование всех чисел из файла Fx, и дайте новой программе имя Summa. Для решения задания воспользуйтесь примером 3, где показано применение функции Eof(FV) для обработки всех элементов файла.

6. Произведите отладку программы Summa и предъявите отлаженную программу преподавателю.

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8