Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Методические указания к лабораторная работа №4



.

Компьютеры широко используются в различных информационно-поисковых системах (адресное бюро, телефонная справочная служба и т. д.). В реальных информационных системах приходится обрабатывать и хранить большие объемы данных.

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

*** В работе «Поиск в массиве по критерию» мы использовали процедуру Val. Мы все элементы массива объявляли типа String (строка), а затем, с помощью

процедуры Val, значение возраста учащихся из типа String преобразовывали в величину целочисленного типа (Integer).

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

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

Итак, реальные данные об объектах часто описываются величинами разных типов. Например, товар на складе описывается следующими величинами: наи-менование, количество, цена, наличие сертификата качества и т. д. В этом примере наименование – величина типа String, количество – Integer цена – Real,, наличие сертификата качества можно описать величиной типа Boolean.

Для записи комбинации объектов разных типов в Паскале применяется комби-нированный тип данных запись.

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

! т. е. В отличии от массива, запись может содержать элементы, принадлежа-щие разным типам.

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

Итак: Элементы, образующие запись, называются полями.

Формат записи:

Type < имя типа> = Record

< идентификатор поля>: < тип компонента>;

< идентификатор поля>: < тип компонента>;

end;

var < идентификатор, …>: < имя типа>;

Пример: Type

Car = record тип поля

Number: Integer; {номер}

имена Fio: String[40]; {фамилия, инициалы}

полей Adress: String[60]; {адрес}

Salary: Real; {зарплата}

End;

Var M, V: Car; Доступ к полям записи осуществляется через

переменные M и V типа Car.

 

Замечания:

1 После зарезервированного слова Record точка с запятой не ставится.

2 Описания отдельных полей (или групп полей, принадлежащих одному типу) завершается точкой с запятой.

3 Перед словом End (конец) ‘; ’ не ставится.

4 Описания полей записи похожи на описание обычных переменных.

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

6 Допустимы записи, поля которых представляет собой также записи или мас-сивы.

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

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

 

Type

Employee = record

ID: Word; {идентификатор (личный номер)}

 

FirstName, SecondName, SurName: String[20]; {Имя, Отчество, Фамилия}

Standing: Word; {стаж}

Salary: Real {зарплата}

End;

Var Assistant: Employee;

Описанный выше комбинированный тип Employee включает шесть полей, три из них (имя, отчество, фамилия) представляют собой строки по 20 символов каждая. Для остальных полей ID, стаж, зарплата – выбраны типы, подходящие для соответствующей информации.

Содержание одной из записей, принадлежащих типу Employee, выглядит так:

ID SurName FirstName SecondName Standing Salary

14285 Петров Иван Кузьмич 15 1000

 

Обращение к значению поля осуществляется с помощью идентификатора переменной (имя записи) и идентификатора поля (имя поля), разделенных точкой. Такая комбинация называется составным именем.

Например: Чтобы получить доступ к полям записи Car, надо записать: M.Number; M.Fio; M.Adress.

Составное имя можно использовать везде.

Пример1: M.Number: = 14285;

M.Fio: =’Петров И. К.’;

M.Adress: = ‘Ул. Советская 35-5’;

M.Salary: = 1000;

Допускается применение оператора присваивания и к записям в целом, если они имеют один и тот же тип: V: =M;

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

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

Write(Assistant.FirstName[1]) (вывод на экран первой буквы имени)

Read(M.Number, M.Fio, M.Adress, M.Salary);

Writ (M.Number: 4, M.Fio: 7, M.Adress: 12, M.Salary: 25);

 

Пример 2: Write(‘Петров’);

Write(Assistant.FirstName[1], ’.’);

Write(Assistant.SecondName[1], ’.’);

Результат Петров И. К.

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

Type

Person = record

Fio: String[20];

Age: 1..99; {возраст}

Prof: String[30] {профессия}

End;

Var List: aaray[1..50] of Person;

 

Оператор With.

 

Указывать каждый раз составное имя – занятие не из самых увлекательных и к тому же текст программы получается громоздким, особенно если в операторах используются длинные имена. Ситуация еще больше ухудшится, если несколько подобных операторов окажутся сосредоточены в одном месте программы.

Для решения этой проблемы в языке Паскаль предназначен оператор With(в переводе «с»):

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

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

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

With M do

Begin Number: = 14285; Fio: = ‘Петров И. К.’;

