Разработка программы перевода введенной строки текста в последовательность кодов азбуки Морзе. Программа на языке высокого уровня
ФГБОУ ВПО
«Кубанский государственный технологический
университет»
Армавирский
механико-технологический институт
Кафедра
Внутризаводского электрооборудования и автоматики
Пояснительная
записка
к курсовой
работе
по
дисциплине Информатика
на тему «Разработка
программы перевода введенной строки текста в последовательность кодов азбуки
Морзе. Программа на языке высокого уровня»
Выполнил студент
группы 12ФАБ-ИВ
Смольняков Игорь Михайлович
Руководитель проекта
Бабанская-Никель Ингрита Павловна
Реферат
Курсовая работа 31 с., 18 рис., 2 табл., 8
источников.
ПЕРЕВОД, СТРОКА ТЕКСТА, КОД АЗБУКИ МОРЗЕ,
МАССИВЫ СИМВОЛОВ, ЯЗЫК С#
Цель данной работы - перевести строку текста в
последовательность кодов азбуки Морзе программа должна быть написана при помощи
языка высокого уровня C#.
В процессе работы решались следующие задачи:
а) Исследование теоретического материала по
переводу строки текста в последовательность кодов азбуки Морзе.
б) Создание программы со следующими функциями:
– ввод данных пользователем,
– задание символьных массивов,
– инициализация каждого знака строки
текста своим кодом,
– вывод результата на экран.
Содержание
Нормативные ссылки
Термины, определения и сокращения
Введение
. Описание текста и азбуки Морзе
.1 Описание текста
.2 Описание азбуки Морзе
. Математическая постановка задачи
.1 Входные/выводные данные
.2 Основные методы языка C#,
используемые в программе
. Описание программного продукта
.1 Алгоритм работы программы
.2 Листинг программы
. Результат работы программы
.1 Руководство пользователя
.2 Тестирование программы
Заключение
Список используемых источников
Нормативные ссылки
В настоящей курсовой работе использованы ссылки
на следующие нормативные документы:
ГОСТ Р 1.5-2004 Стандартизация в РФ. Стандарты
национальные РФ. Правила построения, изложения, оформления и обозначения.
ГОСТ Р 1.12-2004 Стандартизация
в Российской Федерации. Термины и определения.
ГОСТ Р ИСО 9000-2008 Системы
менеджмента качества. Основные положения и словарь.
ГОСТ Р ИСО 9001-2008 Системы
менеджмента качества. Требования.
ГОСТ 19.101-77 ЕСПД. Виды
программ и программных документов.
ГОСТ 19.102-77 ЕСПД. Стадии
разработки.
ГОСТ 19.103-77 ЕСПД.
Обозначение программ и программных документов.
ГОСТ 19.104-78 ЕСПД. Основные
надписи.
ГОСТ 19.105-78 ЕСПД. Общие требования
к программным документам.
ГОСТ 19.202-78 ЕСПД.
Спецификация. Требования к содержанию и оформлению.
ГОСТ 19.301-79 ЕСПД. Программа
и методика испытаний. Требования к содержанию и оформлению.
ГОСТ 19.401-78 ЕСПД. Текст
программы. Требования к содержанию и оформлению.
ГОСТ 19.402-78 ЕСПД. Описание
программы.
ГОСТ 19.404-79 ЕСПД.
Пояснительная записка. Требования к содержанию и оформлению.
ГОСТ 19.502-78 ЕСПД. Описание
применения. Требования к содержанию и оформлению.
ГОСТ 19.503-79 ЕСПД.
Руководство системного программиста. Требования к содержанию и оформлению.
ГОСТ 19.504-79 ЕСПД. Руководство программиста.
Требования к содержанию и оформлению.
ГОСТ 19.505-79 ЕСПД. Руководство оператора.
Требования к содержанию и оформлению.
ГОСТ 19.701-90 ЕСПД. Схемы алгоритмов,
программ, данных и систем. Обозначения условные и правила выполнения.
МР КубГТУ 4.4.3-2012 СМК
Учебно-методическая деятельность. Выпускные квалификационные работы.
МР КубГТУ 4.2.6-2004 СМК.
Учебно-организационная деятельность. Курсовое проектирование.
Термины,
определения и сокращения
В настоящей курсовой работе
использованы следующие термины с соответствующими определениями и сокращениями:
1 Т.к. - так как
Компилятор - программа или техническое средство,
выполняющее трансляцию программы, составленной на исходном языке высокого
уровня, в эквивалентную программу на низкоуровневом языке, близком машинному
коду
Скриншот - изображение, полученное компьютером и
показывающее в точности то, что видит пользователь на экране монитора или
другого визуального устройства вывода
Код Морзе - это последовательность тоновых
сигналов разной длины с паузами. Его начали использовать в ХХ веке. В то время
Код Морзе являлся очень прогрессивным, надежным и простым способом передачи
данных на большие расстояния. В принципе, даже на фоне современных технологий,
он не утратил своих позиций и до сих пор используется. Например, в военной и
морской сферах, или когда нет других способов связи, кроме обычного
радиопередатчика или фонарика.
Цель данной работы - перевести строку текста в
последовательность кодов азбуки Морзе программа должна быть написана при помощи
языка высокого уровня C#.
В процессе работы решались следующие задачи:
а) Исследование теоретического материала по
переводу строки текста в последовательность кодов азбуки Морзе.
б) Создание программы со следующими функциями:
– ввод данных пользователем,
– задание символьных массивов,
– инициализация каждого знака строки
текста своим кодом,
– вывод результата на экран.
1. Описание текста
и азбуки Морзе
.1 Описание текста
Текст (от лат. textus
- «ткань; сплетение, связь, сочетание») - в общем плане связная и полная
последовательность символов. Но т.к. данная курсовая работа относится к области
программирования, то и текст мы будем рассматривать с соответствующей точки
зрения.
Текст (текстовые данные или
текстовый формат) - представление информации в вычислительной системе в виде
последовательности печатных символов. Текстовыми данными, как правило,
называются последовательности из подмножества знаков, включающего только
печатные знаки (буквы, цифры, знаки препинания) и некоторые управляющие знаки
(пробелы, табуляции, переводы строки). Существуют методы, позволяющие
закодировать в текстовом формате произвольные данные любого формата.
Часто текстовые данные
понимаются в более узком смысле - как текст на каких-либо языках (формальных
или естественных), который может быть прочитан и понят человеком.
Текстовому формату
противопоставляются «двоичные данные», информация в которых закодирована
произвольным образом, не рассчитанном на восприятие человеком.
Требование к возможности
понимания содержимого человеком вносит дополнительную избыточность в
представление данных. К примеру, число 123, для кодирования которого достаточно
одного 8-битного байта, в текстовом виде кодируется несколькими цифровыми
символами - так, в десятичной системе счисления для этого требуется три знака
(«123»), в двоичной - семь знаков («1111011»), в шестнадцатеричной - два
(«7B»).
Основная цель применения
текстовых данных - «общий знаменатель», независимость от отдельных программ,
требующих собственного кодирования или форматирования и несовместимых с другими
программами. Текстовые файлы (файлы в текстовом формате) могу быть открыты,
прочитаны и отредактированы в любых текстовых редакторах.
Текстовый формат часто
используются для представления данных, которые сами не являются чисто
текстовыми. В этом случае другие форматы данных «надстраиваются» над простым
текстом, для чего их управляющие конструкции выражаются посредством печатных
слов и знаков препинания.
В большинстве языков
программирования предполагается использование текстового формата для исходного
кода программ. Помимо прочего, это позволяет применять к исходным кодам
разнообразные утилиты для преобразований, оформления, поиска, статистики,
анализа и т. п.
В файлах конфигурации многих
программ применяется текстовый формат, даже если там представлены числа и
двоичные переключатели (да/нет). Это несколько усложняет программы из-за
необходимости преобразования текстовых данных во внутренний формат и обратно,
но появляется возможность править конфигурацию вручную, без использования
средств настройки самой программы.
1.2 Описание азбуки
Морзе
Код Морзе, «Морзянка» (Азбукой
Морзе код начал называться только с первой мировой войны) способ знакового
кодирования (представление букв алфавита, цифр, знаков препинания и других
символов последовательностью сигналов, например, длинных и коротких: «тире» и
«точек»). За единицу времени принимается длительность одной точки. Длительность
тире равна трём точкам. Пауза между элементами одного знака - одна точка, между
знаками в слове - 3 точки, между словами - 7 точек. Назван в честь
американского изобретателя и художника Сэмюеля Морзе.
Буквенные коды (собственно
«азбука») были добавлены коллегой Морзе, Альфредом Вейлем - факт, который Морзе
впоследствии всячески отрицал (а заодно приписывал себе изобретение телеграфа
как такового). Вейлем же, возможно, была придумана и цифровая часть кода. А в
1848 году код Вейля/Морзе был усовершенствован немцем Фридрихом Герке. Код,
усовершенствованный Герке, используется до настоящего времени.
Принцип кодирования азбуки
Морзе исходит из того, что буквы, которые чаще употребляются в английском
языке, кодируются более простыми сочетаниями точек и тире. Это делает освоение азбуки
Морзе проще, а передачи - компактнее. Для передачи русских букв использовались
коды сходных латинских букв.
В 2004г. Международный союз
электросвязи ввёл в азбуку Морзе новый код для символа @, для удобства передачи
адресов электронной почты.
В таблице 1 представлены
соответствия русских, латинских букв и других символов и азбуки Морзе.
Таблица 1 - Значения кодов
Морзе
Русский
символ
|
Латинский
символ
|
Код
Морзе
|
А
|
A
|
.-
|
Б
|
B
|
-…
|
В
|
W
|
.--
|
Г
|
G
|
--.
|
Д
|
D
|
-..
|
Е
(также и Ё)
|
E
|
.
|
Ж
|
V
|
…-
|
З
|
Z
|
--..
|
И
|
I
|
..
|
Й
|
J
|
.---
|
К
|
K
|
-.-
|
Л
|
L
|
.-..
|
М
|
M
|
--
|
Н
|
-.
|
О
|
O
|
---
|
П
|
P
|
.--.
|
Р
|
R
|
.-.
|
С
|
S
|
…
|
Т
|
T
|
-
|
У
|
U
|
..-
|
Ф
|
F
|
..-.
|
Ц
|
H
|
….
|
Ч
|
C
|
-.-.
|
Ш
|
Ö
|
---.
|
Щ
|
CH
|
----
|
Ъ
|
Q
|
--.-
|
Ы
|
Y
|
--.--
|
Ь
|
X
|
-.--
|
Э
|
É
|
-..-
|
Ю
|
Ü
|
..-..
|
Я
|
Ä
|
.-.-
|
1
|
.----
|
2
|
..---
|
3
|
…--
|
4
|
….-
|
5
|
…..
|
6
|
-….
|
7
|
--…
|
8
|
---..
|
9
|
----.
|
-----
|
Точка
|
……
|
Запятая
|
.-.-.-
|
Двоеточие
|
---…
|
;
|
-.-.-.
|
Скобка
|
-.--.-
|
Апостроф
|
.----.
|
Кавычки
|
.-..-.
|
-
|
-….-
|
/
|
-..-.
|
?
|
..--..
|
!
|
--..--
|
Знак
раздела
|
-…-
|
Ошибка/перебой
|
…….
|
@
|
.--.-.
|
Конец
связи
(end contact)
|
..-.-
|
2. Математическая
постановка задачи
.1 Входные/выводные
данные
Входные данные: текст, вводимый
пользователем. Область допустимых значений: кириллица и знаки '.' ',' '!' '?'.
Выводные данные:
последовательность кодов азбуки Морзе.
2.2 Основные методы
языка C#, используемые в программе
Методы:Main - главная процедура
Переменные:
string
t0 - строковая
переменная, в которую записывается текст, введенный пользователем
string
s0 - строковая
переменная, являющаяся «эталоном», с значениями которого будет сверяться программа
при преобразовании
string
r - строковая
переменная, в которую будет записываться результат преобразования
char[]
s - массив символов,
в который посимвольно записывается переменная s0
char[]
t - массив символов,
в который посимвольно записывается переменная t0
int
i - целочисленная
переменная, являющаяся идентификатором разрядов для массива t[]
int
j - целочисленная
переменная, являющаяся идентификатором разрядов для массива s[]
a:
- метка, предназначенная для перенаправления хода выполнения программы на
начало при непрохождении проверки введенных пользователем данных на
поддерживаемость
Операторы языка C#:
if()
- оператор разветвления процесса
Console.WriteLine()
- вывод данных на экран
Console.ReadLine()
- ввод данных с клавиатурыor
() - цикл со счетчиком
switch()
- разветвитель процесса вычисления на несколько направлений
break
- оператор прерывания
Console.ReadKey()
- получение следующего нажатого пользователем символа или функциональной
клавиши
ToCharArray() - переводит заданный экземпляр в
последовательность символов Юникода
3. Описание
программного продукта
.1 Алгоритм работы
программы
Алгоритм работы программы
представлен на рисунках 1-5.
Рисунок 1 - Алгоритм работы
программы. Часть 1
Рисунок 2 - Алгоритм работы
программы. Часть 2
Рисунок 3 - Алгоритм работы
программы. Часть 3
Рисунок 4 - Алгоритм работы
программы. Часть 4
Рисунок 5 - Алгоритм работы
программы. Часть 5
3.2 Листинг
программы
Рассмотрим исходный код
программы, которая будет производить перевод введенного текста в
последовательность кодов азбуки Морзе.
using
System;System.Collections.Generic;System.Linq;System.Text;System.Threading.Tasks;text_to_morze
{void Main(string[]
args)
{
a
:Console.WriteLine("Введите текст(допускаются кириллица и знаки '.' ','
'!' '?', остальные знаки переводиться не будут) ");
string t0 = Console.ReadLine();s0
= "абвгдежзийклмнопрстуфхцчшщъыьэюя.,!?ё";r
= "";[] s = s0.ToCharArray();[] t = t0.ToCharArray();(int i = 0; i
< t.Length; i++)
{ for (int j = 0; j
< s.Length; j++)(t[i] != s[j]); else(j)
{
case 0: r += ".- "; break;1: r +=
"-... "; break;2: r += ".-- "; break;3: r += "--.
"; break;4: r += "-.. "; break;5: r += ". "; break;6:
r += "...- "; break;7: r += "--.. "; break;8: r += "..
"; break;9: r += ".--- "; break;10: r += "-.- ";
break;11: r += ".-.. "; break;12: r += "-- "; break;13: r
+= "-. "; break;14: r += "--- "; break;15: r += ".--.
"; break;16: r += ".-. "; break;17: r += "... ";
break;18: r += "- "; break;19: r += "..- "; break;20: r +=
"..-. "; break;21: r += ".... "; break;22: r += "-.-.
"; break;23: r += "---. "; break;24: r += "---- ";
break;25: r += "--.- "; break;26: r += "--.-- "; break;27:
r += "-.-- "; break;28: r += "-..- "; break;29: r +=
"..-.. "; break;30: r += "..-- "; break;31: r += ".-.-
"; break;32: r += "...... "; break;33: r += ".-.-.- ";
break;34: r += "--..-- "; break;35: r += "..--.. ";
break;36: r += ". "; break;
};
};(r != "") { Console.WriteLine("Введенный
вами
текст
в
коде
Морзе
имеет
такой
вид");
Console.WriteLine(r); } else {Console.WriteLine("Вы
не
ввели
ни
одного
поддерживаемого
знака");
goto a;};.ReadKey();
}
}
}
Приступим к разбору главного
метода.
.WriteLine("Введите
текст(допускаются кириллица и знаки '.' ','
'!' '?') ");t0 = Console.ReadLine();
Здесь производится ввод данных
с клавиатуры и объявление строковой переменной t0.
string
s0 =
"абвгдежзийклмнопрстуфхцчшщъыьэюя.,!?ё";
string
r = "";
Объявление «эталона» s0, с
которым будет производиться сравнение символов, и результирующей переменной r,
в которую и будет записан окончательный код Морзе.
char[] s =
s0.ToCharArray();[] t = t0.ToCharArray();
На данном этапе происходит
объявление массивов элементов, в которые посимвольно вписываются «эталон» и
введенный текст.
for (int i = 0; i
< t.Length; i++)
{(int j = 0; j <
s.Length; j++)(t[i] != s[j]); else(j)
{0: r += ".-
"; break;1: r += "-... "; break;2: r += ".-- ";
break;3: r += "--. "; break;4: r += "-.. "; break;5: r +=
". "; break;6: r += "...- "; break;7: r += "--..
"; break;8: r += ".. "; break;9: r += ".--- ";
break;10: r += "-.- "; break;11: r += ".-.. "; break;12: r
+= "-- "; break;13: r += "-. "; break;14: r += "---
"; break;15: r += ".--. "; break;16: r += ".-. ";
break;17: r += "... "; break;18: r += "- "; break;19: r +=
"..- "; break;20: r += "..-. "; break;21: r += "....
"; break;22: r += "-.-. "; break;23: r += "---. ";
break;24: r += "---- "; break;25: r += "--.- "; break;26: r
+= "--.-- "; break;27: r += "-.-- "; break;28: r +=
"-..- "; break;29: r += "..-.. "; break;30: r += "..--
"; break;31: r += ".-.- "; break;32: r += "...... ";
break;33: r += ".-.-.- "; break;34: r += "--..-- ";
break;35: r += "..--.. "; break;
case
36: r += ". ";
break;
};
Далее происходит посимвольное
сравнение элементов текста и эталона, при совпадении которых идет запись кода
Морзе в результирующую переменную.
Console.WriteLine(“Введенный
вами текст в коде Морзе имеет такой вид”);
Console.WriteLine(r);.ReadKey();
Вывод результата на экран и
прерывание программы.
4. Результат работы
программы
.1 Руководство
пользователя
перевод текст код
азбука морзе
Для запуска программы необходимо открыть файл
программы в компиляторе (для создания кода использовалась программа Microsoft
Visual Studio
2012 Professional)
и нажать комбинацию клавиш CTRL
+ F5 или нажать на
кнопку запуска. На дисплее появится окно исполняемой программы, которая
представлена на рисунке 6.
Рисунок 6 - Стартовое окно
программы
После запуска программа просит
пользователя ввести текст (рисунок 7).
Рисунок 7 - Ввод текста
пользователем
Программа находит результат и
выводит его на экран (рисунок 8). Если введенные текст не соответствует
требованиям программы, она не будет его преобразовывать в код Морзе. Если не
было введено ни одного поддерживаемого знака, программа уведомит об этом
пользователя и вернется на начало.
Рисунок 8 - Вывод результата
Программа завершается по нажатию любой клавиши.
.2 Тестирование программы
Проверка работоспособности программы будет
проводиться по результатам, указанным в таблице 2.
Таблица 2 - Результаты проверки
№
|
Введенный
текст
|
Результат
в коде Морзе
|
1
|
а,
б, в
|
.-.-.-.-
-….-.-.-.--
|
2
|
проверка
|
.--..-.
---.--..-. -.-.-
|
3
|
привет
|
.--..-....--.
-
|
4
|
предмет
|
.--..-..
-.. --. -
|
5
|
поиск
|
.--.
---.. … -.-
|
6
|
клавиатура
|
-.-.-...-.--...-
-..-.-..-
|
7
|
монитор
|
--
--- -... - ---.-.
|
8
|
программирование
|
.--..-.
--- --..-..- -- --...-. ---.--.- -....
|
project курсовая
|
-.-..-.-.
… ---.--.-.-.-
|
10
|
check
|
Вы
не ввели ни одного поддерживаемого знака
|
Ниже приведены скриншоты всех проверок.
Результат первой тестовой выборки представлен на рисунке 9.
Рисунок 9 - Проверка 1
Результат второй тестовой выборки представлен на
рисунке 10.
Рисунок 10 - Проверка 2
Результат третьей тестовой
выборки представлен на рисунке 11.
Рисунок 11 - Проверка 3
Результат четвертой тестовой
выборки представлен на рисунке 12.
Рисунок 12 - Проверка 4
Результат пятой тестовой
выборки представлен на рисунке 13.
Рисунок 13 - Проверка 5
Результат шестой тестовой
выборки представлен на рисунке 14.
Рисунок 14 - Проверка 6
Результат седьмой тестовой
выборки представлен на рисунке 15.
Рисунок 15 - Проверка 7
Результат восьмой тестовой
выборки представлен на рисунке 16.
Рисунок 16 - Проверка 8
Результат девятой тестовой
выборки представлен на рисунке 17.
Рисунок 17 - Проверка 9
Результат десятой тестовой
выборки представлен на рисунке 18.
Рисунок 18 - Проверка 10
Написанная программа для
перевода текста в последовательность кодов азбуки Морзе в заданной области
значений работает корректно на всех тестовых выборках.
Заключение
При выполнении данной курсовой
работы выполнялся перевод текста в последовательность кодов азбуки Морзе. Этот
перевод производился по семи главным пунктам:
а) Ввод данных
б) Создание «эталона»
в) Разбиение строковых
переменных на символьные массивы
г) Сравнение элементов массивов
д) Присвоение значений
результирующей строковой переменной
е) Проверка
ж) Вывод результата на экран
В процессе работы я пришел к
выводу, что можно переводить в код Морзе тексты, различные по размеру и
знаковому содержанию, но результат зачастую будет намного объемней исходного
варианта, и к тому же, будет долог по времени передачи(имеются ввиду тоновые
радиосигналы). Но, несмотря на эти недостатки, до сих пор является
распространенным методом передачи данных, т.к. устройства передачи и приема
сигнала очень просты и надежны. В настоящее время код Морзе широко используется
в военной и морской сферах, а так же в экстренных ситуациях для подачи сигналов
бедствия.
Список используемых
источников
1. Свободная интернет-энциклопедия Википедия ru.wikipedia.org/wiki/Азбука_Морзе
2. Онлайн-библиотека платформы Microsoft
Developer
Network http://msdn.microsoft.com/ru-ru/library/vstudio/system.char(v=vs.100).aspx
. Научная библиотека естественнонаучных
изданий http://www.sernam.ru/book_csharp.php?id=63
4. Герберт
Шилдт. Полный справочник по С# Пер. с англ. - М. : Издательский дом
"Вильяме", 2004. - 752 с. : ил. - Парал. тит. англ.
5. Павловская
Т. А. С#. Программирование на языке высокого уровня. Учебник для вузов. - СПб.:
Питер, 2009. - 432 с: ил.
. Культин
Н.Б. С# в задачах и примерах. - СПб.: БХВ-Петербург, 2007. - 240с.: ил. +CD-ROM
. Савельев
А.Я. Основы информатики: Учеб. Для вузов. - М.: Изд-во МГТУ им. Н.Е. Баумана,
2001. -328 с.
. Острейковский
В.А. Информатика: Учеб. Для вузов. - М.: Высш. шк., 2000. - 511 с.