• Преподавателю
  • Информатика
  • Дипломная работа на тему: «Объектно – ориентированное программирование Object Pascal. Создание тестирующей программы по информатике»

Дипломная работа на тему: «Объектно – ориентированное программирование Object Pascal. Создание тестирующей программы по информатике»

Тема дипломной работы, которую я писала называется: «Объектно – ориентированное программирование ObjectPascal.  Создание тестирующей программы по информатике». Описательная часть дипломного проекта состоит из введения, двух глав, заключения. В первой главе описывается интерфейс интегрированной среды разработки Delphi 6. Подробно рассматриваются станицы компонентов библиотеки VCL. Приводится список всех файлов проекта Delphi. Также в первой главе описываются основные понятия объектно-ориентирова...
Раздел Информатика
Класс -
Тип Другие методич. материалы
Автор
Дата
Формат doc
Изображения Есть
For-Teacher.ru - все для учителя
Поделитесь с коллегами:

Введение

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

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

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

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

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

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

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

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

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

  2. отбор и упорядочивание заданий;

  3. компоновка тестов по блокам;

  4. апробация;

  5. проведение тестовых испытаний.

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

 информационные навыки (узнает, вспоминает);

 понимание (объясняет, показывает);

 применение (демонстрирует);

 анализ (обдумывает, рассуждает);

 синтез (комбинирует, моделирует);

 сравнительная оценка (сравнивает по параметрам).

Это позволяет определять уровень сложности теста.

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

В процессе усвоения материала обучаемый последовательно достигает четырех уровней усвоения.

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

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

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

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

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

Для проверки качества усвоения на первом уровне используются тесты на опознание ("да" - "нет") и тесты на различение (избирательные и выборочные).

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

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

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

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

Тесты должны обладать следующими свойствами:

 валидность (адекватность, обоснованность);

 определенность (общепонятность);

 надежность;

 практичность;

 простота в использовании;

 прогностическая ценность.

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

Выделяют три типа валидности:

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

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

 концептуальная - устанавливается путем доказательств правильности теоретических концепций, положенных в основу теста.

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

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

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

При составлении тестов должны учитываться следующие требования:

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

  2. простота - каждое задание должно заключаться в требовании от испытуемого ответа только на один вопрос;

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

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

В настоящее время во многих вузах России вступительные экзамены проводятся в форме тестирования на ЭВМ. Но такая форма предполагает определенную начальную подготовку учащегося как пользователя персонального компьютера. Ребёнок никогда не работавший с тестами часто допускают ошибки не из-за незнания предмета, а из-за неумения работать с тестами.

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

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

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

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

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

В первой главе описывается интерфейс интегрированной среды разработки Delphi 6. Подробно рассматриваются станицы компонентов библиотеки VCL. Приводится список всех файлов проекта Delphi. Также в первой главе описываются основные понятия объектно-ориентированного языка программирования - Object Pascal. Приводится подробная классификация и описание всех типов данных языка Object Pascal.

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

Глава 1. Delphi и современные информационные технологии

1.1. Объектно-ориентированное программирование

Объектно-ориентированное программирование (ООП) - это в наше время совершенно естественный подход к построению сложных программ и систем. Любая программа Windows состоит из множества кнопок, разделов меню, окон редактирования, списков и т.п. - объектов. Причём сами по себе они ничего не делают. Они ждут каких-то событий - нажатия пользователем клавиш или кнопок мыши, перемещения курсора и т.д. Когда происходит подобное, объект получает сообщение об этом и как-то на него реагирует: выполняет некоторые вычисления, разворачивает список, заносит символ в окно редактирования.

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

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

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

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

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

1.2. Интегрированная Среда Разработки Delphi

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

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

1.2.1. Палитра компонентов Delphi

Палитра компонентов - это витрина той библиотеки компонентов - VCL или CLX, с которой вы работаете. При создании приложений для Windows вы работаете с VCL.

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

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

Таблица 1.1. Страницы библиотеки VCL

Standard

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

Additional

Дополнительная, являющаяся дополнением стандартной

Win32

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

System

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

Data Access

Доступ к данным

Data Controls

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

dbExpress

Связь с данными с помощью dbExpress (начиная с Delphi 6)

DataSnap

Компоненты для связи с сервером приложений при построении многопоточных приложений, работающих с данными (начиная с Delphi 6 и не во всех вариантах Delphi)

BDE

Доступ к данным через Borland Database Engine - BDE (начиная с Delphi 6, ранее эти компоненты размещались на странице Data Access)

ADO

Связь с базами данных через Active Data Objects (ADO) - множество компонентов ActiveX, использующих для доступа к информации баз данных Microsoft OLE DB (начиная с Delphi 5)

Interbase

Прямая связь с Interbase, минуя Borland Database Engine (BDE) и Active Data Objects (ADO) (начиная с Delphi 5)

WebServices

Компоненты клиентский приложений Web, использующие до­ступ к службам Web с помощью SOAP (начиная с Delphi 6)

InternetExpress

Построение приложений InternetExpress - одновременно прило­жений сервера Web и клиента баз данных с параллельными по­токами (начиная с Delphi 5)

Internet

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

WebSnap

Компоненты для создания серверов Web, содержащих сложные страницы, управляемые данными (начиная с Delphi 6 и не во всех вариантах Delphi)

FastNet

Различные протоколы доступа к Интернет (начиная с Delphi 5)

Decision Cube

Компоненты для многомерного анализа данных (не во всех вари­антах Delphi)

QReport

Компоненты для подготовки отчетов

Dialogs

Диалоги, системные диалоги типа «Открыть файл» и др.

Win 3.1

Windows 3.x, компоненты в стиле Windows 3.x (оставлены для обратной совместимости с Delphi 1)

Samples

Образцы, различные интересные, но не до конца документиро­ванные компоненты

ActiveX

Примеры компонентов ActiveX

COM+

Компонент, дающий доступ к каталогу СОМ+, содержащему дан­ные по конфигурации СОМ+

IndyClients

Компоненты клиентских приложений Internet Direct (Indy), даю­щих доступ к различным протоколам Интернет из приложений Delphi, C++Builder, Kylix (начиная с Delphi 6)

IndyServers

Компоненты серверных приложений Internet Direct (Indy) (начи­ная с Delphi 6)

IndyMisk

Различные вспомогательные компоненты приложений Internet Direct (Indy) (начиная с Delphi 6)

Servers

Оболочки VCL для распространенных серверов СОМ (начиная с Delphi 5)

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

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

1.2.2. Окно формы Delphi

Основой почти всех приложений Delphi является форма. Ее можно понимать как типичное окно Windows. Форма является основой, на которой размещаются другие компоненты.

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

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

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

1.2.3. Окно Редактора Кода

Одной из наиболее важных частей среды Delphi является окно Редактора Кода. Его вид и возможности изменяются от версии к версии.

Редактор Кода в Delphi 6 имеет две страницы: Code (код) и Diagram (диаграммы). Первая из них содержит коды модулей вашего приложения и тексты других файлов, которые вы открыли в процессе проектирования. Вторая страница, введенная только в Delphi 6, позволяет вам строить диаграммы, иллюстрирующие взаимоотношения компонентов в вашем приложении.

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

1.2.4. Инспектор Объектов

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

Страница свойств (Properties) Инспектора Объектов показывает свойства того объекта, который в данный момент выделен вами. При щелчке на окне пустой формы и на странице свойств Инспектора Объектов вы сможете увидеть свойства формы. Пользователь можете изменять эти свойства. Например, измените свойство Caption (надпись) вашей формы, написав в нем «Моя форма», и вы увидите, что эта надпись появится в полосе заголовка вашей формы.

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

Вы попадете в окно Редактора Кода, в котором увидите текст:

procedure TForml.FormCreate(Sender: TObject);

begin

end;

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

1.2.5. Организация проекта в Delphi, основные файлы проектов

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

При проектировании приложения, Delphi создает следующие файлы:

Таблица 1.2. Файлы проекта создаваемые Delphi

Файл проекта (.dpr)

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

Файл модуля (.pas)

Каждой создаваемой вами форме, а начиная с Delphi 5 - и каждому фрейму, соответствует текстовый файл модуля, используемый для хранения кода. Иногда вы можете создавать модули, не связанные с формами. Многие из функций и процедур Delphi хранятся в модулях

Файл формы

(.dfm)

Это двоичный или текстовый файл, который создается Delphi для хранения информации о ваших формах. Каж­дому файлу формы соответствует файл модуля (.pas)

Файл параметров проекта (.dfo)

В этом файле хранятся установки параметров проекта

Файл информации о пакетах (.drf)

Этот бинарный файл используется Delphi при работе с пакетами

Файл ресурсов

(.res)

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

Файл группы файлов (•bpg)

Это файл, создаваемый, если вы работаете с группой проектов

Файл пакета (.dpk)

Этот двоичный файл пакета (package)

Файлы резервных копий

(.-dp, .~df, .~pa)

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

Файл конфигурации окон (.dsk)

Файл хранит конфигурацию всех окон

Файлы диаграмм (•ddp)

Файлы диаграмм, создаваемых на странице диаграмм окна Редактора Кода

Следующая группа файлов создается компилятором:


Таблица 1.3. Файлы проекта создаваемые компилятором

Исполняемый файл (.ехе)

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

Объектный файл модуля (.dcu)

Это откомпилированный файл модуля (.pas), который компонуется в окончательный исполняемый файл

Динамически присоединяемая библиотека (.dll)

Этот файл создается в случае, если вы проектируете свою собственную DLL

Файл содержания пакета (.dcp)

Это двоичный файл, содержащий заголовок пакета и список принадлежащих ему файлов .dcu

Откомпилированный файл пакета времени выполнения (.bpl)

Это пакет времени выполнения - файл библиотеки DLL с определенной спецификой Delphi

И, наконец, другие файлы Windows, которые могут использоваться Delphi:

Таблица 1.4. Файлы Windows используемые Delphi

Файлы справки (.hip)

Это стандартные файлы справки Windows, которые могут быть использованы вашим приложением Delphi

Файлы изображений или графические файлы

(.wmf, .bmp, .ico)

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

Главной частью вашего приложения является файл проекта (.dpr), содержащий код на языке Object Pascal, с которого начинается выполнение вашей программы и который обеспечивает инициализацию других модулей. В большинстве случаев вы можете создать законченное приложение Delphi, так и не взглянув на этот файл. Он создается и модифицируется Delphi автоматически в процессе вашей разработки приложения. Имя, которое вы даете файлу проекта, когда сохраняете его, становится именем исполняемого файла.

Все изменения файла проекта при добавлении новых форм, изменении имен форм и т.п. поддерживаются Delphi автоматически. Если вам необходимо посмотреть исходный файл проекта, надо выполнить команду View Project Source. Но обычно это вам не требуется.

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

