Разработка компьютерных тестов на основе булевых функций

Автор работы: Пользователь скрыл имя, 06 Мая 2013 в 10:18, курсовая работа

Краткое описание

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

Содержание

Введение…………………………………………………………………………...3

Глава I Элементарные булевы функции……………………………..5

Глава II СОЗДАНИЕ ПРОГРАММЫ ДЛЯ ТЕСТИРОВАНИЯ………………12
2.1 Необходимые методы………………………………………………...12
2.2 Реализация алгоритма программы для тестирования………………13
2.3 Блок-схема программы для тестирования…………………………..23
2.4 Исходный код файла для создания файла с вопросами и ответами…………………………………………………………………………..24
2.5 Исходный код файла для чтения файла с вопросами и введения ответов……………………………………………………………………………24

Заключение……………………………………………………………………….28

Список использованных источников…………………………………………...29

Вложенные файлы: 1 файл

Курсовая разр.комп.тестов.на основ. булев.функций.docx

— 92.49 Кб (Скачать файл)

Выражения вида (x or y), (x and y), ((x and not(y)) or (not(x) and y)), и т.п. — называются булевыми. Каждое булево выражение задает булеву функцию. Мы увидим, что верно и обратное: каждая булева функция может быть задана булевым выражением.

Функция f, зависящая от n переменных x1, x2,…, xn называется булевой, или переключательной, если функция f и любой из ее аргументов операторы: AND, OR, NOT, XOR — «и», «или», «не», «разделительное или».

Оператор and называется также конъюнкцией, оператор or — дизъюнкцией, оператор not — отрицанием. Выражения вида (x or y), (x and y), ((x and not(y)) or (not(x) and y)), и т.п. — называются булевыми.

Каждое булево выражение  задает булеву функцию. Мы увидим, что  верно и обратное: каждая булева функция может быть задана булевым  выражением. Функция f, зависящая от n переменных x1, x2,…, xn называется булевой, или переключательной, если функция f и любой из ее аргументов принимают значения только из множества {0, 1}. Аргументы булевой функции также называются булевыми.[4]

Итак, в языке Pascal имеются две логические константы: TRUE(истина) и FALSE(ложь). Логическая переменная может принять любое из этих значений и имеет тип boolean. Логические данные широко используются при проверке правильности некоторых условий и при сравнении величин.

Результат может оказаться «истинным» или «ложным».

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

 

Булевские операции:

Оператор

Операция

Тип операндов

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

not

отрицание

Boolean

Boolean

and

логическое И

Boolean

Boolean

or

логическое ИЛИ

Boolean

Boolean

xor

логическое исключающее  ИЛИ

Boolean

Boolean


 

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

A

B

NOT (A)

(A) OR (B)

(A) AND (B)

T

T

F

T

T

T

F

F

T

F

F

T

T

T

F

F

F

T

F

F


 

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

Например: (c>10) or (d<3) имеет истинный результат при c=12 и d=2, а ложный при c=8 и d=5.

При вычислении значений булевских  выражений необходимо учитывать  порядок выполнения булевских операций. Наивысший приоритет имеет операция NOT, затем операция AND и затем операция OR. Операции сравнения имеют самый низкий приоритет.

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

Пример: a, l1, f: Boolean.

В языке Pascal существуют такие функции, которые принимают тип boolean:

1. ODD(A) — значение истинно, когда А — не четное число;

2. EOLN — значение истинно, если конец строки текстового файла;

3. EOF — значение истинно, если конец текстового файла.[5]

 

Логический тип Boolean

В Pascal имеются четыре предопределенных булевых типа:

  • Boolean;
  • WordBool;
  • LongBool;
  • ByteBool.

 

Синтаксис в Pascal

  • Type Boolean=(False, True);
  • WordBool=(False, True);
  • LongBool=(False, True);
  • ByteBool=(False, True);

 

Режим

Windows, Real, Protected

Замечания

Эти типы имеют следующие  размеры:

  • Boolean — Byte (8 бит);
  • WordBool — Word (16 бит);
  • LongBool — LongInt (32 бита);
  • ByteBool — Byte (8 бит)

 

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

  • False < True
  • Ord(False)=0
  • Ord(True)=1
  • Succ(False)=True
  • Pred(True)=F

 

Логический тип Boolean является более предпочтительным в использовании, так как он использует меньшее  количество памяти. ByteBool, WordBool и LongBool используются только под Windows.

В выражениях, следующие  операторы сравнения производят результат типа Boolean: = <> > < >= <= IN

Для совместимости с операционной системой MS Windows, логические типы могут принимать порядковые значения не только 0 и 1.

Булево выражение является ложью (False), если его порядковое значение равно нулю и истиной (True), если его  порядковое значение не равно нулю.

Логические операторы Not, And, Or и Xor работают, проверяя значения на 0 (False) или не 0 (True), но всегда возвращают результат с порядковым значением равным 0 или 1.[6]

 

 

II СОЗДАНИЕ ПРОГРАММЫ ДЛЯ ТЕСТИРОВАНИЯ

 

2.1 Необходимые методы

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

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

Чтобы можно было ссылаться  на тот или иной тип компонент  записи, поля именуются.

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

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

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

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

 

 

 

 

 

    1. Реализация алгоритма программы для тестирования

Для реализации алгоритма  создадим две программы:

  1. Программа "Vvod" — это программа, которая создаёт файл с вопросами и ответами;
  2. Программа "Initialization" — при запуске программы выводится сообщение о начале тестирования и производится инициализация файла, то есть считывание вопросов и даётся возможность ввести свои ответы на вопросы.

 

