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


Тема. Решение задач с использованием переменной типа Record



Цель работы: приобретение навыков работы с переменной типа Record

Теоретическая часть

Запись представляет собой совокупность ограниченного числа логически связанных компонентов, принадлежащих к разным типам. Компоненты записи называются полями, каждое из которых определяется именем. Поле записи содержит имя поля, вслед за которым через двоеточие указывается тип этого поля. Поля записи могут относиться к любому типу, допустимому в языке Delphi, за исключением файлового типа.Описание записи в языке DELPHI осуществляется с помощью служебного слова RECORD, вслед за которым описываются компоненты записи. Завершается описание записи служебным словом END.Например, записная книжка содержит фамилии, инициалы и номера телефона, поэтому отдельную строку в записной книжке удобно представить в виде следующей записи:

type Row=Record

FIO: String[20];

TEL: String[7]

end;

var str: Row;

Описание записей возможно и без использования имени типа, например:

var str: Record

FIO: String[20];

TEL: String[7]

end;

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

str.FIO, str.TEL

Такое имя называется составным. Компонентой записи может быть также запись, в таком случае составное имя будет содержать не два, а большее количество имен. Обращение к компонентам записей можно упростить, если воспользоваться оператором присоединения with. Он позволяет заменить составные имена, характеризующие каждое поле, просто на имена полей, а имя записи определить в операторе присоединения:

with M do OP;

Здесь М – имя записи, ОР – оператор, простой или составной. Оператор ОР представляет собой область действия оператора присоединения, в пределах которой можно не использовать составные имена.

Пример 16.1. Создать базу данных о студентах student, содержащую следующие поля:

· Номер зачетки (n_zach); · фамилия и инициалы (fio); · средний балл (sr_b); · количество сданных зачетов и экзаменов (kz); · форма обучения (fo).Написать программу, выполняющую следующие действия: 1) ввод с клавиатуры данных в массив, состоящий из n записей; 2) вывод на экран всей введенной информации; 3) вывод на экран информации о студентах, которые получают стипендию (форма обучения – b, количество зачетов и экзаменов – 10, средний балл > =7.5).

Program Project1;

type student=record

n_zach: string[5];

fio: string[35];

sr_b: real;

kz: byte;

fo: string[2];

end;

 

var s: array[1..30] of student;

n, k, i: integer; srbg: real;

 

begin

write('n='); readln(n);

for i: =1 to n do // начало цикла for для ввода исходных данных

with s [i] do

begin

writeln('n зачетки'); readln(n_zach);

writeln('ФИО'); readln(fio);

writeln('средний балл? '); readln(sr_b);

writeln('количество зачетов? '); readln(kz);

writeln('форма обучения? '); readln(fo);

end; // конец цикла for для ввода исходных данных

 

k: =0;

for i: =1 to n do

with s [i] do

begin

if(fo='b') and (kz=10)and (sr_b> =7.5) then

begin

writeln(n_zach, ' ', fio, ' ', sr_b: 3: 1, ' ', kz, ' ', fo);

k: =k+1;

end;

writeln('количество студентов, которые получают стипендию ', k: 2);

readln;

end.

Пример 16.2. Необходимо организовать массив записей, а затем из общего списка вывести фамилии студентов 2-го курса.

 

program Project2;
type anketa=record
fio: string[45];
dat_r: string[8];
adres: string[50];
curs: 1..5;
grupp: string[3]

end;

var student: array [1..100] of anketa; I: integer;
begin
//последовательно вводим каждую запись
for I: =1 to 100 do
begin
writeln ('введите сведения о', I, '-м студенте');
writeln ('введите фамилию, имя и отчество'); readln (student[I].fio);
writeln ('введите дату рождения'); readln (student[I].dat_r);
writeln ('введите адрес'); readln(student[I].adres);
writeln ('введите курс'); readln(student[I].curs);
writeln ('введите группу'); readln (student[I].grupp);
end;
writeln ('ввод закончен');
writeln;
//просматриваем массив записей и выбираем только студентов 2-го курса
for I: =1 to 100 do
if student[I].curs=2 then
writeln(' фамилия студента: ', student[I].fio);
end.

 

Например, фрагмент из предыдущей программы с использованием оператора присоединения (with …. Do ….) будет выглядеть так:

Фрагмент примера

for I: =1 to 100 do
with student[I] do
begin
writeln ('введите сведения о', I, '-м студенте');
writeln ('введите фамилию, имя и отчество'); readln (fio);
writeln ('введите дату рождения'); readln (dat_r);
writeln ('введите адрес'); readln(adres);
writeln ('введите курс'); readln(curs);
writeln ('введите группу'); readln (grupp);
end;

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

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

1. Описать структуру с именем STUDENT, содержащую следующие поля: фамилия и инициалы; номер группы; успеваемость (средний балл).

Запрограммировать вывод на экран фамилий и номеров групп для всех студентов, включенных в массив, если средний балл студента больше 4, 5.

2. Описать структуру с именем STUDENT, содержащую следующие поля: фамилия и инициалы; номер группы; успеваемость (средний балл).

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

