Разработка обучающей программы по русскому языку

  • Вид работы:
    Дипломная (ВКР)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    5,2 Мб
  • Опубликовано:
    2014-12-09
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Разработка обучающей программы по русскому языку

Введение

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

Русский язык относится к восточной группе славянских языков, принадлежащих индоевропейской семье языков. Он является официальным языком России, Беларуси, Казахстана и Кыргызстана, а также региональным в некоторых регионах Украины. В том числе является восьмым языком в мире по численности владеющих им как родным и пятым языком в мире по общей численности говорящих. Это национальный язык русского народа, основной язык международного общения в центральной Евразии, в Восточной Европе, в странах бывшего Советского Союза, один из рабочих языков ООН. Он является наиболее распространённым славянским языком и самым распространённым языком в Европе - географически и по числу носителей языка как родного. Занимает четвёртое место среди самых переводимых языков, а также - седьмое место среди языков, на которые переводится большинство книг. В 2013 году русский язык вышел на второе место среди самых популярных языков Интернета.

Русский язык является одним из шести языков Организации Объединенных Наций (ООН), напомнил Президент РК. «На каком языке я выступал бы с трибуны ООН, если бы не русский язык? Нельзя терять богатство, которое ты имеешь. А чем больше человек языков знает, тем культурнее он становится», - добавил Н. Назарбаев.

Он подчеркнул, что «русский язык - это великий язык, язык великих писателей».

Изучение любых лингвистических наук - это долгий и упорный труд.

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

Многие желающие изучать лингвистические науки по той или иной причине не могут посещать учебные заведения. Для этого существуют дистанционное обучение. Но многие люди занимаются самообучением, прибегая к различным книгам, статьям и обучающим программам. Такая программа как, например «Русский для всех. 1000 заданий» достойный пример приложений для изучения русского языка. Курс ориентирован на формирование базового уровня владения русским языком в соответствии с концепцией владения иностранным языком, разработанной комиссией по языкам Совета Европы.

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

1. Исследовательская часть

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

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

учебный материал излагается из определенной области знаний;

учебный материал освещается на современном уровне достижений науки, техники и технологии;

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

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

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

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

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

при создании электронного учебника и распространении выпадают стадии типографской работы. Электронные учебники являются по своей структуре открытыми системами. Их можно дополнять, корректировать, модифицировать, в процессе эксплуатации;

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

Необходимо отметить, что в любом учебнике (электронном или печатном) выделяются две основные части: содержательная и процессуальная. В электронном учебнике к ним добавляются еще две части: управляющая и диагностическая. Содержательная часть учебника включает следующие компоненты: познавательный, демонстрационный; процессуальная часть включает компоненты: моделирующий, контрольный, закрепляющий. Познавательный компонент направлен на передачу знаний обучаемому. Это, как правило, текстовая информация. Демонстрационный компонент поддерживает и раскрывает содержательный; моделирующий компонент позволяет применять знания к решению практических задач, моделировать изучаемые явления, процессы. Контрольной-закрепляющий компонент определяет степень усвоения учащимися изучаемого материала. Управляющая часть представляет собой программную оболочку электронного учебника, способную обеспечить взаимосвязь между его частями и компонентами. Диагностическая часть хранить статическую информацию о работе с конкретными программами.

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

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

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

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

знать общие законы, владеть культурой мышления;

уметь организовать свой труд, владеть компьютерными техниками, применяемыми в сфере его профессиональной деятельности;

иметь целостное представление о технологических процессах в производствах, а также явлениях происходящих в природе;

уметь приобретать новые знания, используя современные информационные технологии;

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

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

автоматизация таких видов учебной деятельности как поиск, сбор, хранение, анализ, обработка и передача соответствующей информации;

автоматизация обработки результатов лабораторного эксперимента;

автоматизация расчетов и других информационных обработок в процессе выполнения практических заданий и дипломных работ;

оперативное взаимодействие между участниками учебного процесса;

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

подготовка к будущей профессиональной деятельности с помощью тренинга в предметной виртуальной среде;

автоматизация контроля результатов учебной деятельности.

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

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

доступное изложение учебного материала повышенной сложности изучаемых объектов и явлений;

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

специальных дисциплинах, высокой степени их логической взаимосвязи;

сравнительно большой объем разнообразных контролируемых тренировочных действий.

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

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

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

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

.2 Обзор используемых элементов языка и среды программирования

На данный момент, значительная часть программного обеспечения реализуется методами объектно-ориентированного программирования. Сейчас эта область программирования очень востребована. Поэтому освоение этого стиля программирования является очень актуальным.

Для изучения данного стиля программирования был выбран язык Delphi 7, с помощью которого изучена методика объектно-ориентированного проектирования программ по формализации и решению задачи, технологическими приемами разработки объектно-ориентированных программ. Причина выбора данного языка программирования также заключается в его графических средствах.- это средства разработки в программировании, которые имеют место быть в рамках приложений Microsoft Windows. Delphi представляет собой актуальную и легкую в использовании программу, которая необходима для генерации автономных программ графического интерфейса или 32-битовых консольных приложений -- программ, которые существуют вне рамок GUI, вместо этого, в соответствии с так называемым «DOS box».
Delphi является первым языком программирования, который обеспечивает уничтожение барьера между приложениями комплексного и упрощенного характера в использовании и низкоуровневыми битовыми программными средствами.

Строковые переменные. В Delphi строки обеспечивает тип string, который представляет строку с максимальной длиной около 2х символов. Символы строки кодируются в коде ANSI. Так как строки фактически являются массивами символов, то для обращения к отдельному символу строки можно указать название строковой переменной и номер (позицию) этого символа в квадратных скобках, например, strName [i].

Массивы в сравниваемых языках схожи. Элементами массива могут

быть данные различных типов, включая структурированные. Каждый элемент массива однозначно определяется именем массива и индексом (номером этого элемента в массиве) или индексами, если массив многомерный. Для обращения к отдельному элементу массива указываются имя этого массива и номер (номера) элемента, заключенный в квадратные скобки. В Delphi, описание массива производится в разделе описания типов данных.

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

<Переменная>: SetOf<Тип>;

Файлом называют способ хранения информации на физическом устройстве. Работа с файлами в Delphi состоит из трех шагов.

Файл открывается. Это означает, что программа "захватывает" заданный по имени файл, сообщает Windows, что далее она будет с ним работать. Данный шаг нужен, чтобы не возникало конфликтов, когда несколько программ одновременно хотят записывать информацию в один и тот же файл. Правда, считывать данные из файла, очевидно, допустимо одновременно множеством программ, поэтому в операции открытия файла обычно уточняется, что файл открывается "на чтение" (считывание информации, которая не меняется) либо "на запись" (данные в файле модифицируются).

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

Ведется работа с файлом. Из него данные либо считываются, либо в него записываются. Файл закрывается.

В Delphi описание классов разделено на две части -  интерфейсную («заголовочную») и описательную. В интерфейсной части располагается заголовок класса, в котором указываются название класса, идентифицирующее его в программе, а также описания свойств и заголовков методов.

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

Туре

<Имя класса> = class {Заголовок описания}

<Имя свойства 1>: <Тип свойства 1>; {Описание свойства 1}

<Имя свойства М>: <Тип свойства N>; {Описание свойства N}

<Заголовок метода 1>; {Описание метода 1}

<Заголовок метода М>; {Описание метода М};

Описательная часть класса находится в разделе описания локальных подпрограмм. Методы, заявленные в интерфейсной части реализуются по обычным правилам описания процедур и функций. Для связи подпрограмм с классом, методами которого они являются, название класса указывается перед именем самой подпрограммы:<Имя класса>.<Имя метода>(<Список параметров>);

или для методов-функций:<Имя класса>.<Имя метода>(<Список параметров>):

<Тип значения>;

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

Атрибуты видимости.доступ открыт самому классу (т.е. функциям-членам данного класса);- доступ открыт классам, производным от данного;доступ открыт всем, кто видит определение данного класса;- Поля, свойства и методы, описанные в данном разделе, называются опубликованными. Их область видимости эквивалентна области видимости общедоступных описаний. Отличие состоит в том, что информация о них, за исключением ряда типов, например real, на этапе проектирования программы помещается в инспектор объектов. Описания, расположенные сразу после заголовка класса, при включенной директиве компилятора {$M+}, по умолчанию принимаются опубликованными.

Указатель (пойнтер, англ. pointer) - переменная, диапазон значений которой состоит из адресов ячеек памяти и специального значения - нулевого адреса. Значение нулевого адреса не является реальным адресом и используется только для обозначения того, что указатель в данный момент не может использоваться для обращения ни к какой ячейке памяти.

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

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

В Delphi существует 2 вида указателей: типизированные и не типизированные. Не типизированный указатель представляет собой переменную, в которой хранится адрес некоторой области памяти некоторого размера, и предназначен для хранения произвольных данных. Типизированные ссылки указывают на место в памяти, где хранятся данные определенного типа.

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

Для описания типизированной ссылки не предусмотрен какой-либо специальный тип данных, в отличие от не типизированных указателей, имеющих тип Pointer. Поскольку ссылочная переменная такого рода всегда указывает на данные конкретного типа, то ее описание и строится на основе этого типа. Для указания на ссылочную природу переменных используется оператор «^», и описание выглядит следующим образом:<Переменная>:^<Название типа>;

Или в разделе описания типов данных:

Туре <Новый тип данных> =^<Тип данных>;

После описания переменной-указателя под нее выделяется память только для хранения адреса, а под сами данные, на которые переменная указывает, память не выделяется. Для инициализации переменной используется процедура New, отличием которой от аналогичной процедуры GetMem, используемой для работы с не типизированными указателями, является отсутствие второго параметра, определяющего размер выделяемой памяти. Это связано с тем, что типизированная ссылка указывает на данные известного типа, соответственно, размер этих данных также известен компилятору.

Среда языка программирования Delphi. Пользовательский интерфейс среды Delphi.

Для запуска среды Delphi выполните следующую команду:

Пуск → Все программы → BorlandDelphi 7 → Delphi 7

После загрузки интерфейс Delphi 7 имеет вид, показанный на рисунке 1.1, и имеет 5 основных окон:

главное окно (Delphi 7 - Project 1);

окно редактора свойств объектов (ObjectInspector);

окно формы (Form 1);

окно редактора кода (Unit1.pas);

окно дерева объектов (Object Tree View).

Окно редактора кода почти полностью закрыто окном стартовой формы. Для переключения между окном формы и окном редактора кода нажмите клавишу F12.

Рисунок 1.1 - Окно редактора

Главное окно находится в верхней части экрана. В нём расположены:

строка заголовка;

строка меню;

панель инструментов;

панель палитры компонентов.

Вид главного окна представлен на рисунке 1.2.

Рисунок 1.2 - Вид главного окна

Inspector - окно редактора свойств объектов или инспектор объектов, как видно на рисунке 1.3.

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

предназначено окно редактора свойств объектов (или, что-то же самое, Инспектора объектов). Это окно содержит две вкладки - Properties (Свойства) и Events (События). Вкладка properties служит для установки нужных свойств компонента, вкладка Events позволяет определить реакцию компонента на то или иное событие. Совокупность cвойств отображает видимую сторону компонента: положение относительно левого верхнего угла рабочей области формы, его размеры и цвет, шрифт и текст надписи на нем и т. п.; совокупность событий - его поведенческую сторону: будет ли компонент реагировать на щелчок мыши или на нажатие клавиш, как он будет вести себя в момент появления на экране или в момент изменения размеров окна и т. п.

Рисунок 1.3 - Окно редактора свойств

Tree View - окно дерева объектов (рисунок 1.4) предназначено для наглядного отображения связей между отдельными компонентами, размещенными на активной форме или в активном модуле данных. Щелчок по любому компоненту в этом окне активизирует соответствующий компонент в окне формы и отображает свойства этого компонента в окне Инспектора объектов.

Рисунок 1.4 - Окно дерева объектов

Окно кода программы представлено на рисунке 1.5.

Окно редактора кода, можно увидеть, отодвинув в сторону окно формы либо, как уже говорилось выше, нажать клавишу F12. В него следует набирать текст программы. В начале работы над новым проектом это окно редактора кода содержит сформированный Delphi шаблон программы.

Рисунок 1.5 - Окно кода программы

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

Свойства формы определяют ее внешний вид: размер, положение на экране, текст заголовка, вид рамки.

