Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
pascal:records [17/10/2011 12:20]
dnaumov
pascal:records [17/10/2011 13:04] (текущий)
dnaumov
Строка 1: Строка 1:
 ===== Объединение разнородных элементов (Запись) ===== ===== Объединение разнородных элементов (Запись) =====
  
-Массивы объединяют однородные единицы информации – элементы одного и того же типа. Но многообразие информации нельзя свести только к какому-то одному типу данных. Например,​ указывая положение точки в пространстве,​ мы можем воспользоваться одним и тем же типом для указания ее координат,​ но, описывая человека,​ мы должны указать его имя, рост, цвет глаз и волос, то есть в одном описании объединим разнородную информацию. ​+Массивы объединяют однородные единицы информации – элементы одного и того же типа. Но многообразие информации нельзя свести только к какому-то одному типу данных. Например,​ указывая положение точки в пространстве,​ мы можем воспользоваться одним и тем же типом для указания ее координат,​ но, описывая человека,​ мы должны указать его имя, рост, цвет глаз и волос, то есть в одном описании объединяем разнородную информацию. ​
  
-Данные такого рода, описывающие существенные стороны того или иного объекта путем включения в описание нескольких,​ часто разнотипных,​ элементов,​ называют записью (record). В языке Паскаль запись определяется путем указания служебного слова record и перечисления входящих в запись элементов с указанием типов этих элементов.+Данные такого рода, описывающие существенные стороны того или иного объекта путем включения в описание нескольких,​ часто разнотипных,​ элементов,​ называют записью (record). В языке Паскаль запись определяется путем указания служебного слова ​**record** и перечисления входящих в запись элементов с указанием типов этих элементов.
  
-**Запись ​Паскаля ​– структурированный комбинированный тип данных,​ состоящий из фиксированного числа компонент (полей) разного типа.**+**Запись – структурированный комбинированный тип данных,​ состоящий из фиксированного числа компонент (полей) разного типа.**
  
-Например,​ анкетные данные о студенте вуза ​могут быть представлены в виде информационной структуры+Например,​ анкетные данные об ученике школы ​могут быть представлены в виде информационной структуры
  
 {{:​pascal:​new-14.gif|Представление структуры записи Паскаля}} {{:​pascal:​new-14.gif|Представление структуры записи Паскаля}}
Строка 15: Строка 15:
 <code pascal|Описание типа>​ <code pascal|Описание типа>​
 type < имя _ типа >=record type < имя _ типа >=record
-   <​имя_поля1>: тип; +   <​имя_поля_1>: тип; 
-   <​имя_поля2>: тип;+   <​имя_поля_2>: тип;
    ​......    ​......
-   <​имя_поля ​>: тип+   <​имя_поля_K >: тип
 end ;  end ; 
 </​code>​ </​code>​
Строка 24: Строка 24:
 где **record** – служебное слово, а **<​имя_типа>​** и **<​имя_поля>​** - правильные идентификаторы языка Паскаль. где **record** – служебное слово, а **<​имя_типа>​** и **<​имя_поля>​** - правильные идентификаторы языка Паскаль.
  
-Описание анкеты ​студента в Паскале будет выглядеть так:+Описание анкеты ученика в Паскале будет выглядеть так:
  
 <code pascal|Пример фрагмента программы описания записи Паскаля>​ <code pascal|Пример фрагмента программы описания записи Паскаля>​
Строка 32: Строка 32:
    ​dat_r:​ string[8];    ​dat_r:​ string[8];
    ​adres:​ string[50];    ​adres:​ string[50];
-   curs1..5; +   clstring[5]
-   grupp: string[3];+   gr: string[3];
 end;  end; 
 </​code>​ </​code>​
Строка 39: Строка 39:
 Такая запись Паскаля,​ так же как и соответствующее ей дерево,​ называется двухуровневой. Такая запись Паскаля,​ так же как и соответствующее ей дерево,​ называется двухуровневой.
  
-Поля записи Паскаля могут иметь любой тип, в частности сами могут быть записями. Такая возможность используется в том случае,​ когда требуется представить многоуровневое дерево (более 2 уровней). Например,​ те же сведения о студентах можно отобразить трехуровневым деревом. ​+Поля записи Паскаля могут иметь любой тип, в частности сами могут быть записями. Такая возможность используется в том случае,​ когда требуется представить многоуровневое дерево (более 2 уровней). Например,​ те же сведения об учениках можно отобразить трехуровневым деревом. ​
  
 {{:​pascal:​new-15.gif|Представление структуры записи Паскаля}} {{:​pascal:​new-15.gif|Представление структуры записи Паскаля}}
 +
 <code pascal|Пример фрагмента программы описания записи Паскаля>​ <code pascal|Пример фрагмента программы описания записи Паскаля>​
 Type anketa1=record Type anketa1=record
    fio: string[45];    fio: string[45];
    pol: char;    pol: char;
