laba3
.pdfМинистерство образования и науки Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования
«ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ» (ТУСУР) Кафедра безопасности информационных систем (БИС)
Отчет по лабораторной работе №3
по дисциплине «Основы программирования» Тема работы: Функции.
Студент гр. 730-2
_______Подойницын К.В.
31.05.2021
Принял Инженер научно-технического отдела ЦСП
_______ Уразаев Д.Р.
31.05.2021
2021
Содержание Введение…………………………3
Теоретические сведения по теме лабораторной работы………..4
Ход работы…………………………5-9
Заключение…………………………10
Список использованных источников…………………………11
1 Введение
Цель работы: Овладеть навыками использования функций в программировании и рекурсивным подходом решения задач, понять отличия рекурсивного и итеративного подхода решения задачи.
Задание: составить консольное приложение для решения нижеприведенных задач согласно варианту, согласованному с преподавателем, вводя данные в ходе выполнения программы. Для выполнения предварительно ознакомьтесь с соответствующими разделами данного пособия.
2 Теоретические сведения по теме лабораторной работы
Согласно условию задач, для решения задач необходимо ввести функции и рекурсивный подход.
Функция – именованный фрагмент программного кода, к которому можно обратиться из другого места программы. Функция может принимать на вход параметры и должна возвращать некоторое значение, возможно пустое. Входные параметры могут быть обязательными и не обязательными.
Функции, которые возвращают пустое значение или не возвращают его
(в зависимости от языка программирования) принято называть процедурами.
В C# можно создавать пользовательские функции. Функция Main – не что иное, как главная функция пользователя или точка входа в приложение.
Для подключения пространства имен используется запись вида – using
System.IO; где «using» это ключевое слово, а « System.IO» - название пространства имен, содержащего функции для работы с файловой системой.
Рекурсия – определение части функции через саму себя, то есть это функция, которая вызывает саму себя, непосредственно в своём теле или косвенно через другую функцию. Количество вложенных вызовов функции называется глубиной рекурсии.
Использование рекурсии позволяет осуществлять повторяющиеся вычисления и/или действия без явных повторений или организации циклов в программе, однако также как у цикла с условием должно быть четко оговорено условие остановки рекурсивных вызовов, для предотвращения зацикливания программы.
Вторая составляющая любой рекурсивной функции это условие продолжения (шаг рекурсии), где идет рекурсивное обращение.
3 Ход работы
Задание 1
Даны отрезки a, b, c, d. Для каждой тройки этих отрезков, из которых можно построить треугольник, напечатать площадь данного треугольника.
Описание алгоритма:
А1 Начало
А2 Свойство проверки треугольника bool IsTriangle
А3 Ввод a,b,c,d
А4 Если a < b + c и b < a + c и c < a + b, то А5. Иначе А6.
А5 i = true
А6 i = false
А7 return i
А8 p = (a + b + c) / 2
А9 e = p * (p - a) * (p - b) * (p - c)
А10 s = Math.Sqrt(e)
А11 return s
А12 Если тр. abc существует, то вывод Sabc
А13 Если тр. acd существует, то вывод Sacd
А14 Если тр. bcd существует, то вывод Sbcd
А14 Остановка
Представление алгоритма в виде блок-схемы:
Рисунок 1 – блок-схема Листинг исходного кода программы:
static bool IsTriangle(int a, int b, int c)
{
bool i;
if (a < b + c && b < a + c && c < a + b)
{
i = true;
}
else
{
i = false;
}
return i;
}
static double S(int a, int b, int c)
{
double p = (a + b + c) / 2;
double e = p * (p - a) * (p - b) * (p - c); double s = Math.Sqrt(e);
return s;
}
static void Main(string[] args)
{
int a, b, c, d;
a = int.Parse(Console.ReadLine()); b = int.Parse(Console.ReadLine()); c = int.Parse(Console.ReadLine()); d = int.Parse(Console.ReadLine());
if (IsTriangle(a, b, c) == true) Console.WriteLine(S(a, b, c)); if (IsTriangle(a, c, d) == true) Console.WriteLine(S(a, c, d)); if (IsTriangle(b, c, d) == true) Console.WriteLine(S(b, c,d));
}
Рисунок 2 – скриншот работы программы
Программа работает корректно.
Задание 2
Дано натуральное число N. Выведите информацию о том, является ли точной степенью двойки число N.
Описание алгоритма:
B1 Начало
B2 Ввод a
B3 Если a является степенью двойки, то B4. Иначе B5. B4 Вывод да
B5 Вывод нет
B6 Остановка
Представление алгоритма в виде блок-схемы:
Рисунок 3 – блок-схема
Листинг исходного кода программы: static void Main(string[] args)
{
int a = Convert.ToInt32(Console.ReadLine()); if (step(a)) Console.WriteLine("Yes");
else Console.WriteLine("No"); Console.ReadKey();
}
public static bool step(int a)
{
if (a == 2) return true;
else if (a % 2 == 0) return step(a / 2); else return false;
}
Рисунок 4 – скриншот работы программы Программа работает корректно.
4 Заключение
В ходе работы были получены навыки использования функций в программировании и рекурсивных подходов решения задач, усвоены отличия рекурсивного и итеративного подхода решения задачи.