1. "Vvod". Создаём запись. Раздел записи состоит из нескольких идентификаторов полей, за идентификатором ставится двоеточие, и описание типа полей.

 

Type rec=record

vopros:string;

otvet:string;

end;

 

Здесь показано, что rec есть запись с полями vopros, otvet строкового типа:

  • Vopros — будет содержать вопрос;
  • Otvet — будет содержать ответ.

 

Создадим переменные:

f — файл стрингового типа;

x — переменная целого типа, используется в качестве счётчика, который используется в цикле ввода вопросов;

q — данная переменная содержит запись типа rec, для ввода записи в файл.

 

Тело программы:

В начале программы, счётчик х обнуляем: х:=0. С помощью операторов Assign и Rewrite создается файл данная программа создает запись в файл name.dat. Создаём цикл с пост условием(repeat).

Счётчику х присвоим шаг +1: х:=х+1: то есть после каждого прохода цикла, х будет на одну единицу больше.

Для текстовых файлов, открытых процедурой RESET, нельзя использовать процедуру WRITE или WRITELN. Нужно использовать стандартную  процедуру REWRITE.

REWRITE (<ф.п.>) инициирует запись информации в файл , связан с sq ранее с файловой переменной <f>.

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

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

При запуске программы  на экране будет выводиться сообщение "ввести вопрос". После считывания переменной q. vopros происходит запись в файл и на экране выводится новое сообщение "введите ответ" считывания переменной q. otvet происходит запись в файл. На экране выводится новое сообщение "ввести вопрос".

Эти два сообщения будут  выводиться на экран и записываться в файл name.dat до тех пор, пока вы не введёте двадцать вопросов и ответов, то есть пока х не будет равен n (Условие выхода из цикла: until x=n).

После окончания количества сеансов ввода, файл закрывается.

Функция close(f) — закрывает файл, однако связь файлов с именем файла, установленная ранее процедурой ASSIGN, сохраняется. Вызов процедуры Close необходим при завершении работы с файлом.

 

Если по какой-то причине  процедура Close не будет выполнена, файл все — же будет создан на внешнем устройстве, но содержимое последнего буфера в него не будет перенесено.

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

program Vvod;

type rec=record

vopros:string;

otvet:string;

end;

var f:file of string;

x:integer;

q:rec;

begin

x:=0;

assign(f,'name.dat');

rewrite(f);

repeat

x:=x+1;

writeln('введите вопрос');

readln(q.vopros);

write(f,q.vopros);

writeln('введите ответ');

readln(q.otvet);

write(f,q.otvet);

until x=n;

close(f);

end.

 

 

2. "Initialization". В начале этой программы на дисплей выводится сообщение процедуры "Main Menu".

Для начала тестирования нажмите  клавишу "y". Для возможности редактирования вопросов или же выхода из программы необходимо нажать клавишу "R".

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

uses crt;

const simbol:set of char=['y','Y','n','N',’r’,’R’,’t’,’T’];

….

var … key:char;

Procedure MainMenu(posmaster:word);

 

В описании констант мы указываем ['y','Y','n','N',’r’,’R’,’t’,’T’] — это символы которые вводятся с клавиатуры. Затем начнем цикл с постоянным условием

Repeat

 

Ключу (key) присвоим значение считать ключ (readkey), а при этом условие выхода ключ, указанный в списке констант (until key in symbol):

key:=readkey until key in simbol;

 

После нажатия клавиши 'y','Y' осуществляется дальнейшее считывание. Срабатывает процедура "Test".

case key of

'y','Y':writeln;

…;

end;

 

После нажатия клавиши 'r','R'.

case key of

'r','r':begin

 

На экран выводится сообщение "Для завершения программы нажмите — n" "Для редактирования вопросов — T".

При нажатии "n" происходит завершение программы и, всех процедур и функций.

case key of

'n','N':halt;

 

При нажатии "T" — происходит редактирование вопросов и ответов.

case key of

't','T':begin

…;

End;

 

Вы должны указать количество вопросов, после чего будет совершена  перезапись файла. Для этого в  теле основной программы нужно указать  счетчик "x" — целого типа, он указывает количество вопросов; и счетчик "j" — для использования в качестве условия выхода из цикла:

until j=x;

 

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

 

 

 

 

 

Процедура "umnogenie"

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

Procedure umnogenie;

Begin

Writeln(‘учтите, что при вводе ответа знак умножения "*" — обязателен’);

Writeln(‘ иначе ответ не будет считаться правильным. ‘);

Writeln (‘Для продолжения нажмите ENTER’);

End.

 

Процедура " Test"

Создадим переменные:

  • Readstring — переменная, необходимая для считывания переменной стрингового типа из файла;
  • Otv — переменная стрингового типа, необходимая для ввода ответа;
  • Otvfile — переменная ответа из файла, необходимая для сравнения правильности ответов на вопросы;
  • z, e, u — ряд переменных целого типа (счетчики).
    • "z" — Количество вопросов;
    • "е" — Счётчик правильных ответов;
    • "u" — Оценка.

 

  • z1, z2, z3 — переменные действительного типа, для определения количества правильных ответов на оценку.

 

 

 

 

Переменные z1, z2, z3 описываем в теле основной программы:

Var … z1, z2, z3: integer;

 

Эти переменные зависят от того сколько именно вопросов "x" вы ввели. Количество вопросов делим на заданные числовые переменные.

Информация о работе Разработка компьютерных тестов на основе булевых функций