Мая группа № 11 (Информатика и ИКТ)
Урок № 40
Тема программы: Комбинированный тип данных
Тема урока: Решение задач с использованием комбинированного типа данных и текстовых файлов.
Цель: научиться решать задачи с использованием комбинированного типа данных и текстовых файлов.
ПЛАН
1. Повторение теоретического материала
2. Решение задач
Повторение
Все структурные типы данных, с которыми вы уже познакомились (массивы, строки), представляют собой совокупности однотипных величин.
Комбинированный тип данных – это структурный тип, состоящий из фиксированного числа компонентов (полей) разных типов.
Комбинированный тип объявляется в программе в разделе типов:
Type = record
:;
…
имя поля N: тип
End
Поля могут иметь любые типы, в том числе и комбинированный тип.
Наример, данные о результатах экзаменов, полученных учеником по трем предметам:
Type results= record
Family: string[15];
rus: 2..5;
alg: 2..5;
phiz: 2..5;
End;
Запись — величина комбинированного типа данных. Записи являются неоднородными неупорядоченными структурами с прямым доступом к компонентам. Компоненты записи называют полями записи.
Обычно запись содержит совокупность разнотипных атрибутов, относящихся к одному объекту.
Например, информация о рекордах по бегу у мужчин для открытых стадионов может содержать следующие атрибуты
рекордсмен
страна
статус соревнований (Олимпиада, чемпионат мира)
длина дистанции
год рекорда
время
Структурная диаграмма для записи
Запись может быть объявлена в разделе type:
идентификатор типа = Record
поле1: тип;
поле2: тип;
…
полеN: тип
end;
Например,
type beg = record
fam: string[25];
srtana: string[20];
status: boolean; {Олимпиада - true; чемпионат мира - false}
dlina: longint;
god: 1900..2009;
vr: string[15];
end;
Var a: beg;
К каждому элементу записи можно обратиться, используя составное имя, которое имеет следующую структуру:
Например,
a.fam; a.dlina и т.п.
Если, например, требуется полю "status" присвоить значение «true», то это делается так: status:= true;
Поля записи могут иметь любой тип, кроме файла, в частности, сами могут быть записями.
Например,
type beg1 = record
fam: string[25];
srtana: string[20];
status: boolean; {Олимпиада - true; чемпионат мира - false}
dlina: longint;
god: 1900..2009;
vr: record min: integer;
sec: real;
end;
end;
Var a: beg1;
Поля такой записи, находящиеся на третьем уровне, идентифицируются тройным составным именем. Например,
a.vr.min
a.vr.sec
Решение задач
Исходя из условия задачи, определить структуру комбинированного типа данных и типы полей. Исходные данные разместить в текстовом файле. В программе не использовать массивов записей. Результаты выводить на экран и в текстовый файл.
1. Из данного списка спортсменов получить данные о тех из них, кто занимается плаванием. Указать возраст, сколько лет они занимаются спортом.
Program sportmans;
uses crt;
Type Sport=Record Family, discipline:string[20];
vozrast,letVsporte:integer;
end;
var A:array [1..3] of sport;
i,n,s:integer;
Begin Write ('Vvedite koli4estvo sportsmenov');
Read (n);
For i:=1 to n do
Begin Writeln ('Vvedite dannie sportsmena');
With A[i] do
begin
writeln ('Vvedite vozrast sportsmena');
readln (vozrast);
writeln ('Vvedite disciplinu');
readln (discipline);
writeln ('Vvedite koli4estvo let v sporte');
Readln (letVsporte);
Writeln ('Vvedite Family');
Readln (Family);
end;
end;
S:=0;
For i:=1 to n do
With a[i] do
If discipline = 'plavanie'
then S:=S+1;
Writeln (S);
End.
2. Из ассортимента конфет, выпускаемых кондитерской фабрикой, выбрать те, стоимость которых от 100 до 200 руб. за 1 кг. Указать срок их годности и номера магазинов, в которых они имеются в продаже.
Из ассортимента конфет, выпускаемых кондитерской фабрикой, выбрать те, стоимость которых от 100 до 200 руб. за 1 кг. Указать срок их годности и номера магазинов, в которых они имеются в продаже.
type konf=record
name: string[45];
cena:integer;
god:integer;
mag:integer;
end;
var kon: array [1..100] of konf;
I,k,max: integer;
a:array[1..100]of integer;
begin
for I:=1 to 3 do
begin
writeln ('введите название');
readln (kon[I].name);
writeln ('введите цену');
readln (kon[I].cena);
writeln ('введите срок годности');
readln (kon[I].god);
writeln ('введите номер магазина');
readln (kon[I].mag);
end;
for i:=1 to 3 do
if (kon[I].cena>=100) and (kon[I].cena<=200) then begin
writeln(kon[I].name);
writeln(kon[I].god);
writeln(kon[I].mag);end;
readln;
end.
3. Вычислить средний балл учеников класса, если известны оценки каждого ученика по математике, русскому языку и физике. Получить список учеников, имеющих средний балл выше среднего в классе.
program lab100301;
uses crt;
type
tablica=record
name:string[10];
sred:real;
rus,math,fiz:byte;
end;
var
a:tablica;
mas:array[1..30] of tablica;
s:real; n:integer;
i:integer;
begin
clrscr;
writeln('введите количество учеников ');
readln(n);
for i:=1 to n do
with mas[i] do
begin
write('фамилия ',i,'-го ученика: '); readln(name);
write('русский язык: '); readln(rus);
write('математика: '); readln(math);
write('физика: '); readln(fiz);
sred:=(rus+math+fiz)/3;
s:= s + sred;
writeln('Средний бал ученика: ', name,' ', sred:3:1);
end;
s:= s / n;
writeln('Обший средний бал: ',s);
writeln('');
writeln('ученики чей средний бал выше среднего ');
writeln('');
writeln(' ________________________ ');
writeln('| фамилия |средний балл |');
writeln(' ------------------------ ');
for i:=1 to n do
with mas[i] do
if mas[i].sred>s then
begin
write('|',name:9,'|');
writeln(sred:14:2,'|');
end;
writeln(' --------------------------');
readkey;
end.
Домашнее задание: Повторить § 29, решить задачу
Получить список тех учителей школы, которые преподают математику и информатику, указать стаж их работы и недельную нагрузку.
Информационные источники (основные учебники по предмету)
Информатика. Базовый уровень: учебник для 10 класса / Семакин И. Г., Хеннер Е. К., Т.Ю. Шеина.- 5-е изд. — М.: БИНОМ. Лаборатория знаний, 2015. —264 с.
Ресурсы сети Интернет
1. https://videouroki.net/video/35-kombinirovannyj-tip-dannyh.html