1.2.6. Менеджер проектов

В управлении проектом существенную помощь может оказать Менеджер Проектов - Project Manager. Он является не только и не столько инструментом управления проектом, сколько инструментом работы с группами проектов. Группа проектов - это группа родственных проектов, с которыми удобно работать параллельно. Например, это могут быть проекты клиента и сервера, обменивающихся какой-то информацией, или проект, создающий библиотеку DLL, и проект, использующий ее.

Открывается Менеджер Проектов командой View | Project Manager. Если в данный момент нет открытого проекта, то в окне Менеджера Проектов будет написано <No Project Group>. Кнопка New позволяет включить в группу новый проект.

Если выделить в окне не модуль, а проект - имя файла .ехе, и щелкнете правой кнопкой мыши, то всплывет уже другое меню, в котором будут, в частности, разделы Add (добавить новую форму или модуль), Remove File (удалить файл -появится диалоговое окно, в котором вы можете выбрать удаляемый модуль), Save (сохранить проект), Options (вызов окна опций выделенного проекта) и ряд других.

Окно Менеджера Проектов - встраиваемое, так что вы можете встроить его, например, в окно Инспектора Объектов и оно не будет занимать на экране лишнего места.

1.3. Язык объектно-ориентированного программирования Object Pascal

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

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

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

1.3.1. Головная программа приложения Delphi

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

program Project1;

uses

Forms,

Unit1 in 'Unit1.pas' {Form1},

Unit2 in 'Unit2.pas' {Form2};

{$R *.res}

var

begin

Application.Initialize;

Application.CreateForm(TForm1, Form1);

Application.CreateForm(TForm2, Form2);

Application.Run;

end.

Начинается программа с ключевого слова program, после которого пишется имя программы. Оно совпадает с именем файла, которым был сохранён проект. Это же имя присваивается выполняемому файлу приложения. По умолчанию это имя Project1.

После заголовка в тексте программы располагается предложение uses. В этом предложении перечисляются модули, загружаемые программой. Первый модуль Forms - системный. А следующие - модули разработанных пользователем форм. В показанном примере подразумевается, что в проекте было создано две формы с именами Form1 и Form2 в модулях с именами Unit1 Unit2. Помещённые в фигурные скобки названия форм - это комментарии.

Следующая строка текста {$R *.res} представляет собой директиву компилятору. Затем после ключевого слова begin и до последнего завершающего программу оператора end записано тело программы.

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

1.3.2. Структура модуля

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

unit Unit1;

interface // Открытый интерфейс модуля

// Список подключаемых модулей

uses

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

Dialogs;

// Объявление класса формы

type

TForm1 = class(TForm)

private // Закрытый раздел класса

{ Private declarations }

{Сюда могут помещаться объявления переменных, функций и процедур, включаемых в класс формы, но не доступных для других модулей}

public // Открытый раздел класса

{ Public declarations }

{Сюда могут помещаться объявления переменных, функций и процедур, включаемых в класс формы, и доступных для других модулей}

end;

var

Form1: TForm1;

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

implementation // Реализация модуля

{$R *.dfm}

{Сюда могут помещаться предложения uses, объявления типов, переменных, констант, к которым не будет доступа из других модулей. Тут же должны быть реализации всех объявленных в разделе interface функций и процедур, а также могут быть реализации дополнительных, не объявленных ранее функций и процедур}

end.

Модуль начинается с ключевого слова unit, после которого пишется имя модуля. Оно совпадает с именем файла, в котором вы сохранили свой модуль. По умолчанию для первого модуля имя равно unit1, для второго unit2 и т.д.

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

В разделе interface после предложения uses, содержащего список подключаемых модулей, пользователь может видеть заготовку объявления класса вашей формы, подготовленную Delphi. Имя класса вашей формы - TForm1. Класс содержит два раздела: private - закрытый раздел класса, и public - открытый раздел класса.

После завершения объявления класса объявляется переменная Form1 класса TForm1.

Затем следует пока пустой раздел implementation, в котором содержится только директива компилятора.

1.3.3. Типы данных в языке Object Pascal

Типы данных в Object Pascal можно разделить на предопределенные в языке (встроенные) типы и типы, определяемые пользователем. К предопределенным относятся типы целые, действительные, символы, строки, указатели, булевы, variant.

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

<идентификатор типа> = <описание типа>;

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

Таблица 1.5. Порядковые типы данных

Функция

Параметр

Возвращаемое значение

Замечания

Ord

Выражение порядкового типа

Порядковый номер значения данного выражения

Не воспринимает аргумент типа Int64

Fred

Выражение порядкового типа

Величина, предшествующая значению данного выражения

Нельзя использовать в свойствах, имеющих процедуру Write

Succ

Выражение порядкового типа

Величина, следующая для значения данного выражения

Нельзя использовать в свойствах, имеющих процедуру Write

High

Идентификатор порядкового типа или переменная порядкового типа

Максимально возможное значение

Используется также для типов коротких строк и массивов

Low

Идентификатор порядкового типа или переменная порядкового типа

Минимально возможное значение

Используется также для типов коротких строк и массивов

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

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

Таблица 1.6. Целые типы данных

Тип

Диапазон значений

Требования к памяти в байтах

Знаковый (может ли хранить отрицательные числа)

Byte

0 -255

1

нет

Word

0 - +65535

2

нет

Longword

0 - +4294967295

4

нет

Shortlnt

-128 - +127

