Реферат: Использование ЭВМ при обучении математике

--PAGE_BREAK--§
2. Классификация учебно-программных средств.


Место компьютера в учебном процессе во многом определяется типом обучающей программы. Некоторые из них предназначены для закрепления умений и навыков. Место таких программ определить не трудно: их можно использовать после усвоения определенного теоретического материала в рамках традиционной системы обучения. Другие программы ориентированы преимущественно на усвоение новых понятий в режиме, близком к программированному обучению. Большинство их обладает ограниченными дидактическими возможностями. Компьютер здесь используется как средство программированного обучения, несколько более совершенное, чем простейшее обучающее устройство, но не допускающее развернутого диалога, содержащее, как правило, фиксированный набор обучающих воздействий. Преобладают обучающие программы, которые реализуют проблемное обучение, особенно “интеллектуальные” обучающие программы (своим названием они обязаны тому, что при их разработке использованы идеи “искусственного интеллекта”). Эти системы осуществляют рефлексивное управление учебной деятельностью, что предполагает построение модели обучаемого. Многие из них генерируют обучающие воздействия (учебные тексты, задачи, вопросы, подсказки). Такие системы, как правило, учитывают правильность ответа, но и способ решения, могут его оценивать, а некоторые — совершенствовать стратегию обучения учетом накапливаемого опыта. Имеются системы, которые могут обсуждать с учащимися не только правильность решения но и возможные варианты решения, причем в языке, близком к естественному. По мнению педагогов и психологов, знакомившихся с протоколами диалогов, создается такое впечатление, что общались ученик и учитель.

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

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

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

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

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

Работа ученика с УКМ может длиться несколько минут, а может и весь урок (лабораторная работа или работа практикума на базе ЭВМ). Но ни в том, ни в другом случае необходимы определенные указания учителя по организации учебной деятельности, во втором случае, кроме того, необходимы печатные пособия, содержащие описания лабораторной или практической работы.

Выделим те свойства УКМ, которые будут способствовать успешному применению этих моделей в учебном процессе.

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

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

3. Динамичность. Современные ЭВМ позволяют наблюдать на экране дисплея не просто неподвижные картинки, но изображение различных явлений в их движении, развитии.

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

5. Простота управления работой УКМ.

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

Отметим, что пункты 1-3 характеризуют в основном саму УКМ, 4-6 процесс ее использования, особенности взаимодействия пользователя с моделирующей программой. Свойства 1, 2, 5 и в пункте 4 — «возможность варьирования пользователем параметров модели» — следует, на наш взгляд, признать обязательными для всех УКМ, остальные в ряде случаев могут и не быть реализованы.

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

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

§
3. Анализ разработок обучающих программ.


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

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

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


Приведем схему данной классификации.
<img width=«576» height=«558» src=«ref-1_740373210-8685.coolpic» v:shapes="_x0000_s1026">


Структуры верхнего уровня составляют управляющие, предметные, инструментальные и объектные пакеты.

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

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

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

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

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

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

Глава II. Разработка обучающей программы.

§
1.Структура обучающей программы для ЭВМ.


Идеей создания программы объединяющей несколько обучающих программ послужило создание нового пользовательского интерфейса. Практически неподготовленный пользователь (в частности учащийся, с минимальным багажом знаний ПК), при запуске программы буквально за считанные минуты овладевает теми знаниями, требованиями необходимыми при работе с программой, что немаловажно при использовании компьютера при обучении математики. Курс ОИВТ в средней школе изучается в 10-11 классах, а если учесть, что программа написана для 5 или 6 класса, то у учащихся возникают проблемы, “как запустить программу”.

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

1. Работа в системе.

2. Справка о программе

3. Выход

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

При выборе пункта 1 (Работа в системе) на экране появляется дополнительное меню в котором учащемуся предлагается выбрать нужное задание (выбор задания аналогичен выбору пункта в главном меню). Варианты заданий будут рассмотрены в §2. Главы II.

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

При ошибочном входе в программу можно выбрать пункт 3 (Выход).

При необходимости добавления нового задания в дополнительное меню необходимо в каталог в котором находятся файлы программы переписать файлы программ с новыми заданиями, войти в дополнительное меню и нажать клавишу <F3>. После ввода названия пункта меню необходимо написать полное имя файла, при этом следует учитывать, что расширение файла должно иметь имя EXE,COM,BAT, или программа написанная на языке QBASICс расширениемBAS.

После этих процедур в дополнительном меню появляется новый пункт.

§
2.Разработка обучающей программы по теме “Векторы на плоскости”


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

В работе над программой перед авторами стояла задача контроля качества пройденного материала с помотаю ЭВМ.

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

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

-“Помощь”, раздел, который содержит в себе справочник по теоретическим основам темы “Векторы на плоскости”;

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

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

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

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

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

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

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

-усиление пропедевтического подхода в учебном курсе;

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

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

-контроль за учебной деятельностью обучаемого;

-возможность оценки освоения материала с одновременным анализом деятельности учащегося.

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

Структура программы. Интерфейс пользователя.

Комплекс обучающих программ по теме “Векторы на плоскости” состоит из следующих программ:

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

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

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

Каждая программа состоит из 10 однотипных заданий.

Все три программы имеют одинаковый внешний вид.

При входе в выбранную программу в правой части экрана появляется задание которое необходимо выполнить. В левой части экрана появляется изображение координатной плоскости. В правом верхнем углу нарисовано 10 яблок, которые являются индикатором степени выполняемости заданий. Если в процессе выполнения задания учащийся не допускает ошибок, то яблоко закрашивается в красный цвет, если учащийся допустил 1 ошибку яблоко приобретает желтую окраску, 2 ошибки — зеленый цвет, 3 ошибки — синий, 4 и более ошибок — белый.

Рассмотрим вариант программы (Умножение вектора на число). При запуске программы на в левой части экрана изображается координатная плоскость и стрелочка-курсор. Учащийся при помощи клавиш управления курсором перемещает стрелочку до места, где он предполагает отметить начало вектора и нажимает клавишу <ПРОБЕЛ>, тем самым отмечая на координатной плоскости начало вектора. Затем аналогичным образом он отмечает конец вектора. После этого все события переходят в правую часть экрана, где испытуемому предлагается указать координаты построенного вектора. При неправильном указании координат испытуемому предлагается повторить ввод координат.

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

Выйти из программы можно нажав клавишу <Esc>.

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

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

Программа написана на языке программированияQbasic. Программа требует для работы персональной компьютер совместимый сIBM PC386 и выше. Обязательно должен быть загружен драйвер кириллицы.



    продолжение
--PAGE_BREAK--§
3. Приложения


Приложение №1

Файл— modul.bas

REM ГЛАВНОЕ МЕНЮ

CLS

FILEHLP$ = «GLMENU.HLP»

menuha:

'вывод на экран меню

baz$ = «menu.dat»

dlin = 30

m = 1

GOSUB menu

IF rez1$ = «Работа в системе» THEN GOTO rmp

IF cur = 2 THEN GOSUB reklama

IF rez1$ = «Выход» THEN CLS: SYSTEM

GOTO menuha

rmp:

REM вывод на экран меню с темами

baz$ = «prog.dat»

baz$ = parh$ + baz$

dlin = 30

GOSUB menu

finalshow:

OPEN «bat.bat» FOR OUTPUT AS #1

FOR i = 1 TO LEN(rez2$)

IF MID$(rez2$, i, 1) = "." THEN rash$ = MID$(rez2$, i + 1, 3)

NEXT i

PRINT #1, "@echo off "

IF rash$ = «bas» THEN PRINT #1, "@qbasic.exe /run "; rez2$

IF rash$ = «com» OR rash$ = «exe» OR rash$ = «bat» THEN PRINT #1, rez2$

PRINT #1, "@del bat.bat"

CLOSE #1

CLS

SYSTEM

reklama:

OPEN FILEHLP$ FOR INPUT AS #1

S = 0

DO

ON ERROR GOTO 0

LINE INPUT #1, stran$

S = S + 1

LOOP UNTIL EOF(1)

CLOSE #1

IF FIX(S / 18) >= (S / 18) THEN KS = FIX(S / 18) ELSE KS = FIX(S / 18) + 1

DIM stran$(S)

OPEN FILEHLP$ FOR INPUT AS #1

FOR i = 1 TO S

ON ERROR GOTO 0

LINE INPUT #1, stran$(i)

NEXT i

CLOSE #1

NS = 1

GOSUB stran

obrabotka:

A$ = INKEY$

IF A$ = CHR$(0) + CHR$(73) THEN NS = NS — 1: GOSUB stran

IF A$ = CHR$(0) + CHR$(81) THEN NS = NS + 1: GOSUB stran

IF A$ = CHR$(27) THEN ERASE stran$: RETURN

GOTO obrabotka

stran:

IF NS < 1 THEN NS = 1: RETURN

IF NS > KS THEN NS = KS: RETURN

n = 18 * NS

'SLC:

LOCATE 1, 1

PRINT «г»; STRING$(64, "="); «T=============¬»

PRINT "¦"; STRING$(15, " ");: COLOR 15, 0: PRINT «ИНФОРМАЦИОННО — СПРАВОЧНАЯ СИСТЕМА»;: COLOR 7, 0: PRINT STRING$(15, " ");

