СДЕЛАЙТЕ СВОИ УРОКИ ЕЩЁ ЭФФЕКТИВНЕЕ, А ЖИЗНЬ СВОБОДНЕЕ

Благодаря готовым учебным материалам для работы в классе и дистанционно

Скидки до 50 % на комплекты
только до

Готовые ключевые этапы урока всегда будут у вас под рукой

Организационный момент

Проверка знаний

Объяснение материала

Закрепление изученного

Итоги урока

Записи(record) в Pascal ABC

Категория: Информатика

Нажмите, чтобы узнать подробности

Запись – это структура, состоящая из фиксированного числа компонент, называемых полями.

Данные одного поля разных записей имеют один и тот же тип, а разных полей могут иметь разные типы. 

type t = record

id11, id12, …: type1;

id21, id22, …: type2;

……………….

end;

здесь id – идентификаторы полей; type – типы полей; t – имя типа.

Просмотр содержимого документа
«Записи(record) в Pascal ABC»

Записи (Record)  в Рascal ABC Автор: Комкова М.С. Учитель информатики, гимназия МИИТ, г.Москва.

Записи (Record) в Рascal ABC

Автор: Комкова М.С.

Учитель информатики, гимназия МИИТ, г.Москва.

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

Понятие

Запись  – это структура, состоящая из фиксированного числа компонент, называемых полями.

Данные одного поля разных записей имеют один и тот же тип , а разных полей могут иметь разные типы. 

Общий вид описания типа  record : type t = record id11, id12, …: type1; id21, id22, …: type2; ……………… . end; здесь id – идентификаторы полей; type – типы полей; t – имя типа.

Общий вид описания типа  record :

type t = record

id11, id12, …: type1;

id21, id22, …: type2;

……………… .

end;

здесь id – идентификаторы полей; type – типы полей; t – имя типа.

Пример. Данные комплексного вида можно описать переменной типа  record . type complex = record re, im: real end; var c: complex; здесь  complex  – имя типа, а  c  – имя переменной. Переменная c состоит из двух полей:  re  и  im , имеющих один и тот же тип (real). Эти поля переменной c обозначаются как  c.re  и  c.im .

Пример.

Данные комплексного вида можно описать переменной типа  record .

type complex = record

re, im: real end;

var c: complex;

здесь  complex  – имя типа, а  c  – имя переменной. Переменная c состоит из двух полей:  re  и  im , имеющих один и тот же тип (real). Эти поля переменной c обозначаются как  c.re  и  c.im .

Пример. Даты каких-либо событий можно описать следующим образом: type date = record month: 1..12; day: 1..31; year: integer end; var d: date; В этом примере описан тип  date  и переменная  d , принадлежащая этому типу.

Пример.

Даты каких-либо событий можно описать следующим образом:

type date = record

month: 1..12;

day: 1..31;

year: integer

end;

var d: date;

В этом примере описан тип  date  и переменная  d , принадлежащая этому типу.

Например, чтобы заслать в d дату 12.01.2003, надо выполнить следующие операторы: d.month := 1; d.day := 12; d.year := 2003;

Например, чтобы заслать в d дату 12.01.2003, надо выполнить следующие операторы:

d.month := 1;

d.day := 12;

d.year := 2003;

Пример. Вычислить сумму s двух комплексных чисел x = 2 + 7i и y = 6 + 3i (т.е. x, y, s: complex;). x.re := 2.0; x.im := 7.0; y.re := 6.0; y.im := 3.0; s.re := x.re + y.re; s.im := x.im + y.im;

Пример.

Вычислить сумму s двух комплексных чисел x = 2 + 7i и y = 6 + 3i (т.е. x, y, s: complex;).

x.re := 2.0;

x.im := 7.0;

y.re := 6.0;

y.im := 3.0;

s.re := x.re + y.re;

s.im := x.im + y.im;

Запись может быть компонентой других структур. Например, введем тип family(семья: отец, мать, 1-й ребенок, 2-й ребенок): type family = (father, mother, child1, child2); var birthday: array[family] of date;  где date – описанная выше запись.

Запись может быть компонентой других структур.

Например, введем тип family(семья: отец, мать, 1-й ребенок, 2-й ребенок):

type family = (father, mother, child1, child2);

var birthday: array[family] of date;

где date – описанная выше запись.

Для занесения даты рождения, например, mother, достаточно выполнить операторы: birthday[mother].month := 5; birthday[mother].day := 1; birthday[mother].year := 1965;

Для занесения даты рождения, например, mother, достаточно выполнить операторы:

birthday[mother].month := 5;

birthday[mother].day := 1;

birthday[mother].year := 1965;

Сортировка номеров строк матрицы по убыванию сумм строк Задача:   Упорядочить номера строк матрицы по убыванию сумм элементов срок. Вывести на экран отсортированные номера строк и соответствующие им суммы.

