Дипломная работа на тему Разработка программы, которая автоматизирует написание и проверку диктантов

Содержание

Введение

Глава 1. Анализ предметной области

1.1 Принципы построения автоматизированных обучающих систем

1.2 Классификация АОС по алгоритмическому построению

1.3 Анализ существующих информационных систем

1.3.1 “Электронный учебник по обучению населения компьютерной грамотности”

1.3.2 Системы школьного компьютерного обучения “NetOpSchool”

1.3.3 “Самоучитель MicrosoftWindows XP”

1.4 VisualStudio

Глава 2. Язык программирования С#

2.1 История языка

2.2 Основные черты С#

2.3 Примеры программ С#

2.4 Простые переменные

2.5 Арифметические операции

2.6 Управление и логика

2.7 Комментарии

2.8 Циклы

2.9 Описание работы программы

Заключение

Список используемой литературы

Введение

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

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

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

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

Цели и задачи дипломной работы:

Цели: Создать программу, которая автоматизирует написание и проверку диктантов.

Задачи: Упростить работу преподавателю, с помощью этого повысить эффективность обучения, это дает гарантию того, что проверка будет безошибочна, придает интерес ученикам, и возможность писать диктанты слабослышащим. Для разработки, была использована программа “Visual studio”, программа написана на языке программирования С#.

Глава 1. Анализ предметной области

1.1 Принципы построения автоматизированных обучающих систем

В настоящее время в процесс обучения активно внедряются программные технологии на базе персональных ЭВМ, применяемые для передачи ученику учебного материала и контроля степени его усвоения. При этом на рынке программного продукта за последнее десятилетие появилось достаточно большое количество обучающих систем, в том числе и автоматизированных (АОС), которые охватывают различные предметные области, и призваны решать задачи обучения на различных этапах жизни человека – от начальных классов средней школы до процесса обучения в высших учебных заведениях.

Автоматизированной обучающей системой будет являться любая АОС, так как, ряд задач, например отображение информации или анализ правильного ответа, выполняются без участия человека. Каждая АОС имеет определенную структуру на основе группы элементов с указанием связей между ними и дающее представление о системе в целом. Поэтому структура системы может быть охарактеризована по имеющимся в ней типам связей.

На основе проведенного анализа можно сделать вывод, что каждая обучающая система имеет четко выраженную структуру, и эти структуры можно классифицировать следующим образом:

По структурным признакам взаимодействия обучающей системы с пользователем АОС подразделяются на разомкнутые (без обратной связи) и замкнутые (с обратной связью) системы, которые отличаются принципиальным подходом к процессу обучения.

В разомкнутых АОС порядок предоставления учебного материала не зависит от степени его усвоения учащимся. Здесь лишь выполняется определенная заранее заданная программным путем последовательность изложения урока или контрольных вопросов. При этом наиболее простыми из числа разомкнутых АОС являются системы с презентационной структурой.

В АОС без обратной связи (замкнутых) основной упор делается на выявление уровня знаний учащихся в определенный период учебного процесса. Используя различную методику, такие системы предъявляют обучаемому открытый или закрытый вариант вопроса (вопрос с вариантами выбора ответа). От учащегося ожидается отклик в виде ответа (управляющего воздействия) на поставленный вопрос. Ответ фиксируется в блоке фиксатора ошибок. По результатам опроса выставляется определенный балл, который служит критерием для результирующей оценки по степени усвоения учащимся требуемого учебного материала.

Наиболее широкими функциональными возможностями и высокой эффективностью в учебном процессе обладают АОС, где организована обратная связь между учащимся и обучающей системой. Примером подобных АОС могут служить всевозможные игровые тренажеры, имитаторы и т.п. В частности, имитационная программа компании Maxis позволяет имитировать развитие и управление городом. Здесь имитируются различные ситуации, начиная от размещения промышленных предприятий и транспортных сетей и заканчивая моделированием экстремальных ситуаций и путей их ликвидации.

В нотационных АОС используется комплексный подход в обучении. Программа не только обучает, но и одновременно проверяет полученные на текущий момент знания учащимся. Здесь важным фактором служит отклик учащегося на то или иное информационное воздействие. В зависимости от отклика, обучающая система может перестроить ход урока в том или ином направлении. В АОС данной структуры очень часто вводят игровые элементы.

