Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь 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; просмотров: 512; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.129.194.30 (0.009 с.) |