Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабы_Информатика.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
1.79 Mб
Скачать

Задание.

  1. Среди 10 введенных целых чисел отобрать четные числа, записав их в файл с именем even.dat, и нечетные, записав их в файл с именем odd.dat. Вывести содержимое обоих файлов на экран.

  2. Среди 10 введенных целых чисел отобрать кратные 5, записав их в файл с именем f5_num.dat. Вывести содержимое файла на экран.

  3. Считать матрицу из файла Увеличить все четные элементы матрицы А на 16, а нечетные элементы увеличить в трое. Вывести в файл содержимое матрицы до обработки и после. В полученной матрице найти минимальный элемент.

Порядок выполнения работы.

Для выполнения первого задания необходимо войти в среду программирования ABC Pascal и в окне редактирования ввести текст программы, произвести ее отладку и выполнение.

Содержание отчета

Отчет оформляется на стандартных листа формата а4, в котором необходимо привести:

  1. Название работы.

  2. Постановку задачи.

  3. Описание алгоритма (метода) решения.

  4. Текст программы.

  5. Результаты работы программы на 2–3 контрольных примерах.

Контрольные вопросы

МИНОБРНАУКИ РОССИИ

Федеральное государственное бюджетное образовательное учреждение

высшего профессионального образования

«Тульский государственный университет»

Институт высокоточных систем им. В.П. Грязева

Кафедра Системы автоматического управления

Методические указания к лабораторной работе № 8

СТРУКТУРИРОВАННЫЕ ТИПЫ ДАННЫХ. ЗАПИСИ.

по дисциплине

ИНФОРМАТИКА

Направление подготовки (специальность):

161101 Системы управления летательными аппаратами

Профиль подготовки (специализация): Системы управления движением летательных аппаратов

Квалификация (степень) выпускника: специалист

Форма обучения: очная

Тула 2011 г.

ЛАБОРАТОРНАЯ РАБОТА N 11

Цель и задачи работы: Познакомиться с организацией структурированных типов данных и в языке программирования Паскаль.

Теоретические сведения

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

Описать в программе запись можно двумя способами:

1) построив определение нужного типа;

2) задав тип непосредственно в объявлении некоторой переменной.

Описание записи начинается со служебного слова RECORD и заканчивается словом END. Между этими словами находится список полей записи с указанием типов. Таким образом, описание записи имеет следующий вид:

RECORD

P1:T1;

P2:T2;

...

PN:TN

END;

где P1,P2,...,PN - имена полей записи, а T1,T2,...,TN - их типы.

Пример описания записи:

TYPE POINT=RECORD

X:REAL;

Y:REAL

END;

DATE=RECORD

DAY:1..31;

MONTH: (JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC);

YEAR:INTEGER

END;

Если в записи встречаются поля одного и того же типа, то допустимо следующее описание:

TYPE POINT=RECORD

X,Y:REAL

END;

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

Для доступа к полям записи строится список имен структурных уровней записи, которые разделяются точками. Пусть, например:

VAR A,B:POINT;

X,Y:DATE;

тогда для обращения к первой координате точки A используется имя А.X, а ко второй координате точки B - B.Y. С именами полей возможны все допустимые для данных этого типа действия:

A.X:=5;

A.X:=4.2*B.Y;

X.DAY:=5;

Y.MONTH:=JAN;

X.YEAR:=Y.YEAR+1;

При соблюдении некоторых условий с записью можно обращаться как с единым объектом. Так, если VAR A,B:T1; где T1- тип записи, то возможно A:=B. Запись как единый объект часто используется также в качестве параметра в процедурах и функциях.

Пример программы.

Написать программу, которая:

а) для группы людей создает записи - имя, фамилия, дата рождения (число, месяц, год);

б) выводит на экран имена и фамилии всех людей этой группы, родившихся в заданном году;

в) выводит на экран все данные о людях этой группы с заданным именем.

Program Man;

Const

N=5; {количество человек в группе}

Type

name_rec = record

first,last:string[15]

end {name};

date_rec = record

day:1..31;

month:1..12;

year:integer

end {date};

man_rec = record

name:name_rec;

date:date_rec

end {man};

group = array[1..n] of man_rec;

var

i,g : integer;

im : string[15];

a : group;

Procedure inp_name(var x:name_rec);

Begin

Write ('Имя:');

readln (x.first);

Write ('Фамилия:');

Readln (x.last)

end {inp_name};

Procedure outp_name(x:name_rec);

Begin

Writeln (x.first,' ',x.last)

end {outp_name};

Procedure inp_date(var x:date_rec);

Begin

Write ('Число:');

Readln (x.day);

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

Readln (x.month);

Write ('Год:');

readln(x.year)

End {inp_date};

Procedure outp_date(x:date_rec);

Begin

Writeln (x.day,'-',x.month,'-',x.year)

end {outp_date};

Procedure inp_man(var x:man_rec);

Begin

Writeln ('Введите имя и фамилию:');

inp_name(x.name);

Writeln ('Введите день, месяц и год рождения:');

inp_date(x.date)

end {inp_man};

Procedure outp_man(x:man_rec);

Begin

outp_name(x.name);

write ('родился: ');

outp_date(x.date)

end {outp_man};

{ MAIN PROGRAM }

Begin

for i:=1 to n do begin

Writeln ('Введите данные на ',i,'-го человека');

inp_man(a[i])

end;

Writeln;

Writeln ('Введите год рождения:');

readln(g);

Writeln;

Writeln ('В этом году родились:');

for i:=1 to n do

if a[i].date.year=g then outp_name(a[i].name);

Writeln;

Writeln ('Введите имя:');

Readln(im);

Writeln;

Writeln ('С этим именем:');

for i:=1 to n do

if a[i].name.first=im then outp_man(a[i])

end.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]