-   ​dat_r:​ record; +   ​dat_r:​ record 
-   ​god: integer; +     ​god: integer; 
-   ​mes: string[10];​ +     ​mes: string[10];​ 
-   ​den: 1..31; +     ​den: 1..31; 
-end; +    end; 
-adres: record +   ​adres: record 
-   ​gorod: string[25];​ +     ​gorod: string[25];​ 
-   ​ulica: string [20]; +     ​ulica: string [20]; 
-   ​dom, kv: integer; +     ​dom, kv: integer; 
-end; +    end; 
-curs1..5; +   clstring[5]
-   grupp: string[3];+   gr: string[3];
 end;  end; 
 </​code>​ </​code>​
Строка 67: Строка 68:
 <code pascal|Задание переменной>​ <code pascal|Задание переменной>​
 var var
-student: anketa; +   pupil: anketa; 
-student 1anketa 1;+   pupil1anketa1;
 </​code>​ </​code>​
  
-Теперь нам нужно узнать,​ как правильно получать доступ к элементам записи Паскаля. Элементы записи называются полями,​ а обращение к ним производится через использование их имен – идентификаторов полей. Практически,​ поля записи обрабатываются точно так же, как и любые другие переменные. Но в отличие от обычной переменной имена полей должны предваряться ссылкой на идентификатор записи Паскаля и отделяться от него точкой. Такая запись называется уточняющий идентификатор:​+Теперь нам нужно узнать,​ как правильно получать доступ к элементам записи Паскаля. Элементы записи называются ​**полями**, а обращение к ним производится через использование их имен – идентификаторов полей. Практически,​ поля записи обрабатываются точно так же, как и любые другие переменные. Но в отличие от обычной переменной имена полей должны предваряться ссылкой на идентификатор записи Паскаля и отделяться от него ​**точкой**. Такая запись называется уточняющий идентификатор:​
  
 <code pascal|Уточняющий идентификатор>​ <code pascal|Уточняющий идентификатор>​
Строка 77: Строка 78:
 </​code>​ </​code>​
  
-Например,​ чтобы обратиться к полю ​curs переменной ​student ​, необходимо указать следующее составное имя:+Например,​ чтобы обратиться к полю ​**cl** ​переменной ​**pupil** ​, необходимо указать следующее составное имя:
  
-<code pascal|Обращение к полю ​curs+<code pascal|Обращение к полю ​cl
-student.curs :=3;+pupil.cl :=3;
 <​code>​ <​code>​
  
-Для того чтобы обратиться к полю god в записи ​student 1, необходимо записать уточняющий идентификатор,​ состоящий из трех имен:+Для того чтобы обратиться к полю god в записи ​pupil1, необходимо записать уточняющий идентификатор,​ состоящий из трех имен:
  
 <code pascal|Обращение к полю god> <code pascal|Обращение к полю god>
-student1.dat_r.god:​=1982;​+pupil1.dat_r.god:​=1982;​
 </​code>​ </​code>​
  
Строка 93: Строка 94:
 ===== Операции над записями ===== ===== Операции над записями =====
  
-Единственная операция,​ которую можно произвести над однотипными записями Паскаля – это присваивание.+Единственная операция,​ которую можно произвести над однотипными записями Паскаля – это ​*присваивание*. 
 + 
 + 
 +<code pascal|Присваивание>​ 
 +var 
 +   ​pupil1,​ pupil2: anketa1; 
 + 
 +begin 
 + 
 +   ... 
 + 
 +   ​pupil1:​=pupil2;​ 
 + 
 +   ... 
 + 
 +end. 
 +</​code>​
  
 Все другие операции производятся над отдельными полями записи. ​ Все другие операции производятся над отдельными полями записи. ​
Строка 110: Строка 127:
    ​dat_r:​ string[8];    ​dat_r:​ string[8];
    ​adres:​ string[50];    ​adres:​ string[50];
-   curs1..5; +   clstring[5]
-   grupp: string[3]+   gr: string[3]
 end; end;
  
-var student: anketa;+var pupil: anketa;
 begin begin
-   ​writeln (‘введите сведения о студенте’);+   ​writeln (‘введите сведения об ученике’);
    ​{обратите внимание,​ ввод каждого поля осуществляется отдельно}    ​{обратите внимание,​ ввод каждого поля осуществляется отдельно}
    ​writeln (‘введите фамилию,​ имя и отчество’);​    ​writeln (‘введите фамилию,​ имя и отчество’);​
-   ​readln (student.fio);+   ​readln (pupil.fio);
    ​writeln (‘введите дату рождения’);​    ​writeln (‘введите дату рождения’);​
-   ​readln (student.dat_r);+   ​readln (pupil.dat_r);
    ​writeln (‘введите адрес’);​    ​writeln (‘введите адрес’);​