IF NS < 10 THEN PRINT "¦ Страница "; NS; "¦" ELSE PRINT "¦ Страница"; NS; "¦"

PRINT "¦"; STRING$(64, " "); «L=============¦»

FOR i = n — 17 TO n

IF i > S THEN PRINT "¦"; STRING$(78, " "); "¦" ELSE PRINT "¦  "; stran$(i); STRING$((76 — LEN(stran$(i))), " "); "¦"

NEXT i

PRINT «L»; STRING$(78, "="); "-"

COLOR 1, 7: PRINT "  Выход — Esc ";

IF NS = 1 THEN COLOR 8, 7 ELSE COLOR 1, 7

PRINT "  Предыдущая страница — PageUp ";

IF NS = KS THEN COLOR 8, 7 ELSE COLOR 1, 7

PRINT "  Следующая страница — PageDown   "

COLOR 7, 0

RETURN

menu:

COLOR 7, 0

CLS

OPEN baz$ FOR INPUT AS #2

DIM mas$(150, 2)

INPUT #2, R$

i = 0

DO

i = i + 1

INPUT #2, mas$(i, 1)

INPUT #2, mas$(i, 2)

LOOP UNTIL EOF(2)

CLOSE #2

m = i

IF m > 10 THEN m = 10

R = INT((25 — m) / 2)

nashalo:

u = 1: cur = 1: cur1 = 1

uold = LEN(R$): uold = dlin — uold: uuold = INT(uold / 2): uuuold = uold — uuold

R1$ = STRING$(uuuold, "=") + R$ + STRING$(uuold, "=")   ' Формирование заголовка таблицы

tablisha:

LOCATE R, 1

PRINT STRING$(21, " "); «г»; R1$; "¬"

PRINT STRING$(21, " "); "¦"; STRING$(dlin, " "); "¦"

schet = 0

FOR t = u TO u + m — 1

schet = schet + 1

COLOR 7, 0: PRINT STRING$(21, " "); "¦";

IF cur1 = schet THEN COLOR 0, 7

' установка  стандартной длинны фразы

uold = LEN(mas$(t, 1)): uold = dlin — uold: uuold = INT(uold / 2): uuuold = uold — uuold

t$ = STRING$(uuuold, " ") + mas$(t, 1) + STRING$(uuold, " ")

PRINT t$;

COLOR 7, 0: PRINT "¦"

NEXT t

PRINT STRING$(21, " "); «L»; STRING$(dlin, "="); "-"

GOSUB smotr

chetire:

kbd$ = INKEY$

flag = 0

SELECT CASE kbd$

CASE CHR$(0) + «H»: cur = cur — 1: cur1 = cur1 — 1: flag = 1

CASE CHR$(0) + «P»: cur = cur + 1: cur1 = cur1 + 1: flag = 1

CASE CHR$(0) + CHR$(61): GOTO dopoln

CASE CHR$(13): GOTO final

CASE CHR$(27): CLS: SYSTEM

END SELECT

IF flag = 0 THEN GOTO chetire

IF cur = 0 THEN u = i — m + 1: cur = i: cur1 = m: GOTO tablisha

IF cur = i + 1 THEN GOTO nashalo

IF cur1 = 0 THEN u = u — 1: cur1 = 1

IF cur1 = m + 1 THEN: u = u + 1: cur1 = m

GOTO tablisha
smotr:

LOCATE 1, 1: COLOR 15, 3: PRINT STRING$(80, " ")

ddl = (80 — LEN(mas$(cur, 2))) / 2

LOCATE 1, 1: COLOR 15, 3: PRINT STRING$(ddl, " "); mas$(cur, 2)

COLOR 7, 0

RETURN

final:

rez1$ = mas$(cur, 1)

rez2$ = mas$(cur, 2)

ERASE mas$

RETURN

dopoln:

CLS

LOCATE 10, 20: COLOR 7, 0: PRINT «Добавление новой темы в меню»

LOCATE 12, 10: COLOR 7, 0: PRINT «Для отмены нажмите <Esc> или <F3> для продолжения»

mmm:

kbd$ = INKEY$

SELECT CASE kbd$

CASE CHR$(0) + CHR$(61): GOSUB pop

CASE CHR$(27): CLS: GOTO rmp

END SELECT

GOTO mmm

pop:

CLS

LOCATE 10, 10: COLOR 7, 0

PRINT «Введите название новой темы»

LOCATE 12, 10

PRINT «Введите имя файла»

COLOR 0, 7

LOCATE 10, 40: PRINT STRING$(31, " ")

LOCATE 12, 40: PRINT STRING$(31, " ")

LOCATE 10, 40: INPUT "", a1$

LOCATE 12, 40: INPUT "", a2$

ERASE mas$

CLS

OPEN baz$ FOR APPEND AS #1

PRINT #1, a1$

PRINT #1, a2$

CLOSE #1

GOTO rmp
Приложение №2

Файл — vector1.bas
REM СУММА ВЕКТОРОВ

'Константы

speed = 800           'Скорость

FILEHLP$ = «vector.hlp»

filerez$ = «vector.rez»

oshibka = 0           'Общее количество ошибок

k = 10                'Длина пера вектора

k1 = 3                'Ширина пера вектора

radius = 2            'Радиус начала вектора

zakr = 1              'Закраска начала вектора

zakrstr = 1           'Закраска стрелки вектора

c = 12                'Цвет стрелки — курсора

curx = 0: cury = 0    'Установка начальниых координат положения стрелки

DIM colora(10)

DIM slovo$(5)

DIM zapusk$(18)
SCREEN 9,, 0, 0

OPEN filerez$ FOR APPEND AS #3

PRINT #3, DATE$; " СТАРТ ПРОГРАММЫ  < СЛОЖЕНИЕ ВЕКТОРОВ > — "; TIME$;

GOSUB coord          'Построение координатной плоскости

GOSUB zapusk         'Страничка с заданиями

FOR shag = 1 TO 10

PRINT #3,: PRINT #3, «Задание — »; shag

glupo = 0

GOSUB coord          'Построение координатной плоскости

p = 1: GOSUB slov

FOR ccc = 10 TO 13 STEP 3

GOSUB telo

IF ccc = 10 THEN abx = curx — curoldx: aby = cury — curoldy ELSE cdx = curx — curoldx: cdy = cury — curoldy

NEXT ccc

PRINT #3, «AB(»; abx; ","; aby; ")"; TAB(15); ";  CD("; cdx; ","; cdy; ")"; "  ;"; TAB(34); «m(»; cdx + abx; ", "; cdy + aby; ")";

GOSUB analis

NEXT shag

GOSUB coord

LOCATE 10, 53: PRINT «Вы допустили »; oshibka; " ошибок"

PRINT #3,

PRINT #3, «Количество допущенных ошибок — »; oshibka

PRINT #3,

CLOSE #3

DO WHILE INKEY$ = "": LOOP

GOTO alis
telo:

GOSUB preobr:

GOSUB zapomin        ' Запоминает

GOSUB strelka        ' Рисует стрелку

GOSUB vibor          '

GOSUB oldstrelka     ' Закрашивает место, где была стрелка

IF fl = 2 THEN fl = 0: RETURN

GOTO telo
vibor:

flag = 0

kbd$ = INKEY$

SELECT CASE kbd$

CASE CHR$(0) + «H»: IF cury < 10 THEN cury = cury + 1: flag = 1

CASE CHR$(0) + «P»: IF cury > -10 THEN cury = cury — 1: flag = 1

CASE CHR$(0) + «K»: IF curx > -11 THEN curx = curx — 1: flag = 1

CASE CHR$(0) + «M»: IF curx < 11 THEN curx = curx + 1: flag = 1

CASE CHR$(0) + CHR$(59): GOSUB reklama

CASE CHR$(32): GOSUB final: IF fl = 2 THEN RETURN

CASE CHR$(27): GOSUB vihod

END SELECT

IF flag = 0 THEN GOTO vibor

kx = x: ky = y

GOSUB preobr

RETURN
strelka:

'==== x y c ============ Рисует стрелку ========

PSET (x, y), c

DRAW «r6g2f4g2h4g2u6»

PAINT (x + 1, y + 1), c

PSET (x, y), 15

DRAW «r6g2f4g2»

RETURN
zapomin:

'==== x y ============ zap(9,9) ========

DIM zap(9, 9)

FOR i = 1 TO 9

FOR j = 1 TO 9

zap(i, j) = POINT(i + x — 1, j + y — 1)

NEXT j

NEXT i

RETURN
oldstrelka:

'==== kx ky zap(9,9) ==== Рисует ====

FOR i = 1 TO 9

FOR j = 1 TO 9

PSET (i + kx — 1, j + ky — 1), zap(i, j)

NEXT j

NEXT i

ERASE zap

RETURN
preobr:

x = curx * 16 + 203

y = 160 — cury * 14

RETURN

 

final:

kx = x: ky = y: GOSUB oldstrelka

IF fl = 1 THEN x2 = x: y2 = y: GOSUB strvect: IF ccc = 10 THEN p = 2: GOSUB slov ELSE p = 5: GOSUB slov