Как правило, такие АОС рассчитаны на учащихся младших возрастов, для которых игра является важным инструментом обучения. Здесь вопрос (информационное воздействие) ставится в виде игровой ситуации, на основании которой учащийся может находить верный или неверный выход (отклик). На основании принятого учащимся решения, АОС формирует следующий вариант игровой ситуацию. Примером такой системы может служить курс обучения английскому языку BridgetoEnglish. (Программа предназначена для вас, если вы начинаете изучать английский язык или желаете совершенствовать навыки чтения, письма, произношения и понимания на слух. Разработанная в Великобритании для профессионального использования, в течение многих лет эта программа не имеет себе равных по эффективности обучения. Это достигнуто применением многочисленных методических приёмов и жёсткой системы контроля за успеваемостью. Благодаря этим качествам, гарантирующим максимальный результат обучения, программа удостоена высшей награды самой крупной образовательной сети в мире – Aspect International Language Academies.

Упражнения по лексике и грамматике, диалоги, диктанты, фонетический и грамматический справочник, англо-русский словарь – всё это сведено в единую обучающую систему, работать с которой легко и удобно. Для начинающих имеется специальное упражнение по изучению английского алфавита. Весь текстовой материал сопровождается живой речью носителей языка, причем практически каждый звук начитан как мужским, так и женским голосом.

20 уроков содержат обучающий материал по всем основным грамматическим конструкциям английского языка. Предъявляемый активный лексический запас равен 2000 единиц. Это позволит вам уверенно общаться и писать на английском. В каждом уроке вы изучаете новую грамматическую конструкцию, два блока лексики, соответствующие теме, и выполняете ряд упражнений для проверки усвоенного материала, правописания и умения вести беседу на заданную тему. Все упражнения иллюстрируются красочными картинками, выполненными с традиционно английским юмором.)

Таким образом, является очевидным, что наиболее широкими возможностями с учетом современных требований к АОС обладают замкнутые обучающие системы, обеспечивающие максимальную “гибкость” в общении с пользователем.

При реализации любой из ранее рассмотренных структур АОС используются вполне определенные алгоритмические подходы, диктуемые методикой проведения учебного занятия. Обычно любая обучающая система представляет собой совокупность порций информации, называемой слайдами, которые в той или иной форме предъявляются ученику. Современная вычислительная техника обладает широкими функциональными возможностями и позволяет использовать в слайдах информацию, представленную в виде обычного текста, графического изображения, аудио и видео фрагментов. При этом в слайдах можно сосредоточить все средства представления информации, существующие в настоящее время для повышения эффективности учебного процесса. С другой стороны, использование звукового представления и видеозаписей ведет к удорожанию персонального компьютера, что не всегда является оправданным. В настоящее время, как наиболее оптимальный вариант в большинстве курсов программированного обучения, применяют текстовое и графическое представление информации.

1.2 Классификация АОС по алгоритмическому построению

При использовании линейных алгоритмов АОС учащемуся предъявляются слайды, заложенные в АОС. В качестве достоинств линейного алгоритма АОС можно отметить простоту разработки такой системы, а в качестве недостатков – трудоемкость раскрытия некоторых тем и невозможность гарантированного закрепления полученных знаний. В АОС построенных с использованием нелинейных алгоритмов появляется возможность изменять последовательность предъявления слайдов в зависимости от того или иного отклика учащегося на информационное воздействие. Здесь важнейшую роль играют слайды, содержащие вопросы и требующие принятие решения учащимся. В таких слайдах, которые назовем слайдами выбора, используются следующие средства выбора направления обучения:

открытые вопросы;

закрытые вопросы (вопросы типа меню);

гиперссылки;

Нелинейные алгоритмы, в свою очередь, делятся на циклические, направленные и комбинированные.

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

Направленные алгоритмы по-прежнему предполагают наличие слайдов выбора, однако в зависимости от принятого решения учащимся выбирается та или иная последовательность и возврата обратно не предполагается. В комбинированных алгоритмах используется оба принципа. По результатам решения принятого учащимся для ответа на вопрос слайда выбора, АОС изменяет последовательность предъявления слайда, однако на N-ом шаге возможен возврат к предыдущим слайдам

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

1.3 Анализ существующих информационных систем

1.3.1 Электронный учебник по обучению населения компьютерной грамотности

Продукт “Электронный учебник по обучению населения компьютерной грамотности” представляет собой интерактивный курс – основы компьютерной грамотности, разработанный АО “Национальный центр информатизации” Казахстан. Программный продукт разработан специально для целей повышения компьютерной грамотности населения и примененим как в специализированных компьютерных классах, так и в домашних условиях.

Пройдя данный курс пользователь обучится основам работы с компьютером, узнает из чего он состоит и для чего нужны его разные части, научится работать в операционной системе Windows XP и приложениях пакета MicrosoftOffice 2003 (Word, Excel, PowerPoint) станет уверенным пользователем персонального компьютера.

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

Метод распространения: бесплатный.

Недостатками данной программы является неактуальность и устарелость материала и несоответствие условиям заказчика.

1.3.2 Системы школьного компьютерного обучения NetOpSchool

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

Основные возможности NetOpSchool:

Демонстрация изображения любого из компьютеров класса всем студентам

Широкие возможности проведения демонстраций студентам и удаленного оказания помощи

Возможность легко демонстрировать текст или аудио-записи

Студенты могут запрашивать помощь у преподавателя нажатием нескольких кнопок

Студенты получают возможность приобрести реальный опыт работы с предметом обучения

Организация обучения в отсутствии реального компьютерного класса (удаленное обучение)

Интуитивно-понятный интерфейс

Не требует дополнительных вложений в аппаратное обеспечение

Недостатки: дороговизна и сложность для обучаемого, нет наглядности которая требуется.

