Азбука Морзе — это один из способов кодирования букв, цифр и других символов. Для кодирования какого-либо символа используется набор знаков, состоящий из «точек» и «тире». В этой статье мы разберем исходный код программы, которая выполняет шифрование символов в код азбуки Морзе, а также выполняет обратное действие — дешифровку. Программа написана на языке программирования C#. В конце статьи вы можете скачать исходник этой программы, написанной в среде разработки Visual Studio.
В таблице приводятся коды букв азбуки Морзе для русского и английского алфавита, а также для цифр.
Азбука Морзе. Разбор программы
Интерфейс программы представлен четырьмя текстовыми полями и двумя кнопками. В левом столбце (шифрование) расположены элементы управления: textBox1, textBox2 и button1; в правом (дешифровка) — textBox3, textBox4 и button2.
Проводим исходный текст программы для шифрования азбукой Морзе.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace MorseCode { public partial class Form1 : Form { public Form1() { InitializeComponent(); } char[] characters = new char[] { 'А', 'Б', 'В', 'Г', 'Д', 'Е', 'Ж', 'З', 'И', 'Й', 'К', 'Л', 'М', 'Н', 'О', 'П', 'Р', 'С', 'Т', 'У', 'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ', 'Ы', 'Ь', 'Э', 'Ю', 'Я', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0' }; string[] codeMorse = new string[] { "*–", "–***", "*––", "––*", "–**", "*", "***–", "––**", "**", "*–––", "–*–", "*–**", "––", "–*", "–––", "*––*", "*–*", "***", "–", "**–", "**–*", "****", "–*–*", "–––*", "––––", "−−*−", "−*−−", "−**−", "**−**", "**−−", "*−*−", "*−−−−", "**−−−", "***−−", "****−", "*****", "−****", "−−***", "−−−**", "−−−−*", "−−−−−" }; private void button1_Click(object sender, EventArgs e) { string input = textBox1.Text; input = input.ToUpper(); string output = ""; int index; foreach(char c in input) { if (c != ' ') { index = Array.IndexOf(characters, c); output += codeMorse[index] + " "; } } output = output.Remove(output.Length - 1); textBox2.Text = output; } private void button2_Click(object sender, EventArgs e) { string input = textBox3.Text; string[] split = input.Split(' '); string output = ""; int index; foreach (string s in split) { index = Array.IndexOf(codeMorse, s); output += characters[index] + " "; } output = output.Remove(output.Length - 1); textBox4.Text = output; } } } |
В массиве символов characters содержатся все символы (русские буквы и цифры), которые программа может шифровать и дешифровать. В массиве строк codeMorse хранятся последовательности кода азбуки Морзе для символов в том же порядке, что и символы в characters.
При нажатии кнопки «Зашифровать» происходит следующее (строки 39-55): в переменную input заносится текст из textBox1, затем этот текст переводится в верхний регистр с помощью метода ToUpper(). Далее в цикле foreach перебираем посимвольно строку input. Для каждого символа выполняем поиск такого же символа в массиве characters (пробелы игнорируются) с помощью метода IndexOf() и сохраняем его номер в переменную index. «Добавляем» к строке вывода (output) код Морзе из массива codeMorse, в качестве номера элемента указываем index. Разделяем коды Морзе пробелами. С помощью метода Remove() удаляем последний символ в строке output — он является пробельным символом. И, наконец, выводим результат шифрования на экран в textBox2.
Процесс дешифровки по азбуке Морзе реализован по аналогии с шифрованием, поэтому говорить о нем подробно нет смысла. Отметим лишь, что к входной строке применяется метод Split(), который разбивает строку input на массив строк, разделенных пробелом. Каждый элемент этого массива будет являться одним закодированным символом.
Демонстрация работы программы «Азбука Морзе»:
Скачать исходник программы можно, нажав на кнопку ниже.
Смотрите также:
Поделиться в соц. сетях:
как это переделать через класс чтобы?
Переписал код через класс. Смотрите здесь https://yadi.sk/i/s1cZE_wfju62F
премного благодарен.