Adress: = ‘Ул. Советская 35-5’;

Salary: = 1000;

End;

Здесь имя переменной М употребляется всего один раз – после оператора With. Затем все действия над полями выполняются только с указанием имен полей.

Вложенные (иерархические) записи.

 

Возможно существование записей, отдельные поля которых представляют собой также записи => оператор With тоже может быть воженным.

 

Выводы:

- так как поле записи трактуется как переменная, оно может фигурировать в выражениях (обратиться к полю записи – достаточно указать имя записи и имя поля). Набор операций над полями записей соответствует операциям, допустимым для типа, которому принадлежит данное поле.

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

- нельзя использовать с записями операции сравнения (неверно While x=y do …). Если такая необходимость существует, можно сравнивать по очереди каждое поле одной записи с полями другой.

- совершенно неприменимы к записям (в целом) арифметические и логические операции.

- к записям нельзя применить стандартные процедуры Read и Write. Однако можно организовать считывание и вывод на экран каждого поля записи в отдельности.

Вопросы к самостоятельной работе по теме «Записи».

 

1.Что такое запись?

2.Отличие записи от массива?

3.Что из себя представляют элементы записи?

4.Формат записи?

5.Для чего нужен оператор With?

 

Варианты заданий

Постановка задачи №1: Составить список учётной группы, включающей 25 человек. Для каждого учащегося указать дату рождения, год поступления в колледж, курс, группу, оценки каждого года обучения. Информацию о каждом учащемся оформить в программы в виде записи. Совокупность записей объединить в массив.

Составить программу, которая обеспечивает ввод полученной информации, распечатку её в виде таблицы, а также распечатку информации, согласно конкретному варианту.

 

 

Индивидуальные задания №1

1.Распечатать анкетные данные студентов-отличников

2.Распечатать анкетные данные студентов, успевающих на 4 и 5

3.Распечатать анкетные данные студентов, получивших одну оценку 3 за всё время обучение

4.Распечатать анкетные данные студентов, получивших в последнюю сессию оценки 2

5.Распечатать анкетные данные студентов, получивших в первую сессию все оценки 5

6.Распечатать анкетные данные студентов, получивших за всё время обучения одну оценку 4, а остальные – 5

7.Распечатать список студентов, фамилии которых начинаются с буквы А, и их оценки за всё время обучения

8.Распечатать список студентов, фамилии которых начинаются с буквы Б, и их даты рождения

9.Распечатать оценки в последнюю сессию студентов, фамилии которых начинаются с букв В и Г

10.Распечатать фамилии и даты рождения студентов, не получивших ни одной оценки 3 за всё время обучения

11.Упорядочить список студентов по среднему баллу и распечатать его

12.Упорядочить список студентов по среднему баллу последней сессии и распечатать его

13.Вычислить средний балл группы и распечатать список студентов, имеющих средний балл выше среднего балла группы

14.Вычислить средний балл группы и распечатать список студентов, имеющих средний балл ниже среднего балла группы

15.Вычислить средний балл группы в последнюю сессию и распечатать список студентов, имеющих средний балл, равный среднему баллу группы

16.Упорядочить список студентов по году рождения и распечатать его

17.Распечатать список студентов, упорядоченный по алфавиту

18.Распечатать список студентов, упорядоченный по месяцу рождения

19.Распечатать список отличников, упорядоченный по году рождения

20.Распечатать список студентов, упорядоченный по дате рождения

 

Индивидуальные задания №2

 

1.Опишите запись с именем типа Karta, содержащую следующие поля:

§ Номер измерения (тип integer)

§ Значение (тип Real)

Переменную, определяющую запись, назовите Z

 

2.Опишите запись с именем типа Karta, содержащую следующие поля:

§ Номер измерения (тип integer)

§ Значение (тип Real)

Переменную, определяющую запись, назовите S

 

3.Опишите запись с именем типа Tovar, содержащую следующую информацию о хранящемся на складе товаре:

§ Код товара (тип integer)

§ Наименование товара (тип string)

§ Цену (тип Real)

Переменную, определяющую запись, назовите Tov

 

4.Опишите запись с именем типа Graf, содержащую следующие данные необходимые для построения графика из 40 точек:

§ Название графика (тип string)

§ 40 значений (тип integer)

Переменную, определяющую запись, назовите X

 

5.Опишите запись с именем типа Baza, содержащую информацию для школьной базы данных:

§ Личный номер ученика (тип integer)

§ ФИО (тип string)

§ Год рождения (тип integer)

§ Адрес (тип string)

Переменную, определяющую запись, назовите Inf

 

6.Опишите запись с именем типа Systema, содержащую информацию о планетах солнечной системы:

§ Номер планеты по удалению от солнца (тип integer)

§ Название планеты (тип string)

§ Объём (тип Real)

§ Диметр (тип Real)

§ Удалённость от земли (тип Real)

Переменную, определяющую запись, назовите Planeta

 

7.Опишите запись с именем типа Sport, содержащую информацию о лучших спортивных достижениях школы по лёгкой атлетике:

§ Название вида (тип string)

§ Фамилия рекордсмена (тип string)

§ Дата установления рекорда (запись Dat, состоящая из полей Day, Month, Year)

§ Сообщение о результате (тип Real)

Переменную, определяющую запись, назовите Rec

 

8.Опишите запись с именем типа Geometr, содержащую информацию об оценках учеников вашего класса по геометрии:

§ ФИО (тип string)

§ Оценки за девять месяцев max по 20 оценок в месяц

Переменную, определяющую запись, назовите Dig

 

9.Опишите запись с именем типа Rasp, содержащую информацию о движении электропоездов из вашего города:

§ Направление (тип string)

§ Время отправления электропоездов (тип real)

Переменную, определяющую запись, назовите R

 

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

§ ФИО (тип string)

§ Адрес (тип string)

§ 10 строк с названиями газет и журналов

Переменную, определяющую запись, назовите G

 

11. Опишите запись с именем типа Boln, содержащую информацию в боль-ничной базе данных о стационарных больных:

§ ФИО (тип string)

§ Возраст (тип integer)

§ Адрес (тип string)

§ Дата поступления (тип string)

§ Диагноз (тип string)

§ ФИО лечащего врача(тип string)

Переменную, определяющую запись, назовите В

 

12. Опишите запись с именем типа Tovar, содержащую информацию о хранящемся на складе товаре:

§ Код товара (тип integer)

§ Наименование товара (тип string)

§ Дата поступления (тип string)

§ Цену (тип real)

Переменную, определяющую запись, назовите Tov. Без помощи with присвойте значение (10, ‘туфли женские’, 45200.00) полям одной из записей

 

13. Опишите запись с именем типа Data, содержащую информацию о сред-

ней температуре в хранилище за 30 дней:

§ Номер месяца (тип integer)

§ Температура (тип real)

Переменную, определяющую запись, назовите Zamer. Без помощи with При-свойте записи начальное значение: месяц «июль» и температура для первого дня 9, 5

14. Опишите запись с именем типа Graf, содержащую данные, необходимые для построения графика из 40 точек:

§ Название графика (тип string)

§ 40 значений (тип integer)

Переменную, определяющую запись, назовите X. Без помощи with присвойте записи начальное значение: название графика «Y=f(T)», значения первых трёх точек: 5, 7, 9

 

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

§ ФИО (тип string)

§ Адрес (тип string)

§ 10 строк с названиями газет и журналов

Переменную, определяющую запись, назовите G. Без помощи with присвойте записи начальное значение: ‘Петров И.В.’, ’г.Москва, ул.Горького, 5’, ’Московский Комсомолец’, ’Спорт’

 

16. Опишите запись с именем типа Chempion, содержащую информацию о чемпионах по разным видам спорта в разное время:

§ ФИО (тип string)

§ Вид спорта (тип string)

§ Год завоевания медали (тип word)

§ Призовой фонд (тип real)

Переменную, определяющую запись, назовите W

 

17. Опишите запись с именем типа Recept, содержащую информацию о рецепте приготовления блюда:

§ Название блюда (тип string)

§ Инструменты (тип string)

§ Когда подаётся (запись Vremya, состоящая из полей Zavtrak, Obed, Ugin)

Переменную, определяющую запись, назовите Eda

 

 

Дополнительные задания:

1.Составьте программу, которая описывает массив записей – телефонный справочник одноклассников – и обеспечивает ввод данных, поиск номера телефона по фамилии, подсчёт и вывод списка всех абонентов по критерию «увлечение компьютерными играми». В записи о каждом однокласснике содержатся следующие сведения: фамилия, имя, телефон, хобби.

 