1.3.3 Самоучитель MicrosoftWindows XP

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

Программа была издана ИДДК в 2005 году и распространяется как через интернет, так и в розницу.

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

Результатом работы программы является овладение пользователя навыками по следующим темам:

1. Работа в Windows XP.

2. Рабочий стол.

3. Система.

4. Средства коммуникаций.

5. Интернет.

6. Установка периферии.

7. Установка и настройка устройств ввода/вывода.

8. Установка/удаление программ.

9. Работа с диском.

10. Работа с изображениями.

11. Работа с видео.

12. Работа со звуком.

Недостатком системы является невозможность контроля за успеваемостью, децентрализованость системы, неактуальность информации, не соответствие требованиям заказчика.

1.4 VisualStudio

MicrosoftVisualStudio – линейка продуктов компании Microsoft, включающих интегрированную среду разработки программного обеспечения и ряд других инструментальных средств. Данные продукты позволяют разрабатывать как консольные приложения, так и приложения с графическим интерфейсом, в том числе с поддержкой технологии WindowsForms, а также веб-сайты, веб-приложения, веб-службы как в родном, так и в управляемом кодах для всех платформ, поддерживаемых Windows, WindowsMobile, Windows CE, .NET Framework, Xbox, WindowsPhone .NET CompactFramework иSilverlight.

VisualStudio включает в себя редактор исходного кода с поддержкой технологии IntelliSense и возможностью простейшегорефакторинга кода. Встроенный отладчик может работать как отладчик уровня исходного кода, так и отладчик машинного уровня. Остальные встраиваемые инструменты включают в себя редактор форм для упрощения создания графического интерфейса приложения, веб-редактор, дизайнер классов и дизайнер схемы базы данных. VisualStudio позволяет создавать и подключать сторонние дополнения (плагины) для расширения функциональности практически на каждом уровне, включая добавление поддержки систем контроля версий исходного кода (как, например, Subversion и VisualSourceSafe), добавление новых наборов инструментов (например, для редактирования и визуального проектирования кода на предметно-ориентированных языках программирования) или инструментов для прочих аспектов процесса разработки программного обеспечения (например, клиент TeamExplorer для работы с TeamFoundationServer).

Основными преимуществами VisualStudio являются:

Использование вычислительных мощностей локального компьютера и облака

Простая реализация общих задач и индивидуальный подход

Быстрое создание высококачественного кода

Функция поддержки нескольких мониторов

Возможность реализации идей и решений для широкого спектра платформ, включая Windows, WindowsServer, веб-среду, облачную среду, Office и SharePoint

С помощью VisualStudio решается задача разработки программного обеспечения.

Разработка программного обеспечения

MicrosoftVisualStudio 2010 – средство для разработчиков ПО, которое позволяет решать основные задачи разработки: система упрощает создание, отладку и развёртывание приложений на различных платформах, включая SharePoint и облачную среду.

“SharePoint”, или “MicrosoftSharePointProductsandTechnologies” – это коллекция программных продуктов и компонентов, которая включает в себя следующие компоненты:

набор веб-приложений для организации совместной работы;

функциональность для создания веб-порталов;

модуль поиска информации в документах и информационных системах;

функциональность управления рабочими процессами и систему управления содержимым масштаба предприятия;

модуль создания форм для ввода информации;

функциональность для бизнес-анализа.

“SharePoint” может быть использован для создания сайтов, предоставляющих пользователям возможность для совместной работы.

Создаваемые на платформе “SharePoint” сайты могут быть использованы в качестве хранилища информации, знаний и документов, а также использоваться для исполнения облегчающих взаимодействие веб-приложений, таких как вики и блоги. Пользователи могут управлять и взаимодействовать с информацией в списках и библиотеках документов используя элементы управления, называемые веб-части (SharePointWebParts).

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

Мощные инструменты VisualStudio помогают быстро создавать высококачественный код. Интегрированная поддержка разработки через тестирование и новые инструменты отладки ПО для многоядерных процессоров позволяют без труда находить и устранять дефекты, обеспечивая создание высококачественного решения.

VisualStudio включает функцию поддержки нескольких мониторов, которая позволяет наиболее удобно организовать работу. Независимо от сложности проекта VisualStudio можно использовать для реализации идей и решений для широкого спектра платформ, включая Windows, WindowsServer, веб-среду, облачную среду, Office и SharePoint и многое другое.

Глава 2. Язык программирования С#

2.1 История языка

В июне 2000 года стало известно о новом языке программирования, родившемся в недрах компании Microsoft. Он стал частью новой технологии Microsoft, названной.NET (читается “Dot Net”). В рамках этой технологии предусмотрена единая среда выполнения программ (Common Language Runtime, CLR), написанных на разных языках программирования. Одним из таких языков, основным в этой среде, и является Си# (C#, читается “C sharp”, “Си шарп”). Названием языка, конечно же, хотели подчеркнуть его родство с Си++, ведь # – это два пересекшихся плюса. Но больше всего новый язык похож на Яву. И нет сомнений, что одной из причин его появления стало стремление Microsoft ответить на вызов компании Sun.

