Пример: презентация

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

Слайд 1Пример:
Для каждого из 25 учеников класса известны фамилия и оценки

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

В данном случае:

Фамилия – строка из 15 символов,
оценка – целое число,
средний балл – вещественное (действительное) число.

Программа


Слайд 2Комбинированный тип данных (записи)
Записи – это структурированный тип данных, содержащий набор

объектов разных типов

Составляющие запись объекты называются полями.
В записи каждое поле имеет свое собственное имя.


Слайд 3Описание записи
Имя записи

имена объектив, составляющих запись
и их типы.

Общий вид:

Type
<имя записи> = Record
<поле 1>: <тип 1>;
<поле 2>: <тип 2>;

<поле n>: <тип n>
End;


Слайд 4Type
pupil = Record
fam: String[15];

{поле фамилии ученика}
b1,b2,b3,b4,b5: 2..5; {поля баллов по
дисциплинам}
sb: real {поле среднего балла}
End;

Для нашей задачи:

ЗАПИСЬ

Строка из 15
символов

2..5

Вещественный тип

Имя записи

Поля записи

Тип записей


Слайд 5Чтобы хранить в памяти ЭВМ информацию обо всех 25 учениках класса,

необходимо определить массив klass, представляющий массив записей:

Примечания:
Имена полей, составляющих запись, не должны повторяться.
Каждое поле записи может иметь любой тип (кроме файлового), в частности, оно может быть снова записью.

Var klass: Array[1..25] Of pupil;


Слайд 6Доступ к полям записи
1-й способ: указанием имени переменной и имени поля.
Например,

klass[2].fam, klass[3].sb, klass[1].b4.

Поэтому ввод фамилий и оценок учащихся, т.е. элементов массива klass можно задать так:

For i:= 1 to 25 do
Begin
Readln (klass[ i ].fam);
Readln (klass[ i ].b1);
Readln (klass[ i ].b2);
Readln (klass[ i ].b3);
Readln (klass[ i ].b4);
Readln (klass[ i ].b5);
End;


Слайд 7Доступ к полям записи
2-й способ: использованием оператора присоединения, который позволяет осуществить

доступ к полям записи таким образом, как если бы они были простыми переменными.
Его общий вид:

Внутри оператора к компонентам записи можно обращаться с помощью имени соответствующего поля:

For i:= 1 to 25 do
With klass[ i ] do
Begin
Readln (fam);
Readln (b1, b2, b3, b4, b5);
End;

With <имя записи> Do <оператор>


Слайд 8program zapici;
const n = 10; m = 6; {n – кол-во

учеников; m - кол-во оценок}
type pupel = record
fam: string[15];
b:array[1..m] of 2..5;
sb:real
end;
var klass:array[1..n] of pupel;
i,j: integer;
sbmax: real;

Программа:

Задача


Слайд 9Begin

{ввод исходных данных}
for i:=1 to n do
with klass[ i ] do
begin
writeln(‘Введите фамилию и ‘,m,’ оценок');
readln(fam);
for j:=1 to m do readln(b[ j ]);
end;


Слайд 10for i:=1 to n do

{вычисление среднего балла}
with klass[i] do begin sb:=0; for j:=1 to m do
sb:=sb+b[j]/m; end;
sbmax:=0; {поиск мах среднего балла}
for i:=1 to n do
if klass[i].sb >= sbmax then sbmax:=klass[i].sb;
writeln(‘Фамилия':18,‘Оценки':18,'‘Ср.балл':15);writeln;
for i:=1 to n do
if klass[i].sb=sbmax then
with klass[i] do begin
write(fam:20,' - ');
for j:=1 to m do write(b[j]:3);
writeln(' - ',sb:6:3) end;
readln;
end.



Слайд 11Задачи:
Данные об учениках вводить из файла.
Вывести на экран информацию об ученике

«ФамилияХ».
Вывести на экран фамилии учеников, имеющих оценки 5 по первым двум дисциплинам.
Распечатать фамилии учеников с максимальным средним баллом.
Рассортировать учеников по убыванию среднего балла.

Слайд 12Пример. Определить дату завтрашнего дня.
Пусть дата вводится следующим образом:
27 5 2006


Type year = 1500..2100;
month = 1..12;
day = 1..31;
data = Record
y: year;
m: month;
d: day;
end;
Var dat, next: data;

Первое число – это день, второе – месяц, третье – год.


Слайд 13Function Leap( yy:year ):boolean;
Begin

{определяет високосный год или нет}
Leap:= ( yy mod 4 = 0 ) And ( yy mod 400 <> 0 );
End;

Function Dmonth( mm: month; yy: year ): day;
Begin {кол-во дней данного месяца в данном году}
Case mm of
1,3,5,7,8,10,12: dmonth:=31;
4,6,9,11: dmonth:=30;
2: if Leap( yy ) Then Dmonth:=29 Else Dmonth:=28;
End;
End;

Слайд 14Procedure Tomorrow(td: data; Var nd: data);
begin

{определяет завтрашнюю дату}
If td.d <> Dmounth( td.m, td.y) {если это не последний
день месяца}
then With nd Do Begin d:= td.d + 1; m:= td.m; y:= td.y End
else if td.m = 12 {если это последний день месяца}
then With nd Do Begin d:= 1; m:= 1; y:= td.y + 1; End
{декабрь}
else With nd Do Begin d:=1; m:= td.m + 1; y:- td.y End;
{не декабрь}
End;

Слайд 15Begin
Writeln(‘Введите сегодняшнее число, месяц, год’);
Readln(dat.d, dat.m, dat.y);
Tomorrow(dat, next);

Writeln(‘Завтра будет ‘);
Writeln(next.d, ‘ , ‘, next.m, ‘ , ‘, next.y);
Readln;
End.

Слайд 16Задачи: Ввести дату (дд мм гггг). Найти:
Дату предыдущего дня;
Дату,

которая наступит через m дней;
Дату, которая была за m дней до сегодняшнего дня;
Количество суток, прошедших от даты t1 до t2;
День недели, выпавший на дату t1, если известно, что в первый день нашей эры был понедельник.

Обратная связь

Если не удалось найти и скачать презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое ThePresentation.ru?

Это сайт презентаций, докладов, проектов, шаблонов в формате PowerPoint. Мы помогаем школьникам, студентам, учителям, преподавателям хранить и обмениваться учебными материалами с другими пользователями.


Для правообладателей

Яндекс.Метрика