Записи
Оценка 4.7

Записи

Оценка 4.7
Рабочие тетради
doc
информатика +1
10 кл—11 кл +1
25.04.2017
Записи
Занятие строится таким образом, что после прослушивания теоретического материала (10 –15 мин.), учащимся предлагается практическое задание, которое выполняется ими за 20 - 30 мин. и корректируется в процессе изучения материала в более сложную задачу по изучаемой теме. Автор сознательно избегал сложных примеров, будучи убежденными, в том, что гораздо важнее для учащихся понимание алгоритмов предлагаемых задач, приобретение навыков разработки алгоритмов, их программирования и выполнения на компьютере в течение одного занятия. Такой подход к изучению языка программирования позволяет сосредоточить внимание на самом процессе программирования, который в данном случае более важен для изучения языка, чем решение сложной задачи, наверняка трудной большинству учащихся. Такие задачи, по мнению авторов, неоправданно занимают большое количество учебного времени, превращая учителя из инициатора процесса обучения в диктатора.
Занятие 18ч1.doc
Записи                    Занятие 18 1. Урок 1.  Определение  записи. Фиксированные записи. 2. Урок 2.  Ввод и вывод записей. 3. Урок 3.  Оператор присоединения. Вариантные записи. 4. Контрольные вопросы и упражнения.  Урок 1. Определение записи. Фиксированные записи 1.1. Определение записи. 1.2. Фиксированные записи. 1.1. Определение записи. При решении на ЭВМ многих экономических и информационных задач,   происходит обработка   различных документов,   которые   содержат   текстовые   и   цифровые   данные,   при   этом   возникает   необходимость  объединения различного типа данных в  одну  группу. Для работы с группой данных различного типа в  TP  7.0 введено понятие записи. Запись – это структура данных, состоящая из фиксированного числа элементов различного типа. Элементы различного типа в  записи называются полями. В одном поле данные имеют один и тот же тип, а в  разных  полях могут иметь  разные  типы. Например,   ведомость учета товара на складе продукции может иметь следующий вид. № Наименование 1 0 1 Монитор 2 Принтер лазерный 3 Сканер Тип 2 17” Samsung 757MB Canon LBP­1120 HP Scan Jet 2300C  Цена за шт. в дол. 3 229,00 244,00 74,00 Итого       Таблица 1 Кол. Сумма шт. в  дол. 4 10 20 10 40 2290,00 4880,00 740,00 7910,00 5 Каждая строка этой таблицы представляет собой запись с различными типами данных и состоит из  пяти полей. Первое и второе поле имеют символьный тип, третье, четвертое и  пятое поле ­ числовой. Практически  все базы данных экономической информации состоят из записей. Обработка такой информации на ЭВМ осуществляется по необходимым полям записей, это сортировка, поиск  и выборка, с целью формирования различных документов. Запись в целом и ее отдельные элементы обозначаются именами. Обращение к записи в  программе допускается лишь в операторе присваивания, т.е. <Имя записи 1> := <Имя записи 2>;, где записи имеют идентичную структуру. Обращение к элементу записи  в программе выполняется с помощью  уточненного  (составного)  имени. Уточненное имя записи содержит имя записи и имя поля и записывается в следующем виде: <Имя записи> . <Имя поля> Например,  для указанной выше таблицы, могут быть введены следующие обозначения: ­ ­ ­ ­ ­ ­  w  names  types  price  namber  sum ­ имя записи; ­  имя первого поля ­ наименование продукции; ­ имя второго поля ­ тип продукции; ­ имя третьего поля ­ цена за единицу продукции; ­ имя четвертого поля ­ количество; ­ имя пятого поля ­ сумма. Тогда,   например,     для   того   чтобы   явно   присвоить   третьему   полю   записи   необходимое   значение,   следует написать  w.price := 229;.  Элемент записи используется в программе в том же качестве, что и обычная переменная. Таким образом, элемент записи можно указывать как в левой части оператора присваивания, так и в выражениях. Над элементом записи можно выполнять действия, допустимые для данных его типа. В  TP 7.0  различают фиксированные (обычные) и  вариантные записи. 1.2. Фиксированные записи Фиксированная запись состоит из одного или нескольких полей, для каждого из которых при объявлении указывается имя и тип. 117 Описание множеств. Операции над множествами.  Ввод и вывод элементов множества.  Программирование алгоритмов с использованием множеств Объявление фиксированной записи можно сделать в разделе типов Type. Type <Имя типа записи> = record <Имя поля 1> :<тип поля 1>; <Имя поля 2> :<тип поля 2>; … <Имя поля N> :<тип поля N> end; Var <Имя записи> :<Имя типа записи>; Где   служебное   слово  record  (запись)     используется   как  указатель  типа   и   в   качестве  открывающей операторной скобки,  а  end ­ закрывающей операторной скобки полей записи. Например, для приведенной выше таблицы, записи могут быть объявлены в   разделе описания переменных программы в следующем виде. Type produce=record {Имя типа записи} names  :string[20]; {Наименование продукции 20 симв.} types  :string[35]; {Тип продукции 35 символов} {Цена за единицу продукции} price  :longint; namber :longint; {Количество продукции} {Сумма} sum    :longint end; Var w: produce;      {Имя записи с объявленным типом} Здесь сначала указан тип записи с именем  produce (продукт), а затем определено имя записи   w,  указанного типа записи. Или в разделе переменных Var. Var <Имя записи> :record <Имя поля 1> :<тип поля 1>; <Имя поля 2> :<тип поля 2>; … <Имя поля N>:<тип поля N> end; например: Var   w :record {Имя записи} names :string[20];  {Наименование продукции 20 симв.} types :string[35]; price :longint; namber:longint; sum :longint {Тип продукции 35 символов} {Цена за единицу продукции} {Количество} {Сумма} end; Здесь указаны имя записи, имена полей и их типы.  Урок 2.  Ввод и вывод записей 2.1. Организация ввода записей с клавиатуры в ОЗУ компьютера. 2.2. Вывод записей из ОЗУ компьютера на экран дисплея. 2.1. Организация ввода записей с клавиатуры в ОЗУ компьютера Программирование   ввода   одной   записи   с   клавиатуры   в   ОЗУ   компьютера,   ничем  не   отличается  от программирования ввода значений каких либо переменных. Ввиду того, что запись может состоять из полей разных типов, полезно  организовать  интерфейс, т. е. систему    подсказок. Для программирования ввода  значений  полей записи необходимо пользоваться оператором  ReadLn.  В качестве примера, приведена программа ввода с клавиатуры строки ведомости учета товара на складе продукции   (см. таблицу 1). Операторы ввода значений полей  выделены курсивом. Program V1L19P1; {Ввод одной записи в ОЗУ компьютера} Uses Crt;  {Вызов библиотечного модуля работы с дисплеем и клавиатурой} 118 Var w :record         {Описание записи} names :string[20];   {Описание строковых переменных объявлено максимально 20 символов} types :string[35]; price,namber,sum :longint   {Описание целых переменных} end; {} begin ClrScr;                     WriteLn('Введи запись:'); Write('Наименование'); GoToXY(21,2);               {Стирание экрана} {Позиция курсора} ReadLn(w.names);            {Ввод наименования товара} {} WriteLn('Тип'); GoToXY(21,3);               {Позиция курсора} ReadLn(w.types);            {Ввод типа товара} {} WriteLn('Цена'); GoToXY(21,4);               {Позиция курсора} ReadLn(w.price);            {Ввод цены товара} {} WriteLn('Количество'); GoToXY(21,5);               {Позиция курсора} ReadLn(w.namber);           {Ввод количества товара} {Перевод строки} WriteLn;                    {} w.sum:=w.namber*w.price;   {Вычисление суммы} {} WriteLn('Запись введена'); WriteLn('Наименование        ',w.names); WriteLn('Тип                 ',w.types); WriteLn('Цена                ',w.price); WriteLn('Количество          ',w.namber); WriteLn('Сумма               ',w.sum); {} ReadKey    {Задержка до нажатия любой клавиши} end. Возможный вариант работы программы Введи запись: Наименование Тип Цена Количество Запись введена Наименование Тип Цена Количество Сумма Монитор 15” Samtron 56E 132 12 Монитор 15” Samtron 56E 132 12 1584 Для программирования ввода в ОЗУ  компьютера  группы  записей  с клавиатуры,  потребуется  организация циклической  операции ввода данных полей записи. В приведенной ниже программе такая операция организована с использованием  цикла  с предусловием   while  …  do. Цикл ввода реквизитов записей      прекращается  при вводе символа  “0” (ноль).  Program V1L19P2; {Ввод группы записей в ОЗУ компьютера} Uses Crt;  Var w :array[1..10] of record  {Вызов библиотечного модуля работы с дисплеем и клавиатурой} {Объявление массива записей} names,types :string[30];    price,namber,sum :longint; {Объявление строковых переменных записи} {Объявление целых переменных записи} end; i,j :integer;                    {Объявление целых переменных} 119 Описание множеств. Операции над множествами.  Ввод и вывод элементов множества.  Программирование алгоритмов с использованием множеств Label 10;                        {} begin ClrScr; i:=0;           while True do   begin {Объявление метки} {Стирание экрана} {Начальное значение счетчика записей} {Цикл ввода записей} {Начало цикла ввода записей} {Стирание экрана} ClrScr;         WriteLn('Введи реквизиты, заканчивая ввод ревизита кл. "Enter".'); WriteLn('Закончи   работу   с   программой      вводом     "0".'); i:=i+1;          w[i].names:=''; w[i].types:='';   w[i].price:=0;  w[i].namber:=0;   w[i].sum:=0;                      {} Write('Наименование'); GoToXY(15,3);                  ReadLn(w[i].names);            if (w[i].names='0') then       begin {Счетчик записей}{} {Обнуление} {реквизитов} {записи} {Позиция курсора} {Ввод наименования товара} {Условие окончания цикла ввода} WriteLn('Ввод закончен'); GoTo 10; {Безусловный переход на метку} {Позиция курсора} {Ввод цены товара} {Позиция курсора} {Ввод типа товара} end; WriteLn('Тип'); GoToXY(15,4); ReadLn(w[i].types);               WriteLn('Цена'); GoToXY(15,5);                     ReadLn(w[i].price);               WriteLn('Количество'); GoToXY(15,6);                     ReadLn(w[i].namber);              WriteLn;                          WriteLn('Введи "0" для окончания работы с программой'); WriteLn; {} w[i].sum:=w[i].namber*w[i].price;    end;           {Конец цикла ввода записей} {} 10:ClrScr;                       {Стирание экрана} WriteLn('Всего введено строк.'); for j:=1 to i­1 do               {Цикл печати записей} begin {Перевод строки} {Позиция курсора} {Ввод количества товара} {Перевод строки} {Вычисление суммы} Write(j,'.  ',w[j].names);        GoToXY(25,j+1);                   Write(w[j].types);                GoToXY(40,j+1);                   Write(w[j].price:8,w[j].namber:8,w[j].sum:10); WriteLn    {Перевод строки} {Печать наименования} {Позиция курсора} {Печать типа} {Позиция курсора} {Печать цены, количества, суммы} end; {} ReadKey     end. {Задержка до нажатия любой клавиши} Возможный вариант работы программы Введи реквизиты, заканчивая ввод реквизита кл. “Enter”. Закончи     работу   с   программой     вводом     “0”. Наименование Тип Цена Количество Монитор 15” Samtron 56E 132 12 Аналогично  вводятся  с клавиатуры  остальные необходимые записи.  Работа с программой  заканчивается вводом значения "0" (ноль). 120 Введи реквизиты, заканчивая ввод реквизита кл. “Enter”. Закончи     работу   с   программой     вводом     “0”. Наименование 0 Далее, на экране дисплея  индицируются введенные строки. Всего введено строк. 1. Монитор 2. Принтер лазерный   Canon LBP­1120 3. Сканер   15” Samtron 56E   HP Scan Jet 230 132 244  74 12 20 12 1584 4880  880 Изучая   текст   программы,   следует   обратить   внимание   на   выделенный   курсивом   фрагмент   обнуления реквизитов записи.  При написании и отладке данной программы, отсутствие этого фрагмента вызывало ошибку. 2.2. Вывод записей из ОЗУ компьютера на экран дисплея Вывод полей записи из ОЗУ компьютера на экран дисплея в программе организован с помощью оператора WriteLn. Для вывода  нескольких записей из ОЗУ компьютера на экран дисплея организуется циклическая операция со счетчиком. Количество введенных данных подсчитывается при вводе записей   за исключением последней записи со значением  “0” (см. программу V1L19P2). Урок 3.  Оператор присоединения. Вариантные записи 3.1. Оператор присоединения. 3.2. Вариантные записи. Как было показано выше,  обращение к полям записи происходит с помощью уточненного имени. В TP 7.0 существует еще один способ обращения к полям записи –  с помощью оператора присоединения  with. 3.1.  Оператор присоединения Оператор   присоединения  with  позволяет  упростить   обращение  к   полю   записи.   При   этом   имя   записи выносится в заголовок оператора присоединения, а в блоке оператора используются только имена полей. Оператор присоединения  with имеет следующий формат: with <Имя записи> do begin <Имя поля 1> : <Тип поля 1>; <Имя поля 2> : <Тип поля 2>; … <Имя поля N> : <Тип поля N> end; В качестве примера рассмотрим предыдущую программу, откорректированную с использованием оператора присоединения with.  Program V1L19P3; {Ввод записей с использованием оператора присоединения} Uses Crt;  {Вызов библиотечного модуля работы с дисплеем и клавиатурой} Var w :array[1..10] of record   names,types :string[20]; price,namber,sum :longint;  {Объявление массива записей} {Объявление строковых полей записи} {Объявление числовых полей записи} end;                        i,j :integer;               Label 10;                   {} begin ClrScr;               i:=0;                 {} while True do           begin {Конец объявления записи} {Объявление числовых переменных} {Объявление метки} {Стирание экрана дисплея} {Начальное значение счетчика записей} {Цикл формирования записей} ClrScr;               WriteLn('Введи реквизиты, заканчивая ввод ревизита кл. "Enter".'); WriteLn('Закончи   работу   с   программой      вводом     "0".'); {Начало цикла формирования записей} {Стирание экрана дисплея} 121 Описание множеств. Операции над множествами.  Ввод и вывод элементов множества.  Программирование алгоритмов с использованием множеств i:=i+1; with w[i] do                  begin {Счетчик количества записей} {Оператор присоединения} names:=''; types:='';             {Обнуление реквизитов} price:=0; namber:=0; w[i].sum:=0  {полей записи} end;                         {Конец оператора присоединения} {} with w[i] do                  begin {Оператор присоединения} Write('Наименование'); GoToXY(15,3);                {Позиционирование курсора} ReadLn(names);               {Ввод наименования продукции} if names='0' then GoTo 10;   {Условие конца цикла ввода} WriteLn('Тип'); GoToXY(15,4);                {Позиционирование курсора} ReadLn(types);               {Ввод типа продукции} WriteLn('Цена'); GoToXY(15,5);                {Позиционирование курсора} ReadLn(price);               {Ввод цены продукции} WriteLn('Количество'); GoToXY(15,6);                {Позиционирование курсора} ReadLn(namber);              {Ввод количества продукции} {} sum:=namber*price;           {Вычисление суммы} end                          {Конец оператора присоединения} end;                         {Конец цикла ввода строк} 10:ClrScr; WriteLn('Всего введено строк'); for j:=1 to i­1 do              {Цикл печати введенных строк} with w[j] do                   {Оператор присоединения} begin Write(j,'  ',names);    GoToXY(20,j+1);                 Write(types);                   GoToXY(35,j+1);                 Write(price:8,namber:8,sum:10);   {Печать числовых реквизитов} WriteLn                           {Перевод строки} {Печать номера позиции и наименования} {Позиционирование курсора} {Печать типа} {Позиционирование курсора} end;                          {Конец оператора присоединения} {} ReadKey    end. 3.2.  Вариантные записи {Задержка до нажатия любой клавиши} В   приведенных   выше   примерах   (см.   таблицу   1   и   программы)   показана   запись   документа,   имеющего фиксированную  (простую)   структуру,   которая   для  данной   записи  неизменна.   Существуют  документы,   в  которых некоторая группа полей записи  меняется  в процессе их ведения, т.е. имеются другие варианты полей записей. Записи, которые состоят из фиксированной и вариантной части,  называются вариантными записями. В некоторых случаях записи могут не иметь фиксированной части. Формат описания вариантной записи следующий: Var <Имя записи> record <Поле 1> : <Тип поля 1>; <Поле 2> : <Тип поля 2>; … <Поле N> : <Тип поля N>; {} case <Указатель> : < Тип указателя > of k1: (<Поле 1 k1> : <Тип поля 1 k1>; <Поле 2 k1> : <Тип поля 2 k1>; <Поле N k1> : <Тип поля N k1>);                   …          {Фиксированная} {часть записи} {Вариантная} {часть записи} 122 {} k2: (<Поле 1 k2> : <Тип поля 1 k2>; <Поле 2 k2> : <Тип поля 2 k2>; <Поле N k2> : <Тип поля N k2>);                   …          …………………………………………… kN: (<Поле 1 kN> : <Тип поля 1 kN>; <Поле 2 kN> : <Тип поля 2 kN>; <Поле N kN> : <Тип поля N kN>);                   …          end;,                   где  k1, k2, …, kN ­ указатели вариантных полей записи. Вариантная  часть  записи  формируется  с  помощью  оператора  case … of.        При   этом  использование оператора  альтернативы   else   не допускается. Константы указателя должны быть одного типа, что и  переменная указателя. Если список элементов, соответствующий какой либо константе, является пустым, то следует написать, например, k1 : ();.  К элементам вариантной части  можно обращаться с помощью составных имен или использовать оператор присоединения.   В качестве примера приведем запись, учета кадров высшего учебного заведения. Программа предназначена для ввода учетных данных студентов и сотрудников (работников) учебного заведения. Program V1L19P4; {Вариантная запись} Uses Crt; Var z:array[1..100] of record fio:string[100]; case p:char of 'с': (ngr:string[20]; pns:byte); {} 'р': (nkf:string[40]; stg:byte); end; i,j:byte; {} begin ClrScr; i:=0; while True do begin {Ф.И.О. студента или работающего} {Варианты записей}  {Метка варианта ”студент”} {Наименование группы студента} {Порядковый номер студента в группе} {Метка варианта ”работник”} {Наименование кафедры работающего} {Стаж работы работающего} {Конец вариантов выбора записей} {Счетчики циклов} {Начало основного блока программы} {Стирание экрана} {Начальное значение счетчика} {Цикл ввода записей} {Начало группы операторов цикла} {Начальное значение счетчика итераций} ClrScr; i:=i+1; Write('Введи Ф.И.О.:               '); ReadLn(z[i].fio); if z[i].fio='.' then Break;  {Условие окончания ввода} Write('Введи признак:              '); ReadLn(z[i].p); case z[i].p of 'с': begin {Выбор варианта ввода по указ. признаку} {Метка варианта ”студент”} {Начало группы операторов варианта} Write('Введи обозначение   группы: '); ReadLn(z[i].ngr); Write('Введи порядковый в  списке: '); ReadLn(z[i].pns) end; 'р': begin {Конец группы операторов варианта} {Начало группы операторов варианта} {Метка варианта ”работник”} Write('Введи наименование кафедры: '); ReadLn(z[i].nkf); Write('Введи стаж работы:          '); 123 Описание множеств. Операции над множествами.  Ввод и вывод элементов множества.  Программирование алгоритмов с использованием множеств ReadLn(z[i].stg) end end {Конец группы операторов варианта} {Конец выбора варианта по указ. признаку} end; {} ClrScr; for j:=1 to i­1 do {Цикл вывода записей} begin {Начало гр. операторов цикла} {Конец цикла ввода записей} WriteLn(j:3,'. Ф.И.О.                   ',z[j].fio); if z[j].p='с' then {Условие "студент"} begin {Начало гр. операторов} WriteLn('     Статус:                  студент'); WriteLn('     Группа:                  ',z[j].ngr); WriteLn('     № п.п. в списке группы:  ',z[j].pns:2); end; {Конец гр. операторов} if z[j].p='р' then {Условие "работник"} begin end WriteLn('     Статус:                  работник'); WriteLn('     Кафедра:                 ',z[j].nkf); WriteLn('     Стаж работы:             ',z[j].stg:2); end; {} ReadKey end. {Конец цикла вывода записей} {Задержка до нажатия любой клавиши} {Конец программы} Возможный вариант работы программы Введи Ф.И.О.:  Введи признак: Введи обозначение группы: Введи порядковый номер в группе: 12 Петров Василий Иванович с пи­100 Введи Ф.И.О.:  Введи признак: Введи наименование кафедры: Введи стаж работы: Горюхин Эдуард Петрович р зки 23 Введи Ф.И.О.: . Поле Ф.И.О. является фиксированным. При вводе признака   “с” – студент или “р.” – работник, выбирается один   из   вариантов   ввода   следующих   полей.   На   экран   дисплея   последовательно   выводятся   подсказки,   которые помогают оператору в работе. Цикл ввода  информации  закачивается точкой. После чего на экран выводится список введенных записей. 1. Ф.И.О.:     Статус:    Группа:    №  п.п. студента в группе: 2. Ф.И.О.:     Статус:    Кафедра:    Стаж работы: Петров Василий Иванович студент пи­100 12 Горюхин Эдуард Петрович работник зки 23 Контрольные вопросы и упражнения 1. Что понимается под записью в языке Pascal? 2. Приведите пример записи? 3. Как объявляются записи? 4. Какие операции допустимы над элементами записи? 5. Для чего предназначено уточненное имя? 6. Как организовать ввод и вывод данных записи? 7. Как записывается уточненное имя? 8. Чем отличается запись от массива? 9. Можно ли использовать в записи элементы одного типа? 124 10. Какие операции допустимы над записью в целом? 11. Каково назначение оператора присоединения? 12. 13. Написать программу формирования списка учащихся первого года обучения на 10 человек некого учебного. Для каждого учащегося указать: ­ ­ ­ ­ ­ Ф.И.О.; дату рождения; наименование группы; год поступления в учебное заведение; среднюю оценку за первый год обучения. Вывести на экран дисплея списки учащихся, имеющих высокий, средний  и низкий балл за год обучения.  Для заметок, вопросов и ответов ______________________________________________________________________________________________________ ______________________________________________________________________________________________________ ______________________________________________________________________________________________________ ______________________________________________________________________________________________________ ______________________________________________________________________________________________________ ______________________________________________________________________________________________________ ______________________________________________________________________________________________________ ______________________________________________________________________________________________________ ______________________________________________________________________________________________________ ______________________________________________________________________________________________________ ______________________________________________________________________________________________________ ______________________________________________________________________________________________________ ______________________________________________________________________________________________________ ______________________________________________________________________________________________________ ______________________________________________________________________________________________________ ______________________________________________________________________________________________________ ______________________________________________________________________________________________________ ______________________________________________________________________________________________________ ______________________________________________________________________________________________________ ______________________________________________________________________________________________________ 125

Записи

Записи

Записи

Записи

Записи

Записи

Записи

Записи

Записи

Записи

Записи

Записи

Записи

Записи

Записи

Записи

Записи

Записи
Материалы на данной страницы взяты из открытых истончиков либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.
25.04.2017