-   ​readln(student.adres); +   ​readln(pupil.adres); 
-   ​writeln (‘введите курс’); +   ​writeln (‘введите класс’); 
-   ​readln(student.curs);+   ​readln(pupil.cl);
    ​writeln (‘введите группу’);​    ​writeln (‘введите группу’);​
-   ​readln (student.grupp);+   ​readln (pupil.gr);
    ​writeln (‘ввод закончен’);​    ​writeln (‘ввод закончен’);​
    ​writeln ;    ​writeln ;
    ​{обратите внимание,​ что вывод записи осуществляется по полям}    ​{обратите внимание,​ что вывод записи осуществляется по полям}
-   ​writeln (‘фамилия ​студента: ’, student ​. fio ); +   ​writeln (‘фамилия ученика: ’, pupil.fio ); 
-   ​writeln(‘ дата рождения : ’, student.dat_r); +   ​writeln(‘ дата рождения : ’, pupil.dat_r); 
-   ​writeln(‘ адрес : ’, student.adres); +   ​writeln(‘ адрес : ’, pupil.adres); 
-   ​writeln(‘ курс : ’, student.curs); +   ​writeln(‘ класс : ’, pupil.cl); 
-   ​writeln(‘ группа : ’, student.grupp);+   ​writeln(‘ группа : ’, pupil.gr);
 end. end.
 </​code>​ </​code>​
Строка 148: Строка 165:
    ​dat_r:​ string[8];    ​dat_r:​ string[8];
    ​adres:​ string[50];    ​adres:​ string[50];
-   curs1..5; +   clstring[5]
-   grupp: string[3]+   gr: string[3]
 end; end;
  
-var student: array [1..100] of anketa;+var pupil: array [1..100] of anketa;
    I: integer;    I: integer;
  
Строка 159: Строка 176:
    for I:=1 to 100 do    for I:=1 to 100 do
    begin    begin
-      writeln (‘введите сведения о’, I , ‘-м ​студенте’);+      writeln (‘введите сведения о’, I , ‘-м ученике’);
       writeln (‘введите фамилию,​ имя и отчество’);​       writeln (‘введите фамилию,​ имя и отчество’);​
-      readln (student[I].fio);+      readln (pupil[I].fio);
       writeln (‘введите дату рождения’);​       writeln (‘введите дату рождения’);​
-      readln (student[I].dat_r);+      readln (pupil[I].dat_r);
       writeln (‘введите адрес’);​       writeln (‘введите адрес’);​
-      readln(student[I].adres);​ +      readln(pupil[I].adres);​ 
-      writeln (‘введите курс’); +      writeln (‘введите класс’); 
-      readln(student[I].curs);+      readln(pupil[I].cl);
       writeln (‘введите группу’);​       writeln (‘введите группу’);​
-      readln (student[I].grupp);+      readln (pupil[I].gr);
    end;    end;
    ​writeln (‘ввод закончен’);​    ​writeln (‘ввод закончен’);​
    ​writeln ;    ​writeln ;
-   ​{просматриваем массив записей и выбираем только ​студентов 2-го курса }+   ​{просматриваем массив записей и выбираем только учеников 11-класса }
    for I:=1 to 100 do    for I:=1 to 100 do
-      if student[I].curs=then +      if pupil[I].cl='​11-1' ​then 
-         ​writeln(‘ фамилия студента : ’, student[I].fio);+         ​writeln(‘ фамилия студента : ’, pupil[I].fio);
 end.  end. 
 </​code>​ </​code>​
Строка 194: Строка 211:
 <code pascal|Пример фрагмента программы c записью и префиксом Паскаля>​ <code pascal|Пример фрагмента программы c записью и префиксом Паскаля>​
 for I:=1 to 100 do for I:=1 to 100 do
-   ​with ​student[I] do+   ​with ​pupil[I] do
    begin    begin
-      writeln (‘введите сведения о’, I , ‘-м ​студенте’);+      writeln (‘введите сведения о’, I , ‘-м ученике’);
       writeln (‘введите фамилию,​ имя и отчество’);​       writeln (‘введите фамилию,​ имя и отчество’);​
       readln (fio);       readln (fio);
Строка 203: Строка 220:
       writeln (‘введите адрес’);​       writeln (‘введите адрес’);​
       readln(adres);​       readln(adres);​
-      writeln (‘введите курс’); +      writeln (‘введите класс’); 
-      readln(curs);+      readln(cl);
       writeln (‘введите группу’);​       writeln (‘введите группу’);​
-      readln (grupp);+      readln (gr);
    ​end; ​    ​end; ​
 <​code>​ <​code>​
pascal/records.txt · Последние изменения: 17/10/2011 13:04 — dnaumov
CC Attribution-Noncommercial 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0