В ходе работы над новым проектом, так в Delphi называется разрабатываемое приложение, программист изменяет значения свойств формы Form1 и добавляет к форме необходимые компоненты (поля ввода и вывода текста, командные кнопки), при этом он в любой момент времени контролирует содержание окна создаваемой программы и может внести в него необходимые изменения.

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

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

Окно формы - это окно Windows. Всё рабочее пространство окна - это рабочая область, размеченная сеткой для удобства расположения на ней компонентов из Палитры компонентов. Сама форма также является компонентом. Новая форма, которая создаётся при загрузке Delphi или при создании нового проекта, является главной формой приложения.

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

Для добавления какого-либо компонента в Окно формы надо выбрать его пиктограмму на панели компонентов, щёлкнуть на нём левой кнопкой мыши, а затем возможны два варианта действий:

если надо точно позиционировать компонент, надо подвести курсор мыши в нужное место Окна формы и щёлкнуть левой кнопкой мыши один раз; левый верхний угол компонента совпадёт при этом с положением конца стрелки курсора мыши;

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

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

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

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

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

Имена на ярлычках выглядят, например, так:, Button и т.д. Однако в Delphi все имена классов в действительности начинаются с символа «Т», например: TMainMenu, TButton.

Палитра имеет ряд страниц, на которых скомпонованы пиктограммы всех компонентов, предопределенных в Delphi.

Некоторые страницы из палитры компонентов:

Таблица 1.1 - Палитры компонентов

System

Системная, содержащая такие компоненты, как таймеры, плееры и ряд других

BDE

Компоненты доступа к данным баз данных

DataAccess

Компоненты связи с данными

DataControls

Компоненты отображения данных баз данных

Internet

Компоненты для приложений, работающих с Интернет

Rave Reports

Компоненты для быстрой подготовки отчётов с данными баз данных

Win32

32-битные компоненты в стиле Windows 95/98 и NT

Наименование страницы

Назначение компонентов страницы

Standard

Стандартная, содержащая наиболее часто используемые компоненты

Additional

Дополнительная.


Все компоненты системы Delphi можно разделить на:

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

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

Кнопки являются элементами управления и используются, как правило, в окнах диалога. Наиболее часто используемые кнопки - Button (стандартная кнопка) и BitBtn (графическая кнопка).

Кнопку можно поместить на форму из палитры компонентов. Многие кнопки имеют одинаковые свойства.

Текст на поверхности кнопки определяется свойством Caption. Если в составе надписи есть символ амперсанта «&», то он не отображается, а следующий за ним символ будет подчёркнутым. Причём, нажатие комбинации клавиш Alt+<подчеркнутый символ> вызывает «нажатие» кнопки.

Компонент Button расположен на странице Standard.

Таблица 1.2 -Основные свойства компонента Button

Свойство

Назначение

Cancel

Возможность кнопки реагировать на нажатие клавиши Esc

Caption

Текст на поверхности кнопки

Constraints

Ограничения допустимых изменений размеров компонента

Enabled

Доступность компонента (Boolean)

Font

Шрифт для представления текста

Height

Высота компонента

Hint

Текст оперативной подсказки

Left

Координата X - левого верхнего угла на контейнере

Top

Координата Y - левого верхнего угла компонента на контейнере

Свойство

Назначение

Name

Имя компонента

PopupMenu

Имя всплывающего меню для компонента

ShowHint

Показывать ли оперативную подсказку (Boolean)

Visible

Видимость компонента (Boolean)

Width

Ширина компонента


Возможна реакция кнопки на события:

отмыши: OnClick, OnMouseDown, OnMouseMove, OnMouseUp;

отклавиатуры: Enter, Esc, KeyDown, KeyPress, KeyUp двойной щелчок на кнопке не предусмотрен;

отперетаскиваниякомпонента: OnDragDrop, OnDragOver, OnEndDrag.

Компонент BitBtn расположен на странице Additional.

Основные свойства компонента BitBtn такие же, как и у компонента Button. BitBtn отличается от Button тем, что на поверхности такой кнопки можно разместить вместе с текстом изображение.

Изображение на этой кнопке задается свойством Glyph. При нажатии кнопки с многоточием в строке свойства Glyph в Инспекторе Объектов вызывается диалоговое окно PictureEditor. Чтобы загрузить картинку, нужно нажать кнопку Load, тогда откроется диалоговое окно для открытия файла рисунка, и можно выбрать файл с расширением .bmp.

Файл изображения для кнопки может содержать до четырёх изображений пиктограмм размера 16  16. В большинстве случаев используют 2 пиктограммы. Кнопка BitBtn реагирует на те же события, что и Button.

Метка Label

Компонент Label расположен на странице Standard.

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

Таблица 1.3 - Основные свойства компонента Label

Свойство

Назначение

 

Caption

Текст надписи

 

Color

Цвет фона метки

Font

Характеристики шрифта выводимого текста

WordWrap

Отображение текста на метке в две или более строк (Boolean)

AutoSize

Определение размера метки размером шрифта (Boolean)


Компонент Edit расположен на странице Standard.Компонент Edit позволяет в процессе выполнения приложения вводить с клавиатуры и редактировать введённый или отображённый текст. При этом поддерживаются операции: перемещение курсора по строке с использованием клавиш управления курсором, удаление символов с помощью клавиш BackSpace и Delete. Однострочный редактор не реагирует на нажатие клавиш Enter и Esc.

Такие свойства компонента Edit как Constraints, Enabled, Font, , Left, Name, PopupMenu, ShowHint, Visible, Width аналогичны одноимённым свойствам компонента Button.

Таблица 1.4 - Основные свойства, специфичные для компонента Edit

Свойство

Назначение

AutoSize

При true высота поля автоматически подстраивается под текст

BorderStyle

Стиль бордюра

Color

Цвет поля

PasswordChar

Символы для вывода в окно вместо текста пароля

ReadOnly

Текст редактора - только для чтения

Text

Отображаемый или вводимый текст


Компонент RadioButton расположен на странице Standard.Радио-кнопки, сгруппированные вместе, служат для демонстрации вариантов выбора, доступных пользователю. В группе радио-кнопок только одна кнопка может быть выбрана. При выборе одной из кнопок все остальные кнопки одной группы становятся невыбранными.

Свойство Checked определяет, выбрана ли данная кнопка пользователем, или нет. Изменение этого свойства с false на true производится при выборе радио-кнопки щелчком на невыбранной радио-кнопке; при этом генерируется событие OnClick.

Радио-кнопка может реагировать на все те же события, что и Button.У радио-кнопки есть свойство Caption, содержащее связанный с нею текст.

При решении поставленной задачи оптимально использовать для представления информационных материалов язык Delphi, который является языком высокого уровня и позволяет быстро и эффективно создавать приложения.Для реализации "такой-то программы" была выбрана система программирования Delphi версии 7 фирмы Enterprise (Borland), так как она предоставляет наиболее широкие возможности для программирования приложений ОС Windows.- это продукт Borland International для быстрого создания приложений. Высокопроизводительный инструмент визуального построения приложений включает в себя настоящий компилятор кода и предоставляет средства визуального программирования, несколько похожие на те, что можно обнаружить в MicrosoftVisualBasic или в других инструментах визуального проектирования. В основе Delphi лежит язык ObjectPascal, который является расширением объектно-ориентированного языка Pascal. В Delphi также входят локальный SQL-сервер, генераторы отчетов, библиотеки визуальных компонентов, и прочее хозяйство, необходимое для того, чтобы чувствовать себя совершенно уверенным при профессиональной разработке информационных систем или просто программ для Windows-среды.

Прежде всего Delphi предназначен для профессиональныхразработчиков, желающих очень быстро разрабатывать приложения в архитектуре клиент-сервер. Delphi производит небольшие по размерам (до 15-30 Кбайт) высокоэффективные исполняемые модули (.exe и .dll), поэтому в Delphi должны быть прежде всего заинтересованы те, кто разрабатывает продукты на продажу. С другой стороны небольшие по размерам и быстро исполняемые модули означают, что требования к клиентским рабочим местам существенно снижаются - это имеет немаловажное значение и для конечных пользователей.

Преимущества Delphi по сравнению с аналогичными программными продуктами:

быстрота разработки приложения;

высокая производительность разработанного приложения;

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

наращиваемость за счет встраивания новых компонент и инструментов в среду Delphi;

возможность разработки новых компонент и инструментов собственными средствами Delphi (существующие компоненты и инструменты доступны в исходных кодах);

удачная проработка иерархии объектов.

Система программирования Delphi рассчитана на программирование различных приложений и предоставляет большое количество компонентов для этого.

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

2. Технологическая часть

.1 Постановка задачи

Общей постановкой задачи данного дипломного проектирования является разработка обучающей программы по русскому языку. Содержание обучающей программы разделено на 30 уроков. В рамках настоящего проекта в задачу разработчика входит программная реализация 12 уроков и их интегрирование с уже выполненными ранее уроками.

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

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

применимость на различных платформах;

свободную навигацию по урокам;

просмотр теоретического материала;

автоматическую проверку заданий и подсчет баллов;

автоматическое формирование отчета по выполнению задания и его экспорт в Microsoft Word для последующей печати.

Кроме того, следует организовать простой и привлекательный интерфейс.

.2 Выбор архитектуры приложения

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

Различают несколько видов архитектур:

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

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

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

программы;

пакеты программ;

программные комплексы;

программные системы.

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

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

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

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

Приложение «Обучающая программа по русскому языку» - будет являться однопользовательским приложением.

2.3 Выбор и обоснование языка программирования

Платформы .NET и Mono имеют большое будущее, поэтому фирма Borland адаптировала для них язык и среду программирования Delphi. В итоге, разработчики получили уникальную возможность - применять один и тот же язык Delphi для создания профессиональных программ для любых операционных систем и платформ: Windows, Linux, .NET, Mono. Этим язык Delphi выгодно отличается от модного ныне языка C#, который применяется лишь для программирования на платформах .NET и Mono.

Система программирования Delphi версии 7 фирмы Enterprise (Borland) предоставляет наиболее широкие возможности для программирования приложений ОС Windows. Delphi - это продукт Borland International для быстрого создания приложений. Процесс создания интерфейса будущей программы напоминает забаву с игровым компьютерным конструктором. Поэтому RAD-среды еще называют визуальными средами разработки: какими мы видим рабочие и диалоговые окна программы при проектировании, такими они и будут, когда программа заработает.

Высокопроизводительный инструмент визуального построения приложений включает в себя настоящий компилятор кода и предоставляет средства визуального программирования, несколько похожие на те, что можно обнаружить в Microsoft Visual Basic (она не является RAD-системой) или в других инструментах визуального проектирования. В основе Delphi лежит язык Object Pascal, который является расширением объектно-ориентированного языка Pascal. В Delphi также входят локальный SQL-сервер, генераторы отчетов, библиотеки визуальных компонентов, и прочее, необходимое для того, чтобы чувствовать себя совершенно уверенным при профессиональной разработке информационных систем или просто программ для Windows-среды.

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

для конечных пользователей.

Преимущества Delphi по сравнению с аналогичными программными продуктами:

быстрота разработки приложения (RAD);

высокая производительность разработанного приложения;

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

наращиваемость за счет встраивания новых компонент и инструментов в среду Delphi;

возможность разработки новых компонентов и инструментов собственными средствами Delphi (существующие компоненты и инструменты доступны в исходных кодах);

удачная проработка иерархии объектов.

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

Основным конкурентом Borland Delphi 7 является её родной брат - RAD-среда Borland C++ Builder, технология работы с которой полностью совпадает с технологией, принятой в Delphi 7. Только в Delphi программный код пишется на языке программирования Паскаль, точнее на его объектно-ориентированной версии ObjectPascal, а не на языке C++.

Для того чтобы обосновать, почему выбор остановился на Borland Delphi 7, достаточно просто перечислить некоторые недостатки языка С++ по сравнению с ObjectPascal:

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

Значительно большая, по сравнению с Object Pascal, сложность языка, даже, несмотря на компактность кода, возникают сложности в его восприятии.

Одна особенность, на мой взгляд, языка С++ очень портит этот язык - он чувствителен к регистру символов, т.е. переменная A и переменная a - это разные переменные.

В Delphi классы (объекты) могут располагаться только в динамической памяти, а в C++ в любой памяти (статическая, стек, динамическая). Это добавляет безопасности программирования в Delphi.

.4 Структурные и функциональные схемы

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

Рисунок 2.1 - Структурная схема

Функциональная схема - схема функциональных элементов объекта и функциональных связей между ними. Их использование и построение позволяет наглядно отразить устройство функциональных (рабочих) изменений, описание которых оперирует любыми (в том числе и несущественными) микросхемами.

