Содержание
Введение
Глава 1. Исследовательская часть
1.1 Целесообразность выбора языка программирования
1.2. Основные структуры языка программирования C#
1.3. Кодирование по методу четности / нечетности
1.4. Кодирование по методу Хэмминга
1.5. Машина Поста
Глава 2. Инструкция программиста
Глава 3. Инструкция пользователя
3.1 Использование программы StudyProgram для усвоения учебного материала по кодированию информации методом четности и методом Хэмминга
3.2 Использование обучающей программы StudyProgram для овладения навыками составления программ для машины Поста
Заключение
Список литературы
Приложение
В курсовой работе была поставлена задача создания обучающей программы по информатике, с помощью которой студенты смогут проверить свои знания в таких разделах данной дисциплины как кодирование по методу Хэмминга, кодирование по методу четности-нечетности, программирование машины Поста.
Цель работы: улучшить и расширить навыки работы на языке программирования C#.
Основные функции обучающей программы: изучение данных методов кодирования двоичных чисел и программирование машины Поста. Курсовой проект состоит из обучающей программы с разбиением по разделам.
Для создания курсового проекта использовался C# – новый язык программирования компании Microsoft, входящий в Visual Studio .Net (v.7).
В курсовом проекте была поставлена задача, реализация которой может быть произведена с помощью различных языков программирования. Но мы выбрали язык С#, входящий в Visual Studio .Net (v.7), так как он имеет ряд преимуществ, которые упрощают процесс создания приложений. Немаловажную роль в выборе языка сыграло то, что C# - лучший .NET-язык, так как он был специально спроектирован для .NET Framework.
C# создавался Microsoft, как основной язык для .NET Framework. Microsoft спроектировала C# таким образом, что бы С, С++ и Java-программисты смогли легко перейти на него. C# имеет корни в языках С, С++ и Java, поэтому такой переход не должен вызвать затруднений.
Синтаксис у C# не такой сложный как у С++, поэтому его изучение намного легче. Большинство операций, которые вы можете делать на С++, можно сделать и на C#, за исключением операций доступа к низкоуровневым функциям (это все-таки можно сделать с помощью неуправляемого кода).
С# - первый язык, поддерживаемый версиями .NET Framework для других платформ.
Язык, который использует библиотеку классов .NET Framework (FCL) и управляется общеязыковой средой исполнения (CLR) является .NET-совместимым языком (язык, который поддерживает платформа .NET). Среди таких языков: Microsoft Visual Basic .NET (VB .NET), Microsoft Visual C++ .NET , а также COBOL, Eiffel, Jscript, RPG и другие. Как мы говорили ранее, C# был спроектирован специально для .NET Framework и содержит некоторую функциональность, которую вы не найдете в других языках.
Программист, привыкший к платформе Майкрософт, может представить себе C# как промежуточный вариант между C++ и Visual Basic, если рассматривать сложность языковых конструкций и возможности языка.
C# имеет C стиль синтаксиса (для управляющих конструкций, блоков кода, описания сигнатуры методов и др.), много общего с Java (отсутствие множественного наследования и шаблонов, наличие сборщика мусора) и Дельфи (ориентированность на создание компонент), в то же время имеет и свой колорит.
При создании языка в основу дизайна легла легкость использования, доминирующая над мощностью языка и скоростью выполнения. [7] Отсюда и сборщик мусора с управляемыми объектными ссылками, который автоматически освобождает за Вас память, отбирая при этом процессорное время. Вы также получаете безопасность работы с типами, а это, по мнению многих, является вторым важнейшим фактором избежания ошибок.
C# объектно-ориентированный язык, как и вся платформа .NET[7].
При создании языка рассматривалась не только простота написания приложений, но и их поддержки - в связи, с чем в язык включили поддержку XML комментариев и контроля версий. Настоящий подарок для программистов.
В C# представлена концепция пространств имен, аналогичная пакетам в Java. Это позволяет иерархически структурировать Вашу систему типов, делая код намного более понятным и позволяя избежать проблем с именованием. Вы можете рассматривать пространства имен как директории, а языковые типы как файлы в этих директориях.
Реализация структур как типов, работа с которыми идет по значению, вместе с возможностью использовать не только вложенные массивы (как в Java), но и многомерные позволяет оптимизировать производительность приложений.
Ввиду очень удобного объектно-ориентированного дизайна, C# является хорошим выбором для быстрого конструирования различных компонентов - от высокоуровневой бизнес логики до системных приложений, использующих низкоуровневый код[6]. Также следует отметить, что C# является и Web ориентированным - используя простые встроенные конструкции языка ваши компоненты могут быть легко превращены в Web сервисы, к которым можно будет обращаться из Internet посредством любого языка на любой операционной системе. Дополнительные возможности и преимущества перед другими языками приносит в C# использование передовых Web технологий, таких как: XML (Extensible Markup Language) и SOAP (Simple Object Access Protocol). Среда разработки Web сервисов позволяет программисту смотреть на существующие сегодня Web приложения, как на родные C# объекты, что дает возможность разработчикам соотнести имеющиеся Web сервисы с их познаниями в объектно-ориентированном программировании[6].
Как было показано выше, выбранный язык программирования наиболее удобен для выполнения поставленной задачи.
Классы
Классы — сердце каждого объектно-ориентированного языка. Как вы помните, класс представляет собой инкапсуляцию данных и методов их обработки. Это справедливо для любого объектно-ориентированного языка и отличаются они в этом плане лишь типами тех данных, которые можно хранить в виде членов, а также возможностями классов. В том, что касается классов и многих функций языка, С# кое-что заимствует из C++ и Java, и привносит немного изобретательности, помогающей найти элегантные решения старых проблем.
Синтаксис определения классов на С#, прост, особенно если вы программируете на C++ или Java. Поместив перед именем вашего класса ключевое слово class, вы вставляете члены класса, заключенные в фигурные скобки, например:
class Employee
{
private long employeeld;
}
Как видите, этот простейший класс с именем Employee содержит единственный член — employeeld. Заметьте: имени члена предшествует ключевое слово private — это модификатор доступа (access modifier).
Члены класса
Типы, определенные в CIS (Common Type System) поддерживаются как члены классов С# и бывают следующих видов.
· Поле. Так называется член-переменная, содержащий некоторое значение. В ООП поля иногда называют данными объекта. К полю можно применять несколько модификаторов в зависимости от того, как вы собираетесь это поле использовать. В число модификаторов входят static, readonly и const.
· Метод. Это реальный код, воздействующий на данные объекта (или поля).
· Свойства. Их иногда называют "разумными" полями (smart fields), так как они на самом деле являются методами, которые клиенты класса воспринимают как поля. Это обеспечивает клиентам большую степень абстрагирования за счет того, что им не нужно знать, обращаются ли они к полю напрямую или через вызов метода-аксессора.
· Константы. Как можно предположить, исходя из имени, константа — это поле, значение которого изменить нельзя.
· Индексаторы. Если свойства — это "разумные" поля, то индексаторы - это "разумные" массивы, так как они позволяют индексировать объекты методами-аксессорами get и set. С помощью индексатора легко проиндексировать объект для установки или получения значений.
· События. Событие вызывает исполнение некоторого фрагмента кода. События — неотъемлемая часть программирования для Microsoft Windows. Например, события возникают при движении мыши, щелчке или изменении размеров окна. События С# используют ту же стандартную модель публикации/подписки (publish/subscribe), что и в MSMQ (Microsoft Message Queuing) и асинхронной модели событий СОМ+, которая дает приложению средства асинхронной обработки событий. Но в С# это базовая концепция, встроенная в язык.
· Операторы. Используя перегрузку операторов С#, можно добавлять к классу стандартные математические операторы, которые позволяют писать более интуитивно понятный код.
Массивы
Массивы в C# очень просты и похожи на массивы в C++. В C# имеется три основных типа массивов: одномерные, многомерные и неровные(jagged):
С одномерными массивами все как обычно:
Инициализация.
Инициализируются они также как в C++:
int[] array = new int[10];
int[] array = {1, 2, 3, 4, 5};
Доступ
Доступ к элементам производится с помощью оператора []:
int element = array[0];
Элементы нумеруются индексами от 0 до N - 1, где N - размер массива.
Многомерные массивы представляют собой многомерные кубы значений. Элементы таких массивов идентифицируются набором индексов - "координат" в многомерном пространстве. Каждое измерение имеет свою размерность, не зависящую от других. Отметим, что многомерные массивы являются важным отличием от других подобных языков (Java), ибо по сравнению с неровными массивами, обеспечивают гораздо большую производительность.
Инициализация
При инициализации размерности измерений указываются через запятую:
int[,] array = new int[10, 20];
int[,] array = {{1, 2}, {3, 4}};
Доступ
Доступ к элементам производится с помощью оператора [], в котором индексы также указываются через запятую:
int element = array[0, 2];
Элементы нумеруются наборами индексов, каждый из которых может принимать значение от 0 до N - 1, где N - размер соответствующего измерения массива.