IF fl = 0 THEN curoldx = curx: curoldy = cury: x1 = x: y1 = y: CIRCLE (x, y), radius, ccc: IF zakr = 1 THEN PAINT (x, y), ccc

IF ccc = 10 AND fl = 0 THEN p = 3: GOSUB slov

IF ccc = 13 AND fl = 0 THEN p = 4: GOSUB slov

IF ccc = 14 AND fl = 0 THEN p = 6: GOSUB slov

fl = fl + 1

GOSUB zapomin: GOSUB strelka: RETURN
coord:

COLOR 15: CLS

'LINE (0, 0)-(639, 349), 15, B

LINE (10, 10)-(395, 311), 15, B

LINE (10, 10)-(394, 310), 7, B

LINE (400, 10)-(629, 311), 15, B

LINE (400, 10)-(628, 310), 7, B

FOR g = 27 TO 380 STEP 16

LINE (g, 15)-(g, 305), 8, B

NEXT g

FOR g = 20 TO 300 STEP 14

LINE (19, g)-(387, g), 8, B

NEXT g

FOR g = -10 TO 10 STEP 2

LOCATE 13, g * 2 + 25

IF g <> 0 THEN PRINT g

NEXT g

FOR g = -10 TO 10 STEP 2

LOCATE 12 — g, 24

PRINT g

NEXT g

LINE (19, 160)-(387, 160), 7, B

LINE (384, 158)-(387, 160), 7

LINE (384, 162)-(387, 160), 7

LINE (203, 15)-(203, 305), 7, B

LINE (200, 18)-(203, 15), 7

LINE (206, 18)-(203, 15), 7

LOCATE 2, 28

PRINT «y»

LOCATE 11, 49

PRINT «x»

shar:

FOR c = 1 TO 10

CIRCLE (405 + c * 20, 41), 7, 15

LINE (405 + c * 20, 38)-(410 + c * 20, 31), 15

PAINT (405 + c * 20, 39), colora(c), 15

NEXT c

RETURN
strvect:

dx = SQR((x2 — x1) ^ 2)

dy = SQR((y2 — y1) ^ 2)

df = SQR((dx * dx) + (dy * dy))

IF df = 0 THEN df = 1

dsx = k * dx / df

dsy = k * dy / df

dxx = k1 * dy / df

dyy = k1 * dx / df

IF x1 < x2 THEN x3 = x2 — dsx: x4 = x2 — dsx / 2 ELSE x3 = x2 + dsx: x4 = x2 + dsx / 2

IF y1 < y2 THEN y3 = y2 — dsy: y4 = y2 — dsy / 2 ELSE y3 = y2 + dsy: y4 = y2 + dsy / 2

IF SGN(x1 — x2) = SGN(y1 — y2) THEN x31 = x3 — dxx: y31 = y3 + dyy: x32 = x3 + dxx: y32 = y3 — dyy

IF SGN(x1 — x2) * (-1) = SGN(y1 — y2) THEN x31 = x3 + dxx: y31 = y3 + dyy: x32 = x3 — dxx: y32 = y3 — dyy

IF SGN(x1 — x2) = 0 OR SGN(y1 — y2) = 0 THEN x31 = x3 — dxx: y31 = y3 — dyy: x32 = x3 + dxx: y32 = y3 + dyy

LINE (x31, y31)-(x2, y2), ccc

LINE (x32, y32)-(x2, y2), ccc

IF zakrstr = 1 THEN LINE (x32, y32)-(x31, y31), ccc: PAINT (x4, y4), ccc

LINE (x1, y1)-(x2, y2), ccc

RETURN
reklama:

SCREEN 9,, 1, 1

COLOR 7, 0

OPEN FILEHLP$ FOR INPUT AS #1

S = 0

DO

ON ERROR GOTO 0

LINE INPUT #1, stran$

S = S + 1

LOOP UNTIL EOF(1)

CLOSE #1

IF FIX(S / 18) >= (S / 18) THEN KS = FIX(S / 18) ELSE KS = FIX(S / 18) + 1

DIM stran$(S)

OPEN FILEHLP$ FOR INPUT AS #1

FOR i = 1 TO S

ON ERROR GOTO 0

LINE INPUT #1, stran$(i)
NEXT i

CLOSE #1

NS = 1

GOSUB stran

obrabotka:

a$ = INKEY$

IF a$ = CHR$(0) + CHR$(73) THEN NS = NS — 1: GOSUB stran

IF a$ = CHR$(0) + CHR$(81) THEN NS = NS + 1: GOSUB stran

IF a$ = CHR$(27) THEN ERASE stran$: SCREEN 9,, 0, 0: RETURN

GOTO obrabotka

stran:

IF NS < 1 THEN NS = 1: RETURN

IF NS > KS THEN NS = KS: RETURN

n = 18 * NS

LOCATE 1, 1

PRINT «г»; STRING$(64, "="); «T=============¬»

PRINT "¦"; STRING$(15, " ");: COLOR 15, 0: PRINT «ИНФОРМАЦИОННО — СПРАВОЧНАЯ СИСТЕМА»;: COLOR 7, 0: PRINT STRING$(15, " ");

IF NS < 10 THEN PRINT "¦ Страница "; NS; "¦" ELSE PRINT "¦ Страница"; NS; "¦"

PRINT "¦"; STRING$(64, " "); «L=============¦»

FOR i = n — 17 TO n

IF i > S THEN PRINT "¦"; STRING$(78, " "); "¦" ELSE PRINT "¦  "; stran$(i); STRING$((76 — LEN(stran$(i))), " "); "¦"

NEXT i

PRINT «L»; STRING$(78, "="); "-"

'COLOR 1, 7:

PRINT "  Выход — Esc ";

'IF NS = 1 THEN COLOR 8, 7 ELSE COLOR 1, 7

PRINT "  Предыдущая страница — PageUp ";

'IF NS = KS THEN COLOR 8, 7 ELSE COLOR 1, 7

PRINT "  Следующая страница — PageDown   "

COLOR 7, 0

RETURN
analis:

PRINT #3,

PRINT #3, «Варианты ответов ученика:»;

ccc = 10

COLOR ccc

LOCATE 9, 58: PRINT "__"

LOCATE 10, 58: PRINT «AB (     ;     )»

PRINT #3,

PRINT #3, «координата x вектора AB »;

vectx1:

p = 11: GOSUB slov

mm = 3: nx = 10: ny = 63

l$ = "+-1234567890"

m$ = "": m = 0

GOSUB napis

PRINT #3, VAL(m$);

IF abx <> VAL(m$) THEN GOSUB glupo:  GOTO vectx1
PRINT #3,

PRINT #3, «координата y вектора AB »;

vecty1:

p = 12: GOSUB slov

mm = 3: nx = 10: ny = 69

l$ = "+-1234567890"

m$ = "": m = 0

GOSUB napis

PRINT #3, VAL(m$);

IF aby <> VAL(m$) THEN GOSUB glupo: GOTO vecty1

ccc = 13

COLOR ccc

LOCATE 11, 58: PRINT "__"

LOCATE 12, 58: PRINT «CD (     ;     )»

PRINT #3,

PRINT #3, «координата x вектора CD »;

vectx2:

p = 13: GOSUB slov

mm = 3: nx = 12: ny = 63

l$ = "+-1234567890"

m$ = "": m = 0

GOSUB napis

PRINT #3, VAL(m$);

IF cdx <> VAL(m$) THEN GOSUB glupo: GOTO vectx2
PRINT #3,

PRINT #3, «координата y вектора CD »;

vecty2:

p = 14: GOSUB slov

mm = 3: nx = 12: ny = 69

l$ = "+-1234567890"    продолжение
--PAGE_BREAK--

m$ = "": m = 0

GOSUB napis

PRINT #3, VAL(m$);

IF cdy <> VAL(m$) THEN GOSUB glupo: GOTO vecty2

ccc = 14

COLOR ccc

LOCATE 13, 53: PRINT "__ __ _"

LOCATE 14, 53: PRINT «AB+CD=m (     ;     )»

PRINT #3,

PRINT #3, «координата x вектора m  »;

vectx3:

p = 15: GOSUB slov

mm = 3: nx = 14: ny = 63

l$ = "+-1234567890"

m$ = "": m = 0

GOSUB napis

PRINT #3, VAL(m$);

IF cdx + abx <> VAL(m$) THEN GOSUB glupo: GOTO vectx3

PRINT #3,

PRINT #3, «координата y вектора m  »;

vecty3:

p = 16: GOSUB slov

mm = 3: nx = 14: ny = 69

l$ = "+-1234567890"

m$ = "": m = 0

GOSUB napis

PRINT #3, VAL(m$);

IF cdy + aby <> VAL(m$) THEN GOSUB glupo: GOTO vecty3

ccc = 14: p = 5: GOSUB slov

vectm:

GOSUB telo

'Обработка ошибки правильности построения вектора m

mmx = curx — curoldx: mmy = cury — curoldy

IF mmx <> abx + cdx OR mmy <> aby + cdy THEN GOSUB glupo: PRINT #3,: PRINT #3, «Построил вектор m(»; mmx; ","; mmy; ")";: CIRCLE (x1, y1), radius, 12: ccccc = ccc: ccc = 12: GOSUB strvect: ccc = ccccc: GOTO vectm

