Вариант №5. Лабораторная работа 3 Вариант 5 по дисциплине Программирование Выполнил студент специальности 27. 03. 04 Почтарев Илья Вячеславович
Скачать 310.21 Kb.
|
Министерство науки и высшего образования Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего образования ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР) Факультет дистанционного обучения ОТЧЕТ Лабораторная работа №3 Вариант №5 по дисциплине «Программирование» Выполнил студент: специальности 27.03.04 Почтарев Илья Вячеславович 2023 год СОДЕРЖАНИЕ Введение Решение задачи №1 Описание используемых переменных Описание алгоритма Блок-схема алгоритма Тестирование программы Решение задачи №2 Описание используемых переменных Описание алгоритма Блок-схема алгоритма Тестирование программы Заключение ПРИЛОЖЕНИЕ А ЛИСТИНГ ПРОГРАММЫ №1 ПРИЛОЖЕНИЕ В ЛИСТИНГ ПРОГРАММЫ №2 ВВЕДЕНИЕ Лабораторная работа №3 состоит из двух задач. Первая задача посвящена созданию программ, отра-жающих приемы работы с файлами. Необходимо в начале программы создать файл (элементы файла вводятся с клавиатуры или генери-руются случайным образом), а в конце программы сначала вывести на экран содержимое созданного файла, а затем отразить полученные результаты. Во второй задаче необходимо составить программу, реализующую рекурсивный алгоритм. РЕШЕНИЕ ЗАДАЧИ № 1 Для файла s, состоящего из целы чисел, определите процедуру, которая находит значения максималь-ного и минимального элементов файла s. Указание: введите файл s (последний элемент равен 0) и напечатайте значения максимального и ми-нимального элементов файла s. ОПИСАНИЕ ИСПОЛЬЗУЕМЫХ ПЕРЕМЕННЫХ s – текстовый файл; x – значение интегрируемого значения из файла; min – минимальное значение из файла; max – максимальное значение из файла ОПИСАНИЕ АЛГОРИТМА Связываем переменную s и файл _1.txt; Считываем значения из файла в переменную х; Если текущее значение больше максимального, то присваиваем переменной max текущее значение; Если текущее значение меньше минимального, то присваиваем переменной min текущее значение; Выводим полученный результат БЛОК-СХЕМА АЛГОРИТМА Рис. 2.3.1. Блок-схема основной части программы Рис. 2.3.2. Блок-схема процедуры min_max ТЕСТИРОВАНИЕ ПРОГРАММЫ Рис. 2.4.1. Содержимое файла Рис. 2.4.2. Результат Рис. 2.4.3. Содержимое файла Рис. 2.4.4. Результат РЕШЕНИЕ ЗАДАЧИ № 2 const n=…; type vector = array [1..n] of real; Описать функцию min (х) для определения минимального элемента вектора х, введя вспомогатель-ную рекурсивную функцию min1 (k), находящую минимум среди последних элементов вектора х, начи-ная с k-го. Указание: пусть min (х) – функция, которая вычисляет минимум среди элементов массива х, а min1(k) – функция, которая вычисляет минимум среди элементов массива х (для этой функции массив х есть глобальная переменная, определенная в главной программе). Имеем равенство min(x) = min1(1) Определим функцию min1(k) рекурсивно: если k = n, то функция возвращает результат ; если k < n, то функция возвращает наименьшее из двух чисел и min1(k+1) (второе число по-лучается при рекурсивном вызове). ОПИСАНИЕ ИСПОЛЬЗУЕМЫХ ПЕРЕМЕННЫХ х – вектор; i – счетчик; k – номер индекса массива х, начиная с которого будет производиться поиск минимального значения ОПИСАНИЕ АЛГОРИТМА С помощью функции random() генерируется массив; Вводим индекс элемента, начиная с которого будет производиться поиск минимального эле-мента; Если индекс k является последним, то считаем его значение минимальным, иначе последова-тельно сравниваем индексы k и k+1 и находим минимальное значение.; Выводим результат. БЛОК-СХЕМА АЛГОРИТМА Рис. 3.3.1. Блок-схема основной части программы Рис. 3.3.2. Блок-схема функции min Рис. 3.3.3. Блок-схема функции min1 ТЕСТИРОВАНИЕ ПРОГРАММЫ ЗАКЛЮЧЕНИЕ В процессе написания программ были применены циклическая конструкция, рекурсивный метод вы-зова функций, а также чтение из файла. В первом задании с помощью цикла перебирались значения из текстового файла. В обоих программах использованы процедуры. Во второй программе использован рекурсивный метод. ПРИЛОЖЕНИЕ А ЛИСТИНГ ПРОГРАММЫ № 1 program UslessProgrammNumber_Five; var s : TextFile; x, min, max: longint; procedure min_max(var current_value: longint); begin if current_value < min then begin min := current_value; end; if current_value > max then begin max := current_value; end; end; begin assign(s,’_1.txt’); reset(s); x:=0; min:=999999; max:=-999999; while not eof(s) do begin read(s, x); min_max(x) end; close(s); writeln(‘Минимальное значение равно:’, min); writeln(‘Максимальное значение равно:’, max); end. ПРИЛОЖЕНИЕ B ЛИСТИНГ ПРОГРАММЫ № 2 program pascal_is_alive_yet; const n = 10; type vector = array [1..n] of real; var x: array [1..n] of real; i, k: integer; function min1(a, b: real); begin min1 := a; if b < a then min1 := b; end; function min(k: integer): real; begin if k = n then min := x[k] else min := min1(x[k], min(k+1)); end; begin writeln(‘Сгенерированный массив:’); for i := 1 to n do begin x[i] := random(1000) end; writeln(x); writeln(‘Введите номер индекса, с которого будет применяться функция min1:’); readln(k); writeln(‘Минимальное значение элемента вектора равно:’, min(k)); end. |