Сортировка номеров строк матрицы по убыванию сумм строк

Задача: 

Упорядочить номера строк матрицы по убыванию сумм элементов срок. Вывести на экран отсортированные номера строк и соответствующие им суммы.

Алгоритм решения задачи:  В данном случае элементы самой матрицы сортировать не надо. Требуется сортировка номеров строк. Следовательно, они должны быть сохранены в какой-либо структуре и связаны с суммами строк. Можно создать два одноразмерных массива, в одном хранить номера строк, в другом - соответствующие им суммы. При сортировке второго массива перестановки также выполнять в первом. Однако проще использовать массив записей, где каждая запись имеет два поля: номер строки и ее сумму. В таком случае сортировка элементов массива выполняется по полю суммы. В отличие от варианта с использованием двух массивов, здесь переставлять вслед за сортировкой сумм соответствующие им номера строк не требуется, так как сортируются записи, в которых номера и суммы объединены в одну структуру.

Алгоритм решения задачи: 

В данном случае элементы самой матрицы сортировать не надо. Требуется сортировка номеров строк. Следовательно, они должны быть сохранены в какой-либо структуре и связаны с суммами строк. Можно создать два одноразмерных массива, в одном хранить номера строк, в другом - соответствующие им суммы. При сортировке второго массива перестановки также выполнять в первом.

Однако проще использовать массив записей, где каждая запись имеет два поля: номер строки и ее сумму. В таком случае сортировка элементов массива выполняется по полю суммы. В отличие от варианта с использованием двух массивов, здесь переставлять вслед за сортировкой сумм соответствующие им номера строк не требуется, так как сортируются записи, в которых номера и суммы объединены в одну структуру.

Код программы: const N = 7; M = 5; type row = record sum: word; id: byte; end; var arr: array[1..N,1..M] of word; rows: array[1..N] of row; i,j: byte; b: row; begin randomize; for i:=1 to N do begin rows[i].sum := 0; rows[i].id := i; write(i,' -'); for j:=1 to M do begin arr[i,j] := random(9) + 1; write(arr[i,j]:2); rows[i].sum := rows[i].sum + arr[i,j]; end; writeln; end;    for i:=1 to N-1 do for j:=1 to N-i do if rows[j].sum begin b := rows[j]; rows[j] := rows[j+1]; rows[j+1] := b; end;   writeln('Строки по убыванию сумм: '); for i:=1 to N do writeln(rows[i].id,' - ',rows[i].sum); end.

Код программы:

const N = 7; M = 5;

type row = record

sum: word;

id: byte;

end;

var arr: array[1..N,1..M] of word;

rows: array[1..N] of row; i,j: byte;

b: row; begin randomize;

for i:=1 to N do begin rows[i].sum := 0;

rows[i].id := i;

write(i,' -');

for j:=1 to M do

begin

arr[i,j] := random(9) + 1;

write(arr[i,j]:2);

rows[i].sum := rows[i].sum + arr[i,j];

end;

writeln;

end;  

for i:=1 to N-1 do

for j:=1 to N-i do

if rows[j].sum

begin

b := rows[j];

rows[j] := rows[j+1];

rows[j+1] := b;

end;  

writeln('Строки по убыванию сумм: ');

for i:=1 to N do

writeln(rows[i].id,' - ',rows[i].sum);

end.

 Вывести на экран фамилии студентов, чей балл выше среднего по группе.   Задача:  Описание переменных:  arr_studs – группа студентов;  average – средний балл в группе.

Вывести на экран фамилии студентов, чей балл выше среднего по группе.

Задача:

Описание переменных: 

arr_studs – группа студентов; average – средний балл в группе.

average then writeln(arr_studs[i].sname); readln end . " width="640"

Код программы:

type

studs = record

sname: string [25];

eval: integer ;

end ;

var

arr_studs: array [1..15] of studs;

sum: integer ;

average: real ;

i,n: byte ;

begin

write('Количество студентов: ');

readln(n);

sum := 0;

for i:=1 to n do

with arr_studs[i] do begin

write(i,'-й студент: ');

readln(sname);

write(' Оценка: ');

readln(eval);

sum := sum + eval;

end ;

average := sum / n;

writeln;

writeln('Студенты с оценкой выше средней:');

for i:=1 to n do

if arr_studs[i].eval average then

writeln(arr_studs[i].sname);

readln

end .

Программа, определяющая количество дней в месяце. Задача:  Алгоритм решения задачи:  Переменная d имеет тип данных запись и содержит два поля: year – для хранения года и month – для месяца. Пользователь вводит год и месяц. Оператор выбора  case  по номеру месяца определяет количество дней в нем. Ситуация осложняется тем, что в феврале может быть как 28 дней, так и 29 (в високосный год). Год является високосным, если делится без остатка на 4 и при этом не является последним годом столетия, за исключением того столетия, которое без остатка делится на 400.

