Как известно, в настоящее время наиболее распространенными алгоритмическими языками являются Паскаль и Си. Именно эти языки используются практически на всех действующих вычислительных системах- от супер-ЭВМ до персональных компьютеров. Что касается ПЭВМ, то лидером семейства языков Паскаль для них, без сомнения, является Турбо Паскаль 7.0, разработанный фирмой Borland. Эта последняя версия позволила объединить в рамках единой системы мощный алгоритмический потенциал языка, методы объектно-ориентированного программирования, современную графику, удобные средства тестирования и отладки программ, а также обеспечить дружественный интерфейс с пользователями.[1] Поэтому я выбрал этот язык программирования как основу для создания тестового редактора.
Я решил создать тестовый редактор, потому что именно тесты в последнее время завоевывают все большую популярность. Они позволяют быстро и довольно точно проверить уровень знаний по тому или иному предмету, узнать ту или иную информацию о тестирующемся. Конечно, тест без труда можно составить вручную, но потребуется много времени, чтобы его размножить. Кроме того, можно в любой момент протестироваться и мгновенно узнать результаты.
Разрабатывая программу шаг за шагом, я выделил основные функции, присутствующие в любом редакторе и, конечно, в моем, а именно:
создание нового файла теста
открытие теста и тестирование
редактирование теста
просмотр результатов
печать файла
выход из программы.
В процессе создания редактора я выделил основные этапы моей работы, возникающие в связи с этим задачи и их решение. Надеюсь, прочитав мою работу, вы учтете мой опыт и продолжите начатые исследования в области редакторов. Программа может быть использована учебными заведениями в качестве пособия для создания тестов.
Начнем исследование со статьи о конструировании программ.
Конструирование программ.
Конструирование программ - один из важнейших разделов современной информатики. Бурное развитие программно-аппаратных средств, появление новых стилей и технологий программирования, как ни парадоксально, не снижают, а повышают уровень требований к массовой алгоритмической культуре. Практически все диалоговые системы являются программируемыми. Методика конструирования программ легко переносится на другие процедурные языки программирования, в том числе и объектно-ориентированные.[2]
В соответствии с технологией конструирования программ построена программа тестового редактора. Я разделил ее на этапы:
Создание структурной программы, во многом неудобной в использовании из-за отсутствия диалога, упорядоченного ввода и вывода информации и многого другого. Исходная программа имела лишь основные функции. Она была «ядром», осуществлявшим все процессы и функции редактора. В следующей главе в точности приведен текст структурной программы.
Разбиение сплошного текста программы на процедуры. Таким образом, текст стал занимать не так много места, исчез оператор варианта, многие метки, ссылки и т. п. Надо сказать, многие программисты предпочитают вводить процедуры в программу. Это значительно упрощает ее.
Введение оконной системы с помощью доступных возможностей языка (оператор Window). Это позволило значительно упростить работу, создать диалог пользователя с программой, уменьшить количество информации, поступающей к пользователю и количество ее «потоков».
Введение объекта- панели управления. Вы можете видеть ее внизу экрана. Она взяла на себя управление функциями редактора. Причем введение объекта значительно упростило программу. Методы работы с объектами вы можете прочитать в главе «Объектное программирование».
Структурное программирование.Структурное программирование- это программирование, технология которого предполагает использование суперпозиции трех базовых алгоритмических структур: линейной, разветвленной и циклической. Но для создания сложных программ используются более сложные принципы. Принцип Суперпозиции- сочетание структур со взаимным вложением (сложением). Предусматривает взаимное включение структур.
Турбо Паскаль способствует внедрению современной технологии программирования, основанной на принципах структурного программирования и пошаговом методе проектирования программ. Основные операторы языка являются хорошей иллюстрацией базовых управляющих конструкций структурного программирования. Их использование позволяет записывать сложные алгоритмы обработки данных в компактной форме.[3]
Хотя Бейсик не является полностью структурным языком, в нем отражены основные концепции структурного программирования. рассмотрим их подробнее.
Бейсик- язык программирования ПЭВМ.
Бейсик - диалоговый язык высокого уровня, ориентированный на пользователей ПЭВМ, непрофессионалов в области вычислительной техники. Бейсик - преимущественно интерпретирующая программа, позволяющая производить построчную отладку текстов программ. Данный способ гораздо удобнее для начинающих программистов, нежели компилирование (компилятор производит отладку только целой программы, а не по частям), и широко используется в Паскале. Отличительной чертой структурных языков являются краткие однозначные операторы (в отличие от длиннейших команд объектного программирования)*.
В некоторых версиях Бейсика имеется встроенный редактор программ, позволяющий работать с текстом программы из командного окна. Работа с программой осуществляется в трех различных режимах:
Непосредственное общение
Ввод программ
Вычисление по введенной в ОЗУ программе
В основном, Паскаль выполняет те же функции что и Бейсик. Однако Паскаль имеет больший потенциал в областях програмимирования, работы с «компьютерным железом», создания собственных модулей и систем.
Структурная программа.Первым этапом разработки программы стало написание текста структурной программы. Структурная программа- последовательность простых команд, операторов, реализующая ядро, то есть действие программы. Уже на этом этапе программа работает с текстовыми файлами. Для осуществления связей между отдельными частями программы, реализующими функции редактора, я использовал оператор безусловного перехода GoTo.
Ниже приведена схема структурной программы тестового редактора, объясняющая соответствующий подход к программированию. Основной список операторов вырезан и заменен на . Конечный вид программы будет приведен в главе “Объектное программирование” объектов.
Program redactor;
uses crt,printer; {подключение модулей}
label l1,l2,l3,l4; {метки}
Var a,f,f1,a2:string; {раздел описаний}
b,k:char;
c,u,y,a1,b1:text;
d,e,i,j,p,z:integer;
c1:boolean;
Procedure oform; {процедура оформления начала программы}
Begin
End;
Begin
oform; {оформление начала программы}
Writeln('Новый файл(New),Открыть файл(Open),Редактирование(Redact),'); {вывод
альтернативных функций}
Writeln('Просмотр результатов(Search),Выход(Any key)');
b:=readkey; {выбор нужной функции}
case b of {оператор варианта}
По нажатию соответствующей клавиши происходит выбор функции.
'n','в':Begin
l1: {выполнение функции}
End;
'o','й':Begin
l2: {выполнение функции}
End;
'r','Є':Begin
l3: {выполнение функции}
End;
's','ы':Begin
l4: {выполнение функции}
End;
End;
Writeln('Новый файл(New),)Открыть файл(Open),Редактировать(Redact)'); {запрос о выборе перед
выходом}
Writeln('Просмотр результатов(Search),Выход(Any key)');
b:=readkey; {выбор варианта}
case b of {оператор варианта}
'n','т':GoTo l1; {ссылка на метку}
'o','щ':GoTo l2;
'r','к':GoTo l3;
's','ы':GoTo l4;
End;
Набор операторов безусловного перехода для возвращения к той или иной функции.
End.
На экран выводится список возможных функций программы. Для выбора определенной функции необходимо нажать соответствующую клавишу (указана в скобках заглавной буквой). Затем оператор варианта запускает нужную функцию. Как видно, учтен случай непереключенного алфавита (буквы вводятся как латинские, так и русские).
Перед выходом вновь выводится данный запрос (так как цикл неуместен) и в случае выбора определенной функции происходит ссылка на функцию.
Доработка программы.После отладки начальной программы потребовалось ввести дополнительные функции. Помимо стандартной функции создания и открытия готового теста, появились такие как редактирование тестов, подсчет результатов и выставление оценки, таймер, составление отчета, защита тестов от просмотра. Но самое главное- это усовершенствование интерфейса, введение оконной диалоговой системы.
Рассмотрим перечисленные функции. Функция подсчета результата записана так:
z:=p*100 div z; {расчет количества правильных ответов}
Writeln('количество правильных ответов: ',p);
Write('оценка '); {выставление оценки}
If z>=90 Then Begin
Writeln('5')
Writeln(b1,’5’);
End;
else If z>=70 Then Begin
Writeln('4')
Writeln(b1,’4’);
End;
else If z>=40 Then Begin
Writeln('3')
Writeln(b1,’3’);
End;
else Begin
Writeln('2')
Writeln(b1,’2’);
End;
Readln;
Write('Фамилия: '); {вписывание фамилии}
Readln(a);
d:=length(a); {выставление пробелов}
Write(b1,a); {запись в файл}
For i:=1 to 14-d do Write(b1,' ');
Write('Имя: '); {вписывание имени, процедура повторяется}
Readln(a);
Write(b1,a);
d:=length(a);
For i:=1 to 11-d do Write(b1,' ');
Write('Отчесчтво: '); {вписывание отчества, процедура повторяется }
Readln(a);
Write(b1,a);
d:=length(a);
For i:=1 to 17-d do Write(b1,' ');
Write(b1,f);
d:=length(f);
For i:=1 to 8 do Write(b1,' ');
GetDate(g1,g2,g3,g4); {проставление даты}
Writeln(b1,g3,'.',g2,'.',g1);
close(b1);
Window(15,10,50,19);
TextBackGround(black);
clrscr;
Программа рассчитывает количество правильных ответов по формуле, в соответствии с этим выставляет оценку, спрашивает ваши ФИО, записывает их в файл, проставляет название теста и дату его прохождения. При этом используется метод работы со строками: конкатенация(слияние) строк. Проблемой стало корректное вписывание в файл строки, так как количество букв может быть разным, поэтому программа проставляет пробелы в файл между данными, используя данные о длине строк фамилии, имени, отчества и вычитая их из постоянного числа
Таймер, системное время.
Таймер был разработан для отсчета времени на тест, время вводится предварительно составителем теста. Кроме того, параллельно с выводом времени на тест выводится текущее системное время. Действие таймера основано на переменной-счетчике, которая через определенные промежутки времени уменьшает свое значение на 1(секунду). Системное время выводится благодаря процедуре GetTime.
Repeat {цикл счетчика времени}
Window(60,20,70,21); {окно вывода времени}
TextBackGround(black);
clrscr;
z2:=z2-1; {обратный отсчет секунд}
If z22 Then Begin{проверка наличия в файле пароля}
Write('введите пароль ');
Readln(f); {ввод пароля}
If af Then Begin
Write('пароль неверный');
GoTo l1; {выход из процедуры}
End;
End
else Begin
close(u);
Reset(u);
End;
Readln(c,f);
Writeln('тест по теме "',f,'"'); {вывод темы теста}
z2:=60;
repeat
Window(60,20,70,21); {закрытие окна пароля}
TextBackGround(black);
clrscr;
TextColor(yellow);
z2:=z2-1; {включение таймера}
Похожие работы
... времени на возню с файлами на дисках или ожидание ввода, не смогут продемонстрировать какое-то впечатляющее увеличение скорости. 2. КЛАССИФИКАЦИЯ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ 2.1. Машинно – ориентированные языки Машинно – ориентированные языки – это языки, наборы операторов и изобразительные средства которых существенно зависят от особенностей ЭВМ (внутреннего языка, структуры памяти и ...
... . Например, не существует типа матрица с операцией обращения или типа строка с операцией конкатенации. Если пользователю понадобятся подобные типы, он может определить их в самом языке. Программирование на С++ по сути сводится к определению универсальных или зависящих от области приложения типов. Хорошо продуманный пользовательский тип отличается от встроенного типа только способом определения, но ...
... программ, которые применяются для передачи компьютеру инструкций по выполнению того или иного вычислительного процесса и организации управления отдельными устройствами. Задача: язык программирования отличается от естественных языков тем, что предназначен для передачи команд и данных от человека компьютеру, в то время как естественные языки используются лишь для общения людей между ...
... . И хотя, используя недокументированные возможности и определённые ухищрения, всё это можно реализовать и на VB; пользоваться этими трюками гораздо сложнее, чем, например, на Delphi. 4. ПРАКТИЧЕСКАЯ РЕАЛИЗАЦИЯ ЗАДАЧ С ИСПОЛЬЗОВАНИЕМ ЯЗЫКА ПРОГРАММИРОВАНИЯ DELPHI 4.1 Задача 1. Примитивный калькулятор 1. Войдите в среду Delphi, дважды щелкнув мышью на пиктограмму Delphi или через меню “ ...
0 комментариев