p = 20: GOSUB slov

IF glupo = 0 THEN colora(shag) = 4: coob$ = "         Нет ошибок        ": GOSUB shar

IF glupo = 1 THEN colora(shag) = 14: coob$ = "        Одна ошибка        ": GOSUB shar

IF glupo = 2 THEN colora(shag) = 2: coob$ = "         Две ошибки!       ": GOSUB shar

IF glupo = 3 THEN colora(shag) = 9: coob$ = "         Три ошибки!       ": GOSUB shar

IF glupo > 3 THEN colora(shag) = 15: coob$ = "      Много ошибок!!!      ": GOSUB shar

oshibka = oshibka + glupo

glupo = 0

COLOR colora(shag): LOCATE 20, 52: PRINT coob$: COLOR ccc

DO WHILE INKEY$ = "": LOOP

RETURN
napis:

LOCATE nx, ny: PRINT STRING$(mm, " ")

napis1:

k$ = ""

DO WHILE k$ = ""

LOCATE nx, ny: PRINT CHR$(95)

k$ = INKEY$

IF k$ = CHR$(0) + CHR$(59) THEN GOSUB reklama

LOOP

k = ASC(k$)

IF k = 13 AND m <> 0 THEN LOCATE nx, ny: PRINT " ": RETURN

IF k = 27 THEN GOSUB vihod

IF k = 8 AND m <> 0 THEN m = m — 1: m$ = LEFT$(m$, m): LOCATE nx, ny: ny = ny — 1: PRINT " ": GOTO napis1

IF INSTR(1, l$, k$) = 0 OR m = mm THEN GOTO napis1

m = m + 1:

m$ = m$ + k$: LOCATE nx, ny: PRINT k$: ny = ny + 1

GOTO napis1
vihod:

vih$ = ""

SCREEN 9,, 1, 1

CLS

LOCATE 10, 10

PRINT «Выйти из программы  — <Esc>»

DO WHILE vih$ = ""

vih$ = INKEY$

IF vih$ = CHR$(27) THEN CLS: PRINT #3, «Выход из программы по желанию пользователя — »; TIME$: PRINT #3,: CLOSE #3: GOTO alis

LOOP

SCREEN 9,, 0, 0

RETURN

alis:

CLS

LOCATE 10, 30: PRINT «GOOD BYE !!!»

DO WHILE INKEY$ = "": LOOP

FOR i = 1 TO 120

LINE (i + 200, 140)-(i + 240, 120), 0

SOUND i * 3 + 1100, .05

FOR j = 1 TO speed: NEXT j

NEXT i

SYSTEM
slov:

COLOR 15

IF p < 10 THEN slovo$(1) = "   Перемещай стрелку по   ": slovo$(2) = "  координатной плоскости  ": slovo$(3) = «пользуясь клавишами » + CHR$(27) + CHR$(24) + CHR$(25) + "->": slovo$(4) = "  Клавишей <ПРОБЕЛ> укажи "

IF p = 1 THEN slovo$(5) = "    начало вектора AB     "

IF p = 2 THEN slovo$(5) = "    начало вектора CD     "

IF p = 3 THEN slovo$(5) = "    конец  вектора AB     "

IF p = 4 THEN slovo$(5) = "    конец  вектора CD     "

IF p = 5 THEN slovo$(5) = "    начало вектора  m     "

IF p = 6 THEN slovo$(5) = "    конец  вектора  m     "

IF p > 10 THEN slovo$(1) = "    Введи с клавиатуры    ": slovo$(3) = "      и нажми <Enter>     ": slovo$(4) = "       если  ошибся       ": slovo$(5) = "       нажми    <==       "

IF p = 11 THEN slovo$(2) = "  координату x вектора AB "

IF p = 12 THEN slovo$(2) = "  координату y вектора AB "

IF p = 13 THEN slovo$(2) = "  координату x вектора CD "

IF p = 14 THEN slovo$(2) = "  координату y вектора CD "

IF p = 15 THEN slovo$(2) = "  координату x вектора m  "

IF p = 16 THEN slovo$(2) = "  координату y вектора m  "

IF p = 20 THEN FOR cl = 1 TO 5: slovo$(cl) = "                          ": NEXT cl

LINE (403, 235)-(626, 309), 15, B

LINE (403, 235)-(625, 308), 7, B

PAINT (450, 240), 0, 7

FOR lo = 18 TO 22

LOCATE lo, 52: PRINT slovo$(lo — 17)

NEXT lo

LOCATE 6, 52: PRINT "<F1>-Помощь    <Esc>-Выход"

LINE (403, 65)-(626, 89), 15, B

LINE (403, 65)-(625, 88), 7, B

COLOR ccc

RETURN
zapusk:

zapusk$(1) = "    СЛОЖЕНИЕ ВЕКТОРОВ     "

zapusk$(2) = "                          "

zapusk$(3) = "  Тебе предстоит:         "

zapusk$(4) = "     выполнить 10 заданий "

zapusk$(5) = "                          "

zapusk$(6) = "  В каждом задании нужно: "

zapusk$(7) = «1 — построить на          »

zapusk$(8) = "  координатной плоскости  "

zapusk$(9) = "  два вектора, указав     "

zapusk$(10) = "  их начало и конец       "

zapusk$(11) = «2 — ввести их координаты  »

zapusk$(12) = «3 — сложить построенные   »

zapusk$(13) = "  векторы и ввести        "

zapusk$(14) = "  координаты вектора суммы"

zapusk$(15) = «4 — построить вектор суммы»

zapusk$(16) = "  указав начало вектора   "

zapusk$(17) = "  в произвольной точке    "

zapusk$(18) = "                          "

FOR ii = 1 TO 26

FOR ki = speed TO speed * 2: BEEP: NEXT ki

FOR ji = 1 TO 18

LOCATE ji + 4, 51 + ii

PRINT MID$(zapusk$(ji), ii, 1)

NEXT ji

NEXT ii

DO WHILE INKEY$ = "": LOOP

FOR ii = 26 TO 1 STEP -1

FOR ki = speed TO speed * 2: BEEP: NEXT ki

FOR ji = 1 TO 18

LOCATE ji + 4, 51 + ii

PRINT " "

NEXT ji

NEXT ii

RETURN
glupo:

glupo = glupo + 1

FOR clor = 15 TO 0 STEP -1

PLAY «n60l20»

COLOR clor

LOCATE 16, 53: PRINT «ОШИБКА!    ПОВТОРИТЕ ВВОД»

NEXT clor

COLOR ccc

RETURN
Приложение №3

Файл — vector2.bas
REM РАЗНОСТЬ ВЕКТОРОВ

'Константы

speed = 800           'Скорость

FILEHLP$ = «vector.hlp»

filerez$ = «vector.rez»

oshibka = 0           'Общее количество ошибок

k = 10                'Длина пера вектора

k1 = 3                'Ширина пера вектора

radius = 2            'Радиус начала вектора

zakr = 1              'Закраска начала вектора

zakrstr = 1           'Закраска стрелки вектора

c = 12                'Цвет стрелки — курсора

curx = 0: cury = 0    'Установка начальниых координат положения стрелки

DIM colora(10)

DIM slovo$(5)

DIM zapusk$(18)
SCREEN 9,, 0, 0

OPEN filerez$ FOR APPEND AS #3

PRINT #3, DATE$; " СТАРТ ПРОГРАММЫ  < РАЗНОСТЬ ВЕКТОРОВ > — "; TIME$;

GOSUB coord          'Построение координатной плоскости

GOSUB zapusk         'Страничка с заданиями

FOR shag = 1 TO 10

PRINT #3,: PRINT #3, «Задание — »; shag

glupo = 0

GOSUB coord          'Построение координатной плоскости

p = 1: GOSUB slov

FOR ccc = 10 TO 13 STEP 3

GOSUB telo

IF ccc = 10 THEN abx = curx — curoldx: aby = cury — curoldy ELSE cdx = curx — curoldx: cdy = cury — curoldy

NEXT ccc

PRINT #3, «AB(»; abx; ","; aby; ")"; TAB(15); ";  CD("; cdx; ","; cdy; ")"; "  ;"; TAB(34); «m(»; cdx — abx; ", "; cdy — aby; ")";

GOSUB analis

NEXT shag

GOSUB coord

LOCATE 10, 53: PRINT «Вы допустили »; oshibka; " ошибок"

PRINT #3,

PRINT #3, «Количество допущенных ошибок — »; oshibka

PRINT #3,

CLOSE #3

DO WHILE INKEY$ = "": LOOP

GOTO alis
telo:

GOSUB preobr:

GOSUB zapomin        ' Запоминает

GOSUB strelka        ' Рисует стрелку

GOSUB vibor          '

GOSUB oldstrelka     ' Закрашивает место, где была стрелка

IF fl = 2 THEN fl = 0: RETURN

GOTO telo
vibor:

flag = 0

kbd$ = INKEY$

SELECT CASE kbd$

CASE CHR$(0) + «H»: IF cury < 10 THEN cury = cury + 1: flag = 1

