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

3 лабораторная работа ОП

.pdf
Скачиваний:
3
Добавлен:
01.12.2023
Размер:
716.29 Кб
Скачать

Министерство науки и высшего образования Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего образования

Томский государственный университет систем управления и радиоэлектроники (ТУСУР)

Кафедра безопасности информационных систем (БИС)

Функции

Отчет по практической работе

по дисциплине «Основы программирования»

Студент гр. 711-2

____________ Е. П. Толстолес

___________

11.02.2022

Принял:

Инженер кафедры БИС

_______ Д.Р. Уразаев

11.02.2022

Томск 2022

2

Оглавление

Введение ................................................................................................................

3

2 Словесное и графическое описание алгоритмов .............................................

5

2.1

Словесный способ записи ...............................................................................

5

2.2

Графический способ записи алгоритмов .......................................................

7

2.3Листинг исходного кода программ ………………………………………....9

2.4Процесс выполнения программы и вывод данных ………………………..12

3 Заключение .........................................................................................................

14

3

Введение

Цель работы: Овладеть навыками использования функций в программировании и рекурсивным подходом решения задач, понять отличия рекурсивного и итеративного подхода решения задачи.

Задание: составить консольное приложение для решения нижеприведенных задач согласно варианту, согласованному с преподавателем, вводя данные в ходе выполнения программы. Для выполнения предварительно ознакомьтесь с соответствующими разделами данного пособия.

Условия задач:

1.Даны числа a, b, c, d. Получить x=max(a, b), y=max(c,d), z=max(x,y).

Вычисление max(k, m) (большего из двух чисел k, m) оформить функцией;

2.Найти максимум одномерного массива.

Согласно условию задач, для решения задач необходимо ввести функции и рекурсивный подход.

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

Входные параметры могут быть обязательными и не обязательными.

Функции, которые возвращают пустое значение или не возвращают его

(в зависимости от языка программирования) принято называть процедурами.

В C# можно создавать пользовательские функции. Функция Main – не что иное, как главная функция пользователя или точка входа в приложение.

Для подключения пространства имен используется запись вида – using

System.IO; где «using» это ключевое слово, а « System.IO» - название пространства имен, содержащего функции для работы с файловой системой.

Рекурсия – определение части функции через саму себя, то есть это функция, которая вызывает саму себя, непосредственно в своём теле или косвенно через

4

другую функцию. Количество вложенных вызовов функции называется глубиной рекурсии.

Использование рекурсии позволяет осуществлять повторяющиеся вычисления и/или действия без явных повторений или организации циклов в программе, однако также как у цикла с условием должно быть четко оговорено условие остановки рекурсивных вызовов, для предотвращения зацикливания программы.

Вторая составляющая любой рекурсивной функции это условие продолжения (шаг рекурсии), где идет рекурсивное обращение.

5

2 Словесное и графическое описание алгоритмов

2.1 Словесный способ записи

Согласно условию задания, словесное описание алгоритма А будет иметь вид:

А0 начало;

А1 ввод a, b, c, d;

А2 создание функции для определения max;

А1.0 int max(int p0, int p1);

А1.1 return p0 > p1 ? p0 : p1;

А3 x=max(a,b); A4 y=max(c,d); A5 z=max(x,y); A6 вывод z; A7 остановка.

Согласно условию задания, словесное описание алгоритма В будет иметь вид:

В0 начало;

В1 ввод n;

В2 заполнение массива array;

B3 создание функции для определения max;

B1.0 int max(int p0, int p1);

6

B1.1 return p0 > p1 ? p0 : p1;

B4 для i от 0 до array.Length - 1 с шагом 1 переход к В5, иначе переход к В7;

В5 если max(array[i], array[i+1])> Max, то переход к В6, иначе переход к В4;

В6 Max = max(array[i], array[i+1]); B7 вывод max;

B8 остановка.

7

2.2 Графический способ записи алгоритмов

Графический способ записи алгоритма линейной программы А представлен на рисунке 2.1.

Рисунок 2.1 – Блок схема алгоритма А

Графический способ записи алгоритма линейной программы В представлен на рисунке 2.2.

8

Рисунок 2.2 – Блок схема алгоритма В

9

2.3 Листинг исходного кода программ

Листинг программы А представлен ниже.

using System;

namespace _1000_7

{

class Program

{

private static void Main()

{

int a = Convert.ToInt32(Console.ReadLine()); int b = Convert.ToInt32(Console.ReadLine()); int c = Convert.ToInt32(Console.ReadLine()); int d = Convert.ToInt32(Console.ReadLine()); int x = max(a,b);

int y = max(c,d); int z = max(x,y);

Console.WriteLine(z);

}

private static int max(int p0, int p1)

{

return p0 > p1 ? p0 : p1;

}

}

}

10

Листинг программы В представлен ниже.

using System;

namespace _1000_7

{

class Program

{

static void Main(string[] args)

{

int n;

int.TryParse(Console.ReadLine(), out n); int[] array = new int[n];

int Max = -10000; Random r = new Random(); for (int i = 0; i < n; i++)

{

array[i] = r.Next(-10000, 10000); Console.WriteLine(array[i]);

}

for (int i = 0; i < array.Length - 1; i++)

{

if (max(array[i], array[i+1])>Max)

{

Max = max(array[i],array[i+1]);

}

}