Рисунок 2.2 - Функциональная схема

2.5 Проектирование интерфейса пользователя

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

Интерфейс пользователя - разновидность интерфейсов <#"784374.files/image008.gif">

Рисунок 2.3 - Главное окно программы

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

Рисунок 2.4 - Теоретический материал

Вкладка «Теоретический материал» представляет собой окно с текстом.

Рисунок 2.5 - Окно уроков

Окно уроков имеют редактируемые поля, поля с выпадающим списком, перетаскиваемые панели и переключатели. Также кнопку «Проверить» и в большинстве упражнений «Слова для справок».

. Специальная часть

.1 Описание разрабатываемых процедур и функций

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

Функции служат, прежде всего, для определения алгоритма вычисления некоторого значения (простого типа <#"784374.files/image011.gif">(5.2)

где Тр - трудоемкость при ручной обработке;

Тавт - трудоемкость при автоматизированной обработке.

Снижение трудоемкости при использовании данной программы:


Увеличение производительности труда

(5.3)


Результат вычислений показывает, что производительность труда увеличилась в пять раз, что свидетельствует о технической эффективности использования системы.

Затраты на создание программного продукта складываются из расходов по оплате труда разработчика программы и расходов по оплате машинного времени при отладке программы, общие затраты:

Зспп = Ззпр + Змв + Зобщ

((5.4)


где Зспп - затраты на создание программного продукта;

Ззпр - затраты на оплату труда разработчика программы;

Змв - затраты на оплату машинного времени;

Зобщ - общие затраты.

Расходы на оплату труда разработчика программы определяются путем умножения трудоёмкости создания программного продукта на среднюю часовую оплату программиста (с учётом коэффициента отчислений на социальные нужды):

Ззпр = t * Тчас

(5.5)


Трудоёмкость разработки программного продукта можно определить следующим образом:

t=to+ta+tб+tп+tд+tot

(5.6)


где to - затраты труда на подготовку описания задачи;а - затраты труда на разработку алгоритма решения, задачи;б - затраты труда на разработку блок-схемы алгоритма решения задачи;п - затраты труда на составление программы по готовой блок-схеме;д - затраты труда на подготовку документации задачи;от - затраты труда на отладку программы на ПК при комплексной отладке задачи.

Составляющие затрат, в свою очередь можно вычислить через условное число операторов Q. В нашем случае число операторов в отлаженной программе Q=3500.

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

to = Q*В/(75...85*К)(5.7)


где В - коэффициент увеличения затрат труда вследствие недостаточного описания задачи, уточнений и некоторой не доработки, В=1,2... 5;

К- коэффициент квалификации разработчика, для работающих до 2 лет К = 0,8.

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

= 3500 * 1/(80 * 0,8) = 54,7 (чел-час)

Затраты труда на разработку алгоритма решения задачи:

tа =Q/(60...75 * К)

(5.8)

tа = 3500/(65*0,8) = 67,31 (чел-час)


tб = Q/(60...75 * К)

(5.9)

tб = 3500/(66*0,8) = 66,29 (чел-час)

Затраты труда на составление программы по готовой блок-схеме вычислим по формуле:

tп =Q/(60...75 * К)(5.9)


tп = 3500/(68*0,8) = 64,34 (чел-час)

Затраты труда на отладку программы на ЭВМ при комплексной отладке задачи:

tот=1.5*tАот

(5.10)

Аот - затраты труда на отладку программы на ПК при автономной отладке одной задачи.

tАот=Q/(40...50*К)

(5.11)

tАот = 3500/(46*0,8) = 95,1 (чел-час)т=1,5* 95,1 = 142,65 (чел-час)

Затраты труда на подготовку документации по задаче определяются:

tд=tдр+tдо

(5.11)


где tдр - затраты труда на подготовку материалов в рукописи;до - затраты на редактирование, печать и оформление документации.

tдр=Q/(150...200*К)(5.12)


tдр = 3500/(155*0,8) = 28,2 (чел-час)

tдо=0,75*tдр(5.13)


tдо = 0,75*28,2 = 21,15 (чел-час)д = 21,15 + 28,2 = 49,35 (чел-час)

Итак общую трудоёмкость программного продукта можем рассчитать:

= 54,7 + 67,31 + 66,29 + 64,34 + 49,35 + 142,65 = 444,71 (чел-час)

Средняя зарплата программиста в современных рыночных условиях может варьироваться в широком диапазоне. Для расчёта возьмём среднюю часовую оплату труда, которая составляет Тчас = 325 тенге/час (принимаем в интервале от 325 тенге/час), что составляет 67600 тенге/мес при 8-ми часовом рабочем дне и 6-ти дневной рабочей неделе (т.е 26 рабочих дня). Эта цифра близка к реальной заработной плате, программиста на предприятии, где проводилась работа.

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

Социальный налог рассчитывается с учетом фиксированной ставки социального налога в 11% .

ФЗПгод=Зпл*12(5.14)



ФЗПгод= 67600*12 = 811200 тенге

Используя таблицу ставок социального налога, определяем сумму годового социального налога: ставка налога составляет 11%. Определяем годовой социальный налог:

Соц налог=ФЗПгод*Н(5.15)


Соц н=811200*11% = 89232

Итого отчисления от оплаты труда составляют 11 %. Отсюда затраты на оплату труда программиста составляют (по формуле 4):

Ззпр = 444,71 (общ.трудоемкость)*325(зп в час)*1,11=160429,13 тенге

Затраты на оплату машинного времени при отладке программы определяются путём умножения фактического времени отладки программы на цену машино-часа арендного времени:

Змв = Счас * tпк(5.15)



где Счас - цена машино-часа арендного времени, тенге/час;пк - фактическое время отладки программы на ЭВМ.

Фактическое время отладки вычислим по формуле:

tпк =tп + tдо +tот(5.16)


tпк = 64,34 + 21,15 + 142,65 = 228,14 часа.

Цену машино-часа найдём по формуле:

Счас = 3пк/Тпк(5.17)



где Зпк - полные затраты на эксплуатацию ПК в течении года;

Тпк - действительный годовой фонд времени ПК, час/год.

Расчёт годового фонда времени работы ПК Inteli7. Общее количество дней в году Тгод= 365 дней. Число праздничных и выходных дней Тпр= 104+6=110 дней. Время простоя в профилактических работах определяется как еженедельная профилактика по 4 часа (52 недели), Тпроф=52*4=208ч.Итого годовой фонд рабочего времени ПК составляет:

 Тпк = t*(Tгод-Tпр)-Тпроф(5.18)


Тпк=8*(365-110) - 52*4 = 1832 час

Полные затраты на эксплуатацию ПК можно определить по формуле:

Зпк = (Ззп + Зам + Зэл + Звм + Зтр + Зпр)(5.19)



где Ззп - годовые издержки на заработную плату обслуживающего персонала, тенге/год;

Зам - годовые издержки на амортизацию, тенге/год;

Зэл - годовые издержки на электроэнергию, потребляемую ПК, тенге/год;

Звм - годовые издержки на вспомогательные материалы, тенге/год;

Зтр - затраты на текущий ремонт компьютера, тенге/год;

Зпр - годовые издержки на прочие и накладные расходы, тенге/год.

Сумма годовых амортизационных отчислений определяется по формуле:

Зам = Сбал * Нам(5.20)



где Сбал - балансовая стоимость компьютера, тенге/шт.;

Нам - норма амортизации в процентах;

Норму амортизации принимаем равной примерно 26%, т.е. Нам = 26 %.

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

Сбал = Срын + Зуст(5.21)


где Срын - рыночная стоимость компьютера, тенге/шт.;

Зуст - затраты на доставку и установку компьютера, тенге/шт.

Компьютер, на котором велась работа, был приобретен по цене. Срын - 70000 тенге, затраты на установку и наладку составили примерно 10 процентов от стоимости компьютера.

Сбал = 70000 + 7000 = 77000 тенге/шт.

Зам = 77000* 0,26= 20020 тенге/год

Стоимость электроэнергии, потребляемой за год, определяется по формуле:

Зэл = Рпк * Тпк * Сэл * А(5.22)



где Рпк - суммарная мощность ПК,

Сэл - стоимость 1 кВт*ч электроэнергии,

А - коэффициент интенсивного использования мощности машины.

Согласно техническому паспорту ПК Рпк = 0,22 кВт, стоимость 1 кВт*ч электроэнергии для предприятий Сэл =10 тенге, интенсивность использования машины А = 0.98.

Тогда расчётное значение затрат на электроэнергию:

Зэл = 0.22* 1832*10*0.98 = 3949,8 тенге

Затраты на текущий и профилактический ремонт принимаются равными 5-10 процентов от стоимости ПК:

Зтр = 0,09 * Сбал(5.23)


Зтр= 0,09*77000 = 6930тенге

Затраты на материалы, необходимые для обеспечения нормальной работы ПК составляют около 1-5 процент от стоимости ПК:

Звм = 0,05*Сбал(5.24)


Звм=0,05 *77000 = 3850 тенге

Прочие косвенные затраты, связанные с эксплуатацией ПК, состоят из амортизационных отчислений на здания, стоимости услуг сторонних организаций и составляют 5 процентов от стоимости ПК:

Зпр =0,04*Сбал(5.25)


Зпр=0,04*77000 = 3080 тенге

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

Ззп = Зоснзп + 3допзп + Зотчзп(5.26)



Сумма основной заработной платы определяется исходя из общей численности работающих в штате:

Зоснзп =12*3ioкл(5.27)


3ioкл - тарифная ставка i -го работника в месяц, тенге;

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

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

Зоснзп = 12*(65000 + 30000)/15 =76000 тенге

Сумма дополнительной заработной платы Кдзп составляет 20-30 процентов от основной заработной платы:

Здопзп=Зоснзп*Кдзп(5.28)


Здопзп = 0,24*76000 = 18240 тенге

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

Зотчзп=(Зоснзп+Здопзп)*Н(5.29)


Зотчзп = 0,11*(76000+18240)= 10366,4 тенге

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

Ззп = 76000 + 18240 + 10366,4 = 104606,4 тенге

Полные затраты на эксплуатацию ПК в течение года составят:

Зпк=104606,4+20020+3949,8+3850+6930+3080=142436,2 тенге

Тогда цена машино-часа арендуемого времени составит:

Счас =142436,2/1832 = 77,7 тенге

А затраты на оплату машинного времени составят:

Змв =77,7 * 228,14 = 17726,5 тенге

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

Зобщ= Зоснзп/3(5.30)


Зобщ= 76000/3=25333,3 тенге.

Тогда затраты на создание программного продукта составят:

Зспп =160429,13+17726,5+25333,3 =203488,93 тенге

.2 Расчет экономического эффекта от внедрения ПО

Для расчета показателей экономической эффективности программы необходимо определить следующие показатели:

срок окупаемости (Ток);

коэффициент экономической эффективности (Ер);

годовой экономический эффект (Э).

  Ток = Зспп/Сбал

(5.31)

Ер = Сбал/Зспп

(5.32)

Э = Сбал-Ен *3спп

(5.33)


где Ен - отраслевой нормативно экономический коэффициент месяца;

Ен = 0,36.

Автоматизированная система будет эффективна при условии, если Ер =>Ен.

Ток=203488,93/77000 = 2,6

Ер = 77000/203488,93= 0,37

Э = 77000 - 0,36*203488,93=3744 тенге

Данная АСОЭИ эффективна так как Ер больше Ен, т.е 0,37 >0,36

Срок окупаемости данного продукта составляет два года и шесть месяцев.

Расчеты затрат на разработку автоматизированного рабочего места.

Таблица 5.2 - Итоговая таблица

Затраты

Формула

Сумма.тенге

Затраты на создание Программного продукта

Зспп = Ззпспп + Змв + Зобщ,

Зспп=203488,93 тенге

Затраты на оплату трударазработчикам программы

Ззпр=t*Тчас

Ззпр =160429,13 тенге

Затраты на эксплуатацию ПК

Зпк= Ззп+Зам+Зэл+ЗвмЗтр +3пр

Зпк= 142436,2 тенге

Затраты на оплату машинного времени

Змв = Счас * tпк

Змв = 17726,5 тенге 

Срок окупаемости

Ток = Зспп/Сбал

Ток= 2,6 г

Годовой экономический эффект

Э = Сбал-Ен *3спп

Э=3744 тенге  


Из таблицы 5.2 видно, что затраты на создание программного продукта составляют 203488,93 тенге. А затраты на оплату труда разработчикам программы составляют 78,8% от общей суммы затрат на создание программного продукта. Затраты на оплату машинного времени составляют 8,7% от общей суммы затрат. Срок окупаемости программы 2 года 6 месяцев, за это время программный продукт не устареет, а годовой экономический эффект составляет 3744 тенге.

Заключение

В итоге была разработана «Обучающая программа по русскому языку», которая позволяет любым желающим поднять уровень русского языка и провести время с удовольствием. Все поставленные задачи были выполнены и программа готова к эксплуатации.

Программа имеет совместимость с Windiws 7 (x86/x64) и WindowsXP. При разработке программы использовались следующие ПОи модификации:

Delphi 2007 - интерпретатор.

AlphaControl - оболочка.

Adobe Photoshop - графический редактор.

CorelDraw - графический редактор.

Snagit - приложение для захвата экрана.

Microsoft Office - пакет офис приложений.

Notepad - блокнот.

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

Основные модули программы:

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

Грамотно подобранные цветовые тона в программе не вызывают напряжения для глаз, а графика лишь вызывает приятные ощущения и мотивацию использования приложения. Интерфейс приложения был создан при помощи набора стандартных и некоторых уникальных компонентов Alpha Skin. Вся графика была обработана в Adobe Photoshop, а также стандартными средствами интерпретатора Delphi. В качестве основного стиля был выбран шаблон в стиле дерева, что напоминает парту для учащихся или классную доску.

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

Приложение было грамматически протестировано на наличие различного рода ошибок. Проблем при разработке данной программы было более чем достаточно и основная из них - это совместимость. Программа была поделена на этапы тестирования. Каждая часть тестировалась на двух операционных системах: Microsoft Windows XP Sp3 и MicrosoftWindows 7 x86,x64.

Cписок используемых источников

1) Статьи. Полезная информация. [#"784374.files/image015.gif">

Рисунок Б.1 - Запуск и установка

За запуск приложения отвечает основной ярлык с иконкой колокольчика с именем «Project1». Но перед запуском самого приложения необходимо произвести некоторые установки. Это необходимо для стабильной работы программы. В основной директории программы имеются 4 папки 3 из которых заслуживают основного внимания. В зависимости от операционной системы пользователя нужно открыть соответствующую папку.

Рисунок Б.2 - Патчи

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

Примечание: Если пользователь используете серию WindowsXP, то установку дополнительного программного обеспечения производить не обязательно. При тестировании приложения на WindowsXPSP3 работа с программой без установленного дополнительного ПО не вызывала никаких сложностей.

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

В главном окне программы находятся кнопки, при нажатии которых открываются соответствующие уроки. Также в Главном окне программы находится вкладка «О программе».

В данном окне описаны системные требования программы, а также разработчик.

При открытии определенной последовательности уроков появляется форма с вкладками(уроками). В каждой вкладке размещены по 3 уровня. При выборе уровня открывается диалоговое окно с определенным набором упражнений разной сложности, в зависимости от выборя уровня.

В диалоговом окне с упражнениями, в частности в 1 уровне каждого урока, находится вкладка теоретический материал, где студент может ознакомиться с темой урока и прилежащей к ней теоретическим материалом.

В упражнениях с редактируемыми полями студент должен вписать соответствующую букву или слово целиком. После вписания букв или слов нажать на кнопку «Проверить» и система выдаст результат.

В упражнениях с перетаскиванием студенту необходимо перетаскивать слова левой кнопкой мыши в соответствующие поля с надписями. Линейность выполнения упражнений - одна из поставленных целей при написании приложения.

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

Упражнения с переключателями довольно часто встречаются в программе. Для выполнения такого рода упражнений необходимо ознакомиться с текстом и исходя из него выполнять предложенные задания. Затем выбрать вариант который вы считаете правильным и нажать кнопку «Проверить».

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

ПРИЛОЖЕНИЕ В

ЛИСТИНГ ПРОГРАММЫUnit13;

interface

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, ComCtrls, sPageControl, sStatusBar, ExtCtrls, sPanel, StdCtrls,

sButton, sEdit, sLabel, sGroupBox, sRichEdit, sComboBox, sDialogs;

TFormLess16Lvl3 = class(TForm)

sPageControl1: TsPageControl;

sTabSheet1: TsTabSheet;

sTabSheet2: TsTabSheet;

sTabSheet3: TsTabSheet;

sTabSheet4: TsTabSheet;

sLabel8: TsLabel;

sLabel1: TsLabel;

sEdit1: TsEdit;

sLabel2: TsLabel;

sEdit2: TsEdit;

sLabel3: TsLabel;

sLabel4: TsLabel;

sEdit3: TsEdit;

sLabel5: TsLabel;

sEdit4: TsEdit;

sLabel6: TsLabel;

sLabel7: TsLabel;

sEdit5: TsEdit;

sLabel9: TsLabel;

sLabel10: TsLabel;

sEdit6: TsEdit;

sEdit7: TsEdit;

sLabel11: TsLabel;

sLabel12: TsLabel;

sEdit8: TsEdit;

sLabel13: TsLabel;

sButton1: TsButton;

sLabel14: TsLabel;

sPageControl2: TsPageControl;

sTabSheet5: TsTabSheet;

sTabSheet6: TsTabSheet;

sPanel1: TsPanel;

sLabel15: TsLabel;

sLabel17: TsLabel;

Image1: TImage;

Image2: TImage;

sLabel18: TsLabel;

Image3: TImage;

Image4: TImage;

Image5: TImage;

Image6: TImage;

sLabel19: TsLabel;

sLabel20: TsLabel;

sLabel21: TsLabel;

sEdit9: TsEdit;

sButton2: TsButton;

 sEdit10: TsEdit;

sButton3: TsButton;

sEdit11: TsEdit;

sEdit12: TsEdit;

sButton4: TsButton;

sButton5: TsButton;

sEdit13: TsEdit;

sEdit14: TsEdit;

sButton6: TsButton;

sButton7: TsButton;

sGroupBox1: TsGroupBox;

sLabel22: TsLabel;

sLabel16: TsLabel;

sPanel2: TsPanel;

sLabel23: TsLabel;

sEdit15: TsEdit;

sButton8: TsButton;

sLabel24: TsLabel;

sEdit16: TsEdit;

sButton9: TsButton;

sLabel25: TsLabel;

sEdit17: TsEdit;

sButton10: TsButton;

sGroupBox2: TsGroupBox;

sLabel27: TsLabel;

sLabel28: TsLabel;

sRichEdit1: TsRichEdit;

sEdit18: TsEdit;

sLabel29: TsLabel;

sLabel30: TsLabel;

sEdit19: TsEdit;

sLabel31: TsLabel;

sLabel32: TsLabel;

sEdit20: TsEdit;

sLabel33: TsLabel;

sLabel34: TsLabel;

sLabel35: TsLabel;

sEdit21: TsEdit;

sLabel36: TsLabel;

sLabel37: TsLabel;

sEdit22: TsEdit;

sLabel38: TsLabel;

sLabel39: TsLabel;

sEdit23: TsEdit;

sLabel40: TsLabel;

sLabel41: TsLabel;

sLabel42: TsLabel;

sLabel43: TsLabel;

sLabel44: TsLabel;

sLabel45: TsLabel;

sEdit24: TsEdit;

sLabel46: TsLabel;

Image7: TImage;

Image8: TImage;

Image9: TImage;

sLabel47: TsLabel;

sButton11: TsButton;

sLabel48: TsLabel;

sComboBox1: TsComboBox;

sLabel49: TsLabel;

sComboBox2: TsComboBox;

sComboBox3: TsComboBox;

sComboBox4: TsComboBox;

 sComboBox5: TsComboBox;: TsComboBox;

sComboBox7: TsComboBox;

sComboBox8: TsComboBox;

sLabel50: TsLabel;

sLabel51: TsLabel;

sLabel52: TsLabel;

sLabel53: TsLabel;

sLabel54: TsLabel;

sLabel55: TsLabel;

sLabel56: TsLabel;

sLabel57: TsLabel;

sLabel58: TsLabel;

sLabel59: TsLabel;

sLabel60: TsLabel;

sLabel61: TsLabel;

sTabSheet7: TsTabSheet;

sGroupBox3: TsGroupBox;

sGroupBox4: TsGroupBox;

sGroupBox5: TsGroupBox;

sPanel3: TsPanel;

sPanel4: TsPanel;

sPanel5: TsPanel;

sPanel9: TsPanel;

sPanel10: TsPanel;

sPanel11: TsPanel;

sPanel6: TsPanel;

sPanel7: TsPanel;

sPanel8: TsPanel;

sLabel62: TsLabel;

sLabel63: TsLabel;

sLabel64: TsLabel;

sLabel65: TsLabel;

sTabSheet8: TsTabSheet;

sPanel12: TsPanel;

sLabel66: TsLabel;

sLabel67: TsLabel;

sLabel68: TsLabel;

sLabel69: TsLabel;

sLabel71: TsLabel;

sLabel72: TsLabel;

sLabel73: TsLabel;

sLabel74: TsLabel;

sLabel75: TsLabel;

sLabel76: TsLabel;

sComboBox9: TsComboBox;

sEdit25: TsEdit;

sComboBox10: TsComboBox;

sComboBox12: TsComboBox;

sComboBox13: TsComboBox;

sComboBox14: TsComboBox;

sComboBox15: TsComboBox;

sComboBox16: TsComboBox;

sPanel13: TsPanel;

sLabel77: TsLabel;

sLabel78: TsLabel;

sLabel79: TsLabel;

sLabel80: TsLabel;

sLabel81: TsLabel;

sLabel82: TsLabel;

sLabel83: TsLabel;

sLabel84: TsLabel;

sLabel85: TsLabel;

sLabel86: TsLabel;

sComboBox17: TsComboBox;

sEdit26: TsEdit;

sComboBox18: TsComboBox;

sComboBox19: TsComboBox;

sComboBox20: TsComboBox;

sComboBox21: TsComboBox;

sComboBox22: TsComboBox;

sComboBox23: TsComboBox;

sComboBox24: TsComboBox;

sPanel14: TsPanel;

sLabel88: TsLabel;

sPanel15: TsPanel;

sLabel89: TsLabel;

sLabel90: TsLabel;

sEdit27: TsEdit;

sButton12: TsButton;

sLabel91: TsLabel;

sLabel26: TsLabel;

sLabel70: TsLabel;

sLabel87: TsLabel;

ssavedialog1: TsSaveDialog;

btn1: TsButton;

procedure sButton1Click(Sender: TObject);

procedure sButton2Click(Sender: TObject);

procedure sButton3Click(Sender: TObject);

procedure sButton4Click(Sender: TObject);

procedure sButton5Click(Sender: TObject);

procedure sButton6Click(Sender: TObject);

procedure sButton7Click(Sender: TObject);

procedure sButton8Click(Sender: TObject);

procedure sButton9Click(Sender: TObject);

procedure sButton10Click(Sender: TObject);

procedure sButton11Click(Sender: TObject);

procedure sPanel3MouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

procedure sPanel3MouseMove(Sender: TObject; Shift: TShiftState; X,

Y: Integer);

procedure sPanel3MouseUp(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

procedure sPanel4MouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

procedure sPanel4MouseMove(Sender: TObject; Shift: TShiftState; X,

Y: Integer);

procedure sPanel4MouseUp(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

procedure sPanel6MouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

procedure sPanel6MouseMove(Sender: TObject; Shift: TShiftState; X,

Y: Integer);

procedure sPanel6MouseUp(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

procedure sPanel7MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);

procedure sPanel7MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);

procedure sPanel7MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);

procedure sPanel8MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);

procedure sPanel8MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);