CASE CHR$(0) + «P»: IF cury > -10 THEN cury = cury — 1: flag = 1

CASE CHR$(0) + «K»: IF curx > -11 THEN curx = curx — 1: flag = 1

CASE CHR$(0) + «M»: IF curx < 11 THEN curx = curx + 1: flag = 1

CASE CHR$(0) + CHR$(59): GOSUB reklama

CASE CHR$(32): GOSUB final: IF fl = 2 THEN RETURN

CASE CHR$(27): GOSUB vihod

END SELECT

IF flag = 0 THEN GOTO vibor

kx = x: ky = y

GOSUB preobr

RETURN
strelka:

'==== x y c ============ Рисует стрелку ========

PSET (x, y), c

DRAW «r6g2f4g2h4g2u6»

PAINT (x + 1, y + 1), c

PSET (x, y), 15

DRAW «r6g2f4g2»

RETURN
zapomin:

'==== x y ============ zap(9,9) ========

DIM zap(9, 9)

FOR i = 1 TO 9

FOR j = 1 TO 9

zap(i, j) = POINT(i + x — 1, j + y — 1)

NEXT j

NEXT i

RETURN
oldstrelka:

'==== kx ky zap(9,9) ==== Рисует ====

FOR i = 1 TO 9

FOR j = 1 TO 9

PSET (i + kx — 1, j + ky — 1), zap(i, j)

NEXT j

NEXT i

ERASE zap

RETURN
preobr:

x = curx * 16 + 203

y = 160 — cury * 14

RETURN

 

final:

kx = x: ky = y: GOSUB oldstrelka

IF fl = 1 THEN x2 = x: y2 = y: GOSUB strvect: IF ccc = 10 THEN p = 2: GOSUB slov ELSE p = 5: GOSUB slov

IF fl = 0 THEN curoldx = curx: curoldy = cury: x1 = x: y1 = y: CIRCLE (x, y), radius, ccc: IF zakr = 1 THEN PAINT (x, y), ccc

IF ccc = 10 AND fl = 0 THEN p = 3: GOSUB slov

IF ccc = 13 AND fl = 0 THEN p = 4: GOSUB slov

IF ccc = 14 AND fl = 0 THEN p = 6: GOSUB slov

fl = fl + 1

GOSUB zapomin: GOSUB strelka: RETURN
coord:

COLOR 15: CLS

'LINE (0, 0)-(639, 349), 15, B

LINE (10, 10)-(395, 311), 15, B

LINE (10, 10)-(394, 310), 7, B

LINE (400, 10)-(629, 311), 15, B

LINE (400, 10)-(628, 310), 7, B

FOR g = 27 TO 380 STEP 16

LINE (g, 15)-(g, 305), 8, B

NEXT g

FOR g = 20 TO 300 STEP 14

LINE (19, g)-(387, g), 8, B

NEXT g

FOR g = -10 TO 10 STEP 2

LOCATE 13, g * 2 + 25

IF g <> 0 THEN PRINT g

NEXT g

FOR g = -10 TO 10 STEP 2

LOCATE 12 — g, 24

PRINT g

NEXT g

LINE (19, 160)-(387, 160), 7, B

LINE (384, 158)-(387, 160), 7

LINE (384, 162)-(387, 160), 7

LINE (203, 15)-(203, 305), 7, B

LINE (200, 18)-(203, 15), 7

LINE (206, 18)-(203, 15), 7

LOCATE 2, 28

PRINT «y»

LOCATE 11, 49

PRINT «x»

shar:

FOR c = 1 TO 10

CIRCLE (405 + c * 20, 41), 7, 15

LINE (405 + c * 20, 38)-(410 + c * 20, 31), 15

PAINT (405 + c * 20, 39), colora(c), 15

NEXT c

RETURN
strvect:

dx = SQR((x2 — x1) ^ 2)

dy = SQR((y2 — y1) ^ 2)

df = SQR((dx * dx) + (dy * dy))

IF df = 0 THEN df = 1

dsx = k * dx / df

dsy = k * dy / df

dxx = k1 * dy / df

dyy = k1 * dx / df

IF x1 < x2 THEN x3 = x2 — dsx: x4 = x2 — dsx / 2 ELSE x3 = x2 + dsx: x4 = x2 + dsx / 2

IF y1 < y2 THEN y3 = y2 — dsy: y4 = y2 — dsy / 2 ELSE y3 = y2 + dsy: y4 = y2 + dsy / 2

IF SGN(x1 — x2) = SGN(y1 — y2) THEN x31 = x3 — dxx: y31 = y3 + dyy: x32 = x3 + dxx: y32 = y3 — dyy

IF SGN(x1 — x2) * (-1) = SGN(y1 — y2) THEN x31 = x3 + dxx: y31 = y3 + dyy: x32 = x3 — dxx: y32 = y3 — dyy

IF SGN(x1 — x2) = 0 OR SGN(y1 — y2) = 0 THEN x31 = x3 — dxx: y31 = y3 — dyy: x32 = x3 + dxx: y32 = y3 + dyy

LINE (x31, y31)-(x2, y2), ccc

LINE (x32, y32)-(x2, y2), ccc

IF zakrstr = 1 THEN LINE (x32, y32)-(x31, y31), ccc: PAINT (x4, y4), ccc

LINE (x1, y1)-(x2, y2), ccc

RETURN
reklama:

SCREEN 9,, 1, 1

COLOR 7, 0

OPEN FILEHLP$ FOR INPUT AS #1

S = 0

DO

ON ERROR GOTO 0

LINE INPUT #1, stran$

S = S + 1

LOOP UNTIL EOF(1)

CLOSE #1

IF FIX(S / 18) >= (S / 18) THEN KS = FIX(S / 18) ELSE KS = FIX(S / 18) + 1

DIM stran$(S)

OPEN FILEHLP$ FOR INPUT AS #1

FOR i = 1 TO S

ON ERROR GOTO 0

LINE INPUT #1, stran$(i)
NEXT i

CLOSE #1

NS = 1

GOSUB stran

obrabotka:

a$ = INKEY$

IF a$ = CHR$(0) + CHR$(73) THEN NS = NS — 1: GOSUB stran

IF a$ = CHR$(0) + CHR$(81) THEN NS = NS + 1: GOSUB stran

IF a$ = CHR$(27) THEN ERASE stran$: SCREEN 9,, 0, 0: RETURN

GOTO obrabotka

stran:

IF NS < 1 THEN NS = 1: RETURN

IF NS > KS THEN NS = KS: RETURN

n = 18 * NS

LOCATE 1, 1

PRINT «г»; STRING$(64, "="); «T=============¬»

PRINT "¦"; STRING$(15, " ");: COLOR 15, 0: PRINT «ИНФОРМАЦИОННО — СПРАВОЧНАЯ СИСТЕМА»;: COLOR 7, 0: PRINT STRING$(15, " ");

IF NS < 10 THEN PRINT "¦ Страница "; NS; "¦" ELSE PRINT "¦ Страница"; NS; "¦"

PRINT "¦"; STRING$(64, " "); «L=============¦»

FOR i = n — 17 TO n

IF i > S THEN PRINT "¦"; STRING$(78, " "); "¦" ELSE PRINT "¦  "; stran$(i); STRING$((76 — LEN(stran$(i))), " "); "¦"

NEXT i

PRINT «L»; STRING$(78, "="); "-"

'COLOR 1, 7:

PRINT "  Выход — Esc ";

'IF NS = 1 THEN COLOR 8, 7 ELSE COLOR 1, 7

PRINT "  Предыдущая страница — PageUp ";

'IF NS = KS THEN COLOR 8, 7 ELSE COLOR 1, 7

PRINT "  Следующая страница — PageDown   "

COLOR 7, 0

RETURN
analis:

PRINT #3,

PRINT #3, «Варианты ответов ученика:»;

ccc = 10

COLOR ccc

LOCATE 9, 58: PRINT "__"

LOCATE 10, 58: PRINT «AB (     ;     )»

PRINT #3,

PRINT #3, «координата x вектора AB »;

vectx1:

p = 11: GOSUB slov

mm = 3: nx = 10: ny = 63

l$ = "+-1234567890"

m$ = "": m = 0

GOSUB napis

PRINT #3, VAL(m$);

IF abx <> VAL(m$) THEN GOSUB glupo:  GOTO vectx1
PRINT #3,

PRINT #3, «координата y вектора AB »;

vecty1:

p = 12: GOSUB slov

mm = 3: nx = 10: ny = 69

l$ = "+-1234567890"

m$ = "": m = 0

GOSUB napis

PRINT #3, VAL(m$);

IF aby <> VAL(m$) THEN GOSUB glupo: GOTO vecty1
ccc = 13

COLOR ccc

LOCATE 11, 58: PRINT "__"

LOCATE 12, 58: PRINT «CD (     ;     )»

PRINT #3,

PRINT #3, «координата x вектора CD »;

vectx2:

p = 13: GOSUB slov

mm = 3: nx = 12: ny = 63

l$ = "+-1234567890"

m$ = "": m = 0

GOSUB napis

PRINT #3, VAL(m$);

IF cdx <> VAL(m$) THEN GOSUB glupo: GOTO vectx2
PRINT #3,

