Просмотр содержимого документа
«Комбинированный тип данных»
Конспект урока по информатике
Тема: Комбинированный тип данных.
Цели урока:
образовательная: ввести понятие «Запись»;рассмотреть основные приемы создания собственных комбинированных типов данных;
развивающая:способствоватьразвитию умений и навыков решать практические задачи;
воспитательная:воспитывать бережное отношение к технике.
Тип урока: комбинированный.
Оборудование: мультимедийная презентация, ПК.
Ход урока
Организационный момент
Приветствие с учащимися и проверка присутствующих.
Актуализация опорных знаний
Фронтальный опрос:
Какие типы данных в Pascal Вам известны?
Может ли переменная объединять несколько типов данных?
Объяснение нового материала
Все структурные типы данных, с которыми вы уже познакомились (массивы, строки), представляют собой совокупности однотипных величин.
Комбинированный тип данных – это структурный тип, состоящий из фиксированного числа компонентов (полей) разных типов.
Комбинированный тип объявляется в программе в разделе типов:
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
В программе могут использоваться массивы записей.
Любая обработка записей, в том числе ввод и вывод, производится поэлементно.
Например,
var b: array[1..200] of beg1;
...
write('Число рекордсменов? '); readln(n);
for i:=1 to n do
with b[i] do
begin
write('Фамилия спортсмена? '); readln(fam);
write('Гражданин какой страны спортсмен? '); readln(strana);
write('Статус соревнования? '); readln(status);
write('Длина дистанции? '); readln(dlina);
write('Год проведения соревнования? '); readln(god);
write('Время, за которое спортсмен пробежал дистанцию (мин, сек)? '); readln(vr.min, vr.sec);
end;
...
В примере был использован оператор присоединения, который имеет следующий вид:
with do ;
Он позволяет, один раз указав имя переменной типа "запись" после слова with, работать в пределах одного оператора (простого или составного) с именами полей как с обычными переменными, т.е. не писать громоздких составных имен.
Закрепление изученного материал
Работа 3.9. Программирование обработки записей
Задание
Исходя из условия задачи, определить структуру комбинированного типа данных и типы полей. Исходные данные разместить в текстовом файле. В программе не использовать массив записей. Результаты выводить на экран и в текстовый файл.
Уровень 1
2. Из ассортимента конфет, выпускаемых кондитерской фабрикой, выбрать те, стоимость которых от 100 до 200 руб. за 1 кг. Указать срок их годности и номера магазинов, в которых они имеются в продаже.
Ход работы
Инструктаж по ТБ.
Выполнение практической работы.
Проверка выполненной работы.
program konfeta;
uses crt;
const nmax=20;
type assort=record
naz:string[20];
stm:byte;
kmg:byte;
nom:array[1..nmax] of byte;
god:byte;
end;
var a:array[1..nmax] of assort;
n,i,j,k:byte;
begin
clrscr;
repeat
write('Количество наименований конфет до ',nmax,' n=');
readln(n);
until n in [1..nmax];
writeln('Введите информацию о конфетах:');
for i:=1 to n do
begin
writeln('Наименование ',i);
with a[i] do
begin
write(' Наименование: ');readln(naz);
repeat
write(' Стоимость от 1 до 500: ');
readln(stm);
until stm in [1..500];
write('В скольки магазинах есть в продаже: ');
readln(kmg);
writeln('Введите номера магазинов через пробел:');
for j:=1 to kmg do
read(nom[j]);
readln;
write('Срок годности в месяцах:');readln(god);
end;
end;
k:=0;
writeln('Конфеты стоимостью от 100 до 200 рублей:');
for i:=1 to n do
if a[i].stm in [100..200] then
begin
k:=1;
write(a[i].naz,' срок годности ',a[i].god,' номера магазинов ');