Главная страница

 

ДОМ
ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ

Информатика и программирование
Информационные технологии
Компьютерные сети
Информационная безопасность
Как заработать в сети Интернет
Информатика и программирование
Операційна система Windows
Текстовий редактор Word
Редактор електронних таблиць Excel
Мова програмування Pascal
Язык программирования Pascal

Теоретичний матеріал за темами:

1.              Загальні вказівки

2.              Програмування лінійних структур, обчислення арифметичних виразів

3.              Програмування розгалужених обчислюваньних процесів

4.              Програмування циклічних обчислювальних процесів

5.              Обробка текстових даних

6.              Використання типу Record

7. Використання підпрограм

8. Організація модулів

9. Робота з файлами

10. Використання динамічних змінних

  return_links(); ?>

Copyright © Евгений Литвиненко, 2007
Использование без разрешения автора запрещено

Використання типу Record

 

Записи дозволяють об'єднати під одним іменем дані різних типів. Це зручно для рішення різно­манітних задач. Спочатку треба описати тип-запис за допомогою слова Record:

TypeStudent=Record
         FIO:String[30];
         Rogd:Integer;
         Zrist:Real;
         Ocinku:Array[1..5] of Byte;
        End;

Запис складається з окремих полів, кожне поле має свій тип. Кількість полів необмежена, порядок їх проходження будь-який. Поле, в свою чергу, може бути записом, для цього попередньо, описують від­повідний тип, наприклад:

Type Data=Record
         Rik : Integer;
         Mis : 1..12;
         Chislo : 1..31;
        End;

Тепер на тип Data можна посилатись в інших записах, наприклад:

Rogd : Data;

Змінні типу „запис” описуються звичайним способом, наприклад:

VarStudEK, StudMO : Student;

Для таких змінних компілятор розподілить пам’ять відповідно до проходження полів і їх типу. Щоб звернутися до будь-якого поля, вживають складені імена, перша частина яких — ім’я змінної, а друга — ім'я поля. Наприклад:

StudEK.Fio:= 'Петренко A.M.';

Якщо поле є в свою чергу запис, то складене ім'я подовжується, наприклад:

StudEK.Rogd.Rik := 1975;

В тому випадку, коли поле — масив, є можливість звернутися до його окремого елементу: StudEK.Ocinku[k].
Складені змінні вживають як звичайні змінні в різних конструкціях програми.
В одній програмі може бути декілька різних записів (без обмежень). Записи можна об'єднувати в масив, наприклад:

VarKurs1 : Array[l..25]ofStudent;

I в цьому випадку можна звертатися до окремого запису або до конкретного поля будь-якого запису, наприклад:

Kurs1[i];
Kurs1[i].FIO;
Kurs1[i].Rogd.Rik
Kurs1[i].Ocinku[k];

Щоб ввести або вивести запис, треба ввести/вивести відповідні поля, наприклад:

Readln(StudEK.Fio);
For i:=l to 5 do Read(StudEK.Ocinku[i]);
Writeln(StudEK.Fio);
For i:=l to 5 do write(StudEK.Ocinku[i]);

Для введення/виведення масиву записів викорис­товують цикл.
Деяка незручність виникає в зв'язку з викорис­танням довгих складених імен. Конструкція With дозволяє в певній мірі зменшити її. Для цього треба визначити область дії конструкції, наприклад:

WithStudEKdo
begin
.....
End;

У визначеній області замість довгого складеного вживають більш просте ім'я, наприклад:

Readln(Fio);
For i:=1 to 5 do Read(Ocinku[i]);
Zrist:= 180;

Якщо в програмі використовується декілька записів з однаковими іменами полів, треба бути обережним з вживанням With, щоб не сталося плутанини.
У загальному випадку виділяють два види задач: обробка одиноких записів та обробка масивів записів.  
Перший вид зустрічається, наприклад, в інфор­маційно-довідкових системах, коли вся інформація зберігається в файлі і треба одержати яку-небудь довідку, наприклад, скільки в групі студентів вчить­ся на 4 та 5.
Для розв'язання такої задачі достатньо читати з файлу запис за записом і аналізувати відповідне поле.
Масив записів вживають в тих випадках (хоча це не є економне використання пам'яті), коли для розв'язування задачі треба мати в пам'яті всі записи, наприклад, під час сортування записів за певною ознакою (середній бал успішності, зріст студентів тощо). 
Приклад. Вивести список студентів, що навчаються на 4 та 5.
Програма:

Type S=Record
        FIO:String;
        GR:Word;
        GP:Word;
        O:Array[1..3] of Byte;
       End;
Var a:Array[1..10] of S;
    i,j,n:Byte;
    B:Boolean;
Begin
 Write('Kolichestvo students:');
 Readln(n);
 For i:=1 to n do
  Begin
   Writeln('Student-',i);
   Write('Input FIO:');
   Readln(a[i].FIO);
   Write('Input god rogdenia:');
   Readln(a[i].GR);
   Write('Input god postuplenia:');
   Readln(a[i].GP);
   For j:=1 to 3 do
    Begin
     Write('Input ',j,' ocenku:');
     ReadLn(a[i].O[j]);
    End;
  End;
 For i:=1 to n do
  Begin
   B:=True;
   For j:=1 to 3 do
     If a[i].O[j]<4 Then B:=False;
   If B=True Then Writeln(a[i].FIO:30);
 End;
End.

Copyright © Eugene, 2007
e-mail: webmaster@ITDom.info
Rambler's Top100 Рейтинг@Mail.ru