PRINT #3, «координата y вектора CD »;

vecty2:

p = 14: GOSUB slov

mm = 3: nx = 12: ny = 69

l$ = "+-1234567890"

m$ = "": m = 0

GOSUB napis

PRINT #3, VAL(m$);

IF cdy <> VAL(m$) THEN GOSUB glupo: GOTO vecty2

ccc = 14

COLOR ccc

LOCATE 13, 53: PRINT " __ __ _"

LOCATE 14, 53: PRINT " CD-AB=m(     ;     )"

PRINT #3,

PRINT #3, «координата x вектора m  »;

vectx3:

p = 15: GOSUB slov

mm = 3: nx = 14: ny = 63

l$ = "+-1234567890"

m$ = "": m = 0

GOSUB napis

PRINT #3, VAL(m$);

IF cdx — abx <> VAL(m$) THEN GOSUB glupo: GOTO vectx3

PRINT #3,

PRINT #3, «координата y вектора m  »;

vecty3:

p = 16: GOSUB slov

mm = 3: nx = 14: ny = 69

l$ = "+-1234567890"

m$ = "": m = 0

GOSUB napis

PRINT #3, VAL(m$);

IF cdy — aby <> VAL(m$) THEN GOSUB glupo: GOTO vecty3

ccc = 14: p = 5: GOSUB slov

vectm:

GOSUB telo

'Обработка ошибки правильности построения вектора m

mmx = curx — curoldx: mmy = cury — curoldy

IF mmx <> cdx — abx OR mmy <> cdy — aby THEN GOSUB glupo: PRINT #3,: PRINT #3, «Построил вектор m(»; mmx; ","; mmy; ")";: CIRCLE (x1, y1), radius, 12: ccccc = ccc: ccc = 12: GOSUB strvect: ccc = ccccc: GOTO vectm

p = 20: GOSUB slov

IF glupo = 0 THEN colora(shag) = 4: coob$ = "         Нет ошибок        ": GOSUB shar

IF glupo = 1 THEN colora(shag) = 14: coob$ = "        Одна ошибка        ": GOSUB shar

IF glupo = 2 THEN colora(shag) = 2: coob$ = "         Две ошибки!       ": GOSUB shar

IF glupo = 3 THEN colora(shag) = 9: coob$ = "         Три ошибки!       ": GOSUB shar

IF glupo > 3 THEN colora(shag) = 15: coob$ = "      Много ошибок!!!      ": GOSUB shar

oshibka = oshibka + glupo

glupo = 0

COLOR colora(shag): LOCATE 20, 52: PRINT coob$: COLOR ccc

DO WHILE INKEY$ = "": LOOP

RETURN
napis:

LOCATE nx, ny: PRINT STRING$(mm, " ")

napis1:

k$ = ""

DO WHILE k$ = ""

LOCATE nx, ny: PRINT CHR$(95)

k$ = INKEY$

IF k$ = CHR$(0) + CHR$(59) THEN GOSUB reklama

LOOP

k = ASC(k$)

IF k = 13 AND m <> 0 THEN LOCATE nx, ny: PRINT " ": RETURN

IF k = 27 THEN GOSUB vihod

IF k = 8 AND m <> 0 THEN m = m — 1: m$ = LEFT$(m$, m): LOCATE nx, ny: ny = ny — 1: PRINT " ": GOTO napis1

IF INSTR(1, l$, k$) = 0 OR m = mm THEN GOTO napis1

m = m + 1:

m$ = m$ + k$: LOCATE nx, ny: PRINT k$: ny = ny + 1

GOTO napis1
vihod:

vih$ = ""

SCREEN 9,, 1, 1

CLS

LOCATE 10, 10

PRINT «Выйти из программы  — <Esc>»

DO WHILE vih$ = ""

vih$ = INKEY$

IF vih$ = CHR$(27) THEN CLS: PRINT #3, «Выход из программы по желанию пользователя — »; TIME$: PRINT #3,: CLOSE #3: GOTO alis

LOOP

SCREEN 9,, 0, 0

RETURN

alis:

CLS

LOCATE 10, 30: PRINT «GOOD BYE !!!»

DO WHILE INKEY$ = "": LOOP

FOR i = 1 TO 120

LINE (i + 200, 140)-(i + 240, 120), 0

SOUND i * 3 + 1100, .05

FOR j = 1 TO speed: NEXT j

NEXT i

SYSTEM
slov:

COLOR 15

IF p < 10 THEN slovo$(1) = "   Перемещай стрелку по   ": slovo$(2) = "  координатной плоскости  ": slovo$(3) = «пользуясь клавишами » + CHR$(27) + CHR$(24) + CHR$(25) + "->": slovo$(4) = "  Клавишей <ПРОБЕЛ> укажи "

IF p = 1 THEN slovo$(5) = "    начало вектора AB     "

IF p = 2 THEN slovo$(5) = "    начало вектора CD     "

IF p = 3 THEN slovo$(5) = "    конец  вектора AB     "

IF p = 4 THEN slovo$(5) = "    конец  вектора CD     "

IF p = 5 THEN slovo$(5) = "    начало вектора  m     "

IF p = 6 THEN slovo$(5) = "    конец  вектора  m     "

IF p > 10 THEN slovo$(1) = "    Введи с клавиатуры    ": slovo$(3) = "      и нажми <Enter>     ": slovo$(4) = "       если  ошибся       ": slovo$(5) = "       нажми    <==       "

IF p = 11 THEN slovo$(2) = "  координату x вектора AB "

IF p = 12 THEN slovo$(2) = "  координату y вектора AB "

IF p = 13 THEN slovo$(2) = "  координату x вектора CD "

IF p = 14 THEN slovo$(2) = "  координату y вектора CD "

IF p = 15 THEN slovo$(2) = "  координату x вектора m  "

IF p = 16 THEN slovo$(2) = "  координату y вектора m  "

IF p = 20 THEN FOR cl = 1 TO 5: slovo$(cl) = "                          ": NEXT cl

LINE (403, 235)-(626, 309), 15, B

LINE (403, 235)-(625, 308), 7, B

PAINT (450, 240), 0, 7

FOR lo = 18 TO 22

LOCATE lo, 52: PRINT slovo$(lo — 17)

NEXT lo

LOCATE 6, 52: PRINT "<F1>-Помощь    <Esc>-Выход"

LINE (403, 65)-(626, 89), 15, B

LINE (403, 65)-(625, 88), 7, B

COLOR ccc

RETURN
zapusk:

zapusk$(1) = "    РАЗНОСТЬ ВЕКТОРОВ     "

zapusk$(2) = "                          "

zapusk$(3) = "  Тебе предстоит:         "

zapusk$(4) = "     выполнить 10 заданий "

zapusk$(5) = "  В каждом задании нужно: "

zapusk$(6) = «1 — построить на          »

zapusk$(7) = "  координатной плоскости  "

zapusk$(8) = "  два вектора, указав     "

zapusk$(9) = "  их начало и конец       "

zapusk$(10) = «2 — ввести их координаты  »

zapusk$(11) = «3 — вычесть из второго    »

zapusk$(12) = "  вектора первый вектор   "

zapusk$(13) = "  и ввести координаты     "

zapusk$(14) = "  вектора разности        "

zapusk$(15) = «4 — построить вектор      »

zapusk$(16) = "  разности указав начало  "

zapusk$(17) = "  вектора в произвольной  "

zapusk$(18) = "  точке                   "

FOR ii = 1 TO 26

FOR ki = speed TO speed * 2: BEEP: NEXT ki

FOR ji = 1 TO 18

LOCATE ji + 4, 51 + ii

PRINT MID$(zapusk$(ji), ii, 1)

NEXT ji

NEXT ii

DO WHILE INKEY$ = "": LOOP

FOR ii = 26 TO 1 STEP -1

FOR ki = speed TO speed * 2: BEEP: NEXT ki

FOR ji = 1 TO 18

LOCATE ji + 4, 51 + ii

PRINT " "

NEXT ji

NEXT ii

RETURN
glupo:

glupo = glupo + 1

FOR clor = 15 TO 0 STEP -1

PLAY «n60l20»

COLOR clor

LOCATE 16, 53: PRINT «ОШИБКА!    ПОВТОРИТЕ ВВОД»

NEXT clor

COLOR ccc

RETURN
Приложение №4

Файл — vector3.rez
REM УМНОЖЕНИЕ ВЕКТОРА НА ЧИСЛО

'Константы

speed = 800           'Скорость

FILEHLP$ = «vector.hlp»

filerez$ = «vector.rez»

oshibka = 0           'Общее количество ошибок

k = 10                'Длина пера вектора

k1 = 3                'Ширина пера вектора

radius = 2            'Радиус начала вектора

zakr = 1              'Закраска начала вектора

zakrstr = 1           'Закраска стрелки вектора

c = 12                'Цвет стрелки — курсора

curx = 0: cury = 0    'Установка начальниых координат положения стрелки

DIM colora(10)

DIM slovo$(5)

DIM zapusk$(18)
SCREEN 9,, 0, 0

OPEN filerez$ FOR APPEND AS #3

PRINT #3, DATE$; " СТАРТ ПРОГРАММЫ  < УМНОЖЕНИЕ ВЕКТОРА НА ЧИСЛО > — "; TIME$;

