![]() Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву ![]() Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Написание программы на языке Паскаль с использованием записейСодержание книги
Похожие статьи вашей тематики
Поиск на нашем сайте
Цель работы: формирование знаний и умений по работе с записями. Приобретение навыков работы с записями. Краткие теоретические сведения При решении научно- технических и экономических задач обработки совокупностей большого количества значений используются массивы. Но при работе с массивами основное ограничение заключается в том, что каждый элемент массива должен иметь один и тот же тип данных. Иногда для решения задач, в которых возникает необходимость хранить и обрабатывать совокупности данных различного типа, используются записи. Запись представляет собой наиболее общий и гибкий структурированный тип данных, так как она может быть образована из не однотипных компонентов и в ней явным образом выражена связь между элементами данных, характеризующими реальный объект. Запись -это структурированный тип данных, состоящий из фиксированного числа компонентов, называемых полями записи. Определение типа записи начинается идентификатором 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. Порядок выполнения работы 1. Изучить теоретические сведения по теме “Работа с записями”. 2. Получить у преподавателя индивидуальное задание. 3. Разработать программу для работы с записями согласно полученному заданию. 4. Показать работающую программу преподавателю. 5. Ответить на контрольные вопросы. Контрольные вопросы 1. Понятие записи. Структура объявления типа записи. 2. Обращение к значению поля. Составные имена. 3. Присвоение полям записи значений. Массивы записей. 4. Пример программы с использованием записей.
Лабораторная работа № 26 Написание программы на языке Паскаль с использованием записей с вариантами Цель работы: формирование знаний и умений по работе с записями с вариантами. Приобретение навыков работы с вариантными полями. Краткие теоретические сведения Записи, рассмотренные в предыдущей лабораторной работе, имеют строго определенную структуру. В некоторых случаях это резко ограничивает возможности их применения. Поэтому в языке Паскаль имеется возможность задать тип записи, содержащий произвольное число вариантов структуры. Такие записи называются записями с вариантами. Записи с вариантами обеспечивают средства объединения записей, которые похожи, но не идентичны по форме. Они состоят из фиксированной и вариантной частей. Вариантная часть формируется с помощью оператора Case. Он задает особое поле записи-поле признака, которое определяет, какой из вариантов в данный момент будет активизирован. Значением признака в каждый текущий момент выполнения программы должна быть одна из расположенных далее констант. Константа, служащая признаком, задает вариант записи и называется константой выбора. Формат: Type <имя типа> = Record Case <поле признака>: <имя типа> of <константа выбора 1>: (поле, …: тип); … <константа выбора n>: (поле, …: тип); End; Компоненты каждого варианта (идентификаторы полей и их типы) заключаются в круглые скобки. У части Case нет отдельного end. Одно слово end заканчивает всю конструкцию записи с вариантами. Количество полей каждого из вариантов не ограничено. Объем памяти, необходимый для записи с вариантами, складывается из объемов полей фиксированной части и максимального по объему поля переменной части. Пример: Type Rec= Record Number:Byte; Code:Integer; Case Flag:Boolean of True:(Proce1:Integer); False:(Price2:Real); End; Var PRec: Rec; В данном примере была объявлена запись с именем Rec, у которой поля Number и Code расположены в фиксированной части записи, они доступны в программе в любой текущий момент независимо от значения поля признака. Поле Price 1 может использоваться только в том случае, если значение поля признака Flag равно True. Поле Price 2 доступно в противоположном случае, т.е. если значение Flag равно False.
При использовании записей с вариантами необходимо придерживаться следующих правил: 3 все имена полей должны отличаться друг от друга, по крайней мере, одним символом, даже если они встречаются в разных вариантах 3 запись может иметь только одну вариантную часть, причем вариантная часть должна размещаться в конце записи 3 если поле, соответствующее какой-либо метке, является пустым, то оно записывается следующим образом: < метка>: (); Пример программы работы с записями Пусть необходимо составить программу, которая создает каталог изданий в библиотеке, обеспечивает ввод данных о литературе, поиск и подсчет количества книг данного издания. Литературу в библиотеке можно разделить на три типа изданий: книги, журналы, газеты. Для описания сведений о типе изданий в разделе типов введем перечисляемый тип: Type_Publ=(Book,Journal,Newspaper); Для описания сведений о литературе в разделе типов ведем тип Liter. Для разного типа изданий в каталоге требуется хранить разную информацию, например: если для поиска книги нужно знать год издания, то для журнала помимо года издания, нужно знать его номер, а для газеты не только год, номер, но и день выпуска. В связи с необходимостью хранения разной информации в структуре записи Liter наряду с неизменной частью - полями Title и Author, в которых отображается название публикации и фамилия автора будет вариантная часть, отражающая дату издания по-разному в зависимости от типа издания. Запись Liter будет иметь следующую структуру: Liter=Record Title:String[50]; Author:String[50]; Case V: Type_Publ of Book: (YearB:Integer); Journal: (Num:1..12; YearJ:1900..2001); Newspaper: (Day:1..31; Month:1..12; YearN:Integer); End; где V - признак выбора вариантов, который может принимать значение Book, Journal, Newspaper. Для типа Book предусмотрено хранение года издания (поле YearB), для издания типа Journal- номера(Num) и год издания (поле YearJ), для издания типа Newspaper –дня (поле Day), месяца (поле Month) и года выпуска (поле YearN). В разделе описания констант зададим значение максимального числа записей в каталоге Count=10. Текст программы: Program Kat_Library; Type Type_Publ=(Book,Journal,Newspaper); Liter=Record Title:string[50]; Author:String[50]; case V:Type_Publ of Book:(YearB:Integer); Journal:(Num:1..12; YearJ:1900..2000); Newspaper:(Day:1..31; Month:1..12; YearN:Integer); end; Const Count=10; Var Katalog:Array[1..Count] of Liter; Num_Array:1..Count; Yes_Liter:Boolean; Vybor:Byte; Edition:Type_Publ; Count_Find:Integer; Procedure Input_Data; Begin Writeln('Введите данные о литературе ',Num_Array,':'); Write('Введите число, указывающее вид издания:'); Write('1-книга, 2-журнал, 3-газета: ');
Readln(Vybor); Case Vybor of 1:Katalog[Num_Array].V:=Book; 2:Katalog[Num_Array].V:=Journal; 3:Katalog[Num_Array].V:=Newspaper; end; With Katalog[Num_Array] do begin Write('Фамилия автора: '); Readln(Author); Write('Название:'); Readln(Title); Case V of Book:begin Write('Год издания: '); Readln(YearB); end; Journal:begin Write('Номер: '); Readln(Num); Write('Год издания: '); Readln(YearJ); end; Newspaper:begin Write('Дата издания: День '); Readln(Day); Write('Месяц: '); Readln(Month); Write('Год: '); Readln(YearN); end; end; end; end; Procedure Write_Data; begin Writeln; Writeln('Литература № ',Num_Array); With Katalog[Num_Array] do begin Writeln('Название:',Title); Writeln('Фамилия автора:',Author); Case V of Book:begin Writeln('Год издания:',YearB); end; Journal:begin Write('Номер: ',Num); Writeln('Год издания: ',YearJ); end; Newspaper:begin Writeln('Дата издания: День:',Day,'Месяц:',Month,'Год:',YearN); end; end; end; end; procedure Find_Liter; begin Writeln('Поиск литературы по типу издания: '); Writeln; Write('Введите число, указывающее вид издания: '); Write('1-книга, 2-журнал, 3-газета'); Readln(Vybor); case Vybor of 1:Edition:=Book; 2:Edition:=Journal; 3:Edition:=Newspaper; end; Yes_Liter:=False; Count_Find:=0; for Num_Array:=1 to Count do If Katalog[Num_Array].V=Edition then begin Count_Find:=Count_Find+1; Write_Data; Yes_Liter:=True; end; if not Yes_Liter then Writeln('В библиотеке нет такой литературы ') else Writeln('Всего в библиотеке',Count_Find,' таких изданий'); end; begin for Num_Array:=1 to Count do Input_Data; Writeln; Find_Liter; end. Порядок выполнения работы 1. Изучить теоретические сведения по теме “Работа с вариантными записями”. 2. Получить у преподавателя индивидуальное задание. 3. Разработать программу для работы с записями с вариантами согласно полученному заданию. 4. Показать работающую программу преподавателю. 5. Ответить на контрольные вопросы. Контрольные вопросы 1. Понятие записи с вариантами. Структура объявления. 2. Правила использования записей с вариантами. 3. Пример программы с использованием записей с вариантами.
Лабораторная работа № 27
|
||||||||
Последнее изменение этой страницы: 2016-08-12; просмотров: 521; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.118.195.178 (0.011 с.) |