Методические указания и задания к лабораторным работам для учащихся ссуз специальности Т1002 «Программное обеспечение информационных технологий»

Вид материалаМетодические указания

Содержание


Порядок выполнения работы
Контрольные вопросы
Лабораторная работа № 25 Написание программы на языке Паскаль с использованием записей
Краткие теоретические сведения
Запись-это структурированный тип данных, состоящий из фиксированного числа компонентов, называемых полями записи
Mashina.Marka, Mashina.FIO, Mashina.Number
Пример присваивания полям записи Mashina
Read (Mashina. Number, Mashina. FIO, Mashina. Address)
Mash станут равны значениям соответствующих полей записи Mashina.
With, можно работать с именами полей как с обычными переменными. Пример присвоения значения полям записи Car с помощью оператора
Пример программы работы с записями
Title- поле для записи названия программы, Author
Подобный материал:
1   ...   20   21   22   23   24   25   26   27   ...   32

Порядок выполнения работы

  1. Изучить теоретические сведения по теме “Написание программы на языке Паскаль с использованием строковых переменных”.
  2. Получить у преподавателя индивидуальное задание и разработать программу для работы со строками согласно заданному варианту.
  3. Показать работающую программу преподавателю.
  4. Ответить на контрольные вопросы.

Контрольные вопросы

  1. Понятие строковых выражений.
  2. Операции со строковыми данными.
  3. Примеры программ работы со строками.



Лабораторная работа № 25

Написание программы на языке Паскаль с использованием записей



Цель работы: формирование знаний и умений по работе с записями. Приобретение навыков работы с записями.

Краткие теоретические сведения


При решении научно- технических и экономических задач обработки совокупностей большого количества значений используются массивы. Но при работе с массивами основное ограничение заключается в том, что каждый элемент массива должен иметь один и тот же тип данных.

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

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

Запись-это структурированный тип данных, состоящий из фиксированного числа компонентов, называемых полями записи. Определение типа записи начинается идентификатором Record и заканчивается зарезервированным словом end. Между ними заключен список компонентов, называемых полями, с указанием имен полей и типа каждого поля.

Структура объявления типа записи такова:

Type


<имя типа> = Record

<имя поля>: <тип компонентов>;



<имя поля>: <тип компонентов>;

End;

VAR

<имя переменной>: <имя типа>;


Пример описания записи:

Type


Car=Record

Number:Integer;

Marka:String[20];

FIO:String[40];

Address:String[60];

End;

Var


Mashina: Car;

В данном примере была объявлена запись с именем Car, у которой имеется 4 поля: номер, название марки машины, ФИО владельца и его адрес.

Идентификатор поля должен быть уникален только в пределах записи, однако лучше его сделать уникальным в пределах всей программы. Объем памяти, необходимый для записи, складывается из длин полей. Значения полей записи могут быть использованы в выражениях. Обращение к значению поля осуществляется с помощью идентификатора переменной и идентификатора поля, разделенных точкой. Такая комбинация называется составным именем.

Например, доступ к полям записи Car осуществляется как: Mashina.Marka, Mashina.FIO, Mashina.Number. Составное имя можно использовать везде, где допустимо применение типа поля. Для присваивания полям значений используется оператор присваивания.

Пример присваивания полям записи Mashina:

Mashina. Number:=164536l;

Mashina.Marka:=’ГАЗ-24’;

Mashina.FIO:=’Иванов И.И’;

Mashina. Address:=’ул.Пушкина 12-30’;

Составные имена можно использовать в операторах ввода-вывода:

Read (Mashina. Number, Mashina. FIO, Mashina. Address);

Write(Mashina. Number:4, Mashina. FIO:12, Mashina. Address:25);

Допускается применение оператора присваивания и к записям в целом, если они имеют один и тот же тип. Например,

Mash:=Mashina;

После выполнения этого оператора значения полей записи Mash станут равны значениям соответствующих полей записи Mashina.

В ряде задач удобно пользоваться массивами из записей. Их можно описать следующим образом:

Type
Car=Record

Number:Integer;

Marka:String[20];

FIO:String[40];

Address:String[60];

End;

Var

Mashins: array [1..20] of Car;

Обращение к полям такой записи имеет громоздкий вид, для решения этой проблемы в языке Паскаль предназначен оператор With, который имеет следующий формат:

With <переменная типа запись> do <оператор>;

Один раз, указав переменную типа запись в операторе With, можно работать с именами полей как с обычными переменными.

Пример присвоения значения полям записи Car с помощью оператора With.

With Mashina do

Begin

Number:=164536l;

Marka:=’ГАЗ-24’;

FIO:=’Иванов И.И’;

Address:=’ул.Пушкина 12-30’;

End;

Пример программы работы с записями


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

Для описания сведений о компьютерных программах в разделе типов введем тип Prog_Type –запись следующей структуры:


Prog_Type=Record

Title:String[50];

Author:String[50];

Entry:Integer;

Firma:String[40];

End;

где Title- поле для записи названия программы, Author-поле для записи фамилии автора, Entry- поле для записи года разработки, Firma-поле для записи фирмы-разработчика.

В разделе описания переменных введем массив Prog_Katalog из 10 записей типа Prog_Type.Переменную Num_Array, принимающую значения от 1до 10 введем для указания на порядковый номер записи в массиве Prog_Katalog. Для критерия поиска введем переменную Author строкового типа. Результат поиска записывается в переменную логического типа Yes_Prog.

В целом текст программы может выглядеть так:

Program Katalog;

Type

Prog_Type=record

Title:string[50];


Author:String[50];

Entry:Integer;

Firma:String[40];

end;

Var

Prog_Katalog:Array[1..10] of Prog_Type;

Num_Array:1..10;

Author:String[50];

Yes_Prog:Boolean;

Procedure Input_Data;

Begin

Writeln('Введите данные о ',Num_Array,'-й программе:');

With Prog_Katalog[Num_Array] do

begin

Write('Название программы: ');

Readln(Title);

Write('Автор:');

Readln(Author);

Write('Год разработки:');

Readln(Entry);

Write('Фирма:');

Readln(Firma);


Writeln;

end;

end;

Procedure Write_Data(Num:Integer);

begin

Writeln('Программа № ',Num);

With Prog_Katalog[Num_Array] do

begin

Writeln('Название:',Title);

Writeln('Фамилия автора:',Author);

Writeln('Год разработки:',Entry);

Writeln('Фирма:',Firma);

end;

end;

{Основная программа}

Begin

{У пользователя запрашивается 3 раза ввод данных о программах}

for Num_Array:=1 to 3 do

Input_Data;

Writeln;

Writeln('Поиск информации(программы) по фамилии автора: ');

Writeln;

Write('Введите фамилия автора: ');

Readln(Author);

Yes_Prog:=False;

for Num_array:=1 to 10 do

if Prog_Katalog[Num_Array].Author=Author then

begin

Write_Data(Num_Array);

Yes_Prog:=True;

end;

if not Yes_Prog then Write('Нет программ данного автора ',Author);

end.