1

да

Smalllnt

-32768 - +32767

2

да

Cardinal

0 - 4294967295

4

нет

Integer

-2147483648 - +2147483647

4

да

Longlnt

-21474836484- +2147483647

4

да

Int64

-263 - +263 -1

8

да

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

Таблица 1.7. Действительные типы данных

Тип

Диапазон значений

Число значащих разрядов

Требования к памяти в байтах

Real48

±2,9*10-39 - ± 1,7*1038

11-12

6

Real

±5,0*10-324 - ± 1,7*10308

15-16

8

Single

±1,5*10-45 - ± 3,4*1038

7-8

4

Double

±5,0*10-324 - ± 1,7*10308

15-16

8

Extended

±3,6*10-4932 - ± 1,1*104392

19-20

10

Comp

-263 +1 - ± 262 -1

19-20

8

Currency

-922337203685477,5808 -

922337203685477,5807

19-20

8

Приведенные в таблице затраты памяти могут изменяться от версии к версии и от системы к системе. Поэтому, если требуется достоверно знать затраты памяти для того или иного типа, следует пользоваться функцией SizeOf.

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

Таблица 1.8. Булевы типы данных

Тип

Значения

Требования к памяти в байтах

Boolean

Булева величина в один байт

1

ByteBool

Булева величина в один байт

1

WordBool

Булева величина в одно слово

2

LongBool

Булевская величина в два слова

4

Символьные типы предназначены для хранения одного символа. Они относятся к целым порядковым типам. Ниже приведена таблица символьных типов. Наличие двух разных типов - ANSIChar и WideChar связано с двумя различными множествами символов: ANSI, каждый символ которого занимает 1 байт, и Unicode, каждый символ которого занимает 2 байта. Первые 256 символов в этих множествах одинаковы и соответствуют символам ASCII от 0 до 255.

Таблица 1.9. Символьные типы данных

Тип

Размер в байтах

Что может хранить

ANSIChar

1

Один символ ANSI

WideChar

2

Один символ Unicode

Char

1

Сейчас эквивалентен ANSIChar. В будущих версиях Delphi может быть будет эквивалентен WideChar

Строки представляют собой последовательность символов. Ниже приведена таблица типов строк.

Таблица 1.10. Строковые типы данных

Тип строки

Максимальная длина

Используется для

Нулевой символ в конце

ShortString

255

обратной совместимости

нет

AnsiString

~231 (-2 Гб)

символов ANSI

есть

String

или 255, или до ~2 Гб

символов ANSI или Unicode

есть или нет

WideString

~230 (-1 Гб)

символов Unicode, в серверах СОМ и интерфейсах

есть

Сцепление (конкатенация) строк осуществляется операцией «+». Например, выражение S1+S2 даст в результате строку, в которой после символов строки S1 будут расположены символы строки S2,

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

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

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

Множества могут содержать не только отдельные значения, но и ограниченные типы. Например, если вы хотите контролировать символы, вводимые пользователем при вводе целого положительного или отрицательного числа, вы можете определить множество ['0'..'9', '+', '-'] и использовать его, например, при обработке события OnKeyPress какого-то окна редактирования:

if not(Key in ['0'..'9', ' + ', '-']) then Key := #0;

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

Object Pascal является строго типизированным языком. Но в нем имеется тип variant, отступающий от этого правила. В переменных типа variant могут храниться данные любых типов, кроме записей, множеств, статических массивов, файлов, классов, ссылок на классы, указателей и Int64. Иначе говоря, переменные типа variant могут хранить все, кроме структур), указателей и Int64. Они могут также хранить объекты СОМ и CORBA, обеспечивая доступ к их методам и свойствам. Могут они также хранить динамические массивы и специальные массивы variant.

Переменные типа variant занимают 16 битов и содержат код типа и значение переменной или указатель на это значение. В момент создания эти переменные инициализируются специальным значением Unassigned. Значение переменной null свидетельствует о неизвестном или ошибочном значении переменной.

Приведение типов при вычислении выражений, содержащих операнды variant, осуществляется обычным образом. Например, если VI и V2 типа variant содержат данные типов integer и real, то выражение VI + V2 вернет значение real,

Узнать действительный тип значения переменной variant можно с помощью функции VarType, возвращающей значение типа TVarData, содержащее код типа. Запись TVarData определена в модуле System. Имеется также предопределенная константа varTypeMask, сложение которой по операции and с переменной типа TVarData возвращает истинный тип переменной.

Таблица 1.11. Возможные значения типов, возвращаемые функцией VarType

varEmpty

переменная в состоянии Unassigned

varNull

значение переменной равно null

VarSmallint

тип Smallint

varlnteger

тип Integer

varSingle

тип Single

varDouble

тип Double

varCurrency

тип Currency

varDate

тип TDateTime (дата и время)

varOLEStr

ссылка на динамически размещенную строку UNICODE

varDispatch

ссылка на автоматический объект (указатель на интерфейс IDispatch)

varError

код ошибки операционной системы

varBoolean

тип WordBool

varUnknown

ссылка на неизвестный объект СОМ (указатель на интерфейс Unknown)

varByte

тип Byte

var String

ссылка на динамически размещенную строку в стиле Pascal (тип AnsiString).

varTypeMask

битовая маска для извлечения кода типа

var Array

бит, устанавливаемый при ссылке на массив variant

varByRef

бит, устанавливаемый при ссылке на тип variant

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

Объявление переменной как одномерного массива имеет вид:

