- •Министерство образования рк
- •Программирование на языке pascal
- •Алматы 2004 содержание
- •Введение
- •Немного о работе в системе турбо паскаль
- •Лабораторная работа №1 переменная. Числа. Инструкция присваивания
- •Краткие теоретические сведения
- •Методические указания по работе и задания
- •Вопросы к защите лабораторной работы
- •Лабораторная работа №2 структура программы в паскале. Ввод и вывод данных. Линейные программы
- •Краткие теоретические сведения
- •Вопросы к защите лабораторной работы
- •Лабораторная работа №3 условный оператор в программах на паскале
- •Краткие теоретические сведения
- •Методические указания по работе и задания
- •Вопросы к защите лабораторной работы
- •Лабораторная работа №4 организация циклов
- •Краткие теоретические сведения
- •Методические указания по работе и задания
- •Вопросы к защите лабораторной работы
- •Лабораторная работа №5 массивы
- •Краткие теоретические сведения.
- •2. Нахождение наибольшего элемента массива.
- •Методические указания по работе и задания
- •Вопросы к защите лабораторной работы
- •Лабораторная работа №6. Обработка таблиц. (двумерных массивов)
- •Краткие теоретические сведения
- •Методические указания по работе и задания
- •Лабораторная работа №7 оператор варианта. (выбора)
- •Краткие теоретические сведения
- •3: Begin
- •4: Begin
- •Методические указания по работе и задания
- •Лабораторная работа №8 подпрограммы
- •Краткие теоретические сведения
- •Методические указания по работе и задания
- •Вопросы к защите лабораторной работы
- •Лабораторная работа №9 рекурсия
- •Краткие теоретические сведения.
- •Методические указания по работе и задания
- •Вопросы к защите лабораторной работы
- •7 10
- •Методические указания по работе и задания
- •Вопросы к защите лабораторной работы
- •Лабораторная работа №11 компьютерная графика
- •Краткие теоретические сведения.
- •Методические указания по работе и задания
- •Вопросы к защите лабораторной работы
- •Лабораторная работа № 12 записи. Обработка записей
- •Краткие теоретические сведения.
- •Var X: z;
- •Var X: array [ 1.. 100 ] of tovar; y: tovar;
- •Методические указания по работе и задания
- •Вопросы к защите лабораторной работы
- •Лабораторная работа №13 файлы. Работа с файлами в паскале
- •Краткие теоретические сведения.
- •Методические указания по работе и задания
- •Вопросы к защите лабораторной работы
- •Литература
Var X: z;
Пример. Объект — товар, характеризуется названием и ценой:
type tovar = record
sign: string [ 20];
price: real
end;
Пример. Объект — дата рождения: день, месяц, год. День можно указать как диапазон значении, такой тип данных называется интервальным. Этот тип используется для целочисленных и символьных данных в описаниях, а также как метка оператора варианта. Интервальным типом задаются значения констант в разделе const.
type date_of_birth = record
day: 1 ..31;
month: string [10];
year: integer
end;
var date: date_of_birth;
Записи могут объединяться в массивы. Массив записей описывается в разделе type или var. Раздел переменных при объекте товар может иметь вид:
Var X: array [ 1.. 100 ] of tovar; y: tovar;
x — массив записей, к каждому элементу которого используется обычное обращение, например х[ i ]; у — простая переменная.
Для обращения к полю записи применяется сложное имя, состоящее из двух имен, разделенных точкой. Первое из них — имя переменной типа «запись» из раздела var, второе — имя поля этой записи из раздела type. Так, для товаров имена полей в программе имеют вид:
у. sign, у. price, x [ 1 ]. sign, x [ i ]. price
Содержание сведений |
Ф. И. 0. |
Должность |
Дата рождения |
Зарплата |
Имя поля записи |
name |
position |
date |
salary |
Тип данных поля |
String [20] |
string [10] |
date_of_birth |
real |
структуру типа «запись» (в виде поля даты рождения), которую также требуется уточнить и описать в разделе типов раньше, чем запись о работнике.
В описании данной записи используется тип «день рождения» (date_oi_birth) из примера 3. Общее описание записи имеет вид:
type date_of_birth = record
day: 1 ..31;
month: string [10];
year: integer
end;
worker = record
name : string [ 20 ];
position: string [ 10 ];
date : date_of_birth;
salary : real
end;
var x: array [ 1. .7] of worker; w: worker;
Поле записи date содержит запись из трех полей. При формировании имени поля этой внутренней записи необходимо использовать тройное имя: имя переменной раздела var, имя поля записи worker и имя поля записи date_of_birth. Например, для переменной w обращение к месяцу рождения работника в программе будет иметь вид: w.date.month
В программе ввод и вывод записи производится по полям, но можно присвоить одной записи значение другой, при этом происходит копирование области памяти: х [ 1 ]: = w;
Оператор присоединения. Для обработки записи используется оператор with, который позволяет указать один раз имя записи из раздела переменных, а затем во всей области действия оператора указывать только имена полей этой записи из раздела type. После слова with можно написать несколько имен полей из раздела переменных.
Оператор присоединения имеет вид:
with список имен записей do оператор;
Оператор бывает простым или составным, ограниченным операторными скобками. Список имен записей может состоять из одного имени.
Пример. Дан массив записей, содержащий сведения о работниках предприятия (пример предыдущий). Напечатать:
1) список бухгалтеров;
2) список работников от 30 до 50 лет;
3) среднюю заработную плату по предприятию.
Для записей этой задачи определяются их структура, имена и типы полей. Затем определяется имя массива записей, который используется в программе, и вспомогательные переменные, а также имена результатов. Программа
program Р37;
const n =10;
type date_of_birth = record
day: 1 .. 31;
month:string [ 10 ];
year: integer
end;
worker = record
name : string [ 20 ];
position: string [ 10 ];
date : date_of_birth;
salary : real
end;
var x: array [ 1..n] of worker; w: worker; i, j, g integer; S: real;
p: string [ 10 ];
begin
{формирование массива записей}
for i: = 1 to n do
with x [ i ] do
begin
writeln (‘сведения о’, i, ‘работнике’);
writeln (‘фамилия, инициалы’);
readln(name);
writeln (‘должность’);
readln(position);
writeln (‘число, месяц и год рождения’);
readln(date.day, date.month, date.year);
writeln (‘зарплата’);
readln(salary);
end;
{решение задачи 1) — печатание списка бухгалтеров}
p: = ‘бухгалтер’;
j: = 0; {счетчик строк списка — количество бухгалтеров}
for i: = 1 to n do
with x [ i ] do
if p = position
then begin
j:=j+1;
writeln (j, ‘.’, name); {после номера в списке печатается точка и фамилия}
end;
{решение подзадачи 2) — список работников от 30 до 50 лет}
writeln (‘список работников от 30 до 50 лет’);
j: = 0;
write (‘введите текущий год в виде четырехзначного числа’);
readln(g);
for i: = 1 to n do
with x [ i ] do
if (g — date.year < 50) and (g — date.year > 30)
then begin
j:= j+1;
writeln (j, ‘.’, name)
end;
{решение задачи 3) — вычисление средней зарплаты}
S: = 0;
for i: = 1 to n do
S: = S + x[ i ].salary;
write (‘средняя зарплата = ‘, S / n: 10: 2)
end.