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

laba3

.pdf
Скачиваний:
6
Добавлен:
29.10.2021
Размер:
664.87 Кб
Скачать

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

«ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ» (ТУСУР) Кафедра безопасности информационных систем (БИС)

Отчет по лабораторной работе №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 Заключение

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

Соседние файлы в предмете Основы программирования