var <имя массива>: array <ограниченный тип> of <тип элементов>;

Например:

var A: array [1..10] of integer;

объявляет массив с именем А, содержащий 10 целых чисел. Доступ к элементам этого массива осуществляется выражением A[i], где i - индекс, являющийся в данном примере, как видно из объявления, целым числом в диапазоне от 1 до 10. Например, А[1] - значение первого элемента, А[2] - второго, А[10] - последнего.

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

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

Var A1: array[l..10] of array[l..3] of integer;

Этот оператор описывает двумерный массив, который можно представить себе как таблицу, состоящую из 10 строк и 3 столбцов. То же самое можно объявить более компактно:

Var A2: array[1..10,1..3] of integer;

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

Доступ к значениям элементов многомерного массива обеспечивается через индексы, перечисляемые через запятую. Например, А2[4,3] - значение элемента, лежащего на пересечении четвертой строки и третьего столбца.

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

var : array[1..3] of integer;

то в результате выполнения оператора

А := В ;

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

Для любого массива определены следующие функции:

- Length - число элементов массива;

- High - наибольшее значение индекса;

- Low - наименьшее значение индекса.

Для числовых массивов определены функции:

Таблица 1.12. Функции числовых массивов

Функция

Тип аргумента

Тип результата

Описание

MaxIntValue

array of integer

integer

Возвращает максимальное значение элемента массива целых чисел

MinlntValue

array of integer

integer

Возвращает минимальное значение элемента массива целых чисел

MaxValue

array of double

double

Возвращает максимальное значение элемента числового массива

MinValue

array of double

double

Возвращает минимальное значение элемента числового массива

Sum

array of double

extended

Возвращает сумму элементов массива

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

К символьным массивам применимы функции работы со строками.

Функции и процедуры в Object Pascal могут воспринимать в качестве параметров не только массивы фиксированного размера, но и так называемые открытые массивы, размер которых неизвестен. В этом случае в объявлении функции или процедуры они описываются как массивы базовых типов без указания их размерности. Открытые массивы специального вида, объявляемые как array of const, разрешают, в отличие от всех других массивов, передавать в процедуру или функцию массив различных по типу значений.

Запись (record), называемая в некоторых языках структурой, представляет собой объединенный общим именем набор данных различных типов. Отдельные данные записи называются полями. Все это напоминает запись в базе данных, только хранящуюся в оперативной памяти компьютера.

Тип записи объявляется следующим образом:

type <имя типа> = record

<список имен полей> : <тип>;

<список имен полей> : <тип>;

end;

Например:

type TPers= record

Fam, Name, Par : String[15];

Year : Integer;

Sex : boolean;

Dep : string [10];

end;

Эти операторы объявляют тип записи TPers, содержащей сведения о сотруднике некоторой организации: его фамилию, имя, отчество (поля Fam, Name, Par), год рождения (поле Year), пол (поле Sex), отдел, в котором он работает (поле Dep). Область видимости идентификаторов полей только внутри записи.

Класс - это тип данных, определяемый пользователем. То, что в Delphi имеется множество предопределенных классов не противоречит этому определению - ведь разработчики Delphi тоже пользователи Object Pascal.

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

Синтаксис объявления класса следующий:

Туре

<имя класса> = Class (<имя класса - родителя>)

public // доступно всем

<поля, методы, свойства, события>

published // видны в Инспекторе Объекта и изменяемы

<поля, свойства>

protected // доступ только потомкам

<поля, методы, свойства, события>

private // доступ только в модуле

<поля, методы, свойства, события>

end;

Имя класса может быть любым допустимым идентификатором. Но принято идентификаторы большинства классов начинать с символа «Т». Имя класса - родителя может не указываться. Тогда предполагается, что данный класс является непосредственным наследником TObject - наиболее общего из предопределенных классов. Таким образом, эквивалентны следующие объявления:

type TMyClass = class end;

type TMyClass = class(TObject) end;

Класс наследует поля, методы, свойства, события от своих предков и может отменять какие-то из этих элементов класса или вводить новые. Доступ к объявляемым элементам класса определяется тем, в каком разделе они объявлены.

Раздел public (открытый) предназначен для объявлений, которые доступны для внешнего использования. Это открытый интерфейс класса. Раздел published (публикуемый) содержит открытые свойства, которые появляются в процессе проектирования на странице свойств Инспектора Объектов и которые, следовательно, пользователь может устанавливать в процессе проектирования. Раздел private (закрытый), содержит объявления полей, процедур и функций, используемых только внутри данного класса. Раздел protected (защищенный) содержит объявления, до­ступные только для потомков объявляемого класса. Как и в случае закрытых эле­ментов, можно скрыть детали реализации защищенных элементов от конечного пользователя. Однако, в отличие от закрытых, защищенные элементы остаются доступны для программистов, которые захотят производить от этого класса произ­водные объекты, причем не требуется, чтобы производные объекты объявлялись в этом же модуле.

Глава 2. Создание тестирующей программы по информатике

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

2.1. Алгоритм работы тестирующей программы

