3 лабораторная работа ОП
.pdfМинистерство науки и высшего образования Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего образования
Томский государственный университет систем управления и радиоэлектроники (ТУСУР)
Кафедра безопасности информационных систем (БИС)
Функции
Отчет по практической работе
по дисциплине «Основы программирования»
Студент гр. 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]);
}
}