Каталог Индекс раздела
Назад Оглавление Вперед

Лабораторная работа N 7
ЗАПИСИ

1. ЦЕЛЬ РАБОТЫ: Приобретение практических навыков в составлении алгоритмов и программ с записями.

2. ОСНОВНЫЕ СВЕДЕНИЯ

Записи в Паскале - фиксированное число элементов одного или нескольких типов. Т.е. в отличие от массивов, в которых содержатся элементы одного типа, в записях могут содержаться элементы как одного, так и разных типов. Например, сведения о книгах: автор, название книги, издательство, год издания, её цена. Первые три элемента относится к строковому типу данных, четвертый к целому, а цена - к вещественному типу. Элементами записей могут быть базовые типы, переменные, массивы, указатели, записи и т.д. Элементы записи вместе с их описанием называются полями записи. Над элементами записи можно выполнять действия, допустимые для данных этого типа.

Все записи должны быть описаны в разделе TYPE. Описание записи начинается со служебного слова RECORD заканчивается END, между которыми указывается список имен и типов полей, выбранных пользователем.

Все идентификаторы полей в записи должны быть различными.

Например, запись Вооk можно описать следующим типом card:

TYPE card = record
            Author : string [15];    
            Title: string [20];  
            Firm: string[10];   
            year : integer ;   	        
            cena  : real
End;
VAR  Book  :  card;
Тип записи (например, card) вводит только шаблон записи и с его именем не связан никакой конкретный объект. Обращение к полю выполняется с помощью составного имени (селектора записи), которое состоит из :
<имя_записи> . <имя_элемента>

Например, присвоить значения элементам записи Author и Title можно так:

Book.author:='Довгаль С.И.'; Book.title:='Турбо Паскаль V 7.0';

Ввод цены книги с клавиатуры : readln (Book.cena) ;

Для упрощения и сокращения записи составных имен используется оператор присоединения WITH. Имя записи выносится в заголовок оператора присоединения, а в блоке используются только имена полей записи. Общий вид оператора присоединения :

WITH  <имя записи>  DO <оператор>;

Предыдущие операторы можно записать проще:

With  Book  do  begin
       author:='Довгаль С.И.'; title:='Турбо Паскаль V 7.0'; readln (cena);
      end;

Пример: Из ведомости 10 студентов с их оценками ( порядковый номер, Ф.И.О. и три оценки) определить количество отличников и средний бал каждого студента.

Program  lab6; 
Type wed  =  record      {Тип wed включает 3 поля: n, fio, bal}
        n : integer ;
        fio : string[15] ;
        bal : array [1..3] of integer   {Поле bal - массив из 3 оценок }
     end;
Var spisok : wed ;       {Запись spicok  типа  wed}
    i, j, kol, s : integer;   
    sr : real;
Begin
   kol:=0;       {kol- количество отличников}
   With spisok do        {with присоединяет имя записи spisok ко всем }
      For i:=1 to 10 do     { полям внутри  цикла For по i }
         begin
            n:=i; 
            Writeln(' Введите ФИО  N  ',  i ); Readln (fio);
            s:=0;
            For  j:= 1 to 3 do
               begin
                  write ( 'введите оценку: ' );  readln ( bal [j] );     
                  s := s+ bal [j];
               end;
            if s=15 then kol:=kol+1;  {подсчет количества отличников}
            sr := s/3;   
            writeln ( fio,  '  средний бал =', sr:4:1);
         end;                          
      writeln ( ' Количество отличников = ', kol );
      readln;
end.

3. ВЫПОЛНЕНИЕ РАБОТЫ

В соответствии с вариантом написать и выполнить программу:

  1. Дана информация о четырех студентах. Запись имеет вид: фамилия, год рождения, место рождения, факультет. Вывести данные о самом старшем по возрасту студенте.
  2. Дана информация о пяти школах. Запись имеет вид: номер школы, год, количество выпускников, число поступивших в ВУЗы. Вывести данные о школе с самым большим отношением числа поступивших к числу выпускников.
  3. Дана информация о пяти комнатах в общежитии. Запись имеет вид: фамилии, номер комнаты, факультет, площадь. Вывести данные о комнате, в которой наименьшая площадь.
  4. Дана информация о пяти рабочих цеха. Запись имеет вид: фамилия, пол, размер зарплаты, стаж работы. Вывести данные о рабочем с наибольшей зарплатой.
  5. Дана информация о четырех вузах. Запись имеет вид: название вуза, число студентов, количество факультетов, количество кафедр. Вывести данные об общем числе студентов.
  6. Дана информация о шести вкладчиках в сберкассы. Запись имеет вид: фамилия, район, соц.положение, величина вклада. Вывести данные о том, сколько среди вкладчиков служащих, рабочих и колхозников.
  7. Дана информация о пяти больных. Запись имеет вид: фамилия, возраст, пол, давление. Вывести данные о больных с повышенным давлением (больше 140) .
  8. Дана информация о пяти квартирах. Запись имеет вид: фамилия владельца, площадь, число комнат, этаж. Вывести данные о квартирах с площадью меньше 30 кв.м и подсчитать их количество

4. КОНТРОЛЬНЫЕ ВОПРОСЫ

  1. Какие типы данных относятся к простым, какие к сложным ?
  2. Как объявляются записи ?
  3. Чем отличается запись от массива ?
  4. Какие операции допустимы над записью в целом?
  5. Как записывается уточненное имя ?

Каталог Индекс раздела
Назад Оглавление Вперед