Хотя официально авторы Си# не называются, но на титульном листе одной из предварительных редакций справочника по языку обозначены Андерс Хейльсберг (AndersHejlsberg) – создатель Турбо Паскаля и Дельфи, перешедший в 1996 году в Microsoft, и Скотт Вилтамут (Scott Wiltamuth).

Единая среда выполнения программ основана на использовании промежуточного языка IL (Intermediate Language – промежуточный язык), исполняющего почти ту же роль, что и байт-код виртуальной машины языка Ява. Используемые в рамках технологии.NET компиляторы с различных языков транслируют программы в IL-код. Так же как и байт-код Явы, IL-код представляет собой команды гипотетической стековой вычислительной машины. Но есть и разница в устройстве и использовании IL.

Во-первых, в отличие от JVM, IL не привязан к одному языку программирования. В составе, предварительных версий Microsoft.NET имеются компиляторы с языков Си++, Си#, Visual Basic. Независимые разработчики могут добавлять другие языки, создавая компиляторы с этих языков в IL-код.

Во-вторых, IL предназначен не для программной интерпретации, а для последующей компиляции в машинный код. Это позволяет достичь существенно большего быстродействия программ. Содержащие IL-код файлы несут достаточно информации для работы оптимизирующего компилятора.

2.2 Основные черты С#

автоматизированный алгоритмизация интерфейс компиляция

“Си# – простой, современный, объектно-ориентированный язык с безопасной системой типов, происходящий от Си и Си++. Си# будет удобен и понятен для программистов, знающих Си и Си++. Си# сочетает продуктивность Visual Basic и мощность Си++.” Такими словами начинается описание Си#. Сейчас мы рассмотрим технические особенности языка.

? Единицей компиляции является файл (как в Си, Си++, Яве). Файл может содержать одно или несколько описаний типов: классов (class), интерфейсов (interface), структур (struct), перечислений (enum), типов-делегатов (delegate) с указанием (или без указания) об их распределении по пространствам имен.

? Пространства имен (namespace) регулируют видимость объектов программы (как в Си++). Пространства имен могут быть вложенными. Разрешено употребление объектов программы без явного указания пространства имен, которому этот объект принадлежит. Достаточно лишь общего упоминания об использовании этого пространства имен в директиве using (как в Турбо Паскале). Предусмотрены псевдонимы для названий пространств имен в директиве using (как в языке Оберон).

? Элементарные типы данных: 8-разрядные (sbyte, byte), 16-разрядные (short, ushort), 32-разрядные (int, uint) и 64-разрядные (long, ulong) целые со знаком и без знака, вещественные одиночной (float) и двойной (double) точности, символы Unicode (char), логический тип (bool, не совместим с целыми), десятичный тип, обеспечивающий точность 28 значащих цифр (decimal).

? Структурированные типы: классы и интерфейсы (как в Яве), одномерные и многомерные (в отличие от Явы) массивы, строки (string), структуры (почти то же, что и классы, но размещаемые не куче и без наследования), перечисления, несовместимые с целыми (как в Паскале).

? Типы-делегаты или просто “делегаты” (подобны процедурным типам в Модуле-2 и Обероне, указателям на функции в Си и Си++).

? Типы подразделяются на ссылочные (классы, интерфейсы, массивы, делегаты) и типы-значения (элементарные типы, перечисления, структуры). Объекты ссылочных типов размещаются в динамической памяти (куче), а переменные ссылочных типов являются, по сути, указателями на эти объекты. В случае типов-значений переменные представляют собой не указатели, а сами значения. Неявные преобразования типов разрешены только для случаев, когда они не нарушают систему безопасности типов и не приводят к потере информации. Все типы, включая элементарные, совместимы с типом object, который является базовым классом всех прочих типов. Предусмотрено неявное преобразование типов-значений к типу object, называемое упаковкой (boxing), и явное обратное преобразование – распаковка (unboxing).

? Автоматическая сборка мусора (как в Обероне и Яве).

? Обширный набор операций с 14 уровнями приоритета. Переопределение операций (как в Алголе-68, Аде, Си++). С помощью операторов checked и unchecked можно управлять контролем переполнения при выполнении операций с целыми.

? Методы с параметрами значениями, параметрами-ссылками (ref) и выходными параметрами (out). Слова ref и out нужно записывать перед параметром не только в описании метода, но и при вызове. Наличие выходных параметров позволяет контролировать выполнение определяющих присваиваний. По правилам языка любая переменная должна гарантированно получить значение до того, как будет предпринята попытка ее использования.

? Управляющие операторы: if, switch, while, do, for, break, continue (как в Си, Си++ и Яве). Оператор foreach, выполняющий цикл для каждого элемента “коллекции”, несколько разновидностей оператора перехода goto.

? Обработка исключений (как в Яве).

? Свойства – элементы классов (объектов), доступ к которым осуществляется так же, как и к полям (можно присвоить или получить значение), но реализуется неявно вызываемыми подпрограммами getи set (как в Объектном Паскале – входном языке системы Delphi).