При запуске приложения (файла с расширением .exe) на первом этапе тестируемому предлагается зарегистрироваться и выбрать один из четырёх вариантов тестовых вопросов. После чего, при нажатии кнопки программа открывает текстовый файл, соответствующий выбранному варианту, и считывает из него название теста, оценочную шкалу, тестовые вопросы, варианты ответов и указатели на правильные ответы. Считанные из файла данные сохраняются в массивах и доступны во время работы приложения. Используя полученные массивы данных, с помощью циклической структуры на формы поочерёдно выводятся вопросы (в каждом варианте по 21 вопросу) и 4 варианта ответов на каждый из них. Тестируемому необходимо из предложенных вариантов ответов выбирать правильные и с помощью кнопки «Далее» переходить к следующему вопросу. После того как тестируемый отвечает на все поставленные вопросы программа подсчитывает количество правильных и используя оценочную шкалу выставляет оценки.

2.2. Программная реализация приложения

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

2.2.1. Головная программа

Первый оператор в теле головной программы инициализирует приложение. Второй изменяет название приложения с 'Project1' принимаемого по умолчанию на 'Тест'. Следующие два оператора создают объекты форм Form1 и Form2, а последний начинает работу приложения. Ниже приведём листинг головной программы.

program Project1;

uses

Forms,

Unit1 in 'Unit1.pas' {Form1},

Unit2 in 'Unit2.pas' {Form2};

{$R *.res}

var

f: textfile;

nvar: string;

begin

Application.Initialize;

Assignfile(f,nvar);

try

reset(f);

except

end;

Application.Initialize;

Application.Title := 'Тест';

Application.CreateForm(TForm1, Form1);

Application.CreateForm(TForm2, Form2);

Application.Run;

end.

2.2.2. Создание и работа первой пользовательской формы (Unit1)

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

Первая пользовательская форма нашего приложения содержит четыре текстовых поля (Label1, Label2, Label3, Label4), два окна редактирования (Edit1, Edit2), четыре переключателя (RadioButton1, RadioButton2, RadioButton3, RadioButton4), две кнопки (Button1, Button2) и один рисунок (Image1).

Рисунок 2.1. Первая пользовательская форма

ПДипломная работа на тему : «Объектно – ориентированное программирование Object Pascal. Создание тестирующей программы по информатике»

ри запуске приложения появляется первая форма (рисунок 1). Тестируемому школьнику необходимо вписать в два окна редактирования свои фамилию и имя, а также выбрать свой номер варианта. После чего необходимо нажать кнопку «Далее» и процедура обработки события TForm1.Button1Click проверяет наличие записей в окнах редактирования, и выбран ли вариант. Если записи отсутствуют (тестируемый не вписал свои имя и/или фамилию), появляется сообщение о том, что необходимо внести свои фамилию и имя. Если не выбран вариант, то появляется сообщение о необходимости выбора варианта.

РДипломная работа на тему : «Объектно – ориентированное программирование Object Pascal. Создание тестирующей программы по информатике»

исунок 2.2. Сообщение о необходимости заполнения полей «Фамилия» и/или «Имя»

Дипломная работа на тему : «Объектно – ориентированное программирование Object Pascal. Создание тестирующей программы по информатике»


РДипломная работа на тему : «Объектно – ориентированное программирование Object Pascal. Создание тестирующей программы по информатике»

исунок 2.3. Сообщение о необходимости выбора варианта

Если все необходимые исходные данные введены, то процедура обработки события TForm1.Button1Click открывает один из текстовых файлов (var1.txt, var2.txt, var3.txt, var4.txt), соответствующий номеру выбранного варианта. Далее, из открытого текстового файла в соответствующие массивы записываются тестовые вопросы, варианты ответов на эти вопросы, а также указатели на правильные варианты ответов. После считывания данных происходит закрытие первой формы и появляется вторая форма. Ниже приведём листинг модуля Unit1.

unit Unit1;

interface

uses

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

Dialogs, StdCtrls, ExtCtrls;

type

TForm1 = class(TForm)

Label1: TLabel;

Label2: TLabel;

Button1: TButton;

Button2: TButton;

RadioButton1: TRadioButton;

RadioButton2: TRadioButton;

RadioButton3: TRadioButton;

RadioButton4: TRadioButton;

Edit1: TEdit;

Edit2: TEdit;

Label3: TLabel;

Label4: TLabel;

Image1: TImage;

procedure Button2Click(Sender: TObject);

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

vopros,otvet1,otvet2,otvet3,otvet4: array[1..30] of string;

da1,da2,da3,da4: array[1..30] of integer;

nvar: string;

end;

var

Form1: TForm1;

implementation

uses Unit2;

{$R *.dfm}

var

f: TextFile; // файл теста (вопросы и варианты ответов)

n: integer; // количество вопросов в тесте

prav: integer; // количество правильных ответов

level: array[1..4] of integer; // критерии оценок

mes: array[1..4] of string; // комментарии

dd: string;

procedure TForm1.Button2Click(Sender: TObject);

begin

form1.Close

end;

procedure TForm1.Button1Click(Sender: TObject);

var

i: integer;

label 1;

begin

if form1.Edit1.Text='' then

begin

showmessage ('Введите свою Фамилию!');

abort;

end;

if form1.Edit2.Text='' then

begin

showmessage ('Введите своё Имя!');

abort;

end;

if radiobutton1.checked then

begin

nvar:='var1.txt';

end

else

begin

if radiobutton2.checked then

begin

nvar:='var2.txt';

end

else

begin

if radiobutton3.checked then

begin

nvar:='var3.txt';

end

else

begin

if radiobutton4.checked then

begin

nvar:='var4.txt';

end

else

begin

showmessage ('Ноебходимо выбрать вариант');

abort;

end;

end;

end;

end;

form2.show;

b:=1;

form1.hide;

Assignfile(f,nvar);