2.Составьте программу, которая описывает таблицу химических элементов, отображая следующую информацию: название, символическое обозначение, массу атома, заряд атомного ядра, перечень основных химических свойств. Программа должна выполнять вывод данных о химическом элементе по указанному символическому обозначению, находить элемент с самой большой массой, с самым маленьким зарядом ядра.

 

3.Составьте программу, которая описывает массив записей жильцов дома, отображая в нём следующую информацию о каждом: номер квартиры, фамилия, имя, возраст, для лиц старше 18 лет в зависимости от рода занятий – записать места учебы/работы, трудового стажа, для пенсионеров – год выхода на пенсию. Программа должна обеспечить ввод данных, поиск квартиры с максимальным числом жильцов, поиск самого юного и самого пожилого жильца, поиск студентов, пенсионеров.

 

4.Опишите, использую структуру записи, вступительные экзамены, на которых абитуриенты сдавали три экзамена, а для поступления надо было набрать 12 баллов. Составьте программу, считывающую с клавиатуры результаты всех вступительных экзаменов и выводящую на экран следующую информацию:

А.Список абитуриентов, сдавших все три экзамена на 5

В.Список абитуриентов, потерпевших неудачу на экзаменах

С.Список абитуриентов, зачисленных в институт

 

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

 

6.Опишите, используя структуру записи, школьный класс (фамилия, инициалы, дата рождения, месяц рождения, год рождения). Составьте программу, считывающую с клавиатуры данные об учащихся и выводящую на экран данные о днях рождения учащихся по месяцам, например:

Январь 12 Петров И.В.

23 Каменский

Февраль 16 Дёмин А.С.

 

4.5 Пример программы:

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

 

Program Zap;

Uses crt;

Type Student = record

FIO: string[10];

GodRo: 1965..1975;

GodPostTex: 1985..1988;

Ocenki: record

Alg, Istor, Inform: 1..5;

end;

end;

 

Var Gruppa: array[1..5]of Student;

S1: Student; i, j: Integer;

Begin

clrscr; Readln;

With S1, Ocenki do

begin

for i: =1 to 5 do

begin

Write('=> '); ReadLn(FIO); ReadLn(GodRo, GodPostTex, Alg, Istor, Inform);

Gruppa[i]: =S1;

end;

end;

Clrscr;

WriteLn('Список отличников: ');

for i: =1 to 5 do

with Gruppa[i], Ocenki do

if (Alg=5)and(Istor=5)and(Inform=5)then

WriteLn(FIO, 'Год рождения: ', GodRo, 'Год поступления: ', GodPostTex: 4);

end.

 

4.6 Вопросы к защите лабораторной работы №4:

 

1.Что такое запись?

2.Отличие записей от массивов?

3.Почему запись называют комбинированным типом данных?

4.Как определяется тип записи? Формат записи?

5.Что называется полем записи?

6.Как осуществляется обращение к записи поля?

7.Какие требования предъявляются к идентификаторам поля в записи?

8.Чем определяется объём памяти, требуемый для размещения записи?

9.Какие действия можно производить с полями и записями в целом?

10.Что такое составное имя поля записи? Из каких частей оно состоит и как записывается?

11.Как применяется оператор With?

12.Что такое вложение записей? Какой максимально допустимый уровень вложения?

 

5 Лабораторная работа №5 Назначение, открытие и закрытие файлов»

 

Цель работы: Выработать навыки работы с текстовыми файлами в языке T.P. Научиться создавать и открывать файлы, считывать информацию из файлов, записывать информацию в файл, работать с элементами файла, закрывать и удалять файлы.

 

5.1 Ход работы:

1.Составить полную цепочку команд для создания простого текстового файла.

2.Вычислить факториал чисел 1, 2, 3 … 10 и вывести от введённого значения ( PRN или CON ).

3.Используя строковую процедуру Val(s, t, code) для преобразования текстовой информации составить программу получения звуковых сигналов.

4.Вычислить сумму элементов файла myfile.dat.

5.Составить программу проверки существования файла на диске.

6.Распечатать программы и результаты работы составленных программ.

7.Составить отчёт.

 

5.2 Содержание отчёта:

1.Тема

2.Цель работы

3.Ход работы

4.Постановка задач

5.Листинг программ

6.Результаты работы программ


Поделиться:



Популярное:

Последнее изменение этой страницы: 2016-08-31; Просмотров: 789; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.116 с.)
Главная | Случайная страница | Обратная связь