Технологическая карта урока "Комбинированный тип данных" 10 класс

Предмет / Класс / Автор УМК
Информатика. 10 класс, И.Г. Семакин
Тема урока
Комбинированный тип данных
Тип урока
Урок открытия новых знаний
Цель урока
Задачи урока
Изучить комбинированный тип данных языка программирования
Pascal, научить учащихся использованию данного структурного
типа при решении задач.
Образовательные:
1) формирование умений и навыков записи комбинированного типа данных на
языке программирования Pascal;
2) рассмотреть пример программирования комбинированного типа данных с
помощью записи;
3) получить опыт программирования кс использованием комбинированного типа
данных.
Развивающие:
1) развитие познавательного интереса, логического мышления и внимания
учащихся;
2) развитие навыков индивидуальной практической деятельности и умения
работать в команде;
3) развитие коммуникационной компетентности у учащихся.
Воспитательные:
1) повышение мотивации учащихся путем использования нестандартных задач;
2) формирование творческого подхода к решению задач, четкости и
организованности, умения оценивать свою деятельность и деятельность своих
одноклассников.
Оборудование
Мультимедийный проектор, ПК учителя, ПК учащихся, учебники, тетради.
ХОД УРОКА
Этап
Деятельность учителя
Примечание
1. Организационный момент.
Приветствие, проверка присутствующих.
Здравствуйте. Сегодня нам предстоит проделать
большую работу, которая поможет Вам разобраться
еще в одной из тем. Приступим.
2. Постановка цели и
задач урока. Мотивация
(самоопределение) к учебной
деятельности учащихся.
Мы с вами изучаем программирование уже на
протяжении нескольких уроков Мы научились
программировать, сегодня мы научимся использовать
комбинированный тип данных.
3. Актуализация знаний
-Чем отличается строковый тип данных от
символьного?
-Как описывается строковый тип?
-Как обратиться к конкретному символу строки?
-Назовите основные операции над строками?
4. Первичное усвоение новых
знаний.
Сегодня на уроке, мы рассмотрим понятие в
программировании -комбинированный тип данных.
Тема урока: «Комбинированный тип данных».
Комбинированный тип данных это структурный
тип, состоящий из фиксированного числа компонентов
(полей) разных типов.
Тип поля: любой простой или структурированный тип
(кроме файлового);
Идентификация поля записи составное имя: <имя
записи>.<имя поля>.
Комбинированный тип объявляется в программе в
разделе типов:
Type <имя> = record
<имя поля 1>:<тип>;
<имя поля №>: <тип>
End.
Поля могут иметь любые типы, в том числе и
комбинированный тип.
Записи в языке Pascal
Запись – это структурированный тип данных,
состоящий из фиксированного числа компонентов
одного или нескольких типов (полей). Величина
комбинированного типа.
Базовый тип – это совокупность всех возможных
элементов множества.
Всего в базовом множестве может быть не более 256
различных элементов. Значение переменных
множественного типа может содержать любое
количество различных элементов базового типа – от
нуля элементов (пустое множество) до всех
возможных значений базового типа.
Множества, используемые в программе, могут
быть описаны следующим образом:
Type
<имя типа> = record
<идентификатор поля>: <тип компонента>;
<идентификатор поля>: <тип компонента>;
End;
После этого в разделе переменных следует описание:
Var
<идентификатор переменной>: <имя типа>;
Пример:
Type
Uchenik = record
fam: string [15]; {поле для хранения фамилии
ученика};
b1,b2,b3,b4,b5:2..5; {поле для хранения баллов по
дисциплинам};
sb: real; {поле для хранения среднего балла}
End;
Var
klass: array [1..25] of uchenik;
Пояснения: переменная типа uchenik будет хранить
структуру, содержащую информацию
об одном ученике. Чтобы хранить информацию обо
всех 25 учениках класса, необходимо
ввести массив klass, представляющий массив записей.
Элементы записи идентифицируются составными
именами следующей структуры:
<Имя переменной>.<Имя поля>
Доступ к полям записи можно осуществить 2-мя
способами:
1) С указанием имени переменной и имени поля
(составное имя). Составное имя можно использовать
везде, где допустимо применение типа поля. Для
присваивания полям значений
используется оператор присваивания.
Пример обращения к полям записи: klass [2].fam,
klass [3].sb, klass [4].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;
2) С использованием оператора присоединения.
Обращение к полям записи имеет несколько
громоздкий вид.
Для решения этой задачи предназначен оператор
withdo…, который имеет следующий формат:
with <переменная типа запись> do <оператор>;
Один раз указав переменную типа запись в
операторе withdo, можно работать внутри
Данного оператора с именами полей как с
обычными переменными, т.е. без указания перед
идентификатором поля имени переменной,
определяющей запись.
For i:=1 to 25 do
With klass [i] do
Begin
Readln (fam);
Readln (b1,b2,b3,b4,b5);
End;
5. Первичная проверка
понимания. Включение в
систему знаний и повторение
/практическая работ
Учитель предлагает учащимся рассадиться за
компьютеры и начать работу со средой
программирования Pascal ABC. Учитель разбирает и
объясняет примеры решения задач у доски.
Предупреждает учащихся о том, что, если что-нибудь
становится непонятным задавать вопросы в ходе
разбора следующих задач:
Задача 1. (разобрать совместно).
На экзаменационном листе содержатся сведения о
результатах экзаменов, сданных 30 учениками класса.
Ввести эти данные в компьютер и получить список
всех отличников. В программе используется описание
комбинированного типа results. Исходные данные
организуются в массив следующей структуры.
Var list: array [1..30] of results;
После ввода в этот массив исходных данных следует
фрагмент программы:
For i:=1 To 30 Do
If (list[i].rus=5) and (list[i].alg=5)
and (list[i].phiz=5)
Then Writeln (list[i].family);
Программа отбирает записи, в которых все поля с
оценками равны 5, и выводит соответствующие поля
фамилий.
А теперь обсудим проблему: как наиболее удобным
способом организовать ввод данных в этой программе?
Вводить с клавиатуры неудобно из-за большего объема
данных. При каждом повторном запуске программы
нужно начинать ввод сначала. А при отладке это
наверняка придется делать многократно. Гораздо
удобнее подготовить файл с исходными данными с
помощью текстового редактора. После этого без
проблем можно повторять ввод многократно. Так и
поступим. Подготовим текстовый файл следующего
вида:
Таблица успеваемости 10 А класса
Фамилия
Русски
й язык
Алгебра
Физика
Антонов
4
5
5
Андреева
5
3
4
Боброва
5
5
5
Таблица содержит данные с фамилиями и оценками 30
учеников класса. Обратите внимание на то, что
фамилии записываются в отдельных строках.
Необходимость этого связана с реализацией
алгоритма: при вводе символьной строки
прочитываются полностью очередная строка
текстового файла до признака EOLN. При этом
фамилии должны содержать не более 15 символов, а
первые оценки (по русскому языку) – располагаться не
раньше 16-й позиции в своей строке.
Сохраним этот файл в корневом каталоге логического
диска D под именем 10_а.txt. Составим программу с
вводом таблицы успеваемости и выводом списка
отличников. Фамилии отличников выведем на экран и
сохраним в файле с именем Best.txt.
Решение.
Program Examen;
Type results = record
Fam: string [15];
Rus: 2..5;
Alg:2..5;
Phiz: 2..5
End;
Var list: array [1..30] of results; {Массив записей}
i: integer; F1, F2:text;
Begin
Assign (F1, ‘D:\10_a.txt’); {Связывание F1 c файлом
10_a.txt}
Assign (F2, ‘D:\Best.txt’); {Связывание F2 c файлом
Best.txt}
Reset (F1); {Открытие файла F1 для чтения}
Rewrite (F2); {Открытие файла F2 для записи}
Readln (F1); Readln (F1); {Пропуск 2 строк в файле F1},
{Цикл ввода из файла F1}
For i:=1 To 30 Do
Readln (F1, list [i].Fam, list[i].Rus, list[i].Alg, list[i].Phiz);
{Цикл отбора отличников и вывода их фамилий}
For i:=1 To 30 Do
If (list[i].rus=5) and (list[i].alg=5)
and (list[i].phiz=5)
Then
Begin
Writeln (list[i].fam); {Вывод фамилии на экран}
Writeln (F2, list [i].fam); {Запись фамилии в файл F2}
End;
Close (F1); Close (F2); {Закрытие файлов}
End.
Задача 2.
Решая рассмотренную задачу с оценками, можно
обойтись без массива записей. Кроме того, можно не
ставить ограничения на число учеников в классе. Их
число выяснится в процессе чтения файла с таблицей
успеваемости. Составим программу, которая кроме
вывода списка фамилий отличников подсчитывает их
количество и процент отличников по отношению к
полному составу класса.
Решение.
Program Examen 2:
Type results = record
Fam: string [15];
Rus: 2..5;
Alg: 2..5;
Phiz: 2..5;
End;
Var list: results; {Одна переменная комбинированного
типа}
I, K: imteger;
F1,F2: text;
Begin
Assign (F1, ‘D:\10_a.txt’);
Assign (F2, ‘D:\Best.txt’);
Reset(F1); Rewrite (F2);
Readln (F1); Readln (F1);
I:=0; K:=0; {Инициализация счетчиков}, {Цикл до
конца чтения файла}
While not EOF (F1) Do
Begin
Readln (F1, list.fam, list.Rus, list.Alg, list.Phiz);
I:=I+1; {Подсчет числа учеников}
If (list.rus=5) and (list.alg=5) and (list.phiz=5)
Then
Begin
Writeln (list.fam);
Writeln (F2, list.fam);
K:=K+1; {Подсчет числа отличников};
End
End;
Writeln (‘Из ‘, I, ‘учеников в классе’, K, ‘отличников,
что составляет’, K/I*100:4:1, ‘%’);
Close (F1);
Close (F2); {Закрытие файлов}
End.
Пояснение:
В этой программе переменная I используется как
счетчик числа учеников, а переменная K- как счетчик
числа отличников.
Стандартная логическая функция EOF (end of file)
примет значение True, когда процесс чтения из файла
дойдет до его конца.
В результате выполнения программы кроме списка
отличников на экран выведется строка:
Из 30 учеников в классе 10 отличников, что
составляет 33,3%.
5. Первичное закрепление
Давайте проверим, что у вас получилось.
На каком этапе написания программы мы
остановились? Почему? Вижу, что уже все справились.
Подходит индивидуально к каждому учащемуся и
проверяет корректность работы программы.
Молодцы, все верно. Сохраните программный проект в
локальной папке – Cеть\\Teacher29\setka2\Почта и
возвращаемся за парты, проверяем, что у нас
получилось.
6. Самостоятельная работа
Давайте, ребята проверим, как Вы усвоили тему. Я
предлагаю Вам решить самостоятельно задачи.
Задача № 1.
Известны данные об учениках класса: фамилия, имя,
отчество, адрес и домашний телефон (если есть).
Вывести на экран строки с фамилиями, именами и
адресами тех учеников, у которых нет домашнего
телефона.
Задача 2:
Известны данные об учениках класса: фамилия, имя,
отчество, адрес и домашний телефон (если есть).
Вывести на экран строки с фамилиями, именами и
адресами тех учеников, у которых фамилия начинается
с буквы N (то есть с буквы, которая вводится с
клавиатуры отдельно).
Задача 3:
Имеется массив данных о работающих в фирме:
фамилия и инициалы, адрес и дата поступления на
работу (месяц, год). Во второй массив записать данные
только о тех из них, кто на сегодняшний день
проработал уже не менее 5 лет.
7. Информация о домашнем
задании, инструктаж по его
выполнению
Домашнее задание:
Параграф 29, стр. 190-194, конспект,
Вопросы и задания, стр. 195
8. Рефлексия (подведение
итогов занятия)
Вернемся за парты. С каждым из вас мы просмотрели
программу, которую вы написали, отметили и
исправили допущенные ошибки. В основном все
справили и меня это радует. Предлагаю вернуться к
началу урока к его цели и задачам. Продолжите,
пожалуйста, предложения:
-Сегодня на уроке я узнал(а)…
-Мне понравилось, как работал (кто?)
-А еще я хочу сказать…
Подведем итоги урока:
Максимальное количество баллов за урок – 5 баллов
Критерии оценивания:
Отметка «5» - 4-5 балла
«4» - 3-4 балла
«3» - 2-3 балла.
Учитель выставляет отметки за урок в СГО «Сетевой
город. Образование».
- Спасибо, Вам за урок!