Файл: Лабораторная работа 3 по дисциплине Программирование Выполнил студент Доценко Илья Сергеевич специальность 09. 03. 01 Содержание.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 28.03.2024

Просмотров: 18

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

СОДЕРЖАНИЕ

1. Введение

2. Решение задачи №1

Задача 1

Для файла s, состоящего из целых чисел, определите процедуру, которая находит значения максимального и минимального элементов файла s.

Указание: введите файл s (последний элемент равен 0) и напечатайте значения максимального и минимального элементов файла s..

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

s – текстовый файл ;

x – значение итерируемого значения из файла;

min – минимальное значение из файла;

max – максимальное значение из файла

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

Рис. 2.3Блок-схема алгоритма основной программы Блокх

2.4. Тестирование программы

3. Решение задачи №2

const n=...;

type vector = array [1..n] of real;

Описать функцию min (x) для определения минимального элемента вектора x, введя вспомогательную рекурсивную функцию min1 (k), находящую минимум среди последних элементов вектора x, начиная с k-го.

Имеем равенство 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.24. ЗаключениеВ процессе написания программ были применены циклическая конструкция рекурсивный метод вызова функций, а так же чтение из файла.В первом задании с помощью цикла перебирались значения из текстового файла.В обоих программах использованы процедуры. Во второй программе использован рекурсивный метод. ПРИЛОЖЕНИЕ А ЛИСТИНГ ПРОГРАММЫ №1 (*Задача 1Для файла s, состоящего из целых чисел, определите проце-дуру, которая находит значения максимального и минималь-ного элементов файла s.Указание: введите файл s (последний элемент равен 0) инапечатайте значения максимального и минимального эле-ментов файла s.*)program UslessProgrammNumber_Five;vars : TextFile;x, min, max: longint;procedure min_max(var current_value: longint );beginif current_value < min thenbeginmin := current_value;end;if current_value > max thenbeginmax := current_value;end;end;beginassign(s, '_1.txt');reset(s); x:=0;min:=999999;max:=-999999;while not eof(s) dobeginread(s, x);min_max(x)end;close(s);writeln('Минимальное значние равно: ', min);writeln('Максимальное значние равно: ', max);end. ПРИЛОЖЕНИЕ B ЛИСТИНГ ПРОГРАММЫ №2 (*Задача 2const 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;constn = 10;typevector = array [1..n] of real;varx: array [1..n] of real;i, k: integer;function min1(a, b: real): real;beginmin1 := a;if b < a then min1 := b;end;function min(k: integer): real;beginif k = n then min := x[k]else min := min1(x[k], min(k + 1));end;beginwriteln('Сгенерированный массив:');for i := 1 to n dobeginx[i] := random(1000)end;writeln(x);writeln('ВВедите номер индекса,с которого будет применяться функция min1:');readln(k);writeln('Минимальное значение элемента вектора равно: ', min(k))end. 2023 г.


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

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

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

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

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

ОТЧЕТ

Лабораторная работа № 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


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