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

Лаб 4 - Строка, клавиатурный тренажер - СФ

.pdf
Скачиваний:
2
Добавлен:
06.11.2022
Размер:
403.86 Кб
Скачать

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

образования ТОМСКИЙ ГОСУДАРСТВЕЕНЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И

РАДИОЭЛЕКТРОНИКИ (ТУСУР)

Кафедра комплексной информационной безопасности электронно-вычислительных систем (КИБЭВС)

Обработка текста

Лабораторная работа №4 по дисциплине «Основы программирования» Отчет по лабораторной работе

Студент гр. хххх

________ хххх. 4.03.2022

Руководитель: Преподаватель КИБЭВС

_________ ________ хххх. 4.03.2022

Томск 2022

2

Содержание Введение……………………………………………………………………………………. 3 Теоретические сведения…………………………………………………………………… 4 Ход работы для задания №1………………………………………………………………. 5 Ход работы для задания №2………………………………………………………………. 7

Заключение………………………………………………………………………………… 9

Список использованной литературы……………………………………………………. 10

3

1 Введение

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

Задание 1: Дана строка из N символов. Группы символов, разделенные пробелами

(одним или несколькими) и не содержащие пробелов внутри себя, будем называть словами.

Найти количество слов, начинающихся с буквы б Задание 2: Разработать программу – клавиатурный тренажер. В ходе работы программы

должны генерироваться символы, которые необходимо вводить пользователю, количество правильно введенных символов должно подсчитываться, при вводе неверного символа,

счетчик правильно введенных символов должен обнуляться, по завершению работы тренажера результат верно введенных символов должен выводиться на экран. Выход из режима тренажера должен осуществляться по нажатию клавиши «Esc». При вводе неверного символа необходимо выдавать звуковое сопровождение (системный звук). При запуске приложения должен предоставляться выбор набор символов какого языка необходимо тренировать: русский или английский.

4

2 Теоретические сведения

Символьный тип – тип данных, предназначенный для хранения одного символа в определенной кодировке. Может быть однобайтовым и многобайтовым.

Строковый тип – тип данных, значениями которого является произвольная последовательность символов алфавита.

Управляющие символы – символы, встраиваемые в текст, для управления форматом,

цветом и другими опциями вывода в текстовом терминале.

5

3 Ход работы для задания №1

Данный алгоритм сначала создает массив с типом char, затем заполняет его той строкой,

которую ввел пользователь. Затем проверяется первый символ массива, если – это «б», то счетчик увеличивается на 1, а если не «б», то программа идет дальше. Затем начинает работу цикл с параметром, он проверяет массив на пробелы и символы. Если имеется «пробел», а

следующим идет «б», то счетчик увеличивается на 1, иначе если идет «пробел», а следующим не «б», то «i» увеличивается на 1. В конце программы выводится счетчик «count».

На рисунке 3.1 изображена блок-схема, а на рисунке 3.2 показан вывод программы.

Рисунок 3.1 - Блок-схема алгоритма 1

Ниже представлен сам код программы:

using System;

namespace Studing

{

class Program

{

static void Main(string[] args)

{

char[] a;

Console.Write("Введите строку - ");

6

a = Console.ReadLine().ToArray(); int count = 0;

int c = 0;

if (a[0] == 'б') count = 1;

Console.WriteLine();

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

{

if (a[i] == ' ' && a[i + 1] == 'б') count++;

else if ((a[i] == ' ' && a[i + 1] != 'б')) i++;

}

Console.WriteLine($"Количество слов на 'б' равно: {count}");

}

}

}

Рисунок 3.2 - Работа программы 1

Данная программа работает корректно, без каких-либо проблем.

7

4 Ход работы для задания №2

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

также постоянно создается случайное число от 0 до длины массива – 1 – это индекс элементов массива. Затем программа просит пользователя ввести букву, которая соответствует букве с генерированным индексом в массиве. Затем сравнивает введенное значение с запрашиваемым.

Если они равны, то запускается рекурсия, если код буквы равен коду Escape, то происходит выход из программы, если буквы не равны, то счетчик обнуляется и вызывается рекурсия.

На рисунке 4.1 изображена блок-схема, а на рисунке 4.2 вывод программы.

Рисунок 4.1 - Блок-схема алгоритма 2

Ниже представлен сам код программы:

using System;

namespace Studing

{

class Program

{

static void Main(string[] args)

{

static void Language(char[] alf)

{

char[] alfr = alf;

Random rand = new Random();

int index = rand.Next(0, alfr.Length - 1); Console.WriteLine($"Введите {alfr[index]}"); char letter = Console.ReadKey().KeyChar;

int count = 0;

if (letter == alfr[index])

{

count++;

Console.WriteLine($" - {count}"); Language(alf);

8

}

else if ((int)letter == (int)ConsoleKey.Escape)

{

Console.WriteLine(); Console.Write("Выход из программы");

}

else if (letter != alfr[index])

{

Console.WriteLine();

Console.Write(" Неверно!!! Верное количество, введенных букв "

+ count + '\a');

count = 0; Console.WriteLine(); Language(alf);

}

}

Console.WriteLine("Выберите какую раскладку будете тренировать: 1 - русская, 2 - английская");

int choise = int.Parse(Console.ReadLine()); if (choise == 1)

Language(@"АаБбВвГгДдЕеЁёЖжЗзИиЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщъЫыьЭэЮюЯя".ToCharArr ay());

else if (choise == 2)

Language(@"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".ToCharArray()); else Console.Write("Выберите язык!!!");

}

}

}

Рисунок 4.2 - Работа программы 2

Данная программа работает корректно, без каких-либо проблем.

9

5Заключение

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

имассивами.

Были решены 2 задачи, в которых были применены методы char, массивы, функции,

рекурсии.

Была написана программа, которая ведет расчет слов, начинающихся с буквы «б».

Причем, в задании было запрещено пользоваться типом данных string, вместо этого был использован тип char. Затем создали массив типа char, а затем в этот массив была занесена строка и с помощью метода ToArray эта строка была разбита на элементы массива. Затем работа программы заключалась в сравнении.

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

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 с.