GOSUB coord          'Построение координатной плоскости

GOSUB zapusk         'Страничка с заданиями

FOR shag = 1 TO 10

PRINT #3,: PRINT #3, «Задание — »; shag

glupo = 0

GOSUB coord          'Построение координатной плоскости

p = 1: GOSUB slov

ccc = 10

GOSUB telo

abx = curx — curoldx: aby = cury — curoldy

er:    'Задание числа er

RANDOMIZE TIMER

er = INT(RND(1) * 19) — 9

IF ABS(er * abx) > 20 OR ABS(er * aby) > 22 THEN GOTO er
PRINT #3, «AB(»; abx; ","; aby; ")"; TAB(15); «Загадано число »; er

GOSUB analis

NEXT shag

GOSUB coord

LOCATE 10, 53: PRINT «Вы допустили »; oshibka; " ошибок"

PRINT #3,

PRINT #3, «Количество допущенных ошибок — »; oshibka

PRINT #3,

CLOSE #3

DO WHILE INKEY$ = "": LOOP

GOTO alis
telo:

GOSUB preobr:

GOSUB zapomin        ' Запоминает

GOSUB strelka        ' Рисует стрелку

GOSUB vibor          '

GOSUB oldstrelka     ' Закрашивает место, где была стрелка

IF fl = 2 THEN fl = 0: RETURN

GOTO telo
vibor:

flag = 0

kbd$ = INKEY$

SELECT CASE kbd$

CASE CHR$(0) + «H»: IF cury < 10 THEN cury = cury + 1: flag = 1

CASE CHR$(0) + «P»: IF cury > -10 THEN cury = cury — 1: flag = 1

CASE CHR$(0) + «K»: IF curx > -11 THEN curx = curx — 1: flag = 1

CASE CHR$(0) + «M»: IF curx < 11 THEN curx = curx + 1: flag = 1

CASE CHR$(0) + CHR$(59): GOSUB reklama

CASE CHR$(32): GOSUB final: IF fl = 2 THEN RETURN

CASE CHR$(27): GOSUB vihod

END SELECT

IF flag = 0 THEN GOTO vibor

kx = x: ky = y

GOSUB preobr

RETURN
strelka:

'==== x y c ============ Рисует стрелку ========

PSET (x, y), c

DRAW «r6g2f4g2h4g2u6»

PAINT (x + 1, y + 1), c

PSET (x, y), 15

DRAW «r6g2f4g2»

RETURN
zapomin:

'==== x y ============ zap(9,9) ========

DIM zap(9, 9)

FOR i = 1 TO 9

FOR j = 1 TO 9

zap(i, j) = POINT(i + x — 1, j + y — 1)

NEXT j

NEXT i

RETURN
oldstrelka:

'==== kx ky zap(9,9) ==== Рисует ====

FOR i = 1 TO 9

FOR j = 1 TO 9

PSET (i + kx — 1, j + ky — 1), zap(i, j)

NEXT j

NEXT i

ERASE zap

RETURN
preobr:

x = curx * 16 + 203

y = 160 — cury * 14

RETURN

 

final:

kx = x: ky = y: GOSUB oldstrelka

IF fl = 1 THEN x2 = x: y2 = y: GOSUB strvect: IF ccc = 10 THEN p = 2: GOSUB slov ELSE p = 5: GOSUB slov

IF fl = 0 THEN curoldx = curx: curoldy = cury: x1 = x: y1 = y: CIRCLE (x, y), radius, ccc: IF zakr = 1 THEN PAINT (x, y), ccc

IF ccc = 10 AND fl = 0 THEN p = 3: GOSUB slov

'IF ccc = 13 AND fl = 0 THEN p = 4: GOSUB slov

'IF ccc = 14 AND fl = 0 THEN p = 6: GOSUB slov

fl = fl + 1

GOSUB zapomin: GOSUB strelka: RETURN
coord:

COLOR 15: CLS

'LINE (0, 0)-(639, 349), 15, B

LINE (10, 10)-(395, 311), 15, B

LINE (10, 10)-(394, 310), 7, B

LINE (400, 10)-(629, 311), 15, B

LINE (400, 10)-(628, 310), 7, B

FOR g = 27 TO 380 STEP 16

LINE (g, 15)-(g, 305), 8, B

NEXT g

FOR g = 20 TO 300 STEP 14

LINE (19, g)-(387, g), 8, B

NEXT g

FOR g = -10 TO 10 STEP 2

LOCATE 13, g * 2 + 25

IF g <> 0 THEN PRINT g

NEXT g

FOR g = -10 TO 10 STEP 2

LOCATE 12 — g, 24

PRINT g

NEXT g

LINE (19, 160)-(387, 160), 7, B

LINE (384, 158)-(387, 160), 7

LINE (384, 162)-(387, 160), 7

LINE (203, 15)-(203, 305), 7, B

LINE (200, 18)-(203, 15), 7

LINE (206, 18)-(203, 15), 7

LOCATE 2, 28

PRINT «y»

LOCATE 11, 49

PRINT «x»

shar:

FOR c = 1 TO 10

CIRCLE (405 + c * 20, 41), 7, 15

LINE (405 + c * 20, 38)-(410 + c * 20, 31), 15

PAINT (405 + c * 20, 39), colora(c), 15

NEXT c

RETURN
strvect:

dx = SQR((x2 — x1) ^ 2)

dy = SQR((y2 — y1) ^ 2)

df = SQR((dx * dx) + (dy * dy))

IF df = 0 THEN df = 1

dsx = k * dx / df

dsy = k * dy / df

dxx = k1 * dy / df

dyy = k1 * dx / df

IF x1 < x2 THEN x3 = x2 — dsx: x4 = x2 — dsx / 2 ELSE x3 = x2 + dsx: x4 = x2 + dsx / 2

IF y1 < y2 THEN y3 = y2 — dsy: y4 = y2 — dsy / 2 ELSE y3 = y2 + dsy: y4 = y2 + dsy / 2

IF SGN(x1 — x2) = SGN(y1 — y2) THEN x31 = x3 — dxx: y31 = y3 + dyy: x32 = x3 + dxx: y32 = y3 — dyy

IF SGN(x1 — x2) * (-1) = SGN(y1 — y2) THEN x31 = x3 + dxx: y31 = y3 + dyy: x32 = x3 — dxx: y32 = y3 — dyy

IF SGN(x1 — x2) = 0 OR SGN(y1 — y2) = 0 THEN x31 = x3 — dxx: y31 = y3 — dyy: x32 = x3 + dxx: y32 = y3 + dyy

LINE (x31, y31)-(x2, y2), ccc

LINE (x32, y32)-(x2, y2), ccc

IF zakrstr = 1 THEN LINE (x32, y32)-(x31, y31), ccc: PAINT (x4, y4), ccc

LINE (x1, y1)-(x2, y2), ccc

RETURN
reklama:

SCREEN 9,, 1, 1

COLOR 7, 0

OPEN FILEHLP$ FOR INPUT AS #1

S = 0

DO

ON ERROR GOTO 0

LINE INPUT #1, stran$

S = S + 1

LOOP UNTIL EOF(1)

CLOSE #1

IF FIX(S / 18) >= (S / 18) THEN KS = FIX(S / 18) ELSE KS = FIX(S / 18) + 1

DIM stran$(S)

OPEN FILEHLP$ FOR INPUT AS #1

FOR i = 1 TO S

ON ERROR GOTO 0

LINE INPUT #1, stran$(i)
NEXT i

CLOSE #1

NS = 1

GOSUB stran

obrabotka:

a$ = INKEY$

IF a$ = CHR$(0) + CHR$(73) THEN NS = NS — 1: GOSUB stran

IF a$ = CHR$(0) + CHR$(81) THEN NS = NS + 1: GOSUB stran

IF a$ = CHR$(27) THEN ERASE stran$: SCREEN 9,, 0, 0: RETURN

GOTO obrabotka

stran:

IF NS < 1 THEN NS = 1: RETURN

IF NS > KS THEN NS = KS: RETURN

n = 18 * NS

LOCATE 1, 1

PRINT «г»; STRING$(64, "="); «T=============¬»

PRINT "¦"; STRING$(15, " ");: COLOR 15, 0: PRINT «ИНФОРМАЦИОННО — СПРАВОЧНАЯ СИСТЕМА»;: COLOR 7, 0: PRINT STRING$(15, " ");

IF NS < 10 THEN PRINT "¦ Страница "; NS; "¦" ELSE PRINT "¦ Страница"; NS; "¦"

PRINT "¦"; STRING$(64, " "); «L=============¦»

FOR i = n — 17 TO n

IF i > S THEN PRINT "¦"; STRING$(78, " "); "¦" ELSE PRINT "¦  "; stran$(i); STRING$((76 — LEN(stran$(i))), " "); "¦"

NEXT i

PRINT «L»; STRING$(78, "="); "-"

'COLOR 1, 7:

PRINT "  Выход — Esc ";

'IF NS = 1 THEN COLOR 8, 7 ELSE COLOR 1, 7

PRINT "  Предыдущая страница — PageUp ";

