ПРАКТИЧЕСКОЕ ЗАНЯТИЕ РАЗРАБОТКА ПРОГРАММ С ИСПОЛЬЗОВАНИЕМ СТРУКТУР

  • docx
  • 11.11.2021
Публикация на сайте для учителей

Публикация педагогических разработок

Бесплатное участие. Свидетельство автора сразу.
Мгновенные 10 документов в портфолио.

Иконка файла материала Л2-00412.docx

ПРАКТИЧЕСКОЕ ЗАНЯТИЕ

РАЗРАБОТКА ПРОГРАММ С ИСПОЛЬЗОВАНИЕМ СТРУКТУР

 

1.     ЦЕЛЬ ЗАНЯТИЯ

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

 

2.     ИНФОРМАЦИОННЙ БЛОК

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

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

<имя типа> = RECORD

<список полей> END;

Здесь <имя типа> правильный идентификатор;

RECORD, END зарезервированные слова (запись, конец);

<список полей> представляет собой последовательность разделов запи-

си, между которыми ставится точка с запятой.

Каждый раздел записи состоит из одного или нескольких идентификаторов полей, отделяемых друг от друга запятыми. За идентификатором (идентифика- торами) ставится двоеточие и описание типа поля (полей), например:

type


 

 

 

var

 

.......


BirthDay = record day,month : Byte; year : Word

end;

 

a,b : Birthday;

 

В этом примере тип BIRTHDAY (день рождения) - это запись с полями


DAY, MONTH и YEAR (день, месяц и год); переменные А и В содержат записи типа BIRTHDAY.

Как и в массиве, значения переменных типа записи можно присваивать другим переменным того же типа, например

а := b;

К каждому из компонентов записи можно получить доступ, если использо- вать составное имя, т.е. указать имя переменной, затем точку и имя поля:

а.day := 27;

b.year := 1939;

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


type


BirthDay = record day,month: Byte; year : Word

end;


 

Student = record name : String; bd : BirthDay end;

var c:Student;

begin

.....

if c.bd.year = 1939 then ...

end.

Чтобы упростить доступ к полям записи, используется оператор присоеди-

нения WITH, который имеет следующий вид:

WITH <переменная> DO <оператор>

Здесь WITH, DO ключевые слова (с, делать);

<переменная> имя переменной типа запись, за которым, возможно, следует список вложенных полей;

<оператор> любой оператор Паскаля. Например:

WITH c.bd DO month := 9;

Это эквивалентно

WITH с DO

WITH bd DO month := 9;

или

c.bd.month := 9;

 

Рассмотрим пример использования массива записей. Программа организу- ет ввод данных об учащихся: имя, фамилия, возраст, школа, класс и записывает их в массив записей, а затем выводит сведения об учащихся по номеру записи и по номеру класса.

Для решения задачи введем тип записи pupil (ученик) для описания сведе- ний об учащихся, а затем объявим массив а, состоящий из 10 записей типа pupil.

Для ввода данных в поля записи используется процедура InputData, для вывода – процедура WriteData.

Uses crt, strings;

type pupil = record            { описание типа записи } name: string[10]; { имя }

surname: string[20];   { фамилия } school: integer;         { школа }

class: byte;                  { класс } end;


var school:array[1..10] of pupil; n: 1..10;

с:byte;

procedure InputData;     { процедура ввода данных}

begin

writeln('Введите данные №', n,' :'); write('Ваше имя ?'); readln(school[n].name); write(' Фамилия ?'); readln(school[n].surname); write(' Школа ?') ; readln(school[n].school); write(' и класс ?'); readln(school[n].class); writeln;

end;

procedure WriteData;   { вывод на экран содержимого текущей записи }

begin

with school[n] do begin

writeln('Имя :',name); writeln('Фамилия: ',surname); writeln('Школа: ',school); writeln('Класс: ',class);

end;

end;

begin                  { основная программа } clrscr;

for n:=l to 10 do  InputData;

writeln(' Вывод данных о 5 ученике :'); n:=5; WriteData;

writeln(' Вывод данных по номеру класса :'); writeln(' Задайте номер класса :'); readln(с); for n:=l to 10 do

if school[n].class=c then WriteData; readkey;


end.


3.     ИСПОЛНИТЕЛЬНЫЙ БЛОК

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


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

Для решения задачи введите тип записи pupil (ученик) для описания сведе- ний об учащихся, а затем объявите массив а, состоящий из 10 записей типа pu- pil.

Описание типа и переменных для программы:

type pupil = record     { описание типа записи } name: string;         { имя } surname: string;    { фамилия } school: integer;        { школа }


class: byte;               { класс } end;

var school:array[1..10] of pupil; n: 1..10;

с:byte;

 


 

 

 

 

 

мер.


4.     КОНТРОЛЬНЫЕ ВОПРОСЫ

1)       Можно ли объявить запись непосредственно в разделе переменных?

2)       Чем отличаются записи от массива?

3)       Какие операторы для работы с записями вы знаете?

4)       Можно ли для полей записи использовать тип массив? Опишите при-

 

5)       Можно ли вывеси все поля записи сразу, не указывая имена полей?


 

5.     ЗАДАНИЯ ДЛЯ САМОСТОЯТЕЛЬНОГО ВЫПОЛНЕНИЯ

1)       Создать запись, содержащую поля: фамилия, имя, дата рождения. Вы- вести на экран: а) список учеников, фамилии которых начинаются на букву А, с указанием имени и даты рождения; б) фамилию самого младшего из учеников.

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

3)       Создать запись, содержащую поля: марка производителя телефона, но- мер марки, цена, количество на складе. Вывести на экран модели, оставшиеся на складе в минимальном количестве.

4)       Сформировать на экране таблицу из данных записи. Запись имеет поля: Фамилия, Имя, Отчество, Дата рождения, Образование, Профессия. Отдельно вывести имена людей с высшим образованием.