русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Последовательная обработка типизированных файлов


Дата добавления: 2014-11-27; просмотров: 932; Нарушение авторских прав


 

Пример 1. Программа обработки файла, содержащего данные простого типа.При исследовании некоторого технического объекта замерены его параметры Xi и записаны в набор данных StatDan в виде вещественных чисел. Вычислить их среднее значение Mx и стандартное отклонение s по формулам:

 

Алгоритм для этой задачи будет следующий.

1.

 
 

Открыть файл

2. Подсчитать среднее значение Mx и стандартное отклонение s.

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

Уточняем алгоритм.

1.1. Связать файл из программы с набором StatDan.

1.2. Открыть файл для чтения.

2.1. Mx := 0.

2.2. s := 0.

2.3. N := 0.

2.4. Пока не конец файла выполнить

2.4.1. Считать из файла число.

2.4.2. Mx := Mx + число.

2.4.3. s := s + х2

2.4.4. N := N + 1.

2.5. Вычислить Mx и s.

2.6. Вывести Mx и s.

2.7. Закрыть файл.

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

 

Программа, реализующая этот алгоритм, может быть такой:

 

Program Stat;

Var

F : File Of Real;

X,M,S : Real;

N : Integer;

Begin

Assign(F,’StatDan’);{ Здесь имя набора задано в виде}

Reset(F); { строковой константы StatDan}

S := 0;

M := 0;

N := 0;

While not Eof(F) do

Begin

Read(F,X);

N := N+1;

M := M+x;

S := S+Sqr(X);

end;

M := M/N;

S := Sqrt(S-Sqr(M))/ N;

Writeln(’Количество измерений - ’,N);

Writeln(’Среднее: ’,M:8:3,’ Отклонение: ’,S:8:3);

end.

 

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

 

Как отмечалось выше, к таким данным можно отнести массивы и записи Паскаля. Наиболее типичными являются файлы, содержащие данные типа Record.

Задача. Сформировать и вывести на экран файл, представляющий собой ведомость успеваемости студентов 1 курса ФАИТ. Данные об одном студенте имеют структуру вида:

Фамилия, Имя, Отчество, номер зачетки, оценки по 5 предметам.



Количество студентов (n) и сведения о них вводятся с клавиатуры. Программа для решения поставленной задачи может быть такой.

 

Program Sozd_Fil;

Const

M=5; { Количество оценок }

Type

Stud=Record

Fam, Im, Ot : String[10];

NumZ : LongInt;

Otm : Array[1..M] Of Integer;

End;

Var

Vedom : File Of Stud;

A : Stud;

FilName : String; { имя набора данных }

j,i,n : Integer;

Begin

Writeln(’Введите имя набора данных’);

Readln(FilName);

Assign(Vedom,FilName);

Rewrite(Vedom); {Открытие файла для записи}

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

Readln(n);

Writeln (’Вводите сведения о каждом студенте’);

For i:=1 to n do

Begin

With A do

Begin

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

ReadLn(Fam);

Write(’Имя: ’);

ReadLn(Im);

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

ReadLn(Ot);

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

ReadLn(Numz);

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

For J := 1 to 5 do

Begin

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

ReadLn(Otm[j]);

End;

End;

Write(Vedom,A); {Запись в файл переписывается целиком}

End;

Close(Vedom);

Writeln (’Конец работы. Нажмите клавишу ENTER’);

ReadLn;

End.

 

Пример 3. Последовательная обработка файла Vedom

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

 

Program Count_2;

Const

M=5;

Dl=10;

Type

Stud = Record

Fam, Im, Ot : String[Dl];

Numz : LongInt;

Otm : Array[1..M] Of Integer;

End;

Var

Vedom : File Of Stud;

FilName : String;{имя набора данных}

A : Stud;

i,j,kdv,K2 : Integer;

Begin

Writeln(’Введите имя набора данных’);

Readln(FilName);

Assign(Vedom,FilName);

Reset (Vedom); {открытие файла, 1-я запись - в буфере}

kdv := 0;

I := 0;

Writeln(’Список фамилий и номеров зачеток неуспевающих студентов’);

While Not Eof(Vedom) Do

Begin

K2 := 0;

Read(Vedom,A);

I := i+1;

With A Do

Begin

For j := 1 To M Do

If Otm[j] < 3 Then

K2 := K2+1;

If K2 > 0 Then

Begin

kdv := kdv+1;

Writeln(Fam:15,Numz:8);

End;

End;{Whith}

End;{While}

Writeln(’Проверено ’,i,’ студентов.’);

Writeln(’Из них неуспевающих ’,kdv,’ человек’);

WriteLn(’Нажмите Enter’);

Readln;

End.

21.2.2. Использование прямого доступа
к записям типизированного файла

 

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

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

Для установки указателя на нужную запись используется специальная процедура Seek, которая в общем виде записывается так:

Seek (Файл, Номер_записи);

Пример.Seek(Filank,10); – поиск 10–той записи

Seek(f,i); – поиск i–той записи.

Обычно применяют пары:



<== предыдущая лекция | следующая лекция ==>
Алгоритм | Seek Seek


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 3.711 сек.