? Индексаторы – элементы классов (объектов), позволяющие обращаться к объектам так же, как к массивам (указанием индекса в квадратных скобках). Реализуются неявно вызываемыми подпрограммами get и set[3]. Например, доступ (для чтения) к символам строки может выполняться как к элементам массива благодаря тому, что для стандартного класса string реализован индексатор.

? События – элементы классов (поля или свойства) процедурного типа (делегаты), к которым вне класса, где они определены, применимы только операции += и -=, позволяющие добавить или удалить методы-обработчики событий для объектов данного класса.

? Небезопасный (unsafe) код, использующий указатели и адресную арифметику, локализуется в частях программы, помеченных модификатором unsafe.

? Препроцессор, предусматривающий, в отличие от Си и Си++, только средства условной компиляции.

2.3 Примеры программ С#

Перейдем к практике, для создания самой простой программы мы запустим VisualStudio и выполним следующее:

1. Пойдем в меню File-NewProject (Файл – Новый проект)

Рис.1. Демонстрация нового проекта.

2. Выберем шаблон ConsoleApplication (Консольное приложение)

Рис.2. Выбор шаблона.

3. Выберем каталог на диске, где будет расположен наш проект

4. Добавим две строчки в текст программы, чтобы он выглядел вот так

using System;

usingSystem.Collections.Generic;

usingSystem.Linq;

usingSystem.Text;

usingSystem.Threading.Tasks;

namespace ConsoleApplication2

{

classProgram

{

staticvoid Main(string[] args)

{

System.Console.WriteLine(“Приветвсем!”);

System.Console.ReadLine();

}

}

}

5. Нажмем F5 (можновыбратьвменюDebug – StartDebugging) и увидим черное окошко с нашим “Привет всем!”, которое закроется после нажатия “Enter”.

Рис.3. Окно с текстом.

Что это и зачем оно надо? В теории это программа без кнопок и меню, которой можно управлять через командную строку. В наше время такие программы используются редко, в основном очень продвинутыми сисадминами или в мире Linux (что в принципе одно и то же), но знать об их существовании полезно – программисту может довестись с такой работать или даже писать. Нам она нужна по одной-единственной причине – такая программа меньше всего будет отвлекать от изучения универсальных особенностей языка C#.

В самом простом случае (это про нас) компьютер последовательно выполняет команды программиста – одну за другой:

System.Console.WriteLine(“Привет всем!”); – выводит в консоль (то самое черное окно) строку “Привет всем!”

System.Console.ReadLine(); – читает строку, которую мы вводим (ввод завершается нажатием Enter) и переходит к следующей команде.

Так как следующей команды нет, программа завершает работу и закрывает окно.

2.4 Простые переменные

Обычно программы используются для хранения и обработки какой-то информации. Например списка покупателей магазина, сотрудников фирмы или героев и монстров в компьютерной игре. При работе программы все ее данные хранятся в переменных. Переменные и сама программа хранятся в оперативной памяти.

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

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

Некоторые из простых типов данных в C#

– int, целое число от -2,147,483,648 до 2,147,483,647

– string, строка

– double, число с дробной частью и переменным количеством знаков после запятой, например 1.38 принимает значения от -1,79769313486232 в 308 степени до 1,79769313486232 в 308 степени. Проще говоря очень большие.

– decimal, число с дробной частью и повышенной точностью рассчетов, специально для финансовых операций – в миллионных и более мелких долях float могут накапливаться мелкие ошибки, банки это не любят

– bool – специальный тип для передачи данных об истинности или ложности, принимает только два значения – true или false. В старых языках вместо него использовали int с значениями 1 и 0, но это было менее наглядно и приводило к ошибкам.

И многие другие типы.

Как уже говорилось выше очень часто программы обрабатывают данные о людях. Попробуем это сделать и мы.

staticvoid Main(string[] args)

{

string stringToShow1, stringToShow2;

string surname = “Ребров”;

string name = “Петр”;

stringotchestvo = “Сергеевич”;

int age = 30;

double weight = 88.71;

stringToShow1 = surname + ” ” + name + ” ” + otchestvo + “, возраст ” + age + “, вес ” + weight;

surname = “Ватагин”;

name = “Денис”;

otchestvo = “Александрович”;

age = 20;

weight = 90;

stringToShow2 = surname + ” ” + name + ” ” + otchestvo + “, возраст ” + age + “, вес ” + weight;

System.Console.WriteLine(stringToShow1);

System.Console.WriteLine(stringToShow2);

System.Console.ReadLine();

}

Не забудьте запустить по F5 и посмотреть результаты.

Здесь мы объявляем две переменные-строки, оставляем их пока пустыми, объявляем набор переменных с данными о людях, склеиваем из них одну большую строку и заносим в первую переменную-строку, заносим в тот же самый набор переменных другие данные, склеиваем все вместе и заносим в другую строку и только после этого выводим две финальные строки на экран. Стоит обратить внимание на склеивание нескольких строк в одну с помощью +.

2.5 Арифметические операции

