Скачать презентацию Тип данных запись Тип запись Запись Скачать презентацию Тип данных запись Тип запись Запись

Тип данных запись2013.ppt

  • Количество слайдов: 22

Тип данных запись Тип данных запись

Тип запись Запись – структурированный тип данных из фиксированного числа компонентов одного или нескольких Тип запись Запись – структурированный тип данных из фиксированного числа компонентов одного или нескольких типов. Компоненты записи называются полями. Каждое поле имеет имя и тип.

Описание типа запись VAR <имя переменной>: record <имя поля 1>: <тип 1>; <имя поля Описание типа запись VAR <имя переменной>: record <имя поля 1>: <тип 1>; <имя поля 2>: <тип 2>; . . . <имя поля n>: <тип n>; End;

Описание типа запись type <имя типа> = record <имя поля>: <тип поля>; … end; Описание типа запись type <имя типа> = record <имя поля>: <тип поля>; … end; var a, b: <имя типа> ;

Пример описания типа запись type adress = record town, street: string; home: string; flat: Пример описания типа запись type adress = record town, street: string; home: string; flat: byte; end; var a, b: adress;

Пример описания типа запись если иметь дело со многими людьми, то переменная типа запись Пример описания типа запись если иметь дело со многими людьми, то переменная типа запись может быть объявлена массивом type adress = record town, street: string; home: string; flat: byte; end; var a : array[1. . 25] of adress;

Обращение к имени поля осуществляется двумя способами: 1) С указанием составного имени: имя переменной Обращение к имени поля осуществляется двумя способами: 1) С указанием составного имени: имя переменной и имя поля, разделённые точкой. Для приcваивания полям значений используется оператор присваивания или оператор ввода. Например, a. town: =“Саратов”; a. flat: =14; Readln(a. name);

Обращение к имени поля : составное имя 1)Над полями разрешены все операции, допустимые для Обращение к имени поля : составное имя 1)Над полями разрешены все операции, допустимые для типа поля. If a. flat > 10 then Writeln(‘Yes’); v 2)Над переменными одного типа разрешена операция присвоения: a: =b; v a. town: =b. town; a. street: =b. street; a. home: =b. home; a. flat: =b. flat;

Обращение к имени поля Используется оператор присоединения. Общий вид with <имя переменной> do begin Обращение к имени поля Используется оператор присоединения. Общий вид with <имя переменной> do begin <операторы> end; Внутри оператора присоединения с именами полей можно работать как с обычными переменными (к компонентам записи обращаются только с помощью имени соответствующего поля).

Оператор присоединения пример with a do begin town: =“Саратов”; flat: =14; end; a. town: Оператор присоединения пример with a do begin town: =“Саратов”; flat: =14; end; a. town: =“Саратов ”; a. flat: =14;

Пример1. Дан список учащихся, включающий фамилию, имя, пол, возраст. Вывести список девушек старше 15 Пример1. Дан список учащихся, включающий фамилию, имя, пол, возраст. Вывести список девушек старше 15 лет. (файловый ввод-вывод) n Данные 4 Иванов Игорь м 16 Вышина Елена ж 12 Косарева Анна ж 17 Петрова Валерия ж 18 в файле input. txt n Данные в файле output. txt Косарева Анна ж 17 Петрова Валерия ж 18

program p 1; type pupil=record fam: string; name: string; sex: char; age: byte; end; program p 1; type pupil=record fam: string; name: string; sex: char; age: byte; end; var i, n: byte; spicok: array[1. . 10] of pupil; begin readln(n); for i: =1 to n do begin readln(spicok[i]. fam); readln(spicok[i]. name); readln(spicok[i]. sex); readln(spicok[i]. age); if (spicok[i]. sex=‘ж’) and (spicok[i]. age>15) then begin write(spicok[i]. fam, ’ ‘); write(spicok[i]. name, ’ ‘); write(spicok[i]. sex, ’ ‘); writeln(spicok[i]. age); end; end.

program p 1; type pupil=record sex: char; age: byte; fam: string[10]; name: string[10]; end; program p 1; type pupil=record sex: char; age: byte; fam: string[10]; name: string[10]; end; var i, n: byte; spicok: array[1. . 10] of pupil; begin readln(n); for i: =1 to n do begin with spicok[i] do begin readln(fam); readln(name); readln(sex); readln(age); if (sex=‘ж’) and (age>15) then begin write(fam, ’ ‘); write(name, ’ ‘); write(sex, ’ ‘); writeln(age); end; end.

Пример2 Пусть известны ФИ и оценки по 10 предметам каждого из 25 учеников класса. Пример2 Пусть известны ФИ и оценки по 10 предметам каждого из 25 учеников класса. Требуется вычислить балл каждого. средний

program p 1; type pupil=record fam, name: string; mark: array[1. . 10] of byte; program p 1; type pupil=record fam, name: string; mark: array[1. . 10] of byte; sr: real; end; var i, n, j: byte; spicok: array[1. . 10] of pupil; begin readln(n); for i: =1 to n do begin readln(spicok[i]. fam); readln(spicok[i]. name); for j: =1 to 10 do begin readln (spisok[i]. mark[j]); s: =s+ spisok[i]. mark[j]; end; spisok[i]. sr: =(s)/10; s: =0; write(spicok[i]. fam, ’ ‘); write(spicok[i]. name, ’ ‘); writeln(spicok[i]. sr: 5: 3); end.

program p 1; type pupil=record fam, name: string; mark: array[1. . 10] of byte; program p 1; type pupil=record fam, name: string; mark: array[1. . 10] of byte; sr: real; end; var i, n, j: byte; spicok: array[1. . 10] of pupil; begin readln(n); for i: =1 to n do begin with spicok[i] do begin readln(fam); readln(name); for j: =1 to 10 do begin readln (mark[j]); s: =s+ mark[j]; end; sr: =(s)/10; s: =0; write(fam, ’ ‘); write(name, ’ ‘); writeln(sr: 5: 3); end.

Пример. Дан список учащихся, включающий фамилию, имя, пол, возраст. Вывести список девушек старше 15 Пример. Дан список учащихся, включающий фамилию, имя, пол, возраст. Вывести список девушек старше 15 лет. В первой строке вводится количество учащихся N. Далее следует N строк, имеющих следующий формат: <Фамилия><Имя><Пол><Возраст>. Здесь <Фамилия>- строка, состоящая не более чем из 20 символов; <Имя> - строка, состоящая не более чем из 15 символов; <Пол> - символ; <Возраст>- целое число. При этом <Фамилия> и <Имя>, <Имя> и <Пол>, <Пол> и <Возраст> разделены одним пробелом.

n Данные в файле input. txt 4 Иванов Игорь м 16 Вышина Елена ж n Данные в файле input. txt 4 Иванов Игорь м 16 Вышина Елена ж 12 Косарева Анна ж 17 Петрова Валерия ж 18 n Данные в файле output. txt Косарева Анна Петрова Валерия

type pupil=record fam, name: string; sex: char; age: byte; end; var i, n: byte; type pupil=record fam, name: string; sex: char; age: byte; end; var i, n: byte; a: array[1. . 10] of pupil; c: char; begin readln(n); n for i: =1 to n do begin n read(c); a[i]. fam: =‘’; n while c<>’ ‘ do begin n a[i]. fam: =a[i]. fam+c; n read(c); n end; n read(c); a[i]. nam: =‘’; n while c<>’ ‘ do begin n a[i]. nam: =a[i]. nam+c; n read(c); n end; n read(a[i]. sex); n readln(a[i]. age); n if (a[i]. sex=‘ж’) and (a[i]. age>15) then n end; n end. writeln(a[i]. fam, ‘ ', a[i]. nam);

Пример 2. Дан список учащихся, включающий фамилию, имя, пол, возраст. Поменять местами первого и Пример 2. Дан список учащихся, включающий фамилию, имя, пол, возраст. Поменять местами первого и последнего учащихся в списке. В первой строке вводится количество учащихся N. Далее следует N строк, имеющих следующий формат: <Фамилия><Имя><Пол><Возраст>. Здесь <Фамилия>- строка, состоящая не более чем из 20 символов; <Имя> - строка, состоящая не более чем из 15 символов; <Пол> - символ; <Возраст>- целое число. При этом <Фамилия> и <Имя>, <Имя> и <Пол>, <Пол> и <Возраст> разделены одним пробелом.

type pupil=record fam, name: string; sex: char; age: byte; end; var i, n: byte; type pupil=record fam, name: string; sex: char; age: byte; end; var i, n: byte; a: array[1. . 10] of pupil; c: char; b: pupil; begin readln(n); n for i: =1 to n do begin n read(c); a[i]. fam: =‘’; n while c<>’ ‘ do begin n a[i]. fam: =a[i]. fam+c; n read(c); n end; n read(c); a[i]. nam: =‘’; n while c<>’ ‘ do begin n a[i]. nam: =a[i]. nam+c; n read(c); n end; n read(a[i]. sex); n readln(a[i]. age); n end; n (окончание на след. слайде)

p: =a[1]; a[1]: =a[n]; a[n]: =p; for i: =1 to n do begin writeln(a[i]. p: =a[1]; a[1]: =a[n]; a[n]: =p; for i: =1 to n do begin writeln(a[i]. fam, ’ ‘, a[i]. nam, ’ ‘, a[i]. sex, ’ ‘a[i]. age); end.