Программа, определяющая количество дней в месяце.

Задача: 

Алгоритм решения задачи: 

Переменная d имеет тип данных запись и содержит два поля: year – для хранения года и month – для месяца.

Пользователь вводит год и месяц.

Оператор выбора  case  по номеру месяца определяет количество дней в нем. Ситуация осложняется тем, что в феврале может быть как 28 дней, так и 29 (в високосный год).

Год является високосным, если делится без остатка на 4 и при этом не является последним годом столетия, за исключением того столетия, которое без остатка делится на 400.

Код программы: type date = record  year:1900..2100;  month:1..12  end ; var d: date; begin  write('Год: ');  readln(d.year);  write('Месяц: ');  readln(d.month);  case d.month of  4,6,9,11: writeln('В этом месяце 30 дней'); 1,3,5,7,8,10,12:  writeln('В этом месяце 31 день');  2:  if (d.year mod 400 = 0) or  (d.year mod 100  0) and (d.year mod 4 = 0) then writeln('В этом месяце 29 дней')  else writeln('В этом месяце 28 дней');  end ; readln; end .

Код программы:

type date = record

year:1900..2100;

month:1..12

end ;

var d: date;

begin

write('Год: ');

readln(d.year);

write('Месяц: ');

readln(d.month);

case d.month of

4,6,9,11:

writeln('В этом месяце 30 дней');

1,3,5,7,8,10,12:

writeln('В этом месяце 31 день');

2:

if (d.year mod 400 = 0) or

(d.year mod 100 0) and (d.year mod 4 = 0) then

writeln('В этом месяце 29 дней')

else

writeln('В этом месяце 28 дней');

end ;

readln;

end .

Задания с обработкой записей (самостоятельная работа)

1. Ввести оценки студента по 5 экзаменам. Определить средний балл и подсчитать количество удовлетворительных, хороших и отличных оценок. Напечатать название предмета, если есть «неуд».

2. Дан список студентов и оценка каждого на экзамене (оценки на N экзаменах). Подсчитать количество удовлетворительных оценок, хоро­ших, отлич- ных и средний балл в группе. Напечатать фамилии неуспеваю­щих студентов.

3. Дан список студентов группы. Заполнить его следующими сведе­ниями: фамилия, имя, отчество; имеет ли компьютер (если имеет, то ка­кой и с какого года). Подсчитать сколько студентов имеют ПК.

4. Сформировать пополняемую базу данных «Континент – страны», в которой указать столицы, численность населения, крупные города. Ор­ганизовать поиск страны по городу, стран или городов на континенте.

5. Сформировать список студентов группы, в котором указать фами­лию (имя, отчество); город, в котором получил среднее образование (номер школы, если обучался в Омске). Подсчитать, сколько в группе иногородних студентов.

6. В файле задан список книг (автор, название, год издания). Разработать программу выбора книг, выпущенных ранее заданного года.

7. Сформировать телефонный справочник. По номеру организовать поиск владельца, и наоборот.

8. Сформировать запись «Даты – праздники». Организовать в прог­рамме ввод дат, подсчитать число праздничных дней и рабочих.

9. Сформировать запись «английское слово – перевод». Вводя слово (английское или русское), найти перевод или выдать сообщение «нет в словаре». По возможности предусмотреть пополнение словаря.

10. Сформировать запись «операторы PascalABC»: оператор, действие. Подсчитать их количество и число операторов, имеющих повторяющие­ся ключевые слова.

Источники: http:// pascalabc.net http:// www.cyberforum.ru/pascalabc/thread60683.html http:// kooptex.ru/files/Pascal%20abc%20%F0%E8%F1%F3%ED%EA%E8.html http://www.studfiles.ru/preview/2687651 / http://www.proshkolu.ru/club/pascalabc/blog/23268 / http://idunaurok.ru/nashi-materialy/informatika/ программируем-на- abs-pascal- простейшие-задач. html http:// danfa.org/viewtopic.php?t=213 http://www.tehnari.ru/f41/t61456 / http://www.studfiles.ru/preview/2687651/page:8 /

Источники:

  • http:// pascalabc.net
  • http:// www.cyberforum.ru/pascalabc/thread60683.html
  • http:// kooptex.ru/files/Pascal%20abc%20%F0%E8%F1%F3%ED%EA%E8.html
  • http://www.studfiles.ru/preview/2687651 /
  • http://www.proshkolu.ru/club/pascalabc/blog/23268 /
  • http://idunaurok.ru/nashi-materialy/informatika/ программируем-на- abs-pascal- простейшие-задач. html
  • http:// danfa.org/viewtopic.php?t=213
  • http://www.tehnari.ru/f41/t61456 /
  • http://www.studfiles.ru/preview/2687651/page:8 /