'IF NS = KS THEN COLOR 8, 7 ELSE COLOR 1, 7

PRINT "  Следующая страница — PageDown   "

COLOR 7, 0

RETURN
analis:

PRINT #3, «Варианты ответов ученика:»;

ccc = 10

COLOR ccc

LOCATE 9, 58: PRINT "__"

LOCATE 10, 58: PRINT «AB (     ;     )»

PRINT #3,

PRINT #3, «координата x вектора AB »;

vectx1:

p = 11: GOSUB slov

mm = 3: nx = 10: ny = 63

l$ = "+-1234567890"

m$ = "": m = 0

GOSUB napis

PRINT #3, VAL(m$);

IF abx <> VAL(m$) THEN GOSUB glupo:  GOTO vectx1
PRINT #3,

PRINT #3, «координата y вектора AB »;

vecty1:

p = 12: GOSUB slov

mm = 3: nx = 10: ny = 69

l$ = "+-1234567890"

m$ = "": m = 0

GOSUB napis

PRINT #3, VAL(m$);

IF aby <> VAL(m$) THEN GOSUB glupo: GOTO vecty1
ccc = 14

COLOR ccc

LOCATE 13, 53: PRINT TAB(56); " __  _"

LOCATE 14, 53: PRINT er; TAB(56); "*AB= m(     ;     )"

PRINT #3,

PRINT #3, «координата x вектора m  »;

vectx3:

p = 15: GOSUB slov

mm = 3: nx = 14: ny = 64

l$ = "+-1234567890"

m$ = "": m = 0

GOSUB napis

PRINT #3, VAL(m$);

IF er * abx <> VAL(m$) THEN GOSUB glupo: GOTO vectx3

PRINT #3,

PRINT #3, «координата y вектора m  »;

vecty3:

p = 16: GOSUB slov

mm = 3: nx = 14: ny = 70

l$ = "+-1234567890"

m$ = "": m = 0

GOSUB napis

PRINT #3, VAL(m$);

IF er * aby <> VAL(m$) THEN GOSUB glupo: GOTO vecty3

ccc = 14: p = 5: GOSUB slov

vectm:

GOSUB telo

'Обработка ошибки правильности построения вектора m

mmx = curx — curoldx: mmy = cury — curoldy

IF mmx <> abx * er OR mmy <> aby * er THEN GOSUB glupo: PRINT #3,: PRINT #3, «Построил вектор m(»; mmx; ","; mmy; ")";: CIRCLE (x1, y1), radius, 12: ccccc = ccc: ccc = 12: GOSUB strvect: ccc = ccccc: GOTO vectm

p = 20: GOSUB slov

IF glupo = 0 THEN colora(shag) = 4: coob$ = "         Нет ошибок        ": GOSUB shar

IF glupo = 1 THEN colora(shag) = 14: coob$ = "        Одна ошибка        ": GOSUB shar

IF glupo = 2 THEN colora(shag) = 2: coob$ = "         Две ошибки!       ": GOSUB shar

IF glupo = 3 THEN colora(shag) = 9: coob$ = "         Три ошибки!       ": GOSUB shar

IF glupo > 3 THEN colora(shag) = 15: coob$ = "      Много ошибок!!!      ": GOSUB shar

oshibka = oshibka + glupo

glupo = 0

COLOR colora(shag): LOCATE 20, 52: PRINT coob$: COLOR ccc

DO WHILE INKEY$ = "": LOOP

RETURN
napis:

LOCATE nx, ny: PRINT STRING$(mm, " ")

napis1:

k$ = ""

DO WHILE k$ = ""

LOCATE nx, ny: PRINT CHR$(95)

k$ = INKEY$

IF k$ = CHR$(0) + CHR$(59) THEN GOSUB reklama

LOOP

k = ASC(k$)

IF k = 13 AND m <> 0 THEN LOCATE nx, ny: PRINT " ": RETURN

IF k = 27 THEN GOSUB vihod

IF k = 8 AND m <> 0 THEN m = m — 1: m$ = LEFT$(m$, m): LOCATE nx, ny: ny = ny — 1: PRINT " ": GOTO napis1

IF INSTR(1, l$, k$) = 0 OR m = mm THEN GOTO napis1

m = m + 1:

m$ = m$ + k$: LOCATE nx, ny: PRINT k$: ny = ny + 1

GOTO napis1
vihod:

vih$ = ""

SCREEN 9,, 1, 1

CLS

LOCATE 10, 10

PRINT «Выйти из программы  — <Esc>»

DO WHILE vih$ = ""

vih$ = INKEY$

IF vih$ = CHR$(27) THEN CLS: PRINT #3, «Выход из программы по желанию пользователя — »; TIME$: PRINT #3,: CLOSE #3: GOTO alis

LOOP

SCREEN 9,, 0, 0

RETURN

alis:

CLS

LOCATE 10, 30: PRINT «GOOD BYE !!!»

DO WHILE INKEY$ = "": LOOP

FOR i = 1 TO 120

LINE (i + 200, 140)-(i + 240, 120), 0

SOUND i * 3 + 1100, .05

FOR j = 1 TO speed: NEXT j

NEXT i

SYSTEM
slov:

COLOR 15

IF p < 10 THEN slovo$(1) = "   Перемещай стрелку по   ": slovo$(2) = "  координатной плоскости  ": slovo$(3) = «пользуясь клавишами » + CHR$(27) + CHR$(24) + CHR$(25) + "->": slovo$(4) = "  Клавишей <ПРОБЕЛ> укажи "

IF p = 1 THEN slovo$(5) = "    начало вектора AB     "

IF p = 3 THEN slovo$(5) = "    конец  вектора AB     "

IF p = 5 THEN slovo$(5) = "  начало вектора  m=" + STR$(er) + "*AB "

IF p = 6 THEN slovo$(5) = "  конец  вектора  m=" + STR$(er) + "*AB "

IF p > 10 THEN slovo$(1) = "    Введи с клавиатуры    ": slovo$(3) = "      и нажми <Enter>     ": slovo$(4) = "       если  ошибся       ": slovo$(5) = "       нажми    <==       "

IF p = 11 THEN slovo$(2) = "  координату x вектора AB "

IF p = 12 THEN slovo$(2) = "  координату y вектора AB "

IF p = 15 THEN slovo$(2) = "  координату x вектора m  "

IF p = 16 THEN slovo$(2) = "  координату y вектора m  "

IF p = 20 THEN FOR cl = 1 TO 5: slovo$(cl) = "                          ": NEXT cl

LINE (403, 235)-(626, 309), 15, B

LINE (403, 235)-(625, 308), 7, B

PAINT (450, 240), 0, 7

FOR lo = 18 TO 22

LOCATE lo, 52: PRINT slovo$(lo — 17)

NEXT lo

LOCATE 6, 52: PRINT "<F1>-Помощь    <Esc>-Выход"

LINE (403, 65)-(626, 89), 15, B

LINE (403, 65)-(625, 88), 7, B

COLOR ccc

RETURN
zapusk:

zapusk$(1) = «УМНОЖЕНИЕ ВЕКТОРА НА ЧИСЛО»

zapusk$(2) = "                          "

zapusk$(3) = "  Тебе предстоит:         "

zapusk$(4) = "     выполнить 10 заданий "

zapusk$(5) = "                          "

zapusk$(6) = "  В каждом задании нужно: "

zapusk$(7) = «1 — построить на          »

zapusk$(8) = "  координатной плоскости  "

zapusk$(9) = "  вектор AB, указав его   "

zapusk$(10) = "  начало и конец          "

zapusk$(11) = «2 — ввести его координаты „

zapusk$(12) = “3 — умножить построенный  »

zapusk$(13) = "  вектор  на  число   a   "

zapusk$(14) = "  заданное компьютером    "

zapusk$(15) = «4 — построить вектор      »

zapusk$(16) = "  произведения    AB * a  "

zapusk$(17) = "  указав начало вектора   "

zapusk$(18) = "  в произвольной точке    "

FOR ii = 1 TO 26

FOR ki = speed TO speed * 2: BEEP: NEXT ki

FOR ji = 1 TO 18

LOCATE ji + 4, 51 + ii

PRINT MID$(zapusk$(ji), ii, 1)

NEXT ji

NEXT ii

DO WHILE INKEY$ = "": LOOP

FOR ii = 26 TO 1 STEP -1

FOR ki = speed TO speed * 2: BEEP: NEXT ki

FOR ji = 1 TO 18

LOCATE ji + 4, 51 + ii

PRINT " "

NEXT ji

NEXT ii

RETURN
glupo:

glupo = glupo + 1

FOR clor = 15 TO 0 STEP -1

PLAY «n60l20»

COLOR clor

LOCATE 16, 53: PRINT «ОШИБКА!    ПОВТОРИТЕ ВВОД»

NEXT clor

COLOR ccc

RETURN
Заключение

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

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

Во введении есть обоснование всем проблемам компьютеризации в сфере образования.

Дана оценка программированному обучению. Освещены проблемы создания и использования обучающих программ.

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

Рассмотрены предпосылки для подачи учебного материала с применением ЭВМ.

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

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

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

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

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

    продолжение
--PAGE_BREAK--
еще рефераты
Еще работы по информатике