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

Оператор_1;

В Операторе_1 к полям записи автоматически добавляется Имя_Записи.

С использованием этого оператора цикл ввода данных в приведенной выше программе был бы записан так

For i:=1 to n Do

With Vedom[i] do

Begin

Write(’Фамилия: ’);

ReadLn(Fam);

Write(’Имя: ’);

ReadLn(Im);

Write(’Отчество: ’);

ReadLn(Ot);

Write(’Номер зачетки: ’);

ReadLn(Numz);

WriteLn(’Вводите оценки по одной’);

For j := 1 to m do

Begin

WriteLn(’Введите ’,j,’ –ю оценку’);

ReadLn(Otm[j]);

End;

End; { With }

Пример 2. Ввести в ЭВМ список характеристик N стран мира, содержащий информацию вида (N<=40):

Название, площадь

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

Общий алгоритм для этой задачи будет такой.

  1. Ввести характеристики стран.

  2. Упорядочить характеристики по убыванию площади.

  3. Вывести полученный список.

  4. Закончить.

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

1.1. Ввести количество стран (n).

1.2. Для номера страны (i) от 1 до n выполнить

ввести страну [i].

2. Для номера просмотра (k) от 1 до n - 1 выполнить

Для номера страны (i) от 1 до n - k выполнить

Если у Страны[i]. площадь > Страны[i + 1]. площадь, то

Поменять местами Страну[i] и Страну[i + 1].

3. Для номера страны (i) от 1 до n выполнить

ввести у страны [i]. название и площадь.

4. Закончить.

Программа для этого алгоритма имеет вид.

Program Lends;

Const

Nmax=40; { Max количество стран в списке }

Dl=15; { длина названия }

Type

Country = Record

Name : String [15];

Square : Integer;

End;

Var

Count : Array [1..Nmax] Of Country;

Count1: Country;

n, i, k : Integer;

Begin

Writeln(’Введите количество стран’);

Readln(n);

Writeln(’Вводите информацию о каждой стране’);

For i:=1 to n Do

With Count[i] do

Begin

Write(’Название: ’);

ReadLn(Name);

Write(’Площадь: ’);

ReadLn(Square);

End;

{ Сортировка }

For k:=1 to n - 1 Do

For i:=1 to n - k Do

If Count[i].Square > Count[i+1].Square then

Begin

{ Перестановка }

Count1:= Count[i];

Count[i]:= Count[i+1];

Count[i]:= Count1;

End;

Writeln('Характеристики стран');

For i:=1 to n Do

With Count[i] do

Writeln(Count[i].Name:20, Count[i].Square:8);

Writeln('Работа окончена, нажмите Enter');

Readln;

End.

21. Файлы и наборы данных

Для ЭВМ любая информация: программа, исходные данные и результаты является набором данных (НД).

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

Наборы данных различаются по следующим параметрам:

1) типу носителя (бумага, НМД);

2) типу составляющих их элементов (записей);

3) способу организации.

Сведения об этих характеристиках необходимы операционной системе ЭВМ для того, чтобы обеспечить работу с набором.

В программе на Паскале наборам данных соответствуют файлы.

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

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

Таким образом, запись – основная единица набора. В программе одной записи могут соответствовать:

а) данное скалярного типа (обычно число);

б) массив;

в) данное типа Record.

В Паскале определены три типа файлов:

1) текстовые;

2) типизированные;

3) нетипизированные.

Различие между ними заключается в следующем.

1) Текстовый файл состоит из строк символов. Конец записи определяется концом строки. Чтение и запись в файл осуществляется посимвольно.

2) Типизированный файл может состоять из записей любого типа.

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

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

Таким образом, обработка файла может производиться двумя способами:

1) с использованием последовательного доступа;

2) с использованием прямого (произвольного) доступа.

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

Основными операциями над файлами являются:

1) связь с набором данных;

2) открытие;

3) чтение;

4) запись;

5) закрытие;

6) усечение.

1. Связь файла с набором данных осуществляется с помощью специальной процедуры Assign, которая в общем виде записывается так: