Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Отчет по лабораторной работе №3

.docx
Скачиваний:
10
Добавлен:
17.02.2023
Размер:
333.24 Кб
Скачать

Министерство образования и науки РФ

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

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

«ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ» (ТУСУР)

Кафедра автоматизированных систем управления (АСУ)

ОТЧЕТ

Лабораторная работа № 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. Описание алгоритма

  1. Связываем переменную s и файл _1.txt;

  2. Считываем значения из файла в переменную x

  3. Если текущее значение больше максимального, то присваиваем переменной max текущее значение;

  4. Если текущее значение меньше минимального, то присваиваем переменной min текущее значение;

  5. Выводим полученный результат;

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<n, то функция возвращает наименьшее из двух чисел xk и min1(k+1) (второе число получается при рекурсивном вызове).

3.1. Описание используемых переменных

x – вектор;

i - счетчик;

k – номер индекса массива x, начиная с которого будет производиться поиск минимального значения;

3.2. Описание алгоритма

  1. С помощью функции random() генерируется массив;

  2. Вводим индекс элемента, начиная с которого будет производиться поиск минимального элемента;

  3. Если индекс k является последним, то считаем его значение минимальным, иначе последовательно сравниваем индексы k и k+1 и находим минимальное значение;

  4. Выводим результат

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<n, то функция возвращает наименьшее из двух чисел xk и min1(k+1) (второе число получается при рекурсивном вызове).

*)

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 г.