Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
супер пупер.doc
Скачиваний:
14
Добавлен:
15.09.2019
Размер:
604.67 Кб
Скачать

Лабораторная работа 7 Программирование с использованием типа запись

Теоретический материал

Справочник по процедурам и функциям

Цель работы: познакомить с понятием "запись"; выработать навыки работы со структурой данных запись в языке программирования Pascal. научиться правильно описывать тип record, уметь инициализировать переменные типа record, выводить на экран переменные типа record; научится решать задачи на использование записей

Общие сведения

Под записью понимается структура данных, объединяющая под одним именем данные различных типов. Записи состоят из фиксированного числа элементов, называемых полями. Поле - это переменная определенного типа. Различные поля могут иметь (в отличие от элементов массива) различный тип. Обращение к элементу записи выполняется с помощью составного имени. Первая часть составного имени - это имя записи, вторая часть - имя поля. Между именем записи и именем поля ставится точка: ZAP.IMP, где ZAP - имя записи, IMP- имя поля.

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

Пример

Пример1. Даны два рациональных числа, опишите их, используя структуру данных запись (числитель, знаменатель). Привести их к несократимому виду, найди их сумму. Этапы решения программы:

  1. Составим блок-схему программы

  1. Уточним содержимое блока "Вычисление НОД для числителя и знаменателя каждой дроби". Во-первых, НОД это наибольший общий делитель, число крайне необходимое чтобы сократить дробь. Вычислять НОД будем по алгоритму Евклида. Пусть даны два числа а и b:

В качестве чисел a и b будут участвовать числитель и знаменатель дробей. Как сокращать и складывать дроби, надеюсь, вы еще не забыли, поэтому детализировать этот блок не будем. Желательно блок "Поиск НОД" оформить в виде функции, что будет предварять тему следующей лабораторной работы.

  1. Переведем программу на язык Паскаль

PROGRAM Example1;

Type Tfraction = record;

Chisl: Integer;

Znam; Word;

End;

Function nod(a,b:integer):integer;

Var k:integer;

Begin

If a>b then k:= a else k:=b;

While not((a mod k=0)and(b mod k =0)) do dec(k);

End;

Var

x,y,s: Tfraction

n,p:integer;

st: string;

begin

writeln('Введите два рациональных числа');ъ

write('x= '); readln(st); n:= post('/',st);

val(copy(st,1,n-1),x.chisl,p);

val(copy(st,n+1,length(st)-n),x.znam,p);

write('y= '); readln(st); n:= post('/',st);

val(copy(st,1,n-1),y.chisl,p);

val(copy(st,n+1,length(st)-n),y.znam,p);

{находим НОД для каждой дроби и сокращаем их}

n:=nod(x.chisl,x.znam);

x.chis:= x.chisl div n;

x.znam:= x.znam div n;

n:=nod(y.chisl,y.znam);

x.chis:= y.chisl div n;

x.znam:= y.znam div n;

writeln('Сокращенные дроби:');

writeln('X= ',x.chisl,'/',x.znam);

END.