try

reset(f);

except

end;

readln(f,dd);

form2.Caption:=dd;

for i:=1 to 4 do

begin

readln(f,dd);

mes[i]:=dd;

readln(f,dd);

level[i]:=strtoint(dd);

end;

for i:=1 to 1000 do

begin

if not EOF(f) then

begin

readln(f,dd);

vopros[i]:=dd;

readln(f,dd);

otvet1[i]:=dd;

readln(f,dd);

da1[i]:=strtoint(dd);

readln(f,dd);

otvet2[i]:=dd;

readln(f,dd);

da2[i]:=strtoint(dd);

readln(f,dd);

otvet3[i]:=dd;

readln(f,dd);

da3[i]:=strtoint(dd);

readln(f,dd);

otvet4[i]:=dd;

readln(f,dd);

da4[i]:=strtoint(dd);

n:=i;

end

else

goto 1;

end;

1:

prav:=0;

i:=1;

form2.Label2.Caption:= vopros[i];

form2.CheckBox1.Caption:= otvet1[i];

form2.CheckBox1.Tag:=da1[i];

form2.CheckBox2.Caption:= otvet2[i];

form2.CheckBox2.Tag:=da2[i];

form2.CheckBox3.Caption:= otvet3[i];

form2.CheckBox3.Tag:=da3[i];

form2.CheckBox4.Caption:= otvet4[i];

form2.CheckBox4.Tag:=da4[i];

form2.Button1.Enabled:=false;

end;

end.

2.2.3. Создание и работа второй пользовательской формы (Unit2)

Вторая пользовательская форма содержит два текстовых поля (Label1, Label2), четыре флажка (CheckBox1, CheckBox2, CheckBox3, CheckBox4), две кнопки (Button1, Button2) и один рисунок (Image1).

На второй пользовательской форме тестируемый школьник видит номер задания, текст вопроса и варианты ответов. Тестируемому необходимо выбрать один из вариантов ответа (кликнуть на одном из флажков) и нажать кнопку «Далее». В правом верхнем углу формы отображается рисунок (.bmp). Предусмотрена возможность выхода из тестирующей программы не доходя до последнего вопроса теста. Для этого необходимо нажать кнопку «Выход».

РДипломная работа на тему : «Объектно – ориентированное программирование Object Pascal. Создание тестирующей программы по информатике»

исунок 2.4. Вторая пользовательская форма

При появлении второй формы кнопка «Далее» является неактивной до тех пор, пока тестируемый не выберет один из вариантов ответа. В текстовом поле Label1 заносится «Задание 1». В текстовом поле Label2 отображается первый вопрос теста, а во флажках - варианты ответа. При нажатии на кнопку «Далее» выполняется процедура обработки события TForm2.Button1Click. Эта процедура увеличивает на единицу номер вопроса в текстовом поле Label1. В текстовом поле Label2 отображается следующий вопрос, а в названиях флажков отображаются варианты ответов на этот вопрос. В правом верхнем углу отображаемый рисунок заменяется на новый. Все рисунки находятся в папке проекта. После ответа на все вопросы флажки на форме становятся невидимыми. В текстовом поле Label1 и Label2 отображаются результаты теста. Название на кнопке Button1 заменяется на «Завершить».

РДипломная работа на тему : «Объектно – ориентированное программирование Object Pascal. Создание тестирующей программы по информатике»

исунок 2.5. Результат тестирования на 2-ой форме

Ниже приведём листинг модуля Unit1.

unit Unit2;

interface

uses

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

Dialogs, StdCtrls, ExtCtrls;

type

TForm2 = class(TForm)

Label1: TLabel;

Label2: TLabel;

CheckBox1: TCheckBox;

CheckBox2: TCheckBox;

CheckBox3: TCheckBox;

CheckBox4: TCheckBox;

Button1: TButton;

Button2: TButton;

Image1: TImage;

procedure Button2Click(Sender: TObject);

procedure CheckBox1Click(Sender: TObject);

procedure CheckBox3Click(Sender: TObject);

procedure CheckBox4Click(Sender: TObject);

procedure CheckBox2Click(Sender: TObject);

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

nvar,sss: string;

t: integer;

end;

var

Form2: TForm2;

b,i: integer;

c: string;

vopros,otvet1,otvet2,otvet3,otvet4: array[1..30] of string;

da1,da2,da3,da4: array[1..30] of integer;

implementation

uses Unit1;

{$R *.dfm}

var

f: textfile; // файл теста

j,n: integer; // количество вопросов в тесте

prav: integer; // количество правильных ответов

level: array[1..4] of integer; // критерии оценок

mes: array[1..4] of string; // комментарии

dd: string;

procedure TForm2.Button2Click(Sender: TObject);

begin

form2.close;

form1.close;

end;

procedure TForm2.CheckBox1Click(Sender: TObject);

begin

if CheckBox1.Checked then

begin

CheckBox2.Checked:=false;

CheckBox3.Checked:=false;

CheckBox4.Checked:=false;

end;

Button1.Enabled:=true;

end;

procedure TForm2.CheckBox3Click(Sender: TObject);

begin

if CheckBox3.Checked then

begin

CheckBox2.Checked:=false;

CheckBox1.Checked:=false;

CheckBox4.Checked:=false;

end;

Button1.Enabled:=true;

end;

procedure TForm2.CheckBox4Click(Sender: TObject);

begin

if CheckBox4.Checked then

begin

CheckBox2.Checked:=false;

