ЛАБ 3 - Функции, палиндром - СФ
.pdfМинистерство науки и высшего образования Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего образования
ТОМСКИЙ ГОСУДАРСТВЕЕНЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР)
Кафедра комплексной информационной безопасности электронно-вычислительных систем (КИБЭВС)
Функции
Лабораторная работа №3 по дисциплине «Основы программирования» Отчет по лабораторной работе
Студент гр. хххх
________ хххх
23.02.2022
Руководитель: Преподаватель КИБЭВС
_________ ________ хххх. 23.02.2022
Томск 2022
2
Содержание Введение……………………………………………………………………………………. 3 Теоретические сведения…………………………………………………………………… 4 Ход работы для задания №1………………………………………………………………. 5 Ход работы для задания №2………………………………………………………………. 7
Заключение………………………………………………………………………………… 9 Список использованной литературы……………………………………………………. 10
3
1 Введение
Целью данной лабораторной работы является Задание на работу заключается в том, чтобы овладеть навыками использования
функций в программировании и рекурсивным подходом решения задач, понять отличия рекурсивного и итеративного подхода решения задачи.
Задание 1: Написать функцию, которая вычисляет сопротивление последовательной цепи, состоящей из трех проводников. Параметрами ее являются значения сопротивлений.
Проверить ее в работе, написав программу с ее использованием Задание 2: Дано слово, состоящее только из строчных латинских букв. Проверьте,
является ли это слово палиндромом. При решении этой задачи нельзя пользоваться циклами!
4
2 Теоретические сведения
Функция – это поименованная часть программы, которая может вызываться из других частей программы столько раз, сколько необходимо, обязательно возвращает значение;
Рекурсия в программировании – вызов функции из неё же самой, непосредственно
(простая рекурсия) или через другие функции (сложная рекурсия);
Строковый тип – тип данных, значениями которого является произвольная последовательность символов алфавита.
5
3 Ход работы для задания №1
Данный алгоритм сначала создает массив, состоящий из 3 элементов, затем создает функцию, которая вычисляет сопротивление последовательной цепи, состоящей из трех проводников. Затем просит пользователя ввести значение сопротивления проводников по порядку. Затем вызывает функцию и выводит общее сопротивление проводников.
На рисунке 3.1 изображена блок-схема, а на рисунке 3.2 показаны выводы программы.
Рисунок 3.1 - Блок-схема алгоритма 1
Ниже представлен сам код программы:
using System; namespace ConsoleApp3
{
class Program
{
static double sum(double R1, double R2, double R3)
{
return R1 + R2 + R3;
}
static void Main(string[] args)
{
double[] res = new double[3]; for (int i = 0; i < 3; i++)
{
Console.Write($"Введите сопротивление {i+1} "); res[i] = double.Parse(Console.ReadLine());
}
double R0 = sum(res[0], res[1], res[2]); Console.Write("Общее сопротивление равно " + R0);
}
}
}
6
Рисунок 3.2 - Работа программы 1
Данная программа работает корректно, без каких-либо проблем.
7
4 Ход работы для задания №2
Данная программа просит пользователя ввести слово, затем присваивает значения переменным и создает рекурсивную функцию, в которой сначала сравнивается счетчик букв с длиной строки, затем, если условие выполнено, то уже сравниваются буквы строки, если они равны, то переменные увеличиваются на одну, вызывается функция и возвращается значение.
Если буквы не равны, то выводится «Слово не палиндром» и возвращает счетчик букв. А если счетчик букв больше или равен длине строки и все буквы равны, то выводится «Слово палиндром» и возвращается счетчик букв.
На рисунке 4.1 изображена блок-схема, а на рисунках 4.2 и 4.3 показаны выводы программы.
Рисунок 4.1 - Блок-схема алгоритма 2
Ниже представлен сам код программы:
using System; namespace resursia
{
class Program
{
static int palindrom(string str, int sl, int el, int cl)
{
if (cl < str.Length)
{
if (str[sl] == str[el])
{
cl++; el--; sl++; palindrom(str, sl, el, cl); return cl;
}
8
else Console.WriteLine("Слово не палиндром"); return cl;
}
else
Console.WriteLine("Слово палиндром"); return cl; ;
}
static void Main(string[] args)
{
Console.Write("Введите слово "); string str = Console.ReadLine(); int sl = 0;
int el = str.Length - 1; int cl = 0;
palindrom(str, sl, el, cl);
}
}
}
Рисунок 4.2 - Работа программы 2
Рисунок 4.3 - Работа программы 2(противоположный результат)
Данная программа работает корректно, без каких-либо проблем.
9
5Заключение
Входе данной лабораторной были получены навыки использования функций в программировании и рекурсивным подходом решения задач, понять отличия рекурсивного и итеративного подхода решения задачи.
10
Список использованной литературы
1. ГОСТ 19.701-90 (ИСО 5807-85) Единая система программной документации (ЕСПД).
Схемы алгоритмов, программ, данных и систем. Обозначения условные и правила выполнения.
2.Документация по C#. [Электронный ресурс]. – Режим доступа: https://docs.microsoft.com/ru-ru/dotnet/csharp (дата обращения: 15.02.2020)
3.Кнут Д.Э. Искусство программирования. – Т. 1: Основные алгоритмы. – 3-е изд.; пер. с
англ. – М.: ИД «Вильямс», 2016. – 720 с.
4.Харченко С.С. Основы программирования: учебно-методическое пособие. – Томск: В-
Спектр, 2020. – XX с.