3. Описать структуру с именем STUDENT, содержащую следующие поля: фамилия и инициалы; номер группы; успеваемость (средний балл).

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

4. Описать структуру с именем AEROFLOT, содержащую следующие поля: название пункта назначения рейса; номер рейса; тип самолета.

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

5. Описать структуру с именем AEROFLOT, содержащую следующие поля: название пункта назначения рейса; номер рейса; тип самолета.

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

6. Описать структуру с именем WORKER, содержащую следующие поля: фамилия и инициалы работника; название занимаемой должности; год поступления на работу.

Запрограммировать вывод на экран фамилий работников, чей стаж работы в организации превышает значение стажа, введенного с клавиатуры.

7. Описать структуру с именем POEZD, содержащую следующие поля: название пункта назначения; номер поезда; время отправления.

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

8. Описать структуру с именем POEZD, содержащую следующие поля: название пункта назначения; номер поезда; время отправления.

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

9. Описать структуру с именем POEZD, содержащую следующие поля: название пункта назначения; номер поезда; время отправления.

Запрограммировать вывод на экран информации о поезде, номер которого введен с клавиатуры.

10. Описать структуру с именем MARSH, содержащую следующие поля: название начального пункта маршрута; название конечного пункта маршрута; номер маршрута.

Запрограммировать вывод на экран информации о маршруте, номер которого введен с клавиатуры.

11. Описать структуру с именем MARSH, содержащую следующие поля: название начального пункта маршрута; название конечного пункта маршрута; номер маршрута.

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

12. Описать структуру с именем NOTE, содержащую следующие поля: фамилия, имя; номер телефона; год рождения.

Запрограммировать вывод на экран информации о человеке, номер телефона которого введен с клавиатуры.

13. Описать структуру с именем NOTE, содержащую следующие поля: фамилия, имя; номер телефона; год рождения.

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

14. Описать структуру с именем NOTE, содержащую следующие поля: фамилия, имя; номер телефона; год рождения.

Запрограммировать вывод на экран информации о человеке, чья фамилия и имя введены с клавиатуры.

15. Описать структуру с именем ZNAK, содержащую следующие поля: фамилия, имя, отчество; месяц рождения; год рождения.

Запрограммировать вывод на экран информации о людях, родившихся в месяце, название которого введено с клавиатуры.

16. Описать структуру с именем ZNAK, содержащую следующие поля: фамилия, имя, отчество; знак Зодиака; год рождения.

Запрограммировать вывод на экран информации о людях, родившихся под знаком Зодиака, название которого введено с клавиатуры.


 

Литература

1. Архангельский, А. Я. Программирование в Delphi: учебник по классическим версиям Delphi / А. Я. Архангельский. – Москва: Бином, 2008. – 1154 с.

2. Бобровский, С. И. Delphi 7: учебный курс / С. И. Бобровский. – Санкт-Петербург: Питер, 2008. – 736 с.

3. Графические средства Delphi: методические указания для самостоятельной работы студентов механических специальностей дневной и заочной форм обучения по дисциплинам: " Информатика", " Вычислительная техника, программирование и расчеты на ЭВМ" / УО " ВГТУ" ; сост. В. П. Терентьев, Т. П. Стасеня. – Витебск, 2007. – 61 с.

4. Климов, Ю. С. Программирование в среде Turbo Delphi 6.0: справ. пособие / Ю. С. Климов, А. И. Касаткин, С. М. Мороз. – Минск: Вышэйшая школа, 1992. – 158 с.

5. Методические указания к курсовому проектированию для студентов механических специальностей по предметам цикла " Информатика" / УО " ВГТУ" ; сост. В. П. Терентьев, А. С. Дягилев, Т. П. Стасеня. – Витебск: УО " ВГТУ", 2004. – 81 с.

6. Программирование на персональных ЭВМ: практикум / под ред. Д. В. Офицерова. – Минск: Вышэйшая школа, 1993. – 256 с.

7. Сурков, Д. А. Программирование в среде Borland Delphi для Windows: справочное пособие / Д. А. Сурков, К. А. Сурков, А. Н. Вальвачев. – Минск: Вышэйшая школа, 1996. – 432 с.

8. Фаронов, В. В. Delphi: учебник / В. В. Фаронов. – Санкт-Петербург: Питер, 2010. – 640 с.

9. Фаронов, В. В. Delphi. Программирование на языке высокого уровня: учебник для студентов вузов, обучающихся по направлению подготовки дипломированных специалистов " Информатика и вычислительная техника" / В. В. Фаронов. – Санкт-Петербург: Питер, 2010, 2007. – 640 с.

10. Фаронов, В. В. Основы Турбо Паскаля: учеб. пособие / В. В. Фаронов. – Москва: Учебно-инженерный центр «МВТУ-ФЕСТО ДИДАКТИК», 1992. – 304 с.

11. Язык программирования Object Delphi (Delphi): курс лекций по дисциплине " Вычислительная техника, программирование и расчеты на ЭВМ" для студентов механических спец. / УО " ВГТУ" ; сост. В. П. Терентьев. – Витебск: УО " ВГТУ", 2005. – 75 с.

 


Поделиться:



Популярное:

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


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