Компьютеры почти всегда что-то считают. Собственно само слово computer означает вычислитель. В этой области даже самый слабенький процессор намного превосходит человеческий мозг.

staticvoid Main(string[] args)

{

int a = 5;

int b = 2;

System.Console.WriteLine(“a= ” + a + “, b=” + b);

int result = a + b;

System.Console.WriteLine(“Сложение, a+ b =” + result);

result = a * b;

System.Console.WriteLine(“Умножение, a*b = ” + result);

result = a / b;

System.Console.WriteLine(“Деление, a/b = ” + result + ” a и b – целыечисла, делениетольконацело”);

doubleresultDouble = a / b;

System.Console.WriteLine(“Деление, a / b = ” + resultDouble + ” всеравночто-тонетак…”);

doubleaDouble = 5;

resultDouble = aDouble / b;

System.Console.WriteLine(“Деление, a / b = ” + resultDouble);

System.Console.ReadLine();

}

Почему произошло столь странное недоразумение с дробным числом во второй раз? Все дело в том, что внутри одной строки мы выполнили сразу несколько операций. А в каком порядке они выполняются? В порядке приоритета. И у оператора присваивания =, который записывает данные в переменную, этот приоритет один из самых низких.

Сначала выполнилось деление двух целочисленных переменных a и b и только после этого целый результат деления записался в дробную переменную doubleResult.

2.6 Управление и логика

На данный момент наша программа не отличается умом – Скайнет из нее не получится, уничтожение человечеству не грозит. Мы просто выполняем команды по очереди, одну за другой, а хотелось бы принимать решения в зависимости от внешних условий – например “если есть возможность, уничтожить всех людей, иначе работать над созданием такой возможности”. Делается это с помощью специальной конструкции если-иначе, или, на родном для C# английском if-else и специальных операторов сравнения:

< – величина слева меньше

> – величина слева больше

<= и >= – меньше либо равно и больше либо равно

== – просто равно, обратите внимание, что равенство очень похоже на оператор присваивания, который записывает значение в переменную = – не путайте их, равенство – это двойное “равно”

!= – не равно

и другие

Компьютерная логика проста – высказывание или результат сравнения может быть либо истиной либо ложью, либо true либо false, либо уничтожать человечество либо нет. Третьего компьютеру не дано. Для хранения таких данных существует специальный тип данных – логический -bool – который может принимать только два значения.

Нам важно понять, что любая операция сравнения, на пример 2 < 4 на самом деле вычисляет логическое значение типа bool, которое может принимать только два значения. И уже им будет руководствоваться компьютер, выполняя нашу программ.

boolboolVariable = true;

if (boolVariable)

{

System.Console.WriteLine(“boolVariable = true; — Истина!”);

}

else

{

System.Console.WriteLine(“boolVariable = false; Ложь!”);

}

System.Console.WriteLine();

boolVariable = false;

if (boolVariable)

{

System.Console.WriteLine(“boolVariable = false; Истина!”);

}

else

{

System.Console.WriteLine(“boolVariable = false; Ложь!”);

}

boolVariable = 2 < 4;

if (boolVariable)

{

System.Console.WriteLine(“boolVariable = 2 < 4; Истина!”);

}

else

{

System,Console.WriteLine(“boolVariable = 2 < 4; Ложь!”);

}

if(10 != 100)

{

System.Console.WriteLine(“10 != 100! Вашкапитаночевидность!”);

}

System.Console.WriteLine();

System.Console.ReadLine();

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

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

– логическое ИЛИ – оператор || – возвращает истину если хоть одна из двух величин истинна. Ложь, он вернет только если обе логические величины ложны.

Ну например – если есть армия “И” есть энергия – напасть на человечество. При использовании оператора “&&” нападения не произойдет если нет энергии или нет армии. А вот при использовании “||” глупая железяка попытается напасть даже если у нее нету армии, или эта армия лежит мертвой грудой без топлива и электричества.

bool boolVar1 = true;

bool boolVar2 = true;

if (boolVar1 && boolVar2)

{

System.Console.WriteLine(“Вернуло true логическоеИдля true и true”);

}

if (boolVar1 || boolVar2)

{

System.Console.WriteLine(“Вернуло true логическоеИЛИдля true и true”);

}

boolVar1 = true;

boolVar2 = false;

if (boolVar1 && boolVar2)

{

System.Console.WriteLine(“Вернуло true логическоеИдля true и false”);

}

if (boolVar1 || boolVar2)

{

System.Console.WriteLine(“Вернуло true логическоеИЛИдля true и false”);

}

System.Console.WriteLine();

System.Console.ReadLine();

2.7 Комментарии

До этого момента наши тестовые программки были просты. Теперь они начнут усложняться. Настоящие программы бывают сложными. Очень сложным. На самом деле самая трудная часть работы программиста – это не написать новую программу, а понять уже написанную, найти в ней ошибки, исправить их или что-то поменять, не сделав новых. Понимание программы очень облегчают комментарии – заметки прямо в коде, которые игнорирует компьютер. Они только для высшего разума – людей. Кроме того их часто используют для того, чтобы временно отключить часть программы не удаляя уже написанного кода – так и говорят, закомментировать.

