Инструкция программиста - Кодирование информации
Данная учебная программа должна запускаться на IBM и совместимых компьютерах. Минимальные системные требования: процессор Pentium и выше, объем оперативной памяти 16MB, видеокарта с расширением 800x600, 256 цветов, операционная система семейства Windows 95 и выше, на компьютере также должен быть установлен. NET Framework.
Учебная программа состоит из множества файлов.
Основную ценность представляют файлы расширением *. cs (в них содержится весь код программы), а также сама закомпилированная программа, находящаяся в папке bin.
Для изменения программы необходимо изменить ее исходный код. Это можно сделать, используя любой текстовый редактор. Пример кода представлен на Рис.2.
Изменение кода при помощи текстового редактора не очень удобно, для этого лучше использовать Visual Studio. Net, специально для этого разработанный.
Для его запуска необходимо кликнуть кнопку Пуск, выбрать в пункте Все программы Microsoft Visual Studio. NET 2003Microsoft Visual Studio. NET 2003. Далее в запустившемся приложении кликнуть кнопку Open Project и используя проводник, выбрать файл Study_Programs. sln. Программа откроет приложение. Для изменения внешнего вида программы необходимо воспользоваться ярлыком Design. Можно добавить новые элементы формы, перетащив их из выезжающего окна Toolbox.
Кодирование по методу четности / нечетности
В самом начале программы задаются поля, так называемые член - переменные, содержащие некоторое значение: int Prav; int ch; int ChVoprosov=1 (в ООП поля иногда называют данными объекта). Где Prav-это количество правильных ответов, ch - это сумма всех разрядов генерируемого числа и контрольного разряда, а ChVoprosov-число вопросов заданных пользователю (нумерация начинается с 1) Перед идентификаторами полей указываются их типы.
При запуске формы Even_ueven во время работы программы сразу срабатывает метод Generation();. Суть данного метода состоит в том, чтобы сгенерировать произвольное семизначное двоичное число, которое появится в окне textBox1 и контрольный разряд(который также является двоичным числом), который появится в окне textBox2. Для этого создается генератор случайных чисел, который записывает в переменную d либо 0, либо 1(d=r. Next(0, 2);), данная операция повторяется 7 раз с помощью цикла с параметром for(for (int i=0; i<7; i++)). В результате, последовательно добавив каждую из сгенерированных цифр, мы получаем требуемое семизначное число. Контрольный разряд создается тоже с помощью генератора случайных чисел (g=r. Next(0, 2);). Также в этом методе сразу подсчитывается сумма всех разрядов генерируемого числа и контрольного разряда ch: сначала складываются разряды числа все в том же цикле for (ch+=d; - 7 раз), а затем прибавляется контрольный разряд g (ch+=g;).
При нажатии кнопки button1 (Код числа правильный) вначале запускается метод ChangeChVoposov(); который увеличивает номер вопроса на одну единицу в окне textBox3. Затем в поле Prav(количество правильных ответов) считывается значение из окна textBox4(при первом запуске оно равняется 0), Далее с помощью управляющей конструкции if (ch==0 || ch==2 || ch==4 || ch==6) определяется правильно ли пользователь ответил: ch - сумма всех разрядов генерируемого числа и контрольного разряда должна быть четной или равной 0. В случае верного выбора количество правильных ответов увеличивается на 1 (Prav++;). Затем запускается метод ChangePrav();, который устанавливает число правильных ответов в окне textBox4. После чего ch обнуляется (ch=0;), и запускается метод Generation();.
При нажатии кнопки button2 (Код числа неправильный) алгоритм программы является практически аналогичным за исключением того, что в управляющей конструкции if (ch==1 || ch==3 || ch==5 || ch==7) правильность ответа пользователя заключается в том, чтобы сумма ch являлась нечетным числом.
Также следует обратить внимание на то, что при работе с дизайном формы нужно заблокировать окна от пользователя, чтобы он не смог перепечатать значение генерируемых семиразрядного числа и контрольного разряда, а также количество заданных вопросов и данных правильных ответов.
Кодирование по методу Хэмминга
В самом начале программы задаются поля: int ChVoprosov=1,
Int X; int Nomer; int [] x=new int [10]. Где X - это переменная значение которой не позволяет в определенных случаях нажиманием на одну и ту же кнопку увеличивать число правильных ответов, Nomer - это получаемый номер разряда, который подлежит замене на противоположный, int [] x=new int [10] - это массив, состоящий из значений, которые являются разрядами генерируемого двоичного числа, а ChVoprosov-число вопросов заданных пользователю (нумерация начинается с 1). Перед идентификаторами полей указываются их типы.
При запуске формы Hemming во время работы программы сразу срабатывает метод Generation(); и метод Number();. Суть первого метода состоит в том, чтобы сгенерировать произвольное девятизначное двоичное число, которое появится в окне textBox1. Суть второго метода заключается в том, чтобы подсчитать номер разряда, в котором есть ошибка (если конечно такова вообще имеется). Следует учесть, что номер подсчитывается в двоичном виде.
Для формирования произвольного девятизначного двоичного числа создается генератор случайных чисел, который записывает в переменную d либо 0, либо 1(d=r. Next(0, 2);), данная операция повторяется 9 раз с помощью цикла с параметром for(for (int i=1; i<10; i++)). В результате, последовательно добавив каждую из сгенерированных цифр, мы получаем требуемое девятизначное число. Также на каждом шаге цикла с параметром считываются значения в массив int [] x (x [i] =d;), т. е. получается, что каждый элемент массива равен соответствующему по номеру разряду сгенерированного числа. В данном методе переменная X приравнивается к 1, что означает, что число только что сгенерированно и пользователь еще не пробовал дать свой ответ.
В методе Number() подсчитываются суммы контрольных разрядов сгенерируемого по числа, соответствующие определенным группам проверки. В нашем случае количество групп проверки для девятизначного числа равно 4, следовательно, мы получаем четыре суммы x1, x2, x3, x4.
Затем подсчитывается номер ошибочного разряда (Nomer=x4*1000+x3*100+x2*10+x1;)
При нажатии кнопки button1 (Ошибки нет) в начале исчезает все то, что пользователь успел ввести в окно "Исправленный вариант" (textBox2. Text="";), т. к. нажав эту кнопку пользователь показывает то, что он уже не находит ошибок в числе. Потом с помощью управляющей конструкции if проверяется не записан ли уже ответ в окне "Правильный ответ"(if(textBox1. Text. Length! =textBox3. Text. Length) ели не записан, то тогда X приравнивается к единице: X=1;) Затем с помощью управляющей конструкции if проверяется, равен ли X единице (if (X==1) - если это выполнено, то значит, что пользователь еще не пробовал дать свой ответ). Дальнейшее выполнение действий возможно только если X=1. Затем, используя снова if, Nomer сравнивается с нулем (if (Nomer==0)). В случае выполнения данного условия (т. е. номер ошибочного разряда равняется нулю, что означает отсутствие ошибки) число правильных ответов увеличивается на одну единицу (Prav++;), и запускается метод Otvet();. Данный метод записывает в окно textBox3 (Правильный ответ) ответ, получаемый путем записи всех элементов массива int [] x в порядке возрастания:
TextBox3. Text=x [1] +""+x [2] +""+x [3] +""+x [4] +""+x [5] +""+ [6] +""+x [7] +""+x [8] +""+x [9] ; В данном случае ошибка отсутствует и все элементы запишутся без изменения, т. е. в окне textBox3 появится число, аналогичное тому, которое находится в окне textBox1 (Число, возможно содержащее ошибку).
Если Nomer не равняется нулю, то тогда запускается метод Sravnenie();. Этот метод вначале проверяет не дали ли вы уже свой окончательный ответ (не равно ли уже X нулю) и только в случае равенства X единице (if (X==1)) выполняется вся остальная часть метода: переменную i приравнивают т к нулю (int i=0;). Затем происходит сравнение числа Nomer с двоичными цифрами, которые при переводе в десятичную систему счисления соответствуют числам от 0 до 9 (например: if (Nomer == 101) - число Nomer сравнивается с двоичным числом 101, которому в десятичной системе счисления соответствует 5). Если Nomer равняется какому-то из предложенных двоичных чисел, то тогда переменной i присваивается значение соответствующего десятичного числа (Например в случае равенства номера числу 101, переменной i присвоится значение 5 (i = 5;)). Если переменная i меняет свое значение с нуля на какое-то от 1 до 9, то тогда выполняется условие следующей за этим управляющей конструкции if (i! =0) (i отлично от нуля) и осуществляется следующие операции: x [i] сравнивается с 0, если это выполняется, то тогда x [i] меняет свое значение на противоположное, т. е. на 1, и затем запускается уже упомянутый выше метод Otvet(); (только теперь в окне textBox3 появится число, аналогичное тому, которое находится в окне textBox1 (Число, возможно содержащее ошибку), но уже с замененным на противоположный разрядом, номер которого равен i). Если x [i] не равняется 0(следовательно равняется 1), то тогда выполняется ветка else с аналогичными действиями, только для x [i] противоположным значением будет являться 0.
Если в ходе выполнения метода Sravnenie(); не было произведено никаких замен (не выполнялся метод Otvet();), то это означает, что числу Nomer соответствует какое-то двоичное число, которое при переводе в десятичную систему счисления дает цифру большую 9. Это означает, что в сгенерированном девятиразрядном числе отсутствуют ошибки. Тогда с помощью сравнения длины строки в окне textBox3 с нулем (if(textBox3. Text. Length==0)) мы получаем в случае выполнения данного условия, что ошибки отсутствуют. Следовательно, мы можем увеличить число правильных ответов на 1 и запустить метод Otvet();, который запишет в окно textBox3 число, равное тому, которое находится в окне textBox1 (Число, возможно содержащее ошибку).
В итоге мы меняем число правильных ответов в окне textBox5, а также приравниваем X к нулю, это означает, что мы сделали свой окончательный выбор того, содержит ли сгенерированное число ошибки.
При нажатии кнопки button2 (Ошибка есть) в начале запускается метод Proverka();. Смысл этого метода заключается в том, чтобы проверить ввел ли пользователь достаточное количество разрядов в окно "Исправленный вариант" и являются ли они двоичными числами (0 и 1). Вначале с помощью управляющей конструкции if проверяется, записал ли пользователь строку в окно "Исправленный вариант" требуемой длины и нет ли уже появившегося ответа в окне textBox3 (Правильный ответ): if(textBox2. Text. Length! =textBox1. Text. Length &;&; textBox1. Text. Length! = textBox3. Text. Length)
Если это условие выполняется, то это означает, что пользователь ввел в окно "Исправленный вариант" строку меньшую по своей длине 9 или то, что уже был получен ответ и, следовательно, выполняется действие, заключенное в фигурных скобках: запуск формы об ошибке, содержащее пояснение того, в чем заключается ошибка ввода (A5=new Error("Исправленный вариант должен содержать 9-ти разрядное число"); A5. ShowDialog();)
Если это условие не выполняется, то работа алгоритма программы продолжается по ветке else. Вначале снова проверяется отсутствие ответа if(textBox1. Text. Length! =textBox3. Text. Length) и только когда это условие выполнено запускается цикл с параметром (for(int i=0; i<textBox2. Text. Length; i++)), который сравнивает все разряды введенного пользователем числа с 0 или 1. Для этого используется заложенный в языке C# метод работы со строками Substring(i, 1) (string d=textBox2. Text. Substring(i, 1); - в строку d записывается один символ введенного пользователем числа, начиная с i-ой позиции (а i меняется от 0 до длины введенной строки, т. е. до 9)). В ходе работы цикла d 9 раз сравнивается с 0 или 1 (if(d! =b &;&; d! =a)), и при первом же случая, когда d не является 1 или 0 появляется форма ошибки, содержащее пояснение того, в чем заключается ошибка ввода (A5=new Error("Исправленный вариант должен содержать 9-ти разрядное двоичное число"); A5. ShowDialog();), а цикл прекращается, т. к. переменной i присваивается значение равное textBox2. Text. Length. Также в случае появления ошибки переменная X приравнивается к 0. В случае отсутствии ошибки ввода переменная X приравнивается к 1. На этом метод Proverka(); заканчивается. Если X=1, то возможны дальнейшие операции заключенные в фигурных скобках условия if (X==1). Используя условную конструкцию if, Nomer сравнивается с нулем (if (Nomer==0)). Если данное условие выполняется (т. е. номер ошибочного разряда равняется нулю, что означает отсутствие ошибки), то пользователь ответил неправильно, неверно предположив, что содержится ошибка. Затем запускается метод Otvet(), который выведет число в окне textBox3, равное сгенерированному числу.
После этого запускается метод Sravnenie(); (его запуск требуется, если не выполняется условие Nomer==0). Если Nomer не равен нулю и метод Sravnenie(); не дает правильного ответа в окне textBox3, , то, следовательно, Nomer при переводе в десятичную систему счисления дает число, большее, чем 9. Это означает, что сгенерированное число не содержит неправильных разрядов и в окно textBox3 нужно записать заданное число без изменений. Для этого используется условная конструкция, которая проверяет, записан ли ответ в textBox3: if (textBox3. Text. Length==0) Otvet();. Затем в переменную Moe считывается число, которое пользователь ввел в окно textBox2, а в переменную Pravilnoe считывается ответ из textBox3. После чего эти две переменные сравниваются между собой и в случае равенства количество правильных ответов увеличивается на 1: if (Moe==Pravilnoe) Prav++;. Затем переменная X приравнивается к нулю, что означает, что пользователь уже сделал свой окончательный выбор.
Кнопка button3 служит для того чтобы сгенерировать следующее число, когда работа с предыдущим закончена. При нажатии кнопки button3 (Следующее число) число вопросов увеличивается на единицу, а также запускаются методы: Generation() и Number();
Машина Поста
Для того чтобы лучше понять, как изменить программу, подробнее разберем ее код.
Private void button2_Click(object sender, System. EventArgs e) - метод, вызывающийся при нажатии кнопки "Вернуться к выбору темы".
Private void help_Click(object sender, System. EventArgs e) - метод, вызывающийся при нажатии кнопки "Справка".
Private void button3_Click(object sender, System. EventArgs e) - метод, вызывающийся при нажатии кнопки "GO".
Public static byte first() - метод, который запускается при выполнении команды типа "Движение головки на одну клетку вправо и переход к команде m1".
Public static byte second() - метод, который запускается при выполнении команды типа "Движение головки на одну клетку влево и переход к команде m1".
Public static byte third() - метод, который запускается при выполнении команды типа "Нанесение метки в ячейку и переход к команде m1. ".
Public static byte fourth() - метод, который запускается при выполнении команды типа "Стирание метки в ячейке и переход к команде m1. ".
Public void fifth() - метод, который запускается при выполнении команды типа "Проверка наличия метки в клетке, над которой находится головка. Если метка отсутствует, то управление передается с номером m1, если метка есть, то с номером m2. ".
Bool check_string(string str) метод, вызываемый для проверки командной строки.
Разберем подробно работу программы.
Задаются два массива типа char input [] и command [] []. При нажатии кнопки "GO" формируется массив из входной строки и записывается в input []. Далее этот массив проверяется, если в нем содержатся символы, отличные от 0 и 1, то выдается ошибка. Затем проверяется список команд в методе check_string(string str), если он не соответствует заданному шаблону, то выдается ошибка, в противном случае он записывается в массив command [] []. После этого запускается цикл с постусловием, в котором проверяется какая команда должна выполняться в данный момент и запускается соответствующий метод. Во время выполнения команды останова - цикл завершается и выводится результат работы программы.
Похожие статьи
-
Использование программы StudyProgram для усвоения учебного материала по кодированию информации методом четности и методом Хэмминга Программа StudyProgram...
-
Кодирование по методу четности / нечетности - Кодирование информации
Для контроля правильности передачи информации, а также как средство шифрования информации используются различные коды. Коды, использующие для передачи...
-
Программа StudyProgram предназначена для того, чтобы помочь в усвоении приемов составления программ для машины Поста. Работа с программой осуществляется...
-
Кодирование по методу Хэмминга - Кодирование информации
Код Хэмминга - систематический код, то есть состоящий из информационных и корректирующих символов, расположенных по строго определенной системе, имеющих...
-
Векторное кодирование, Кодирование звуковой информации - Экономическая информатика
Для чертежей, схем, карт применяется другой способ кодирования, который позволяет не терять качество при изменении размеров изображения. Рисунок хранится...
-
Заключение - Кодирование информации
В ходе курсовой работы была разработана обучающая программа по информатике, с помощью которой студенты смогут проверить свои знания в таких разделах...
-
Трудоемкость производство алгоритм excel Трудоемкость годовой производственной программы Трудоемкость по профессии и разряду, ч. 4145,00 Структура...
-
Кодирование графической информации. - Экономическая информатика
Существует несколько способов кодирования графической информации. Так и все виды информации, изображения в компьютере закодированы в виде двоичных...
-
Цветовые модели. - Кодирование информации в компьютере
Если говорить о кодировании цветных графических изображений, то нужно рассмотреть принцип декомпозиции произвольного цвета на основные составляющие....
-
Растровое изображение. - Кодирование информации в компьютере
При помощи увеличительного стекла можно увидеть, что черно-белое графическое изображение, например из газеты, состоит из мельчайших точек, составляющих...
-
Кодирование графической информации - Кодирование информации в компьютере
В середине 50-х годов для больших ЭВМ, которые применялись в научных и военных исследованиях, впервые в графическом виде было реализовано представление...
-
Кодирование текстовой информации - Кодирование информации в компьютере
В настоящее время большая часть пользователей при помощи компьютера обрабатывает текстовую информацию, которая состоит из символов: букв, цифр, знаков...
-
Машина Поста - Кодирование информации
"Внешний вид" машины Поста Машина Поста не есть реально существующее, сделанное кем-то устройство; поэтому слова "внешний вид" и взяты в кавычки. Машина...
-
Инструментальное программное обеспечение -- это программное обеспечение, предназначенное для использования в ходе проектирования, разработки и...
-
Хранение, кодирование и пpеобpазование данных - Единицы измерения информации в памяти ПК
Хранение информации в памяти ЭВМ - одна из основных функций компьютера. Любая информация хранится с использованием особой символьной формы, которая...
-
Кодирование, Кодирование текстовой информации - Экономическая информатика
Кодирование текстовой информации Кодирование информации - процесс преобразования сигнала из формы, удобной для непосредственного использования...
-
Персональный компьютер сегодня является неотъемлемой частью нашей жизни и с каждым годом его влияние лишь усиливается, ведь он действительно создан,...
-
В нашей курсовой работе была поставлена задача создания обучающей программы по информатике, с помощью которой студенты смогут проверить свои знания в...
-
Файл - это набор любых данных одного типа, который хранится на диске отдельно от прочих. Например, музыкальный файл, файл изображения или текстовый файл,...
-
Кодирование информации -- процесс преобразования сигнала из формы, удобной для непосредственного использования информации, в форму, удобную для передачи,...
-
На сегодняшний день уже практически невозможно представить нашу повседневную жизнь без компьютерной техники. Интернет предоставляет нам безграничные...
-
Кодирование информации в компьютере - Кодирование информации в компьютере
Современный компьютер может обрабатывать числовую, текстовую, графическую, звуковую и видео информацию. Все эти виды информации в компьютере представлены...
-
ЗАКЛЮЧЕНИЕ - Распространение новостной информации
Проведенное исследование позволило составить представление об особенностях распространения новостной информации в социальной сети Twitter. Была проведена...
-
ОСНОВНЫЕ ПРОГРАММЫ АРХИВАТОРЫ И ИХ ФУНКЦИИ - Архивация информации и программы-архиваторы
Назначение программ-архиваторов заключается в экономии места на диске за счет сжатия (упаковки) одного или нескольких файлов в архивный файл....
-
Базовые понятия информации - Компьютерные и сетевые технологии
Информация компьютер математический сеть Мы начинаем первое знакомство с величайшим достижением нашей цивилизации, стоящем в одном ряду с изобретением...
-
На основе описания методов можно с уверенностью сказать, что данная система может успешно справляться с автоматизацией анализа документации. При этом...
-
"РЕШЕНИЕ ЗАДАЧ ЛИНЕЙНОГО ПРОГРАММИРОВАНИЯ С ИСПОЛЬЗОВАНИЕМ MICROSOFT EXCEL" Цель работы Приобретение навыков решения задач линейного программирования...
-
Перед началом непосредственного использования программы "Сервер опроса", следует создать рабочую конфигурацию сервера с помощью программы - конфигуратора...
-
Описание запуска, Инструкции по работе, Сообщения пользователю - Информационная система Вуза
Для запуска разработанного программного продукта необходимо открыть запускной файл (файл с расширением *.exe) (см. рис. 6). Рисунок 5- Запуск...
-
Поддержка различных форматов - Архивация информации и программы-архиваторы
В то время как большинство программ поддерживают один или два формата, некоторые из них, такие, например, как программа WinAce, поддерживают много...
-
Руководство программиста - Автоматизация процесса работы руководства ООО "Сервис партнер"
Для доступа к возможностям редактирования базы данных, ее таблиц, формул запросов, макросов, форм и отчетов необходимо при запуске приложения удерживать...
-
Уровни программного обеспечения. - Основы теории информации
1. Базовый уровень - самый низкий уровень ПО представляет базовое ПО. Оно отвечает за взаимодействие с базовыми аппаратными средствами. Как правило,...
-
Работа программы представлена на рисунке 2.3 Рис. 2.3 Кодирование и тестирование программы Программа кодировалась на языке Си++, используя библотеку Qt5x...
-
Для установки разработанного приложения на рабочую станцию необходимо: - установить необходимое программное обеспечениепакет MS Office (MS Excel, MS...
-
Глоссарий - Поиск информации в сети Интернет
№ п/п Понятие Определение 1 Интернет Это глобальная компьютерная сеть, которая связывает между собой как пользователей компьютерных сетей, так и...
-
Компромиссная система, для удобства восприятия данных человеком и корректной работы компьютера, двоично-десятичная запись чисел. Принцип построения этой...
-
Защита информации в БД - Банки и базы данных. Системы управления базами данных
Целью защиты информации является обеспечение безопасности ее хранения и обрабатывания. Процесс построения эффективной защиты начинается на начальных...
-
Обеспечение высокопомехоустойчивого обмена информацией в автоматизированных системах управлениях
При передаче цифровых данных в комплексах средств автоматизации управления войсками и оружием существует вероятность того, что принятые данные могут...
-
Кейс 1. Реальная новость: "Министр обороны: Италия может направить миротворцев на Украину" Описательная статистика Общее количество упоминаний по всем...
-
Система мониторинга социальных сетей предоставляет исследователю возможность собрать интересующие его упоминания в социальных сетях по какой-либо...
Инструкция программиста - Кодирование информации