Файл: Лабораторная работа 3 по дисциплине Программирование Выполнил студент Доценко Илья Сергеевич специальность 09. 03. 01 Содержание.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 28.03.2024
Просмотров: 18
Скачиваний: 0
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
СОДЕРЖАНИЕ
2.1. Описание используемых переменных.
x – значение итерируемого значения из файла;
min – минимальное значение из файла;
max – максимальное значение из файла
Рис. 2.3Блок-схема алгоритма основной программы Блокх
type vector = array [1..n] of real;
Имеем равенство min(x) = min1(1).
Определим функцию min1(k) рекурсивно:
Министерство образования и науки РФ
Федеральное государственное бюджетное образовательное учреждение
высшего профессионального образования
«ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ» (ТУСУР)
Кафедра автоматизированных систем управления (АСУ)
ОТЧЕТ
Лабораторная работа № 3
по дисциплине «Программирование»
Выполнил студент:
Доценко Илья Сергеевич
специальность 09.03.01
СОДЕРЖАНИЕ
1. Введение 3
2. Решение задачи №1 4
2.1. Описание используемых переменных 4
2.2. Описание алгоритма 5
2.3. Блок-схема алгоритма 6
2.4. Тестирование программы 7
3. Решение задачи №2 8
3.1. Описание используемых переменных 8
3.2. Описание алгоритма 8
3.3. Блок-схема алгоритма 9
3.4. Тестирование программы 10
4. Заключение 10
ПРИЛОЖЕНИЕ А ЛИСТИНГ ПРОГРАММЫ №1 12
ПРИЛОЖЕНИЕ B ЛИСТИНГ ПРОГРАММЫ №2 13
1. Введение
Лабораторная работа N 3 состоит из двух задач. Первая задача посвящена созданию программ, отражающих приемы работы с файлами.
Необходимо в начале программы создать файл (элементы файла вводятся с клавиатуры или генерируются случайным образом), а в конце программы сначала вывести на экран содержимое созданного файла, а затем отразить полученные результаты.
Во второй задаче необходимо составить программу, реализующую рекурсивный алгоритм.
2. Решение задачи №1
Задача 1
Для файла s, состоящего из целых чисел, определите процедуру, которая находит значения максимального и минимального элементов файла s.
Указание: введите файл s (последний элемент равен 0) и напечатайте значения максимального и минимального элементов файла s..
2.1. Описание используемых переменных.
s – текстовый файл ;
x – значение итерируемого значения из файла;
min – минимальное значение из файла;
max – максимальное значение из файла
2.2. Описание алгоритма
-
Связываем переменную s и файл _1.txt; -
Считываем значения из файла в переменную x -
Если текущее значение больше максимального, то присваиваем переменной max текущее значение; -
Если текущее значение меньше минимального, то присваиваем переменной min текущее значение; -
Выводим полученный результат;
2.3. Блок-схема алгоритма
Рис 2.3.1 Блок-схема основной части программы.
Рис 2.3.2 Блок-схема процедуры min_max.
Рис. 2.3Блок-схема алгоритма основной программы Блокх
2.4. Тестирование программы
Рис. 2.4.1. Содержимое файла
Рис. 2.4.2. Результат
Рис. 2.4.3. Содержимое файла
Рис. 2.4.4. Результат
3. Решение задачи №2
const n=...;
type vector = array [1..n] of real;
Описать функцию min (x) для определения минимального элемента вектора x, введя вспомогательную рекурсивную функцию min1 (k), находящую минимум среди последних элементов вектора x, начиная с k-го.
Указание: пусть min(x) — функция, которая вычисляет минимум среди элементов массива x, а min1(k) — функция, которая вычисляет минимум среди элементов x k, xk+1 , ..., xn массива x (для этой функции массив x есть глобальная переменная, определенная в главной программе).Имеем равенство min(x) = min1(1).
Определим функцию min1(k) рекурсивно:
1) если k=n, то функция возвращает результат xn;
2) если k
3.1. Описание используемых переменных
x – вектор;
i - счетчик;
k – номер индекса массива x, начиная с которого будет производиться поиск минимального значения;
3.2. Описание алгоритма
-
С помощью функции random() генерируется массив;
-
Вводим индекс элемента, начиная с которого будет производиться поиск минимального элемента;
-
Если индекс k является последним, то считаем его значение минимальным, иначе последовательно сравниваем индексы k и k+1 и находим минимальное значение;
-
Выводим результат
3.3. Блок-схема алгоритма
Рис 3.3 Блок-схема основной части программы.
Рис 3.4 Блок-схема функции min.
Рис 3.5 Блок-схема функции min1.
3.4. Тестирование программы
Рис. 3.4.1
Рис. 3.4.2
4. Заключение
В процессе написания программ были применены циклическая конструкция рекурсивный метод вызова функций, а так же чтение из файла.
В первом задании с помощью цикла перебирались значения из текстового файла.
В обоих программах использованы процедуры. Во второй программе использован рекурсивный метод.
ПРИЛОЖЕНИЕ А ЛИСТИНГ ПРОГРАММЫ №1
(*
Задача 1
Для файла s, состоящего из целых чисел, определите проце-
дуру, которая находит значения максимального и минималь-
ного элементов файла s.
Указание: введите файл s (последний элемент равен 0) и
напечатайте значения максимального и минимального эле-
ментов файла s.
*)
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
(*
Задача 2
const n=...;
type vector = array [1..n] of real;
Описать функцию min (x) для определения минимального элемента вектора x, введя вспомогательную рекурсивную
функцию min1 (k), находящую минимум среди последних элементов вектора x, начиная с k-го.
Указание: пусть min(x) — функция, которая вычисляет минимум среди элементов массива x, а min1(k) — функция,
которая вычисляет минимум среди элементов x k, xk+1 , ..., xn массива x (для этой функции массив x есть глобальная пере-
менная, определенная в главной программе).
Имеем равенство min(x) = min1(1).
Определим функцию min1(k) рекурсивно:
1) если k=n, то функция возвращает результат xn;
2) если k
*)
program pasclal_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): 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.
2023 г.
3.1. Описание используемых переменных
x – вектор;
i - счетчик;
k – номер индекса массива x, начиная с которого будет производиться поиск минимального значения;
3.2. Описание алгоритма
-
С помощью функции random() генерируется массив; -
Вводим индекс элемента, начиная с которого будет производиться поиск минимального элемента; -
Если индекс k является последним, то считаем его значение минимальным, иначе последовательно сравниваем индексы k и k+1 и находим минимальное значение; -
Выводим результат
3.3. Блок-схема алгоритма
Рис 3.3 Блок-схема основной части программы.
Рис 3.4 Блок-схема функции min.
Рис 3.5 Блок-схема функции min1.
3.4. Тестирование программы
Рис. 3.4.1
Рис. 3.4.2
4. Заключение
В процессе написания программ были применены циклическая конструкция рекурсивный метод вызова функций, а так же чтение из файла.
В первом задании с помощью цикла перебирались значения из текстового файла.
В обоих программах использованы процедуры. Во второй программе использован рекурсивный метод.
ПРИЛОЖЕНИЕ А ЛИСТИНГ ПРОГРАММЫ №1
(*
Задача 1
Для файла s, состоящего из целых чисел, определите проце-
дуру, которая находит значения максимального и минималь-
ного элементов файла s.
Указание: введите файл s (последний элемент равен 0) и
напечатайте значения максимального и минимального эле-
ментов файла s.
*)
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
(*
Задача 2
const n=...;
type vector = array [1..n] of real;
Описать функцию min (x) для определения минимального элемента вектора x, введя вспомогательную рекурсивную
функцию min1 (k), находящую минимум среди последних элементов вектора x, начиная с k-го.
Указание: пусть min(x) — функция, которая вычисляет минимум среди элементов массива x, а min1(k) — функция,
которая вычисляет минимум среди элементов x k, xk+1 , ..., xn массива x (для этой функции массив x есть глобальная пере-
менная, определенная в главной программе).
Имеем равенство min(x) = min1(1).
Определим функцию min1(k) рекурсивно:
1) если k=n, то функция возвращает результат xn;
2) если k
*)
program pasclal_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): 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.
2023 г.