CheckBox3.Checked:=false;

CheckBox1.Checked:=false;

end;

Button1.Enabled:=true;

end;

procedure TForm2.CheckBox2Click(Sender: TObject);

begin

if CheckBox2.Checked then

begin

CheckBox1.Checked:=false;

CheckBox3.Checked:=false;

CheckBox4.Checked:=false;

end;

Button1.Enabled:=true;

end;

procedure TForm2.Button1Click(Sender: TObject);

var

dd: string;

label 2;

begin

t:=t+1;

if t<=8 then

begin

sss:=inttostr(t)+'.bmp';

end;

if (t>8) and (t<=16) then

begin

sss:=inttostr(t-8)+'.bmp';

end;

if t>16 then

begin

sss:=inttostr(t-16)+'.bmp';

end;

form2.Image1.Picture.LoadFromFile(sss);

if form1.radiobutton1.checked then

begin

nvar:='var1.txt';

end

else

begin

if form1.radiobutton2.checked then

begin

nvar:='var2.txt';

end

else

begin

if form1.radiobutton3.checked then

begin

nvar:='var3.txt';

end

else

begin

nvar:='var4.txt';

end;

end;

end;

i:=b+1;

if i=2 then

begin

Assignfile(f,nvar);

try

reset(f);

except

end;

readln(f,dd);

for j:=1 to 4 do

begin

readln(f,dd);

mes[j]:=dd;

readln(f,dd);

level[j]:=strtoint(dd);

end;

for j:=1 to 1000 do

begin

if not EOF(f) then

begin

readln(f,dd);

vopros[j]:=dd;

readln(f,dd);

otvet1[j]:=dd;

readln(f,dd);

da1[j]:=strtoint(dd);

readln(f,dd);

otvet2[j]:=dd;

readln(f,dd);

da2[j]:=strtoint(dd);

readln(f,dd);

otvet3[j]:=dd;

readln(f,dd);

da3[j]:=strtoint(dd);

readln(f,dd);

otvet4[j]:=dd;

readln(f,dd);

da4[j]:=strtoint(dd);

n:=j+1;

end

else

goto 2;

end;

end;

2:

b:=b+1;

c:=floattostr(b);

label1.Caption:='Вопрос '+ c ;

if CheckBox1.Checked then

prav:=prav+CheckBox1.Tag;

if CheckBox2.Checked then

prav:=prav+CheckBox2.Tag;

if CheckBox3.Checked then

prav:=prav+CheckBox3.Tag;

if CheckBox4.Checked then

prav:=prav+CheckBox4.Tag;

if Button1.Caption = 'Завершить' then close;

if ithen

begin

form2.Label2.Caption:= vopros[i];

form2.CheckBox1.Caption:= otvet1[i];

form2.CheckBox1.Tag:=da1[i];

form2.CheckBox2.Caption:= otvet2[i];

form2.CheckBox2.Tag:=da2[i];

form2.CheckBox3.Caption:= otvet3[i];

form2.CheckBox3.Tag:=da3[i];

form2.CheckBox4.Caption:= otvet4[i];

form2.CheckBox4.Tag:=da4[i];

form2.CheckBox1.Checked:=false;

form2.CheckBox2.Checked:=false;

form2.CheckBox3.Checked:=false;

form2.CheckBox4.Checked:=false;

form2.Button1.Enabled:=false;

i:=i+1;

end

else

begin

Button1.Caption := 'Завершить';

CheckBox1.Visible:=false;

CheckBox2.Visible:=false;

CheckBox3.Visible:=false;

CheckBox4.Visible:=false;

dd:='Тестирование завершено.'+#13+ 'Правильных ответов: '+inttostr(prav)+'из '+inttostr(n-1)+'.'+#13;

i:=1;

while (pravdo

inc(i);

dd:=dd+mes[i];

form2.Label1.Caption:='Уважаемый(ая) ' + form1.Edit2.Text+' '+

form1.Edit1.Text+ '!';

form2.Label1.AutoSize:=true;

form2.Label1.WordWrap:=true;

form2.Label1.Font.Size:=14;

label2.Caption:=dd;

end;

end;

end.

Заключение

В настоящее время во многих вузах России вступительные экзамены проводятся в форме тестирования на ЭВМ. Но такая форма предполагает определенную начальную подготовку учащегося как пользователя персонального компьютера. Ребёнок никогда не работавший с тестами часто допускают ошибки не из-за незнания предмета, а из-за неумения работать с тестами.

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

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

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

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

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

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

В первой главе описывается интерфейс интегрированной среды разработки Delphi 6. Подробно рассматриваются станицы компонентов библиотеки VCL. Приводится список всех файлов проекта Delphi. Также в первой главе описываются основные понятия объектно-ориентированного языка программирования - Object Pascal. Приводится подробная классификация и описание всех типов данных языка Object Pascal.

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

Библиография

  1. Романов А.В. Методика подготовки и проведения тестового контроля в учебном процессе. Чебоксары: Клио, 1998.

  2. Селевко Г.К. Современные образовательные технологии: учебное пособие. М.Народное образование, 1998.

  3. Гузеев В.В. Школьные технологии. Оценка, рейтинг, тест Народное образование, 1998. №3.

  4. Культин Н.Б. Delphi в задачах и примерах. СПб.: БХВ-Петербург, 2005.

  5. Архангельский А.Я. Delphi 7. Справочное пособие. М: ООО «Бином-Пресс», 2004.

48

© 2010-2022