bool boolVar1 = true;

/*

многострочный комментарий

сейчас используется редко из-за встроенных функций VisualStudio

*/

bool boolVar2 = true;

//однострочный комментарий

На практике многострочные комментарии в VisualStudio чаще всего ставятся с использованием специальной функции – у нее есть и кнопка и собственная горячая клавиша

2.8 Циклы

Наша программа уже может что-то решать… но как-то плохо она это делает, каждый чих надо прописывать вручную. А ведь настоящие роботы славятся своей способностью повторять любые действия неограниченное количество раз не зная усталости и сомнений! Делают они это с помощью циклов – специальных конструкций для программирования повторяющихся действий.

Самый простой цикл просто заставляет компьютер повторять какое-то действие, пока не выполнится какое-то логическое условие. В C# такой цикл называется while.

//считаем до семи

intcounter = 1;

while (counter <= 7)

{

System.Console.WriteLine(“Значениесчетчика: ” + counter);

counter++;

}

System.Console.ReadLine

Обратите внимание: если условие не выполнится никогда, компьютер будет выполнять заданное действие вечно – это называется зацикливанием.

Можете проверить это утверждение закомментировав строку counter++; – программа будет работать бесконечно, так как counter никогда не будет равен 7. Придется прекратить ее работу вручную, закрыв окно.

Делать что-то заданное количество раз приходится так часто, что для этого случая придумали специальный цикл, ведь лень – это двигатель прогресса. Я имею в виду цикл for.

С его помощью даже самый простой цикл из предыдущего примера станет еще проще.

//считаем до семи

for (int counter = 1; counter <= 7; counter++)

{

System.Console.WriteLine(“Значениесчетчика: ” + counter);

}

System.Console.ReadLine();

В знаменитой статье “Почему программисты не умеют программировать” автор приводит следующие данные – большинство выпускников программистских вузов не могут написать очень простую программу – которая выведет на экран числа от 1 до 100, вместо кратных 3 выведет Fizz, вместо кратных 5 выведет Buzz, вместо кратных и трем и пяти FizzBuzz (это в Америке такая обучающая игра для детей). На самом деле единственная сложность в такой задаче – вспомнить школьное определение кратности. Число кратно 3 если остаток от целочисленного (без учета дробной части) деления этого числа на 3 равен нулю. Осталось выяснить, как вычислить остаток от целочисленного деления. Это делает оператор %.

В итоге получаем совсем простую программу, то ли в Америке так плохо учат, то ли автор статьи преувеличивает, то ли большинству программистов никогда не понадобилось знание того, что такое остаток от целочисленного деления.

for (interfacecounter = 1; counter<= 100; counter++)

{

intreminder3 = counter % 3;

intreminder5 = counter % 5;

if (reminder == 0 && reminder5 == 0)

{

System.Console.WriteLine(“FizzBuzz”);

}

elseif (reminder3 == 0)

{

System.Console.WriteLine(“Fizz”);

}

elseif (reminder5 == 0)

{

System.Console.WriteLine(“Buzz”);

}

else

{

System.Console.WriteLine(counter);

}

}

System.Console.ReadLine();

Опытный программист может заметить, что одно из условий if лишнее и код можно сделать более коротким с использованием простого трюка – если число делится и на 3 и на 5, то можно просто выводить сначала Fizz потом Buzz, автоматически склеивая их в одну строку и не проверяя отдельно на предмет кратности и 3 и 5. Так как все в этом мире имеет свою цену, то более короткий код также будет менее понятным. В данном примере различие невелико, но в промышленном программировании со сложными и большими программами в большинстве случаев важна именно понятность кода.

for (int counter = 1; counter <= 100; counter++)

{

int reminder3 = counter % 3;

int reminder5 = counter % 5;

string result = “”;

if (reminder3 == 0)

{

result += “Fizz”;

}

if (reminder5 == 0)

{

result += “Buzz”;

}

if (reminder3 != 0 && reminder5 != 0)

{

result = counter.ToString();

}

System.Console.WriteLine(result);

}

System.Console.ReadLine();

Рис.4. Результаты в окне.

2.9 Описание работы программы

На этом скриншоте показано главное окно программы, это окно будут видеть студенты при написании диктанта:

Рис.5. Главное окно программы

Для начала студент должен нажать кнопку авторизации:

Рис.6. Кнопка авторизации.

После того, как нажали кнопку авторизации, появляется окно, где студенту необходимо ввести свой логин и пароль, который даст ему преподаватель (все логины и пароли хранятся у преподавателя):

Рис.7. Окно авторизации.

Если студент ошибся при вводе своего логина или пароля, то выйдет окно с ошибкой:

Рис.8. Окно с ошибкой входа.

При входе студента, открывается окно, в котором ему нужно будет выбрать текст для написания диктанта:

Рис.9. Выбор текста.

После всех проделанных выше пунктов, студент может приступить к написанию диктанта:

Рис.10. Начало диктанта.