procedure sPanel8MouseUp(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

procedure sPanel9MouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

procedure sPanel9MouseMove(Sender: TObject; Shift: TShiftState; X,

 Y: Integer);

procedure sPanel9MouseUp(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

procedure sPanel10MouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

procedure sPanel10MouseMove(Sender: TObject; Shift: TShiftState; X,

Y: Integer);

procedure sPanel10MouseUp(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

procedure sPanel5MouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

procedure sPanel5MouseMove(Sender: TObject; Shift: TShiftState; X,

Y: Integer);

procedure sPanel5MouseUp(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

procedure sPanel11MouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

procedure sPanel11MouseMove(Sender: TObject; Shift: TShiftState; X,

Y: Integer);

procedure sPanel11MouseUp(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

procedure sButton12Click(Sender: TObject);

procedure btn1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

FormLess16Lvl3: TFormLess16Lvl3;

ResultZad1:integer;

{$R *.dfm}, y0: integer;: boolean = false;:boolean = true;:boolean = true;:boolean = true;:boolean = true;:boolean = true;:boolean = true;:boolean = true;:boolean = true;:boolean = true;:boolean = true;:boolean = true;:boolean = true;:boolean = true;:boolean = true;:boolean = true;:boolean = true;:boolean = true;:boolean = true;:boolean = true;:boolean = true;:boolean = true;:boolean = true;:boolean = true;:boolean = true;:boolean = true;:boolean = true;:boolean = true;:boolean = true;:boolean = true;:boolean = true;:boolean = true;:boolean = true;:boolean = true;:boolean = true;:boolean = true;:boolean = true;:boolean = true;:boolean = true;:boolean = true;:boolean = true;:boolean = true;:boolean = true;:boolean = true;:boolean = true;:boolean = true;:boolean = true;:boolean = true;:boolean = true;:boolean = true;:boolean = true;:boolean = true;:boolean = true;:boolean = true;:boolean = true;:boolean = true;:boolean = true;:boolean = true;:boolean = true;:boolean = true;:boolean = true;:boolean = true;:boolean = true;:boolean = true;:boolean = true;:boolean = true;:boolean = true;:boolean = true;gb1:integer = 0;gb2:integer = 0;gb3:integer = 0;gb4:integer = 0;gb5:integer = 0;gb6:integer = 0;gb7:integer = 0;gb8:integer = 0;gb9:integer = 0;gb10:integer = 0;gb11:integer = 0;gb12:integer = 0;, yStart: integer;TFormLess16Lvl3.sButton1Click(Sender: TObject);ResultZad1:integer;:=0;.lines.add('1 УПРАЖНЕНИЕ');.lines.add('');

begin(sEdit1.Text='пути') then:= ResultZad1+1;.lines.add('1 слово и падеж указан верно: ' + 'пути');.lines.add('');(sEdit1.Text='') then:= ResultZad1+0;.lines.add('1 слово и падеж не верно. '+ 'Правильный ответ: пути');.lines.add('Вы ничего не написали');

srichedit1.lines.add('');:= ResultZad1+0;.lines.add('1 слово и падеж не верно. ' + 'Правильный ответ: пути');.lines.add('Вы написали: ' + sEdit1.Text);

srichedit1.lines.add('');;(sEdit2.Text='путям') then:= ResultZad1+1;.lines.add('2 слово и падеж указан верно: ' + 'путям');.lines.add('');(sEdit2.Text='') then:= ResultZad1+0;.lines.add('2 слово и падеж не верно. '+ 'Правильный ответ: путям');.lines.add('Вы ничего не написали');

srichedit1.lines.add('');:= ResultZad1+0;.lines.add('2 слово и падеж не верно. ' + 'Правильный ответ: путям');.lines.add('Вы написали: ' + sEdit2.Text);

srichedit1.lines.add('');;(sEdit3.Text='племени') then:= ResultZad1+1;.lines.add('3 слово и падеж указан верно: ' + 'племени');.lines.add('');(sEdit3.Text='') then:= ResultZad1+0;.lines.add('3 слово и падеж не верно. '+ 'Правильный ответ: племени');.lines.add('Вы ничего не написали');

srichedit1.lines.add('');:= ResultZad1+0;.lines.add('3 слово и падеж не верно. ' + 'Правильный ответ: племени');.lines.add('Вы написали: ' + sEdit3.Text);

srichedit1.lines.add('');;(sEdit4.Text='семени') then:= ResultZad1+1;.lines.add('4 слово и падеж указан верно: ' + 'семени');.lines.add('');(sEdit4.Text='') then:= ResultZad1+0;.lines.add('4 слово и падеж не верно. '+ 'Правильный ответ: семени');.lines.add('Вы ничего не написали');

srichedit1.lines.add('');:= ResultZad1+0;.lines.add('4 слово и падеж не верно. ' + 'Правильный ответ: семени');.lines.add('Вы написали: ' + sEdit4.Text);

srichedit1.lines.add('');;(sEdit5.Text='времени') then:= ResultZad1+1;.lines.add('5 слово и падеж указан верно: ' + 'времени');.lines.add('');(sEdit5.Text='') then:= ResultZad1+0;.lines.add('5 слово и падеж не верно. '+ 'Правильный ответ: времени');.lines.add('Вы ничего не написали');

srichedit1.lines.add('');:= ResultZad1+0;.lines.add('5 слово и падеж не верно. ' + 'Правильный ответ: времени');.lines.add('Вы написали: ' + sEdit5.Text);

srichedit1.lines.add('');;(sEdit6.Text='семени') then:= ResultZad1+1;.lines.add('6 слово и падеж указан верно: ' + 'семени');.lines.add('');(sEdit6.Text='') then:= ResultZad1+0;.lines.add('6 слово и падеж не верно. '+ 'Правильный ответ: семени');.lines.add('Вы ничего не написали');

srichedit1.lines.add('');:= ResultZad1+0;.lines.add('6 слово и падеж не верно. ' + 'Правильный ответ: семени');.lines.add('Вы написали: ' + sEdit6.Text);

srichedit1.lines.add('');;(sEdit7.Text='семени') then:= ResultZad1+1;.lines.add('7 слово и падеж указан верно: ' + 'семени');.lines.add('');(sEdit7.Text='') then:= ResultZad1+0;.lines.add('7 слово и падеж не верно. '+ 'Правильный ответ: семени');.lines.add('Вы ничего не написали');

srichedit1.lines.add('');:= ResultZad1+0;.lines.add('7 слово и падеж не верно. ' + 'Правильный ответ: семени');.lines.add('Вы написали: ' + sEdit7.Text);

srichedit1.lines.add('');;(sEdit8.Text='Времени') then:= ResultZad1+1;.lines.add('8 слово и падеж указан верно: ' + 'Времени');.lines.add('');(sEdit8.Text='') then:= ResultZad1+0;.lines.add('8 слово и падеж не верно. '+ 'Правильный ответ: Времени');.lines.add('Вы ничего не написали');

srichedit1.lines.add('');:= ResultZad1+0;.lines.add('8 слово и падеж не верно. ' + 'Правильный ответ: Времени');.lines.add('Вы написали: ' + sEdit8.Text);

srichedit1.lines.add('');;(scombobox1.Text='Д.п.') then:= ResultZad1+1;.lines.add('1 падеж указан верно: ' + 'Д.п.');.lines.add('');(scombobox1.Text='') then:= ResultZad1+0;.lines.add('1 падеж не верно. '+ 'Правильный ответ: Д.п.');.lines.add('Вы ничего не написали');

srichedit1.lines.add('');:= ResultZad1+0;.lines.add('1 падеж не верно. ' + 'Правильный ответ: Д.п.');

srichedit1.lines.add('Вы написали: ' + scombobox1.Text);.lines.add('');;(scombobox2.Text='Д.п.') then:= ResultZad1+1;.lines.add('2 падеж указан верно: ' + 'Д.п.');.lines.add('');(scombobox2.Text='') then:= ResultZad1+0;.lines.add('2 падеж не верно. '+ 'Правильный ответ: Д.п.');.lines.add('Вы ничего не написали');

srichedit1.lines.add('');:= ResultZad1+0;.lines.add('2 падеж не верно. ' + 'Правильный ответ: Д.п.');

srichedit1.lines.add('Вы написали: ' + scombobox2.Text);.lines.add('');;(scombobox3.Text='Р.п.') then:= ResultZad1+1;.lines.add('3 падеж указан верно: ' + 'Р.п.');.lines.add('');(scombobox3.Text='') then:= ResultZad1+0;.lines.add('3 падеж не верно. '+ 'Правильный ответ: Р.п.');.lines.add('Вы ничего не написали');

srichedit1.lines.add('');:= ResultZad1+0;.lines.add('3 падеж не верно. ' + 'Правильный ответ: Р.п.');

srichedit1.lines.add('Вы написали: ' + scombobox3.Text);.lines.add('');;(scombobox4.Text='В.п.') then:= ResultZad1+1;.lines.add('4 падеж указан верно: ' + 'В.п.');.lines.add('');(scombobox4.Text='') then:= ResultZad1+0;.lines.add('4 падеж не верно. '+ 'Правильный ответ: В.п.');.lines.add('Вы ничего не написали');

srichedit1.lines.add('');:= ResultZad1+0;.lines.add('4 падеж не верно. ' + 'Правильный ответ: В.п.');

srichedit1.lines.add('Вы написали: ' + scombobox4.Text);.lines.add('');;(scombobox5.Text='Р.п.') then:= ResultZad1+1;.lines.add('5 падеж указан верно: ' + 'Р.п.');.lines.add('');(scombobox5.Text='') then:= ResultZad1+0;.lines.add('5 падеж не верно. '+ 'Правильный ответ: Р.п.');.lines.add('Вы ничего не написали');

srichedit1.lines.add('');:= ResultZad1+0;.lines.add('5 падеж не верно. ' + 'Правильный ответ: Р.п.');

srichedit1.lines.add('Вы написали: ' + scombobox5.Text);.lines.add('');;(scombobox6.Text='В.п.') then:= ResultZad1+1;.lines.add('6 падеж указан верно: ' + 'В.п.');.lines.add('');(scombobox6.Text='') then:= ResultZad1+0;.lines.add('6 падеж не верно. '+ 'Правильный ответ: В.п.');.lines.add('Вы ничего не написали');

srichedit1.lines.add('');:= ResultZad1+0;.lines.add('6 падеж не верно. ' + 'Правильный ответ: В.п.');

srichedit1.lines.add('Вы написали: ' + scombobox6.Text);.lines.add('');;(scombobox7.Text='Д.п.') then:= ResultZad1+1;.lines.add('7 падеж указан верно: ' + 'Д.п.');.lines.add('');(scombobox7.Text='') then:= ResultZad1+0;.lines.add('7 падеж не верно. '+ 'Правильный ответ: Д.п.');.lines.add('Вы ничего не написали');

srichedit1.lines.add('');:= ResultZad1+0;.lines.add('7 падеж не верно. ' + 'Правильный ответ: Д.п.');

srichedit1.lines.add('Вы написали: ' + scombobox7.Text);.lines.add('');;(scombobox8.Text='Р.п.') then:= ResultZad1+1;.lines.add('8 падеж указан верно: ' + 'Р.п.');.lines.add('');(scombobox8.Text='') then:= ResultZad1+0;.lines.add('8 падеж не верно. '+ 'Правильный ответ: Р.п.');.lines.add('Вы ничего не написали');

srichedit1.lines.add('');:= ResultZad1+0;.lines.add('8 падеж не верно. ' + 'Правильный ответ: Р.п.');

srichedit1.lines.add('Вы написали: ' + scombobox8.Text);.lines.add('');;.Caption:= 'Ваш балл: ' + IntToStr(ResultZad1) + ' из ' + '16';

srichedit1.Lines.Add('Общее колличество баллов за задание первого упражнения: ' + IntToStr(ResultZad1) + ' из ' + '16');

srichedit1.Lines.Add('');.Enabled:=false;;;TFormLess16Lvl3.sButton2Click(Sender: TObject);ResultZad1:integer;:=0;(sEdit9.Text='Жюри')or

(sEdit9.Text='жюри')or

(sEdit9.Text='Жюри.')or

(sEdit9.Text='жюри.')then:= ResultZad1+1;.Picture.LoadFromFile('картинки/Done.bmp');.lines.add('1 слово верно: ' + 'Жюри');.lines.add('');(sEdit9.Text='') then:= ResultZad1+0;.Picture.LoadFromFile('картинки/error.bmp');

srichedit1.lines.add('1 слово не верно. '+ 'Правильный ответ: Жюри');.lines.add('Вы ничего не написали');

srichedit1.lines.add('');:= ResultZad1+0;.Picture.LoadFromFile('картинки/error.bmp');

srichedit1.lines.add('1 слово не верно. ' + 'Правильный ответ: Жюри');.lines.add('Вы написали: ' + sEdit9.Text);

srichedit1.lines.add('');;.Enabled:=false;;TFormLess16Lvl3.sButton3Click(Sender: TObject);(sEdit10.Text='Авеню')or

(sEdit10.Text='авеню')or

(sEdit10.Text='Авеню.')or

(sEdit10.Text='авеню.')then:= ResultZad1+1;.Picture.LoadFromFile('картинки/Done.bmp');.lines.add('2 слово верно: ' + 'Авеню');.lines.add('');(sEdit10.Text='') then:= ResultZad1+0;.Picture.LoadFromFile('картинки/error.bmp');

srichedit1.lines.add('2 слово не верно. '+ 'Правильный ответ: Авеню');.lines.add('Вы ничего не написали');

srichedit1.lines.add('');:= ResultZad1+0;.Picture.LoadFromFile('картинки/error.bmp');

srichedit1.lines.add('2 слово не верно. ' + 'Правильный ответ: Авеню');.lines.add('Вы написали: ' + sEdit10.Text);

srichedit1.lines.add('');;.Enabled:=false;;TFormLess16Lvl3.sButton4Click(Sender: TObject);(sEdit11.Text='Кашне')or

(sEdit11.Text='кашне')or

(sEdit11.Text='Кашне.')or

(sEdit11.Text='кашне.')then:= ResultZad1+1;.Picture.LoadFromFile('картинки/Done.bmp');.lines.add('3 слово верно: ' + 'Кашне');.lines.add('');(sEdit11.Text='') then:= ResultZad1+0;.Picture.LoadFromFile('картинки/error.bmp');

srichedit1.lines.add('3 слово не верно. '+ 'Правильный ответ: Кашне');.lines.add('Вы ничего не написали');

srichedit1.lines.add('');:= ResultZad1+0;.Picture.LoadFromFile('картинки/error.bmp');

srichedit1.lines.add('3 слово не верно. ' + 'Правильный ответ: Кашне');.lines.add('Вы написали: ' + sEdit11.Text);

srichedit1.lines.add('');;.Enabled:=false;;TFormLess16Lvl3.sButton5Click(Sender: TObject);(sEdit12.Text='Кредо')or

(sEdit12.Text='кредо')or

(sEdit12.Text='Кредо.')or

(sEdit12.Text='кредо.')then:= ResultZad1+1;.Picture.LoadFromFile('картинки/Done.bmp');.lines.add('4 слово верно: ' + 'Кредо');.lines.add('');(sEdit12.Text='') then:= ResultZad1+0;.Picture.LoadFromFile('картинки/error.bmp');

srichedit1.lines.add('4 слово не верно. '+ 'Правильный ответ: Кредо');.lines.add('Вы ничего не написали');

srichedit1.lines.add('');:= ResultZad1+0;.Picture.LoadFromFile('картинки/error.bmp');

srichedit1.lines.add('4 слово не верно. ' + 'Правильный ответ: Кредо');.lines.add('Вы написали: ' + sEdit12.Text);

srichedit1.lines.add('');;.Enabled:=false;;TFormLess16Lvl3.sButton6Click(Sender: TObject);(sEdit13.Text='Колье')or

(sEdit13.Text='колье')or

(sEdit13.Text='Колье.')or

(sEdit13.Text='колье.')then:= ResultZad1+1;.Picture.LoadFromFile('картинки/Done.bmp');

srichedit1.lines.add('5 слово верно: ' + 'Колье');

srichedit1.lines.add('');(sEdit13.Text='') then:= ResultZad1+0;.Picture.LoadFromFile('картинки/error.bmp');

srichedit1.lines.add('5 слово не верно. '+ 'Правильный ответ: Колье');.lines.add('Вы ничего не написали');

srichedit1.lines.add('');:= ResultZad1+0;.Picture.LoadFromFile('картинки/error.bmp');

srichedit1.lines.add('5 слово не верно. ' + 'Правильный ответ: Колье');.lines.add('Вы написали: ' + sEdit13.Text);

srichedit1.lines.add('');;.Enabled:=false;;TFormLess16Lvl3.sButton7Click(Sender: TObject);(sEdit14.Text='Пари')or

(sEdit14.Text='пари')or

(sEdit14.Text='Пари.')or

(sEdit14.Text='пари.')then:= ResultZad1+1;.Picture.LoadFromFile('картинки/Done.bmp');

srichedit1.lines.add('6 слово верно: ' + 'Пари');

srichedit1.lines.add('');(sEdit14.Text='') then:= ResultZad1+0;.Picture.LoadFromFile('картинки/error.bmp');

srichedit1.lines.add('6 слово не верно. '+ 'Правильный ответ: Пари');.lines.add('Вы ничего не написали');

srichedit1.lines.add('');:= ResultZad1+0;.Picture.LoadFromFile('картинки/error.bmp');

srichedit1.lines.add('6 слово не верно. ' + 'Правильный ответ: Пари');.lines.add('Вы написали: ' + sEdit14.Text);

srichedit1.lines.add('');;.Enabled:=false;;TFormLess16Lvl3.sButton8Click(Sender: TObject);(sEdit15.Text='Крупье')or

(sEdit15.Text='крупье')or

(sEdit15.Text='Крупье.')or

(sEdit15.Text='крупье.')then:= ResultZad1+1;.Picture.LoadFromFile('картинки/Done.bmp');.lines.add('7 слово верно: ' + 'Крупье');.lines.add('');(sEdit15.Text='') then:= ResultZad1+0;.Picture.LoadFromFile('картинки/error.bmp');

srichedit1.lines.add('7 слово не верно. '+ 'Правильный ответ: Крупье');.lines.add('Вы ничего не написали');

srichedit1.lines.add('');:= ResultZad1+0;.Picture.LoadFromFile('картинки/error.bmp');

srichedit1.lines.add('7 слово не верно. ' + 'Правильный ответ: Крупье');.lines.add('Вы написали: ' + sEdit15.Text);

srichedit1.lines.add('');;.Enabled:=false;;TFormLess16Lvl3.sButton9Click(Sender: TObject);(sEdit16.Text='Табу')or

(sEdit16.Text='табу')or

(sEdit16.Text='табу.')or

(sEdit16.Text='Табу.')then:= ResultZad1+1;.Picture.LoadFromFile('картинки/Done.bmp');.lines.add('8 слово верно: ' + 'Табу');.lines.add('');(sEdit16.Text='') then:= ResultZad1+0;.Picture.LoadFromFile('картинки/error.bmp');

srichedit1.lines.add('8 слово не верно. '+ 'Правильный ответ: Табу');.lines.add('Вы ничего не написали');

srichedit1.lines.add('');:= ResultZad1+0;.Picture.LoadFromFile('картинки/error.bmp');

srichedit1.lines.add('8 слово не верно. ' + 'Правильный ответ: Табу');.lines.add('Вы написали: ' + sEdit16.Text);

srichedit1.lines.add('');;.Enabled:=false;;TFormLess16Lvl3.sButton10Click(Sender: TObject);(sEdit17.Text='Интервью')or

(sEdit17.Text='интервью')or

(sEdit17.Text='интервью.')or

(sEdit17.Text='Интервью.')then:= ResultZad1+1;.Picture.LoadFromFile('картинки/Done.bmp');

srichedit1.lines.add('9 слово верно: ' + 'Интервью');

srichedit1.lines.add('');(sEdit17.Text='') then:= ResultZad1+0;.Picture.LoadFromFile('картинки/error.bmp');

srichedit1.lines.add('9 слово не верно. '+ 'Правильный ответ: Интервью');.lines.add('Вы ничего не написали');

srichedit1.lines.add('');:= ResultZad1+0;.Picture.LoadFromFile('картинки/error.bmp');

srichedit1.lines.add('9 слово не верно. ' + 'Правильный ответ: Интервью');.lines.add('Вы написали: ' + sEdit17.Text);

srichedit1.lines.add('');;.Enabled:=false;;TFormLess16Lvl3.sButton11Click(Sender: TObject);ResultZad1:integer;:=0;.lines.add('3 УПРАЖНЕНИЕ');.lines.add('');

begin(sEdit18.Text='я') then:= ResultZad1+1;.lines.add('1 слово верно: ' + 'принято');.lines.add('');(sEdit18.Text='') then:= ResultZad1+0;.lines.add('1 слово не верно. '+ 'Правильный ответ: принято');.lines.add('Вы ничего не написали');

srichedit1.lines.add('');:= ResultZad1+0;.lines.add('1 слово не верно. ' + 'Правильный ответ: принято');.lines.add('Вы написали: ' + sEdit18.Text);

srichedit1.lines.add('');;(sEdit19.Text='е') then:= ResultZad1+1;.lines.add('2 слово верно: ' + 'претендентами');.lines.add('');(sEdit19.Text='') then:= ResultZad1+0;.lines.add('2 слово не верно. '+ 'Правильный ответ: претендентами');.lines.add('Вы ничего не написали');

srichedit1.lines.add('');:= ResultZad1+0;.lines.add('2 слово не верно. ' + 'Правильный ответ: претендентами');.lines.add('Вы написали: ' + sEdit19.Text);

srichedit1.lines.add('');;(sEdit20.Text='и') then:= ResultZad1+1;.lines.add('3 слово верно: ' + 'утрачивает');.lines.add('');(sEdit20.Text='') then:= ResultZad1+0;.lines.add('3 слово не верно. '+ 'Правильный ответ: утрачивает');.lines.add('Вы ничего не написали');

srichedit1.lines.add('');:= ResultZad1+0;.lines.add('3 слово не верно. ' + 'Правильный ответ: утрачивает');.lines.add('Вы написали: ' + sEdit20.Text);

srichedit1.lines.add('');;(sEdit21.Text='е') then:= ResultZad1+1;.lines.add('4 слово верно: ' + 'имени');.lines.add('');(sEdit21.Text='') then:= ResultZad1+0;.lines.add('4 слово не верно. '+ 'Правильный ответ: имени');.lines.add('Вы ничего не написали');

srichedit1.lines.add('');:= ResultZad1+0;.lines.add('4 слово не верно. ' + 'Правильный ответ: имени');.lines.add('Вы написали: ' + sEdit21.Text);

srichedit1.lines.add('');;(sEdit22.Text='и') then:= ResultZad1+1;.lines.add('5 слово верно: ' + 'жизни');.lines.add('');(sEdit22.Text='') then:= ResultZad1+0;.lines.add('5 слово не верно. '+ 'Правильный ответ: жизни');.lines.add('Вы ничего не написали');

srichedit1.lines.add('');:= ResultZad1+0;.lines.add('5 слово не верно. ' + 'Правильный ответ: жизни');.lines.add('Вы написали: ' + sEdit22.Text);

srichedit1.lines.add('');;(sEdit23.Text='а') then:= ResultZad1+1;.lines.add('6 слово верно: ' + 'означает');.lines.add('');(sEdit23.Text='') then:= ResultZad1+0;.lines.add('6 слово не верно. '+ 'Правильный ответ: означает');.lines.add('Вы ничего не написали');

srichedit1.lines.add('');:= ResultZad1+0;.lines.add('6 слово не верно. ' + 'Правильный ответ: означает');.lines.add('Вы написали: ' + sEdit23.Text);

srichedit1.lines.add('');;(sEdit24.Text='т') then:= ResultZad1+1;.lines.add('7 слово верно: ' + 'известность');.lines.add('');(sEdit24.Text='') then:= ResultZad1+0;.lines.add('7 слово не верно. '+ 'Правильный ответ: известность');.lines.add('Вы ничего не написали');

srichedit1.lines.add('');:= ResultZad1+0;.lines.add('7 слово не верно. ' + 'Правильный ответ: известность');.lines.add('Вы написали: ' + sEdit24.Text);

srichedit1.lines.add('');;.Caption:= 'Ваш балл: ' + IntToStr(ResultZad1) + ' из ' + '7';

srichedit1.Lines.Add('Общее колличество баллов за задание третьего упражнения: ' + IntToStr(ResultZad1) + ' из ' + '7');

srichedit1.Lines.Add('');.Enabled:=false;;;TFormLess16Lvl3.sPanel3MouseDown(Sender: TObject;

Button: TMouseButton; Shift: TShiftState; X, Y: Integer);

if(EnabledMove3 =true)thenButton=mbLeftbegin:=x;:=y;:= sPanel3.Left;:= sPanel3.top;:=true;

(Sender as TsPanel).BringToFront;:=false;;;TFormLess16Lvl3.sPanel3MouseMove(Sender: TObject;

Shift: TShiftState; X, Y: Integer);

if dragTsPanel(Sender) do:=Left+x-x0;:=Top+y-y0;TFormLess16Lvl3.sPanel3MouseUp(Sender: TObject;

Button: TMouseButton; Shift: TShiftState; X, Y: Integer);Overlay:Trect;

beginInterSectRect(Overlay, sPanel3.BoundsRect, sGroupBox5.BoundsRect) then.Left:= sGroupBox5.Left+16;.Top:= sGroupBox5.Top+32;(ResultZad1gb5<=8) and (EnabledMove3=true)thengb5:= ResultZad1gb5+1;;(ResultZad1gb5>=7)then.Visible:=true;gb5:=0;

srichedit1.Lines.Add('Слова среднего рода указаны верно: жюри, интервью, пари, кашне, табу, кредо, колье');

srichedit1.Lines.Add('');;:=false;.Left:= xStart;.Top:= yStart;;:=false;;TFormLess16Lvl3.sPanel4MouseDown(Sender: TObject;

Button: TMouseButton; Shift: TShiftState; X, Y: Integer);

if(EnabledMove4 =true)thenButton=mbLeftbegin:=x;:=y;:= sPanel4.Left;:= sPanel4.top;:=true;

(Sender as TsPanel).BringToFront;:=false;;;TFormLess16Lvl3.sPanel4MouseMove(Sender: TObject;

Shift: TShiftState; X, Y: Integer);dragTsPanel(Sender) do:=Left+x-x0;:=Top+y-y0;TFormLess16Lvl3.sPanel4MouseUp(Sender: TObject;

Button: TMouseButton; Shift: TShiftState; X, Y: Integer);Overlay:Trect;

beginInterSectRect(Overlay, sPanel4.BoundsRect, sGroupBox5.BoundsRect) then.Left:= sGroupBox5.Left+16;.Top:= sGroupBox5.Top+64;(ResultZad1gb5<=8) and (EnabledMove4=true)thengb5:= ResultZad1gb5+1;;(ResultZad1gb5>=7)then.Visible:=true;gb5:=0;

srichedit1.Lines.Add('Слова среднего рода указаны верно: жюри, интервью, пари, кашне, табу, кредо, колье');

srichedit1.Lines.Add('');;:=false;.Left:= xStart;.Top:= yStart;;:=false;;TFormLess16Lvl3.sPanel6MouseDown(Sender: TObject;

Button: TMouseButton; Shift: TShiftState; X, Y: Integer);(EnabledMove6 =true)thenButton=mbLeftbegin:=x;:=y;:= sPanel6.Left;:= sPanel6.top;:=true;

(Sender as TsPanel).BringToFront;:=false;;;TFormLess16Lvl3.sPanel6MouseMove(Sender: TObject;

Shift: TShiftState; X, Y: Integer);

if dragTsPanel(Sender) do:=Left+x-x0;:=Top+y-y0;

procedure TFormLess16Lvl3.sPanel6MouseUp(Sender: TObject;

Button: TMouseButton; Shift: TShiftState; X, Y: Integer);Overlay:Trect;

beginInterSectRect(Overlay, sPanel6.BoundsRect, sGroupBox5.BoundsRect) then.Left:= sGroupBox5.Left+16;.Top:= sGroupBox5.Top+96;(ResultZad1gb5<=8) and (EnabledMove6=true)thengb5:= ResultZad1gb5+1;;(ResultZad1gb5>=7)then.Visible:=true;gb5:=0;

srichedit1.Lines.Add('Слова среднего рода указаны верно: жюри, интервью, пари, кашне, табу, кредо, колье');

srichedit1.Lines.Add('');;:=false;.Left:= xStart;.Top:= yStart;;:=false;;TFormLess16Lvl3.sPanel7MouseDown(Sender: TObject;

Button: TMouseButton; Shift: TShiftState; X, Y: Integer);

if(EnabledMove7 =true)thenButton=mbLeftbegin:=x;:=y;:= sPanel7.Left;:= sPanel7.top;:=true;

(Sender as TsPanel).BringToFront;:=false;;;TFormLess16Lvl3.sPanel7MouseMove(Sender: TObject;

Shift: TShiftState; X, Y: Integer);

if dragTsPanel(Sender) do:=Left+x-x0;:=Top+y-y0;TFormLess16Lvl3.sPanel7MouseUp(Sender: TObject;

Button: TMouseButton; Shift: TShiftState; X, Y: Integer);Overlay:Trect;

beginInterSectRect(Overlay, sPanel7.BoundsRect, sGroupBox5.BoundsRect) then.Left:= sGroupBox5.Left+16;.Top:= sGroupBox5.Top+128;(ResultZad1gb5<=8) and (EnabledMove7=true)thengb5:= ResultZad1gb5+1;;(ResultZad1gb5>=7)then.Visible:=true;gb5:=0;

srichedit1.Lines.Add('Слова среднего рода указаны верно: жюри, интервью, пари, кашне, табу, кредо, колье');

srichedit1.Lines.Add('');;:=false;.Left:= xStart;.Top:= yStart;;:=false;;TFormLess16Lvl3.sPanel8MouseDown(Sender: TObject;

Button: TMouseButton; Shift: TShiftState; X, Y: Integer);

if(EnabledMove8 =true)thenButton=mbLeftbegin:=x;:=y;:= sPanel8.Left;:= sPanel8.top;:=true;

(Sender as TsPanel).BringToFront;:=false;;;TFormLess16Lvl3.sPanel8MouseMove(Sender: TObject;

Shift: TShiftState; X, Y: Integer);

if dragTsPanel(Sender) do:=Left+x-x0;:=Top+y-y0;TFormLess16Lvl3.sPanel8MouseUp(Sender: TObject;

Button: TMouseButton; Shift: TShiftState; X, Y: Integer);Overlay:Trect;

beginInterSectRect(Overlay, sPanel8.BoundsRect, sGroupBox5.BoundsRect) then.Left:= sGroupBox5.Left+16;.Top:= sGroupBox5.Top+160;(ResultZad1gb5<=8) and (EnabledMove8=true)thengb5:= ResultZad1gb5+1;;(ResultZad1gb5>=7)then.Visible:=true;gb5:=0;

srichedit1.Lines.Add('Слова среднего рода указаны верно: жюри, интервью, пари, кашне, табу, кредо, колье');

srichedit1.Lines.Add('');;:=false;.Left:= xStart;.Top:= yStart;;:=false;;TFormLess16Lvl3.sPanel9MouseDown(Sender: TObject;

Button: TMouseButton; Shift: TShiftState; X, Y: Integer);

if(EnabledMove9 =true)then

Button=mbLeftbegin:=x;:=y;:= sPanel9.Left;:= sPanel9.top;:=true;

(Sender as TsPanel).BringToFront;:=false;;;TFormLess16Lvl3.sPanel9MouseMove(Sender: TObject;

Shift: TShiftState; X, Y: Integer);

if dragTsPanel(Sender) do:=Left+x-x0;:=Top+y-y0;TFormLess16Lvl3.sPanel9MouseUp(Sender: TObject;

Button: TMouseButton; Shift: TShiftState; X, Y: Integer);Overlay:Trect;

beginInterSectRect(Overlay, sPanel9.BoundsRect, sGroupBox5.BoundsRect) then.Left:= sGroupBox5.Left+16;.Top:= sGroupBox5.Top+192;(ResultZad1gb5<=8) and (EnabledMove9=true)thengb5:= ResultZad1gb5+1;;(ResultZad1gb5>=7)then.Visible:=true;gb5:=0;

srichedit1.Lines.Add('Слова среднего рода указаны верно: жюри, интервью, пари, кашне, табу, кредо, колье');

srichedit1.Lines.Add('');;:=false;.Left:= xStart;.Top:= yStart;;:=false;;TFormLess16Lvl3.sPanel10MouseDown(Sender: TObject;

Button: TMouseButton; Shift: TShiftState; X, Y: Integer);

if(EnabledMove10 =true)thenButton=mbLeftbegin:=x;:=y;:= sPanel10.Left;

:= sPanel10.top;:=true;

(Sender as TsPanel).BringToFront;:=false;;;TFormLess16Lvl3.sPanel10MouseMove(Sender: TObject;

Shift: TShiftState; X, Y: Integer);

if dragTsPanel(Sender) do:=Left+x-x0;:=Top+y-y0;TFormLess16Lvl3.sPanel10MouseUp(Sender: TObject;

Button: TMouseButton; Shift: TShiftState; X, Y: Integer);Overlay:Trect;

beginInterSectRect(Overlay, sPanel10.BoundsRect, sGroupBox5.BoundsRect) then.Left:= sGroupBox5.Left+16;.Top:= sGroupBox5.Top+224;(ResultZad1gb5<=8) and (EnabledMove10=true)thengb5:= ResultZad1gb5+1;;(ResultZad1gb5>=7)then.Visible:=true;gb5:=0;

srichedit1.Lines.Add('Слова среднего рода указаны верно: жюри, интервью, пари, кашне, табу, кредо, колье');

srichedit1.Lines.Add('');;:=false;.Left:= xStart;.Top:= yStart;;:=false;;TFormLess16Lvl3.sPanel5MouseDown(Sender: TObject;

Button: TMouseButton; Shift: TShiftState; X, Y: Integer);

if(EnabledMove5 =true)thenButton=mbLeftbegin:=x;:=y;:= sPanel5.Left;:= sPanel5.top;:=true;

(Sender as TsPanel).BringToFront;:=false;;;TFormLess16Lvl3.sPanel5MouseMove(Sender: TObject;

Shift: TShiftState; X, Y: Integer);

if dragTsPanel(Sender) do:=Left+x-x0;:=Top+y-y0;TFormLess16Lvl3.sPanel5MouseUp(Sender: TObject;

Button: TMouseButton; Shift: TShiftState; X, Y: Integer);Overlay:Trect;

beginInterSectRect(Overlay, sPanel5.BoundsRect, sGroupBox4.BoundsRect) then.Left:= sGroupBox4.Left+16;.Top:= sGroupBox4.Top+32;(ResultZad1gb4<=2) and (EnabledMove5=true)thengb4:= ResultZad1gb4+1;;(ResultZad1gb4>=1)then.Visible:=true;gb5:=0;

srichedit1.Lines.Add('Cлова женского рода указаны верно: авеню');

srichedit1.Lines.Add('');;:=false;.Left:= xStart;.Top:= yStart;;:=false;;TFormLess16Lvl3.sPanel11MouseDown(Sender: TObject;

Button: TMouseButton; Shift: TShiftState; X, Y: Integer);

if(EnabledMove11 =true)thenButton=mbLeftbegin:=x;:=y;:= sPanel11.Left;:= sPanel11.top;:=true;

(Sender as TsPanel).BringToFront;:=false;;;TFormLess16Lvl3.sPanel11MouseMove(Sender: TObject;

Shift: TShiftState; X, Y: Integer);

if dragTsPanel(Sender) do:=Left+x-x0;:=Top+y-y0;TFormLess16Lvl3.sPanel11MouseUp(Sender: TObject;

Button: TMouseButton; Shift: TShiftState; X, Y: Integer);Overlay:Trect;

beginInterSectRect(Overlay, sPanel11.BoundsRect, sGroupBox3.BoundsRect) then.Left:= sGroupBox3.Left+16;.Top:= sGroupBox3.Top+32;(ResultZad1gb3<=2) and (EnabledMove11=true)thengb3:= ResultZad1gb3+1;;(ResultZad1gb3>=1)then.Visible:=true;gb3:=0;

srichedit1.Lines.Add('Слова мужского рода указаны верно: крупье');

srichedit1.Lines.Add('');;:=false;.Left:= xStart;.Top:= yStart;;:=false;;TFormLess16Lvl3.sButton12Click(Sender: TObject);ResultZad1:integer;:=0;.lines.add('3 УПРАЖНЕНИЕ 2 ЗАДАНИЕ');.lines.add('');

begin(scombobox9.Text='Существительное') then:= ResultZad1+1;.lines.add('Часть речи слова имени указана верно: ' + 'Существительное');.lines.add('');(scombobox9.Text='') then:= ResultZad1+0;.lines.add('Часть речи слова имени указана не верно. '+ 'Правильный ответ: Существительное');.lines.add('Вы ничего не написали');

srichedit1.lines.add('');:= ResultZad1+0;.lines.add('Часть речи слова имени указана не верно. ' + 'Правильный ответ: Существительное');.lines.add('Вы написали: ' + scombobox9.Text);

srichedit1.lines.add('');;(scombobox17.Text='Существительное') then:= ResultZad1+1;.lines.add('Часть речи слова Псевдонимом указана верно: ' + 'Существительное');.lines.add('');(scombobox17.Text='') then:= ResultZad1+0;.lines.add('Часть речи слова Псевдонимом указана не верно. '+ 'Правильный ответ: Существительное');.lines.add('Вы ничего не написали');

srichedit1.lines.add('');:= ResultZad1+0;.lines.add('Часть речи слова Псевдонимом указана не верно. ' + 'Правильный ответ: Существительное');.lines.add('Вы написали: ' + scombobox17.Text);

srichedit1.lines.add('');;(scombobox10.Text='Нарицательное') then:= ResultZad1+1;.lines.add('Имя слова Имени указанo верно: ' + 'Нарицательное');.lines.add('');(scombobox10.Text='') then:= ResultZad1+0;.lines.add('Имя слова Имени указанo не верно. '+ 'Правильный ответ: Нарицательное');.lines.add('Вы ничего не написали');

srichedit1.lines.add('');:= ResultZad1+0;.lines.add('Имя слова Имени указанo не верно. ' + 'Правильный ответ: Нарицательное');.lines.add('Вы написали: ' + scombobox10.Text);

srichedit1.lines.add('');;(scombobox18.Text='Нарицательное') then:= ResultZad1+1;.lines.add('Имя слова Псевдонимом указанo верно: ' + 'Нарицательное');.lines.add('');(scombobox18.Text='') then:= ResultZad1+0;.lines.add('Имя слова Псевдонимом указанo не верно. '+ 'Правильный ответ: Нарицательное');.lines.add('Вы ничего не написали');

srichedit1.lines.add('');:= ResultZad1+0;.lines.add('Имя слова Псевдонимом указанo не верно. ' + 'Правильный ответ: Нарицательное');.lines.add('Вы написали: ' + scombobox18.Text);

srichedit1.lines.add('');;(scombobox11.Text='Неодушевленное') then:= ResultZad1+1;.lines.add('Предмет слова Имени указан верно: ' + 'Неодушевленное');.lines.add('');(scombobox11.Text='') then:= ResultZad1+0;.lines.add('Предмет слова Имени указан не верно. '+ 'Правильный ответ: Неодушевленное');.lines.add('Вы ничего не написали');

srichedit1.lines.add('');:= ResultZad1+0;.lines.add('Предмет слова Имени указан не верно. ' + 'Правильный ответ: Неодушевленное');.lines.add('Вы написали: ' + scombobox11.Text);

srichedit1.lines.add('');;(scombobox19.Text='Неодушевленное') then:= ResultZad1+1;.lines.add('Предмет слова Псевдонимом указан верно: ' + 'Неодушевленное');.lines.add('');(scombobox19.Text='') then:= ResultZad1+0;.lines.add('Предмет слова Псевдонимом указан не верно. '+ 'Правильный ответ: Неодушевленное');.lines.add('Вы ничего не написали');

srichedit1.lines.add('');:= ResultZad1+0;.lines.add('Предмет слова Псевдонимом указан не верно. ' + 'Правильный ответ: Неодушевленное');.lines.add('Вы написали: ' + scombobox19.Text);

srichedit1.lines.add('');;(scombobox12.Text='Средний') then:= ResultZad1+1;.lines.add('Род слова Имени указан верно: ' + 'Средний');.lines.add('');(scombobox12.Text='') then:= ResultZad1+0;.lines.add('Род слова Имени указан не верно. '+ 'Правильный ответ: Средний');.lines.add('Вы ничего не написали');

srichedit1.lines.add('');:= ResultZad1+0;.lines.add('Род слова Имени указан не верно. ' + 'Правильный ответ: Средний');.lines.add('Вы написали: ' + scombobox12.Text);

srichedit1.lines.add('');;(scombobox20.Text='Мужской') then:= ResultZad1+1;.lines.add('Род слова Псевдонимом указан верно: ' + 'Мужской');.lines.add('');(scombobox20.Text='') then:= ResultZad1+0;.lines.add('Род слова Псевдонимом указан не верно. '+ 'Правильный ответ: Мужской');.lines.add('Вы ничего не написали');

srichedit1.lines.add('');:= ResultZad1+0;.lines.add('Род слова Псевдонимом указан не верно. ' + 'Правильный ответ: Мужской');.lines.add('Вы написали: ' + scombobox20.Text);

srichedit1.lines.add('');;(scombobox13.Text='Разносклоняемое') then:= ResultZad1+1;.lines.add('Склонение слова Имени указано верно: ' + 'Разносклоняемое');.lines.add('');(scombobox13.Text='') then

ResultZad1:= ResultZad1+0;.lines.add('Склонение слова Имени указано не верно. '+ 'Правильный ответ: Разносклоняемое');.lines.add('Вы ничего не написали');

srichedit1.lines.add('');:= ResultZad1+0;.lines.add('Склонение слова Имени указано не верно. ' + 'Правильный ответ: Разносклоняемое');.lines.add('Вы написали: ' + scombobox13.Text);

srichedit1.lines.add('');;(scombobox21.Text='2') then:= ResultZad1+1;.lines.add('Склонение слова Псевдонимом указано верно: ' + '2');.lines.add('');(scombobox21.Text='') then:= ResultZad1+0;.lines.add('Склонение слова Псевдонимом указано не верно. '+ 'Правильный ответ: 2');.lines.add('Вы ничего не написали');

srichedit1.lines.add('');:= ResultZad1+0;.lines.add('Склонение слова Псевдонимом указано не верно. ' + 'Правильный ответ: 2');.lines.add('Вы написали: ' + scombobox21.Text);

srichedit1.lines.add('');;

(scombobox14.Text='Дательный') then:= ResultZad1+1;.lines.add('Падеж слова Имени указан верно: ' + 'Дательный');.lines.add('');(scombobox14.Text='') then:= ResultZad1+0;.lines.add('Падеж слова Имени указан не верно. '+ 'Правильный ответ: Дательный');.lines.add('Вы ничего не написали');

srichedit1.lines.add('');:= ResultZad1+0;.lines.add('Падеж слова Имени указан не верно. ' + 'Правильный ответ: Дательный');.lines.add('Вы написали: ' + scombobox14.Text);

srichedit1.lines.add('');;(scombobox22.Text='Творительный') then:= ResultZad1+1;.lines.add('Падеж слова Псевдонимом указан верно: ' + 'Творительный');.lines.add('');(scombobox22.Text='') then:= ResultZad1+0;.lines.add('Падеж слова Псевдонимом указан не верно. '+ 'Правильный ответ: Творительный');.lines.add('Вы ничего не написали');

srichedit1.lines.add('');:= ResultZad1+0;.lines.add('Падеж слова Псевдонимом указан не верно. ' + 'Правильный ответ: Творительный');.lines.add('Вы написали: ' + scombobox22.Text);

srichedit1.lines.add('');;(scombobox15.Text='Ед.') then:= ResultZad1+1;.lines.add('Число слова Имени указано верно: ' + 'Ед.');.lines.add('');(scombobox15.Text='') then:= ResultZad1+0;.lines.add('Число слова Имени указано не верно. '+ 'Правильный ответ: Ед.');.lines.add('Вы ничего не написали');

srichedit1.lines.add('');:= ResultZad1+0;.lines.add('Число слова Имени указано не верно. ' + 'Правильный ответ: Ед.');

srichedit1.lines.add('Вы написали: ' + scombobox15.Text);.lines.add('');; (scombobox23.Text='Ед.') then:= ResultZad1+1;.lines.add('Число слова Псевдонимом указано верно: ' + 'Ед.');.lines.add('');(scombobox23.Text='') then:= ResultZad1+0;.lines.add('Число слова Псевдонимом указано не верно. '+ 'Правильный ответ: Ед.');.lines.add('Вы ничего не написали');

srichedit1.lines.add('');:= ResultZad1+0;.lines.add('Число слова Псевдонимом указано не верно. ' + 'Правильный ответ: Ед.');

srichedit1.lines.add('Вы написали: ' + scombobox23.Text);.lines.add('');;(scombobox16.Text='Обстоятельство') then

ResultZad1:= ResultZad1+1;.lines.add('Синтаксическая роль слова Имени указана верно: ' + 'Обстоятельство');

srichedit1.lines.add('');(scombobox16.Text='') then

ResultZad1:= ResultZad1+0;.lines.add('Синтаксическая роль слова Имени указана не верно. '+ 'Правильный ответ: Обстоятельство');.lines.add('Вы ничего не написали');

srichedit1.lines.add('');:= ResultZad1+0;.lines.add('Синтаксическая роль слова Имени указана не верно. ' + 'Правильный ответ: Обстоятельство');.lines.add('Вы написали: ' + scombobox16.Text);

srichedit1.lines.add('');;(scombobox24.Text='Дополнение') then:= ResultZad1+1;.lines.add('Синтаксическая роль слова Псевдонимом указана верно: ' + 'Дополнение');.lines.add('');(scombobox24.Text='') then:= ResultZad1+0;.lines.add('Синтаксическая роль слова Псевдонимом указана не верно. '+ 'Правильный ответ: Дополнение');.lines.add('Вы ничего не написали');

srichedit1.lines.add('');:= ResultZad1+0;.lines.add('Синтаксическая роль слова Псевдонимом указана не верно. ' + 'Правильный ответ: Дополнение');.lines.add('Вы написали: ' + scombobox24.Text);

srichedit1.lines.add('');;(sedit25.Text='Имя') or

(sedit25.Text='имя')then:= ResultZad1+1;.lines.add('Начальная форма слова Имени указана верно: ' + 'Имя');.lines.add('');(sedit25.Text='') then

srichedit1.lines.add('');:= ResultZad1+0;.lines.add('Начальная форма слова Имени указана не верно. ' + 'Правильный ответ: Имя');.lines.add('Вы написали: ' + sedit25.Text);

srichedit1.lines.add('');;(sedit12.Text='Псевдоним') or

(sedit12.Text='псевдоним')then:= ResultZad1+1;.lines.add('Начальная форма слова Псевдоним указана верно: ' + 'Псевдоним');.lines.add('');(sedit12.Text='') then

ResultZad1:= ResultZad1+0;.lines.add('Начальная форма слова Псевдоним указана не верно. '+ 'Правильный ответ: Псевдоним');.lines.add('Вы ничего не написали');

srichedit1.lines.add('');:= ResultZad1+0;.lines.add('Начальная форма слова Псевдоним указана не верно. ' + 'Правильный ответ: Псевдоним');.lines.add('Вы написали: ' + sedit12.Text);

srichedit1.lines.add('');;.Caption:= 'Ваш балл: ' + IntToStr(ResultZad1) + ' из ' + '18';

srichedit1.Lines.Add('Общее колличество баллов за второе задание третьего упражнения: ' + IntToStr(ResultZad1) + '

из ' + '18');.Lines.Add('');.Enabled:=false;

end;;TFormLess16Lvl3.btn1Click(Sender: TObject);:string;.PlainText:=false;.Filter := 'RTF|*.rtf|Word file|*.doc';ssavedialog1.Execute then:=ssavedialog1.FileName;.Lines.SaveToFile(f);;

end.

ПРИЛОЖЕНИЕ Г

КОНТРОЛЬНЫЙ ПРИМЕР

Открываем директорию с программой и в зависимости от того, какая операционная система у вас установлена, открываем соответствующую папку.

Рисунок Г.1 - Основная директория

Запускаем в любом порядке расположенные в директории файлы.

Рисунок Г.2 - Файлы необходимые для стабильной работы приложения

Возвращаемся в основную директорию открываем папку «Программа» и дважды кликаем левой кнопкой мыши по значку «Project1».

Рисунок Г.3 - Окно - заставка

При открытии программы появляется окно - заставка, которое через несколько перетекает в Главное окно программы (смотреть рисунок Г.4)

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

В данном окне выбираем последовательность уроков, например, с 13 по 18 уроки.

Рисунок Г.5 - Окно уроков

В данной вкладке выбираем урок, перемещаясь по вкладкам. Затем выбираем уровень сложности.

Рисунок Г.6 - Вкладка «Теоретический материал»

В данной вкладке ознакамливаемся с предоставленным материалом. Далее выполняем упражнения.

Рисунок Г.7 - Упражнения с редактируемыми полями

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

Рисунок Г.8 - Упражнения на перетаскивание

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

Рисунок Г.9 - Упражнения на переключатели

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

Рисунок Г.10 - Упражнения с выпадающим списком

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

Рисунок Г.11 - Отчет

В данной вкладке просматриваем ошибки, сделанные во время выполнения заданий. Также в этой вкладке имеется функция «Сохранить отчет».

Рисунок Г.12 - Сохранить отчет

После нажатия кнопки «Сохранить отчет» появляется диалоговое окно, где нужно указать место для сохранения файла, а также имя файла. Затем нажимаем «Сохранить».

Похожие работы на - Разработка обучающей программы по русскому языку

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!