Опубликован: 04.06.2009 | Уровень: специалист | Доступ: платный | ВУЗ: Нижегородский государственный университет им. Н.И.Лобачевского
Лекция 1:

Введение в базы данных. Общая характеристика основных понятий

Лекция 1: 123 || Лекция 2 >

В алгоритмическом языке Паскаль вводится такой вид данных, как запись (RECORD) – сложная переменная с несколькими компонентами, которые могут иметь разные типы. Кроме того, доступ к компонентам записи (полям) осуществляется не по индексу, а по имени. При программировании задачи 1 на языке Паскаль логическая запись НАЧИСЛЕНИЕ представляется видом данных RECORD, набор экземпляров логических записей сотрудников (логический файл) представляется "физическим" файлом, формируемым средствами языка Паскаль и операционной системы.

Salary = RECORD
      FIO:	string;
      O:	real;
      Ko:	real;
      S:	real;
END;

Отметим важную специфику таких невычислительных задач. Для этих задач характерны большие объемы данных (большое количество сотрудников, большое количество производимых изделий и т. п.). Указанные данные, как правило, используются для решения задачи многократно (зарплата начисляется постоянно каждый месяц), поэтому данные должны достаточно долго храниться в памяти ЭВМ. Для длительного хранения всегда используется внешняя память.

В связи с этим решение задачи 1 состоит из двух этапов.

1. Ввод исходных данных и занесение их во внешнюю память.

type
Salary = RECORD
FIO:	string;
O:	real;
Ko:	real;
S:	real;
END;
FSalary = File of Salary;
var
  F: FSalary;
...
{ Ввод исходных данных }
repeat
   write('Введите количество сотрудников (не более',
         MaxN,' ): ');
   readln(N);
until (N>0) AND (N<=MaxN);
For I := 1 to N do
Begin
  Write('Введите фамилию сотрудника с номером ',I,': ');
  ReadLn(Sotr[i].FIO);
  Write('Введите оклад сотрудника с номером ', I, ': ');
  ReadLn(Sotr[i].O);
  Write('Введите кол-во отработанных дней сотрудника с
        номером ', I, ': ');
  ReadLn(Sotr[i].Ko);
End;

{ Занесение данных во внешнюю память }

Assign(F, 'MyFile.fsf');
Rewrite(F);
For I := 1 to N do
  Write(F, Sotr[i]);
Close(F);
...

2. Чтение исходных данных из внешней памяти, расчет начисленных сумм и вывод на печать.

...
{ Чтение данных из внешней памяти }
Assign(F, 'MyFile.fsf');
Reset(F);
For I := 1 to N do
  Read(F, Sotr[i]);
Close(F);
{ Расчет и печать начисленных сумм }
For I := 1 to N do
Begin
  Sotr[i].S := Sotr[i].O * Sotr[i].Ko / Kr;
  WriteLn(Sotr[i].FIO, ': ', Sotr[i].S);
End;
...

Представленные программы решают поставленную задачу при сделанных предположениях. Необходимые для этого данные хранятся в файле MyFile.fsf, предназначенном только для решения этой задачи. Отметим, что в этом случае описание данных включено в прикладную программу. При изменении формата записей файла необходимо изменение прикладной программы. Таким образом, программная система, решающая поставленную задачу, определяет свои собственные данные и управляет ими. Такие программные системы называются файловыми системами [ [ 1.2 ] ], [ [ 1.3 ] ].

Задача 2. Учет кадрового состава.

Здесь обрабатываются сведения о сотруднике, представленные в карточке СОТРУДНИК:

Фамилия, имя, отчество Должность Год рождения Оклад Место жительства
FIO D G O M

Решение задачи состоит из следующих этапов:

Ввод исходных данных и занесение их во внешнюю память.

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

...
{ Чтение данных из внешней памяти }
Assign(F, 'MyFile.fsf');
Reset(F);
IsFound := False;
For I := 1 to N do
Begin
	Read(F, Sotr);
	If Sotr.FIO = KeyFio Then
	Begin
		IsFound := True;
		Sotr.D := 'Начальник отдела';
		Seek(F, FilePos(F)-1);
		Write(F, Sotr);
		Break;
	End;
If IsFound Then 
WriteLn('Корректировка успешно произведена')
Else WriteLn('Сотрудника ', KeyFio, 'не обнаружено');
Close(F);
...

В рассматриваемом случае задача 2 решается независимо от задачи 1.

Лекция 1: 123 || Лекция 2 >
Александра Каева
Александра Каева
Карина Максутова
Карина Максутова
Виктор Погула
Виктор Погула
Россия, Новокузнецк, СибГИУ, 2002
Мария Янушкевич
Мария Янушкевич
Россия