Студент может завершить диктант досрочно и программа рассчитает количество ошибок и выставит оценку, также студент может дождаться окончания таймера, в этом случае диктант закончится автоматически, и так же выведет результат. Если студент совершил 3 ошибки или менее, то его оценка будет пятеркой.

Рис.11. Результат с оценкой “5”, досрочное завершение диктанта.

Рис.12. Результат с оценкой “5”, завершение диктанта с окончанием таймера.

Если студент совершил от 4 до 7 ошибок, то его оценка будет 4.

Рис.13. Результат с оценкой 4.

Если студент совершил от 8 ошибок до 11, то его оценкой будет 3.

Рис.14. Результат с оценкой 3.

Если студент совершил от 12 ошибок до 14, его оценка будет 2.

Рис.15. Результат с оценкой 2

Если студент совершил от 15 ошибок и более, то его оценка будет 1!

Рис.16. Результат с оценкой 1!

У преподавателя имеется свой логин и пароль для пользования программой. Для этого ему, так же как и студентам, необходимо нажать кнопку “Авторизация”, после чего появится окно, где ему нужно будет ввести свой уникальный логин и пароль. После ввода логина и пароля, требуется нажать кнопку “Войти”.

Рис.17. Авторизация преподавателя.

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

Рис.18. Окно преподавателя после входа.

Для добавления текста, преподавателю нужно ввести текст диктанта в правое поле без ошибок и в левое поле с ошибками. Далее ему необходимо ввести название текста и нажать кнопку “Добавить”.

Рис.19. Добавление текста.

Все тексты, добавленные преподавателем, будут храниться в текстовом файле

Для того чтобы добавить студента в список программы, преподавателю следует ввести его ФИО, придумать ему логин и пароль, после чего нажать кнопку “Добавить”.

Рис.20. Регистрация студентов.

После того, как преподаватель зарегистрирует всех студентов, он сможет легко проверить этот список, нажав кнопку “Список студентов”, этот список будет храниться в текстовом документе, и доступен для просмотра только преподавателю.

Рис.21. Список студентов.

Заключение

Чтобы использовать язык C# на профессиональном уровне, необходимо не только хорошо представлять себе его конструкции, но и изучить бесчисленные классы библиотеки.NET. Для понимания возможностей классов необходимо представлять себе основы построения сетей и баз данных, протоколы Интернета, HTML, XML и многое другое.

Он хорошо организован, строг, большинство его конструкций логичны и удобны. Развитые средства диагностики и редактирования кода делают процесс программировании приятным и эффективным. Мощная библиотека классов платформы.NET берет на себя массу рутинных операций, что дает возможность решать более сложные задачи, используя готовые “строительные блоки”. Все это позволяет расценивать С# как перспективную замену языков Паскаль, BASIC и C++ при обучении программированию.

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

Список используемой литературы

1. Биллиг В.А. Основы программирования на C#. – М.: Изд-во “Интернет-университет информационных технологий – ИНТУИТ.ру”, 2006. – 488 с.

2. Ватсон К. С#. – М.: Лори, 2004. – 880 с.

3. Гуннерсон Э. Введение в С#. Библиотека программиста. – СПб.: Питер, 2001. – 304 с.

4. Либерти Д. Программирование на С#. – СПб.: Символ-Плюс, 2003. -688 с.

5. Майо Д. C#. Искусство программирования: Энциклопедия программиста. – Киев: ДиаСофт, 2002. – 656 с.

6. Кораблев В. Самоучитель Visual C++ .NET. -СПб.: Питер, Киев: Издательская группа BHV, 2004. – 528 с.

7. Вирт Н. Алгоритмы и структуры данных. – СПб: Невский диалект, 2001. – 352 с.

8. Голуб А.И. С и С++. Правила программирования. – М.: Бином, 1996. -272 с.

9. Программирование на С#[Электронный ресурс] -режим доступа: http://life-prog.ru/view_cat.php?cat=10

10. Разработка автоматизированной обучающей системы [Электронный ресурс] – режим доступа: http://moluch.ru/archive/86/16151/

11. MicrosoftVisualStudio [Электронный ресурс] – режим доступа: https://ru.wikipedia.org/wiki/Microsoft_Visual_Studio

Поделиться статьёй
Поделиться в telegram
Поделиться в whatsapp
Поделиться в vk
Поделиться в facebook
Поделиться в twitter
Леонид Федотов
Леонид Федотов
Окончил НИУ ВШЭ факультет компьютерных наук. Сам являюсь кандидатом наук. По специальности работаю 13 лет, за это время создал 8 научных статей и 2 диссертации. В компании подрабатываю в свободное от работы время уже более 5 лет. Нравится помогать школьникам и студентам в решении контрольных работ и написании курсовых проектов. Люблю свою профессию за то, что это направление с каждым годом становится все более востребованным и актуальным.

Ещё статьи

Нет времени делать работу? Закажите!
Вид работы
Тема
Email

Отправляя форму, вы соглашаетесь с политикой конфиденциальности и обработкой ваших персональных данных.