- •Лабораторная работа №1
- •Программирование линейных алгоритмов
- •Общие сведения:
- •Контрольные вопросы:
- •Задачи:
- •Задачи повышенной сложности
- •Составим схему алгоритма
- •Контрольные вопросы
- •Задачи повышенной трудности
- •Лабораторная работа №3 Программирование циклических алгоритмов
- •Общие сведения
- •Примеры
- •Контрольные вопросы
- •Задачки на смекалку
- •Задачи повышенной сложности
- •Контрольные вопросы
- •Задачи повышенной сложности
- •Лабораторная работа 5
- •Общие сведения
- •Примеры
- •Контрольные вопросы
- •Задания
- •Задачи повышенной сложности
- •Лабораторная работа 6 Программирование с использованием множеств
- •Общие сведения
- •Контрольные вопросы
- •Задания
- •Задачи повышенной сложности
- •Лабораторная работа 7 Программирование с использованием типа запись
- •Общие сведения
- •Контрольные вопросы
- •Задания
- •Задачи повышенной сложности
- •Лабораторная работа 8 Программирование с использованием процедур и функций
- •Общие сведения
- •Контрольные вопросы
- •Задания
- •Задачи повышенной сложности
- •Лабораторная работа 9 Работа с файлами
- •Общие сведения
- •Контрольные вопросы
- •Задания
- •Задачи повышенной сложности
- •Задания:
- •Задачи повышенной сложности
- •Контрольные вопросы
- •Варианты заданий
- •Контрольные вопросы
- •Варианты заданий:
- •Лабораторная работа №3 Сортировка методом прямого включения
- •Общие сведения
- •Контрольное задание
- •Варианты заданий
- •Лабораторная работа №4 Бинарный поиск
- •Общие сведения
- •Контрольные вопросы
- •Варианты заданий
- •Лабораторная работа №5 Рекурсия
- •Общие сведения:
- •Примеры
- •Контрольные вопросы
- •Варианты заданий
- •Лабораторная работа №6 Линейные списки
- •Общие сведения
- •Примеры
- •Контрольные вопросы
- •Варианты заданий
- •Лабораторная работа №7 Стек
- •Общие сведения
- •Примеры
- •Контрольные вопросы
- •Варианты заданий
- •Лабораторная работа №8 Двоичные деревья
- •Общие сведения
- •Примеры
- •Контрольные вопросы
- •Приложения
- •1. Сообщения об ошибках во время компиляции
- •2. Сообщения об ошибках вовремя выполнения программы
Лабораторная работа 7 Программирование с использованием типа запись
Теоретический материал |
Справочник по процедурам и функциям |
Цель работы: познакомить с понятием "запись"; выработать навыки работы со структурой данных запись в языке программирования Pascal. научиться правильно описывать тип record, уметь инициализировать переменные типа record, выводить на экран переменные типа record; научится решать задачи на использование записей
Общие сведения
Под записью понимается структура данных, объединяющая под одним именем данные различных типов. Записи состоят из фиксированного числа элементов, называемых полями. Поле - это переменная определенного типа. Различные поля могут иметь (в отличие от элементов массива) различный тип. Обращение к элементу записи выполняется с помощью составного имени. Первая часть составного имени - это имя записи, вторая часть - имя поля. Между именем записи и именем поля ставится точка: ZAP.IMP, где ZAP - имя записи, IMP- имя поля.
Перед выполнением работы необходимо изучить правила описания и использования записей, типизированных констант типа запись, оператора присоединения WITH.
Пример
Пример1. Даны два рациональных числа, опишите их, используя структуру данных запись (числитель, знаменатель). Привести их к несократимому виду, найди их сумму. Этапы решения программы:
Составим блок-схему программы
Уточним содержимое блока "Вычисление НОД для числителя и знаменателя каждой дроби". Во-первых, НОД это наибольший общий делитель, число крайне необходимое чтобы сократить дробь. Вычислять НОД будем по алгоритму Евклида. Пусть даны два числа а и b:
В качестве чисел a и b будут участвовать числитель и знаменатель дробей. Как сокращать и складывать дроби, надеюсь, вы еще не забыли, поэтому детализировать этот блок не будем. Желательно блок "Поиск НОД" оформить в виде функции, что будет предварять тему следующей лабораторной работы.
Переведем программу на язык Паскаль
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.