Текст
                    ЦЕНА I РУБ.

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

Брычковым Е.Ю.	।

Разборка и/или модификация документа |
запрещены	।

Disassembly and/or modifications to this |
document are not allowed	।

Опубликовано с разрешения
Степанова M.E.

Материалы предоставлены 1

Антиповым И.Н. и Боковневым О.А. I
_________________________________J

Адрес документа (document location): |
http://www.gr8bit.ru	।

 ПН» !	     III1I   ' 


[http://www.gr8bit.ruj Материалы подготовил М.Е.Степанов Научный редактор и'.Н.Антипов Редактор В,П.БуткОвСкий . ПРАКТИЧЕСКИЕ ЗАНЯТИЯ НА ПЭВМ ЯМАХА Подписано в печать 24. п. 87с Заказ278в Тираж 5.000экз. Объём 16,5 уч.-изд.л. Цена 1 руб. Изд.НИИ школ МП РСфСР,инд.109044.Москва,Крутицкий вал,д.24 Московская типография В 9, ВО <!Союзполиграфпромя, ул.Волочаевская,40.
^http://www.gr8bit.ruj
М.Е.Степанов "Практические занятия на ПЭВМ нмлхА". В пособии излагается материал,позволяющий освоить одну из наи- более развитых версий языка Бейсик,реализованную на персональ- ном компьютере "ЯМАХА".Рассмотрены все основные возможности языка,кроме работы с файлами.Книга содержит более 300 заданий различной сложности Большинство из них снабжено ответами.Мно- гие задания можно использовать при работе на других персональ- ных компьютерах,прежде всего на компьютере "КОРВЕТ". Пособие предназначено для учащихся 9-10 классов средних школ, но может быть использовано учителями на уроках информатики,фа- культативах и в кружковой работе.Книга может быть использована в качестве самоучителя при освоении ПЭВМ "ЯМАХА". Научный редактор И.Н.Антипов.доктор педагогических наук, профессор,заведующий лаб. "Обучения про- граммирования И ЭВМ" НИИ школ МП РСФСР. Рецензент 0.А.Боковнев.кандидат педагогических наук , замдиректора НИИ школ МП РСФСР . © Изд. НИИ школ МП РСФСР,инд.109044,Москва,Крутицкий вал 24.
Введение. "Практические занятия на ПЭВМ Ямаха" предназначены в пер - вую очередь для учащихся 9-10 классов,но могут быть использованы преподавателем на уроках,факультативах по информатике и в круж - ковой работе.Кроме того они могут оказать помощь любому пользо - вателю ПЭВМ Ямаха,не являющемуся профессиональным программистом и желающему освоить язык программирования MSX - Бейсик. Предполагается,что рабочее место учащегося,использующего данное пособие,представляет Собой персональный компьютер без внешних устройств (дисковод,магнитофон,принтер) из базового КУВТ Ямаха ..Этим об"яСняетСя то, что в большинстве заданий не использу- ется цвет,а о работе с дисководом и принтером упоминается только в приложениях.Многие занятия в пособии существенно опираются на такие особенности ПЭВМ Ямаха,как например очень удобный экранный редактор,который даёт возможность быстро набирать программы с большим количеством сходных Строк (См. ответ на задание 8.1.л) . Однако некоторые из заданий могут с успехом использоваться при обучении учащихся работе на других типах ПЭВМ.Что же касается компьютеров "Корвет" и БК ,на которых с известными ограничениями реализован MSX - Бейсик,то для них зачастую можно использовать и ответы к заданиям. Основную часть книги составляют около 300 заданий,сгруппи- рованных по занятиям и ответы к большинству из этих заданий.Осво- ение языка MSX - Бейсик распадается на несколько этапов. 1. Клавиатура и работа в прямом диалоге (занятия 1 - 3). 2. Понятие программы и графические операторы (4 - 8). 3. Оператор цикла и интуитивное представление о переменной (занятия 9 - 11). 4. Функциональная зависимость между значениями переменных (12 - 14). 5. Уточнение понятия переменной.Операторы ввода,присваива- ния (15 - 17). 6. Вложенные циклы (18). 7. Условный оператор (19 - 21).
8. Массивы и Строковые переменные (занятия 22 -24). 9. Подпрограммы,спрайта,Случайные числа (25 - 27). 10. Прерывания,музыкальный язык,доступ к физической памяти (28 - 30). На 31 - 34 занятиях учащемуся или группе учащихся предлага- ется выполнить индивидуальное задание,состоящее в написании за- конченной программы.Материалы,посвящённые индивидуальным задани- ям, несомненно, должны быть разработаны весьма подробно и соста - вить специальную публикацию.Об"ём же настоящего пособия не поз- волил уделить им достаточного внимания. Уровень трудности заданий,вошедших в книгу весьма различен: от простейших упражнений до заданий,требующих от учащегося дли - тельной и упорной работа.В первую очередь особой сложностью от - личаются задания из раздела "ПОДУМАЙ ДОМА". Нередко уровень заданий подгоняется под так называемого "среднего" ученика,т.е. ученика,не проявляющего устойчивого ин- тереса к предмету.При этом страдают наиболее активные учащиеся. Наличие сложных заданий позволяет учителю более гибко вести урок, учитывая интересы и возможности различных групп учащихся. В книге встречается несколько заданий,в которых предлага- ется написать инструментальные и игровые программы.Следует иметь в виду,что программы,приведённые в ответах,используются только в качестве учебных примеров.Как правило,в них применяются лишь те операторы,которые изучены к данному моменту,хотя применение всех описанных в пособии средств языка могло бы улучшить их качество. Для сокращения размеров этих программ инструкции по их использо- ванию не закладываются в сами программы. Разработка данного пособия велась в ходе эксперимента по машинному курсу информатики в Ждановском районе г.Москвы.Занятия с учащимися 37,396,397,455,457,471 и 480 школ проходили в Жданов- ском дворце пионеров в 1986/87 учебном году .Методика преподава - ния в 9-10 классах проверялась совместно с К.Н.Барановой и А.Г. Луканкиным.
ИЗ ЧЕГО СОСТОИТ ЭТА КНИЖКА .Домашнее задание для желающих Дополнительные св едения.,о БЕЙСИКе Важная состав- ная часть заня- тия ^поясняющая приёмы програм- миров ания Справка для учителя по со- ставлению контрольной Конспект для повторения перед контроль- ной Каждое ЗАНЯТИЕ расчитано на один урок и состоит из сле- дующих Необходимые '.сведения о БЕЙСИКе помеченные звёздочкой можно опустить) лучше овладеть предметом । http://www.gr8bit.ru । 1---------------------1
- Ребяты ! учить это планетарная модель атома.Теперь нажми на ПРОБЕЛ и слушай,как я буду... о всё !!! исполнять МУЗЛКУ j Персональный компьютер подключен к ЭЛЕКТРОСЕТИ ! \Он является сложным дорогостоящим устройством ! \В дисплейном классе 1'СОБЛЗДАЙТЕ СТРОГУЮ ДИСЦИПЛИНУ" !!! |

^http://www.gr8bit.ruj Работа на ПЭВМ - это обмен информацией между пользова- телем и компьютером.Пользователь передаёт информацию в ком- пьютер с помощью клавиатуры. Для удобства пользователя нажатие на клавишу приводит к появлению на экране соответствующего символа.Это даёт воз- можность контролировать свои действия и оперативно исправлять ошибки.Символ появляется там,где находится КУРСОР.-----------' На экране появляются также и сообщения.которые компью- тер предназначает пользователю.Курсор и для этих сообщений у указывает место появления, < памятВ\ПЭ1: : Информация от пользователя; о клавиатуры на экран — КУРСОР - прямоугольник, указывающий место появления । - Ч” очередного сим- I вола на экране. Hg. экран * jvJ ;1к ..ормация от I компьютера ^пользователю ДЛЯ УСПЕШНОЙ РАБОТЫ НА ПЭВМ НЕОБХОДИМО ОСсОИТЬ КЛАВИАТУРУ договоримся различать слова ПАДАТЬ и ПРИДАТЬ . НАЖАТЬ на кла^тиу’^' легко ударить по ней * подушечкой пальца и тут же оторвать галец от клавиши. Некоторые клавиши пртть _ мягк0 только нажимают , ------> положить на неё некоторые - только прижима- палец и не от- пускать некото- ют.а некоторые либо нажима-(рое время. ют либо прижимают по мере надобности ПОЗНАКОМИМСЯ С КЛАВИАТУРОЙ ПОБЛИЖЕ
http://www.gr8bit.ru । ТИПЫ КЛАВИШ 1. Управляющие (чёрные) -9- Вкл/откл режима гставки НОМЕ Стирание символа, на котором стоит Управление курсором курсор CIS CObJ 5 too» ЮЗ СП# икл/откл букн Вкл/откл русского алфавита Функциональные клавиши для быстрого забора нескольких символов Пробел - пропуск символа 2. Символьные (белые ) а) буквенные (хотя бы одна буква) б) небуквенные (нет букв) - установка курсора в левый верхний угол экрана очистка (через экрана SHIFT) •ч*» Клавиша ввода информации и перевода курсора в следующую строку У 8 НЕ СЛЕДУЕТ ПРИЖИМАТЬ КЛАВИШИ Переключение регист- ра (верхние символы вместо нижних) (ЖЕ] Смотри также ПРИЛОЖЕНИЕ 1
На большинстве символьных клавиш изображено по два символа (на некоторых по три) : верхний и нижний. ЗАДАНИЕ 1,1. Нажимая на символьные клавиши,определите какой из двух символов передаётся на экран. ЗАДАНИЕ 1.2, Проверьте эти правила.Установите самостоя- тельно, что передаётся на экран при нажатии через ШИФТ на кла- виши gig® ЦИФРЫ НАБИРАЮТСЯ ЧЕРЕЗ ШИФТ Ивдикатор загорается после нажатия на РУС - включение русского алфавита вместо латинского. Отключение - повторным нажатием на клавишу РУС.
ЗАДАНИЕ 1.3, Наберите на экране несколько русских букв. Выясните,к чему приводит нажатие буквенных клавиш через ШИФТ. Влияет ли клавиша РУС на небуквенные клавиши ? Отключите кла- вишу РУС. Индикатор Английское слово CAPitalS (кепитэлс) означает ПРОПИСНЫЕ БУКВЫ Клавиша CAPS включает и отключает прописные буквы.Она дейст- вует аналогично клавише РУС. ЗАДАНИЕ 1,4. Включите клавишу CAPS.Действует ли она на небунвенные клавиши ’Действует ли SHIFT на буквенные клавиши при включённом CAPS ?Включите ещё и клавишу РУС. Как действу- ют эти клавиши совместно ? Отключите клавиши CAPS и РУС. ЧЕРЕЗ ЗАДАНИЕ 1.5. Наберите на экране несколько символов .На- жмите на клавишу CLS/HOME без ПМФТа .затем через ШИФТ .В чём различие ? CLS- очистка экрана и установка курсора в левый верхний угол (от Clear Screen - очищать экран,клиа скрин ) НОМЕ - установка курсора в левый верхний угол без очистки экрана (НОМЕ - домой,произносится:хоум) |V - стрелки,позволяющие перемещать курсор I по экрану. I Для перемещения курсора по диа- I гонали можно одновременно нажимать | сразу на две соседние стрелки. ^(Нажатые стрелки) Стрелки можно нажимать и прижимать. Движение курсора не является непре- рывным.Он может занимать на экране строго определённые места,называемые позициями . Направление' движения| \ курсора
Экран можно представить разбитым на строки и столбцы. Пересечение строки и столбца образует позицию.Принято ну- меровать столбцы и строки,на- чиная с нуля. ЗАДАНИЕ 1.6. Перемещая курсор стрелками,подсчитайте коли- чество строк и столбцов. ЗАДАНИЕ 1.7. Проверьте,что а) при нажатии на стрелку ф курсор из последней позиции строки переходит .______________________ в первую позицию следующей строки ; ЭД —- г) если на экране есть символы,то кур- сор проходит по ним,не стирая. ЭД в ) когда курсору некуда перехо- дить, он упирается в границы экрана: «• Ф « ♦ ♦ j м, I М * ЗАДАНИЕ 1.8. Определите минимальное количество нажатий необходимое для перевода курсора а) из 37-й позиции 17-й строки в 3-ю позицию 19-й строки; б) " 36-й " 10-й " 1-ю " 8-й " ; в) " 1-й " 20-й " 4-ю " 0-й " . ПЕРЕМЕЩЕНИЕ КУРСОРА ИСПОЛЬЗУЕТСЯ ПРИ ИСПРАВЛЕНИИ ____________________ОШИБОК_____________ ________ - вместо верных ошибочные символы Возможны три вида < ОШИБОК 0ШШИ1БКХ1
Для исправления каждого ввда ошибок нужно применять под- ходящий способ. [(НАЛОЖЕНИЕ СИМВОЛОВ)! Если установить курсор на неверный символ и нажать на клавишу, посылающую на экран верный символ,то неверный символ заменит- ся на верный. ЗАДАНИЕ 1.9. Наберите в нулевой строке экрана слово "из- лучение" .вернитесь в начало строки и,проходя по ней,превратите это слово в слово "наложение". НА ОЖ ^СТИРАНИЕ СИМВОЛОВЬ Английское слово DELete (дилит) означает СТИРАТЬ При нажатии на клавишу DEL стирается символ,на котором стоит курсор."Хвост" строки правее курсора сдвигается на один сим- вол влево.Если прижать клавишу DEL ,то можно отереть хвост це- ликом. ЗАДАНИЕ 1.10, Наберите клавиши DEL превратите его в слово "информатика".С помощью слово "формат". [ВСТАВКА СИМВОЛОВ)' Английское слово IHSert (инсет) означает ВСТАВЛЯТЬ ПРАВИЛА ВСТАВКИ СИМВОЛОВ а) установить курсор на символ,перед которым нужно вставить пропущенные символы; > б) включить режим вставки нажатием на клавишу INS .Признаком режима вставки является сплющенный курсор; в) вставить нужные символы; ) г) отключить режим вставки повторным нажатием на клавишу INS либо на одну из стрелок ft, «=>, .. _.._________ J Клавиша DEL может работать при включённом режиме вставки.
ЗАДАНИЕ 1.11. Наберите слово "Клара" и С помощью клавиши INS превратите его в слово "Клавиатура". Г ДЛЯ УСКОРЕНИЯ УСТАНОВКИ КУРСОРА НА НУЖНЫЙ СИМВОЛ \ ПРИКИПАЙТЕ СТРЕЛКИ.ОКОЛО СИМВОЛА ПЕРЕХОДИТЕ НА НАЖАТИЯ ДЛЯ ТОЧНОЙ УСТАНОВКИ . *4------ . -/ . ; .. - ........... ЗАДАНИЕ 1,12. Используя наложение,стирание,вставку,пре- образуйте слова: КАЮТА —» КОМПЬЮТЕР КАРЕТА —♦ ПЕРФОКАРТА ТРАНСФОРМАТОР —» ФОРТРАН ТРАССИРОВКА—» ПРОГРАММИРОВАНИЕ Сами придумайте аналогичные пары слов и предложите своим това- рищам произвести соответствующие преобразования. Клавиша ВВОДА ]| Изогнутая стрелка указывает,что при на- жатии на эту клавишу,курсор переходит в начало следующей строки ( вниз и влево) . Об основном назначении этой клавиши бу- дет рассказано на следующем занятии. ЗАДАНИЕ 1.13, Очистите экран.Перегоните курсор в сере- дину строки и нажмите клавишу ввода.Куда перешёл курсор ?Не- сколько раз нажмите на клавишу ввода,наблюдая за курсором. Используя только стрелки управления курсором,наберите в нуле- вой строке цифру 0, в первой - 1 и т.д. до девятой строки,пе- реведите курсор в нижнюю строку экрана.Нажав клавишу ввода, убедитесь,что все строки экрана сдвинутся на одну вверх (ну- левая строка исчезнет совсем).Где находится курсор ?Что про- изойдёт, если нажать на клавишу ввода ещё несколько раз ? [[ПРОБЕЛ)] - длинная чёрная клавиша (на письме обозначается СИМВОЛОМ 1—1 ) ЗАДАНИЕ 1,14, Наберите своё имя и фамилию,разделив их пробелом ( Ваня-Иванов).Используя пробел,превратите слово "ПА- РОХОД" в слова "ПАР" и "ХОД".Чем отличаются клавиши i_i и DEL’
Занятие 2. Освоив клавиатуру,можно начать общаться с компьютером.Но для общения необходим язык.Мы будем использовать один из вари- антов языка поограммирования БЕЙСИК,созданного на базе английс- кого языка ( английское слово BASIC означает ОСНОВНОЙ). Обычный язык состоит из слов,язык программирования - из команд С операторов).Как правило,основой оператора служит анг- лийское слово(или его сокращение),поясняющее смысл Рвератора . Г ТОАВИлГнАБОрГтацад^ ~1 1 .Каждую команду набирают в чистой строке экрана. ( 2 .При наборе команды используются только латинские буквы (не ! имеет значения заглавные или строчные).Не забывайте отклю-( чать клавишу РУС перед набором команд! 3 .Команда будет исполнена только после нажатия на клавишу < ВВОДА, 4.Если хотя бы один символ набран неверно,на экран будет вы- ) дано сообщение об ошибке. б.После выполнения команда на экран выдаётся сообщение ОК (о"кей-всё в порядке)’/, курсор в следующей отроке .В этой строке можно набирать следующую команду. PRINT Английское слово PRINT (принт) означает ПЕЧАТАТЬ Команда PRINT - это приказ компьютеру что-нибудь напе- чатать.Например,можно напечатать значение суммы.Для этого ну- жно набрать слово PRINT , первое слагаемое,знак + и второе слагаемое.Затем нажать клавишу ввода.Результат будет напеча- тан строкой ниже. PRINT 123*456 579 http://www.gr8bit.ru । ______________________j
Оператор PRINT позволяет вычислять весьма сложные ариф- метические выражения.Иногда использование этого оператора для вычислений называют работой в режиме калькулятора [ РАБОТА В РШИЕ КАЛЬКУЛЯТОРА.] Чтобы успешно работать в режиме калькулятора необходимо уметь правильно записывать на языке БЕЙСИК числа и арифмети- ческие выражения. Запись чисел и набор их на клавиатуре Все цифры находятся в верхнем ряду белых клавиш. Боль перечёркнут,чтобы отличать го от буквы 0. Перед отрицательными числами ставится минус (в верхнем ряду белых клавиш самая правая клавиша [ у [В десятичных дробях вместо запятой ставится точка (самая пра- вая из клавиш третьего сверху рада ; л , Для записи очень больших и малых по модулю чисел использует- ся запись чисел с порядком,аналогичная математической:а • Можно опускать в записи числа ПОЛЬ,стоящий перед точкой: вместо 0J2 5 набирают ] 2 3
ЗАДАНИЕ 2.1. С помощью оператора PRINT вычислите суммы и разности: 259460000-978300000 ____________________ 63,41976+33,51266 Г Для записи каадого 0,0000279+0,0009485 числа используйте -0,678-1,8156 I подходящий способ 1,2-0,37965 ------------------- НЕ ПУТАЙТЕ Для записи арифметических выражений можно использовать круглые скобки: .Действия в скобках выполняются в первую очередь. ПОРЯДОК ДЕЙСТВИЙ определяется обычными математическими правилами . 1.Возведение в степень.' 2.Умножение и деление . . 3.Сложение и вычитание. Действия одинаковой очерёдности выполняются слева направо. Символы с клавиатуры на экран идут в линию без под"ёмов и опусканий.Так же в линию записывают арифметические выражения 1/3
ЗАДАНИЕ 2.2. В режиме калькулятора вычислите значения следующих выражений а) 1-3+5-7+9-11 б) 1-2-3-4-5-6-7-8-9-10 в) i+ i+ + i+ i г) 85 - 58 д) 22+ 32+ 42+ 52+ 62 е) 4±"?3f 43 1 93- 5-6-7 ж\ 1+2 . 5+6 ______1. _____ *> 3+4 • 7+8 3/ ? . ..... 3 ~ 2 + Г+^г- 6 + f ^СООБЩЕНИЯ ОБ ОШИБКАХ]) Если при наборе слова PRINT допущена неточность,производилось деление на ноль,результат слишком велик и т.д., в каждом по- добном случае компьютер выдаёт на экран сообщение об ошибке. 3354- СИНТАКСИЧЕСКАЯ ОШИБКА -CVUTAV FDDAD ( (неверная запись команды) /Ji N I ДА tKKuK < у D D | NT* 1+4 х-ДЕЛЕНИЕ НА НОЛЬ . DIVISION ВУ ZERO ком большое число) Г vtlixi uvh PRINT 10л100 Существует ещё многд подобных t Получив сообщение об ошибке, СОХРАНЯЛИ СПОКОЙСТВИЕ, Это обычное рабочее сообщение. • поднимитесь в строку,где допущена ошибка,исправьте её, НАЖМИТЕ НА ВВОД (.ВО ВРЕМЯ НАЖАТИЯ КУРСОР МОЖЕТ НАХОДИТЬСЯ В ЛЮБОМ МЕСТЕ ИСПРАВЛЯЕМОЙ СТРОКИ,ЭТО УСКОРЯЕТ ИСПРАВЛЕНИЕ). ЗАДАНИЕ 2.3* Возводя 10 в различные степени,определите с какими максимальными числами может работать компьютер.Поду- майте,как это сделать,используя как можно меньше вычислений. Если арифметическое выражение не вмещается в экранную строку,продолжайте его набор в следующей строке.Не ну- жен знак переноса.При исправлении такой длинной коман- ды, в момент нажатия на ВВОД курсор может находиться в любой из этих экранных строк.
ЗАДАНИЕ 2.3. Вычислите значение выражения <123.746698 + 85.231415)-18,263 0,18 + 2,39 - 1/6 + 5,81 - 0733 [^Быстрый набор слова PRlNT^p Нажатие на функциональ- нут> клавишу позволяет быстро вывести на экран сразу несколько символов. Экранные подсказки,соответствую- щие клавишам Fl - F5. Когда прижат ШИФТ.на эк- ран выдаются подсказки соотв етств ующие те - но Иногда клавише F1 соответствует другое значение Если клавише F1 соответствует значение PRINT,то одним нажатием на эту клавишу можно вывести слово PRINT на экран Для того,чтобы придать функциональной клавише нужное значение используют команду KEY Английское слово КЕУ (.ки) означает КЛАВИША Этой командой можно любой функциональной клавише задать новое значение длиной до 15 символов (в подсказке на экране отобража- ется7 символов?.____ Номер функциональной клавиши, ~~~~~ ( Кавычки KEYgr.PRINT^'W Запятая Значение функциональной клавиши ШНе путайте запятую и I ---апостроф I Ещё один способ быстрого набора команд,содержащих сло- во PRINT. Вместо слова PRINT можно набирать знак вопроса:
ЗАДАНИЕ 2.4. С помощью команды КЕУ придайте клавише F1 значение "БЫСТЖЙ^НАБОР".Проверьте её действие.Установите кла- више F1 значение "PPINTJ1 .используйте эту клавишу в последую- щей работе. Операция Л позволяет возводить положительное число в дробную степень . ЗАДАНИЕ 2.5. Предскажите какой результат будет получен при вычислении значения выражения 2Л1/2 .Проверьте своё пред- сказание вычислением. Вычислите значения выражений а) \/3~о , б) \/122 + 52 д> (1 + в) V3/2 + е) \/2 + \/2 + '72 + № г) 625-и’г& £ ЗАДАНИЕ 2.6. Об"ясните,чем отличаются две записи на Бей- сике: 1Е5 и 10^5 [[стандартные ФУНКЦИИ j| В Бейсике предусмотрена возможность вычисления значений некоторых элементарных функций.Запись функций производится аналогично их записи в математике :,имя функции, и,аргумент, в скобках. ~~ / Математическая запись Запись на Бейсике F (х), SIN (3.14) 4 Скобки обязательны Имя любой стандартной функции в языке Бейсик состоит из трёх латинских букв. Стандартные функции могут входить в арифметические выра- жения.В качестве аргумента также можно использовать арифмети- ческое выражение. Если необходимо вычислить функцию,которая не входит в набор стандартных функций,то нужно выразить её с помощью зна- ков арифметических действий и стандартных функций.
ИМЯ' ФУНКЦИИ МАТЕМАТИЧЕСКИЙ СМЫСЛ лвз Абсолютное значение (модуль) числа SQR Квадратный корень (от англ. SQuareRoot) SI н л Синус в А Р Р г а > У Д м и е а н н т а X cos Косинус тли Тангенс лтн Арктангенс - по значению тангенса опре- деляется угол в радианах ЕХР Показательная (экспоненциальная) функ- ция: ех ,где в - особое число LOG Логарифм по основанию е IHT Целая часть числа (от англ. INTeger) - целое число.меньшее аргумента и бли- жайшее к нему SGU Знак числа (от англ. S(GN) r. Ysr, I J.p “Ьди л < С sgn(x) 0, " Х»0 L1, " х<о S L a)ABS ЗАДАНИЕ 2.7. Вычислите при X = 5 ; -6 ; 0 значение функции = 25 + З5 б) SQR при X в) SIN при X = 3.14/4 г) COS при X = 3.14/3 д)ТАМ при X = 3.14/4 e)ATN при X = 1 ж) EXP при X = 2 ; -1 з) ЦОС при X = 10 и) TNT при X = 5.5 ; -0.11 ; 0.9 k)SCN при X = 99 ; -7 ; 0 значения арифметических выраже- ЗАДАНИЕ 2.8. Вычислите ний (запись математическая): a) sin 1 + cos2 + tg 3 б) eiin('2}-\l3 в) 7 I srn Н1 - COS2(^)| г? ________1_____ ' ctg 7 + tg 1
ЗАДАНИЕ 2.9.* Чтобы лучше познакомиться с показательной и логарифмической функциями а) проверьте для нескольких значений,что функции 10®- и ЕХР являются обратными друг к другу; б) вычислите число е; в) придумайте.ка’' вычислять на компьютере функции a,logaX. ЗАДАНИЕ 2.10* Чтобы лучше познакомиться с функцией ATM а) проверьте для нескольких значений,что функции ТАМ и ATM являются обратными друг к другу; б) вычислите число ЯГ. ЗАДАНИЕ 2.11. Вспомните,как связаны радианная и градусная меры углов и а) вычислите значение выражения sin 11е Sin 23° б) с помощью компьютера определите сколько градусов со- держится в радиане. ЗАДАНИЕ 2.12,*Об"ясните,почему при вычислении значения выражения , , . , . SI iW Л Si И (2) <-Sl Н(3) + Si ПбЧ)-г SIП результат появляется на экране с задержкой.Как определить вре- мя, которое затрачивается на вычисление выражения sin (1). ЗАДАНИЕ 2.13 .* Используя функцию 1МТ а) определите остаток от деления числа 1234 на 17; б) напечатайте значение выражения COS(y) .округлённое до трёх знаков после запятой. ЗАДАНИЕ 2.14. Дайте исчерпывающее словесное описание фун- кпии 1 - AB8(3GN(X)) , вычислите её значения при X = -15 ; 67 ; 0 . ПОДУМАЙ ДОМА Предварительно вычислив на компьютере значение выражения {2 +13 и сравнив его с числом ЯГ .придумай,как с помощью цирку- ля и линейки построить прямоугольник приблизительно равный по площади данному кругу. Как с помощью компьютера оценить точность построения ?
Занятие 3. Продолжим изучение операторов языка Бейсик.Новые операторы позволят нам красиво размещать на экране самую различную инфор- мацию. PRINT "ТЕКСТ Текст обязательно выделяется кавычками Н Печать текста,указаного в кавычках,начиная от позиции,в кото- рой находится курсор 01^^ - Очистка экрана Действие команды ана- логично действию клави- ши CLS/SH1PT. Цекст Команда LOCATE устанавливает курсор в заданные позицию и строку LOCATEja Номера позиции и Отроки Английское слово LOCATE (лоукейт) означает РАСПОЛАГАТЬ ЗАДАНИЕ 3.1. Наберите на клавиатуре и исполните а) команду CLS.B чём отличие от очистки экрана клавишей CL5/ SHIFT; б) команду LOCATE 15,10.Где находится курсор?Почему? в; команду PRINT "Печать текста" .Где напечатан текст?Почему? Напрашивается вопрос : зачем нужны эти команды,если мож- но очищать экран и управлять курсором с помощью специальных клавиш .Действительно,каждая из этих команд,взятая сама по се- бе,не эффективна.Однако их совместное использование даёт воз- можность выполнять сложные операции не в ручную,а автоматичес- ки и получать результаты недоступные при ручном исполнении.
11 КОМАНДНАЯ СТРОКА^] Компьютеру можно подать несколько команд одновременно,за- писав их в строку (командная строка).Команды в командной строке отделяются друг от друга двоеточием [Д~].После нажатия на клави- шу ВВОДА команды в командной строке поочерёдно исполняются сле- ва направо. CL.S--LOCATE 1Й,12 = Р1?1КТ"К0МАНД.СТР0КА^ 4 ________ ------7^1 ( Разделители Данная командная Строка вызовет последовательное выполнение следующих действий : очистка экрана,установка курсора в 10-ю по- зицию 12-й строки и печать,начиная с этой позиции,текста "КОМАНД. СТРОКА" . При составлении командных строк особое внимание необходимо уделять перемещению курсора по экрану. Это связано с тем,что каждая из команд (CLS , LOCATE , PRINT) меняет положение курсо- ра. Исполнение командной строки происходит быстро,и перемещения курсора не фиксируются глазом,однако если мы их не учтём,то мо- жем получить неверный результат. После CLS Для обеспечения правильной после- довательности Л ~л Последовательные /ПоСле положения курсора LOCATE 10,12 на экране. ДОМАНА. СТРОКА Ок -<---------------------> После PRINT переход в Я-<_) начало следующей стро- Окончатель- ки(для выдачи Ок). положений курсора 1Л°,е положение^ на экране необходимо задать правильный порядок команд в командной строке . ЗАДАНИЕ 3.2. Наберите и исполните командную строку,кото- рая напечатает ваше имя в центре чистого экрана.Как обеспечить симметричное расположение вашего имени по отношению к границам экрана? Какова последовательность положений курсора на экране в процессе исполнения командной строки?
ЗАДАНИЕ 3.3. Для ускорения набора командных строк придайте функциональным клавишам следующие значения: Fl - PRINT F2 - CLS F3 - LOCATE ЗАДАНИЕ 3.4. Укажите последовательные положения курсора; предскажите,как будет расположена информация на экране после выполнения следующих командных строк: a) LOCATE 15,8 : CLS : PRINT "ПРОМАХ" б) LOCATE 20,3 : PRINT "ИСЧЕЗНОВЕНИЕ" : CLS в) CLS : PRINT "ЕЩЕ ОДИН ПРОМАХ" : LOCATE 0,0 Какая последовательность команд в командной строке приведет к более осмысленным результатам ? Ж ЗАДАНИЕ 3.5. С помощью командной строки вычислите значе- ние выражения ('Гб' + 1)/2, так чтобы результат был напечатан а) в левом верхнем углу чистого экрана (в частности на экра- не в этот момент не должно быть самой командной строки); б ) в центре чистого экрана. Можно ли сделать это беэ применения командной строки,пользуясь только командой PRINT и управляя курсором вручную ? ЗАДАНИЕ 3.6. С помощью командной строки напечатайте а) два слова в разных местах чистого экрана ; б) три " " " " ; в) три слова,расположенных одно под другим в начале последо- вательных строк. ЗАДАНИЕ 3.7.* С помощью командной строки напечатайте в цен- тре чистего экрана какое-нибудь слово.В этой же комавдной строке предусмотрите комаццу,которая обеспечит выдачу сообщения Ок в левом верхнем углу экрана. ЗАДАНИЕ 3.8.* С помощью командной строки вычислите и напе- чатайте в центре чистого экрана значение выражения IO2 + 152 + 202 . Над ним в качестве заголовка напечатайте текст "Сумма квадратов" ЗАДАНИЕ 3.9, В центре чистого экрана напечатайте слово ж**ж*ж*ж *БЕЙСИК* ж ж ж ж ж ж ж ж из звездочек .окруженное
В команде LOCATE используются два параметра ( в программиро- вании такие параметры часто называют ОПЕРАНДАМИ) : X - номер позиции ; У - номер строки скать [да,то V- LOCATE X Во многих командах операнда,разделенные запятыми,можно опу- по следующему общему правилу: ЕслрГопУскает^Тдан^ вместе с ними опускаются предшествующая им запятая и разде4 [ляюшие их запятые.Если опускаются операнды в начале или середине] команды,то все разделяющие их запятые сохраняются <иначе компью-] [тер не сможет установить точное положение операнда и определить ] [какую роль он играет в команде ) . I — изменяется только позиция курсора но он остается в той же строке , в котор А был до исполнения LOCATE. — изменяется строка,но сохраняется прежняя позиция LOCATE. У Можно опускать только часть операндов , но не все . ' Общее правило задает форму записи команды с опусканием операндов.То,кажое значение принимает пропущенный опе- ранд, специально оговаривается для каждой команда. ЗАДАНИЕ ЗЛОТ Напечатайте слово БИТ вертикально а) в начале 0-й,I-й и 2-й строк; б) в центре экрана. ЗАДАНИЕ ЗЛ1* Напечатайте слово БАЙТ по диагонали. ЗАДАНИЕ ЗЛ2. Вычислите значение выражения Sin (4) и напеча- тайте результат в одной строке с предществующей-ему подсказкой СИНУС ОДНОГО РАДИАНА » Операнды X и У в команде LOCATE по смыслу являются целыми.) Если в команде,операнды которой должны быть целыми,указаны^ дробные числа,то дробная часть не принимается в расчет. ( LOCATE 7.Х, 15М { • В качестве операндов можно использовать арифметические выражения .
ЗАДАНИЕ 3.13. Напечатайте слово КОМПЬЮТЕРИЗАЦИЯ в центре экрана.Для установки курсора в качестве операндов используйте арифметические выражения. На значения операндов обычно наложены ограничения. Если | значение операнда выходит за установленные границы,выдается сооб- щение об ошибке: Illegal -Function cal 1 - ’ - неправильный вызов функции ЗАДАНИЕ 3.14^ Определите границы для значений операндов ко- манды LOCATE.Какие- результаты получаются,если Х>39 или У >22 ? (.Сравните с заданием 2.3) tBo избежании ошибок используйте в LOCATE операнды в сле- дующих границах: • 0iX&39 ; 0&У^22 . Команда PRINT позволяет вычислять значения арифметических выражений и печатать тексты. Одной командой PRINT можно осуществлять сразу несколько вы- числений и печатей текстов.Для этого после слова PRINT последова- тельно указываются арифметические выражения и тексты (каждый текст обязательно заключается в кавычки),отделенные один от дру- гого запятой либо точкой с запятой. ЗАДАНИЕ 3.15. Выясните,чем отличается печать двух объектов разделенных запятой и разделенных точкой с запятой.То же самое для трех объектов. PRINT "А";"В";"С" печать подряд половины разне- разные экрана ЗАДАНИЕ 3.16. Одним оператором PRINT вычислите пять арифме- тических выражений: 3+7 , 3-7 , 3-7 , 3:7 , 3? .В качестве разде- лителя используйте сначала запятую,потом точку с запятой. Печать безымянных результатов на экране может привести к пу- танице.Желательно печатать результаты с текстовой подсказкой.
ЗАДАНИЕ 3.17. Вычислите и напечатайте с подсказкой : Подсказка Выражение а) СУММА» 2377.64 + 498.81 б) косинус» COS(3.14/6) в) Результат^равен^ V2 + /3 (Сравните с заданием 3.12) ЗАДАНИЕ 3.18.* Одним оператором PRINT вычислите и напечатай- те с подсказками среднее арифметическое и среднее геометрическое чисел 75 и 27.Как выбрать разделители? ______________НЕ ПУТАЙТЕ РАЗДЕЛИТЕЛИ ! Двоеточие разделяет коман'ды\ CLSS PRINT ▼ в командных строках_______ ____________ • iOCikTi-ci«7 /Запятая - стандартный разде- и । l и , । \ литель операндов в командах Точка с запятой - специальный\ г>п гмт ” D on D (о\ разделитель в команде PRINT / rKLlNl К _ оцК(£) Обычно после выполнения команды PRINT осуществляется пере- ход курсора в следующую строку. Перехода курсора в следующую строку не произойдет,если по- ставить в конце команды PRINT точку с запятой ( так называемая ПЕЧАТЬ БЕЗ ПЕРЕВОДА СТРОКИ). PRINT "ТЕКСТ" PRINT "ТЕКСТ"; ЗАДАНИЕ 3.19. Напечатайте по одной звездочке в начале и в конце 10-й строки. Можно применять команду PRINT без операндов. Исполнение такой команды приводит к пропуску одной строки без изменения символов напечатанных в этой строке ранее.
ЗАДАНИЕ 3.20, Напечатайте на экране слова "ПЕЧАТЬ" ."ЧЕ- РЕЗ" ."СТРОКУ" одно под другим через строку. ЗАДАНИЕ 3.21. Что произойдет,если выполнить команду PRINT в момент,когда курсор находится в нижней строке экрана.(Смотрите задание I.I3). ЗАДАНИЕ 3.22.* Предскажите действие команды PRINT ."ПРОБА" Проверьте свое предсказание. ЗАДАНИЕ 3.23.*Вручную заполните символами 5-ю и 6-ю строки экрана.В 15-Й строке экрана наберите командную строку,которая а) очистит в 5-й строке экрана первые 8 символов,сохранив остальные; б) целиком очистит 5-ю строку экрана,но сохранит 6-ю. ПОДУМАЙ ДОМА]) Используя результат задания 3.21 .напиши командную строку, в ходе исполнения которой слово БЕЙСИК "взлетит" из нижней стро- ки экрана в верхнюю. Продумай,как быстрее набрать эту командную строку.Попытай- ся оценить время набора. 'БЕЙСИК ' БЕЙСИК ‘----------------------------- Завершено предварительное знакомство с компьютером.Вы осво- ились с клавиатурой,научились вычислять значения арифметических выражений,познакомились с простейшими командами.Эти знания послу- жат основой для дальнейшего изучения компьютера. ПОВТОРИТЕ ПРОЙДЕННЫЙ МАТЕРИАЛ .
-30- Что мы узнали. I. КЛАВИАТУРА И ЭКРАН на нижние символ жно смотреть откл: вкл. CLS - очистка экрана разнесение печать подряд Порядок работы при вставке. Верхние символы небуквенных клавиш набираются через SHIFT. При наборе латинских букв ну- СТИРАНИЕ: стирается стоит Исполнение строки 2 as:LOMTEKfl:Pwr‘«y Выполните контрольную I. V' ” /у Командная стро- . ка состоит из ко- манд ,разделенных двоеточиями Порядок команд в стро- ке очень важен,поэтому его нужно тщательно продумывать. язательн в скобках зания порядка действий ^ВЫЧИСЛЕНИЯ Запись чисел: -123 о тд ‘‘А14 7.89Е-5 точка!-J PRINT деление умножение \ степень \ сложение^, разность скобки для ука- стандартная функция; Команды набираются в чистой экранной строке латинскими буквами.Испол- нение происходит после нажа- тия на ^}. LOCATE X , У А - управление _______т курсором PRINT "WA 2^,‘SIN-; SIN(2) - печать текстов и вычисле- ние арифметических выражений символ,на которо курсор в момент ВСТАВКА, символы вставляются перед курсором
Замятие 4. Мы уже знаем,что любая последовательность символов,посту- пившая в компьютер с клавиатуры,рассматривается как команда или командная строка.После нажатия на клавишу ввода она анализирует- ся и либо исполняется,либо компьютер выдает на экран сообщение об ошибке. Имеется еще одна возможность:записать команду или команд- ную строку в память компьютера для длительного хранения,не ис- полняя ее. Для записи команды или командной строки в память необходи- мо снабдить ее номером.Номер предшествует команде и является це- лым числом от 0 до 65529.Для наглядности номер можно отделять от команды одним или несколькими пробелами. Можно исполнить командную строку с номером,записанную в па- мять,запустив ее специальной командой: RUN Английское слово RUN (ран) означает ПРОГОН
Команда RVM приводит к запуску строки,хранящейся в па- ^мяти,сразу после нажатия на клавишу ввода.Функциональ- ная клавиша F5 кроме слова RUN содержит в себе и нажа- • тие на«5 .поэтому позволяет производить запуск одним нажатием на F5 (без последующего нажатия на^). ЗАДАНИЕ 4.1, Наберите команду с номером: 1 CLS Убедитесь,что после нажатия на ввод,очистка экрана произведена не будет.Запустите,находящуюся в памяти компьютера строку,нажав на F5.Повторно запустите эту же командную строку.набрав RUU бук- ва за буквой и нажав на клавишу ввода. Признаком окончания работы командной строки,записанной ▼ в память,является выдача на экран сообщения Ок и курсо- • ра. Можно записать в память компьютера несколько занумерованных команд или командных строк.Всю их совокупность будем называть ПРОГРАММОЙ. Строки,составляющие программу,будем называть ПРОГРАММНЫМИ строками.Не забывайте после набора очередной программной строки нажимать на клавишу ввода. ЗАДАНИЕ 4.2. Наберите программу 1 CLS 2 LOCATE 15, 10 3 PRINT "ПРОГРАММА" Предскажите,как она будет действовать.Запустив программу,про- верьте свое предсказание. Теперь мы знаем два способа подачи приказов компьютеру : командные строки и программы.Работу с командными строками без номера будем в дальнейшем называть ПРЯМЫМ ДИАЛОГОМ (за набором команды следует немедленное исполнение - ответ на запрос). ПРЯМОЙ ДИАЛОГ ПРОГРАММА Оперативность,быстрое получение результата,но ограниченное ко- личество операторов в командной строке и .обычно, однократное ее использование. Многократное использование, большие размеры программ, удобство изменения программ (по строкам).
При наборе программы программные строки отображаются на эк- ране. Если очистить экран,то это никак не отразится на сохраннос- ти программных строк в памяти.Для того,чтобы просмотреть текст программы,нужно снова отобразить его на экране.Это делается ко- мандой LIST Английское слово LIST (лист) означает СПИСОК ЗАДАНИЕ 4.3. Очистите экран.Выведите текст программы на эк- ран,сначала набрав команду LIST буква за буквой,а затем , не очи- щая экрана,с помощью клавиши F4.(B обоих случаях необходимо на- жимать на клавишу ввода). Если вы решили создавать новую программу,предварительно ну- жно удалить из памяти старую программу.Это делается с помощью команды NEW Английское слово NEW (нью) означает НОВЫЙ ЗАДАНИЕ 4.4. Удалите программу из памяти.Сохранился ли ее текст на экране? Как проверить,что в памяти программы уже нет? Кай восстановить программу в памяти,если ее текст сохранился на экране? Команды RUN , LIST , NEW являются основными инстру- ментами при работе с программами.
При выводе на экран текста программы командой LIST ис~ t пользуются только заглавные латинские буквы. Если вы ошибочно использовали вместо латинских букв в русские,то хотя они и будут отображены на экране при наборе программной строки,но при записи строки в память они бу- дут опущены. Русские и строчные латинские буквы,входящие в текс- ты т.е. заключенные в кавычки выдаются на экран командой LIST беэ изменений. ЗАДАНИЕ 4.5. Напишите программу,которая печатает в центре чистого экрана значение выражения 2J + 22+ 24+ 26 с подсказкой"сумма=".В каждой программной строке помещайте ровно одну команду.Программные строки вводите в память в обратном по- рядке: сначала строку с наибольшим номером и т.д. в порядке убы- вания номеров.Выведите программу на экран'командой Ы5Т.Сделайте выводы. _ Программные строки можно вводить в любом порядке.В па- мяти они автоматически расположатся по порядку возрас- ▼ тания номеров. • ---------------------------------------------—__________ ЗАДАНИЕ 4.6, Придумайте,как нужно нумеровать программные строки,чтобы имелась возможность вставлять новую строку между любыми двумя строками программы.Как производится вставка? Т Привыкайте нумеровать строки программы,начиная с 10 через 10 : 10,20,30,... • ---------------—----------------------------------------- ЗАДАНИЕ 4.7. Напишите программу,которая в центре чистого экрана напечатает значение выражения V5 + 2'/3 .Какие программ- ные строки нужно изменить,чтобы программа печатала значение вы- ражения 1/SIU(3) .Попытайтесь произвести замену соответствующей строки. ТДля замены строки в программе достаточно набрать на клавиатуре новую строку с тем же номером. • Если новая строка отличается от старой незначительно, то можно вывести на экран старую строку и,передвигаясь по ней. курсором исправить ее на новую.Сразу после исправления нужно на- жать на клавишу ввода ( курсор в этот момент может находиться в любом месте строки).Новая строка заменит старую.
ЗАДАНИЕ 4.8. Напишите программу,соответствующую заданию 36а. Измените её в соответствии с заданием 3.6.б.Как переделать по- следнюю программу для исполнения задания 3.6.в? Чтобы удалить из программы одну строку,нужно набрать её у номер и нажать на ввод. Происходит замена на пустую стро- • ку.При попытке удалить несуществующую строку на экран вы- даётся сообщение: Undef i ne?d 1 i me» mumt>e»r- _ неопределён- ______________________________________ный номер строки ЗАДАНИЕ 4.9. Напишите программу,которая напечатает 10 звёз- дочек по диагонали чистого экрана,начиная от верхнего левого уг- ла. При думайте, как проще ввести в память эту программу,состоящую из нескольких сходных строк. ЗАДАНИЕ 4.10. Напишите программу,которая напечатает таблицу аргументов и значений функции У = ыи(Х)нй отрезке (0,11с шагом Q2. Измените эту программу так,чтобы она распечатывала значения фун- кции У ~'|Х.Как печатать значения,округлённые до 4 знаков после запятой9 При вводе программной строки в память компьютер не ана- t лизирует её,поэтому строка с ошибкой тоже будет записа- на в память.Ошибка даст о себе знать только после за- • пуска программы во время исполнения данной строки. Исполнение программы прекращается.На экран выдаётся сообщение об ошибке,в котором указывается номер программной строки,содержащей ошибку. Чтобы найти ошибку нужно вывести текст программы на экран (или только ошибочную строку) и внимательно просмотреть строку, в которой произошла ошибка.После исправления ошибки и замены ошибочной программной строки на верную можно снова запустить программу. В выявлении простых ошибок может оказать помощь приложение 2. ? ПОДУМАЙ ДОМа]| Напиши программу .которая аналогична программе из" задания 4.9.,но печатает звёздочки медленно,с задержкой. Переделай написанную программу так,чтобы она заставила звёздочку двигаться по диагонали экрана.
Занятие 5. ЗАДАНИЕ 5.1. Напишите программу,печатающую 3 звёздочки по диагонали (см.задание 4.9.) Можно ли обойтись в этой программе без оператора LOCATE ? До сих пор в наших программах программные строки выполнялись по порядку возрастания номеров.Оказывается,можно вернуться на уже исполненную строку с помощью специальной команды. СОТО Английские слова GO ТО (гоу ту) означают ПЕРЕЙТИ К Оба слова записываются без разделяющего их пробела,далее указыва- ется номер программной строки,на исполнение которой и перейдёт компьютер.(Запись через пробел также допустима: бОиТО) ЗАДАНИЕ 5.2. Добавьте к программе 5.1.(см.ответ) строку S0 goto 20 Предскажите,как будет выполняться эта программа.Когда она окончит- ся ? Говорят,что программы подобные 5.1. обладают линейной струк- турой,а программы подобные 5.2. являются зацикленньаи (цикл-круг) Зацикленные программы не могут завершиться самостоятельно. CLS FR I ГМТ FR I NT FR I ЫТ Для принудительного прерывания зацикленных программ ( и для экстренного прерывания любых программ) используются клавиши CTRL и STOP :
После прерывания программы на экран выдаётся сообщение о том,в какой строке выполнялась программа в момент прерывания: Вг-ваЬ: 1 г» 20 -прерывание в 20 строке. ЗАДАНИЕ 5.3, Прервите программу 5.2.Проверьте с помощью LIST .испортило ли прерывание программу.Измените последнюю строку на 50 GOTO 10.Прескажите результат. ЗАДАНИЕ 5.4. Как работает программа: 10 ? 20 30 ЗАДАНИЕ 5.5, Напишите программу, которая заставит бежать по экрану следующий узор z Позаботьтесь о том,чтобы быстро ввести текст программы в память. Временная приостановка программы __ Si вызывается нажатием на Продолжение - повторным нажатием на CLS PRINT"Bo4uok GOTO 30 и И S3 ЗАДАНИЕ 5.6. Посмотрите на текст программы 5.5. в ответе . В строках 20-90 первые кавычки как бы отгораживают узор от слова PRINT.Используя такую наглядность и лёгкость исправления строк программы,создайте программу,которая заставит бежать по экрану слово МИР.Каждая буква этого слова должна быть нарисована несколь- кими символами,подобно узору из программы 5.5. * ЗАДАНИЕ 5.7. Нарисуйте звёздочками таблицу,в нижние клетки которой впечатаны аргумент,равный 0,31416, и значение функции У*со$(Х)при этом значении аргумента,округлённое до 5 знаков после « * * ***** ************** *д р гкме н т *зн.<₽*нки,ии* * ж ж у вас осталось время,ознакомьтесь с при- запятой. ЗАДАНИЕ 5.8.* Если ложениями 2 и 4.На своей программе проверьте приёмы работы с про- граммой,указанные в приложении 4. Q ПОДУМАЙ ДОМА | Напиши программу аналогичную 5.6.,в кото- рой вместо слова бежит картинка,нарисованная символами. МЫ УЗНАЛИ КАК РАБОТАТЬ С ПРОГРАММАМ, ТЕПЕРЬ БУДЕМ УЧИТЬСЯ ИХ ПИСАТЬ.
Break in 20 Прерывание программы по ошибке; Syntax error in 40 Удаление строки: 1OO$J STOP Работа в режиме калькулятора, командные строки. Естественное окончание программы дофэлчи’гелъчые сведения о рао-сте с прогпаммо;; в прилэжеии ПРОГРАММЫ Временная при- |рД60ТД ИД КОМПЬЮТЕРЕ ИСПОЛНЕНИЕ прямой дидлог Запуск программы Создание програм- мы,вставка новых и замена Старых строк: набор строки с данным номером EJ Ok Команды с клавнатуры не воспринимаются Принудительное прерывание программы остановка программы Продолжение программы (.повторным нажатием на STOP)
Замятие 6. Чтобы писать более сложные программы,необходимо изучить но- вые команды.До сих пор основными объектами,появляющимися на экра- не, были символы.С их помощью можно в случае надобности построить изображение,однако более естественно использовать для этой цели графические операторы,которые позволяют создавать на экране гео- метрические фигуры (точки,отрезки,окружности). Компьютер может оперировать либо с символами (символьный ражим).либо с геометрическими фигурами (графический режим). При работе в прямом диалоге всегда используется символьный режим.Графические объекты могут находиться на экране только в то время,когда программа работает.Для переключения экранных режимов используется команда SCREEN Английское слово $СЕЕЕН(скрин) означает Можно представлять себе,что каждому режиму соответствует свой экран: символьному - экран с номером 0,а графическому - эк- ран с номером 2 (см. также приложение 3).Включение графического режима производится командой SCREEN 2 Прерывание программы или её естественное окончание автоматически приводит к выполнению команды SCREEN 0 Именно поэтому для задержки на экране графической картинки нужно предотвратить окончание программы.Мы будем использовать для это- го команду СОТО .переходящую сама на себя (см.задание 5.4.).Кар- тинка будет висеть до тех пор,пока вы не прервёте программу. Перейдём к подробному изучению графического экрана.Если присмотреться к фону экрана в символьном режиме,легко заметить, что экран как бы покрыт мелкой сеткой.Клеточка этой сетки и пред- ставляет собой точку графического экрана. Графический экран снабжён системой координат,подобной той которая используется в символьном режиме для оператора LOCATE .
Точки расположены в 192 строки по 256 штук в каждой.Нумера- ция строк и столбцов идёт от левого верхнего угла с нуля. Номер строки соответствует координате У,а номер точки в строке-коорди- ГРАФИЧЕЕКИЙ РЕЖИМ 0,0 — У. экранная точка Окончание Команда SCREEN очищает экран. ЗАДАНИЕ 6.1. Быстро подсчитайте общее количество точек в графическом режиме. PSCT (1 УСТАНОВКА ТОЧКИ.]! Английские слова Point SET (пойнт сет) означают УСТАНОВИТ^ТОЧКУ После слова PSET указываются в круглых скобках координаты уста- вливаемой точки.Через запятую после закрывающей скобки можно ука- зать номер цвета (см. приложение 3): PSET( X , У) или PSET( X , У) ,НийРФЯ *Ц£>С 1 Q Подобную запись будем называть форматом команды. Обычно мы будем опускать номер, цвета во всех графических командах,так как на нецветном экране интенсивности точек и фона могут оказаться слишком близкими. Координаты точек во всех графических командах ▼ заключаются в круглые скобки. * ЗАДАНИЕ 6.2. Установите в центре графического экрана а) б) LINE одну точку ; четыре точки ^ПРОВЕДЕНИЕ ОТРЕЗКА.Ц Английское слово LINE (лайн) означает ЛИНИЯ
Форматы команды LINE : 1) LIN£(X<,yj-(X2,y2),N4BeTa 2) 1_1Н£(Х„^Ь (Х2,У2) 28,10 245,56 8,182 10, Уб ЗАДАНИЕ 6.3. Проведите диагонали экрана. ЗАДАНИЕ 6.4. Постройте ромб-S' — [[ПОСТРОЕНИЕ прямоугольников! Прямоугольники со сторонами параллельными краям экрана можно строить командой LINE,задав координаты концов одной из диагоналей прямоугольника и указав через запятую после номера цвета букву В либо буквы BF. Box (бокс) - коробка Box Full (фул) - полная коробка Форматы команды LINE : Контур прямоуголь- --- ника Закрашенный прямоугольник Х2,Ч ' '— ' •’ v 2 ’ «X ’ ЦВЕТА » «1LINE (Х.ДНХ. V,,'" «)LINE (X„y,)-(LA’), ,BF См.правило опускания операндов ( после задан.3.9.) ЗАДАНИЕ 6,5. Постройте изображения Напиши программу для построения фигуры в) Каково минимальное число Обоснуй команд? свой ответ
CIRCLE Форматы ([ Построение окружности ][ Английское слово С1ЙСЬЕ(сёкл) означает ОКРУЖНОСТЬ 1) CIRCLE (X,»,R,N„ координаты центра 2) CIRCLE (Х,У), R ЗАДАНИЕ 7.1. Постройте изображение радиус (Х,У) ЗАДАНИЕ 7.2, Постройте окружность с центром и радиусом 120.Объясните результат. в точке (128,96) Форматы [[Построение дуги окружности i> CIRCLE (X, y),R,N.„ J., р 2> CIRCLE (Х.У),К,,<Л,₽ Углы задаются ЗАДАНИЕ 7.3. в радианах (от О Я <х,м> до 2чг)~ Дуга рисуется от угла & к р углу против часо- вой стрелки а Постройте дуги б) Вспоминая радианную меру,используйте диаграмму г)
[[Построение эллипса Форматы: ” CIRCLED,4),R,N„,„ 2> CIRCLE(X,»,R„K радиус исходной^} окружности 6<R a-R Эллипс-сплющенная окружность а<И |\=5 - коэффициент сжатия При К=1 эллипс совпадает с окружностью. Указав углы,можно получить дугу эллипса. Английское слово PAINT (пейнт) означает ОКРАШИВАТЬ ТО PAINT Команда окрашивает замкнутую область,начиная от указанной точки. В простых случаях закраска идёт вверх от указанной точки,а затем вниз.
Форматы: PAINT(X,9),N46 2) PAINTS,У) (ом.также приложение 5) Граница не должна иметь разрывов (граничные точки соприкасаются) Исходная точка закраски не должна лежать на границе Цвет границы и цвет,в которую окрашивается область,должны обязательно совпадать (в частности нельзя использовать ф многоцветные границы) ,иначе будет закрашен весь экран или его часть превосходящая закрашиваемую область.Если номера цветов во всех графических операторах опущены,то недоразумений с закраской быть не может.Ещё одной причиной неверной окраски может стать разрыв границы (см.ответ на задание 8.1.) ЗАДАНИЕ 7.7. Окрасить а) б) в) внутреннюю область окружности; внешнюю область окружности; одну из половин экрана,разделённого на две части пря- мой линией. Сделайте выводы. ЗАДАНИЕ 7.8, Изобразить окрашенное кольцо. * ЗАДАНИЕ 7.9. Нарисуйте контур прямоугольника и окрашенный прямоугольник.Закрасьте контур командой PAINT.Сделайте выводы. ЗАДАНИЕ 7,10.* Нарисуйте забавную рожицу.Заставьте её попе- ременно моргать глазами. [? ПОДУМАЙ ДОМА| Напиши программу,которая позволит постро- ить пятиконечную звезду.вписанную в окружность.Как закрасить звезду,иопользуя поменьше команд.
Занятней, Вы уже приобрели опыт в построении различных изображений . Однако если писать программу для построения сложного изображения непосредственно за клавиатурой,могут получиться неожиданные ре - зультаты Хотели Приведём схему построения сложных изображений.Её не нужно заучивать,достаточно просто ознакомиться и обращаться к ней в тех случаях,когда изображение состоит из большого числа точек , отрезков,окружностей и т.д. СХЕМА ПОСТРОЕНИЯ СЛОЖНЫХ ИЗОБРАЖЕНИЙ I.Обязательно нарисуйте изображение на бумаге.Если можно,разбейте изображе- ние на независимые части,каждую из которых можно рисовать отдельно. 2.Выделите на рисунке опорные точки : концы отрезков и дуг,центры окружно- стей и эллипсов,обособленные точки и точки для операторов PAINT.Дорисуй те базовые диагонали прямоугольников по которым они будут строиться. | 3.Среди опорных точек выберите одну ис- ходную и обозначьте её координаты ч& рез X и У. | 4.Определите максимальный линейный раз* мер изображения,исходя из размеров экрана.Выберите конкретные значения ' для смещений одной точки относитель-) Пример изображения (старинный паровоз) PAINT ИСЮДНАЯ WA PAINT PAINT но другой по горизонтали и вертикали; изображение значения радиусов и коэф, сжатия. крыла строится отдельно
5.Определите углы,которые задают ду- ги. 6.Подберите конкретные значения X и У,учитывая расположение изображе - ния на экране. 7.Определите,отправляясь от исходной точки,координаты всех опорных точек 8.Определите порядок построения линий и закраски областей,учитывая что а) сначала строится замкнутый кон- тур, затем он закрашивается; б) если область,которую нужно за- красить, может разбить на части одна или несколько линий,то ну- жно сначала закрасить эту об - ласть и лишь после этого прово- дить линии. Пример. 1 (paiNT) (ra.iN<?)_e|^eV з 9 .Напишите программу на бумаге. 10 .Введите программу в память,запус- тите её,в случае надобности еде - лайте исправления. Самостоятельно дополните рисунок отсутствующими 3334- опорными точками и их сме- щениями, произведите пере- ход от смещений к коорди- натам , определите углы,за- дающие дуги. ПОРЯДОК РИСОВАНИЯ: 1) колеса с закраской; 2) бак(позже колёс соглас но 8.6.); 3) труба с закраской ; ф крепление трубы и мес- то машиниста; 5) эллипоы и крыло. Готовая программа screen 2 20 CIRCLED 00, 150) 20'CIRCLE (4 00, 4 50), 5: POINT(100,1 40) 30 CIRCLE (.1 60, 1 50) , 20’.CIRCLEd 60, 150) , 5-PHINT (160, 440) 40 LINE (75,80)-«85, 4 35), , В 50 CIRCLE(75, 110), 10, ,Ъ. 14,3*3. <4/2 60 CIRCLE(75,110),20, ,3. (4,3*3. <4/2 70 LrN₽(65,1 10)—(65,40) :ЬГМЕ(55, <40)-(53,40) 80 CIRCLE (50, 40),5, ,0,3.44/2 90 CrRCLE(70,40) , 5, ,3.44/2,3.44 100 LINE(50,35)-(70,35): PAINT(60,40) 110 LINE4 65,85)-(75,87), , BF 120 LINE (185, 133)-(215,435)LINE(185, I35)-(487,T5), ,BF <30 ClRCLEd 50, 407) , 40, ,,, .5'. CIRCLE (130, 107) , 38, , , , . 5 <40 CIRCLE(l40,120),28, ,3.14/2,3.14:CIRCL E(119,120), 7, , 3. <4/2,3.44 150 LINF(4 19,113)-(4 40,14 3):CIRCLH(440, <40),3, ,3*3. 14/2,3.14/2 160 CIRCLE (140, I03) ,3,, 3*3. 14/2,3. 14/2 170 CIRClE(140,96) ,3, ,3*3. 14/2,3. 14/2-.PArNT«30,107) 4 000 GOTO 1000
-М- Программы для построения сложных изображении могут быть довольно длинными.Весь текст программы может не помес - титься на экране.Для просмотра нужного куска программы используйте средства,описанные в приложении 4. ЗАДАНИЕ 8,1. Постройте изображения | Q ПОДУМАЙ ДОМА II Самостоятельно придумай или выберй инте- ресный риоунок.Напиши программу,которая воспроизведёт его на экране.Подумай,как быстро ввести в память компьютера твою программу.
Г--------------- । http://www.gr8bit.ru -48- Что МЫ УЗИЯУ1И ФОРМАЛЬНОЕ ПОНЯТИЕ ПРОГРАММА - ~^\ПРОГРАММЫ совокупность занумерованных строк,расположенных в памяти и исполняющихся по порядку возрастания номеров. ГРАФИКА RUN LIST - программы вывод на экран NEW тожение - унич- программы запуск программы CTRL STOP - прерывание программы Р$ЕТ^Х,У) - установка точки PAINT 180,150 Выполните контрольную 2. 10 20 30 40 50 bt> 3.Порядок рисования 4.Программа SCREEN 2 LINE (60,30) “(18 0,150),, В CIRCLE(120,90),60 PAINT (61,31) PAINT(17Р, W) GOTO 60 задержка гр.реж. шенный прямоугольник закраска области дуга окружность эллипс SCREEN 2 вкл.граф.режима 0^ Х<255, 0<У< 191 Порядок исполнения Строк можно изменить с помощью команды GOTO . Работа с программой: LINE(^,yJ"X,y2) - отрезок ♦ ..В - прямоугольник BF - закра- КАК ПИСАТЬ ПРОГРАММА 1.Понять постановку задачи. 2.Задать необходимые величины. PAINT(XJ) 1000 &0Т0 1000 . 1.Рисунок Су. 2. Координаты ап 3 .Спланировать порядок действа (лучший способ - представить, что вы решаете задачу вручную) 4 .Перейти от плана к программе. 5 .План быстрого ввода программы в память 6 .Запуск программы и исправлени ошибок (можно заранее запла- нировать подгонку сложных элементов изображения)
^http://www.gr8bit.ruj Занятие 9, ЗАДАНИЕ 9.1. Постройте семейство концентрических окружнос- тей, рассечённое вертикальной прямой.Дайте словесное списание этой программы. ЗАДАНИЕ 9.2. Дайте по возмож- ности наиболее краткую словесную инструкцию о построении данного се- мейства окружностей. В русском и других естесвенных языках используются по крайней мере два способа описания повторяющихся действий. 1.Описать каждое действие особым предложением (см.отв.9.1.) 2.Е сли действия имеют одинаковый характер,можно указать а) количество повторений ; б) действие,которое будет повторяться; в) отличия в повторяющихся действиях . Второй способ более компактен и более нагляден,так как даёт возможность воспринять всю информацию о повторяющиеся действиях сразу (см.отв.9.2.) Желательно было бы иметь такой же способ описания повторя- ющихся действий и в языке программирования.Он действительно суще- ствует и называется оператором ЦИКЛА. ЗАДАНИЕ 9.3. Наберите программу и сравните её действие с действием программы из задания 9.1. Попытайтесь догадаться,для че- 10 SCREEN Z FOR R-10 ТО S0 STEP 30 CrRCLE(120,p0),R W NEXT R 50 LINE 11 20,0)- «20,19/» Ь0 frOTO bt> го предназначены незнакомые вам конструкции оператора цикла.Попы- тайтесь изменить программу так,чтобы она строила концентрические окружности с радиусами 5,10,15.....90. Перейдём к описанию оператора цикла с параллельным разбором примера на его применение (задания 9.1 и 9.3).
ОПИСАНИЕ ОПЕРАТОРА ЦИКЛА ПРИМЕР Оператор цикла применяется в тех слу- чаях, когда по условию задачи нужно многократно выполнять одинаковые дей- отвия,различающиеся однако некоторой величиной (параметром). Пять окружностей с раз- личными радиусами. Необходимо ввделить эту величину и обозначить её латинской буквой Обозначим радиусы через R Оператор цикла начинается с заголовка, в котором указывается характер измене- ния параметра: а) начальное значение ; б) конечное значение ; в) шаг.т.е. величина,которая каждый раз добавляется (или вычитается) к значению параметра FOR R=10 ТО 50 STEP 10 нач.зн. кон.зн. <чпаг Заголовок можно читать следующим образом : ОТ R равного 10 ДО 50 с нагом 10 FOR TO STEP FOR (фор) означает ОТ Английское слово > ТО (ту) означает ДО STEP (creri) означает ШАГ Сразу после заголовка располагаются одна или несколько строк,в которых указано повторяющееся действие.Вместо конкретных значений изменяющейся вели- чины используется параметр ( выбранная ранее латинская буква) Повторяется построение окружности СI ВС LE (120,90) ,R Чтобы указать,какие действия повторя- ются, а какие выполняются однократно , нужно отметить окончание цикла. NEXT R у— параметр цикла Следующие за NEXT стро- ки к циклу не относятся В нашем случае-строка LINE (120, Л)-(-(20,190) NEXT Английское слово NEXT (некст) означает СЛЕДУЮЩИЙ
ЗАДАНИЕ 9.4. Меняя начальное,конечное значения параметра цикла и шаг,запустите несколько раз программу из задания 9.3.Оп- ределите сколько повторений производит цикл и для каких значений параметра R.Уберите из заголовка слово STEP и соответствующее ему значение шага.Как изменяется параметр цикла в этом случае ? Если шаг равен 1 ,то его можно не указывать в заголовке FOR R= 10 ТО 50 ЗАДАНИЕ 9.5. Изобразите семейство точек f Х=10 У =96 Х=245^ Пикл является оператором со сложной структурой.Это единст- венный оператор,занимающий несколько программных строк. СТРУКТУРА ПИКЛА СТРОКА КОНСТРУКЦИЯ НАЗНАЧЕНИЕ 1-я Строка никла Заголовок (FOR-TO-STEP) Описывает характер измене- ния параметра цикла Внутренние Стро- ки цикла Тело цикла Описывает повторяющиеся действия Последняя строка цикла Окончание цик- ла (NEXT) Отделяет оваратор цикла от последующих операторов ТВ любом цикле должны присутствовать заголовок и окончание цикла.Параметр,указываемый после слова NEXT,обязательно • должен совпадать о параметром,указанным в заголовке. ЗАДАНИЕ 9.6* Выясните,что произойдёт,если в операторе цикла отсутствует а) заголовок ; б) окончание (или если параметры при NEXT и FOR не совпадают); в) тело цикла. ЗАДАНИЕ 9.7,*Напишите программу,которая рисует окружность , делает паузу,отключает графический режим и печатает:"Программа окончена". ЗАДАНИЕ 9.8. Попытайтесь кратко Сформулировать правило ,по которому исполняется цикл.
-52- t Значения параметра цикла образуют арифметическую прогрес- сию (лесенку со ступеньками одинаковой высоты). Команды, • составляющие тело цикла,исполняются при каждом значении параметра. ЗАДАНИЕ 9.9. Придумайте,как можно непосредственно проследить за изменением параметра цикла. ЗАДАНИЕ 9.10* Об"ясните,чем похожи и чем отличаются зацик- ленные программы и программы,содержащие оператор цикла. Фиксированное число повторе- ний Естественное окончание программы Исходя из формулировки задания,определяйте,в каком ре- жиме работает программа: графическом (SCREEN 2) или символьном (SCREEN 0).Задержка картинки нужна только в графическом режиме. ЗАДАНИЕ 9.11, Напечатайте слово ПИКЛ 10 раз. ? ПОДУМАЙ ДОМА С помощью оператора цикла переделай домаивее С помощью аналогич- задание из занятия 7. ной программы построй вписанный в окруж - ность 101-угольник,соединяя вершины через 31. Построй изображения конуса и цилиндра.
Замятие 10, ЗАДАНИЕ 10.1. Распечатать на экране а) числа от 1 до 10 ; б) квадраты нечётных чисел от 7 до 27 ; в) корни квадратные из чисел 3,7....23. Шаг,указанный в заголовке цикла,не должен равняться нулю За исключением этого ограничения можно использовать в каче- стве начального,конечного значений и шага любые действительные чи- сла (в том числе дробные и отрицательные). ЗАДАНИЕ 10.2. Распечатать таблицу (с аргументами) значений функции a) y = slnX б) на отрезке [0,1] с шагом 0.1. ЗАДАНИЕ 10.3. Напечатать на экране числа 10,9,...,1. Нельзя опускать в заголовке цикла шаг равный -1. ЗАДАНИЕ 10.4. Подумайте,в каких случаях начальное значение параметра цикла может быть больше,чем конечное. Начальное значение параметра ДГ? |ST£P>0 Q Конечное значение параметра.указан- ное в заголовке Последнее фактическое значение параметра
Пока мы использовали в качестве тела цикла одну единствен- ную команду.Однако тело цикла может состоять из двух и более ко- манд .Важно, чтобы программные строки,Содержащие эти команды, были расположены между заголовком и окончанием цикла. ЗАДАНИЕ 10.7, Постройте семейство фигур 7 ЗАДАНИЕ 10.8. Напечатайте на экране слово БЕЙСИК лесенкой. БЕЙСИК БЕЙСИК БЕЙСИК БЕЙСИК БЕЙСИК ЗАДАНИЕ 10.9, Заставьте это же слово двигаться по диагона- ли экрана сверху вниз. ЗАДАНИЕ 10.10. Постройте два семейства фигур с помощью одного цикла.
-55- * ЗАДАНИЕ 10.11. Напиппие программу.которая заставит в гра - фическом режиме двигаться по экрану а) точку ; б) маленькую окружность ; в) маленькую закрашенную окружность ; г) окрашенный прямоугольник. * ЗАДАНИЕ 10.12. Заставьте окружность надуваться как воздуш- ный шарик. t Оператор цикла можно записать в одной программной строке.Для этого нужно рассматривать заголовок и окончание цикла как особые операторы и отделять * их от других операторов двоеточиями. ЗАДАНИЕ 10.13. Напишите программу,которая будет печатать значение параметра цикла (от 1 до 1000) в одном и том же месте чистого экрана. Как замедлить получившийся секундомер? ЗАДАНИЕ 10.14.* Переделайте предыдущую программу так,чтобы она занимала только одну строку. Вызовите эту строку на экран,удалите номер и запустите по- лучившуюся командную строку. ( ? ПОДУМАЙ ДОМа| Переделай с помощью оператора цикла до - машние задания из занятий 3,4,5. Придумай,как печатать слово СЛАЛОМ по синусоиде. СЛАЛОМ Сдоом СЛАЛОМ СЛАЛОМ СЛАЛОМ СЛАЛОМ СЛАЛОМ СЛАЛОМ СЛАЛОМ CJIAJI0M СЛАЛОМ СЛАЛОМ СЛАЛОМ СЛАЛОМ СЛАЛОМ СЛАЛОМ СЛАЛОМ СЛАЛОМ СЛАЛОМ
Занятие It Более подробно рассмотрим способы построения орнаментов,т. е. семейств фигур,каждая из которых является сложным изображени- ем. Порядок построения орнаментов. 1. Выделить а> фон - неповторяющуюся часть ор- намента ; б) количество семейств повторяющи- хся фигур ; в) повторяющийся элемент для каж - дого семейства. 2. Для каждого семейства выбрать и обозначить буквой изменяющуюся ве- личину .Определить границы её изме- нения и шаг (для заголовка цикла). 3. Записать последовательность команд для построения элемента орнамента (тело цикла). 4. Определить порядок рисования фона и повторяющихся элементов. 5. Написать программу. Готовая программа Пример орнамента Фон-прямоугольник и за- краска . Одно семейотво с элемен- У = 90 R = 10 X Х+20 Величина X от 20 до 220, шаг - 40 (длина элемент^ CIRCLE <Х,90) , I0,,0,3.14 CIRCLE (Х*20,90?, 10,,3.14,0 1. Прямоугольник. 2. Повторяющиеся эле - менты. 3. Закраска. 40 SCREEN 2 20 LINE (10,6 5) - (250, I <5) , ,0 30 FOR Х=20 ТО 220 STEP 4 0 40 CIRCLE ( X ,90 ) , f 0 , , 0, 3 50 CIRCLE (X<-20,90), 10,,-3.44,0 *0 NEXT X 70 PAINT(20,90) 80 GOTO 80
-57- ЗАДАНИЕ 11.1. Постройте орнаменты а) б)
-58- Что мы узнали СТРУКТУРА ЦИКЛ/» NEXT I ЗАГОЛОВОК ТЕЛО ОКОНЧАНИЕ 1.Заголовок цикла описывает характер изменения^параметра FOR 1=40 ТО 90STEP 5 нач.зн. кон.зн шаг gre₽>e STEP<0 нач.зн. 10 Qy координата X 30 40 50 60 70 Выполните КОНТрОЛЬНуЮ з. SCREEN 2 FOR X = t5 TO 240 STEP 25 CIRCLE^,90) 40 CrRCLE(X,90), 5 Р» ГЫТСХ,97) NEXT X GOTO 70 Повтсряющий- Cv ” ^ся элемент оооооо значении пара- метра цикла ИСПОЛНЕНИЕ цикла Шаг 1 можно опустить Параметр цикла пробе- гает все значения от начального до конечного значений,каждый раз изменя- ясь на величину шага кон.з 2.Тело цикла располагается между заголовком и окон- чанием цикла PRINT I 3.Окончание цикла от- деляет тело цикла от последующих операто- ров Все операторы,входя- СПОСОБ ПРИМЕНЕНИЯ 1.Установить,исходя щие в тело цикла,по- следовательно выпол- няются при каждом из условия задачи,наличие повторяющихся действий. 2.Выделить и обозначить буквой изменяющуюся величину,отлича ющую одно повторение от дру- гого. 3.Определить границы и частоту изменения этой величины. 4.Описать повторяющееся дей- ствие о использованием этой величины. MINT Шаг 25 5
Замятие 12 ЗАДАНИЕ 12.1. Изобразите семейство окружностей В предыдущем задании изменялись сразу две величины :абсциссы центров окружностей и радиусы (см. также задание 10.6,в,г).Важно, что эти величины не являются независимыми. При решении задач,в которых встречаются несколько зависимых величин нужно 1. Выделить все изменяющиеся величины и обозначить их буква- ми. 2. Выбрать одну из величин в качестве независимой аргумента 3. Выразить остальные величины через значения аргумента. 4. Написать программу с оператором цикла.параметром которого является независимая величина.В командах,составляющих тело цикла, на месте соответствующих величин поставить их выражения через ар- гумент. ЗАДАНИЕ 12.3, Постройте семейства

Занятие 13. Г~~ - 11 . , •ssn Выясним,каким образом нужно изменить программу.чтобы пере- местить семейство фигур в другое положение на экране и перейти к другому масштабу. ЗАДАНИЕ 13.1. вершина находилась а) (0 ,96) ; б) (50,50); В) (150,120). Постройте оемейотво окружностей,так чтобы в точке ЗАДАНИЕ 13.3. Постройте семейство Как,не меняя заго - ловка цикла Неподвижная прямая —. а) растянуть б) сжать семейство ЗАДАНИЕ 13.4. Как произвести те же действия относительно другой неподвижной прямой. ЗАДАНИЕ 13.5, Произвести растяжение и сжатие по вертикали.
ЗАДАНИЕ 13.6. Напишите программу,риоующую решётку.Произве- дите растяжение и сжатие решётки,оставляя неподвижной некоторую точку внутри решётки. ЗАДАНИЕ 13.7. Соедините два узла решётки отрезком.Как изме- нить команду проведения отрезка,чтобы отрезок преобразовывался вместе с решёткой ? ЗАДАНИЕ 13.8. Постройте множество точек с зависимостью между координатами У = X2.Переверните точечную параболу и помес- тите её центр в точку (128,190). В чём недостаток полученного графика? К чему приведёт растяжение или сжатие ? ЗАДАНИЕ 13.9. Какую нужно взять воображаемую исходную ре- и как её преобразовать,чтобы построить на экране график функции У = X2 на отрезке [-2 , 2]. о ЗАДАНИЕ 13.10. Постройте график кубической параболы У = X. Построй спираль Архимеда. Как растягивать мать решётку из тей и прямых. ^ияививяв=я=я^ая=я= | *? ПОДУМАЙ ДОМА и сжи- окружнос
Занятие 14. Займёмся построением графиков. О'УО решетки Воображаемая мелкая решётка (отрезок [а,о] разбит на 256 частей) Уо выбирается произвольно ЗАДАНО: отрезок [а,в] и функция рх) ВШИСЖО: Ь25И-<1) х0=-|?,-а, ВЫБИРАЮТСЯ: Уо pop х-о.той step tf-ayess pset Сх0+1г-х, Vo-^f(x)) NEXT X Растяжение отрезка [a/j Перенос и переворот ?о+ х 1уо"у XQ+k-X У0?У на Отрезок га, 01 при растяжении превращается в отрезок [0,XQ1 отрезок [0,2551- Коэффициент растяжения : R Га Часто бывает более удобно исходить при построениии графика не из величин а. и в,а из величин,определяющих положение и масштаб графика на экране в явном виде : Х0,У0 - координаты точки пересечения осей координат ; k - коэффициент растяжения,равный количеству экранных то- чек в единичном отрезке. Вместо параметра X в цикле удобно использовать параметр Х„„тч, равный X + ЬХ и пробегающий значения от 0 до 255. Так как X =Х0+И-Х, то X В программе можно для краткости обозначать Хэ^р через Х.При этом делаются замены в операторе PSET -° )>- Х0+к-Х на X и у0-Ь$(х) на y0-k,-$((x-x0)/fc,), It точек Новый заголовок цикла : FOR Х=0 ТО 255
ЗАДАНИЕ 14.|. Проведя оси координат через точку (128,96) и выбрав масштаб из условия.-30 экранных точек в единичном отрезке, постройте график функции а) у = stпсх) ; б) у » A0SCX1; В) У - I NTCK1; г> Определение функции. DEFFN Английские слова PEPtne FuNction (дифайн фанкшн) ОПРЕДЕЛЯТЬ ФУНКЦИЮ означают Используя оператор определения функции,можно дать имя лю - бей функции и использовать это имя в программе подобно именам стандартных функций.Имя функции должно начинаться с букв PN .пос- ле которых следует от одной до трёх произвольно выбранных букв. Аргумент Имя функции 10 DEF ГЮ)-1/(1+ X'ZHS»Te Стандартное ’ начало имени ____________/—помощью пптмф гмгГсх арифметического выра- 60 PRINl FNKOK хеивя от аргумента X. '— Обращение Произвольно выбранная часть имени (ст 1 до 3 к функции, букв) ЗАДАНИЕ 14,2, Постройте графики а) у = 5-SIn(*/2) + соб(З-х) •, б) у = 4-SIN (Х/2.) • COS(X) ЗАДАНИЕ 14.3. Постройте графики а) у=<* ; 6) В) . ЗАДАНИЕ 14.4* Каждый график представляет собой семейство точек,между которыми могут быть большие разрывы.Придумайте,как уплотнить график. .* " уплотнение
ЗАДАНИЕ 14.5. Одновременно построить на экране графики функций y=sin(x) и у= cosex'). ЗАДАНИЕ 14.6Изобразите поверхность.образованную враще- нием вокруг оси X графика функции a ) y-siN(X) ; б ) у- . 1 d . 7 < + ха ж ЗАДАНИЕ 14,7. Изобразите поверхность,образованную враще- нием вокруг оси У графика функции у=х". * ЗАДАНИЕ 14.8. На гибкий стержень надеты диски,образующие поверхность вращения графика у=£(х) вокруг оси X.Стержень изги- бают по графику функции у=$(х).Постройте фигуру.которую образу- ют при этом диоки. 1. Кривая вычерчивается концом ради- уса переменной длины,вращающегося вокруг некоторой точ- ки. Описание кривой даётся функциональной зависимостью радиуса от угла поворота: Построй a) R=40-(1+COS(3-ol)+ б) R=1O-(5+£'COSct<-3-cos1^,- -sln’dg-^-cosW^) только как график функциональной зависимости между X и У,но и другими способами,два из которых приводятся ниже. £• Координаты точек кри- вой являются функциями от некоторой независимой ве- личины: h - V = j.m Построй фигуру Лиссажу х = a- sln(3-t) у = Ot и в подбери.
-^36- Что мы шали Семейства фигур с зависимыми величинами. X ХЛ.У, we функции. о 4 Выполните контрольную 4 К то- чек 3D ю 50 60 70 S0 ех (XO^o)j SCREEN £ LINE (0,190)-C256,I90) LINE (120,0)-(120 ,191) FOR X--0 ro 265 PSET(X, 190-30 *FriF(<X-1201/30)) NEXT X G-OTO 80 К>1 - растяжени К <1 - сжати тельно течки Х0,У0- Перемещений и изменение масштаба. к-х течка, определяю- щая положение се- мейства на экране (она неподвижна при изменении масштаба) 1 .Выделить все изменяющиеся величины X,y,R 2.Выбрать независимую величину и выразить через неё остальные У = X ; R = Х/2 X и У - смешения относи- Для изменения масшта- ба смещения умножа- ются на коэффициент 10 JEF FNTRW= 1*(ЖГ2 20 SEP FN6(fl=SQR(5A) 30 PR INT FNTR(3.«/3) < FNG(4) FOR Х=0 ТО 150 STEP 10 сгвссесх’.х), ххе NEXT X Для функции fw формула : у0-к-$«х-х0)/ю График функции у = Оф -10 dvffhf(x) = expc<)
Занятие 15. Мы научились строить графики элементарных функций.Каждый график представляет собой линию,у которой _ связь между координатами X и У вы- ражается формулой. [ Очень часто бывает необходи- —j мо строить линии,не связанные с ка- кими-либо функциями. ч. Одним из способов является замена кривой линии на близкую к s ней ломаную,после чего ломаная Стро- ЗАДАНИЕ 15.1. Пользуясь приложением 5 и ответами к домаш - ним заданиям 7 и 9,ознакомьтесь с особым форматом команды для построения отрезков LINE - (Х,У) и его использованием для постро- ения ломаных линий.
Поскольку команда LINE повторяется многократно,возникает мысль использовать оператор цикла.Однако пока это невозможно , так как координаты X и У должны принимать случайные значения. Оператор цикла меняет значения одной величины.В случае с ломаной должны меняться сразу две независимые друг от друга ве- личины X и У. В дальнейшем будем называть все обозначенные буквами ве- личины ПЕРЕМЕННЫМИ.Такое название связано с тем,что такие вели- чины могут менять свои значения по ходу программы.Мы уже имеем опыт обращения с переменными.Оператор цикла задаёт способ изме- нения переменной (параметра цикла). Ещё один способ изменения значений переменных состоит в сохранении значений (данных) в программных строках-хранилищах и последовательном считывании этих данных в одну или несколько переменных. пдгрд Английское слово DATA (дейта) означает DA I А ДАННЫЕ Оператор ВАТА используется для хранения данных.Они перечисляют- ся после слова ВАТА через запятую. _ Английское слово BEAD (рид) означает HEAD ЧИТАТЬ Оператор BEAD служит для считывания данных в те переменные,кото- рые перечислены после слова BEAD через запятые. ЗАДАНИЕ 15.2. Разберитесь,как работает программа 10 DATA 7, 5, 99 20 READ А 30 PRINT А 5е Как использовать в этой программе 60 PRINT А 60 READ А ЦИКЛ ? 70 PR I МТ А ЗАДАНИЕ 15.3. То же задание для программы 10 DATA 18,37,41,53,499,1 20 READ Х,У 30 PRINT 40 READ X,V se> PRINT 60 READ X,V 70 PRINT Х,У
В программе можно использовать несколько операторов DATA .расположенных в любых местах программы. Они образуют единое хранилище данных. Данные считываются по порядку возрастания номеров строк,содержащих опе- раторы DATA. ЗАДАНИЕ 15.4. Предскажите.как будет работать программа 10 мга < 2,3 20 FOR 1=1 ГО Р 30 ТАТА 4,5/ 40 REAP X 50 PR ГМ Г X 60 NEXT I 70 ДАТД 7,8 ,9 Проверьте предсказание. ЗАДАНИЕ 15,5, Напишите программу.риоующую ломаную линию с заданными координатами вершин. ЗАДАНИЕ 15,6. Напишите программу,рисующую несколько окруж- ностей с заданными координатами центров и радиусами. Попытки считывать данные,когда они уже окончились,при- водит к ошибке. Выдаётся сообщение • Out Of data, - данные исчерпаны. Данные можно восстановить по всей совокупности операторов DATA специальной командой без операндов RESTORE Английское слово 5EST0RE бристоо; означает ВОССТАНАВЛИВАТЬ ж ЗАДАНИЕ 15.7. Изобразите бегущих человечков ЗАДАНИЕ 1,5.8.* Изобразите "растущих" человечков Изобрази человечков, бегущих по кругу. ЗАДАНИЕ 15.9. Напишите программу, позволяющую нарисовать несколько лома- ных с заданными вершинами.
I http://www.gr8bit.ru । *— __ __ _ I -70- Занятие 16. Уточним важнейшее понятие программирования - понятие пере- менной . ПЕРЕМЕННАЯ - отмеченная именем небольшая область в памяти компьютера, в которую могут записываться различные числовые зна- чения. В программе мы имеем дело только с именами (буквенными обозначениями величин) и значениями переменных. Область под пере- менную выделяется в памяти автоматически. ПРОГРАММА ПАМЯТЬ КОМПЬЮТЕРА W SCREEN 2 20 FOR Х=0 ТО 255 Место под имя Место под значение В программе встретилось 7 имя переменной X. Компьютер / автоматически отводит под неё—'ОБЛАСТЬ В ПАМЯТИ Имена переменных в Бейсике. Пример 1. Одна латинская буква X 2. Две латинских буквы ЕМ 3. Латинская буква и цифра справа от неё А1 Мы изучили два способа изменения значений переменных .значения переменной \ СЧИТЫВАНИЕ Значения переменной но- сят случайный характер, образуют арифметическую прогрессию. но известны заранее.
^http://www.gr8bit.ruj Очень часто бывает,что программу пишут для работы со зна- чениями, которые заранее неизвестны.Программа должна их запросить у человека непосредственно в процессе своей работы. INPUT Английское слово INPUT (инпут) означает ВВОД Оператор ввода INPUT аналогичен оператору считывания PEAD ,с той разницей,что INPUT считывает данные с клавиатуры,а READ из хранилища РАТА. INPUT Х,У, R Оператор выдаёт на экран сообщение о начале своей работы f подсказку в виде знака вопроса) и Z-? 107,71,56^ ^Подсказка } выдана машиной набора данных на клавиатуре. Ввод значений происходит толь- ко после нажатия на клавишу^ 10 INPUT X,У,R 20 SCREEN 2 30 CI RCLE <*,9).R 40 GOTO 40 Программа запросит значения переменных Х,У,К и построит соответствующую ок- ружность. REAP Х,У, R считывает \ \ \ И])АТА 120,90,80 Будет построена окружность с коор- динатами центра и радиусом,указанны- ми в РАТА.^р 10 ДАТА 120,90,80 20 scRehn г 30 READ X,^,R 40 С Г RC LE (X ,у ), R 50 GOTO 50 ЗАДАНИЕ 16.1. Напишите программу.которая вычисляет значе - ние функции sin’(X). ЗАДАНИЕ 16.2. Напишите программу,которая по длине катетов определяет длину гипотенузы. Исполнение команды INPUT требует символьного режима.Если в программе необходимо осуществлять ввод и работать в гра- J фическом режиме,то сначала нужно ввести значения перемен- ных, а затем включить графический режим. ЗАДАНИЕ 16.3, Напишите программу.которая запрашивает а) координаты концов отрезка и строит отрезок ; б) координаты концов диагонали и строит прямоугольник ; в) радиус.коэффициент сжатия и строит эллипс.
ЗАДАНИЕ 16.4. Построить семейства фигур,запросив неиото - рые характеризующие их величины а) б) в в) функции на ЗАДАНИЕ 16.5, Распечатайте таблицу значений отрезке [А,В1 с шагом S (у= sinx+cosx). ЗАДАНИЕ 16.6, Распечатайте таблицу умножения на число N. Оператор IMIW требует особой внимательности. При работе с ним возможны различные ошибки. INPUT X,У, R Начало работы оператора ? Ввдача на экран знака вопроса /ФАЗА ОЖИДАНИЯ РАБОТА ОПЕРАТОРА ВВОДА. - оператор ввода в программе чисел меньше оставшиеся значения •двух вопросов t Иногда бывает удобно прервать программу пос- ле этого сооб- щения: СТИ. STOP. Сообщение: Redo from start -начни сначала (ввод значений) Компьютер ожидает поступления «клавиатуры строки,содержащей значения тех переменных.кото- рые ещё не получили значений. После нажатия на <Р фаза ожидания заканчивается и наступает.... J /^отрока со-Х дстсит из чисеяь разделённых запя- тыми ^Анализ на 1 соответствие /J ^чисел^ раза анализа отроки Возможные результаты ^предварительного _ анализа. При соответствии чисел__________ и переменных,значения г -------г Y В строке нё\ (только числа.На- пример, ариф. вы- / \ранения или J ^.команды тор ввода заканчивает свою работу лишние отбрасывают^— выдаётся сообщена об этом Extra ignored ЗАДАНИЕ 16.7. Проверьте различные варианты работы с опера- тором INPUT (см. приложение 6). Особое внимание обратите на дей- ствия после появления на экране сообщения Sedo from start . II ? ПОДУМАЙ ДОМА{ Напиши программу,которая а) рисует вписанный в окружность N-угольник,соединяя вершины че- рез М штук (с«.домашнее задание 9); б) строит фигуру Лиссажу .запросив нужные величины (д.з.14).
Занятие \7. Как мы знаем,компьютер легко вычисляет значения арифмети - ческих выражений.Очень удобная для вычислений команда PRINT об- ладает существенным недостатком.Она печатает результат на экра- не,но не может сохранить его в памяти компьютера.Этим результа- том нельзя воспользоваться для дальнейших вычислений внутри про- граммы. Для вычислений с сохранением результатов в памяти компью - тера используется оператор присваивания. Это единственный оператор,в котором можно опуОкать англий- ское олово,задающее этот оператор. ФОНДА ОПЕРАТОРА ПРИСВАИВАНИЯ Имя переменной,X (В + С) 2 Арифметическое в которой будет ^-Знак присваивания, выражение,значение сохранён'результат читается: "присвоить". К0'Г0Р0Г0 вычисля- (слева от знака в) етСя (справа от знака =) Английское слово LET (лет) означает ДАВАТЬ Оно может предшествовать оператору , п_ .. {п п,. л присваивания: LET a=\d+L) & Мы всегда его опускаем. Память компьютера Исполнение оператора Х°(В+С)А2 Вычисление арифметического выражения Значения переменных В и С сохраняются 3 ЗАДАНИЕ 17,1. Вычислите значение выражения у = 5Х) Напечатайте на экране числа у , у2, у3. у4. Можно ли было бы сделать это без оператора присваивания ?
Способ применения оператора присваивания Ввд арифметичес- кого выражения Пример 1. Присвоение переменной началь - ного значения. Числе PI =3.14159 2. Пересылка значений из одной переменной в другую. Переменная У = X 3. Вычисление арифметического вы- ражения и сохранение результа- та в памяти компьютера. Арифм.выражение общего вида Т = А - В ЗАДАНИЕ 17.2. Напишите программу для вычисления об"ёмсв цилиндра, ша ра,конуса. ЗАДАНИЕ 17.3. Дайте переменным А и В различные значения Спомощью оператора присваивания обменяйте их значения. ЗАДАНИЕ 17.4. Последовательность чисел а^а^............а, задаваемая соотношениями aQ= a^= 1 ;.ааи= ап+ ап.( называется последовательностью Фибоначчи.Напишите программу для вычисления П,- го числа Фибоначчи. ЗАДАНИЕ 17.5,*Из точки на плоскости провести касательные к окружности. В= Rr(A-Xof+(B-^ Вспомогательная окружность, уравнение: (x-aA^-B)2 = R? Используйте,что точки касания являются точками пересечения двух окружностей ,а значит их координаты являются решениями системы ЗАДАНИЕ 17.6. Придумайте,как увеличить значение переменной на единицу.Напишите зацикленную программу "бесконечный секундо - мер” .аналогичную заданию 10.13. Что произойдёт,если её не прерывать ?
-75- НАРАЩИВАНИЕ ПЕРЕМЕННОЙ. В общем случае справа может стоять не только сумма,а любое арифм, выражение: s = FX S'). -- Добавка Л \ к старому значению -s-д ^"Старое значение ЗАДАНИЕ 17.7. Написать программу для нахождения суммы а) 1 + 22 + З8 + . . . + 308 ; . 1 + 1 + 1 + . . . + 1 $ й № \)з W ’ ЗАДАНИЕ 17,6, Написать программу для нахождения произведе- ния a) Sini°- Sin2е- . . . - Sen 45° • < . < - 1 4+т2 4+(пН)й - • - ° 1 + п* • ЗАДАНИЕ 17.9. Написать программы для нахождения суммы и произведения произвольных чисел : а) cCf + • s *- ) б) а,- а*- . . . - а-п . ЗАДАНИЕ 17.10* Нарисовать цепочку соприкасающихся окруж - ностей с заданными радиусами s' \ ? ПОДУМАЙ ДОМА цикловды Катушка катится без проскальзывания по пря- мой или по окружности.Любая точка катушки эпициклоиды вычерчивает при этом кривую. Точки вычерчивают различные виды кривых. гипоциклоиды Напиши программы для построения этих кривых.
-76- Что мы узнали. Переменные. Ввод и Имя Значение Имена переменных X 79.2 косвенным образом Выполните контрольную 5 Каждой величине, соответствующей содежанию задачи в программе ссотв.пер. 5=0 INPUT N FOR 1 = 1 ТО N INPUT A S=5»COS(A) NEXT I PRtNT S 10 20 30 40 50 60 70 значения на экран. Графические операторы выводят значения значении REAM,У Ввод переменных хранилища DATA Переменная - место в памяти компьютера,помеченное именем и предназначенное для хране- ния значений переменной -INPUT X,У Ввод значений переменных из с клавиатуры ? 40,93^ могут состоять из а) одной буквы ; б) двух букв ; в) буквы и цифры. PRINT Х,У Непосредственный вывод присваивания. А = В + С Оператор производит вычис- ление значения арифметического выражения Сиз правой части) и засылку результата в перемен - ную С из левой части). Кромё вычислений позволяет давать начальные значения и пересы- лать значения . cosa,+.. .+С0$дл Смысл суммирования в наращивании пере - .k менной S Сот S=0) .Дс - бавка равна cos at .причём „'~т) число Ос заранее не извес- хЗ тно и должно быть введено с клавиатуры
Занятие 18. Мы изображали семейства геометрических фигур,зависящих от одной переменной.Если менялись и другие величины.то они зависели от одной основной величины.Характерным признаком такого семейства являетоя.то что оно располагается вдоль некоторой кривой. Нередко однако орнаменты заполняют большие куски плоскости, не группируясь вдоль кривой линии.В этом случае положение фигур семейства на плоскости определяется двумя независимыми друг от друга величинами (обычно X и У).Для получения двух одновременно изменяющихся независимых величин нужны два цикла. При этом один (вложенный) должен располагаться в теле другого(об"емлкщего).Вне- шний никл пробегает свои значения один раз,а вложенный в него - несколько раз.(При решении заданий 15.7-9 уже использовались вло- женные никлы). ЗАДАНИЕ 18.1. Построить семейство точек,заполняющее экран --- 8 U---- Как непосредственно проследить изменение па- ЗАДАНИЕ 18.2. раметров во вложенном цикле ? •К ЗАДАНИЕ 18.3. Построить семейства окружностей ЗАДАНИЕ 18.4, Постройте узоры
* ЗАДАНИЕ 18.5. Нарисуете шахматную доску. ЗАДАНИЕ 18.fi,* Замостите экран в режиме SCREEN 3 (См.прило- ЗАДАНИЕ 18.7. Заставьте вращаться 16 прямых в 16 областях экрана (см. задание 10.6.в). ЗАДАНИЕ 18.8. Напишите программу,которая заставит летать взад вперёд по диагонали какой-либо символ.Для паузы используйте пустой никл. * ЗАДАНИЕ 18.9. Получите колеблющуюся решётку ЗАДАНИЕ 18.10. Изобразите семейства Напиши программу .которая Строит изображение / = р(/ у) поверхности,заданной формулой.
Занятие 19. »— 111 --> ЗАДАНИЕ 19.1. Написать программу вычисления по формуле У = 4х . Если дать переменной X неотрицательное значение,то програ- мма вычислит значение функции.Если же X получит отрицательное значение,то произойдёт ошибка при вычислении корня.Программа бу- дет прервана. Более естественным было бы не прерывать программу,а выдать на экран Сообщение: "функция при данном значении X неопределена". Подобные ситуации встречаются в программировании очень час- то.Необходимо бывает проверить некоторое условие,наложенное на переменную.Если значение переменной удовлетворяет этому условию, выполняется одна группа операторов.Если же значение переменной условию не удовлетворяет,выполняется другая группа операторов . Для реализации таких ситуаций в программах используется условный оператор.Он очень похож на обычное условное предложение русского или английского языков : ЕСЛИ верно условие , ТО выполни 1-ю группу команд , ИНАЧЕ выполни 2-ю группу команд. IF THEN ELSE IP (иф) означает Английское слово Ч THEN (зен) означает ELSE (эльз) означает IF условие' THEN 1-я группа команд! ELSE 2-я группа команд!
ЗАДАНИЕ 19.2. Напишите программу.которая вычисляет значе - ние функции или же выдаёт сообщение о том,что функция неопреде - лена а) у = fx ; б) У = у ; в) у = /х2- 1' . Условие всегда записывается в виде равенства или неравенства. Равно = Больше > Больше или равно >==> Не равно >< Меньше < Меньше или равно <= =< ЗАДАНИЕ 19.3. Напишите программу для решения квадратных уравнений. ла. ЗАДАНИЕ 19.4. Напишите программу для вычисления функции sin х X ЗАДАНИЕ 19..г* ЗАДАНИЕ 19.6. ЗАДАНИЕ 19.7* ЗАДАНИЕ 19.8. COSX Постройте график если х > О если х 0 . этой функции. Напишите программу,определяющую чётность чис- Переделайте задание 18.5. Напишите программу для нахождения большего У = из двух чисел. Сокращённая форма условного оператора : IP условие THEN группа команд ЗАДАНИЕ 19.9. Используя аналогию с условными предложениями русского языка,установите,как действует условный оператор в со- кращенной форме. ЗАДАНИЕ 19.10, Напишите программу для нахождения наиболь - шего из нескольких чисел. Команда окончания программы Г’мъ Английское слово END (энд) означает Ь П У КОНЕЦ Выполнение команды END в любом месте программы приводит к прекращению её выполнения.Иногда эту команду записывают в послед- ней строке программы для придания ей законченного вида. ЗАДАНИЕ 19.11* Найдите числом ,для которого Я +\|2 +...+'/« больше некоторого числа К. ЗАДАНИЕ 19.1?. Заставьте точку отражаться от двух верти - кальных линий. If? ПОДУМАЙ ДОМА| Построй сплошной график тангенса.
Занятие 20 Очень часто встречаются задачи,в которых условие нельзя записать в ваде единственного равенства либо неравенства. Логические связки AND OR Английское слово AND (энд) означает OR (o') означает NOT ИЛИ NOT (нот) означает Связками AND соединяют несколько неравенств или равенств в одно условие.которое выполняется,когда одновременно выполнены все составляющие его неравенства(действует аналогия с русским языком : X > О и X < 2 -предполагается одновремен- ное выполнение ) ЗАДАНИЕ 20.1. Напишите программу для вычисления функции х -X при х > 1 при 0^х<1 при х < О ЗАДАНИЕ 20.2? Постройте график этой функции. Связками OR соединяют несколько неравенств в одно сложное условие,которое выполняется,когда выполнено хотя бы одно из со- ставляющих его неравенств. ЗАДАНИЕ 20.3. Напишите программу для вычисления функции - ----------- о при X > 1 при 0< х 1 при -2 4 X С О при х< -2 X X I X' Связка NOT превращает неравенство в противоположное по смыслу NOT NOT х > О х =0 эквивалентно эквивалентно х< =0 х<>0 Подробнее о сложных условиях сказано в приложении 7.
ЗАДАНИЕ 20.4. Напишите программу,вычерчивающую траекторию биллиардного шара,отражающегося от стенок под углом 45°.Шар изо- жается не только от бортиков,но и от коробки. сосуд и снова вылетать из него-Йычертите траекторию полёта. STICK. STRIG Клавиши [Нажатие на кнопку V ру чк и 4........ - г f* взаимозаменяемы с джой - Пробел Английское слово STICK (Стик) означает РУКОЯТКА Стиком Английские слова STRIKE GRIPE (.страйк грип'; означают НАЖАТЬ РУЧКУ (кнопку)
к = stick (0)\ Оператор присваивания / Аргумент всегда равен нулю Коды стрелок Функпия принимает значе- ние равное коду стрелки,нажатой в момент исполнения оператора. Клавиша не нажата *—’ код = 0 а—*~3 ЗАДАНИЕ 20.7. С помощью программы у « состоящей из одной строки 6 1/4 10 PRINT STICK (0): GOTO 10 5 Стрелки разберитесь,как действует функция STICK. ЗАДАНИЕ 20.8. Напишите программу,которая позволит рисовать на экране линии,нажимая на стрелки.(Такая программа называется графическим редактором). К = STRIGC0) нажат -* код=-1 Пробел '--не нажат код=0 ЗАДАНИЕ 20.9. Переделайте программу из задания 20.4 ,так чтобы при нажатии на пробел шар останавливался,при повторном на- жатии - продолжал движение. Ж ЗАДАНИЕ 20.10, Напишите программу.которая сразу после за- пуска выдаёт на экран список меню с названиями каких-либо об"- ектов.а также символ (указатель) .который можно перемещать стре- лками вверх и вниз и устанавливать против любого названия.После нажатия на пробел на экране должен быть воспроизведён тот об"ект против названия которого стоял указатель. На роль меню и об"ектов возьмите а) б) фамилии поэтов йаажания фигур |Г? ПИУтЧ ДОМАЦ Рав„„„ёятв от центра ИХ Стихи их изображения эллипса точки Р^ и Pg называ- ются Фокусами.Используя то,что шар.прошед- — ший через один фокус, после отражения от эллиптического борта должен пройти че- рез другой фокус,напиши программу для вы- черчивания траектории шара.
Занятие 21. Комментарий в программе Г) Г? М Английское слово ИМагк (римак) означает К Ы I ЗАМЕТКА Помещенный после слова КЕМ текст компьютер при исполнении программы просто пропускает.Этот текст предназначен для человека. Он поясняет,какие задачи в программе решает некоторая команда или группа команд.Чем подробней и толковей комментарии к программе, тем легче в ней разобраться. Если оператор-комментарий занимает всю программную строку,то слово КЕМ можно заменить апострофом-^ ЗАДАНИЕ 21.1. Напишите программу,закрашивающую круг,в кото- рой прокомментирован каждый исполняемый оператор. Часто бывает необходимо выполнить переход по условию на ту или иную строку программы.В подобных случаях применяются сокра - щённые форматы условного оператора.Продемонстрируем их на приме- рах Полная форма Сокращённая форма IP X>0THEN GOT0100 ELSE GOTO 200 IF X>0 THEN 100 ELSE200 IF Y>0 GOT0100 ELSE 2M IF X >0THEN GOTO 100 IF X>0 'THEN 100 IP X>0 GOTO 100 ЗАДАНИЕ 21.2. Напишите программу для решения уравнения a-xS+ в-х + с = 0.Случай а = 0 не исключается. ЗАДАНИЕ 21.3 Г На лучах ОА и ОВ заданы точки А и В .Построить сечение квадрата от - резком АВ (часть квадрата,прилежащую к лучам). Самого отрезка АВ на экране быть не должно. О
В задании 19.11. условный оператор использовался для орга- низации так называемого ттикла "ПОКА" : некоторая группа действий повторяется до тех пор , пока не выполнится определённое условие. ЗАДАНИЕ 21.4. Напишите программу для нахождения наибольшего общего делителя двух целых чисел. ЗАДАНИЕ 21.5? Проиллюстрируйте предыдущее задание геометри- чески . Очень часто условный оператор используется в теле операто- ра пикла с см. задания 19.5. ,19.7.') ЗАДАНИЕ 21.6. Напишите программу для нахождения максимума функции на отрезке с помощью вычисления значений функции в равно- отстоящих точках отрезка. * ЗАДАНИЕ 21,7. Проиллюстрируйте предыдущую задачу. ЗАДАНИЕ 21,8, Напишите программу для нахождения корней ура- внения на отрезке с заданной точностью. ЗАДАНИЕ 21.эТ Напечатайте все делители целого числа в по - рядке возрастания. ЗАДАНИЕ 21,10, Напечатайте все простые числа,не превосходя- щие заданного числа. ЗАДАНИЕ 21.11. С помощью перебора найдите все целые реше - -р п ния уравнения х - у = а при заданном а . ЗАДАНИЕ 21.12, Изобразите семейство прямоугольников.окра- шенных цветами от 1 до 15 за исключением цвета фона. ЗАДАНИЕ 21.13* Заставьте точку Св режиме SCREEN 3) обегать прямоугольник. ЗАДАНИЕ 21.14* Заставьте змейку обползать прямоугольник. Точка | ? ПОДУМАЙ ДОМА J На экране находится кривая линия ------------== J с выколотой точкой. Напиши про - ''X. грамму.которая заставит точку искать прокол и заткнуть его. Используй функцию POINT(X.y) .Её значение равно номеру S'”" цвета,который имеет на экране точка с координатами Х,У .
http://www.gr8bit.ru I -8<3- Uto мы узнали. Условный оператор Запись УСЛОВИИ Основной формат; IP Условный меняется в необходимо Примеры: IF - THEN Форматы c SOTO: Условный оператор представ- ляет собой аналог условного предложения : ЕСЛИ -ТО -ИНА ЧЕ хотя м х I 5® ье> г? . функции в точке х.ЕСли М<Х то У становится новым зн.М IP DEF Fi4Flx)= SIN(x) -Хл2 М-максимум на растущем" отр. Со,х1 .Сравни- вается со зн. Max $w=slnx-x* на. отр. СО, П. тр х>м тнем м N ь К Г X PRINT "МАХ=“;М Выполните контрольную 6. венств : связка 4ND 2 .Выполнение ства: связка OR Любое условие является рав енств ом,нерав енСтв ом или целойгруппой неравенст об"единённых логич.связками. Равно___________ Не равно________ Больше Меньше Больше или равно Меньше или равно Сложные условия 1.Одновременное выполне- ние составляющих нера- Способ ПРИМЕНЕНИЯ условие THEN опер.1 ELSE опер.2 Сокращённый формат: бы одного неравен- оператор при- ситуапиях,когда осуществить ВЫБОР. 1.Выбор формулы по значен. X 2.Выбор наибольшего числа. 3.В цикле "ПОКА" выбор между окончанием и продолжением 4.Выбор направления по ко- от STICK. IF - GOTO-ELSE IF-GOTO Кроме того по- сле THEN и ELSE можно опускать ЭОТО,оставляя номер стр. Him ' О---X L
^http://www.gr8bit.ruj Занятие 22. ЗАДАНИЕ 22.1. Об"ясните,почему при решении задания 19.10. нельзя применить цикл. В математике принято сходные по характеру величины обозна- чать одним общим именем,а различать их по индексу.Например,члены какой-либо последовательности можно обозначить следующим образом а1> а2ДД ’ • > ап имя— 'v—_— индекс Аналогичные обозначения возможны и в Бейсике: имя массива А (1) А (2) ... А(Ю _______- индекс в круглых скобках Массив - это совокупность переменных,обозначенных общим име- нем и различаемых с помощью индексов.которые записываются в круг- лых скобках после имени массива. Английское слово ])1Мепз(оп(дименшн) означает М МАССИВ Оператор DIM используется для того,чтобы указать общее ко- личество переменных в данном массиве.Это необходимо для рациональ- ного распределения памяти компьютера. Об"явление массива количество переменных в массиве (элементов массива) Общее имя элементов массива х Исполнение оператора DIM заключается в том,что в памяти компьютера обра- зуется массив переменных Д(0) /)(<) 4(2) 4 В) /4(4) 4(5) 4(6) 4(7) 4(8) |А| I I I I I I I Г"~1 Начальным индексом любого массива является 0. Массив нельзя об"являть дважды,поэтому следует об"яв - лять массивы в начальных строках программы и не возвра- щаться в эти строки с помощью оператора 90Т0.
Каждый элемент массива обладает а) именем ; \ б) индексом; - Х(5) в) значением. место в памяти, отведённое под данный элемент массива Различайте индекс элемента и значение. Индекс - номер элемента в массиве Значение - число,на данный момент записанное в об - ласть памяти,отведённую под этот элемент. В круглых скобках на месте индекса можно записывать пере- менную.Её значение и будет играть роль индекса.Это позво- ляет в цикле обрабатывать элементы массива один за другим. ЗАДАНИЕ 22.2. Переделайте задание 19.10,используя массив. ЗАДАНИЕ 22.3 Напишите программу рисования ломаной.Коорди - наты узлов вводятся с клавиатуры в начале программы. * ЗАДАНИЕ 22.4. То же самое для нескольких ломаных. ЗАДАНИЕ 22.5. Напишите программу для вычисления выражения (X,-S)2 + CXa-S^-f. . лСХы-БЛ N ’ где X-t - числа,хранящиеся в DATA; N - их количество; с. _ х, ♦ . ,+х« ° N * ЗАДАНИЕ 22.6. Из последовательности чисел выберите наибо - лее близкое к среднему геометрическому этих чисел.(Среднее гео - метрическое N чисел равно корню Ы-й степени из их произведения). ЗАДАНИЕ 22.7. На плоскости дано несколько точек.Соеденить их попарно. ЗАДАНИЕ 22.8. Расположить элементы данного массива по воз- растанию . ЗАДАНИЕ 22.9? Дайте геометрическую иллюстрацию предыдущей задачи для небольшого массива. * „ ЗАДАНИЕ 22.10. Заданы два массива.Получите из них третий массив.упорядоченный по возрастанию. ЗАДАНИЕ 22.11? Дан массив п некоторая перестановка его эле- ментов .Написать программу,которая сможет распечатать массив в его исходном состоянии или после перестановки по выбору.
ЗАДАНИЕ 92.19. Напечатайте таблипу чисел а2 а3 а4 а5 а2 а3 а4 а5 а1 а3 а4 а5 а1 а2 а 4 а Но а5 а1 а2 а3 а4 * ЗАДАНИЕ 22,13. Последовательность чисел задана соотноше - ам+5 ~ аН+4* аы+3+ aN+2+ aN+l+ aN • Напишите программу для вычисления N-го члена последовательности при любых начальных значениях aQ - а,. . * ЗАДАНИЕ 22.14. с задании 21.14 заставьте двух змеек гнаться друг за другом. * ЗАДАНИЕ 22,1.5. Напишите программу для движения змейки,уп- равляемой стрелками и совершающей повороты под прямым углом. ЗАДАНИЕ 22.16, То же задание для поворотов кратных 45°. у I? ПОДУМАЙ ДОМА]] В приложении 8 описываются массивы с двумя индексами.Исполь- зуя их напиши программы играющую в крестики- нолики О О X б) помогающую создавать узоры для вышивания.Сначала спо- собом,применённым в задании 20.8 рисуется мозаичная плит- ка, а затем этими плитками покрывают экран С см.задание 18.6).
Замятие 23. Пока мы почти не использовали возможности языка Бейсик для работы с тексами. Вывод символов на экран в графических режимах . OPEN Английское слово OPEN (оупэн) означает ОТКРЫВАТЬ OPEN "GRP:" AS* I После этого используется оператор PRINT в формате PRlNTjj, "ТЕКСТ- Номер канала связи - команда,открывающая канал Связи с графическим режимом ("GRP:") цод (AS-эз) номером 1 (или любым другим от 1 до 15), должна выполняться один раз. кроме текстов можно печатать и значения арифметических вы- ражений . Печать текста будет производиться там,где перед этим была поставлена последняя точка графическими операторами. PSET (М^/^ГЕКСТ При печати текстов в графическом режиме возможно наложе- ние текстов один на другой.В подобных случаях необходимо л очищать место для текста,рисуя прямоугольник фонового цвета. ЗАДАНИЕ 23.1. Напишите программу.которая продемонстрирует возможности графических операторов.На экране одновременно должны быть отражены : назначение команды; формат; фигура с указанием параметров. ж ЗАДАНИЕ 23.2. Постройте график функции на отрезке.Укажите максимальное и минимальное значения,а также соответствующие им аргументы. Кроме того на экране должна быть указана формула,за- дающая функцию.
-91- Строковые переменные. Мы уже знаем какие большие преимущества даёт использование переменных.Но пока мы использовали только такие переменные,кото- рые принимают числовые значения.Можно применять в программах и строковые переменные,т.е. такие значения которых являются стро- ками символов (от 0 до 255 символов в строке). Имя строковой переменной отличается от имени обычной (дей- ствительной) переменной добавлением оправа знака доллара^ | I . Примеры имён строковых переменных: А$ , Р1$ , SP$ . Onерапии,производимые над строковыми переменными, а) присваивание текстовой константы : а$ = " строка ^символов” m С _ HW * “ - очистка строковой переменной б) печать значений строковых переменных : PPINT А$,Т$ в) склейка двух строк : Т$ = А$ + В.$ Р$ = "СЛОВО:" + Р$ Ci = "СКЛЕШ" + "J1 + "СТРОК" г) ввод значений строковых переменных с клавиатуры : INPUT А$,В$ _ПрИ вводе строку можно не заключать в кавычки. ЗАДАНИЕ 23.3. Напишите программу,которая запрашивает слово, его положение на экране и печатает это слово. Строковые данные,подобно числовым,можно хранить в строках ДАТА, разделяя их запятыми С запятая не может входить в текст). ЗАДАНИЕ 23.4. Напишите программу,которая печатает текст , записанный по Строкам в операторах ДАТА. Ввод с клавиатуры одного символа. Функция INPUT$(1) ожидает нажатия на любую клавишу и сразу после нажатия принимает значение,совпадающее с соответствующим символом : Р$= INPUT$(1) Строковая переменная, которая получит значение, равное символу,сразу после считывания Количество считыва- емых символов (см.приложение 9)
ДейСтвие оператора присваивания в подобной записи похоже на действие оператора INPUT Р$ . Однако если ввод символа опера- тором INPUT производится только после нажатия на клавишу ввода,то ввод с помощью функции INPUT? осуществляется сразу после нажатия на символьную клавишу. При вводе символа о помощью функции INPUT? «символ на у экран не выводится. С помощью этой функции можно вво- • дить символы при включённом графическом режиме. ЗАДАНИЕ 23.5. Используя INPUT? для задержки текста на экра- не,напишите программу«которая будет сменять четверостишия стихо - творения Н.Заболоцкого "Не позволяй душе лениться" после нажатия на любую клавишу. ЗАДАНИЕ 23.6, Используйте INPUT? для задержки граф.режима. ЗАДАНИЕ 23.7? Переделайте задание 20.10.6 так,чтобы можно было бы возвращаться от изображения к меню. и 1РЧ 4 ” м 194 4 Различайте строку из цифр и число : об"екты ЗАДАНИЕ 23.8? Используя действительные и строковые перемен- ные,продемонстрируйте различие между числами и строками. Перевод числа в строку п строки в число. Функция VAL("1,23") VALUЕ (велью) - величина Строка "1.23"ДГ 1.23 - число Функция STP$(1.23) STRIN& (стрин) - строка ЗАДАНИЕ 23.9? Напишите программу для рисования ломаных,осу- ществляющую ввод координат непосредственно в графическом режиме. * ЗАДАНИЕ 23.10, Напишите программу,которая поможет располо- жить номера цветов по нарастанию интенсивности. ЗАДАНИЕ 23.11? Будем обозначать число .образованное после- довательной записью цифр чисел А и В,через АВ.(Например,при А= 46 и В= 37 , АВ=4637). Найдите число X,удовлетворяющее уравнению INT(X/2) X + X2 = (Х-1) (Х+1) |? ПОДУМАЙ ДОМА ][ Проиллюстрируй с помощью графической модели еле - Забор длины L дующую задачу:к стене нужно пристроить забор заданной длины,чтобы получился участок наи - большей площади. Р , S -?
Занятие 24. Считывание символа без ожвдания. Функция ШКЕУ$ похожа одновременно на функции 1ЫРит$(тем, что получает значение при нажатии соответствующей символьной кла- виши) и STICK бтем.что не ожвдает нажатия;при ненажатой клавише значением является пустая Строка). F$ = INKEJ$ - записывается без аргумента. ЗАДАНИЕ 24.1, Разберитесь,как работает INKERS,используя программу.аналогиную программе из задания 20.7. ЗАДАНИЕ 24,2. Переделайте графический редактор (См.задание 20.8.) так,чтобы нажимая на клавиши с начальными буквами цветов, можно было менять цвет (или интенсивность) линий. Коды символов. В память компьютера фактически записывается не сам символ, а соответствующее этому символу число (от 0 до 255).называемое кодом символа. фикция ASC (’цл) ДоС(эз-ки) от Америк.. Символ "+" Кол - 43 \ Код функция CHR$(43) СНаКаЙеНкериктэ) -символ ЗАДАНИЕ 24.3. Напишите программу.печатающую а) код по символу, в в еденному с клавиатуры ; б) символ по коду ЗАДАНИЕ 24.4. Каким образом можно установить,что на клавиа- туре была нажата клавиша ввода? Почему для исполнения команды LIST нужно нажать на Р4 и на клавишу ввода,а для исполнения RUN - толь- ко на F5. * ЗАДАНИЕ 24.5. Напишите программу.позволяющую Строить на эк- ране геометрические фигуры,последовательно запрашивая ввд фигуры по первой букве (0 - окружность, Э - эллипс и т.д.),а затем соот- ветствующие параметры,нужные для построения данной фигуры.В ре - зультате на экране должно появиться несколько Фигур.
Кроме Строковых переменных можно использовать строковые массивы. DIM 5Т$(25) Имя переменной Признак символьной переменной Количество элементов ЗАДАНИЕ 24.6? Напишите программу аналогичную программе из задания 20.10.а .которая позволяет свободно возвращаться к меню и хранить исходную справочную информацию в хранилище РАТА. ЗАДАНИЕ 24.7. Уплотнить массив.выбросив из него пустые сло- ва. Функции для работы со строками символов. MlDdte (мидл)- середина F$="4BCDEPGH LEN(P$) - количест- ВО Симво- X лов в / строке , К) - вырезка из СтР°ки Номер первого Количество символов символа вырезки в вырезке LEN(jth (лент)- дайна ЗАДАНИЕ 24.8. С помощью программы,содержащей только опера- торы ввода и печати,разберитесь в действии строковых функций. ЗАДАНИЕ 24.9. Напишите программу.которая печатает слова задом наперёд. ЗАДАНИЕ 24.10. Напишите программу.присчитывающую количест- во слогов в слове. * ЗАДАНИЕ 24.11. Упорядочить массив слов по алфавиту. || ? ПОДУМАЙ ДОМА || „ „ „ „ „„ • - -У Првдумай некий экранный об ект,который может находиться в различных ситуациях. Выбери систему команд для управления этим об"ектом. Напиши программу,которая позволит управлять этим сб"ектом (исполнителем').
-95- ито мы узнали. Массивы INKEV$ Об"явление Строкового массива ИМ ЭТ$(15) Об”явление действительного массива DIM R(30) фическом режиме : Выполните контрольную 7. Подсчёт числа слогов в слове 10 ВАГА А,Е,И,О,$ Ы,Э,Ю,Й 20 ИМ &$(9)REM ГЛАСНЫЕ 30 FORITOS’-.READ6$(К):NEXT К 40CLS: S’0‘. REM ЧИСЛО СЛОГОВ 50 INPUT ’’СЛОВО"-, SL$ 60 FORI-tTO LEN(SL$') 70 B$=MID$(Sc$,I>1'):REM6yKBA 80 FOR K=4 TO 9 90 IF B4=E4Q9THEMS=^1’6OTOW 400 Next к И0 NEXT I 120 PRINT " B^CAOBEu• S'“uCA0№ печать в граф.реж. открыть канал связи Строковые переменные Т$-‘СТРОКА Признак строковой переменной ОПЕРАЦИИ НЛП ОТТОКАМИ 1.Ввод значения £[\|риТ Т$ 2 .Склейка Строк = Т1$ 3 .Печать значения PRINT Т$ Печать символов в гра- Строковые ФУНКЦИИ Использование массивов е переменными индексами позволяет обрабатывать элементы в цикле : FOR 1 = 1 ТО N PRINT SCO NEXT Г OPEN GRP:"AS#1 TMPUTtHk ввод °имаола iNrv ожиданием без ожидания м1в$(р$)и(,юп;Я’3.а1Вя I FNKTtV!, ° СИМВ-М’ДЛИНОЙК Lit in \ г ф j <с.дЛИНа Строки дзсе?") код по символу CHR$(63) символ по коду
-9G- Занятие 2.5. ЗАДАНИЕ 25.1. Запись а! (читается а-факториал) служит для обозначения произведения 1-2-3•...•а.Напишите программу для вы- числения выражения и1, , ml (и -т)1 Если в различных местах программы нужно использовать сход- ные последовательности действий,используются так называемые под- программы. В Бейсике для организации подпрограмм используются два оператора : переход к подпрограмме и возврат из подпрограммы. G0SUB RETURN <гоу саброутин) GO SUBrouttne означает Английское слово ПЕРЕЙТИ К ПОДПРОГРАММЕ RETURN (ретон) означает ВОЗВРАТ Подпрограмма представляет собой совокупность идущих подряд про - граммных строк.Помер первой из них указывается в команде GOSDB . После исполнения этой команды начинает действовать подпрограмма. По команде RETURN происходит возврат на то место программы,отку- да было произведено обращение к подпрограмме. Программа При обращении к подпрограмме запоминается так называемый адрес возврата,т.е. следующий за GOSuB оператор. Строки программы и всех её подпрограмм имеют сквозную нумерацию. Из-за этого иногда происходит попадание в под- программу, минуя оператор ООБПВ.Это вызывает ошибку.Чтобы таких ошибок не было,тексту подпрограммы должны предшест- вовать операторы GOTO , END , RETURN .
ЗАДАНГ'Е 25.2. Переделайте предыдущее задание,используя под- подпрограмму . ЗАДАНИЕ 25.3. Напишите программу рисования звёздочками пря- моугольника в символьном режиме.Используйте её в качестве под - программы при построении таблиц (см.задание 5.7). ЗАДАНИЕ 25,4, Напишите программу деления отрезка в данном отношении.(По координатам точек А и В,а также по числу т,задаю- щему отношение .найти координаты точки М .такой что =т).Ис- пользуйте её в качестве подпрограммы при построении "седла"(ги- перболического параболоида). (Сравните с 10.6. г.) резиновыми жгутами Рамка перекошена, жгуты образуют "седло" ЗАДАНИЕ 25.5. Напишите программу.располагающую фигуры по кругу (см.домашнее задание 15).Используйте подпрограммы поворо- та (см.ответ к д.з.1^ и проведения ломаной (см.задание 15.5.) ЗАДАНИЕ 25.6. Используя вместо подпрограммы поворота под - программу растяжения Ссм.занятие 13).постройте семейство вложен- ных друг в друга фигур. ЗАДАНИЕ 25.7. Используя подпрограммы деления отрезка (см. задание 25.4) и проведения ломаной,постройте семейство квадратов. кпий 5(д(х)) .Функции 5- и g выбираются из меню. ЗАДАНИЕ 25.10* Напишите сложны’* графический редактор,позво- ляющий рисовать Стрелками,чертить окружности,звёзды и т.д. || ?ПОДУМАЙ ДОМА]| Используя приложение 13,напиши программу, которая напечатает титульный лист этой книжки.
Занятие 26, Мы уже заставляли двигаться по экрану различные об"екты.Од- нако зачастую из-за недостаточной скорости при выполнении команд возникали нежелательные эффекты.Имеется возможность использовать специальные средства создания движущихся об"ектов - спрайты. SPRITE Английское слово SPRITE (спрайт) означает Спрайт представляет собой изображение,вмещающееся в квадрат определённых размеров.Применять спрайты можно во всех экранных режимах кроме SCREEN! 0. Для работы со спрайтами используются а) команда SCREEN с дополнительным операндом, указывающим размеры спрайта ; б) набор псевдопеременных для хранения обра- зов всех спрайтов ; в) команда печати образа на экран. Об"явление размера спрайтов. SCREEN 2,0 - размер 8*8 2 - размер 16*16 1 - размер 8*8 ”1 с двойным увеличением 3 - размер 16*16 I 065333 при печати Создание образа. Нарисуйте на бумаге решётку,соответствующую предполагаемо- му размеру спрайтов.Постройте изображение,закрашивая определён - ные квадратики решётки.Закодируйте изображение по строкам с по- мощью нулей и единил: квадратик не закрашен - 0,закрашен - 1. &В 00001000 _ символы,являющиеся &В 00011100 указателями двоично- SB 00111110 П 6 1 го числа(В1пагу -дво- SB 00001000 J ичный) 8. В 00001000 --- &В 00001000 Двоичное число можно пере- ев 00001000 вести в десятичное: 8-В 00001000 PRINT &В 00111110 Двоичный код нагляднее,десятичный короче.
http://www.gr8bit.ru । 16*16 &В1в(1р1»Г >• 32 строки двоичных чи- сел по 8 зна- ков Рисунок Преобразование Кодировка Сохранение образов в памяти. Для хранения образов используются ные строковые псевдоперемен- SPRITE$(N) /-------- номер спрайта 0<N<255 для спрайтов 8*8 ; 0^N<63 для спрайтов 16*16 . а) запишите закодированные изображения в РАТА: 10 РАТА &В„ 20 РАТА &В„ 80 РАТА &В.. 90 РАТА &В. 160 data's В 1-е изображение 2-е изображение Коды в РАТА могут быть записаны в ▼ виде двоичных или * десятичных чисел. б) сохраните образы,используя фрагмент программы : 200 SCREEN 2 210 POR 1 = 1 ТО К х— общее число образов 220 S$=’“ 230 POR М ТО 8 240 REAP А . z-x 250 S$ = S$+CNR$(A)</ v— наращивание изображения в S$ 260 NEXT J ч , 270 SPRITE$(1-1)=S$-»ZX~сохранение образа в псевдопере- 280 NEXT I менной Образ спрайта 16*16 кодируется с помощью 32 чисел,поэтому 230-я Строка программы принимает вид: 230 FOR J=1 ТО 32 Воспроизведение спрайту на экране. PUT Английское слово PUT (пут) означает УСТАНАВЛИВАТЬ Установка спрайта на экране производится командой,имеющей олмугай «оиат: рит spRITE
Раз"ясним смысл операндов.При этом нам будет удобнее рас- сматривать операнды в ином порядке,чем они расположены в команде, Nобраза _ номеР псевдопеременной,в которой хранится образ; ^пвета " цвет °прайта (можно опускать по общему правилу); плоскости - координаты левого верхнего угла квадрата,в кото- рый врисован спрайт.Для режимов SCREEN 1 и 3 ко- ординаты задаются также как и в SCBEEN 2. - задаёт номер плоскости,на которой воспроизводит- ся спрайт.Поясним,что такое плоскость. Воображаемые плоскости введены для того,чтобы а) создать удобный механизм движения спрайтов ; б) однозначно определять изображение,возникающее при наложении спрайтов друг на друга. Можно представлять,что экран расслаивается на 32 (от 0 до 31) плоскости. На каждой плоскости может находится не более одного спрайта.Ес- ли на плоскости уже находится спрайт,то печать на неё нового спрайта (в любом месте) вызывает исчезновение первого спрайта . Ото позволяет осуществлять движение спрайтов.печатая один и тот же спрайт на определённую плоскость и изменяя координаты Х,У. Печатая на одну плоскость в одном месте различные спрайты, можно получить изображение предмета .меняющего .(юрму.
При наложении спрайтов полностью виден спрайт,находящийся на плоскости с меныпим номером. Один и тот же образ можно одновременно печатать на несколько плоскостей. ТЕсли на одной горизонтали находятся 4 Спрайта,и делается попытка воспроизвести на той же горизонтали ещё один спрайт,то исчезнет спрайт с наибольшим номером плоскости А о □ А ЗАДАНИЕ 26.1. Создайте спрайт и заставьте его перемещаться по а) горизонтали ; в) диагонали ; б) вертикали ; г) синусоиде . ЗАДАНИЕ 26.2. Осуществите движение двух спрайтов на встреч- ных курсах. * ЗАДАНИЕ 26.3. Напишите программу,которая заставит человечка бежать на месте. ЗАДАНИЕ 26.4? Создайте и заставьте двигаться многоцветное изображение. ЗАДАНИЕ 26.5. Поработайте со спрайтами различных размеров в различных режимах .В режиме SCREEN 1 установите спрайт,по оконча - нии программы очистите экран.Как убрать спрайт ? ЗАДАНИЕ 26.6. Используйте спрайт в графическом редакторе для того,чтобы он отмечал положение "карандаша". Ж ЗАДАНИЕ 26.7. Используйте спрайт в качестве указателя в про- граммах с меню. ЗАДАНИЕ 26.8? Напишите программу .позволяющую менять скорость спрайта. ЗАДАНИЕ 26.9? Напишите программу,в которой движется меняю- щий форму образ. ЗАДАНИЕ 26.10? Напишите программу.позволяющую создавать на экране спрайты,перемещаясь по решётке с помощью стрелок (редак- тор спрайтов). Г? ПОДУМАЙ ДОМА!! Придумай и создай динамичную игру.
Замятие 27. Компьютер снабжён специальным устройством для отсчёта вре- мени.Это устройство называется ТАЙМЕРОМ. ТТЫП Английское слово TIME (тайм") означает I 1ML время Таймер включается вместе с компьютером и автоматически уве- личивает на единицу псевдопеременную TIME через 1/50 секунды. Таймер можно сбросить с помощью оператора присваивания TIME = 0 Псевдопеременную TIME можно использовать как обычную пере- менную при записи условий в условном операторе,в арифметических выражениях,можно выводить её значение на экран. ЗАДАНИЕ 27.1. Напишите программу.которая рисует окружность делает паузу в 10 секунд и прекращает работу. ЗАДАНИЕ 27.2. Опреледите.какое время затрачивает компьютер а) на построение окружности радиуса 70 ; б) на её закрашивание из центра (Сравните с 2.12) * ЗАДАНИЕ 27.3. В программу движения змейки (Рм.задание 22. вставьте операторы,обеспечивающие прекращение программы через 3 минуты после запуска. ЗАДАНИЕ 27.4? Напишите программу движения 3-х спрайтов , перемещение которых происходит с паузами 0,3 секунды, 0,5 секунд, 0,7 секунд. Случайные числа. Г) KITl Английское Слово RaNDom (рендемТ означает KND СЛУЧАЙНЫЙ Все действия компьютера подчинены строгой закономерности. Когда нужно внести в них элемент случайности,используют специаль- ную функцию RND.
Обращение к функции RND производится в два этапа. 1. Выбор случайной последовательности из имеющейся совокупности. При этом аргумент должен быть отрицательным. 2. Выбор случайного числа из уже выбранной на первом этапе слу- чайной последовательности.Аргумент в этом случае положите - лен. X- RND(-3)~^^ Обращение к функции ~~ RND с отрицательным аргументом приводит к выбору случайной последовательности. / ► Совокупность случайных последов а - тельностей Все случайные числа Bj , В2, . заключены между 0 и 1. XWNXlf' ХЗ- RND(C:... Последовательные обращения к Функции END с любым положительным аргументом позволяют "достать" из выбранной последовательности случайные числа одно за другим. М При выборе случайной последовательности используется не ▼ случайный аргумент.Это как бы понижает случайность чисел • (при каждом запуске программы выбирается одна и та же по- следовательность случайных чисел)• Случайный выбор последова - тельности достигается командой X - RND (-TIME) ЗАДАНИЕ 27.5. Распечатайте несколько случайных чисел. ЗАДАНИЕ 27,6. Получите целые случайные числа,заключённые в границах от А до 3. ЗАДАНИЕ 27.7? Напишите программу для получения 6 чисел , которые нужно вычеркнуть в карточке Спортлото. ।—। ЗАДАНИЕ 27.8. Напишите программу,изображающую г—гт! а) взрыв ЗАДАНИЕ 27.9.* в) случайные Т"гГ прямоугольники случайного цвета Программу 27.3. превратите в известную игру "Питон", разбросав по экрану случайные точки - кроликов. [р? ПОДУМАЙ ДОМА} Как сделать,чтобы питон из предвдущего за- дания удлиннялся,с"ев очередного кролика.
-104- Uto мы узнали. Подпрограммы Спрайты RETURN Подпрограмма представляет собо последовательность команд при- меняемую в различных местах программы. Об"явление размеров Обнуление таймера: СЛУЧАЙНЫЕ ЧИСЛА случайные числ 1"О5Р»3 Выполните контрольную 8 10 ММ ХСЗ),Х5),Т(3) . 20 SCREEN Й, 0 60 FOR К-4 ГОЗ: Т(К)=Т1 IME: NbXT К Ь0 FOR 1 = 4 ГО 5 70TF ТГМ£-Г(Г)М>45 THEN GOSUBI00 80 NEXT Г 9*5 IF Х(5)< ZS5 THEN Й0 ELSE ENO 100 Х(1)= Х(Т)+1 < I 0 PUT SPRITE r,(x(I),W),, 0 <20 T(I) = TIME RETURN Три спрайта с различными скоростя- ми 100,200,300 PUT SPRITE N ПЛОСЙХТИ CHR$ (255) *CHR$ (129);+^ Установка спрайта Спрайт - движущийся образ. SCREEN 2, 0 - 8*8 1 - 16*16 с двойным Г2 - 8*8 увеличением \3 - 16*16 Создание и сохранение Обращение к подпрограмме GOSUB^W0 Номер первой строки подпрограммы Возвращение из подпрограммы образа рисунок КОДЫ В 11111111 = 255 8В 10000001 = 129X &В 11111111 = 255 ) 4prlte^no6 ) = Обращение к одной из нескольких под- программ на выбор (переключатель подпрограмм) ON К G-OSUB TIME содержит время _ тиках С1/50 сек.) Выбор случайной последователь- ности : X = RND(-TIME) Выбор случайного числа : X = Ш(1) В
Замятие 28. Особым средством контроля за работой программы являются так называемые прерывания по событиям различного вида.Когда про- исходит такое событие,программа прерывает свою работу и обраща- ется к, специальной подпрограмме обработки события.Эта подпрогра- мма как бы принимает меры по данному событию.После завершения подпрограммы основная программа продолжает свою работу. Типы Событий Обозначения Примечание Столкновение спрайтов SPRITE Столкновение фиксиру- ется для квадратов,а не для образов Истечение интервала време- ни INTERVAL’ Время задаётся в тиках (1/50 секунды) Нажатие на пробел STRI&C0) При объявлении подпрог 1 опускается аргумент. Нажатие на CTRL STOP 5Т0Р — Нажатие на функциональную клавишу КЕ^ — Ошибка в программе ERROR Обслуживается особой системой команд Система команд,обслуживающих прерывания (кроме ERROR) ON событие G-OSUB Истр„дпрогр. - об"явление начальной строки подпрограммы обработки события. 2. СОБЫТИЕ 0N - включение режима обработки прерываний по данному типу событии При включении прерываний по нажатию на функциональную кла- вишу нужно указывать номер клавиши в скобках: КЕУ(Мклав) ОМ 3. СОБЫТИЕ STOP - временное отключение режима. 4. СОБЫТИЕ OFF - отмена режима обработки прерываний. Данная система команд позволяет возложить контроль за собы- тиями на систему.Программисту остаётся только позаботиться о том, чтобы с помощью подпрограммы отреагировать на произошедшее событие.
Система команд для обработки ошибок. 1. ON ERROR GOTO N строки подпрогр. -об"явление подпрограммы обработки ошибок и вклю- чение режима обработки. 2. RESUME - выход из подпрограййы обработки ошибок свме- сто RETURN) Применяется в форматах: a) RESUME (или RESUME 0 ) - возврат на оператор,совер- шивший ошибку ; б) RESUME NEXT -возврат на следующий оператор ; в) RESUME МРфПП„и - переход на фиксированную строку про- «-трики граммы. 3. Функция ERL содержит номер последней Строки,в которой произо- шла ошибка (без аргумента). 4. функция ERR содержит код ошибки (без аргумента). 5. Оператор ERROR Кошидки по коду ошибки выдаёт сообщение об этой ошибке. ЗАДАНИЕ 28.lt Напишите программу,которая осуществляет слу - чайное движение двух спрайтов и во время их Столкновения закраши- вает экран цветом 15.После паузы экрану возвращается цвет 4. ЗАДАНИЕ 28.2. Напишите графический редактор,удовлетворяющий следующим требованиям: а) приступить к рисованию можно только после нажатия на про бел ; б) пока пробел не нажат,программа через определённые проме- жутки времени демонстрирует рисунок. ЗАДАНИЕ 28.3. Как обеспечить программе защиту,т.е. сделать невозможным её прерывание и стереть её текст сразу по её оконча- нии ? * ЗАДАНИЕ 28.4. Распечатайте сообщения об ошибках по их кодам (в качестве кодов возьмите числа от 1 до 71). ЗАДАНИЕ 28.51 Напишите программу, использующую обработку оши- бок для обеспечения правильного ввода данных. [ ? ПОДУМАЙ ДОМА Пока программа работает,в ней нельзя заменить одну программную строку на другую.Используя функциональные клавиши и прерывания,создай систему программ,кото- рая позволяет заменять строки во входящих в неё программах.
Занятие 29, Для использования звуковых возможностей компьютера необхо- Если наушники подключены правильно,то каждое нажатие на кла- вишу сопровождается лёгким щелчком.Ввдача сообщения об ошибке со- провождается сигналом "бил".Этот сигнал можно использовать в соб- ственной программе.Он вызывается командой без операндов ВЕЕР (бип) ЗАДАНИЕ 29.1. Напишите программу,в которой движение спрайта сопровождается звуковыми сигналами. 4 .. ...........— Музыкальный язык. У ’ ’соль до ре ми фа ля си С помощью специальной команды можно без особого труда испол- нять музыку. PLA^ Английское слово РЬАУ (плэй) означает ИГРАТЬ % Е - МИ Р - ФА G - СОЛЬ А-ЛЯ В - СИ R - ПАУЗА После слова РЬАУ помещают через запятые от одной до трёх строк или Строковых переменных.Каждая строка задаёт голос ссамо- стоятельную мелодию).Исполнение музыки не мешает выполнению дру- гих операторов программы. Строка,задающая мелодию,состоит из однобуквенных команд и уточняющих их чисел. Превде всего буквами обозначаются ноты Диез обозначается знаком +. Бемоль обозначается знаком h (См.также приложение 11)
а) ЗАДАНИЕ 29.2. Исполните на компьютере б) #— Число после названия ноты (или паузы) указывает длительность звучания.Например, 1 означает целую ноту , 8 означает 1/8.Исполь- зуются числа от 1 до 64.Если число после буквы не указано.подра- зумевается 1/4. Октавы переключаются с помощью буквы 0 и номера октавы (от 1 до 8) .Если номер октавы специально не указан,то используется 4-я октава (она соответствует 1-й октаве пианино). о-1 ~ ЗАДАНИЕ 29.3. Исполните }05 означает слитное исполнение ЗАДАНИЕ 29.4. Напишите программу,позволяющую использовать компьютер,как простой музыкальный инструмент. * ЗАДАНИЕ 29.5. Напишите программу,помогающую перекладывать нотную запись на компьютерный музыкальный' язык (музыкальный ре - дактор). ЗАДАНИЕ 29,6.* Напишите программу.позволяющую выбирать из меню музыкальные номера и прослушивать их. У ? ПОДУМАЙ ДОМА [} Пусть величина Z задана формулой Z =(?(Х,У) (см.дом.задание 18).Некоторым образом по - ставим числу Z в соответствие 0 или 1 (например,если 1NTCZ.) -чёт- но,то - 0 .иначе - 1).Теперь с помощью вложенного цикла ( 0^Х^25Ь, 0<У<191) установим на экране те точки с координатами(X,У) ,для ко- торых Z=l.В результате будет получен некий узор,определяемый фор- мулой Z =F(X,У) . Нельзя ли сходным образом "превратить" функцию У = £(х) в мелодию ?
Занятие 30. Язык Бейсик не является родным не только для программиста, но и для компьютера.Он придуман для того.чтобы облегчить общение человека и машины, и является промежуточным звеном между естест- венным и машинным языками. Напишу-ка я Система,которая позволяет создавать и запускать программы на Бейсике в конечном счёте является переводчиком с Бейсика на язык компьютера. Язык компьютера - это язык двоичных чисел,т.е. язык,слова- ми которого являются последовательности,состоящие из нулей и еди- нил. Человек может легко ошибиться,когда пишет программу на таком языке.В то же время только машинный язык позволяет в полной мере использовать возможности машины. Чтобы расширить доступ к этим возможностям,в Бейсик введены специальные команды,использование которых предполагает некоторые знания об устройстве компьютера. На этом занятии мы только немного затронем новые области . Тому же кто захочет изучать программирование более глубоко ещё предстоит открыть для себя целый мирмикропроцессорная техника , архитектура ЭВМ,разнообразные языки и системы программирования , вопросы теоретического программирования,социальные проблемы ком- пьютеризации и многое,многое другое.
Особый интерес для нас представляет память компьютера.В зна- чительной мере через неё осуществляется взаимодействие устройств компьютера. Основным элементом памяти является БАЙТ - восьмиразрядная ячейка.Значением каждого разряда может быть либо 0,либо 1. 1 0 1 1 0 0 1 о Нули и единицы,записанные в разряды байта,образуют число в двоичном виде. ЗАДАНИЕ 30.1. Используя оператор PRINT для перевода двоич- ных чисел в десятичные (см.занятие 26).определите,какие числа мо- гут храниться в байте. Память компьютера состоит из последовательности занумерован- ных с нуля байтов.Номер байта называется его адресом.Адрес можно записать в яиде десятичного числа,но часто используют более крат- кую шестнадцатиричную запись (см.приложение 11).ШеСтнадцатирич - ное число можно перевести в десятичное с помощью оператора PRINT. ЗАДАНИЕ 30.2? Определите максимальный возможный адрес байта. Сформулируйте правило перевода шестнадцатиричных чисел в десятич- ные с помощью оператора PRINT.Какое максимальное шестнадцатирич- ное число можно записать в байт ? Код Символа занимает в памяти ЭВМ один байт,числа различных видов и точности - от двух до восьми байтов.Память компьютера ис- пользуется одновременно и различными его устройствами,и програм- мистом.Из-за этого структура памяти очень сложна.Ниже мы познако- мимся с некоторыми новыми видами информации,хранящейся в памяти компьютера,а также с ячейками памяти,имеющими особое назначение. 1 .Двоичные подпрограммы.обслуживающие систему.Каждая подпро- грамма занимает несколько байтов.начиная с некоторого .вполне оп- ределённого адреса. 2 .Регистры,т.е. специальные байты,соединённые напрямую с ка- ким-либо устройством и отвечающие за его состояние.Например.цвет, который соответствует определённому номеру (см.приложение 3) за- даётся содержимым регистра палитры. 3 .Порты (ворота) ввода и вывода.Специальные ячейки.через ко- торые можно добраться до некоторых регистров.
4 .Отдельные байты и .таблицы (большие массивы байтов).содер- жащие специальную информацию для различных устройств.Например,та- блица шаблонов задаёт форму символов,выводимых на экран подобно тому как задаётся форма спрайтов . Обращение к двоичным подпрограммам. DEEUSRN „ подпрогр. USeR (юзе) - пользова- тель. - определение двоичных подпрограмм для использования в программе,написанной на Бейсике.Можно определить до 10 под- программ(0^Мподпрогр5 9). Для определения двоичной подпрограммы нужно указать адрес её начального байта.Определение и обращение к двоичной подпрогра- мме продемонстрируем на примере. Определение: 1)EFUSR0 = &НЗЕ - подпрограмма,начи- нающаяся с ЭТОГО адреса устанавливает определённые значения всем функциональным клави- шам (Смена происходит только после нажатия на шифт). Обращение к подпрограмме: любая переменная = USR0(X)^—любой аргумент ЗАДАНИЕ 30.3*.Проведите смену значений функциональных клавиш с помощью двоичной подпрограммы. ЗАДАНИЕ 30.4* Проверьте,что двоичная подпрограмма,находя- щаяся в памяти,начиная с адреса ЬНСС.убирает с экрана подсказки о значении функциональных клавиш,сохраняя сами значения.(Анало- гичного результата можно добиться с помощью команды КЕУ OFF.Вос- становление подсказок производится командой КЕУ ON). Непосредственный доступ к байтам памяти и видеопамяти. РОКЕ РЕЕК РОКЕ (поую означает Английское слово < ВКЛАДЫВАТЬ РЕЕК (пик) означает ЗАГЛЯДЫВАТЬ
-112- Работа с памятью и видеопамятью. I Память POKE A,ZX вложение в байт с адресом А значения Z Х = РЕЕК(А) I Видеопамять УРОКЕ/(С вложение в байт с ад- ресом А значения Z X^VPEEK(A) функция,принимающая значение,равное со- держимому байта е адресом А. функция.принимающая значение,равное со- держимому байта с адресом А. ЗАДАНИЕ 30.5. Байт памяти с адресом &HFCAB отвечает за сос- тояние клавиши САК.Если занести туда значение равное 255,то на экран с клавиатуры будут поступать заглавные буквы (хотя индика- тор клавиши не загорится). Отключить эту клавишу можно,занеся в тот же байт 0.Аналогичным образом байт &HFCAC отвечает за состояние клавиши РУС.проверьте это.Кёк использовать это в программах? ЗАДАНИЕ 30.6. Таблица Шаблонов.отвечающая за форму символов соответствующих определённым кодам,располагается в видеопамяти , начиная с адреса &Н100.йвд символа задаётся подобно ввду спрайта 8*8,поэтому каждому символу в таблице отводится 8 байтов.Проверь- те это.Работайте в режиме SCREEN 1. ЗАДАНИЕ 30.7. Как сделать символы на экране в два раза толад? ЗАДАНИЕ 30.8. Цвет символа и фона определяется таблицей , расположенной в видеопамяти с адреса &Н2004. двоичная запись цвета цвета символа фона данного символа Работая в режиме SCREEN 1 на машине с цветным дисплеем.уточните , за цвет каких символов отвечает каждый байт таблицы. ЗАДАНИЕ 30.9. Как установить в режиме SCREEN 1 непрозрачный курсор ?
Задания 30.6-9 выполняйте в режиме SCREEN 1 . Задание 30.8 выполняйте на цветном дисплее . Задание 30.10 также предполагает-использование цветного дисплея. Каждый цвет можно получить,смешивая между собой в различных пропорциях красный,Синий и зелёный цвет.Эти три цвета и являются основными в системах цветного телевидения. Пров од, соединяющий дисплей <? клавиатурой .вставляется в гнез- до,помеченное буквами ВбВ.Эти буквы являются первыми буквами анг- лийских названий соответствующих цветов: Red (ред) - красный &гее (Грин) - зелёный Blue (блу) - синий Каждый цвет,соответствующий некоторому номеру,является сме- сью, пропорции которой хранятся в специальных регистрах палитры . Этих регистров 16 по количеству цветов .Изменив, содержимое какого- либо регистра палитры,мы тем Самым изменим и цвет.выводимый на экран. Доступ к регистрам палитры осуществляется через порты выво- да &Н99 и &Н9А.Запись данных в порт вывода производится командой OUT (аут) .По формату она похожа на команду РОКЕ: Спорта-* Подробно опишем как производится запись в регистр палитры, отвечающий за цвет о номером N.Величины R.&.B задают концентрацию соответственно красного,зелёного и синего цветов.Каждая из них принимает целые значения от 0 до 7. Задание номера N f OUT &Н99, N изменяемого цвета OUT &Н99,&Н90 Задание новых Г OUT &Н9А, R«16 + В концентраций OUT АН9А, & £ ЗАДАНИЕ 30.10. Сколько оттенков цветов может использовать компьютер ЯМАХА ? Напишите программу,которая сможет продемонст- рировать все эти цвета. ? ПОДУМАЙ ДОМА || Как можно организовать равномерное движе- ние некоторого фона,например,мелкой решётки,образованной наклон- ными линиями ?
Замятия 31-34. < ,... ~ ~ 1 : — 'tv Занятия 31-34 посвящены индивидуальным работам.Выбор зада- ния следует производить в соответствии с .интересами учащихся и степенью владения языком.Сложные задания могут быть исполнены группой учащихся.Однако в этом Случае желательно,чтобы все входя- щие в группу имели одинаковый уровень знаний.Слабые учащиеся дол- жны делать свои задания самостоятельно. Специфика персонального компьютера такова,что любому уча- щемуся может быть предложена посильная программа в интересующей его области,какова бы она не была.Не следует гнаться за сложно - стыо и "полезностью” программ.Допустимы программы самого различ- ного характера : программа,дающая справку о популярном ансамбле; программа,исполняющая модную мелодию ; программа.рисующая эмбле- му футбольного клуба и т.д. Учащиеся,испытывающие интерес непосредственно к программи- рованию,могут работать над программами,которые войдут в фонд про- граммного обеспечения дисплейного класса (тренажёры,обучающие программы и т.д.).Одной из форм индивидуального задания может стать программа-реферат по одному из вопросов информатики. При оценке индивидуальных заданий следует учитывать не толь- ко сложность и качество исполнения,но и наличие интересных идей и оригинальных решений,даже в том случае,когда они не получили законченного воплощения в программе.Следует поощрять учащегося за выявление необычного эффекта при работе программы.Небольшая программа,демонстрирующая этот эффект может стать основой обяза- тельного задания в курсе информатики. Ниже приводятся а) краткий обзор изученных средств языка Бейсик ; б) рекомендации по написанию программы ; в) одна из возможных классификаций программ.цель кото- рой помочь преподавателю при выборе индивидуальных заданий . 333*
Обзор средств MSX - Бейсика. Величины внутри программы .и .их преобпазовяние . — DIM - об"яеление массива СТРОКОВЫЕ И ДЕЙСТВИТЕЛЬНЫЕ ПЕРЕМЕННЫЕ И МАССИВЫ (ЧИСЛА К (СТРОКИ) (СТРОКОВЫЕ ФУНКЦИИ ] [ ФУНКЦИИ ] оператор присваиваний) [арифметические операций ТЕР PN определение функции POR-TO-STEP NPYT Оператор I чикла труктура? программы GOTO - переход на другую Строку IP-THEN-ELSE условный оператор ( условия) GOSUB RETURN Подпрограммы ON-G-OSUB и переключатели [ СИСТЕМА прерываний I D4TZ} RE/JD хранение и Считывание данных END - окончание програ- ммы REM - комментарий SCREEN 2 или J очистка экрана Графический режим LOCATE управление курсор INPUT - ввод значений переменных ыаод информ ии на экра вод информации программу программой налог Символьный режим SCREEN 0 илк 1 - ВВОД симв ола без ожидания INPUT$, - ВВОД Сим- вола с ожиданием CLS STICKUJ) - ко- ды Стрелок PRINT печать чис- ловых и строковых значений COLOR установка цвета СПРАЙТЫ ] PSET - Ула- новна точки STRW) код пробела OPEN'WAS ыВ'5д~звукаР с^ьолы в гра^- ВЕЕР- звуковой сигнал PLAS- исполнение музыки LINE - отрезки и прямоугольни- ки CIRCLE - окруж— НОСти.ВЛЛИПСц И режиме ДУГИ PAINT - закраска области
Рекомендации по программированию. Создание программы и её отладка (устранение ошибок) требу- ют постоянных творческих усилий.В любой момент может возникнуть проблема,которую нужно решать самостоятельно.Никакими инструкци- ями не удаётся охватить все ситуации,с которыми программист встре- тится в своей работе.Рекомендации,приводимые ниже,собирают воеди- но некоторые из тех приёмов.которые были использованы при реше - нии наиболее сложных заданий. 1. Программы являются сложными конструкциями.Их сложность быстро нарастает по мере увеличения об"ёма.Недоделанная програм- ма ведёт себя как клубок ниток: как только вы поспешили,клубок безнадежно запутался.Опыт показывает,что написать программу с на- лёта не удаётся. Программа служит для преобразования совокупности взаимосвя- занных величин.Процессом преобразования можно управлять с клави- атуры. Изменение величин отображается на экране с помощью символов или графических об"ектов. ззз1 Сложность написания программы заключается в том,чтобы уста- новить взаимосвязь процессов управления,преобразования величин и отображения информации на экран.Процесс преобразования величин сам по себе является очень сложным.Поэтому его организация пред- ставлят значительную трудность. 2. Отправной точкой для написания любой программы является задание на программирование.Если вы получили задание от заказчи- ка,прежде всего поймите чего он хочет.Если вы задумали программу самостоятельно,напишите на неё чёткое задание,чтобы понять, чего вы хотите сами.
Смысл задания - это каркас,на который наращивается програм- ма. 3. Попытайтесь установить.нельзя ли написать данную програ- мму по аналогии с какой-либо известной вам программой.Если прог - рамма не имеет аналога,представьте в общих чертах,как будет осу - щ»ствляться её работа.Исходя из этого представления,разбейте про- грамму на отдельные блоки.Блоков должно быть не много,и каждый должен решать свою задачу. Кратко сформулируйте какие задачи решает каждый блок.Устано- вите взаимосвязь между блоками и изобразите её графически (откуда, куда и при каких условиях). Если пока ещё не ясно,как писать программу для некоторых блоков.разбейте каждый из них на ещё более мелкие блоки. Путь от задания к программе можно пройти следующим образом а) понять смысл задания ; б) составить первоначальное представление о программе ; в) постепенно его уточнять,разбивая программу на всё бо- лее мелкие блоки. 4. Приступая к непосредственному написанию программы.зара - нее выделите под каждый блок достаточное количество строк.Перед каждым блоком в тексте программы желательно разместить коммента - рий,поясняющий назначение блока. Старайтесь использовать подпрограммы для организации блоков во всех случаях,когда это возможно.Используйте готовые подпрогра- ммы из других программ. 5. В тех случаях,когда в зависимости от выполнения тех или иных условий производится выбор ( то или иное преобразование вели- чин, то или иное сообщение на экране,переход на тот или иной блок), пользуйтесь смысловой аналогией между условным предложением и ус- ловным оператором. 6. Продумайте,какие величины необходимы для работы програм- мы и каждого блока.Каждой величине должна соответствовать перемен- ная.При первом появлении особо важных переменных в тексте програм- мы и при об"явлении массивов можно указать в комментариях их на - значение. Старайтесь давать переменным имена в соответствии с их смы- слом и назначением.Необходимо следить за тем,чтобы две разных пе- ременных не получили одно имя.
7. Использование массивов предполагает наличие в программе целой группы сходных по характеру или по способу обработки вели- чин.Однако часто в подобных случаях можно обойтись и без массивов. Если величины.поступающие из хранилища или с клавиатуры,можно об- рабатывать последовательно,и нет необходимости сохранять все ре- зультаты, можно использовать вместо массива одну переменную. Массив необходим в тех случаях,когда при преобразовании гру- ппы величин нужно сохранить все результаты.Массив обеспечивает и оперативный доступ к любой величине из группы. 8. Каждая переменная в программе должна получить исходное значение.Следует определить способ,которым это значение будет по- лучено (ввод с клавиатуры,считывание из хранилища данных,оператор присваивания). Каждая переменная служит либо для образования начального значения другой переменной,либо для преобразования её значения. Наконец переменная может предназначаться для вывода информации на экран и проявлять своё значение в одном из операторов символьного или графического отображения. При сложных преобразованиях величин следует вводить новые переменные для хранения промежуточных результатов.Такие цепочки вычислений более удобны,чем громоздкие формулы. 9. При вводе значений с клавиатуры следует различать ввод с ожиданием (INPUT , INPUTS') и ввод без ожидания (ШКЕУ^,ЭТ1СКС0), STRIG-C0)). При вводе с ожиданием нужно предупредить пользователя с по- мощью выдачи соответствующего сообщения на экран о том,что он дол- жен произвести ввод с клавиатуры.Желательно при этом указать на- звание и смысл величин,охарактеризовать тип данных и ориентиро - в очные границы значений. Хорошо написанная программа обеспечивает проверку правиль- ности введённых значений и отсеевает неправильные,чтобы избежать ошибок в программе.Оператор INPUT в этом отношении уступает опе- ратору INPUT$.Однако использование оператора INPUTS требует зна- чительно больших усилий при программировании. Ввод без ожидания,как правило,ппоизводится с помощью циклов типа "ПОКА" с выходом из цикла по соответствующему нажатию.
10. С помощью операторов ввода пользователь управляет про - граммой.Желательно,чтобы программа сопровождалась короткими и яс- ными инструкциями,позволяющими быстро научиться работе с этой про- граммой.Из всех способов управления нужно выбирать тот,который наиболее прост и удобен для пользователя. 11. Вывод информации на экран также должен быть рассчитан на удобство пользователя.Информация не должна исчезать с экрана слишком быстро.Лучше .чтобы смена символьной информации произво - дилась самим пользователем с помощью нажатия на клавиши. При долгих задержках в работе программы,например,если про - водится большой об"ём вычислений,следует сообщать о задержке поль- зователю, чтобы он не волновался.Все сообщения должны быть вежливы- ми. 12. В большинстве программ приходится-многократно повторять сходные последовательности действий.В качестве основных инструмен- тов используются циклы и подпрограмму.Побудительным мотивом для применения цикла служит обнаружение сходства мевду операциями,ко- торые нужно многократно проделать.Следующим шагом является анализ сходства и различия этих операций для того,чтобы уложить их в еди- ную схему. Необходимо выделить систему величин,значения которых разли- чают операции. Основными способами создания единой схемы повторяющегося действия являются а) замена конкретных значений переменными (для неболь - шого количества величин*); б) использование массивов (для большого количества ве - личин); в) выбор конкретного действия по условию,наложенному на некоторые величины с помощью условного.оператора или переключателя подпрограмм. Введение дополнительных переменных и массивов увеличивает гибкость схемы и нередко открывает неожиданные возможности её ис- пользования. 13. При отладке программ а) проверяйте правильность каждого блока в отдельности; б) проверяйте взаизосвязь между блоками; в)для контроля промежуточных значений величин и правиль- ности порядка исполнения команд вставляйте парами опе- раторы PRINT или PRINT* и TNPUT$ для задержки; г)используйте ручной просчёт.
-120- Классификация программ. Данная классификация проведена.,исходя из точки зрения на программу,как на средство организации диалога между пользовате- лем и компьютером.Основой классификации является функциональная схема программы,иллюстрирующая механизм диалога. Пользователь подаёт с клавиатуры команды,компьютер в ответ создаёт на экране систему образов(образом может считаться число , текст,неподвижный или движущийся графический об"ект) .Программную основу экранного образа будем называть компьютерным об"ектом. Компьютерный об"ект может представлять из себя набор данных, подпрограмму,совокупность того и другого. ФУНКЦИОНАЛЬНАЯ СХЕМА ПРОГРАММЫ. Тип организации диалога. 1 .Поучающие программы - активный компьютер,пассивный пользователь. 2 .Проблемные программы-активный пользователь.пассивный компьютер. 3 .Игровые программы - обоюдная активность. Блок управления. 1 .Специализированный блок управления - программа. 2 .Универсальный блок управления - система.В системах об"единяются различные типы программ. Инструментальный блок. 1 .Демонстрационные программы - слабый инструментальный блок. 2 .Инструментальные программы - развитый инструментальный блок. Тип компьютерных об"ектоь. Статичные либо динамические (при развитом моделирующем блоке).
Классификация по типу об"ектов и инструментальному блоку . Демонстрационные пр-мы Инструментальн.пр-мы Статичные об"екты Собственно демонстрационные Редакторы Динамич. об"екты Моделирующие Исследовательские Развёрнутая классификация. По типу \об"ектов По ти^\ пу диа-\ лога Демонстра- ционные Редакторы Моделирую- щие Исследова- тельские П Р о г р а м м ы Поучающие Электронные учебники, тренажёры , контролир. программы Программы, обучающие управлению Статичным исполнителем Программы, обучающие управлению динамическим исполнителем Программы, обучающие поведению в Сложной среде Проблемные КонСтпукто- РЫ Программы- инструменты (j том числе ВЫЧИСЛИТ .) Наблюдение за процессом Эксперимен- тальное изу- чение процес- са Игровые Статичные игры Игровые редакторы динамичес- кие игры Эвристичес- кие пр-мы IT с е и ы Об"единя- ет все типы диа- лога Информаци- онные сис- темы Инструмен- тальные системы Моделирую- щие системы Компьютер- ные миры Стандартным типом индивидуального задания являются тренажё- ры, контролирующие программы и простые программы-инструменты. Их важным достоинством следует признать возможность создания простой программы на любой тематической основе. Широко могут быть использованы программы,связанные со ста- тичными играми и исполнителями.Основной проблемой является пра - вильный выбор игры или исполнителя.В данном случае выбор более в ограничен,чем предыдущих типах программ. Хорошим типом индивидуального задания являются моделирую - щие программы.Они предполагают не только умение программировать, но и свободную ориентацию в моделируемых процессах.
-122- Коитрольные работы, 1. Работа по теме: Клавиатура и работа в прямом диалоге. Две задачи а") по типу задания 2.8; б) по типу заданий 3.6 или 3.12. дополнительные вопросы а) исправление ошибок набора наложение,удаление и вставка символов; б) изменение значения функциональных клавиш. 2. Работа по теме: Понятие программы и графические операторы. Одна задача по типу задания 8.1.а-д. Дополнительные вопросы а) особенности работы в графическом режиме (включение графики,задержка картинки,принудительное прерывание программы); б) формат графических операторов; в) исправление программы (удаление,вставка,изменение программной строки). 3. Работа по теме: Оператор цикла и интуитивное представление о переменной. Две задачи а) по типу 10.1 или 10.2; б) по типу ll.l.a-в. Дополнительные вопросы а) структура цикла (заголовок,тело,окончание); б) характер изменения параметра цикла. 4. Работа по теме: Функциональная зависимость между значениями переменных.
-123- Одна задача по типу заданий 12.3, 12.4, 14.1, 14.3. Дополнительные вопросы перемещение центра координат и изменение масштаба. 5. Работа по теме: Уточнение понятия переменной.Операторы ввода, присваивания. Две задачи а) по типу заданий 16.1, 16.3, 16.5, 17.1, 17.4; б) по типу заданий 17.7, 17.8, 17.9. Дополнительные вопросы а) различные ситуации при работе с оператором ввода и выход из бтих ситуаций; б) хранение данных в программе; s') понятие переменной. 6. Работа по теме: Условный оператор. Две задачи а) по типу заданий 19.2, 19.4, 19.10, 19.12, 21.6; б) по типу заданий 19.12, 20.4, 20.8. Дополнительные вопросы а) различные формы условного оператора; б) сложные условия. 7. Работа по теме: Массивы и строковые переменные. Две задачи а) по типу заданий 22.5, 22.7, 22.8, 22.12; б) по типу заданий 23.3, 23.4, 24.9. 8. Работа по теме: Подпрограммы,спрайты,случайные числа. Две задачи а) по типу заданий 27.1 или 27.8; б) по типу заданий 25.2, 25.6, 26.1. Завершающим этапом освоения персонального компьютера явля- ется выполнение индивидуального задания.
□ТВЕТЫ М РЕШЕНИЯ. 1 . . Экран содержит 23 строки СО - 22) по 39 символов в каж- дой строке (0 - 38). 1 _е. =1 > 7 нажатий:=& «Ф => => t=> <?=> |-<<=аж<э.т-к-11?1: "О’ в > S нажатий |М ОМЕ { 1.12» КАЮТА < «> |=>с= сэра .-Iai 1 —г-i All: ТРАНСФОРМАТОР (курсор - н-I «а 1 — Г-, т > : Э |=>.аз> IDE 1—1. 3 раза. C=f> .|DE~l] |DEL-| с=£ IDE 1-1 c=J> А» M ТРАССИРОВКА (курсор »—iai " =^^=== 1 “Г > : П с$> ОГР |I 1MS| А*ММ <=»=> =&=> |DEl| сф НИЕ 1.13. При нажатии на клавишу ввода курсор переходит в начало следующей строки.Если курсор находится в нижней строке экрана, то он в ней и остается,но эта строка очищается,а все остальные строки ькрана сдвигаются на одну вверх.Нулевая строка исчезает 1 - 1 * - При нажатии на "пробел" символ,на котором стоял курсор исчезает (заменяется на пробел) ,но хвост строки не сдвигается влево,как при нажатии на клавишу-HZL. Метод XI <=> Л <=* 1 Ц -94 П О П СЭ Л О Г -I - I I
1 Й»л 1 Й>Й9 1 0Л50 1 0''75 1 1 «Э-'-S -7 1 Ot^AtZI 1 (Z>'~<b 1 cosz»r-F 1 1 E-*-se» ovei—F 1 over -F 1 1 E-*- = 7’ 1 Е-»-гьсг> 1 E-*-<£> 1 ow ow ow 2 _ 3’ - Команда a a i-ч ii r-i а «а т- 2 строки: print (123.746698+85.231415)X18. 263/(. 1 V? s+2.39-1.76+5.si~.зз> | край экрана KEY 1,"БЫСТРЫЙ НРБОР" В подсказку выдается только слово БЫСТРЫЙ. KEY 1."print " 2 . s - При вычислении выражения 2Л1/2 сначала производится возведение в степень ; 2Л1 ,а затем результат делится на 2. Конечный результат равен I. А 1 2 5-Л- < 1 / 2 1 tsi 2 С 1 2-'--2-»-!5-'-2 1 ’ < 1/2 1 При ВЫЧИСЛвНИИ происходит потеря точности ( так же как и в остальных случаях) жэ 1 2 < 2--- < 1 / 3) +3Л < 1 /4) 1 < 1 / 2 1 г~ > 2 625'---. 2S д > ~7 ~- <. X /S > / <!-+-<£> Л < 1/2 1 1+4 ®* у ? (< (2Л(1/2>+2)Л(1/21+2) Л( 1/2)+2)Л (1/2) & МЬ+Й"'---------- V2«ii • v5r 2 . <Ь - 1Е5 — записи числа. 1(3-'-5 _ арифметическое выражение,которое еще нужно вы- числить. 2. ~7 . Некоторые команд; в> print satqr— < 2S3S > Л > print t an < 3 . 1 +4 / +4 > n> print ± rn t< — - 111 A1 print sin<l)+cos<2)+tan<3> E>> print exp < si n < — 2>1Э*:АС|г-<3> жО print sqr (abs < si n < 3. 14/6) -cos < 3. 14/5) '2) ) s print l/(tan<l>+lZt аг»<1>> 2-2. A > print log < ₽:< p < 5 ) ) ~| УчТИТв ПОТе- pr i nt ex p (log <51 Ijpio ТОЧНОСТИ к» 1 pir i nt ex p> < 1 > к»> Нужно использовать формулы:
2.10. л > ? st Сл-tn < 1 > > si"? 4Mstn < 1 > 2 - 1 1 - Учитывая, что 1° = 6Т/ 180 p> л ди л г-ч л > 3 si п < 1 1 М3 -14/1 S0 > + s 1 п < 23ЭЕЗ .14/1 8(3 > е= 1 •? 18(3/3- 14 3-13- Задержка происходит из-за того,что некоторое время за- трачивается на вычисление синусов.Чтобы определить время вычис- ления функции SDld),используйте команду 3 .sii-»<l>-B - - - - _ _-tsin<l>, ------------------------------------ 25 раз Для быстрого набора используйте клавишу F2,придав ей значение " SIH60+" . На исполнение команды уйдет около 2 секунд,а значит функция SIN60 вычисляется примерно за 0,06 секунды. 3-13- л > 3 1 334— 1 nt < 1 334/ 1 -7 У М 1 / в > Функция INT отрезает дробную часть числа.Нам нуж- но обрезать число не по запятой,а так чтобы остались 3 знака после запятой.Для этого перенесем запятую в то место,по которо- му предстоит резать,обрежем число и вернем запятую на старое ме- сто. перенос точки умножением на 1000 .944^95694631475 %________INT возврат точки делением на 1000 print int(со»<1/3>Ж1000>/100® Чтобы команда не просто отрезала хвост числа, а округляла,нужно к аргументу функции INT добавить 0,5 (почему?} рг 1 nt 1 n t < <=<=>=•» < 1 /3 У М 1 (300 + _ 5 у / 1 <3(3(3 3-14- Функция равна I при X = 0,а для всех остальных значе- ний аргумента функция равна 0. подумрий аомд Используя строку print 5qr < 2)+Sqr (3 ) "4M*tn < 1 ) получим,что С|2 + 43)-'й'«0,005. Отклонение площади таким образом составляет 100- % 100- ~ ^ц-%,
Построение показано на чертеже. Точки строятся в следую- щем порядке: O,A,B,CJ>,E. / Е з - 1 - а) после выполнения команды в левом верхнем углу нахо- дится сообщение 0k ; б) команда LOCATE 15,10 установит курсор в 15-ю позицию 10-й строки,но глаз не успеет этого зафиксировать.После выполне- ния команды в П-й строке будет выдано сообщение 0k,а курсор перейдет в начало следующей строки; в) после нажатия на клавишу ввода для исполнения коман- ды РЕ1МТ"Печать текста",курсор перейдет в начало следующей за командой строки.В этой строке и будет напечатан текст. 3.2 . с 1 в : 1 ocat.е 1 7, 1 1 : pr-i nt " СВЕТА " '-я позиция (отсчет с нуля) ' Л- (39-5):2= 5 символов 17 17 позиций____________________позиций з . -а . а) после установки курсора в 15-ю позицию 8-й строки производится очистка экрана.Курсор при этом перейдет в левый верхний угол экрана.Там и будет напечатано слово ПРОМАХ; б) так как последней командой в строке является CLS , экран очищается; в) после выполнения очистки экрана и печати текста в ле- вом верхнем углу курсор снова возвращается в этот угол (LOCATE 0,0) Там выдается сообщение 0k,которое портит первые две буквы текс- та. Во всех строках следует придерживаться следующего поряд- ка команд: CLS,LOCATE,PRINT.
3 . 5- a) clssprint (sqr(5)+l)/2 в) clsslocate ll,llsprint (sqr(5)+l)/2 3 - <b - a)clsslocate3,4:print "РАЗ"s1ocatelS,30:print “ДВА" в) cls:print "PA3"sprint "flBA"sprint "ТРИ" 3 - T - clsslocate 17,llsprint "СЛОВО":locate 0,0 3_e. cis: locatell, 10:print "СУММА КВАДРАТОВ": 1 ocatel 1, 12: print 10’''2+15л2+20л2 3- *-p - cl s: 1 ocatelS, 10: pri nt "XXXXXXXX" : locatelS, 11: print "ХБЕЙСИКХ"s1ocatelS,12:print "ХХХХХХХХ" 3. 1 ei - a) clssprint "E":print "M":print "T":1ocate,15 s) cis:locatel9,10:print "Б":1ocatel9:print "И":locatel?: print "T" 3- 11- clssprint "Б":1ocatel:print "A":locate2: print "Й": 1ocate3sprint "T" 3-12- cls:locate,11:print "СИНУС ОДНОГО РАДИАНА-": locate21,11: print sin(i) 3-13- cls:locate(39-15)/2,(23-1)/2:print "КОМПЬЮТЕРИЗАЦИЯ" з _ 1-a - Оператор LOCATE Х,У действует при -I< X < 255 неравенства строгие -КУС255 Его действие можно описать следующим образом locate mim<x,3B>,miri<y,22> 3 - 1 <Ь - print 3+7, 3-7, ЗЖ7.3/7,3^7 Когда печатаются арифметические выражения,разделенные точкой с запятой,между ними автоматически вставляются по одному пробелу. Знак + перед числом также заменяется на пробел. 3.17. a) print "СУММА-";2377.64+498. 01 в) print "косинус-";сов(3.14/6) в) print "Реэультат раве+ь" ;sqr (2+sqr (2+sqr (3>) 3.1В. print "СР. АР. (75+27)/2, "СР.ГМ. ";sqr (75*27) 3- 1 ЯР - cis: locate, 10iprint "X";: locate3tlipr int "X" 3- 20- clssprint "ПЕЧАТЬ"sprint sprint “MEPE3"s print sprint "СТРОКУ" 3-21- Экранные строки сдвинутся вверх.
3.22. Так как опущен первый операнд,который должен печа - таться в начале строки,слово ПРОБА будет напечатано в середине строки. 3 - 23. a) locate, 5: print "........": 1 ocate0,0 б) locate,5:print "|UU1 .... UL;'i locate 0,0 39 пробелов Отсчитывать 39 пробелов нет необходимости,достаточно расположил кавычки одну под другой следующим образом. 1 ос ate, 5 : р г i n t • I _ _ ____ ” а 1 о с * Ъ а , О Переход от одной кавычки к другой осуществляется с помощью при- жатого ПРОВЕНА. ПОД^ГИАй ДОМА, Напечатаем слово БЕЙСИК в нижней строке экрана,а затем про- изводя в нижней строке печать оператором PRINT без операндов , поднимем слово БЕЙСИК в верхнюю часть экрана. Для подъема в командной строке нужно использовать около 20 операторов PRINT.Можно ускорить набор,дав клавише F2 значение ":PRINT" . cis: locate 16,22:print "БЕЙСИК"': print ...iprint, 20 раз 4.2. Строки в программе исполняются по порядку возраста- ния номеров. 4-4- Чтобы убедиться в том,что программа удалена из памя- ти,выполните команду LIST.Если программа уничтожена,то сразу после слова LIST на экран будет выдано сообщение Ок. Для восстановления в памяти программы,текст которой нахо- дится на экране,достаточно установить курсор в верхнюю програм- ную строку и раз за разом нажимать на клавишу ввода.Программная строка,в которой находится курсор в момент нажатия на клавишу ввода,записываетея в память. 4.5- 1 CLS 2 LOCATE 15,10 3 PRINT "сумма=" ; 2-ч1+2-''2+2Л4+2"-8
а . <fe>- Строки нужно нумеровать с некоторым шагом,например 3,6,9,... Для вставки новой строки между двумя другими достато- чно набрать её с промежуточным номером.Она встанет на нужное место,так как строки автоматически располагаются по порядку возрастания номеров. a . ок. 1 № cz X s® 20 1 ОС C=K t 1 Э .. 1 J'S 3-0 r-’ X n "t sq r ( 5 + <= .qr < 3 > > Заме?! -<«a P> Г- x nt 1 / s i n ( 3 ) a . e _ «а > 1 £1 c. 1 1 oc at -« 55 30 P* r~ X n t •• МУ " 1 ocat S я S2 (ZS 50 r~ X n t •• KOMAR •• •=? > достаточно удалить строки с номерами 20,40,60: 20 40 60 :э «а д «а 1~< и 1 <25 er. 3. <=s 20 t- 1 n tr * >: 25 <25 1 oc 1 40 F=>t- x ГИ t S<2» 1 oc <a t €= «Ы2* |Z) r~ X n -t, ' Л Повторяющиеся комбинации строк сходного вида locate У print " 3HS "J Набрав строки с номерами 10,20,30,40 ,снова курсором подними- тесь в 30-ю строку и измените её номер на 50,а операнд в коман- де LOCATE - на 2.Нажмите клавишу ввода.ЗО-я строка так и оста- нется в памяти,а 50-я будет в память введена.Курсор перейдёт в 40-ю строку.Измените её номер на 60 и нажмите на клавишу ввода. Затем снова поднимитесь курсором в строку 50 и измените её но- мер на 70,а операнд в LOCATE - на 3.Таким способом вы сможете быстро набрать такую сравнительно длинную программу.Правильность набора проверьте с помощью команды LIST. а . 10. 1 <г> cz 1 loc:<=ate?,S 3 print , =» i r > f 0 > *1 (3 r 1 m -t. _ 2 , i n < . 2 > Строки 50,60,70 аналогичны строкам 30 и 40.
Чтобы перейти к функции У =V5f достаточно заменить в строках 30-70 имя функции $1Пна sq. г . Для печати округлённых значений функции можно воспользовать- ся способом описанным в задании 2.13.6. подумай дома. Для задержки печати можно использовать результат задания 2.12. Будем создавать задержку,вычисляя сумму синусов.Однако перед нами встаёт следующая проблема: арифмети- ческие выражения вычисляются с помощью команды PRINT,и результат обязательно печатается на экране.Постороннее число испортит вид экрана. Обойти эту трудность можно следующим образом: в команде LOCATE в качестве операндов можно использовать арифметические выражения.Команда LOCATE sin(1)+sin(1)+sin(1)„ sin Ш +sin (1)+sin(1) даст нам задержку,не меняя вида экрана.Однако она уводит курсор из нужной строки экрана,поэтому в программе 4.9. необходимо до- бавить второй операнд команде LOCATE в строках 30,50,70,...190: 30 1 OCat® 1.1 5 £* locate 2 j, 2 и т. д. Окончательный вид программы: 10 CLS 20 PRINT "X" 25 LOCATE SIN(1)+SIN(1)+SIN(1>,SIN(1)+SIN<1>+SIN<1) 30 LOCATE 1,1 40 PRINT 185 LOCATE SIN(1)+SIN(1>+SIN(1),SIN(1)+SIN(1)+SIN(1) 190 LOCATE 9,9 200 PRINT "X" Для того чтобы звёздочка двигалась нужно,перед тем как напе- чатать новое её положение,стереть старое.Этого можно добиться , вставив в программу строки 26,46,66,... 186 .содержащие оператор CLS : 26 CLS и т.д.Разберитесь,почему очистка экрана стоит после паузы. s .. г ... 1 с |_ s 2TZ* F”’ГI FIT' " | TV Г FIT *'L -П F’-F< Т FIT " Смещение звездочки в строке происходит за сч^т печати пробелов.
-1.32- s. 2- В программе периодически будут выполняться строки 20,30, 40 и печататься звёздочки. Когда будет достигнута нижняя строка экрана,очередная звёздочка будет печататься в нижней строке.Экран начнёт сдвигаться вверх. "Снежинки" полетят вверх.Программа не может закончиться. s. - Прерывание не оказывает влияния на текст программы в памяти ЭВМ. s- -а - После того как на чистом экране будет напечатано слово "Волчок".программа будет "крутиться" на 30-й строке,пока вы её не прервёте. 1 С= 1 . «=> р> Г" X г "I р> Г- X г Ti t -4 рэ Г- X г nt tit?* P^i । nt рг~ х г n t pr i । n t £3lZ* pr~ir n t рэ г- X I nt 1 Q СП" t. o " jot " КЗ " • КЗ • 11 КЗ КЗ КЗ КЗ КЗ 11 кз 1 • •• кз «• КЗ ” 11 КЗ КЗ КЗ КЗ КЗ "" Введите строки 10,20,50,60 ,а остальные получите из них,меняя номера. в. Сразу введём в память начальную и конечную строки про- граммы А f 2 1 goto Номер последней строки выбран большим,чтобы все остальные стро- ки программы заведомо вставились между 10-й и IOOO-й строками. Каков номер у строки - не имеет значения,лишь бы она стояла на нужном месте в программе. Затем сделаем заготовку из одинаковых строк: Кавычки не далее 37-й позиции во 0 рэ г 3 (ZS р> г~ х рэ г- х 7Z йЗрэ г- х ЕЭШрэ г- х Поле шириной в 23 пробела,на котором избежании склейки (5м.приложение 2)
Теперь,перемещаясь стрелками зим символами слово ЖР : в поле между кавычками,изобра- 20рэ 1— х nt " Зй»рэ1— i nt " ЯНЗрэ I— х nt ЕЗГЭрэ I— i nt " 6>0pr~i nt “ y'fZfpr- 1 n t " ея»р>t— i nt " Для быстрого рисования линий символами можно чередовать нажатие на символ и стрелки,управляющие курсором.Наиболее просто рису- ется горизонтальная линияпоследовательные нажатия на клавишу с символом.Учитывая,что после появления символа на экране,кур- сор переходит в позицию правее.укажем какие клавиши нужно чере- довать для проведения других линий. НАПРАВЛЕНИЕ ОЧЕРЁДНОСТЬ НАЖАТИЙ Вертикаль вниз Символ О О- Вертикаль вверх Символ Диагональ вниз Символ Диагональ вверх Символ О Если нужно убрать с поля символ,поставленный по ошибке,ну- жно удалять его наложением пробела.Использовать клавиши INS и DEL не нужно,так как они исказят поле. Хотя поле между кавычками заполнено,полученные программные строки находятся на экране,но не введены в память fa памяти на- ходятся строки-заготовки).Для ввода строк в память поднимитесь в 20-ю строку и,нажимая на клавишу ввода,введите все эти стро- ки в память. Остаётся добавить строку ЯР О р> г~ i г 1 'Ь. s рэ I— i гп = prints print:: ри i ri -t. чтобы отделить одно слово ЖР от другого. Окончательный вид программы: 1 0 <31 о t о .2 &
^http://www.gr8bit.ruj з _ v _ В этой программе нет необходимости использовать оператор GOTO. Сначала напишем часть программы,рисующую таблицу (аналогич- но предыдущему заданию) ie> CI..S 20 LOCATE,6 30 RF^ I NT " »»»»»»»»»»»»»»»»»»»»*».»»» " 40 PRINT"» X »" 50 PRINT"» АРГУМЕНТ » ЗН.ФУНКЦИИ »" 60 PRINT”» »' *" 70 PRINT"»»»»»»»»»»»»»»»»»»»»»»»»»" 80 PRINT"» » »." 90 PRINT"» » »" 100PRINT"» » »" 110PRI NT " »»»»»»»»»»»»»»»»»»»»»»»»» “ Затем добавим строки,которые позволит впечатать аргумент и зна- чение функции. 120 LOCATE 3,12 130 FRINT"0. 314156 » INI <COS< .314156) »10-'5>/10 5 140 LOCATE.20 He исключено,что вы не сможете сразу написать строку 13О.шсли первоначальный вариант не даёт нужного результата,можно внести исправления в эту строку и снова запустить программу.Так после- довательно корректируя строку,вы сумеете добиться точной впе- чатки чисел в таблицу. подумйй дома. Пример подобной программы: 10 CL.S 15 PRINT " 1 и 20 PRINT " I 25 PRINT " III M 30 PRINT " Hill 4 35 PRINT “ 1 1 II 40 PRINT " 1 n i 11 45 PRINT " 1 p 1 11 Использованы 50 PRINT " 1 0 I 11 55 PRINT " I T 1 к символы : 60 PRINT " I 0 I и 65 PRINT " 1 H 1 н GRAPH I) ; 70 PRINT " 1 I и 75 PRINT " 1 1 и GRAPH J ; 80 PRINT " lllllll >1 85 PRINT " 1 111 ID GRAPH J 90 95 PRINT " PRINT " 111 111 111 через SHIFT 96 PRINT " и (см.приложение I) 97 PRINT " - ! 10 >1 PRINT > PRINT :PRINT iPRINT SPRINT 1.0 '5 PRINT : PRINT :PRINT nPRINT s PRINT 11.0 PHI NT sPFUNT :PR INI :PRINT :PR IN Г 1.1 =5 PRINT SPRINT : FORINT SPRINT s PRINT 120 GOTO 15
I http://www.gr8bit.ru । 1--------------------1 e > i - Подсчёт проведите в режиме калькулятора. IS > 1 40 SfZ* sZf scr'eon 2? p s e h < 127, < 128, p s e t C 12 7, pset < 128., goto *95 > 95 > *9£> > *9<Ь > -Ч- 1 & ^cr-een 2 1 x n cs* < <5* я G* > — < 235 , 1 «9<Ь > 30 Lin о < (3 , 19 1)- (255,0) -qn# goto -4 (3 *4- - 1 (3 s cz Г"“ e? e? n 2 2(3 1 X ne ( КЗ, *9<5> 1 — < 1 28 , 1 (3 > 3(3 1 X n e? < i 2 e , i(3> — < 24S , *9<Ь > 4(3 1 X ne <24S, — < 128, 182 > 50 1 X n<=<12e, 102) -< 10,96K <b(3 <□ СЭ Ь. сэ <££»££$ Об удобном формате.используемом для проведения ломаных см. £> . 5 - <а > приложение 5. 1 (3 с~ о е? е? п 2 2(3 1 i ne < 1 0 . 1 » ) - < 1 20 , 90 ) .. „to 30 1 ine < 10. КЗ) - ( 1 2(3 „ <9(3 > 40 1 i ne? < 1 0.90) - ( 1 2(3 _ 1 (3 > 50 1 i n<= С 1 2(3 , *9(3 > - < 1 75 , 1 3(3 >, , to 4 6> 13 goto <£> (3 «э > Наиболее экономный вариант этой программы использует номера цветов (фона - 4 и символов -15 ). 10 screen 52 2(3 1 in® (50, 40) — < 2(3(3 „ 150) , 15, Ь-f 3(3 1 i ne <60,50) - < 190, 140) „ 4 , to 4 4 (3 q сэ t <=> 4 (3 *s> > Прежде всего аккуратно нарисуйте изображение на клет- чатой бумаге и проставьте координаты вершин (так же действуйте и в случае Г).Только после этого приступайте к написанию прог- раммы. (Обратите внимание,что в случае Г нет прямоугольников со сторонами параллельными краям экрана). 10 SCREEN С 20 LINE (50.50) - ( 1.00, 100) , , В 30 LINE(75,25)-(125,75),, В 40 LINE(50,50)-(75,25) 50 LINE(100,50)-(125,25) 60 LINE(50.100)-(75,75) 70 LI NE (100. 100) • (125.75) B0 GOTO B0
-1.36- ПОДУМАЙ ДОМА Очевидно.что одна команда понадобит- ся для построения центрального окрашенного квадрата.Нарисовать сетку одной или двумя командами LINE нельзя,так как сетка состоит из 9 клеток,а пересечением двух пря - моугольников можно получить не более 5 клеток.(До - кажите это).Тремя командами LINE можно получить ну- жную сетку.Один из способов даётся на чертеже. У=35 10 20 30 40 SCREEN 2 LINE(70,35) LINE (1.10,35 LINE(70,75) LINE(110,75 GOTO 60 75 115 х= 70 L=_____,155 IIO 150 I» 10 20 30 40 SCREEN 2 LINE(40,40)-(100, 100),, В CIRCLE(70,70),30 CIRCLE(70,55),15 PSET(70,5§) ’ GOfO 60' st в > в в 60 ' - 2 - Если геометр.фигура не вмещается в границы экрана, то графический оператор строит ту часть фигуры,которая попадает в экран.Ошибки не происходит.Подробнее см. приложение 5. 7 . .л _ Программа строит все четыре дуги 10 SCREEN 2 20 CIRCLE(50.50),30,,0.3.14 30 CIRCLE(50,150),30,,3.14,0 40 CIRCLE(150,50) ,30,,3.14X3/2,3.14/2 50 CIRCLE(150,150),30,,3.14/2,3X3.14/2 60 GOTO 60 _ -4- _ Выделите концы дуг,центры соответствующих окружностей, задайте координаты точек 10 SCREEN 2 20 CIRCLE(105,95),50, ,3. 14/2,3.14 30 CIRCLE(5,95).50,,3.14X3/2,0 40 CIRCLE(255,95),50, ,3. 14/2,3.14 50 CIRCLE(155,95).50,,3.14X3/2.0 60 LINE(105,45)-(255,45) 70 LINE(5,145)-(155.145) 80 GOTO 60 X=5 105 155 255 . S - Л) 10 SCREEN 2 20 CIRCLE!120,90),75,,,,.5 30 CIRCLE(120.90).75,,.,2 40 CIRCLE(120,90),75 50 GOTO 50
б,в)На роль радиуса нужно взять половину большей стороны прямо- угольника.Коэффициент сжатия равен отношению длин вертикальной и горизонтальной сторон прямоугольника. Программа рисует оба эллипса 10 screen 2 20 1 i ne (10, 10) - (40, 30) , , b 30 circlе(25,20),15,,,,2/3 40 1 i ne (100, 10) - (140, 80) , , b 50 circle(120,45),35,,,,7/4 60 goto 60 ~y _ - 10 SCREEN 2 20 CIRCLE<128,96),60,,3.14,0 30 СIRCLE(128,96),60,,3.14,0,.5 40 CIRCLE(128,96),30,,3.14/2,3.14X3/2 50 CIRCLE(128,96),30,,3.14/2,3.14X3/2,2 60 LINE(120,126)-(120,50) 70 LI NE(120,50)-(140,55) 80 LINE(120.60)-(140.55) 90 CIRCLE(160,65),10,,3X3.14/2,3.14/2 100 CIRCLE(160,65),10,,3X3.14/2,3. 14/2,2 1000 GOTO 1000 дуга окружности дуга эллипса -у _ -у _ а,б) Для закраски внутренней области нужно указать в операторе PAINT координаты точки из этой области,например цент- ра окружности.Для закраски внешней области нужно указать коорди- наты точки,лежащей вне окружности,например 10 screen 2 20 ci rcl е (126, 96) ,50 30 paint(0,0) 40 goto 40 в) Программа 10 screen 2 20 1ine(128,0)-(128,191) 30 paint(10,10) 40 goto 40 ~У - S3 - позволяет сделать вывод,что гра- ница области может дополняться соответсвующей частью границы эк- 10 screen 2 20 circle (120.90),80 30 с1 г с 1е(120,901,60 40 pai nt(190,90) 50 goto 50 у -'у - Команда LINE рисует закрашенный прямоугольник быстрее, чем это можно было бы сделать е помощью команды PAINT.
10 SCREEN 2 20 LINEC10, 10)—(110. 180) , ,BF 30 LI NE (130, 10 > - (230, 180) , , В 40 PAINT(131,11) 50 GOTO 50 v. 10. Для того,чтобы заставить рожицу моргать,будем попере- менно,то опускать веко (закрашивать глаз цветом 15),то поднимать (закрашивать глаз цветом 4).Оператор GOTO позволяет повторять это многократно. 10 SCREEN 2 20 CIRCLE(128,96),80 30 CIRCLE (88,’90) ,20 40 CIRCLE(168,90),20 50 CIRCLE(88,90),10 60 CIRCLE(168,90),10 70 CIRCLE(128,120),15 80 CIRCLE(128,136),20, 90 CIRCLE(128,136),20, 100 PAINT(128,150) 110 PAINT(168,81) 120 PAINT(168,99),1 130 CIRCLE(168,90),10 140 PAINT(88,81) 150 PAINT(88,99),I 160 CIRCLE(88,90),10 14, 0 14, 0, Аналогично мигает и 2-й глаз При закраске цветом 4 рель границы играет кольцо фонового цвета 170 GOTO 110 ПОДУМАЙ ДОМЙ. Основная сложность задачи состоит в том,что вершины звезды лежат на окружности через определён- ные углы.Определить их координаты можно только с помощью вычислений. Вычислим координаты X и У точ- ки,лежащей на окружности,по коорди- натам центра Х0,У0 .радиусу R и углуЛ . Х.У Вспомнив определение синуса и косинуса.можно записать ра- енства v v . у„_у С03о1=^-^ , Преобразуя,получаем нужные формулы Г X = Хо + R-COSct U = Уо - R-SirU В качестве примера на применение этой формулы проведём ра- диус окружности под углом 45°.
Учитывая.что 45° равно 1174 радиан,получаем / 10 SCREEN 2 ( / \ 20 CIRCLE(120,90) , 80 I Z ) 30 LINE(120,90)- (120+80MCOS(3. 14/4),90-80XSIN(3. 14/4)) \ / 40 GOTO 40 Перейдём непосредственно к построению звезды.На рисунке указаны значения углов,задающих её вершины и последовательность соединения вершин. Теперь уже можно написать про- грамму построения звезды,ис - пользуя формулы и углы,задаю- щие вершины.При этом коорди - наты в команде LINE будут за- писаны в виде весьма сложных арифметических выражений,что сделает программу громоздкой и не наглядной. Чтобы упростить программу,вычислим координаты вершин в ре- жиме калькулятора.Сначала вычислим координаты X всех вершин. print 120+80>:cos (3. 14159/2+0*4X3.14159/5) Строку используем 5 раз.меняя в ней одну цифру. в 1 2 3 V замена 120.00010614359 72.97695654977 196.08465906315 43.915668939646 167.02218472858 print 90-60'Xsin (3. 14159/2+0X4X3. 14159/5) Аналогичные вычисления проделаем для У. 10. 00000000007 154.72119733656 65.27906443429 65.278054949122 154.72182123018 Полученные значения округлим до целых.Мы готовы к рисованию зве- зды.Сначала установим исходную точку.а затем командой LINE в формате LINS-(X,y) построим лучи (см.приложение 5). 10 SCREEN 2 20 CIRCLE(120.90),80 30 PSET (120. 10) 40 LINE-(73,155) 50 LINE-(196,65) 60 LINE-(44,65) 70 LINE-(167,155) 80 LINE-(120.10) Остаётся добавить строки,с помощью которых мы закрасим звезду.
-1/0- Звезда состоит из 6 областей (одного пятиугольника и пяти треугольников).поэтому её можно закрасить 6-ю командами PAINT. Однако мы закрасим звезду тремя командами.Идея состоит в том,что рисуется два прямоугольника цветом фона.Они прорывают границы пятиугольника и превращают внутренность звезды в одну область. Размеры прямоугольников можно подобрать следующим образом.Сначала нарисуем их цветом 15.Если эти прямоугольники выхо- дят за границы звезды или не покрывают границы внутреннего пятиугольника,под- правим соответствующие координаты в ко- манде LINE,рисующей прямоугольник.Когда прямоугольники приобрели нужные размеры, заменим цвет 15 на 4.Снова запустим про- грамму. Не исключено,что это ещё не окон- чательный'"вйд'прямоугольников .Из-за некоторых особенностей графи- ки компьютера Ямаха прямоугольник может,не касаясь границы звез- ды,всё же нарушать её.Если это произойдет,нужно сузить прямоуго- льник, тем самым удалив его от лучей звезды. Оставшаяся часть программы; 90 LINE (1 \0, 65)-(<30, 1 15) ,4, BF 100 LINE (90, 85)-1150, 90), 4, SF 110 PAINT (120,90) 120 GOTO 120 в . i _ Для большинства изображений ограничимся только отдель- ными пояснениями. а) б) Дырочка (См.текст; ХА. Для изображения б (также впрочем как и / 1 \ для а) возможен следующий недостаток;две дуги могут не сомкнуться концами из-за того,что при задании дуги использетСя приближённое значение числа И. На чертеже указано место,в котором непрерывность границы на- рушена, если эта граница строится следующей программой.
10 SCREEN 2 20 CIRCLE (190,70),60,,3*3. 14/2,3.14 30 CIRCLE (70,70),60,,2*3.14,3*3.14/2 40 CIRCLE (190,190),60,,3. 14/2,3. 14 50 CIRCLE (70,190),60,,2*3.14,3.14/2 60 PAINT (192,72) 90 GOTO 90 В процессе закраски сердце будет закрашено,после чего краска про- никнет в дырочку и зальет весь экран.Чтобы устранить дырочку,нуж- но удлиннить дугу.При этом строка 50 примет вид 50 CIRCLE (70,190),60,,2*3.14,3.14/2+.1 д) Сначала нужно нарисовать и закрасить параллелограмм,а затем достроить октаэдр. л) Построение этого изображения требует большого количества опе- раторов. Поэтому особое значение имеет план быстрого ввода програ- ммы в память. Разобьем программу на части по виду архитектурных деталей.На- брав группу операторов,строящих первую из аналогичных деталей,бу- дем использовать эти строки в качестве основы для построения ос- тальных деталей.Для этого вызовем программные строки на экран и получим из них новые,заменив номера строк и координаты. 10 SCREEN 2 20 LINE(10,190)-(245,105),,В 30 LINE(15,105)-(240,100),,В 40 LINE(20,100)-(235,175),,В . Ступени Определенную сложность представляет изображение второго тре- угольника крыши,так чтобы его стороны были параллельны сторонам первого. Х=128 ---------------у=0 50 LI NE (120, 0) - (240, 50) --------------У=5 60 LINE (120.0) - (15,50) // 70 LINE (15,50)-(240,50) Х=15 // 00 LINE(128,5)-(220,45) I /Л/ у 90 LINE(128,5)-(35,45) 100 LINE (35, 45)-(220, 45) ---VTq----------------------Х-Лй 110 PAINT(120,6)
ка рисунке указаны значения координат,выбранные Неизвестная координата X вычисляется с учетом подобия ков из соотношения прЬизвольно, треугольни- Точное значение X равно 37.6 ,в программе вместо него использует- ся "круглое" число Зб.Это практически не влияет на результат. 120 CIRCLE(25,53),3,,3.14/2,0 130 CIRCLE(35,53),3,,3.14,3.14/2 140 LINE(25,53)-(35.53) 150 PAINT(23,53) 160 CIRCLE(74,53)«3,.3.14/2,0 170 CIRCLE(85,53),3,,3.14,3.14/2 1S0 LINE(74,53)-(84,53) 190 PAINT(72,53) 200 CIRCLE(123,53).3.,3.14/2.0 210 CIRCLE(133.53),3,,3.14,3.14/2 220 LINE(123,53)-(133.53) 230 PAINT(121,53) 240 CIRCLE(172,53),3.,3.14/2.0 250 CIRCLE(182,53),3.,3. 14,3.14/2 260 LINE(172,53)-(182.53) 770 PAINT(170.53) 280 CIRCLE(220,53),3..3. 14/2,0 290 CIRCLE(230,53).3,,3.14,3.14/2 300 LINE(220.53)-(230.53) 310 PAINT(218,53) 320 LINE(25,175)-(35,53),,В 330 LINEI74.175>-(84.53), .В 340 LINE(123,175)-(133,53). , В 350 LINE(172,175) — (182,53),, 8 360 LINE(220,175)-(230,53), ,В 1000 GOTO 1000 Первая капитель Построение остальных производится заменой номеров строк и зна- чения координаты X . Колонны м) Определенную сложность представляет задача изображения частей сферы таким образом,чтобы очерчивающие их дуги оканчива - лись на верхней стороне большого прямоугольника. 10 BCREEN 2 20 LINE (0, 150)--(255, 191) , ,В 30 CIRCLE(70,170),40 40 CIRCLE(190,130),40, , 3. 14,0 50 I. INE(t50,130>-(230, 130) 60 LINE(10,151)-(245,190),1,BF 1000 GOTO 1000 Фрагмент программы показывает,как этого добиться.Сначала дуги про- ведены без специальной подгонки.Затем лишние "хвосты" стираются прямоугольником фонового цвета,лежащим внутри большого прямоуголь- ника.
подь^м<=»|У| дома. Построим более сложное чем в предыдущем домашнем задании изображение звезды.Способ написания программы остается таким же. 10 SCREEN 2 20 LINE(128,16)-(128,136) 30 LINE<81,161)-(152,64) 40 LINE<90,108)-<204,71) 50 LINE<52,71)-(166,108) 60 LINE(175,161)-(104,64) 70 PSET(128,16) 90 LINE-(104.64) 90 LINE-(52,71) 100 LINE—<90,109) 110 LINE-Ol, 161) 120 LINE-<128,136) 130 LINE-(175,161) 140 LINE—(166,109) 150 LINE-<204,71) Г60 LINE-<152,64) 170 LINE-<128,16) 180 PAINT(118,56) 190 PAINT(118,96) 200 PAINTdlB, 136) 210 PAINT(138,105) 220 PAINT(13S, 86) 1000 GOTO 1000 Изображение напечатано e помощью принтера (см.приложение 13). 9? _ 1 _ Словесное описание программы : включить графический 10 screen 2 режим; провести окружность с центром в 20 circle < 120,90), 10 точке (120,90) и радиусом 10; провести ок- 30 CIRCLE (120,90) ,20 /(„ п_ 40 circle(120,90) ,30 ружность с центром (120,90) и радиусом 20; 50 circle (120,90), 40 провести окружность с центром (120,90) и 70 line(120,0)~(120,190) радиусом 30; провести окружность с цент- 80 goto 80 ром (120,90) и радиусом 40; провести окру- жность с центром (120,90) и радиусом 50; провести прямую; сделать задержку. _ 2-Описание можно сократить за счет более компактного разъяс- нения того,какие окружности нужно изобразить : провести семейство окружностей с общим центром (J20,90)и радиусами 10,20,30,40,50. - 5 - ц0 уСЛОВИЮ задания необходимо многократно устанавливать на экране точки.Beличиной,которая меняется при переходе от точки к точке является координата Х.По условию она изменяется от 10 до 245 с шагом 5.
10 SCREEN 2 20 FOR X-10 TO 245 STEP 5 30 PSET(X,96>) 40 NEXT X 50 GOTO 50 * ?.<*>. а) При отсутствии заголовка в программе произойдёт оши- бка и будет выдано сообщение : NEXT vui thout FOR _ HEXT без FOR б) Если отсутствует NEXT,ошибки не произойдёт,но тело цикла будет выполнено только один раз при начальном значении параметра цикла, в) Если отсутствует тело цикла,то параметр цикла пробегает все указанные в заголовке значения. Единственным видимым эффектом при при работе такого цикла является задержка (на изменение параметра). Циклы без тела называются пустыми циклами.Их используют в програ- ммах для создания пауз определённой длительности. * 5»- "7- ДлЯ создания паузы используем пустой цикл 1см. предыдущий ответ). 10 20 30 40 50 60 SCREEN 2 CIRCLE(120,90),S0 то 1000 — Обратите внимание,что для печати сооб- NEXT I screen 0 —----- I щения необходимо предварительно вклю - PRINT "программа окичвГ^ символьный режим ! * 9 . *9 . В качестве тела цикла нужно использовать оператор PRINT, печатающий значение параметра цикла. 10 CLS 20 FOR Р-5 ТО 35 STEP 3 30 PRINT Р 40 NEXT Р «?. 1 1 . Повторяющимся действием является печать слова ЦИКЛ. Параметр цикла имеет смысл номера строки.Он не используется в те- ле цикла,так как после печати очередного слова курсор автоматичес- ки переходит в следующую строку. 10 CL8 20 FOR 1-1 ТО 10 30 PRINT "ЦИКЛ" 40 NEXT I
9.12. Повторяющие я действием является проведение верти - 10 20 30 40 50 SCREEN 2 FOR Х-0 ТО 255 STEP 3 LINE<X,0)-(X,191) NEXT X GOTO 50 *9 . 1 з - Нужно построить 10 SCREEN 2 20 FOR Х-0 ТО 255 STEP 3 30 LINE(X,0)-<X,191) 40 NEXT X 50 FOR Y—0 TO 191 STEP 3 60 LINE<0,Y)-<255,Y) 70 NEXT Y 80 GOTO 00 кального отрезка.Координата X ме- няется,координаты У концов одина- ковы для всех отрезков: 0 и 191. два семейства прямых: вертикальное и горизонтальное.Для построения каждого семейства нужно использо вать свой цикл.Таким образом про' грамма содержит два цикла с пара' метрами X и У. ПОДУМАЙ QOtHft. номер вершины многоугольника ( о.т I до номером К определяется углом . В режиме калькулятора получим значение «С =- 2joi-3'1' = 1.9285. В качестве параметра цикла выберем 101).Положение вершины с 10 SCREEN 2 20 PSET<128+00HCOS<3.14159/2), 96-80*8IN(3.14159/2)) 30 FOR K-l TO 101 40 LINE-<120+80HCOS<3.14159/2+КИ1.9285) 50 NEXT К 96-80HSIN(3.14159/2+KM1.9285)) 60 GOTO 60 Изображения конуса и цилиндра будем строить с помощью обра- зующих. Для конуса один конец образующей закреплён,а другой сколь- Образующие зит по эллипсу.Для цилиндра оба конца образующей скользят по эллип- сам. Пока мы умеем перемещать точ- ки только по окружности.Однако,зная что эллипс - сплющенная окружность, легко получить формулу для точки? скользящей по эллипсу.
h “ к' H - сжатие с коэффициентом К н = R'Siiu X = Хо+ R cosx ,У = У„ - h X*Xo »-R -cos* У = Уо - k-R- slnot h = к- R.-S (пл Х= Хо+ R-cosec У = У<,-К •sinxj и В цикле будем проводить образующие.Параметром цикла сделаем номер образующей.Угол отбудем изменять на ТГ/1О,т.«.используем 20 образующих. Приведём только одну программу (для конуса). 10 SCREEN 2 20 CIRCLE(120.120).80,,,,.5 30 FDR 1=1 ТО 20 40 LINE(120,10)-(120+80*COS(I*. 314).120-.5M80*SIN(IM.314)) 50 NEXT I 60 GOTO 60 10.1. а) См.ответ 9.9. 10 FOR 1=7 TO 27 STEP 2 10 FoR 1=3 TO 23 STEP 4 20 PRINT 1Л2 20 PRINT SQR(I) 30 NEXT I 30 NEXT 1 10.2. a) 10 FOR X-0 TO 1 STEP .1 20 PRINT X,SIN(X) 30 NEXT X 10.3. 10 FOR 1 = 10 TO 1 STEP -1 20 PRINT I 30 NEXT I 1 (3 . S . 1(3 SCREEN 2 20 FOR R = S TO BO STEF" 13 30 С I RCLE < 1 20 , > , R -<T(3 NEXT R SO F~OR X=T TO 77 STEF' 1(3
60 PftXNT < 1 2В+Х , 9<Ь> 70 NEXT X era goto ec« 10. &. $ 10 SCREEN 2 20 FOR Y-0 TO 150 STEP 10 30 LINE<100,Y)-(105,Y+5),,В 40 NEXT Y 50 GOTO 50 10 SCREEN 2 20 FOR K-l TO .05 STEP -.05 30 CIRCLE<120,801,80,,,,К 40 NEXT К 50 GOTO 50 «00,7) 5 (105, У *5) Изменяющейся величиной в данной программе является коэффициент сжатия. в) 10 SCREEN 2 20 FOR Х-0 ТО 255 STEP 3 30 LINE<X,0)-(255-Х,191) 40 NEXT X 50 FOR Y-0 TO 191 -STEP 3 60 LINE<0,191-Y)-(255, Y) 70 NEXT Y 80 GOTO 80 В программе исполь- зуется два цикла. Первый заставляет отрезок скользить по горизонтальным Сторонам, экрана,вто- рой - по вертикальным. г) 10 SCREEN 2 20 FOR Y-0 ТО 190 STEP 10 30 LINE<0,Y)-(Y,191) 40 NEXT Y 50 GOTO 50 10. 7. Величина У задаёт "спол- зание"концов отрезка. Для одного конца спол- зание происходит по вер- У тикали,для другого - по горизон- 10 SCREEN 2 20 FOR Х-10 ТО 240 STEP 20 30 CIRCLE<X,90),7,,0,3.14 40 LINE(Х-7,90)-(Х+7,90) 50 PAINT(X,89) 60 NEXT X 70 GOTO 70 тали (У играет роль X). В данной программе тело цикла состоит из трёх Строк 30 - 50 . 10. &. 10 20 30 40 50 CLS FOR 1-0 ТО 20 Locate i,i PRINT "БЕЙСИК NEXT I Значения параметра цикла являются одновременно и номером позиции и номером строки. 1 Для реализации движения достаточно вставить в предыдущую програм му одну строку.После печати слова делается пауза и очистка экрана.
45 LOCATE SIN(1>-BIN<1>+SIN(1),SIN<1)-SIN(1)+SIN<1)ICLS 10.10. 10 SCREEN 2 20 for к«1 то .1 втер -.1 К< 1 задает сжатие по вертикали, 30 40 CIRCLE (120,90) ,80, , , ,К 1/к CIRCLE(120,90),80,,,,1/К v >1 - по горизонтали. 50 NEXT К 60 GOTO 60 10-11- а) б) 10 SCREEN 2 SCREEN2 20 FOR X-0 TO 255 10 30 PSET(X,90) 20 FOR X-0 ТО 255 40 PSET(X,90),4 30 CIRCLE(X,90),2 50 NEXT X 40 CIRCLE(X,90),2,4 50 NEXT X В) 10 SCREEN 2 20 FOR X-0 TO 255 30 CIRCLE(X,90),2 40 PAINT(X,90) 45 PSET(-SIN(1)-BIN(1),-BIN(1)-BIN(1)) 50 PAINT(X,90),4 60 NEXT X Г) Во всех четырёх случаях использу- 10 screen 2 ет°я общий принцип реализации дви- 20 for х-0 то 255 жения : для каждого значения X ри- 30 LINE<X.90)—(Х+4.94)..BF 35 pset(-sin(1) —sin<i)),4 оуется геометрическая фигура,а за- 40 50 LINE<X,90) — <Х+4,94) ,4,BF вдц NEXT X она затирается (рисуется такая же ф игура на том же меСте^но цве- том фона). Из-за того,что рисование окружности и закрашивание требуют заметного в ремени, движущиеся об"екты в программах б) и в) мерцают. Введение паузы в программе в)позволяет уменьшит^ мерцание,благо- даря задержке готового изображения.Прямоугольники рисуются быст- рее,поэтому в программе г)пауза короче,а качество изображения 10.12. лучше. 10 SCREEN 2 20 CIRCLE(240, 120) ,30 30 40 50 60 70 ее CIRCLE(210,115),5,,3.14/2-.1,3X3.14/2 CIRCLE(210,125),5,,3.14/2-.1,3X3.14/2+.1 CIRCLE(210,85),20,,3.14/2,3X3.14/2+.3 CIRCLE(230'25)’20”Ts's472’0 Большая часть программы пред- circle<230,25),is,,1.6,4.9 Ставляет собой забавный РИСу- 90 CIRCUE(230,25),10,,1.4,5.1 100 CIRCLE(245,55),10 HOK (СТРОКИ 20 - 150).
Ий CIRCLE(245,55),8 120 CIRCLE(241.55),4 130 PAINT(241,55) 140 LINE(205,117)-(105, 117) 150 LINE(205,123)-(105, 123) 160 CIRCLE(95,120),10 170 FOR R-10 TO 70 100 CIRCLE(95,120),R+1 190 CIRCLE(95,120),R,4 200 NEXT R 1000 GOTO 1000 Сама задача решается в строках 160 - 200.Пусть к определённому моменту на экране нарисована ок- ружность радиуса R.Операторы из тела цикла рисуют ещё одну окруж- ность радиуса R + 1,а затем цве- том фона "замазывают" внутреннюю окружность радиуса 5.В результате , радиуса R + 1.Таким на экране остаётся окружность образом окружность растёт. 10 CLB 20 FOR Т-1 ТО 1000 30 LOCATE 15,10 40 PRINT Т 50 NEXT Т Быстрый секундомер 10.14. 10 CLS 20 FOR Т-1 ТО 1000 STEP .1 30 LOCATE 15,10 40 PRINT INT(T) 50 NEXT T Замедление достигнуто уменьшением шага.Для десяти значений параметра (от 1 до 1.9) на экране сохраняется постоянное целое значение (1). 10 CLBiFOR Т-1 ТО 1000 STEP .1!LOCATE 15,10 1 PRINT INT(T)iNEXT T Оператор цикла можно использовать ПОДУМАЙ ДОМА в прямом диалоге. 10 20 30 40 50 CLS FOR 1-1 ТО 200 LOCATE 16+15MBIN(I/.3> PRINT "СЛАЛОМ" NEXT I Синусоида изо- । бражает колеба- тельный слалом процесс Наиболее важным колебательным процессом является равномерное вращение точки по окружности.. Поэтому принято аргумент синуса слалом____L < ____угол; выбрано “ Г значе-п | ние 20° 4MHipa- \ диана. Амплитуда А=15 поз. слалом рассматривать как угол и измерять в радианах. Синусоида определяется позицией,вокруг которой происходят колебания, амплитудой т.е. максимальным уклонением от этой пози- ции и значением в радианах угла,через ко- торый печатаются Слова.Их значения указаны на чертеже и используются в LOCATE. Позиция В,вокруг ко- торой происходят ко- лебания . В=16 поз.
-1.50- В) 10 SCREEN 3 20 FOR Y-0 TO 160 STEP 40 30 LINE(0,Y)-(255,Y+10) , , В 40 LINE(0,Y+20)-(255,Y+30),,BF 50 NEXT Y 60 GOTO 60 Г) 10 SCREEN 2 20 FOR X-0 TO 225 STEP 25 30 LINE<X,100)-(X+10,100) 40 LINE(X+10,100)-(X+10,80) 50 LINE(X+10,80)-(X+25,00) 60 LINE(X+25.80)-(X+25,95) 70 LINE(X+25,95)-(X+20.95) 75 LINE(X+20,95)-(X +20, 90) 80 LINE(X+20,90)-(X+15,90) 90 LINE(X+15,90)-(X+15,100) 95 LINE(X+15,100)-(X+25,100) 100 NEXT X 110 GOTO 110 Д) 10 SCREEN 2 20 Line(0,0)-<240,1S0),,в 30 LINE(10,10)-(230,170),,В 40 FOR X-10 TO 210 STEP 20 50 LINE(X,10)-(X + 10,0) 60 LINE(X+10,0)—(X+20,10) 70 NEXT X 80 FOR X-10 TO 210 STEP 20 90 LINE(X,170)-(X+10,180) 100 LXNE(X+10,180)-(X+20,170) 110 NEXT X 120 FOR Y-10 TO 150 STEP 20 130 LINE(10,Y)-(0,Y+10) 140 LINE(0,Y+10)-(10,Y+20) 150 NEXT Y 160 FOR Y-10 TO 150 STEP 20 170 LINE(230,Y)-(240,Y+10) 180 LINE(240,Y+10)—(230,Y+20) 190 NEXT Y 1000 GOTO 1000 e) фоном являются два прямоугольника, для рисования внутренней части рамки используются 4 цикла. Так как такрина повторяющегося эле- мента равна 20,Стороны прямоуголь- ников должны быть кратны 20. 40 CIRCLE(X,90),10,4 50 PAINT(X,90),4 60 NEXT X 70 GOTO 70 Если нарисовать прямоугольник (не 20 line(0,80)-(240,100),,bf окрашенный) и семейство окружнос- 30 for х«10 то 230, step 20 тей (1-й цикл),то понадобится ещё один цикл для закраски.В программе использован более короткий способ: рисуется закрашенный прямоугольник,а по нему - окруж- ности цветом 4.этим же цветом они и закрашиваются.
-Г'1- Ж) 10 SCREEN 2 20 CIRCLE(120,10),20,,,,.5 30 LINE(100,10)-(100,180) 40 LINE(140,10)—(140,180) 50 FOR Y-20 TO 100 STEP 10 60 CIRCLE(120,V),20,,3. 14,0, . 5 70 NEXT Y 00 FOR Y-29 TO 190 STEP 20 90 PAINT(120,Y) 100 NEXT Y 1000 GOTO 1000 И) 10 SCREEN 2 20 FOR U-0 TO 2*3.14159-3.14159/10 STEP 3.14159/10 30 CIRCLE(120,96),00,,U,U+3.14159/20 40 NEXT U 50 goto 50 Изменяющейся величиной является угол,определя- ющий конец дуги. поДУМ|О>|У| домд центры окружностей,задающих дуги.рас- полжены па некоторой окружности с угловым шагом Концы дуг определяются углами и . / \ f/ \ _ / \ // 1Г \ Они зыражаются через I \л/ t________\у угол V.задающий поло-^ I 7 жение центра соотзетСт- \ / вующей окружности f,= li+v-H/a- z-ir/з+о- f2=^,*2-V3 =/Z-)T/3+V 20 CIRCLE(70,96),50,,5*3.14159/3,3.14159/3 30 FOR U—2*3. 14159/3 TO 2*3.15/3 STEP 3.14159/3 40 CIRCLE (12B+50*COS(U) , 96-50*8IN <U) ) .50, ,2*3. 14159/3+0,4*3. 1415P/S<V 50 NEXT U 70 goto 70 Одна дуга проводится вне цикла из-за того,что углы в команде CIRCLE должны лежать между 0 и 2-л .о цикле добиться б) этого для всех дуг не удаётся. 10 SCREEN 2 20 FOR U-0 ТО 6.28 STEP 3.14159/10 30 СIROLE(120+50*COS(U).90-50*5IN(U)),40 40 NEXT IJ 50 GOTO 50 Центры семейства окружностей лежат / на одной окружности.Координаты этих центД ров легко вычисляются по формуле из ответа к домашнему заданию 7.
10 SCREEN 2 Зта программа послужит осно- 20 for х-0 то 255 step 10 вой для выполнения заданий 40 next х 12.2. и 12.3. В нои будет 50 GOTO 50 достаточно изменить одну 1 2.2. а) Строку. 10 SCREEN 2 20 for х-0 то 255 step 10 Изменяются радиус и координата X цен- 30 CIRCL.E(X,96>),X 40 next х тра окружности.Поскольку ьсе окруж- 50 goto 50 ноСтп проходят через одну точку,координата X равна б) радиусу. 30 circle(х,96),х/2 Радиус прямо пропорционален Х,но меньше, \чем X.Можно оыло бы использовать соотноше- нпе R = к-Х при любом к<1. DUH»™ ----------------------------------------- 20 FOR Х-0 ТО 255 STEP 30 CIRCLE(X,X),20 40 NEXT X 50 GOTO 50 Изменяются координаты X и У,оставаясь равны:;1' между собой б) 30 CIRCLE(X,ЗХХ/4),20 В) 30 CIRCLE(X,ЗХХ/4),Х/2 Связь между X и У устанавливается из соображений подобия. 256 г) 30 CIRCLE(X,191-ЗКХ/4),Х/2 X тл У начинают играть роль Д) 30 CIRCLE(255-Х,191-ЗКХ/4),Х/2 смещений центра окружности по горизонтали и вертикали относительно базовой точки е) 10 SCREEN 2 20 FOR Х-0 ТО 128 STEP 10 30 CIRCLE(255-Х,191-ЗХХ/4).Х/2 31 CIRCLE(X,191-ЗХХ/4),Х/2 32 CIRCLE(X,ЗМХ/4), Х/2 33 CIRCLE(255-Х,ЗХХ/4),Х/2 40 NEXT X 50 GOTO 50 Использованы четыре базовых точки углы экрана для каждого се- мейства окружностей.В заголовке цикла конечное значение пара- метра X соответствует середине экрана.
12.4. 10 SCREEN 2 20 FOR X«0 TO 240 STEP 10 30 LINE(X,3KX/4)-<X+5,3KX/4+5) , ,B 40 NEXT X 50 GOTO 50 6) 10 SCREEN 2 20 FOR L-0 TO 90 STEP 3 30 LINE(128-L,96-L)-<128+L,96+L), ,B 40 NEXT L 50 GOTO 50 B) 10 SCREEN 2 20 FOR Y-5 TO 180 STEP 5 30 LINE (128—Y/2, Y)— (128+Y'/2, Y+5), ,B 40 NEXT Y 50 GOTO 50 1 2.S. a) 10 SCREEN 2 20 FOR R-90 TO 10 STEP -5 30 CIRCLE(128,96),R,,,,R/90 40 NEXT R 50 GOTO 50 Убывают радиус и коэффициент Сжатия.Их Связывает соотношение К = R / 90 . б) 10 SCREEN 2 20 FOR Х-5 ТО 250 STEP 10 30 CIRCLE(X,96),40,,,,1-Х/260 40 NEXT X 50 GOTO 50 12.6. 10 SCREEN 2 20 FOR X-5 TO 255 STEP 2 30 РВЕТ(X,X/2+10) 40 NEXT X 50 GOTO 50 Координата X центра эллипса рас- тёт, a коэффициент Сжатия убывает Их связывает соотношение К = 1 - Х/260 . Достаточно построить семейство точек, у которого координаты У и X связаны линейной зависимостью: У = к-Х + в. Шаг должен быть больше 1. ПОДУМАЙ ДОМА. Изображение тора похоже на изображение б) из предыдущегодомашнего задания с той разницей,что оно обра- Коэф.Сжат.эллипса-сечения равен отношению видимои-длины диамет- ра к Факти- ческой длине Видимая длина при пово- ния на угол V. I/ 2R 4 14 “ 2 R-ICOSU1 \COSVI зрвано эллипсами,центры которых движутся по эллипсу.Координаты центров вы- 2-R-icosin диаметрах числяютОя по формуле из роте сече-|0Твета к дом. заданию 9.
10 SCREEN 2 20 FOR U«0 TO 6.3 STEP .08 30 CIRCLE(128+100XCOS(U),96+100X.5X8IN(U>), 25,,,,1/ABS(COS(U)) 40 NEXT U 50 goto 50 Обратите внимание,что значения угла являются рациональными числами,поэтому косинус не обращается в О, Деление в арифметическом выражении,задающем коэффициент сжатия , всегда возможно. При построении гиперболоида концы образующего отрезка сколь- зят по двум эллипсам.Углы,задающие положение концов на эллипсах отличаются друг от друга на постоянную величину (в программе 2 ра- 10 screen 2 диана1).Если бы углы были равны 30 CIRCLE (127'1*40) $50^3 мазду Собой-то получилось бы 40 for и=0 то 6.2 step .1 изображение цилинд- 50 LINE(12B+50XCOS(U),50-.3X50XSIN(U))- Ра . (128+50XCOS(U+2),140-.3M50X8IN(U+2)) 60 NEXT U 70 GOTO70 13-1. з) 10 SCREEN 2 20 FOR X«0 TO 255 STEP 10 30 CIRCLE(X,96) , X/2 40 NEXT X 50 GOTO 50 30 CIRCLE(X+50,50),X/2 в) r Замена строки в программе 30 CIRCLE(X+150,120),X/2 13.1. а 1 3.2. a) 30 CIRCLE(150-X,120),X/2 6) 10 SCREEN 2 20 FOR Y-0 TO 191 STEF 10 30 CIRCLE(120,Y), Y/2 40 NEXT Y 50 GOTO 50 Исходное семейство 30 circle с 120,190-Y),y/2 Получение повёрнутого семейства
1^-3- 10 SCREEN 2 20 FOR X-0 TO 50 STEP 10 30 LINE(X,0)-(X,191) 40 NEXT X 50 GOTO 50 30 LINE(XX2,0)—(XX2,191) 30 LINE(XX.5,0)-(XX.5,191) 13.4. 10 SCREEN 2 15 l_INE(12B, 150)-(128, 191) 20 FOR X-0 TO 50 STEP 10 30 LINE(X+12B,0)-(X+12B, 100) 40 NEXT X 50 GOTO 50 Построение семейства прямых произ- водится программой,в которой поло- жение любой из прямых относительно левого края экрана задаётся величи- ной X.Умножив X на некоторый коэф- фициент, получим растяжение (к>1)или Сжатие семейства. Для растяжения (сжатие делается аналогично с к<1) семейства необ- ходимо представить все координаты Х,как сумму абсциссы неподвижной прямой (она проведена в 15-й стр.) и смещения относительно этой пря- 30 line<2Xx+12b,0)-(2*x+i2b, 100) мой.Умножив смещение на коэф- фициент растяжения,получим нужный 10 15 20 30 40 50 SCREEN 2 LINE(128.150)-(128, 191) FOR Х-0 ТО 50 STEP 10 результат. Приведены два варианта растя- line<(х-25)+12В,0)-<<х-25)+128,100) жения: относительно пря- NEXT X GOTO 50 мой,являющейся самой,-левой в семей- стве и относительно прямой вообще 30 LINE(2*(Х-25)+128,0)-(2М(Х-25)+12В,100) к Семейству не при- надлежащей. Задание 13.5. делается аналогично с помощью смещений по У. 13-6. в этом задании используются одновременно смещения по 10 SCREEN 2 X И ПО У ОТНОСИТвЛЬНО НвПОДВИЖНОЙ 20 LINE(0,90)-(20,90) ТОЧКИ. 30 FOR Y-0 ТО 50 STEP 10 40 LINE(-25+120,(Y-25)+90)-(25+120,(Y-25)+90) 50 NEXT Y 60 LINE(120,170)-(120,190) 70 FOR X-0 TO 50 STEP 10 80 LINE((X-25)+120,-25+90)-((X-25)+120,25+90) 90 NEXT X 100 GOTO 100 40 LINE(-25X2+120,(Y-25)*2+90)-(25X2+120,(Y-25)X2+90) 80 LINE((X-25)X2+120,-25X2+90)-((X-25)X2+120,25X2+90)
155-7- Все координаты,задающие концы отрезка необходимо так- 95 LINE<5+120,-25+90)-<-15+120, 15+90) Отрезок до растяжения. же представить в виде суммы координат неподвиж- ной точки и смещений. -25X2+90)-<-15X2+120,15X2+90) растяжения. Неустранимым дефектом точечной параболы явля- ется то,что из непре- рывного графика выпало слишком много точек. Вместо большого от- резка на оси X (.от -100 до +100) нужно рассмот- реть маленький отрезок, дакшй достаточную плотность точек на 95 LINE<5X2+120, Отрезок после 13. е- 10 SCREEN 2 20 FOR X-0 ТО 100 30 PSET(X,ХЛ2) 40 NEXT X 50 GOTO 50 Семейство точек. 10 SCREEN 2 20 FOR X —100 ТО 100 30 PSET<12В+Х,190-ХЛ2) 40 NEXT X 50 GOTO 50 Точечная парабола. экране. 13-9. 10 SCREEN 2 20 FOR X—2 ТО 2 STEP 1/64 30 PSET<12S+XX64,190-ХЛ2Х64) 40 NEXT X 50 GOTO 50 улягутся на соответствующие 13.10. 10 SCREEN 2 20 FOR X—S TO В STEP 1/16 30 PSET(128+XX16,90-X+3X16) 40 NEXT X 50 GOTO 50 дом«. При построении графика на отрез- ке [-2, +21 разоб"ём его на 256 частей (отсюда шаг 4/256=1/64). При растяжении картинки с коэф- фициентом 64 все точки деления экранные точки. Для построения выбран отрезок С-8, +8]. Шаг равен 16/256=1/16,коэф- фициент растяжения соответствен- но равен 16. Из рисунка,изображающего спираль Архимеда можно заключить, 10 screen 2 что расстояние точки,лежащей на 20 pset(12B,96) кривой,от центра возрастает пря- 30 FOR U=0 ТО 12X3.14 STEP .1 40 LINE-(12B+2XUXC0S (U) , 96-2XUXSIN (U) ) М0 ПрОПОрЦИОНЭЛЬНО УГЛУ 50 next и поворота,т.е. R = к-ТГ. В 60 GOTO 60 „ „ _ „ программе к=2.При растяжении плоскости относитель- но центра углы сохраняются,а радиусы увеличиваются.Таким образом дйя растяжения спирали достаточно увеличить коэф, к в формуле.
14. 1 - «ж > 10 SCREEN 2 20 LINE(128.0)-(12В,191) 30 LINE(0, 96)-<255,96) 40 FOR X=0 TO 255 50 PSET<X,96-30XSIN<(X-12B)/30)) 60 NEXT X 70 GOTO 70 Г) 50 PSET <X,96-30X1/<1+ <(X-12B)/30)л2)) 14.2. а) Эта программа очень удобна при построении графи- 10 DEF FNF<x)=5xsiN<x/2)+cos(3«x) ков.так как переход к новой 20 SCREEN 2 30 LINE (128,0)-<128, 191) ФУНКЦИИ ПРОВОДИТСЯ С ПОМОЩЬЮ 40 LINE (0,96)-<255, 96) Замены ОДНОЙ 10-Й СТРОКИ. 50 FOR Х-0 ТО 255 о 60 pset<х,96-10xfnf<<х-128)/10)) ° неи просто определяется НО- 70 NEXT X вая функция. 80 GOTO S0 М.З. Заменим в программе 14.2.а. дне строки (замена 60-й Стр. 10 DEF FNF<X)=SQR<X) 60 PSET(X,96-30XFNF((Х-128)/30)) б) \ 10 DEF FNF(X)=1/X 20 SCREEN 2 30 LINE<12S,0)-<128,191) вызвана сменой масштаба).Ле- вее начала координат функция не определена.Поэтому начнём изме- нение параметра с 126 : 50 FOK Х=128 ТО 255 40 LINE(0.96)-(255,96) \ 50 FOR Х=0 ТО 127 60 PSET<X,96-30XFNF<(X-12S)/30)) 70 NEXT X S0 FOR X=129 TO 255 90 PSET(X,96-30XFNF((X-12B)/30)) 100 NEXT X 110 GOTO 110 /_ 7Г 4 в) Косинус обращается в нуль в иррациональных точках Аргумент принимает только рациональные Замена строки в 14.2. значения и при этом достаточно далёкие от нулей косинуса.Тангенс вычисляется во всех 10 DEF FNF(X)=3XSIN(X) Замените Строку в 14.2. Постройте график. 50 FOR Х=0 ТО 255 STEP .32 Замените ещё одну Строку. Сравните результаты. Экранная точка точках. Значения функции, соответствующие дополнительным значениям пара- метра и уплотня- ющие график. Целые значения пара- метра ПИКЛа 2S: Дополнительные дробные значения
1^-5- 10 SCREEN 2 20 LINE<12S,0)-(12S, 191) 30 LINE(0.96)-(255,96) 40 FOR X=0 TO 255 50 PSET(X<96-30XSIN((X-12B)/30)) 60 PSET(X,96-30XCOS((X-12S)/30)) 70 NEXT X 80 GOTO 80 i Используем программу аналогичную программе построения графика соответствующей функции.Однако вместо оператора а) PSET (X,v У) 10 screen 2 используем оператор 20 LINE (128,0)-(128,191) CIRCLE ABSW) ,2 30 LINE (0,96) - (255,96) ’ ”” 40 FOR Х=0 ТО 255 STEP 5 X 50 CIRCLE(X,96),ABS(30XSIN((X-128)/30)) , ,,,2 60 NEXT X 70 goto 70 В заголовке цикла нужно использовать шаг больше 1,чтобы окружности не слились. 50 CIRCLE(X,96).30X1/(1+((Х-128)/30)Л2).,,,2 1 А-7. 10 SCREEN 2 20 LINE(128,0)-(12В,191) 30 LINE(0,190)-(255.190) 40 FOR Y-0 TO 190 STEP 10 50 CIRCLE(128.Y),30XSQR((190-Y)/30).....5 60 NEXT Y 70 GOTO 70 И. S- 10 DEF FNF(X) =1/ (1 + X'"2) 20 DEF FNG(X)-SIN(X) 30 SCREEN 2 40 LINE(128,0)-(12S,191) 50 LINE(0,96)-(255.96) 60 FOR X—0 TO 255 STEP 5 70 CIRCLE(X,96-30XFNG((X-128)/30)),ABS(30XFNF((X-12S)/30)),,,,2 80 NEXT X 90 GOTO 90 Центры эллипсов вычерчивают график функции PNG .Это стано- вится очевидным при сравнении координат центров эллипсов с коор- динатами точки в программе 14.2. Радиусы изменяются по закону, задаваемому функцией FNF. Это видно из сравнения с программой 14.б. а. функция 1/(1 + X") называется локоном Аньези по фамилии женщины-математика.На экране получен завитой и уложенный по сину- соиде локон Аньези.
подунай дргий - l.a. Программа аналогична решению домашнего задания из заня- тия 13. Заменена формула выражающая радиус через угол. 10 SCREEN 2 20 PSET(208,96) 30 FOR U-0 TO 2X3.14159 STEP .05 40 LINE-(12S+40XCOS(U)X<1+COS(3XU)+SIN(3XU)Л2), 96-40XSIN(U)X(1+COS(3XU)+SIN(3XU)Л2> > 50 NEXT U 60 GOTO 60 2. Величины и ,a также смещения 128 и 96 выбраны так, чтобы кривая заняла весь экран. 10 SCREEN 2 20 PSET(12В,179) 30 FOR Т=0 ТО 2X3.14159 STEP 3.14159/180 40 LINE-(12B+12BXSIN(ЗХТ),96+96XSIN(2ХТ+3.14159/3)> 50 NEXT Т 60 GOTO 60 10 DATA 7,3,99 20 FOR 1=1 TO 3 30 READ A 40 PRINT A 50 NEXT I 1 5-5- Первое число в наборе данных задаёт количество вершин ломаной,а остальные числа являются парами 10 DATA 36,120,20 20 DATA 80,20,110,25,70,30,100,32,85,45.75.70 КООРДИНаТ ЭТИХ 30 DATA 10.75, 75,80,60, 105. 100, 100,90, 115. 105, 125 ВОРШИН. 40 DATA 130,130.135,150,80,170,110,170,95,190,130,170 50 DATA 135,185,155,165,180,170,170,160,205,150,150,145 60 DATA 145,130,165,115,170,105,175,110.185,85,185,65 ' 70 DATA 245,45,240,60,255,60,250,40,180,0,120,20 80 SCREEN 2 90 READ N,X,Y 100 PSET(X,Y) 110 FOR 1=1 TO N 120 READ X,Y 140 next”iX’Y) Программа начинает свою работу с того,что оп- 150 goto 150 ределяет конечное значение цикла и координаты начальной точки.Установив эту точку,программа одну за другой считывает координаты вершин и проводит соответствующие звенья.
1 5-<Ь- 10 DATA 12S.96.50 20 DATA 37.69,30 30 DATA 200.153,7! 40 SCREEN 2 50 FOR 1-1 TO 3 60 READ X.Y,R 70 CIRCLE(X,Y),R 80 NEXT I 90 GOTO 90 1 Э.Т’- Прежде всего следует написать ту часть программы,которая рисует фигурку человечка.Однако в операторах,рисующих элементы фигурки используем вместо координаты X арифметическое выражение X + L• Величина L выражает смещение фигурки по горизонтали. Так как нужно нарисовать несколько фигурок,операторы рису- ющие фигурку поместим внутрь цикла с параметром L.добавив к ним оператор RESTORE.При этом окажется,что в теле одного цикла нахо- дится другой.Это вполне допустимо.Подробнее см. занятие 18. 10 DATA 13.13,59.3,67.17,62,15.75,0.90,13,79,25,82 15 DATA 25.90.27.80.20,75.23.63.30,67.22,59 20 SCREEN 2 30 FOR L-0 TO 200 STEP 40 40 CIRCLE(20+L,55).5 50 READ N,X,Y 60 F8ET(X+L,Y) 70 FOR 1=1 TO N-l 30 READ X,Y 90 LINE-(X+L,Y) 100 NEXT I 110 RESTORE 120 NEXT L 130 GOTO 130 Фигурка человечка СОСТОИТ ИЗ ГОЛОВЫ и туловища,изобра- J А жаемого ломаной. Строка 40 строит голову,строки 50-100 строят туловище точно так же,как это делает программа 15.5. 15.8- Программу получим из предыдущей.Каждую фигурку будем растягивать относительно центра головы Ссм.занятие 13).Коэффици- ент растяжения будет зависеть от параметра L по формуле к=1+ ц/200. Координаты центра головы: (20+L,55),поэтому точка Х+Ъ,У через сме- щения выражается 40 CIRCLE(20+L,55),5Х(1+L/200) 60 PSET (20+L+ ( X-20) * (1+L/200) , 55+(Y-55) X (1+L/200) ) 90 LINE- (»+L+(Х-20)X(l+L/200),55+(Y-55)X(l+L/200)) так: 20+L+(X-20) Б5+(У-55) 15.9- Программа аналогична программе 15.7. Она предназначена для рисования пяти ломаных (см.заголовок цикла в строке 140).Стро- ки 150-190 предназначены для рисования ломаной.Данные о каждой из
ломаных записаны в ВАТА. Строки 10,50,72,90,110 содержат количес- тво взршин в каждой из ломаных. Так как для каждой ломаной заданы свои данные,оператор вос- становления данных RESTORE в программе не используется. 10 DATA 19 20 DATA 30,110,23,115.10,70,20,35,50,20,75,13 30 DATA 50,35,20,70,25,95,35,120,45,122,68,105 40 DATA 75,70,50,35,75,15,100,30,110,70,115,105.80,120.68,105 50 DATA 4 60 DATA 32,100.46.104,40,110,36,108,32,100 70 DATA 3 80 DATA 42,75,35,93,40,97,45,94 90 DATA 9 100 DATA 26,62,33,62,40,70.30,72,25,65,32,65 105 DATA 30,70,31,70,32.65,40,70 110 DATA 9 120 DATA 60,70,55,67,50,70,57,79,63,72,56,71 125 DATA 56,75,55,75,56,71,50,70 130 SCREEN 2 140 150 160 170 180 190 200 210 FOR K=1 TO 5 READ N1READ X,Y:PSET<X,Y) FOR 1=1 TO N READ X,Y LINE-(X,Y> NEXT I NEXT К GOTO 210 ПОДУМАЙ ДОМА. Используем тех же человечков,что и в заданиях 15.7 и 15.8. Заставим их бежать по кругу с центром в точке (128,96) Первую фигурку разместим так,как показано на рисунке. 8 задании 15.8 указано,что смещения любой точки туловища, координаты Х,У которой считаны из DATA,относительно центра головы (128,96) (X, X -20 X и У не яв- ляются абсолют- ными координа - тами точки! равны Х-20 и У-35. Отсюда следует‘.смещение этой точки относи- тельно горизонтали А равно У, а относительно вертикали Нравно Х-20.
Угол поворотами ^уде»» отсчитывать от радиу- са,направленного вертикально при этом изменится ,— Г Xi = Хо+R'Sincc —' t =\, + R-Cosct. вниз.Формула R-COScL (ЗД) ft-Suld. Точка туловища Т при повороте на угол переходит в точку Отрезок ОТ не является вертикальным.Чтобы исполь- зовать формулу,будем получать Tj_ из TQ воротом на угол <Р+1Г. Из чертежа видно tg ф»(.Х -20)/у f = 4TN С(Х-2й)/У) ; R = SQR(Cx-20)A2 + УЛЛ 10 15 DATA 13, 18,59,5,67,17,62, 15,75,0,90.18,79,25, по- -2» 5УЭ? DATA 25,90,27,В0,20, 75, 23,6 30,67,22,59 20 SCREEN 2 30 FOR U=0 TO 3.14*7/4 STEP 3.14/4 40 CIRCLE(128+55*SIN(U),96+55KC0S(U)).5 50 READ N.X.Y Параметр цикла IT за- даёт угол поворота . 60 PSET < 128+SQR ( (X-20)-'’2+Y-''2)*SIN(U+ATN( (X-20) /Y) ) . 96+SQR( (X-20) ''2+Y'-2> MODS (U+ATN ( (X-201/Y) ) ) 70 FOR 1=1 TO N-l 80 READ X,Y 90 LINE-(128+SQR( ( X-20) A2+Y''2) *S IN (U+ATN ( (X-20) / Y) ) , 100 NEXT I 110 RESTORE 120 NEXT U 130 GOTO 130 жение радиуса i <t> . i . 96+SQR((X-20)A2+YA2)*C0S(U+ATN((X-20)/Y))) В Строках 60 и 90 производится поворот точек туловища .В формуле поворота используется выра- через 7 и У,а также угол У, =f+V.в Строке 40 произво- дится поворот центра головы (R=55 ,х = V/ В условии не указано конкретное значение аргу- 10 input х 20 PRINT SIN(X) "2 мента,поэтому его необходимо предварительно запросить.Многократно запуская программу,можно вычислять .функцию при любых значениях X. 2- 10 INPUT А,В 20 PRINT "ГИПОТЕНУЗА»"!SQR(АА2+ВА2) Программа аналогична предыдущей: запрашиваются значения величин,после чего производится подсчёт позудьтата и выдача с подсказкой на экран.
1 <Ь № > 10 20 30 40 50 input XI,Y1 INPUT X2,Y2 SCREEN 2 Решение задачи следует начать с того,что каждой величине,используемой в задании,необходимо дать обозначение и ввести в программу переменную с LINEfXl,Y1)-(X2,Y2),,В GOTO 50 соответствующим именем.В данном слу- чае используются координаты концов отрезка Х1,У1,Х2,У2. 3) 10 INPUT R,K 20 SCREEN 2 30 CIRCLE(120.96).R,. ., К 40 GOTO 40 Следует обратить внимание на то,что оператор INPUT работает только в сим- вольном режиме.Поэтому графический режим нужно включать после того,как значения переменных введены с клавиатуры. 16-4. a) g0 ЕСех задачах этого задания необходимо строить 10 20 30 40 50 60 70 80 90 PRINT "'КООРДИНАТЫ?" INPUT XI. Х2 PRINT "РАДИУС И ШАГ" INPUT R,S SCREEN 2 EOR X-Xl TO X2 STEP S CIRCLE(X.96> .R семейства геометрических фигур.поэто- му в них используется цикл.При этом начальное и конечное значения пара - метра цикла,а также шаг могут зада - ватьСя переменными.Раз за разом запус- next х кая программу и давая различные значения пе- GOTO 90 пеменным,можно получать различные конкретные б) 10 INPUT "РАДИУСЫ";RI.R2 20 INPUT "Шаг"!3 30 SCREEN 2 40 FOR R-Rl ТО R2 STEP S 50 CIRCLE(128.96). R 60 NEXT R 70 GOTO 70 семейства ригур. if заданиях а) и б) предусмотре- на выдача на экран подсказок.облегча- ющих ввод значений.Способ выдачи под- сказки из пункта б) упомянут в прило- жении о. 10 INPUT H.L 20 SCREEN 2 30 FOR 1=0 ТО 10 40 LINECIXH. I*L)-(I*H+H, I*L) 50 LINE(IMH+H. I*L> - (IKH+H, IKL.+L) 60 NEXT I 70 GOTO 70 1 <ь- 5- 10 DEF FNF(X)=SIN(X)+COS(X) 20 INPUT A.B,S 30 FOR X"-A TO В STEP S 40 PR I NT FNF(X) 50 NEXT X В этом задании показано использование цикла,содержащего в заго- ловке несколько переменных в символьном режиме.
10 input n Таблица умножения на число имеет на- 20 for 1=1 то р глядный вид,благодаря чередованию в 40 nextTiI!= !l*N операторе PRINT печати значений пере- менных, арифметических выражений и текстовых констант. подумай доме.. в соответствующих программах доста- точно заменить константы на переменные и использовать оператор а) ввода. 10 ™рит n м Заметь,что программа oUHc-tN а. 30 pset<128.16) позволяет нарисовать 40 FOR 1 = 1 ТО N /М . 50 LINE-<128+80X003(3.14/2+1X2X3. 14XM/N), ОКРУЖНОСТЬ (N -100 , 96-80XSIN(3.14/2+1X2X3.14XM/N)) М =1), 60 NEXT I 70 GOTO 70 б) Константы 128 и 96 оставлены в программе,так как они определяются размерами графического 10 INPUT K1.K2.FI 20 screen 2 экрана. 30 FOR Т=0 ТО 6.29 STEP 3.14/180 40 PSET(12B+12SXSIN(К1ХТ),96+96X8IN(K2XT+FI)) 50 NEXT Т 60 GOTO 60 17.1. Программу можно написать и без оператора присваива- ния, но из-за этого она станет очень громоздкой. 10 INPUT х 20 Y= (SIN (X)+COS ( X) )л3/(1 + Х'-2) Используя этот оператор,можно 30 PRINT У, У'-Д, Ул3, Ул4 1 7. 2_ 10 INPUT"R и H";R,H Сделать многие предыдущие прог- раммы (особенно из дом.задан.) более изящными. 20 Р1=3.14159 30 V=HXPIXR'-2 40 PRINT "V цилиндра-"J V 50 PRINT "V шара-”; 4XPIXRz'3/3 60 PRINT "V конуса="|V/3 В 20-й Строке оператор присваива- ния используется для того,чтобы задать начальное значение пере- менной .Исйользование переменной вместо константы сокращает запись. 10 INPUT а, в 20 PRINT А,В 30 R=A:A=BsB=R 40 PRINT А,В нения оператора Для пересылки приходится использовать дополни - тельную переменную Р.Она позволяет сохранить ис- ходное значение А.которое затирается после испол- А = В. (Существует спец.опер.обмена значений.См . прил. 11)
-1G5- L 7.4. При вычислении чисел Фибоначчи достаточно знать два по- 10 input n бледних числа.После их сложения результат пре- 20 A0=lsAl=l 30 FOR 1=2 ТО N 40 R=A0+A1 вращается в последнее число,а бывшее последнее число в предпоследнее.Именно этим и< обгоняются 60 A1-R пересылки значений в Строках к 60. 70 next I А0 - предпоследнее число~| 00 PRINT N)"-. число -”)R А1 - последнее число [Фибоначчи 17-5- J Решим систему уравнений,по ходу преобразований будем вводить новые обозначения.____________________ Исходные величины: Система уравнений: х.,у.,р;х1 .у. . *W~y„y-=R* 00 11 (Х-АУ + (У-B)2=R2 Раскрыв скобки и вычтя 1-е ур-е X. 2 (71 -Хе) + Э-2-( 8 ye) = У- R(2 - V АМ/тВ2 '---Y--' ‘4---------—у - ' Д = (*<,+ *tyz в^йо+ад/2 из 2-ГО X-J) (- у-1 =с р Е X‘(c~£D/p УР-е 10 INPUT X0.Y0.X1.Y1.R 20 SCREEN 2 30 CIRCLE(X0.Y0), R 40 PSET(XI. YD 50 A=(X0+X1)/2 60 B=(Y0+Y1)/2 70 Rl«(A-X0)-'2+(B-Y0)-' 80 D-2X(A-X0) 90 E=2X(B-Y0) Раскрыв скобки и сгруппировав *” коэффициенты при степенях У Z & Hz Р 100 C=R*'2-Rl-X0'A2+A''2-Y0-'2+B''2 110 F=R-'2-X0-'2-Y0-'2 120 Б=1+(ЕЛ2) / (Dz'2) 130 H=2«EJCX0/D-2XCXE/D'-2-2XY0 140 Р=(СЛ2> / (D'-2) -2X.X0XC/D-F 150 YP=(-H+SOR(Н'2-4ХР*Б))/(2XG) 160 YS= (-H-SQR (H "'2-4XPXG) > / (2X.G) 170 XP=(C-YPKE)/D Получено квадратное ур-е G^2_ + H^ + P= (? Решаем его по обычной .рор- муле. 180 XS=(C-YSKE)/D 190 LINE(X1.Y1)-(ХР,YP) 200 LINEtXl,Y1)-(XS,YS> 210 GOTO 210 В программе через R1 обо- значен квадрат радиуса ! Программа представляет собой цепочку вычислений.Вычисляются значения про- межуточных величин,введённых для удобства преобразований.
1 т . <ь. Увеличение значения переменной на единицу проводится в 10 CLS 20 Т=0 30 LOCATE 15,10 40 PRINT Т 50 Т=Т+1 60 GOTO 30 50-й Строке программы.Запись Т = Т + 1 означает,что к исходному значению переменной Т добавляется единица, и результат снова за- носится в ту же переменную. Программа- будет работать до тех пор,пока не произойдёт переполнение.Можно ускорить этот процесс,заменив 1 X- X- а) 0(3-10 Стр. 10 S=0 Процесс суммирования состоит в многократном 20 FOR 1=1 ТО 30 наращивании- промежуточного результата.Вид 30 40 В-5+1л2 NEXT I слагаемых известен заранее.Каждое из них лег- 50 PRINT S ко выражается через параметр цикла. 10 INPUT N 30 for 1=1 то n По СмыСлУ задания количество слагаемых нужно 40 SwS+i/SQR(i) ввести с клавиатуры. 50 NEXT I 60 PRINT S 1 х в- а) Произведение вычисляется аналогичным образом. 10 р-1 20 FOR 1=1 ТО 15 30 P-PMSIN(1*3.14/1В0) 40 NEXT I 50 PRINT P Зместо промежуточной суммы использует- ся промежуточное произведение.Начальное значение переменной Р равно 1. б) 10 40 INPUT M.N р-1 FOR I-М ТО N Первый и последний сомножители определяются величинами М и N .которые заранее не извеСт- 60 NEXT I PRINT Р ны.Их нужно ввести с клавиатуры. Постановка задания личеСтво слагаемых,ни Сами номерность. Из этого легко такова,что заранее не известно ни ко- ати слагаемые,ни связывающая их зако- сделать вывод,что значение каждой ве- личины нужно вводить с клавиатуры. Количество слагаемых вводится в начале программы (анало- гично 17.7.6).
a) 10 INPUT N 20 S=0 30 FOR 1=1 TO N 40 INPUT A 50 S=S+A 60 NEXT I 70 PRINT S 6) 10 INPUT N 20 P=1 30 FOR 1=1 TO N 40 INPUT A 50 P-PMA 60 NEXT I 70 PRINT P Для приёма очередного слагаемого (или сомно- жителя) выделим переменную А.Её значение должно определиться-непосредственно пзред сложением (или умножением).После выполнения сложения старое значение переменной А ста - новится ненужным.Вместо него можно вводить новое значение.Оно и станет новым слагаемым. Если бы нужно было складывать не сами числа,а величины"от них зависящие,достаточ- но было бы изменить 50-ю строку.Например для нахождения суммы квадратов.используем строку 50 S = S + Ал2 17-10- 10 DATA 5 20 DATA 17, 13,23,5,21 30 SCREEN 2 40 READ N 50 X-0 60 FOR 1-1 TO N 70 READ R 80 X—X+R 90 CIRCLE(X,90),R 100 X=X+R 110 NEXT I 120 GOTO 120 X=X+R, X-X+R2 X=X+R3 ПОДЫМАЙ ДОМА - Длина дуги I л угол в ра- дианах связа- ны соотноше- нием Если центр окружности,катящейся по прямой сместился по горизонтали на расстояние Х,то при качении с отрезком длины X соприкаснулась дуга длины X (качение без проскальзывания).Исходя из этого,легко вычислить угол поворота радиуса,конец которого вы- черчивает циклоиду. I http://www.gr8bit.ru । 1---------------------1
10 INPUT R,R1 20 SCREEN 2 30 FDR X-0 TO 255 40 X1-X-R1«SIN(X/R) 50 Y1-90+R1«COS(X/R) 60 PSET(X1,Y1) 70 NEXT X 80 GOTO 80 Параметр цикла X имеет смысл абсциссы центра, катящегося круга. качении одной окружности по другой,так- INPUT f R — Л-Ro . 0 T R При же соприкасаются равные по длине дуги. 10 20 30 40 50 60 70 80 90 R,R1 SCREEN 2 CIRCLE(12S,96).90 FOR U-0 TO 6.29 STEP .01 X1=128+(90-R)«COS(U) Yl-96-(90-R)«SIN(U) X2=X1+R1«COS(90KU/R-U) Y2=Y1+R1«SIN(90«U/R-U) PSET(X2, Y2) КоординатьЬцентра катящей- Q=90 ся окружности 100 NEXT U 110 GOTO 110 h.'it Xa= X< + R^cos(i(>-u) , Координаты точки вычер- У2=У<+|^-91п(ф-и)/ чивающей гипоциклоиду 10 SCREEN 2 20 FOR Х=0 ТО 255 STEP 8 30 FOR Y—0 ТО 191 STEP 6 40 PSET(X,Y) 50 NEXT Y,X 60 GOTO 60 1 B-2.- 10 FOR 1=0 TO 3 20 FOR J=0 TO 4 30 PRINT "i = ";I,"j=";J 40 NEXT J,I Обратите особое внимание на то,что несколько идущих подряд окончаний цикла NEXT можно об"еденить в один NEXT,перечислив параметры в порядке обратном появлению в программе соответствующих за- головков . Программа хорошо показывает,что параметр внутреннего цикла из- меняется быстрее,чем параметр внешнего.
18.3. a) 10 SCREEN 2 20 FOR X-10 TO 240 STEP 30 30 FOR Y-10 TO 160 STEP 30 40 CIRCLE(X,Y>,10X150/<Y+140) 50 NEXT Y,X 60 GOTO 60 Радиус каждой окружности умножает ся на коэффициент,зависящий от У и убывающий с ростом У. б) 10 SCREEN 2 20 FOR X-20 ТО 220 STEP 50 30 FOR Y—20 TO 170 STEP 50 40 CIRCLE(X, Y),20*(40/(X+20))X (40/(Y+20)) 50 NEXT Y,X 60 GOTO 60 Введены два коэффициента,убывающих с ростом X и У.Радиус каждой окружности умножается на оба коэффициента. а) В данной программе долит использоваться три неза- висимых величины Х,У и В.Оставив в стороне то об- 10 SCREEN 2 20 for x-20 то 240 step 40 стоятельство,что необходимо ПОСТРО- 40 circleTx y? rS0 STEP 40 ить ДЛЯ кавдого центра (х>у) целое 50 next y,x* ’ семейство окружностей,напишем программу,рису- 60 goto 60 тощую для каждого центра одну окружность .указав в качестве радиуса переменную В. 6 втер з После того как программа написана, достаточно "погрузить" оператор CIRCLE в новый цикл с параметром В .Для этого нужно вставить 240 STEP 40 в программу строки 35 и 45. . ,100 ST0: 40 Аналогично пишется программа из 35 FOR L-1 ТО 16 STEP 3 40 LINE(X-L,Y-L)-(X+L, Y+L),,В Пункта б) 45 NEXT L 50 next y.x Ив дальнейшем мы будем пользоваться погру- 35 FOR R-l ТО 1 45 NEXT R б) 10 SCREEN 2 20 FOR X-20 ТО 30 FOR Y-20 TO 60 GOTO 60 жением" в циклы. x 8- 5- Основной проблемой в данной программе является,то что одни клетки нужно окрашивать,а другие-нет.Программа с иск- лючёнными строками 50 и 60 рисует решётку 8х8. Число N .вычисляемое в строке 50 Х-4Р ге равно Сумме номеров столбца и строки решётки.Если это число является чётным будем закрашивать клетку цветом 4. (»,ж\ 0 12 И ~ 1 з 4 у Еоли нет,то цветом 15. S-20 Z9 W-3+2-
10 20 30 40 30 60 70 S0 SCREEN 2 FOR X-40 TO 180 STEP 20 FOR Y—20 TO 160 STEP 20 LINE(X,Y)-(Х+20,Y+20),,В При чётном H ,число равно 0,при нечётном - 1. №(Х-40) /20+(Y-g0) /20 PAINT(Х+10,Y+10),4+1IX (N-2XINT(N/2)) NEXT Y,X GOTO 80 Таким образом цвет закраски в PAINT равен 4 для чёт- ных N и 15 для нечётных 1 е-6- з DATA записаны цвета,из которых образована мозаич- ная плитка .Величины Хи У определяют положение плитки на экране. Величины РХ и РУ определяют положение цветной точки внутри плит 10 DATA 15,4,4,15,15,4,4,15 20 DATA 4,15,4,4,4,4,15,4 30 DATA 4,4,15,4,4,15,4,4 40 DATA 15,4,4,15,15,4,4,15 50 DATA 15,4,4,15,15,4,4,15 60 DATA 4,4,15,4,4,15,4,4 70 DATA 4,15,4,4,4,4,15,4 80 DATA 15,4,4,15,15,4,4,15 90 SCREEN 3 100 FOP X-0 TO 7X32 STEP 32 110 FOR Y-0 TO 5X32 STEP 32 120 FOR DX-0 TO 2S STEP 4 130 FOR DY—0 TO 28 STEP 4 140 READ C 150 PSET(X+DX,Y+DY) ,C 160 NEXT DY,DX 170 RESTORE 180 NEXT Y,X 190 GOTO 190 КИ. i e- 7- В еличины X и У определяют положение точки внутри каж- дой из маленьких 16 областей экрана.Величины DX и РУ задают сме- щения каждой из этих областей относительно левого верхнего угла экрана.Напишем для левой верхней области экрана программу анало- гичную 10.6.в ,но везде вместо X и У используем выражения X+DX и У+РУ. Затем произведём погружение оператора LINE в пару циклов с параметрами РХ и РУ.Такое погруже- 10 screen 2 ние необходимо в двух местах програ- 20 FOR X—0 ТО 63 STEP 3 „ 30 for dx-0 то б4хз step 64 ммы по числу операторов LINE. 40 FOR DY-0 ТО 48X3 STEP 48 50 LINE(X+DX,DY)-(63-X+DX,48+DY) 60 NEXT DY,DX 70 NEXT X 80 FOR Y-47 TO 0 STEP-3 90 FOR DX-0 TO 64X3 STEP 64 100 FOR DY-0 TO 48X3 STEP 48 110 LINE(DX,Y+DY)-(63+DX,48-Y+DY) 120 NEXT DY.DX 130 NEXT Y 140 GOTO 140
1S.8. В задании 10.9. уже реализовывалось движение по диа- гонали. Новым для нас является использование вложенного пустого цикла для создания паузы. Определённые сложности есть при организации Смены направ- ления движения.Такая смена предполагает перестановку начального и конечного значений параметра цикла и смену знака шага. 10 сие Подобную перестановку удаётся про- 20 А-0:В-201S-1 30 FOR I-А ТО В STEP S 40 LOCATE I,I 50 PRINT "X" 60 FOR T-0 TO 100iNEXT T 70 CLS 80 NEXT I 90 R-A: A-В: B-R: S—S 100 SOTO 30 извести,используя в заголовке цик- ла переменные А , В и S• После 1Q. 9. окончания цикла переставляются зна- чения переменных А и В,а перемен- ная S меняет знак.Цикл исполняется с этими значениями и символ летит в обратном направлении. Пишется программа движения точки по диагонали в графичес- ком режиме аналогичная предыдущей программе.Вместо координат X и У используются выражения X+DX и У+РУ. та й-й^в-40.Наконец каждый из операторов PSET 20 А-0:В-401S-1 30 FOR Х-А ТО В STEP S 40 FOR DX-0 ТО 80 STEP 40 50 FOR DY-0 TO 80 STEP 40 60 PSET(X+DX,X+DY) (рисующий и стирающий точку") погру- жается в пару циклов с параметрами РХ и РУ. 70 NEXT DY.DX 80 FOR Т-0 ТО 100:NEXT Т 90 FOR DX-0 ТО 80 STEP 40 100 FOR DY-0 ТО 80 STEP 40 110 PSET(X+DX,X+DY),4 120 NEXT DY,DX 130 NEXT X 140 R-A: A-В: B-RiS—S 150 GOTO 30 ± © - x Of - В данном задании начальное и конечное значения пара- метра вложенного цикла не является постоянной величиной,а зави- сит от значений параметра внешнего цикла. а) Количество квадратов в каждой строке растёт пропорциональ- 30 for х-0 то y step 10 му конечным значением параметра X 40 LINE(X,Y)-(Х+5,Y+5),,BF 50 next x.y 60 GOTO 60 является значение параметра У. Используйте также Строку 30 FOK Х=0 ТО 2*У STEP 10
б) Начальное и конечное значения параметра У вложенного цикла зависят не непосредственно от Х.а От некоторой величины У1, вычисляемой по значению параметра X.Основная часть программы 10 def fnf(X)-sin(X> похожа на программу построения синусоиды 30 forEx-02to 2S5 но вмеСт0 °да°й ТОЧКИ цикл по У устанав- 40 yi-50-20kfnf((Х-12В)/20> ливает целое семейство точек,рас- Т° У1+100 ЗТЕР 3 положенных по вертикали. ой rSb.T ( X , Y) 70 NEXT Y,X 60 FOR Х=0 ТО 2SS STEP 10 ----у 90 Yl-50-20XFNF( (Х-120) /20) < 100 LINE(X,Yl)-(X,Y1+100) » 110 NEXT X 120 GOTO 120 *_ у+100 IS - t A - Спираль будет вычерчиваться точкой,положение кото- рой задаётся координатами X и У,а направление её движения задаёт- ся величинами ЛХ и ЛУ.ЛХ представляет собой смещение точки по го- ризонтали, а ВУ - по вертикали.Переход от точки к точке осущест- . вляетСя с помощью операторов Х=Х+3>Х и У=У+$У. -------1_. рх»-| Пока ])Х и ОУ постоянны,точка движется по пря- J------т\ и ------- v мой.Для смены направления нужно изменить DX и ♦ ЛУ. 10 screen программе величина I задаёт длину оче- 20 х-1231y-96:U=0:pset(x,Y) редкого звена спирали.В цикле с па- 30 FOR 1=1 ТО 90 40 DX"COS(U)iDY-SIN(U) 50 FOR J-l TO I 60 70 60 90 X-X+DX1Y-Y+DY PSET(X,Y) NEXT J раметром J точка пробегает этот прямо- линейный участок.Способ смены направле- ния поясняется 100 NEXT I 110 GOTO 110 ЛХ = COSCV) py=sinarj рисунком. Ы-СО6(|»М ; > Угол V .задающий направление изменяется на^. Это обеспечивает поворот под прямым углом. г 40 dx-int(cos(U)+.S)idy=int(sin<u)+.5) Излом звеньев спирали в.ызван тем,что J>X иЛУ при таком способе вычисления не являются целыми.Чтобы не накапливалась ошибка,их нужно округлить до целых ПОДУМДЙ ДОМА. В целом задача аналогична задаче построения графйка функции. Мы будем Строить поверхность задаваемую формулой Z = 350// х’ + У1 +40' в прямоугольнике .задаваемом неравенствами:40 -43,-И.
200 -13,5 10 55 ZT=350/SGIR < XF','2+YF'"'2+10) XT-X+Y YT=191-Y-ZT хт=х+У УТ=У1-2Т=191-У-2Т \Дочка поверхности Построим проекцию трёхмерной системы коор- динат на плоскость.Прямоугольник,над которым будет строиться поверхность,на проекции имеет вид параллелограмма.Сама поверхность будет об- разована кривыми,лежащими в плоскостях парал- лельных плоскости yOz. Х-100 -10 Система координат,в которой фактически проводятся вычис- ления величины ZT. 10 ! 20 I 30 I 40 I 50 I 60 I 70 I S0 : 90 100 SCREEN 2 LINE(0, 19D-C200, 191) LINE-(255,136) LINE-(55,136) LINE-(0,191) FOR X-0 TO 200 STEP FOR Y=0 TO 55 XF=<X-100)/10 120 130 PSET(XT,YT) 140 NEXT Y,X 150 GOTO 150 Прямоугольник,в грани- цах которого изменяются параметры циклов X и У. ХТ=Х+У У1=191-У Получение координат точки поверхности XT, УТ ,7Т, исходя из значений параметров X и У. 1 а) 10 INPUT X 20 IF Х<0 THEN PRINT "Функ.нвепр." ELSE PRINT SQR(X) Практически программа является переводом па Бейсик двух предложений русского языка: 1.Запросить с клавиатуры значение аргумента X. 2.Если X меньше ®,то напечатать : "функ.неопр1.1 .иначе напечатать значение арифметического выражения >(Х.
в) В условиях можно использовать арифметические выражения. 10 INPUT X 20 IF ХЛ2<1 THEN PRINT "Функ.неопр." ELSE PRINT 30Р(ХЛ2-1> 19.3- В программе предполагается,что коэффициент А при не ра- вен О. 10 input а,в,с 20 0=В-'2-4*АХС 30 IF D<0 THEN PRINT "РЕШЕНИЙ НЕТ" ELSE PRINT<-B+SQR(D))/(2XA),(-B-SQR(D)>/(2XA) 19-4- Функция,заданная различными формулами на различных интер- валах,называется кусочно заданной. 10 input х 20 IF Х>0 THEN PRINT SIN(X)/X ELSE PRINT COS(X) i P- 5- Для построения графика используем способ применён- ный в задании 13.9.,так как в этом случае в цикле изменяется фак- „ тический аргумент функции,и на него легко 10 SCREEN 2 20 for х—в то s step 1/16 накладывать условия. 30 IF Х>0 THEN Y=3IN(X)/X ELSE Y=C03(X) 40 PSET(123+16MX,96-16XY) 50 NEXT X 60 GOTO 60 1 P- 6- Чисдо N-&iht(h//) равно остатку от деления Н на 2. 10 INPUT N 20 IF N-2MINT(N/2)-0 THEN PRINT "ЧЕТ" ELSE PRINT "НЕЧЕТ" 1 9-7’- 10 SCREEN 2 20 FOR X-40 TO 1S0 STEP 20 30 FOR Y-20 TO 160 STEP 20 40 N-(X-40)/20+(Y-20)/20 50 IF N-2XINT(N/2)=0 THEN LINE(X,Y)-(X+20,Y+20),,BF ELBE LINE(X,Y)-(X+20,Y+20),,B 60 NEXT Y,X 70 GOTO 70
1 S>_ S- 10 INPUT A,В 20 IF A>B THEN PRINT A ELSE PRINT В 1 9_9. Если условие верно,выполняется группа команд,записанная после слова THEN .В противном случае исполняется следующая прог- , л раммная строка 1 ie>» 10 INPUT A,B,C,D.E 20 IF А>В THEN М-А 30 IF М<С THEN М=С 40 IF M<D THEN M-D S0 IF M<E THEN M=E 60 PRINT M 1. <?_ 1 A - Переменная M выделена для хране- М“Б ния максимального значения.После- довательно перебирая числа,мы за- сылаем в М то из них,которое превосходит уже имеющееся значение М. Программа суммирует числа..Поскольку количество слагаемых 10 input к заранее не известно,цикл организован с помощью 20 в-0 СОТО. Окончание программы задаётся условием-.сумма 40 s-s+sqr(N) превзошла К. 50 IF S>K THEN PRINT NiEND 60 N-N+l 70 GOTO 40 1 9. 1 2 . Движение точки будет осуществляться с помощью переменных Х,У .задающих положение точки на экране, и переменных DX.Dy .за- дающих направление движения (см.ответ к заданию 18.11.), Так как движение происходит по горизонтали, величинаТ>У не используется 10 SCREEN 2 20 LINE(20,0)-(20,191) 30 LINE(220,0)-(220,191) 40 X-1201Y-90 50 DX-1 60,PSET(X,Y) 70 PSET(X,Y),4 B0 IF X»220 THEN DX—1 90 IF X—20 THEN DX-1 100 X-X+DX 110 GOTO 60 в программе. При достижении правой прямой, точка должна отразиться от неё и на- чать движение влево.Таким образом ве- личина X должна принять значение -1. При достижении левой прямой точка от- ражается и начинает движение вправо, т.е. X становится равным 1. рх—/ было JH bx=i стало »Х—1
nOfl^Mi^iyi ДОМЙ. Программа,аналогичная программе проведения ломаной (см.за- дание 15.5.) позволяет строить сплошные графики непрерывных функ- ций. Координаты Х,У при этом вычисляются,а не считываются из РАТА. Для тангенса такой способ не подходит,так как точки разры- ва были бы соединены прямой.Избежать этого помогает следующий 10 DEF FNF(X>-TAN(X> 20 SCREEN 2 30 Y0-96-10KFNF < <-128 >/20 > прием. В переменной У0 сохраняется 40 PSET(0,Y0> 50 FOR Х-1 ТО 255 старое значение ординаты,соответст- вующей очередной точке графика.После вычисления новой ординаты У измеряет- 60 Y-96-10KFNF((Х-12В)/20> 70 IF ABB(Y-Y0)<90 THEN LINE (Х-1,Y0>-(X,Y> ELSE PBET(X,Y) 90 next x Ся Разрыв между точками.Если он велик,ставится 100 goto 100 точка графика без соединения с предыдущей точкой. 2 ет, I _ Точка X попадает в отрезок [0,1] при одновременном выполне- нии двух неравенств Х^ 1 и Х>0. 10 input х 20 IF Х>1 THEN PRINT ХЛ2 30 IF Х-<1 AND Х>=0 THEN PRINT X 40 IF X<0 THEN PRINT -X 2 <25 _ 2 _ 10 SCREEN 2 20 FOR X—2 TO 2 STEP 1/64 30 IF X>1 THEN Y=X'"'2 40 IF X»< 1 AND X>-0 THEN Y-X 50 IF X<0 THEN Y—X 60 PSET(128+XX64,96-YX64> 70 NEXT X 80 SOTO 80 0- 3- 10 INPUT X 20 IF X>1 OR XC-2 THEN PRINT X-'3 30 IF X=< 1 AND X>0 THEN PRINT X'~2 40 IF X-<0 AND X»>-2 THEN PRINT X Функция вычисляется по формуле У = Х$ ,еСли Х> 1 или X <-2 . Может выполняться только одно из этих неравенств.
-i?7- 20 -А. Движение точки и её отражение организованы так же,как и в заданиях 18.11 и 19.12 . Отражение от краёв экрана происходит под углом 45°. Если шар ударяется о горизонтальные края экрана,то меняет знак величина $У. При ударе о вертикальные края экрана,меняет знак величина JX. а) 10 SCREEN 2 DX—JX JH) = -W 20 X=128iY=96 30 DX—IsDY—1 ДЛЯ НЭГЛЯДНОСТИ 40 PSET(X,Y> S0 IF Х-0 OR Х-255 THEN DX—DX След,оставляемый шаром, не затирается. 60 IF Y-0 OR Y-191 THEN DY—DY 70 X-X+DX:Y-Y+DY 80 GOTO 40 б) Чтобы окружности не сливались увеличено смещение до 5. 10 SCREEN 2 20 X-128:Y-96 30 DX-51DY-5 40 CIRCLE(X,Y>,10 50 IF Х<10 OR Х>245 60 IF Y<10 OR Y>1B1 70 X-X+DX1Y-Y+DY 80 GOTO 40 2. <25. 5- Координаты X и У при этом перескакивают через многие значения.Поэтому в условии знак равенства заменён на знак неравенст- then dx—dx ва.Условие с равенством может then Dy—dy не выполниться и шар проскочит за пределы экрана.Неравенство его не про- пустит . При написании условий отражения от коробки используются обе связки (ANJ и 05). у Смысл условия из строки 80 : — (У=50 OR У=141) - достигнута горизон- таль на которой ле- жит одна из гори- 50,50 полоса 10 20 30 SCREEN 2 зоктальных коробки. сторон 50,141 250,141 горизонтали 250,50 LINE<50,50>-(205,141>,,В Х-12В:Y-40 (Х>=50 AND Х<=205)-шар находит- 40 DX-UDY-1 50 PSET(X,Y> 60 IF Х-0 OR Х-255 THEN DX—DX 70 IF Y-0 OR Y-191 THEN DY—DY 80 IF (Y-50 OR Y-141>AND(X>-50 AND 90 IF (X-50 OR X-2051AND(Y>-50 AND 100 X-X+DXiY-Y+DY 110 GOTO 50 ся внутри полосы,образован- ной продолжением вертикаль- ных Сторон коробки. ХС-205) THEN DY—DY Y<-141> THEN DX —DX Одновременное выполнение этих условий задаёт столкновение с горизонтальной Стороной короб.
2-jzJ- 6- Решение аналогичное предыдущей программе.Для каждого отрез- ка, очерчивающего сосуд пишется отдельное условие отражения. После запуска программы на экране будет печататься Столбик нулей.Нажатие на любую из стрелок или пару соседних стрелок обна- ружит Себя появлением на экране соответствующего кода. 2 <2>. © _ у 10 SCREEN 2 Г Ъ 1 2-» 20 X-12BiY-96 30 PSET(X,Y> Ч ' > 40 P-STICK(0> < J \ 50 IF Р-1 OR Р-2 OR Р-В THEN Y-Y-1 | \ 60 IF р=4 OR Р—5 OR Р-6 THEN Y=Y+1 А Ч 70 IF Р-2 OR Р-3 OR Р-4 THEN Х-Х + 1 80 IF Р=6 OR Р-7 OR Р-8 THEN Х-Х-1 1б 5 4, 90 GOTO 30 '------।' Положение точки,рисующей линии,определяется координатами X и У. Как только получен отличный от нуля код,одна или обе коор- динаты изменяются.Коды 1,2,8 возможны только в тех случаях,когда в числе прочих нажата Стрелка,указывающая вверх,поэтому У умень- шается на 1.Аналогично Сгруппированы и остальные 2. -------------------------------------------КОДЫ. В программу 20.4.а вставлены строки 15,75,76,77 10 screen 2 Переменная PR используется как признак того.дви- 20 X-12B1Y-96 жетСя ли шар. Если РР=1,шар движется.Если PR=-1, 30 DX-iiDY-i шар неподвижен. Нажатие на пробел приводит к за- 50 if x-0*or х-255 then dx--dx сылке в переменную S значения -1 60 if y-0 or y-191 then Dy—dy Нечётные нажатия делают PR отри- 75 s-strig<0> цатедьным,четные - положительным.При 76 if в<>0 then pr-prms отрицательных PR программа циклится в 77 IF PR<0 THEN GOTO 75 B0 GOTO 40 строках 75-77 до Следующего нажатия на пробел. 20.10. Программа естественным образом распадается на отдельные блоки.В строках 10-120 на экран выводится меню.В Строках 200-240 организовано управление указателем.При нажатии на одну из Стре - лок,указывающих вертикальное направление,прежнее изображение ука- зателя на экране запечатывается пробелом,изменяется переменная У, отвечающая за положение указателя и наконец указатель печатает- ся против следующего слова в меню.
По нажатию на пробел осуществляется переход на строки 300- -330.Отсюда производится пересылка на блок программы,печатающий 10 cls соответствующее стихотворение.Ви- зе! printEрусски» поэты." бор блока определяется значением 40 locate 6,в переменной У. 50 PRINT "А.С.Пушкин" 60 LOCATE 6,10 70 PRINT "М.Ю.Лермонтов" В0 LOCATE 6,12 90 PRINT "Ф.И.Тютчев" 100 LOCATE 0,8 110 PRINT "1" 120 Y-0 200 B-STICK<0> 210 IF S-5 AND Y<2 THEN LOCATE 0,B+2XYiPRINT “J'l Y-Y+liLOCATE 0,B+2KY1PRINT "I" 220 IF S-1 AND Y>0 THEN LOCATE 0,8+2KY1PRINT 'L/l Y-Y-liLOCATE 0,8+2*. Y:PRINT "|" 230 IF STRIG(0><>0 THEN GOTO 300 240 GOTO 200 300 CLS 310 IF Y-0 THEN GOTO 400 320 IF Y-l THEN GOTO 500 330 IF Y-2 THEN GOTO 600 400 LOCATE B,6 410 PRINT "Если живнь теки овманет," 420 LOCATE 8,В 430 PRINT "Не печалься,не сердись! " 440 LOCATE В,10 450 PRINT "В день уныния смирись! " 460 LOCATE В,12 470 PRINT "День веселья,верь,настанет." 4В0 END 500 LOCATE 6,6 510 PRINT "Белеет парус одинокий " 520 LOCATE 6, В 530 PRINT "В тумане моря голувом!.." 540 LOCATE 6,10 550 PRINT "Что ищет он в стране далекой?" 560 LOCATE 6,12 570 PRINT "Что кинул он в краю родном?" 5В0 END 600 LOCATE 6,6 610 PRINT "О, как убийственно мы лювим," 620 LOCATE 6,В 630 PRINT "Как в вуйной слепоте страстей" 640 LOCATE 6,10 650 PRINT "Мы то всего вернее гувим," 660 LOCATE 6,12 670 PRINT "Что сердцу нашему милей!" 680 END Иногда при нажатии на стрелку указатель сразу перескаки- вает через строку.Слишком длительное нажатие воспринимается ком- пьютером как несколько последовательных нажатий.
Программа для случая б) аналогична приведённой выше прог- рамме. Поскольку работа с меню проводится в символьном режиме,а демонстрироваться должны графические об"екты,в 300-й строке нуж- но поместить оператор,включающий графический режим. В программах данного вида возможен переход от одного меню к другому. Например Поэты —*- Названия стихов —— Стихи Чтобы написать программу нужно а) уметь записывать условие дости- Г"! О Д М А |У| ДОМА - жения точкой границы эллипса; уметь выбрать тот фокус,через который пройдёт точка на этот раз; уметь вычислить Смещения РХ.ФУ для заданного направления. домашнем задании 9 получены здающие положение точки на эл- липсе в зависимости от угла Ж . z" [X -Х.+ R-COSoC -----Г CO&Z = 5 ИСп°льзуя (х- xof- (А.-Ч)х j ~Ra-+ к2*2- 1 Получено уравнение эллипса.Обозначим величину.стоящую в левой части через PR.Её можно вычислить для любой точки плоскости.Если PR = 1,то точка лежит на эллипсе.Допустим,что PR < 1,т.е. Ct-XoY2 . , с или (Х-Хо)2- , ce-Of (У-У»)2 _ K2(.R-fi4)x Это значит,что точка лежит на эллипсе,полученном из окружности меньшего радиуса (R-'О),т.е. при PR< 1 точка находится внутри исходного эллипса. Б. Чередование фокусов обеспечивается сменой знака переменной I. Направление на фокус задаётся разностями Хр-Х и УР-У.Однако для получения сплошной ли- нии при движении точки нужно чтобы большее из смещений J X,ФУ равнялось 1.Для этого разности масштабируют.
10 SCREEN 2: X0= 1 28: Y0—90: R-1 Ий : ( . 9 20 CIRCLE<X0,Y0>,R,,,,K 30 C-RMSOR(1~КЛ2> 40 PSETCX0+C,Y0> 50 PSET(X0-C,Y0> 60 X-X0:Y-Y0+RMK:1-1 70 DX-1:DY-C 80 PSET(X.Y) 90 PR- (Y0-Y) л2/ (КЛ2ХРЛ2> + ( X-X0) '2/R-''2 100 IF PR< 1 THEN GOTO 150 Ий i—i выбор фокуса.Значения эх.ФУ за- 120 dx-X0+imc-x даны "па всякий случай" (°тр.70). 130 DY-Y0-Y 140 IF ABS(DX)>ABS(DY> THEN DY-DYZABS(DX) : DX-SGN(DX) ELSE DX=DX/4BS(.PY): DY = S&N (DY) 150 X-X+DXsY=Y+DY 160 GOTO 80 Исходная точка выбрана на границе,поэтому в ней сразу производится 21.1. 10 ’Окрашенный круг 20 SCREEN 2s REM Включение графики 30 CIRCLE(128,96),70s REM Окружность 40 PAINT(128,96):REM Закраска из центра 50 GOTO 50s REM Задержка картинки 2 1.2. 10 INPUT А,В,С 20 IF A-0 GOTO 200 100 ’Квадратное уравнение 110 D-B--2-4KAXC 120 IF D<0 THEN PRINT "Корней HeT":END 130 PRINT "Корни:(-B+BQR(D>>Z(2XA>|;(-B-SQR(D>>Z(2KA> 140 END 200 ’Линейное уравнение 210 IF BO0 THEN PRINT "Корень-CZB 220 IF B-0 AND C-0 THEN PRInV "Лювое число корень" 230 IF B-0 AND CO0 THEN PRINT "Корней нет" 240 END 2. 1 _ з _ Будем считать,что Сторона квадрата имеет длину 1.В соответст- вии с этим будем задавать величины У,определяющие положение то- А и В. на экране же будетис- пользоватьСя квадрат со сто- роной равной 170. ч В
10 CLSsPRINT "СТОРОНА КВАДРАТА=1" 20 PRINT :INPUT"X и Y Больше 0"jX,Y 30 IF X<0 OR Y<0 GOTO 10 35 SCREEN 2 40 X1“(X/Y)X(Y-1>|Y1-(Y/X)X(X-1> 50 IF X=< 1 AND Y-<1 GOTO 200 60 IF X = <1 AND Y>1 GOTO 3.00 70 IF X>1 AND Y=<1 GOTO 400 B0 XS=Y/(Y-1> 90 IF XS=<X THEN LINE(42,10)-(212,180),,BF!GOTO 510 100 LINE(42,180)-(42,10) 110 LINE-(42*170*X1.10) 120 LINE-(212,180-170XY1) 130 LINE-(212,180) 140 LINE-(42.180) 150 GOTO 500 200 LINE(42,180)-(42,1S0-170XY) 210 LINE-(42+170XX,180) 220 LINE-(42,180) 230 GOTO 500 300 LINE(42,180)-(42,10) 310 LINE-(42+170XX1,10) 320 LINE-(42+170XX,180) 330 LINE-(42,180) 340 GOTO 500 400 LINE(42,180)-(212,180) 410 LINE-(212,180-170XY1) 420 LINE-(42,180-170XY) 430 LINE-(42,180) 500 PAINT(43,179) 510 GOTO 510
21.4. Прежде всего отметим,что в программе используется коман- да SWAP .пересылающая значения двух переменных из одной в другую (См.приложение 11).Без неё можно обойтись с помощью оператора присваивания (см.ответ на задание 17.3). Вычитая в цикле из большего числа N меньшее М.в итоге опре- 10 20 30 40 50 60 70 В0 деляем остаток от деления N на М.ЕСли он не равен m-abs(Mmn-abs(n> нулю.то согласно алгоритму Евклида на роль SWAP M,N PRINT N1END IF M>N THEN IF M“0 THEN №N-M IF N-0 THEN IF N<0 THEN SOTO 50 M берём M.a на роль M полученный оста- ток (он хранится вМ). print miEnd цикл завершается,когда М уклады- N«N+M1SWAP M,N II „ вается в N без остатка. щий отрезок длины М (Строки 10 INPUT M.N 20 M=ABS(M)N=ABS(N) 30 IF M>N THEN SWAP M, N 40 IF M«0 THEN PRINT Ns END 50 SCREEN 2 60 Y=5 70 FOR X-0 TO 5X(N-1> STEP 5 80 LINE(X,Y>-(X+5,Y> 90 LINE(X+5,Y-1)-(X+5.Y+11 100 NEXT X 1 10 Y«Y+108 Xl«0s Tarl 21.5. Каждое число будем изображать горизонтальным отрезком разделённым на единичные отрезки вертикальными засечками.Опера - тор цикла,занимающий строки 70-100,проводит отрезвк длины N и делит его засечками.Аналогично действует оператор цикла.проводя- 0-170).Отрезки длины М прикладыва- ются один к другому под отрезком длины N ,до тех пор пока их Суммар- ная длина меньшеИ .Для наглядности эти отрезки смещены друг относи - тельно друга по вертикали. __________ N________________ ' т~н' ^~1~1 120 N=N-M ' 130 IF N<0 THEN N»N+M|LINE(X1,Y)-(X1„Y-10): M SWAP M,NsGOTO 110 140 FOR X»X1 TO Xl+Sf(M-i) STEP 5 150 LINE(X.Y+I)-(X+5,Y+I> 160 LINE(X+5,Y+I-1>-(X+5,Y+1+1> 170 NEXT X 180 X1=X1+5KM 190 I»-I 200 IF N>0 THEN 120 210 GOTO 210 Вертикальная линия,которая проводится в 130-й строке,отсе- кает от большего отрезка остаток. Окончание цикла происходит в случае,когда в 200-й Строке не выполнено условие М>0,т.е. Учитывая,что на строку 200 мо- жно попасть только при N>0 (См.Строку 130) .получаем,что цикл за- вершается только в том случае,когдаN =0 , как и в предцдущем за- дании.
21.6. 10 DEF FNF (X > ra2iXSIN (X)+COS (ЗМХ > 20 YM=FNF<-2) 30 FOR X=-2 TO 2 STEF . 1 40 Y=FNF(X) 50 IF YM<Y THEN YM=Y 60 NEXT X 70 PRINT "MAX-";YM 2 1.7. 10 DEF FNF(X)=2*SIN(X)+COS<’*X) 20 SCREEN 2iYM=FNF(-2)*XM=-2 30 LINE(0,96)-(255.96) 40 LINE(12B,0)-(12B.191> 50 FOR X=-2 TO 2 STEP 1/32 60 Y=FNF<X) 70 IF YMCY THEN YM»Y|XM=X B0 PSET (12B+XM32,96~Y*32.) 90 NEXT X 100 LINE (1 20+XM«2,96) - (120 + XM«2. 96-YMM32) 110 GOTO 110 2. i. e. 10 DEF FNF(X)= ХЛ3 + .2«ХЛ2-.31XX+.02В 20 FOR X —1 TO 1 STEP .1 30 IF ABS(FNF(X))<IE-04 THEN PRINT "KOPEHb-"jX 40 NEXT X 2 1.9L При поиске делителей числа используем то,что М делится на I тогда и только тогда.когда выполнено условие 10 INPUT N 20 FOR 1=1 TO N 30 IF N-IXINT(N/I)"0 THEN PRINT I 40 NEXT I N -I *INT(N/I) = 0 2.1. 10, 10 INPUT К 20 FOR N=2 TO К 30 FDR 1=2 TO INT(SOR(N>> 40 IF N-IXINT(N/I>=0 THEN 70 50 NEXT I 60 PRINT N 70 NEXT N Для. каждого из чисел N меныпих К ищем хотя бы один делитель.Печатаем число,если делителя нет. Для ускорения используем то,что если число имеет делитель,то оно имеет делитель меньше При N =а-в,либо а ливо boW.
21.1 1. Считая,что х> у> 0,положим х = у + £ .тогда х - у = 2-у-^ + £2 = а. Отсюда получаем,что у = (а - £2).Кроме то- го ясно,что I Перебором ищем те £ .которые дают целые зна- чения величины у. 10 INPUT A:A=ABS(A) 20 FOR L=1 TO SQR(A> 30 Y=(A-LA2>/(2XL) 40 IF Y-INT(Y) THEN PRINT "и-"IY+L:"y-"!Y 50 NEXT L 21.12. 10 SCREEN 2 20 X-0 30 FOR C-l TO 15 40 IF CO4 THEN LINE(X.50)—(X+10,140),C,BFiX—X+18 50 NEXT C 60 GOTO 60 21-13. При движении точки по периметру прямоугольника изме- няется либо координата Х.либо координата У.Это зависит от того, где точка находится в данный момент. (О SCREEN 3 см.приложение 3) 10 SCREEN 3 20 X-40!Y—40:LINE(40,40)-<216,152),2,В 30 IF Y-40 AND X<216 THEN X-X+4 40 IF X-216 AND YC152 THEN Y-Y+4 50 IF Y-152 AND X>40 THEN X-X-4 60 IF X-40 AND Y>40 THEN Y-Y-4 70 PSET(X.Y) 80 FOR T-l TO 50:NEXT T 90 PSET<X,Y>,4 *- 216,152 100 GOTO 30 Условие; y=40 и x<216 40,40 £ y=y-4 t x=x+4 x=x-4 1 y=y+4 Прямоугольник,построенный в 20-й строке,позволяет заметить, что точка проскакивает углы.Это происходит из-за того,что в уг- лах выполняются сразу два условия двух условных операторов.Для 30 40 50 устранения этого дефек- IF Y-40 AND Х<216 THEN X-X+4:GOTO 70 IF X-216 AND YC152 THEN Y»Y+4:G0T0 70 IF Y-152 AND X>40 THEN X-X;-41GOTO 70 та можно обходить про- верку остальных условий, 60 IF X-40 AND Y>40 THEN Y-Y-41G0T0 70 е0ЛИ ОДНО уже ВЫПОЛНеНО. 2 i.i-q. В случае змейки сходные условия проверяются для го- ловы 6x0,У0) и для хвоста (X,У).Изменяется координата каждой из этих точек,после чего голова наращивается,а хвост затирается. Обязательно нужно нарисовать исходное положение змейки. Это делается в строке 20.
10 SCREEN 3 20 X = 40:Y=40iX0=200i Y0=40:LINE(44,40)-<200,40) 30 IF Y=40 AND X<216 THEN X = X+'4:G0T0 70 40 IF X-216 AND Y<152 THEN Y=Y+4iG0T0 70 50 IF Y = 152 AND X>40 THEN X=X-4iG0T0 70 60 IF X-40 AND Y>40 THEN Y-Y-4lG0T0 70 70 IF Y0-40 AND X0<216 THEN X0“X0+41GOTO 110 B0 IF X0-216 AND Y0X152 THEN Y0-Y0+4|GOTO 110 90 IF Y0-152 AND X0>40 THEN X0-X0-4IGOTO 110 100 IF X0-40 AND Y0>40 THEN Y0“Y0-4sGOTO 110 110 PSET(X0,Y0) 120 FOR T»1 TO 501NEXT T 130 PSET<X,Y>,4 140 GOTO 30 под дом^х „ Уточним условие задачи.Буд ем Считать, что точка "видит" только в непосредственной близости вокруг се- бя и может смещаться за один ход на одну клетку вправо,влево , вниз или вверх.Нужно придумать Стратегию,которая позволит точке Точка и её зона обзора Точка и возможные направления " её перемещения обнаружить прокол в кривой. Чтобы найти дырку в заборе,нужно сначала найти забор.Точно так же наша точка должна сначала обнаружить кривую на экране ,а затем,двигаясь вдоль неё,найти и опознать прокол. Найти об”ект на плоскости можно.дви- гаясь по спирали.Реализация поиска кривой в программных Строках 60-200 аналогична реше- нию задания 18.11.Однако в данном Случае то- чка не оставляет за собой следа.Кроме того после очередного сдвига на одну клетку точка осматривает 3 клетки перед собой,чтобы уз - Траектория точки нать ,не упёрлась ли она в кривую. при поиске кривой Положение точки на экране определяет- и зона обзора пе- ся координатами X,У.Направление перемещения- ред собой (3 клет- углом V,по которому вычисляется смещение то- ки). чки ЬХ,])У (программные строки 70 г. 310).
http://www.gr8bit.ru । \r-s Направления дви- жения I точки и сооп”’етСтБ .углы Подробно рассзотрпм способ,с помо- щью которого точка изучает соседние клет- ки. Предполагаетек,что точка не должна "на- ступать" на кривую.Поэтому клетка,па кото- рой находилась точка,прежде чем попасть в .нынешнее положение,не принадлежит кривой. Осмотр производится по часовой Стрелке относительно направле- ния движения точки.Параметр ци- кла К задаёт положение осматри- ваемой клетктт.н программе не - пользуются два цикла-осмотра . Цикл в строках 100-150 Служит для поиска кривой,а цикл в Стро- ках 310-340 для движения вдоль кривой.От параметра К производит- ся переход к.углу V .задаю- щему направление на осматриваемую клетку,от пего- к смещениям XV и УУ,а от смешений- к абсолютным координатам X+XV и У+yv(см.стро- ки 110-120 и 32Q-330). Если функция POINT(Х+ХУ.-У+УУ) принимает значение,равное 15, то в зону обзора попала белая точка,т.е. точка кривой.Кривая най- дена . Чтобы найти дырку в заборе нужно обойти его,например по ча- совой Стрелке.Так мы и поступим. Пусть точка,находящаяся возле кривой,видит кусок этой кри- вей .Для того чтобы из данного положения двинуться по часовой стрелке вдоль кривой,нужно найти крайнюю Слева относительно на- правления движения точку кривой (назовём её базовой точкой).Базо- вая точка служит ориентиром для дальнейшего движения. Бвдимая часть кривой Базовая точка Точка-искатель Цикл,расположенный в строках 310- 340,как раз и ищет базовую точку.Если в видимой части кривой нет дырок,то точка должна продолжать обход кривой по часо- вой стрелке. Выбор направления полностью опре- деляется базовой точкой.На рисунках по- казаны все случаи взаимного расположения базовой точки (помече- на кружком) и точки-искателя.Проверка соответствующих условий и
-188- выбор направления движения производится в 460-О00 Строках програ- ммы. xvl yvj УУ<0 XV >0 W>0 смещения от точки- искательницы до базовой точки Стрелками указано новое направление 1Г=% rm W<0 XV>^> в i pi i Отметим,что при таком выборе направления обязательно после сдви- га точки в зоне её обзора либо клетка.соответствующая К=-3,либо клетка,соответствующая К=-2,будет принадлежать кривой так одно из этих положений займёт бывшая базовая точка Перейдём к вопросу о том,как точка может опознать дырку . Прежде всего отметим,что наличие дырки определяется точками с координатами Х1;У1; Х'2,У2; ХЗ-.УЗ (См.рисунок) .Эти координаты вы- чиСляютСя в Строках 350-400. В Строках 410-440 анализируют- ся различные варианты дырок в види - мой части кривой.Они изображены на рисунках.Следует помнить,что значение Х2.У2 ХЗ.УЗ переменной К указывает на базовую точку. Примеры ситуаций (стр.420 Чтобы точка -440),в которых считается чт0 точка заткнула дырку. В строках 510-540 осуществляется сдвиг точки в выбранном этого точка осматривается в новом поло- ранее направлении.После жении. Осталось уточнить одну деталь.Когда,двигаясь по Спирали, точка наконец наткнётся на кривую,она должна повернуться (изме- нить уголU)так,чтобы подготовиться к движению по часовой Стрелку.
I .. I । http://www.gr8bit.ru1 loTTI ПоП L-l.Jo] *1 *1 "I Во всех случаях после поворота угол V уменьшится на ТГ/2; в ели- чина К,задающая базовую точку Если же кривая не будет най-> дена.то произойдёт'завершение программы по. команде ENJ) (см. строку 210). уменьшится на 2.Разворот производится в строках 130-140. 10 ’ПОИСК КРИВОЙ 20 SCREEN 3 30 CIRCLE(150.90),50...1,6.2 40 PT-4XATN(1) tDOPI/4 50_X»52> Y=52 60 FOR L=1 TO 50 STEP 2 70 DX-4WINT(C0B(U> +.5) : DY»4Y I NT (ST N (111 * . 5' 80 FOR J = 1 TO L 90 PSET < X,Y) , 2 100 FOR K=1 TO -1 STFF1 -1 1 10 V=ll-K:*DU: XV=4*.INT(C0S < V> + .5) : YV=4*TNT (SIM < V> + . 5) 120 IF POINT1X + XV, Y+YV)<U5 THEM 150 130 U== U-PI/2 140 K=K~2:SOTO 450 150 NEXT К 160 PSET(X,Y),4 170 X-X + DX: Y=Y+DY 180 NEXT ,7 190 U-U+PI/2’. IF ABStU-WO ' .2 THEM i>0 200 NEXT L 210 END 300 ’ОЦЕНКА СИТУАЦИИ 310 FOR K=3 TO -3 STEF...1 320 V-U-KXDUi XV«4WINT(C0B(V) *-.5) 1YV=4»TNT'STN(V) <•. S' 330 IF POINT(X+XV.Y+YV)»15 THEN 350 340 NEXT К 350 V=U+PI/2s XV-4WINT (COS ( VH . 5) : YV=4*TNT (STN ( V) +. 5) T60 Xl-X-i XV: Yl-Y+YV 370 V="U-PI/2:XV»4XINT(COS<V>+.5):YV”4XIMT(SIN<V)+.5) 380 X3»X+XV:Y3-Y*YV 390 XV™4YTNT (COS (ID *. 5> : YV=4*INT (SIN (ID +. 5> 400 X2-X-XV:Y2=Y+YV 410 IF К— 1 AND POINT (XI. Y!)«4 THEN 3 420 IF K7-1 AND POINT(XI. Y1)=4 THEN 11300 430 IF KJ0 AND POINT(X2,Y2)=4 THEN 1000 440 IF K~3 AND POINT(XT,Y3)=4 THEN 1000 430 "ВЫБОР НАПРАВЛЕНИЯ 460 V--U-KXDU! XV=4XINT (COS (V) i-. 5) : YV-4XIHT (SIN (V> •' . 5) 470 IF XV(0 AND YVJ»<? THEN U=PI/2 4130 IF YVT0 AND XVI-0 THEN IDT'I 490 IF XV,0 AND YV =0 THEN (D Г1/2 500 IF YV.0 AND XV. =0 THEM ID'0 510 DX=4MINT(C0S(U) ► S > : DY = 4*.IMT (SIN (U) i .5) 520 PSET(X.Y>,4 530 X=X+DX: Y = Y h>y 540 PSET(X.Y)..: 550 GOTO 300 1000 GOTO 1000
1» DATA 7,1!5, 1.3.29. 63,2,32,46,51 20 DIM A<9> 30 FOR 1=0 TO 9 40 READ A(I) 50 NEXT I 60 M=A(0) 70 FOR 1=1 TO 9 00 IF MCA(I> THEN M=A(I> 90 NEXT I 100 PRINT M 22.3. 10 INPUT"K-BO ТОЧЕК"<N 20 DIM X(N),Y(N> 30 PRINT "КООРДИНАТЫ" 40 FOR 1 = 1 TO N 50 INPUT X <I>,Y <I> 60 NEXT I 70 SCREEN 2 80 PSET(X(1>,Y <1> > 90 FOR 1=2 TO N 100 LINE-(X(I>,Y(I> > 110 NEXT I 120 GOTO 120 22.4, Вместо простот переменной N нужно использовать массив, задающий количество вершин для каждой ломаной.Координаты вершин всех ломаных заносятся в массивы X и У подряд.Вводится новый цикл (по количеству ломаных).Его телом станут строки 80-110.В строке 90 вместо простой переменной N используется элемент массива N( ). 22.5. 10 DATA 10 20 РАТА 3,37.8,5,1,6,13,2,21,4 30 READ N 40 DIM X(N> 50 S=0 60 FOR 1=1 TO N 70 READ X(I) 80 S-S+X(I) 90 NEXT I 100 S=S/N 110 S1=0 120 FOR 1=1 TO N 130 81=81+(X <1>-Б)Л2 140 NEXT I 150 S1=S1/N 160 PRINT SI
22.6. >93? 10 DATA 10 20 DATA 3,37,8,5,1,6.13,2,21,4 30 READ N 40 DIM A(N> 50 P-1 60 FOR 1-1 TO N 70 READ A(I) 30 p»p if A ( J ) 90 NEXT I 100 110 120 130 140 150 160 P=P"(1/N> L.-ABS (А (1 >-Р> 1 К-1 FOR 1-2 ТО N L1-ABS(А(I)-Р> IF L>L1 THEN L-LllK-I NEXT I PRINT K,A(K>,P 22.7. Изменение параметров In Tобеспечивает соединение всех точек ровно один раз. 10 20 40 50 60 70 80 90 DATA 5 DATA 250,190,17,20,235.7,12, SCREEN 2 READ NsDIM X(N),Y(N> FOR 1=1 TO N READ X (I> , Y(I> sPSETlX (D , Y(I NEXT I FOR 1-2 TO N FOR J-l TO 1-1 100 LINE(X(I> , Y(I>>-(X(J>,Y(J>) 110 NEXT J,I 120 GOTO 120 I 22.8. Сравнение и перестановка элементов массива в 90-й строке приводит к тому,что наибольший элемент"всплывает", как пузырёк воздуха в воде.Затем под него всплывает Следующий по величине 10 DATA 10 20 DATA 7,11,5,3,19.17.13,2,23,29 30 READ NiDIM A(N> 40 FOR 1-1 TO N 50 READ A<I> 60 NEXT I 70 FOR I-N-l TO 1 STEP -1 80 FOR J-l TO I 90 IF A(J>>A(J + 1> THEN SWAP A(J> ,A(J+1> 100 NEXT J,I 110 FOR 1=1 TO N 120 PRINT All) 130 NEXT I элемент и т.д. http://www.gr8bit.ru I ______________________i
22.9. 1.0 DATA 10 20 DATA 7. 11,5.3, 19, 17,13,2,23.29 30 RFAD N:DIM A<N) 40 FOR 1=1 TO N 50 RFAD A (I) 60 NEXT T 70 SCREEN 2 80 FOR 1=1 TO N 90 LINE(20X1,150)-<20X1,150-A(I)> 100 NEXT I 11.0 FOR I-N-l TO 1 STEP -1 120 FOR J = 1 TO I 130 IF A<J)>A<J + l) THEN 140 ELSE 220 140 SWAP A(J>, A (J + l > 150 LINE(20XJ,160)-(20X(J+1).160) 160 FOR T=0 TO 100INEXT T 170 LINE(20XJ,150-A(J) )-(20XJ,150-A(J+1> >.4 180 FOR T=0 TO 100:NEXT T 190 LINE(20X(J+l),150)-(20X(J+l>,150-A<J+l)) 200 FOR T-0 TO 1001 NEXT T 210 LINE(0,155)-(255,165) , 4, BE 220 NEXT J,I 230 FOR 1-1 TO N 240 PRINT A(I) 250 NEXT I 260 GOTO 260 2 2 «10. Приведена только та часть программы,в которой 10 data 4 6 ФомируютСя массивы А и В, и параллельно с ними 20 data 1’9,в.7 массив С. Упорядочение этого массива мож- 30 data 4,2,3,10,5,6 но провести по аналогии с заданием 22.8. 40 READ N,M 50 DIM A(N-l),В(М-1),C(N+M-1) 60 FOR 1-0 TO N-l 70 READ A (I) :C(I)-A(I> 80 NEXT I 90 FOR 1=0 TO M-l 100 READ B(I) :C(I+N)=B(I) 110 NEXT I 120 FOR 1=0 TO N+M-l:PRINT 0(1)!NEXT I 2.-2. 1 1. Перестановка задаётся набором чисел,каждое из ко- торых указывает,куда нужно переставить элемент массива.В 20-й строке заданы элементы массива,в 30-й задана перестановка. Кроме основного массива А используется массив N для сохра- нения чисел,задающих перестановку.Для того,чтобы напечатать пе- рестановку массива А,достаточно использовать элементы массива N в качестве индексов массива А.
10 DIM A(5>,N(5> 20 DATA 10.20,30,40.50 30 DATA 4,1,5,3,2 40 FOR 1=1 TO 5 50 READ A(I) 60 70 80 100 110 TQ s N [±1лЪМ READ Nd) X. NEXT I > PRINT "ПРЯМАЯ РАССТАНОВКА":PRINT I FOR 1=1 TO 5 A 110 | 20 | 30 | 40 | 50 120 PRINT A(I)j 130 NEXT I 140 PRINT :PRINT 150 PRINT "ПЕРЕСТАНОВКА":PRINT 160 FOR 1=1 TO 5 170 PRINT A(N(I)) 1 180 NEXT I 2 2, 12. Используется кольцевая пересылка элементов массива. 10 DATA 1,2,3,4,5 20 DIM ACS) 3.0 FOR 1 = 1 ТО SlREAD AdlsNEXT I 40 FOR 1=1 TO 5 50 PRINT:PRINT 60 FOR J»1 TO 5:PRINT A(J>,:NEXT J 70 FOR J=1 TO 5 80 A(J-1)=A(J) 90 NEXT J 100 A(5>—A(0> 110 NEXT I 22. 13. 10 DIM A (5) 20 FOR 1=0 TO 4 30 INPUT ACI) 40 NEXT I 50 INPUT"N>4";N 60 FOR 1=5 TO N 70 A(5>=0 80 FOR J=0 TO 4 90 A(5>-A<5>+A(J) 100 NEXT J 110 FOR 3-0 TO 4 120 A(J)-A(J + 1> 130 NEXT J 140 NEXT I 150 PRINT A<4> b основных чертах задание аналогично за- данию 17.4.Новым является пересылка эле- ментов массива (сдвиг) .чтобы ввести в де- ло N+5-й элемент п отбросить Ц-й элемент. А (0)Ык (1) ЫА(2) Ы А(3) НА(4) Wa (b) < / Сюда зано- сится очередной эле- мент последовательности
22. 14. 10 dim X(;>.yc> 20 SCREEN 3 30 X (0) = 40: У (0) =40: X (1) =200: У < 1) =40: LINE <44. 401 - (200, 40) 40 X(2)=204:Y(2)=152:X(3)-40:Y(3) =152:LINE(44.152)-(200,152) 50 FOR K=1 TO 3 STEF 2 60 FOR I-K-l TO К 70 IF Y(I)-40 AND X(I><216 THEM X(I>-X(I)+4:GOTO 110 B0 IF X(I>—216 AND Y (IX 152 THEN Y (I >-Y (I)+4 : GOTO 110 90 IF Y(I)=152 AND X(I)>40 THEN X(I)=X(I)-4:GOTO 110 100 IF X(I)»40 AND Y(I)>40 THEN У (I)-=Y (I)-4: GOTO 110 110 PSET(X(K),Y(K>) 120 PSET(X(K-l),Y(K-l)),4 130 NEXT I,К 140 GOTO 50 Программа аналогична программе из ответа к заданию 21.14. 22.15. Если бы нам было нужно управлять точкой,то,воспри- няв код стрелки,мы могли бы поставить на экране новую точку с учё- том направления,а затем стереть старую точку.Змейкой можно управ- лять Сходным образом(устанавливать рядом Со Старой "головой" но - вую,а хвост затирать.Движение змейки возникает из этого процесса дорисовки точки с одной стороны и стирания - с другой.В этом слу- чае однако нужно знать координаты каждой точки,составляющей змей- ку,так как рано или поздно она станет хвостом и её нужно будет за- тирать . Массивы X и у используются для хранения координат этих то- чек. Положение новой головы заносится в элементы Х(0) и У(0) .Коор- динаты хвоста находятся в элементах Х(10) и У(10) .После того,как 10 DIM Х(10).У(10) 20 SCREEN 3 30 FOR 1-1 ТО 10 40 У(I)=92:X(I)=120+1X4 50 NEXT I 60 LINE(124,92)-(160,92) 70 IF STICK(0)=0 GOTO 70 B0 S=STICK(0) хвост затёрт,эти координаты уже не нуж- ны.Производится пересылка элементов X (0) -*Х (1)-*....... X (9) -*Х (10) У (0)-*У (1) —►.....-*У(9)-*-У (10) Элементы Х(0) и У(0) освобождаются под координаты новой головы,а в элементах 90 IF S-1 THEN DX=0:DY=-4 100 IF S-3 THEN DX=4:DY=0 110 IF S-5 THEN DX-0:DY-4 120 IF S-7 THEN DX—4: DY-0 X(10) и У (10) находятся координаты но- вого хвоста.Всё можно повторять снача- ла. 130 X (0)»Х ( D+DX1Y (0)=Y (1)+DY 140 PSET(X(0),Y(0)):PSET(X(10),Y(10)),4 150 FOR 1-10 TO 1 STEP -1 160 X(I)=X(1-1):Y(I)=Y(1-1) 170 NEXT I 180 GOTO 80 Если нажатия на стрелку не производится,то смещения головы РХ и РУ не меняются и змейка движется в том направлении,которое было задано последним нажатием стрелки.
121 IF 8-2 THEN DX-41DY—4 122 IF 8-4 THEN DX-41DY-4 123 IF S—6 THEN DX—4iDY-4 124 IF s-s THEN DX —41 DY—4 достаточно вставить эти строки в программу нз предвдущэго задания. ПОД^1-1КЗ>£Я ДО1-1<а>- а) Программа для игры с компьютером в креСтикп-чолики довольно сложна,несмотря на простоту самой игры.Презде всего выясним,какие действия должен совершать компьютер в ходе игры. 1. В начальной Стадии работы изобразить игровое поле. 2. При ходе человека обеспечить перемещение курсора по иг- ровому полю с помощью стрелок. 3. На выбранной человеком (по нажатию пробела') или машиной клетке установить значок (крестик при ходе человека.нолик при хо- де машины). 4. При ходе машины выбрать клетку на игровом поле,в которую будет помещён нолик. 5. Определить,что игра закончена,и выдать сообщение о её результате. В соответствии с этим разобьём программу йа блоки.
Программа работает в символьном режиме.Игровое поле нари- совано (строки 100-150) с помощью символов (клавиша Ъ через 68АРН) .Установка крсСтика-печать строчной буквы "х".установка нолика-печать "о". Человек,играющий с компьютером,может перемещать курсор по игровому полю с помощью стрелок.ОредСтвом установки курсора явля- ется оператор LOCATE в формате с тремя операндами: LOCATE X , У , к Операнд к равен либо 0,либо 1.Если к=0,то курсор не виден на эк- ране (как в Формате LOCATE Х,У).ЕСли же к=1,курсор виден на эк- ране. Наиболее Сложным является блок анализа игровой ситуации.В этом блоке машина принимает решение о следующем ходе,либо закан- чивает игру.Сформулируем правила,которыми руководствуется ком - пыотер при выборе хода,сопроводив примером игровой ситуации на каждое правило.Очередное правило применяется только в том случае, когда предыдущие правила не применимы. 1. Если можно выиграть одним ходом,-сделать это (Стро- ки 1020-1070") .Сформировать при этом признак победы: о о X х о X РВ=1. 2. Если человек может выиграть следующим ходом,пред- отвратить это (строки 1090-1140). о 3. 4. 5. 6. 7. Если свободна центральная клетка,занять её (Строка 1150). Если следующим ходом человек может обеспечить вы- игрышное положение сразу по двум линиям,предотвра- тить это (строки 1160-1210).При этом возможны два^ варианта:симметричный и ассимметричный.Это прове- ряется в строке 1210.В симметричном случае произ- водится переход на Строку 1260. Если найдена свободная от крестиков вертикаль или горизонталь,занять на ней угловую клетку (строки 1220-1250). Занять среднюю клетку на крайней.горизонтали или вертикали (строки 1260-1290). Занять свободную угловую клетку. о о
C(4,0) * 0.2,0) ж Ф — сщ) сад сад эд Ям Человек анализирует игро- г, „ вую ситуацию,глядя на иг- УКоличество крестиков ровое поле.Компьютер ио - по данному пользует массив С,в кото- направлению рыи записывается вся необ- ходимая информация. Занятость игров ого ПОЛЯ C(O,(JC(0,<) <№)C«,3} Ж Если хотите играть":PRINT 1-м,введите 1":PRINT Количество ноликов по данному 10 DIM 0(4,4) 20 CLSsLOCATE, 6 30 PRINT " 40 PRINT " 50 PRINT " x-n, введите U"!mkxni 60 INPUT Ns IF NO1 THEN №2 100 ’ПОДГОТОВКА 110 CLS:K=0iPB=0 120 FOR 1=0 TO 12 130 LOCATE 12,1+5 140 IF I-INT(1/4)X4=0 THEN PRINT "lllllllllllll" ELSE PRINT "I I I I" 150 NEXT I 160 FOR 1=0 TO 4 170 FOR 3-0 TO* 4 1S0 C(I,J>=0 190 NEXT J, I 200 IF N-l THEN 1=1:3-1:LOCATE 10+1X4,3+JX4,1: GOTO 500 ELSE 1000 300 ’ УСТАНОВКА ЗНАЧКА 310 IF N=1 THEN PRINT "x" ELSE PRINT "o" 320 LOCATE 10+1X4,3+3X4,1 330 N=3-N:K=K+1 340 IF PB=1 THEN 1000 350 IF N=2 OR K=9 THEN 1000 500 ’управление курсором Управляя курсором,нужно Iia- 510 S=STICK(0) 520 p=strig(0) жимать на стрелки очень лег- 525 if s=0 goto 5В0 ко,иначе курсор будет про - 526 IF S=0 GOTO 5S0 530 IF S-1 AND з>1 THEN j-j-i скакивать нужную клетку. 540 IF S-5 AND J<3 THEN J-J+l Ж50 IF S»3 AND- I<3 THEN 1 = 1 + 1 560 IF S»7 AND I>1 THEN 1=1-1 570 LOCATE 10+1X4,3+3X4,1 5S0 IF C(I,J)<>0 OR P-0' THEN 500 590 C(I,J)=1:C(0.J)=C(0,J)+1:C(I,4)=C(I,4>+1 600 IF 1=3 THEN C(4.4)=C(4,4)+1 610 IF 1+3=4 THEN C (0, 4) =C (0, 4)+ 1 620 GOTO 300
1000 'АНАЛИЗ 1010 IF РВ-1 THEN LOCATE 2,201 PRINT "ВЫ ПРОИГРАЛИ" I END 1020 FOR IT-1 TO 3s FOR JT-1 TO 3 1040 IF C(IT,JT>-0 AND (C(IT,0>—2 OR C(4,JT)--2) THEN PB-lsGOTO 1500 1050 IF C(IT,JT)-0 AND IT-JT AND C(0,0>—2 THEN PB-liGOTO 1500 1060 IF C(IT,JT>-0 AND IT+JT-4 AND C(4,0) — 2 THEN PB-lsGOTO 1500 1070 NEXT JT,IT 1080 IF K-9 THEN LOCATE 2,20|PRINT "HH4bR"iEND 1090 FOR IT-1 TO 3s FOR JT-1 TO 3 1110 IF C(IT,JT)-0 AND (C<0, JT)-2- OR CUT,41-2) THEN GOTO 1500 1120 IF C(IT,JT)-0 AND IT-JT AND C(4,4)-2 THEN GOTO 1500 1130 IF C(IT,JT)-0 AND IT+JT-4 AND C(0,4>»2 THEN GOTO 1500 1140 NEXT JT.IT 1150 IF C(2,2)-0 THEN IT=2‘. JT-2: GOTO 1500 1160 FOR IT-1 TO 3 ВТЕР 2s FOR JT-1 TO 3 STEP 2 1100 IF C(IT,JT)-0 AND C(0,JT>-1 AND C(IT,4>-1 AND C(IT,0)-0 AND C(4,JT)-0 THEN 1210 1190 NEXT JT,IT 1200 GOTO 1220 1210 IF C(4-IT,4—JT)"0 AND C(0,4-JT)-1 AND C(4-IT,4)-1 AND C(4-IT,0)»0 AND C(4,4-JT>-0 THEN 1260 ELSE 1500 1220 FOR IT-1 TO 3 STEP 2iF0R JT-1 TO 3 STEP 2 1240 IF C(IT,JT)-0 AND (C(0,JT)-0 OR C(IT,4>-0> GOTO 1500 1250 NEXT JT,IT 12^0 FOR IT-1 TO 3lFOR JT-1 TO 3 1230 IF C(IT,JT)-0 AND(IT-2 OR JT-2) GOTO 1500 1290 NEXT JT,IT 1300 FOR IT-1 TO 3s FOR.JT-1 T03 1320 IF C(IT,JT)-0 THEN 1500 1330 NEXT JT. IT 1340 END 1500 I-ITiJ-JTiLOCATE 10+1X4,3+JX4,1 1510 C(I, J>— 11 С (1,0) "С (1,0)-11 C (4, J)-C(4, J >-1 1520 IF I-J THEN C(0,0)“C(0,0>-1 1530 IF I+J-4 THEN C(4,0)=C(4,0)-1 1540 GOTO 300 Программа часто выдаёт сообщение о результате в искажен- 0 def U8R0-&H156 ном виде,так как приёмный буфер содержит 1005 X-U8R0(X) кода Стрвлок й пробела.Две дополнительных строки помогут очистить буфер"Сем.зан.ЗО) 10 DIM U(10,10) 20 SCREEN 2 30 LINE(90,60)-(159,139),,В 40 X-0IY-0 50 S-STICK(0> 60 IF 9TRIG(0)<>0 GOTO 150 70 IF (9-1 OR 9-2 OR 9-9) AND Y>0 THEN Y-Y-l 90 IF (8=4 OR 8-5 OR S-6) AND Y<9 THEN Y-Y+l 90 IF (S=2 OR S-3 OR S-4) AND X<9 THEN X-X+l 100 IF (8=6 OR 8=7 OR 8=8) AND X>0 THEN X-X-l 110 U(X+1,Y+l>=15 120 XI—90+XX8:Y1-60+YX8 130 LINE(X1,Y1>-STEP(7,7),,BF 140 GOTO 50
150 SCREEN 3 160 LINE(44,9)-(20B.172) . l.BF 170 FOR X=45 T0165 STEF 40 1B0 FOR Y=10TO130 STEP 40 190 FOR 1-1 TO 10 200 FOR J-l TO 10 210 PBETCX+IX4,Y+JX4), U(I, J) 220 NEXT J, I.Y.X 230 GOTO 230 23.1. 10 SCREEN 2 20 OPEN "GRPi" AB41 30 РВЕТ(5,5),4 40 PRINT 41,"ОКРУЖНОСТЬ" 50 PSET(5,20),4 60 PRINT 41,“CIRCLE(X,Y),R" 70 CIRCLE(55,120) ,50 80 LINE(55,120)-(105,120) 90 LINE(103,119)-(103,121) 100 LINE(102,1 IB)-(102,122) 110 PSET(70,100),4 120 PRINT 41,"R" 130 РВЕТ(45,125),4 140 PRINT 41,"(X,Y)" 150 FOR 1-1 TO 3000INEXT I 23.2. Основной сложностью при написании программы является распо- ложение символьной информации так,чтобы она соответствовала гра- фическим об"ектач.Проще всего это- 10 DEF FNF (X > -. 15-. 2*Х-Х'А,2 _ 20 SCREEN 2 ГО ДОбИТЬСЯ ПОДГОНКОЙ. 30 LINE(50,96)-(205,96) 40 LINE(128,0)-(12e, 125) 50 OPEN "GRPi" AS41 51 PSET(0,0),4 52 PRINT 41, "Y-0. 15-0.2*Х-ХЛ2" 60 DIM X(1),Y(1) 70 X(0)—1:Y(0)=FNF(-1) 80 X < 1 > — 11Y < 1 > —Y (0> 90 FOR X —1 TO 1 ВТЕР 1/64 100 Y-FNF(X) 110 IF Y>Y(0) THEN Y(0)=YsX(0)-X 120 IF ¥<Y(1> THEN Y(1>-YtX(1>-X 130 РВЕТ(12B+64XX.96-64*Y) 140 NEXT X 150 FOR 1-0 TO 1 160 LINE(128+64ЖХ(I),96)-(128+64ИХ(I>,96-64KY(I)) 170 РВЕТ(12B+64MX(I)-45, 130-55*1) ,4 180 PRINT 41, "X»"jINT(100*X(I> >/100|"Y-"| INT(100*Y(I> >/1100 190 NEXT I 200 GOTO 200
-zoo- 23.3. 10 CLS 20 INPUT"CnoBO"j8L* 30 INPUT"X,Y"[X,Y 40 CLS 50 LOCATE X,Y 60 PRINT BL* 23.4. 10 DATA ПЕРВЫЙ,ВТОРОЙ,ТРЕТИЙ 20 DATA ЧЕТВЕРТЫЙ,ПЯТЫЙ,ШЕСТОЙ 30 CLB 40 FOR 1-1 ТО 6 50 READ SL* 60 PRINT BL* 70 NEXT I 23» 3. Существует способ,позволяющий исйользовать запятые в тексте.Для этого достаточно заключить текст,хранящийся в DATA,в кавычки.Например 70 DATA "По пустырю,по бурелому," Программа в этом случае аналогична предыдущей (задание 23.4'). 10 DATA Не позволяй душе лениться!,В, 20 DATA Чтоб в ступе воду не толочь,#,В 30 DATA Душа связана трудиться,В 40 DATA И день и ночь,#,и день и ночь.,В 50 DATA Рони ее от дома к дому,#,й 60 DATA Тащи с этапа на этап,#,В 70 DATA По пустырю,#,по вурелому,#,В 00 DATA Через сугрев,#,через ухав!,В ЮТСЯ ЖДОЙ PRINT "."|I GOTO 120 PR INT:PRINTIB-S +11 ST*“"" 120 100 FOR 1-1 ТО 2 110 CLBiLOCATE,6iS»0 120 READ ВТ* 130 IF ВТ*»"#" THEN 140 IF ST*-"B" THEN 150 IF 8-4 GOTO 170 160 PRINT E5T»(:G0T0 170 F»=INPUT»<1) 1B0 NEXT I 190 CLS:END Более сложным явля- ется вариант без использования кавы- чек.Запятые заменя- символом#,конец ка- Строки отмечен сим- волом .Производит- ся анализ соответ- ствующих символов.подсчитываются строки и т.д. 23. 6. 10 SCREEN 2 20 OPEN"GRP I"AS#1 30 PSET<80,90),4 40 PRINT #1,"НАЖМИ КЛАВИШУ" 50 LINE<75,85)-<185,103),,В 60 F»-INPUT*<1) Графическая картинка будет находиться на экране до тех пор пока вы не нажмёте любую клавишу на клавиатуре.
23.7. 10 CLSI LOCATE, 6 20 PRINT "l.КВАДРАТ"!PRINT 30 PRINT "2.КРУГ"I PRINT 40 PRINT "3.ЭЛЛИПС":PRINT 50 PRINT "4. КОНЕЦ": F’RINT: PRINT iPRINT 60 PRINT "НАБЕРИТЕ НОМЕР' черев SHIFT": PRINT 70 F»=INPUT»(1> 80 IF AMD F»<>"2" AND F»O"3" THEN CLS: END 90 SCREEN 2 100 IF Ft-"I" THEN LINE <50.501 - < 150, 1.50) , , В 110 IF Ft-"2" THEN CIRCLE<100,100),50 1.20 IF Ft»"3" THEN CIRCLE(100,100).50....5 130 Rt=INPUT»(1) 140 SCREEN 0:SOTO 10 23.8, Числа складываются,Строки склееваются. 10 CLS 20 INF'UT"4HCnA" ; X, Y 30 INPUT"CTPOKH"!S1»,S2» 40 PRINT X+Y 50 PRINT Sl»+S2» 23.9. Оператор INPUT отключает графический режим,поэтому нуж- но заменить его па более Сложную последовательность операторов. В Строках 50-120 осуществляется ввод координаты Х.Цикл типа "ПО- КА" прекращается по нажатию на клавишу " ПРОБЕЛ " .В цикле 10 CLS:LOCATE.10 20 INPUT"N,X.Y";N,X,Y 30 SCREEN 2 •. OPEN "GRP: "ASH 1 40 FOR 1=1 TO N-l 50 LINE(0,0)-<200.10).4.BF 60 PSET<0.0) .4 70 PRINT #1,"X = ": 80 XS*="" 90 C»=INPUT*<1) 100 IF C»»"<^" THEN 120 110 XS»-XS»+C«:PRINT «1, C«l 120 X1-VAL(X8»> 130 LINE<0.0)-<200,10).4.BF 140 PSET(0,0).4 150 PRINT #1."Y=": 160 YS»="" происходит накопление знаков.кото- рыми записывается число.По оконча- нии цикла строка преобразуется в число.Прямоугольник в строке 50 очи- щает место для печати цифр числа, которая производится в Строке 110. Ввод координаты У производится ана- 8DT0 90 логично (строки 130-200). 170 C»-INPUT»(1> 180 IF С»="^" THEN 200 190 YB»=YS»+C»:PRINT #1.C»;:GOTO 170 200 Y1=VAL<YS») 210 LINE<X,Y)-<X1,Y1) 220 X=X1:Y=Y1 230 NEXT I 240 LINE<0,0)-<200.10).4,BF 250 PSET(0,0),4 260 PRINT #1,"ПОСТРОЕНИЕ ЗАКОНЧЕНО" 270 F»-INPUT»(1>
I http://www.gr8bit.ru । 1---------------------1 25. 10. Программа Строит прямоугольники,соответствующие номе- рам цветов от 1 до 10 (Строки 00-50).Затем ожидает ввода двух цифр и строит прямоугольник,окрашенный цветом.номер которого за- 10 SCREEN 2 20 FOR О1 ТО 15 30 x»<c-t>*i6 даётся этими цифрами.Номер 7,например,нужно набирать в виде 07.Не забывайте,что числа 40 line(x.0>~(х+в,30>,c,BF набирают через ШИФТ. 50 NEXT С 60 FOR Х-0 ТО 14*16 STEF 16 70 ГЛ»INPUT» <2> 80 C«VAl CM) I IF C»0 OR CMS THEN 70 90 LINE(X,50>-(X+B,B0),C,BF 100 NEXT X 110 GOTO 110 23Ai. Решения уравнения оудем искать методом перебора в пределах от 1 до 99.При Х=100 в правой части получится число 99101.В компью- тере такие целые числа заданы быть не могут (происходит потеря ТОЧНОСТИ). 10 FOR Х=1 ТО 99 20 X0»INT<X/2> 30 Х1-Х-1 40 Х2=Х+1 50 S0»-8TR»(X0> sS»=-STR»<X) 60 S1*=STR*(X1)>S2»-STR»(X2) 70 A-VAL<80»+8») 00 B=VAL(Sl»+S2«) 90 IF A+XA2»B THEN PRINT "X=":X 100 NEXT X L-2'Х ПОЙУНАЙ ДОМА. Задавая различные значения Y величине X ..можно огораживать раз- л личные участки с различной пло- — щадью.Зависимость площади от величины X задаётся функцией S = X-(L -2-Х) . В программе производится построение графика этой функции.Кроме того Строятся "участки".соответствующие значениям X кратным 10. Участок с наибольшей площадью закрашивается. Подобные модели можно создавать и для более Сложных за- дач.Они позволяют увидеть множество конкретных вариантов,из ко- торых нужно выбрать наилучший. .Наглядно прослеживается связь между множеством вариантов и функцией,с помощью которой решается задача.
। http://www.gr8bit.ruj 10 OPEN"GRP"AS #1 20 SCREEN 2iL»160 30 LINE(0,40)-(90,40) 40 LINE(15,15)-(70,40),,В 50 PSET(40,5),4 60 PRINT *1,"V" 70 PSET(5,20), 4 80 PRINT #1."X" 90 PBET(80,20).4 100 PRINT #1,"X" 110 PSET(25,25),4 120 PRINT #1,"S“XMY" 130 PSET(10,55) ,4 140 PRINT #1,"X+Y+X-L" 150 PSET(90,55),4 160 PRINT #1,"Y-L-2MX" 170 LINE(0,190)-(160,190) 180 LINE(170,190)-(250, 190) 190 LINE(170.190)-(170,0) 200 PSET(175,5),4 210 PRINT #1,"S" 220 PSET(240.180).4 230 PRINT «1."X" 240 ’ГРАФИК 250 FOR X-0 TO L/2 260 IF X~INT(X/10)K10-0 THEN LINE(80-L/2+X,190)-(B0+L/2-X.190-X).,B 270 PSET(170+X.190-X*(L-2MX>/20) 280 NEXT X 290 LINE(40.190)-(120,150).,BF 300 F$~INPUTT(1) 2^.2. Программа использует функцию INKEyft для получения сим- волов с клавнатуры.При нажатии на клавишу! 1в переменную CL$ считывается символ К.В этом случае в Строке _ 100 переменно’! С присваивается номер цвета 8. 10 SCREEN 2 20 x=i2B:Y~96:C“i5 Тем Самым включается красный цвет.При этом должен быть включён латинский регистр. ДИ» о —b I I Ur-.\w ) 50 CL»-INKEY» 60 IF S-1 OR S-2 OR S-8 THEN Y-Y-l 70 IF S—4 OR S-5 OR S-6 THEN Y-Y+l 80 IF 8-2 OR S-3 OR S-4 THEN X-X+l 90 IF S=6 OR S-7 OR S-8 THEN X-X-l 100 IF CL»="K" OR CL»-"k" THEN c-e 110 IF CL»="Z" OR CL»-"z" THEN C-2 120 IF CL»—"B" OR CL»-"b" THEN C-15 130 IF CL»-"~" OR CL»-"1" THEN C-l 140 IF CL»-"S" OR CL»-"»" THEN C-4 150 IF CL»-"W" OR CL»-"w" THEN C-13 160 IF CL»-"V" OR CL»-"v" THEN C-10 170 GOTO 30
24.Ъ. а) Управляющие клавиши не имеют символа,отображаемого на эк- 1® cls ране,но обязательно имеет код. 20 Ft"INPUTS(1) 30 PRINT "СИМВОЛ""sFt( " КОД""1А8С(Ft) 40 PRINT I GOTO 20 6) Будут напечатаны все символы,но не каждому коду соответ- 1И CLS отвует символ,позтому пород - 20 for i«0 то 255 новый номер напечатанного 30 PRINT CHRt(I) ; " 11 s 40 next i Символа не равен коду символа. 24.4. С помощью программы 24.3.а. легко установить,что клавише ВВОД соответствует код 13.Нажатие на клавишу ВВОДа может быть включено подобно любому другому Символу В Строку СИМВОЛОВ.Для этого исполь- зуется функция Снв$(13') .Различие в действии клавиш F4 и F5 об"яс- няетСя значениями клавиш: КЕУ 4,"list" КЕУ 5," run"+CHR$(13) 24.5. 10 DIM Р(3> 20 SCREEN 2sOFEN"GRFs"AS#1 30 Kt=INPUTt(l) 40 IF Kt»"K" OR Kt""k" THEN END 50 IF Kt-"O" OR Kt""o" THEN N"2sP(3)"1!GOTO 80 60 IF Kt-"\" THEN №3sG0T0 80 70 GOTO 30 80 FDR 1=0 TO N 90 Xt“""sLINE(0,0)-(255, 10),4,BF 100 P8ET (0,0) , 4s PRINT #1,"P("JI!")"" 1 110 Ct»INPUTt(1) 120 IF ASC(Ct)“13 THEN 140 130 Xt"Xt+CtiPRINT #l,Ct;:GOTO 110 140 P(I)"VAL(Xt) 150 NEXT I 160 CIRCLE(P(0) ,P(1) > ,P(2) . , , , P (3) 170 LINE(0,0)-(255,10),4,BF 180 GOTO 30 24.6. Программа даёт справку о композиторах трёх европейских Стран.Фамилии хранятся в операторах DATA.Они сразу Считываются в элементы массива К$.Это позволяет оперативно выводить на эк- ран любую группу фамилий. Подобные справочные программы можно писать на основе Са- мого различного Справочного материала.
10 DIM S$<4).K«<29) 20 DATA ГЕРМАНИЯ,ИТАЛИЯ,ФРАНЦИЯ.ОКОНЧАНИЕ РАБОТЫ 30 DATA БАХ,ГЕНДЕЛЬ,ГЛЮК,БЕТХОВЕН,ВЕБЕР 40 DATA МЕНДЕЛЬСОН,ШУМАН,ВАГНЕР,БРАМС,ОРФ S0 DATA ВИВАЛЬДИ,БОККЕРИНИ,ПАГАНИНИ,РОССИНИ,ДОНИЦЕТТИ 60 DATA БЕЛЛИНИ,ВЕРДИ,БОйТО,ЛЕОНКАВАЛЛО,ПУЧЧИНИ 70 DATA РАМО,ОБЕР,МЕЙЕРБЕР,БЕРЛИОЗ,ГУНО В0 DATA СЕН-САНС,БИЗЕ,МАССНЕ,ДЕБЮССИ,РАВЕЛЬ 90 FOR 1-1 ТО 4s READ В»(I)iNEXT I 100 FOR 1-0 ТО 29iREAD K»(I>iNEXT I 110 CLSsLOCATE 6,5 120 PRINT-"ВЫДАЮЩИЕСЯ МУЗЫКАНТЫ" 130 PRINT sPRINT SPRINT 140 FOR 1-1 TO 4 150 PRINT I,"."[В»<I)sPRINT 160 NEXT I 170 PRINT SPRINT SPRINT SPRINT 100 PRINT "НАБЕРИТЕ НОМЕР СТРАНЫ" 190 F»=INPUT»<1)sN-VAL<F») 200 IF N<1 OR N>4 GOTO 190 210 IF N-4 THEN CLSsEND 220 CLS 230 FOR I-10M(N-1> TO 10MN-1 240 LOCATE 6 250 PRINT K»(I)SPRINT 260 NEXT I 270 F»«INPUT»(1> 2B0 GOTO 110 24. 7. Программа просматривает элементы массива и ищет пус- тые элементы.Как только такой элемент найден.проводится сдвиг элементов массива влево. 10 DATA 10 20 DATA А,Б,,В.Г,,,Д, ,Е 30 READ N 40 DIM BL»(N> 50 FOR 1-1 TO N1READ «-•(!)iNEXT I 60 1-1 70 IF 8L»(I)<>"" THEN I-I+liIF I>N THEN 120 ELBE 70 B0 N-N-l 90 IF I>N THEN 120 100 FOR J-I TO Ns8L»(J>-SL»(J+l> iNEXT J 110 GOTO 70 120 FOR K-l TO Ns PRINT KjBL»(K>:NEXT К
24.8. 10 INPUT F»iPRlNT 20 PRINT LEN<F»> i PRINT 30 PRINT MID»(F«, 1, 1 > J 40 PRINT " "|MID»(F»,2,LEN(F»)-2»1 50 PRINT " ";MID»(F»,LEN(F»>,1> 24.9. 10 INPUT F* 20 FOR I-LEN(F»> TO 1 STEP -1 30 PRINT MID»<F»,I,1>» 40 NEXT I 24.10. Количество Слогов равно, количеству гласных в слове.Каж- дая буква.входящая в слово,поочерёдно сравнивается Со всеми глас- ными буквами.Если она совпа- ла с одной из гласных,то 8 (Счётчик Слогов) увеличивается 10 DATA а, е, и, о. у, ы, э, и>, я 20 DIM Б»(9):REM ГЛАСНЫЕ 30 FOR К-1 ТО 9lREAD Б»(К)!NEXT К 40 CLBSS-0IREM ЧИСЛО СЛОГОВ 50 PRINT"Me/ieHbKHMM русскими »ук»ами на единицу. 60 INPUT"CnOBO"|SI...« 70 FOR 1-1 ТО LEN(SL»> S0 B»₽MID»(SL»,I,1>!REM БУКВА 90 FOR К—1 TO 9 100 IF B»-G»(K> THEN S-S+liGOTO 120 110 NEXT К 120 NEXT I 130 PRINT "В СЛ0ВЕ“|3)" СЛОГОВ" 24. H. Порядок Символов в алфавите задаётся в Строке 40 и мо- 10 DATA 3,10 жет быть изменён произвольно. 20 READ M,N 30 DIM А»(М),S»(N) 40 DATA А,В,С 50 DATA СС,АВ,В,ВВВ,АВС,А,ВСА,С,ВС,СВ 60 FOR 1-1 ТО Ms READ A»(I>iNEXT I 70 FOR 1-1 ТО NsREAD S»<I>jNEXT I 80 FOR I-N-t ТО 1 STEP -1 90 FOR J-l TO I 100 L1-LEN(S»(J))iL2-LEN(S»(J+l>> 110 IF L1>L2 THEN L-L2 ELSE L-Ll 120 FOR K-l TO L 130 IF MID»<S»<J>,K,1><>MID»<8»<J+l>,K,1> THEN 170 140 NEXT К 150 IF L1XL2 THEN SWAP 8»<J),S«<J+1) 160 GOTO 210 170 FOR P-1 TO M 1B0 IF MID»(S«(J),K,1)-А»(P) THEN 210 190 IF MID»<S»(J+l>,K,1>-А»(P) THEN SWAP 8»(J>,S«(J+l> I GOTO 2.10 200 NEXT P 210 NEXT J, I 220 FOR 1-1 TO N:PRINT B»(I)iNEXT I
В MSX-Бейсике можно сравнивать строки с помощью знаков > и < . Сравнение идёт посимвольно."Больше" считается тот символ,у кото- рого больше код.Латинские буквы имеют коды,идущие по порядку,по- этому для упорядочивания по алфавиту латинских Слов можно исполь- зовать программу 22.8,заменив числовой массив на строковый.Для русских слов нужно использовать данный вариант программы. подумдй домд. Программирование на любом языке можно рассматривать,как составление точных управляющих инструкций для какого-либо исполнителя.При программировании на Бейсике допусти- мо считать исполнителем компьютер.Ийогда создают такие языки, в которых роль исполнителя условно играет некоторый об"ект,находя- щийся на экране. Примером такого языка служит язык ЛОГО.Это язык управления "черепахой".которая может перемещаться по экрану,оставляя След или не оставляя следа.Благодаря этому черепаха может вычерчивать различные геометрические фигуры.(В нашей программе самой черепа- хи на экране не видно,но это легко исправить,пользуясь спрайтами, описание которых приведено в занятий'26) .Мы реализуем лишь нес- колько команд из языка ЛОГО. Состояние черепахи характеризуется положением на экране (координаты X,У),направлением (угол U в градусах).признаком сле- да (PN=1 - след есть,РИ=О - следа нет).Все значения задаются це- лыми положительными числами (без знака). КОМАНДЫ управления черепахой. 1. Д - Сдвиг черепахи на заданное расстояние ь направлении,определяемом углом U. 2. Н - изменение направления поворот на угол Uотносительно ны- нешнего положения. 3. С - черепаха оставляет След. 4. Б - черепаха движется без следа. 5. П - многократное повторение действий,указанных'в круглых скоб- ках, 6. К - окончание программы (буква К должна быть в строке одна). При работе используются русские буквы заглавные или стро- чные .поэтому должен быть включён русский-регистр.Команды можно разделять пробелами.После команд Д,Н,П обязательно указывается целое положительное число.Для Д оно задаёт величину Сдвига,для Н - угол поворота в градусах,для П - число повторений.
Приведём примеры управления черепахой.Сначала заставим че- репаху нарисовать пятиконечную звезду. Б Отмена следа Н 90 Д 40 Н 310 С И 5 (Д 30 Н 144) вверх без слела Сами разберите командные Строки: И 10 (Д 5 Н 90 Д 5 Н 270) Б Н 270 Д 30 Н 90 С П 36 (Д 10 Н 10) Б Д 50 С Н 180 П 5 (П 5 (Д 20 И 144) Б Д 50 Н 144 С) Перейдём к описанию программы,реализующей управление чере- пахой.Работа программы начинается с выдачи на экран краткой инст- рукции и ожидания командной Строки для черепахи ( строки 10-190). Командная строка вводится в переменную РР$ с помощью оператора LINE INPUT ССм. приложение 9).После ввода строка подвергается ана- лизу.В случае обнаружения ошибки на экран выдаётся запрос:"БУДЕ- ТЕ КОРРЕКТИРОВАТЬ СТАРУЮ ПРОГРАММУ?" При нажатии на клавишу "Д" старая командная Строка сохраняется ,при нажатии на любую другую клавишу она удаляется.Если же в программе нет ошибок,она исполня- ется, и рисунок сохраняется на экране,пока не будет нажата любая клавиша. Анализ и одновременное исполнение командной строки произ- водится в строках 1000-1490.Из Строковой переменной РР$ вырезает- ся очередной ствол (строка 1020).Пробел игнорируется (Строка 1030).При командах Б и С изменяется признак PN(строки 1040-1060). Если обнаружена одна из команд Д,Н или П (Строки 1130-1150),то производится считывание идущего далее числа (Строки 1170-1240). Считывание прекращается на первом символе,не являющемся цифрой (Строка 1200 ;коды цифр заключены между 48 и 57).Результат за- сылается в переменную VL(строка 1240).В зависимости от команды производятся смена направления Строка 1250 ,Сдвиг Строки 1270- 1410 ,проверка на открывающую Скобку Строки 1420-1470 . При сдвиге вычисляются координаты нового положения черепа-
хи Х1,У1.При движении со Следом точки Х,У и XI,У1 соединяются от- резком,при движении без следа черепаха сразу переносится в новую точку (строка 1410). Наиболее сложно выполнение повторений.Рассмотрим этот про- цесс на примере рисования звезды. П J А 50 Н 444 ) ЕСли р^0}= 0 t т0 VL и возврат Параметр цикла PR(0)cVL~й ч*.е. N-VZ/0) (см.строки 1100-1110) (см. Строку 1460) ' - адрес возврата,т.е.номер Сим- вола, Стоящего после скобки Практически мы многократно просматриваем повторяемые команды.При вложенных командах П для каждой используется свой параметр и ад- рес возврата „поэтому и используются массивы PR и Vz. Количество исполняемых циклов равно ST.Массивы PR и VZ не описаны (см.при- ложение 8). При обнаружении какой-либо ошибки формируется признак РВ=1 и обработка командной строки прерывается.Для проверки правильнос- ти расстановки скобок ведётся подсчёт открывающих и закрывающих 10 20 30 40 S0 60 70 30 90 'ЗАСТАВКА KEY OFF DATA DATA Д - DATA H - Скобок (СО и CZ).Чтобы не посчитать одну скобку два раза,определяются максимальные адреса уже КОМАНДЫ движение [формат Д<к-во тчк направление [формат Н<градусы>1 DATA С - след от пера [формат СЗ DATA В - дв. пера вез следа [формат БЗ DATA П - повтор [формат П < чел > (<команды>> I CLSi Х=12В:Y=96:U=0:PN-1 подсчитанных (Ско- бок МО и MZ). 100 FOR 1=1 TO 6 110 READ F»sPRINT F»:PRINT 120 NEXT I 130 PRINT "lllllllllllllllllllllllllllllllllllllll" 140 PRINT " ПРОГРАММА (не волее 5 зкр.строк>i" 150 LOCATE 0,21 160 PRINT 170 LOCATE 0,15:PPINT PRBzLOCATE 0,15:PR»="" 180 LINE INPUT PR» 190 IF PR»="K" OR PR»«"k" THEN CLBzEND ELSE 1000 900 CLS:LOCATE 5,9 910 PRINT "ЗУДЕТЕ КОРРЕКТИРОВАТЬ СТАРУЮ" 920 PRINT .-PRINT "ПРОГРАММУ? (ДА - кл.Д/D , НЕТ - люв.др.) 930 PRINT 940 IF PO-1 THEN PRINT"B ПРОГРАММЕ ОШИБКА" 950 PO=0:PRINT :F»=INPUT»(1> 960 IF NOT(F»-"d" OR F»-"D" OR F»-"e" OR F»-"a"> THEN PR»-"" 970 GOTO 90
1000 ’АНАЛИЗ И ИСПОЛНЕНИЕ ПРОГРАММЫ 1010 №1 sST=0:CO=0:CZ=0iMO“0sMZ=0sDP=LEN (PR») : SCREEN 2 1020 W»=MID»(PR»,N,1) 1030 IF W»="_" THEN 1470 1040 IF W»="S" OR W»-"b" THEN PN-0-.EOTO 1470 10S0 IF W»="C" OR W»="c" THEN PN=1:EOTO 1470 1060 IF WtO")" THEN 1130 1070 IF MZ<N THEN CZ-CZ+11MZ»N 1090 IF CZ>CO THEN PO—llEOTO 1490 1090 IF N-DP AND CO>CZ THEN PO-1:EOTO 1490 1100 IF PR(ST)-0 THEN BT-BT-llEOTO 1470 1110 PR(ST)“PR(ST)"1 1120 N-VZ(ST)sEOTO 1020 1130 IF W»="fl" OR Ы»“"д" THEN 1170 1140 IF W»="H" OR W»“"H" THEN 1170 1150 IF Ы»="П" OR W»""n" THEN 1170 1160 PO“1>EOTO 1490 1170 K=1iSM»=W»IL»-"" 11B0 N-N+liIF N>DP THEN 1230 1190 W»“MID»(PR»,N,1) 1200 IF ASC(W»X4B OR ASC(W»)>57 THEN 1220 1210 L»=L»+W»sK“K*11 GOTO 1190 1220 IF THEN 1180 1230 IF K-l THEN PO“1|EOTO 1490 1240 N-N-lsVL-VAL(L»> 1250 IF SM»="H" OR SM»-"h" THEN U=U+3.14159WVL/180:GOTO 1470 1260 IF SM»="n" OR SM»="n" THEN 1420 1270 IF VLC.5 THEN 1470 12B0 X1-X+VLXCOS(U):Y1=Y-VL#SIN(U) 1270 IF F'N=0 THEN 1410 1300 KF-(Yl-Y)/(Xl-X) 1310 IF ABS(X1-X)<ABS(Yl-Y) THEN 1370 1320 FOR XT=X TO XI STEP SEN(Xl-X) 1330 YT=KFM(XT—X>*Y 1340 PSET(XT.YT) 1350 NEXT XT 1360 EOTO 1410 1370 FOR YT=Y TO Y1 STEP SEN(Yl-Y) 1380 XT-(YT-Y)ZKF+X 1390 PSET(XT.YT) 1400 NEXT YT 1410 X“X11 Y-.Y1 lEOTO 1470 1420 N-N+llIF N>-DP THEN PO-liEOTO 1490 1430 W»-MID»(PR»,N,1) 1440 IF W»<>"(" THEN PO-liEOTO 1490 1450 IF M0<N THEN CO=CO+1IMO»N 1460 ST-ST*11 PR(ST)"VL-11 VZ(ST)»N+1 1470 N-N+llIF CZOCO AND N>DP THEN PO»1|GOTO 1490 14S0 IF DP<NTHEN F*»INPUT*(1) ELSE 1020 1490 SCREEN 01RESTORElEOTO 900 Часто сразу после запуска программ Становится ясно,что ь ней содержится ошибка.Для прерывания таких программ с помощью 1 on stop eosub i500tstop on CTRL STOP нужно добавить две 1500 return 1490 Строки Тем.занятие 28).
25J. 10 INPUT"N>M"।N,M 20 Fl-1 30 FOR 1-1 TO NiF1-F1XII NEXT I 40 F2-1 50 FOR 1-1 TO MiF2-F2XIsNEXT I 60 F3-1 70 FOR 1-1 TO N-MiF3-F3XI:NEXT I 80 C-Fl/(F2XF3) 90 PRINT C 25,2.- Число,факториал которого вычисляется,нужно занести з пе- ременную К (аргумент).результат будет получен в переменной F. 10 INPUT"N>M"|N,м 20 K-N1EOSUB 100 30 C-FlK-MtEOSUB 100 40 C-C/FiK-N-MiEOSUB 100 50 C-C/FiPplNT CiEND 100 ’ВЫЧИСЛНИЕ ФАКТОРИАЛА 110 F-liFOR 1-1 TCf KiF-FXIiNEXT I 120 RETURN 25.3, Подпрограмма "ПРЯМОУГОЛЬНИК" работает аналогично коман- де LINE ,но не в графическом,а в символьном режиме.Переменные XI У1 и Х2,У2 задают номера позиции и строки концов диагонали прямо- угольника. Горизонтальные стороны прямоугольника выпечатывают- ся с помощью строковой функции STRING^ (см.приложение 9). Х1.У1 XXXXXXXXXX X X X X X M X X xxxxxxxxxx Х2.У2 Вертикальные стороны прямо- угольника печатаются с по- мощью оператора цикла (стро- ки 570-600). 10 CL8lА»-"АРГУМЕНТ":Ft”"ФУНКЦИЯ" 20 X1-0IY1-0 30 X2-LEN(A»)+3iY2-Y1+4 40 LOCATE Xl+2,Yl+2iPRINT AS 50 EOSUB 500 60 X1-X2lX2-X1+LEN(F*>+3 70 LOCATE X1+2,Y1+2iPRINT Ft 30 EOSUB 500 90 Xl-01Y2-151G0SUB 5001 END 500 ’ПРЯМОУГОЛЬНИК 510 IF X1>X2 THEN SWAP XI, X2 520 IF Y1>Y2 THEN SWAP Y1.Y2 530 LOCATE XI,Y1 540 PRINT STRINGS(X2-X1+1,"X") 550 LOCATE XI,Y2 560 PRINT STRINGS(X2-X1+1,"X"> 570 FOR YT-Y1 TO Y2 5S0 LOCATE Xl.YTiPRINT "X" 590 LOCATE X2,YT|PRINT "X" 600 NEXT YTiRETURN
25.Ч тобы получить точку М,которая делит отрезок АВ в отноше- нии К,достаточно сжать этот отрезок в К раз относительно точки А. Тогда точка В перейдёт в точку М.Сжатие и растяжение подробно рас- сматривались в занятии 13. Вершинами рамки являются точки А,В,С и D.Изменяя в цикле коэффициент сжатия,будем делить РС.При этом будут получены точки Mj и Mg.Отрезок,соеди- няющий эти точки,является очередной образующей седла. 10 SCREEN 2 20 Xl-10!Y1-10 30 X2-S0!Y2-1B0 40 Х3=250!Y3-10 50 X4-160SY4=150 60 FOR 1=1 TO 2 70 FOR K=0 TO 1 STEP 1/20 B0 XA=X1:YA=Y1iXB=X2iYB=Y2 90 GOSUB 5001PSET(XM,YM) 100 XA-X41YA-Y41XB=X3iYB=Y3 110 GOSUB 500iLINE-(XM,YM) 120 NEXT К 130 SWAP X2,X4iSWAP Y2,Y4 140 NEXT I 150 F»-INPUT»(1) 160 END 500 ’ДЕЛЕНИЕ ОТРЕЗКА 510 XM=XA+(XB-XA)MK 520 YM=YA*(YB-YA)MK 530 RETURN в данном отношении отрезки АВ и Вторая группа образующих получа- ется аналогичным образом на ба- зе отрезков AD и ВС.Этим объяс- няется наличие цикла по I и пе- рестановка точек В и J в строке 130. 25.5 . Ломаная состоит из пяти звеньев,координаты вершин записа- ны в DATA.Подпрограмма "ЛОМАНАЯ" считывает очередную пару коорди- нат и обращается к подпрограмме "ПОВОРОТ".После того как получены координаты точки после поворота,происходит возврат в подпрограмму "ЛОМАНАЯ".Благодаря этому строится ломаная повёрнутая на угол V относительно центра экрана. Величины X и У,записанные в РАТА,представляют собой смеще- ния относительно горизонтали У=96 и вертикали Х=128 соответственно. При повороте на угол V точка М переходит в точку Мп. 128,96 Величины X и f на рисунке отри- цательны. Вертикаль повёрнутая на угол II
10 DATA Ь 20 DATA 0,50,-6,68,10.57,-10.57,6,68.0.50 30 SCREEN 2 40 FOR U=0 TO 6.27 STEP 3.14159/4 50 GOSUB 1001 REM ЛОМАНАЯ 60 NEXT U 70 F*=INPUT*(1):END 100 "ЛОМАНАЯ 110 READ M, X , Y 120 GOSUB 300:FEM ПОВОРОТ 130 PSET(X.Y) 140 FOR 1=1 TO N'1 150 READ X.Y:GOSUB 300:REM ПОВОРОТ 160 LINE-(X,Y) 170 NEXT I 180 RESTORE 190 RETURN 300 "ПОВОРОТ 310 Р"50Р(Хл2+Т'-2) :FI-ATN(X/Y> 320 X-128+RM8IN(U+FI> 330 Y-96+R»C0S(U+FI> 340 RETURN 05.6. Заменив подпрограмму "ПОВОРОТ" на подпрограмму "РАСТЯЖЕНИЕ" в предыдущем задании,получим вместо семейства расположенных по кругу фигур семейство вложенных друг в друга фигур.Для нагляднос- ти звезда заменена на треугольник.Вместо угла в цикле изменяется 10 data 4 коэффициент растяжения К. 20 DATA -2,0.2,2,2,-2,-2.0 40 FOR К-4 ТО 4В STEP 4 60 NEXT К 300 "РАСТЯЖЕНИЕ 310 Х-128+ККХ 320 Y-96+KMY 330 "УБРАТЬ СТРОКУ 2.5,7. Координаты вершин исходного квадрата (большого) считы- ваются в элементы массивов X и У,Подпрограмма "ЛОМАНАЯ" строит этот квадрат.После этого в цикле (строки 100-140) каждая из сто- рон квадрата делится в отношении 0,I.Полученные координаты зано- сятся в те же массивы X и У.Затем строится новый квадрат. А1 ________ $1 <• А? ъ А1-----------•— в 1-------•— С1--------р- ---------р- А1 2 2 ХД । ХД | Х2У> | | ХД В1 "С2 А2 В2 U2 ^2 1 Г W Wz В2 4 ХД
10 DATA 4 20 DATA 0, 0,0.190,190,190,190,0 30 READ Ns DIM X(N), Y(N) 40 FOR 1-0 TO N-lsREAD X(I).Y(I)sNEXT I 50 SCREEN 2 60 K“.1 70 FOR J=1 TO 20 B0 X(N)=X(0) s Y(N)=Y(0) 90 GOSUB 2001 REM КВАДРАТ 100 FOR P»0 TO N-l 110 XA=X (P) : YA=Y(P) s XB=X (P+1) s YB=Y‘(P+1) 120 GOSUB 400 130 X(P) =XMs Y (P> “YM 140 NEXT P,JsFt«INPUTt(1)sEND 200 ’ЛОМАНАЯ 210 PSET(X(0>.Y(0)) 220 FOR 1 = 1 TO Ns LINE-<X(I),Y(I))sNEXT I 230 RETURN 400 ’РАСТЯЖЕНИЕ 410 XM"XA+(XB-XA)MKs YM-YA+(YB-YA)MX 420 RETURN 251 6. Программа выдаёт на экран несколько занумерованных на- званий функций.После ввода номера включается графический режим и строится график соответствующей функции.Выбор подпрограммы,вычис- ляющей значение нужной функции.производится с помощью переключа- теля подпрограмм. Подпрограмма вычисления логарифма содержит условие,задаю- щее область определения этой функции. После того как график построен можно завершить программу, нажав на клавишу К.При нажатии на другую клавишу происходит воз- 10 dim Ft (6) !Open"grf'! "as#i врат к меню. 20 Ft(1>«"СИНУС"!Ft(2)="КОСИНУС":Ft(3)“"ТАНГЕНС" 30 Ft(4)АРКТАНГЕНС":Ft(5)ЛОГАРИФМ"s Ft(6 ) ="ЭКСПОНЕНТА" 40 CLS:PRINTS PRINT " ГРАФИКИ ФУНКЦИЙ" 50 FOR 1=1 ТО 6:PRINT:PRINT Ij".";Ft(I>:NEXT I 60 PRINT :PRINT iPRINT "ВВЕДИТЕ НОМЕР" 70 Nt-INPUTt(l):J«VAL(Nt> B0 IF J<1 OR J>6 THEN 70 90 SCREEN 2s LINE(128,0)-(128,191)sLtNE(0,96)-(255,96) 100 PSET(0,0),4sPRINT #l,Ft(J> 110 FOR X=-4 TO 4 STEP 1/32 120 ON J GOSUB 500,600,700,800,900,1000 130 PSET(12B+32XX,96-32XY) 140 NEXT X 150 Rt=INPUTt(l) 160 IF Rt-"K" OR Rt-"k" THEN END ELSE SCREEN 0SGOTO 40 500 Y«SIN(X>sRETURN 600 Y=COS(X)sRETURN 700 Y=TAN(X >:RETURN 800 Y-ATN(X)sRETURN 900 IF X»<0 THEN Y—10 ELSF Y.inss»> 910 RETURN 1000 Y--EXP < X ) s RETURN
25.9. Программа аналогична предыдущей,но в ней используется два переключателя подпрограмм. При вводе номеров 1,а затем 2 будет построен график функ- ции У =|Т&(Х) I . 10 CLSsPRINT 1 PRINT "СЛОЖНЫЕ ФУНКЦИИ" 20 PRINT I PRINT 30 PRINT "1.ТАНГЕНС" 40 PRINT "2.МОДУЛЬ" 50 PRINT "3.ЦЕЛАЯ ЧАСТЬ" 60 PRINT SPRINT SPRINT 70 PRINT "ВВЕДИТЕ ДВА НОМЕРА" S0 N1t-INPUTt(1)в J1-VAL(N1$> 90 N2t—INPUTS(1> s J2”VAL(N2S) 100 IF JK1 OR J2<1 OR Jl>3 OR J2>3 THEN B0 110 SCREEN 2lLINE(128,0)~(128,191)iLINE(0,96)-(255, 96) 120 FOR X—4 TO 4 STEP 1/32 130 Y=X 140 ON JI GOSUB 500,600,700 150 ON J2 GOSUB 500,600,700 160 PSET(128+32XX,96-32XY) 170 NEXT X 100 Rt-INPUTt(l) 190 IF Rt»"K" OR Rt-"k" THEN END ELSE SCREEN 0s GOTO 10 500 Y-TAN(Y)sRETURN 600 Y=ABS(Y)sRETURN 700 Y-INT(Y)I RETURN Q.5. fo. Редактор позволяет не только рисовать стрелками,но и включать-отключать цвет пера нажатием на пробел.Вокруг точки,в которой в данный момент находится перо,можно построить окружность или звезду.Для построения окружности нужно нажать на клавишу"0", после чего ввести значение радиуса (окончание ввода - нажатие на клавишу^).Нажатие на "Z" и ввод величин R;N ,М позволяет постро- ить звезду.Для ввода чисел используется подпрограмма "ВВОД". 10 DIM PR(2),PDt(2) 20 PDt (0) e"R-=" s RD» (1) - "№" в PDt (2) = "M«" s PI-4XATN (1) 30 SCREEN 2sOPEN "GRPs" AS*1 40 X=12BsY—96sC—4 50 PSET <X,Y).C 60 S--STICK (0) 70 Pt=INKEYt B0 IF S=1 OR 6=2 OR S=B THEN Y-Y-l 90 IF S-2 OR S=3 OR S=4 THEN X”X + 1 100 IF S-4 DR S=5 OR S-6 THEN Y=Y+1 110 IF S=6 OR S-7 OR S=B THEN X=X-1 120 IF Pt=" " AND C-15 THEN C=4sG0T0 160 130 IF Pt»" " AND C=4 THEN C=15 140 IF Pt="O" OR Pt="o" THEN GOSUB 500 150 IF Pt="Z" OR Pt="z" THEN GOSUB 1000 160 PSET(X.Y) 170 GOTO 50
500 ’ ОКР УЖНОСТЬ 510 К-0 :GOSUB 1500:REM ВВОД 520 CIRCLE (X, Y) , PR (0) 530 RETURN 1000 'ЗВЕЗДА 1010 K=2:GOSUB 1500 1020 R—PR < 0 > : N=FR (1 ) : M=PR < 2 > 1030 FSET(X.Y-R) 1040 FOR 1=1 TO N 1050 U = 14 2 PIX M / N+FT / 2 1060 X1=X+R*COS (ID : Yl-Y-RXSIN (U) 1070 LTNE-(Xl.Yl) 1080 NEXT I 1090 RETURN 1500 ’ВВОД 1510 FOR J=0 TO К 1520 F«="" 1530 LIME(0.0)~(255.10).4.BF 1540 PSET(0,0).4:PRINT #1.FD»(J)( 1550 C«»INPUT»(1):PRINT #l,C*j 1560 IF ASC(C»)=13 THEN 1580 1570 F«=F«+C«:GOTO 1550 1580 PR(J>—MAL(Ft) 1590 NEXT J 1600 LINE(0.0)-(255.10),4.BE!RETURN M = 2 - соединение через 2 в ершины подумдй ДОМР1. в строках 40 - 90 строится внешняя рамка.Строки 40 и 90 служат для построения горизонтальных гра- ниц рамки ;.цикл, лежащий между этими Строками .Строит вертикаль- ные границы.При этом используются строковые функции,описанные в приложении 9.Печать в цикле проходит без перевода строки (по- следний знак в строке 60 - точка с запятой).Подпрограмма,начи- нающаяся Со Строки 500.проверяет,записан ли номер текущей стро- ки в строку данных.Каждая такая строка предполагает возврат пе- чатающей головки в начало строки (подпрограмма,начинающаяся со Строки 600). После этого производится выбор подпрограммы,которая до- печатывает в Строку дополнительные символы.Зти символы образу- ют внутреннюю рамку и тексты,расположенные на обложке.При взгля- де на подпрограммы сразу видно,что будет напечатано в рамке.При создании программы можно использовать это подобно тому,как в задании 5.6 строилась символьная картинка. Допечатка символов производится одним и тем же шрифтом, однако можно было бы производить переключение шрифтов (без пе- ревода Строки) ,но это требует более сложной подгонки.
10 DATA 2,4,26,27,28,29,30,31,32,48,100 20 READ N 30 LPRINT CHR»(14) 40 LPRINT " "^STRING»(34,"1") 50 FOR 1-1 TO 57 60 LPRINT ” I"jSPACE»(32))"I"> 70 GOSUB 500 80 NEXT I 90 LPRINT " "(STRING»(34, "I") 1'00 END 500 IF I-N THEN GOSUB 6001READ NiK-K+liON К GOSUB 1000, 2000,3000,4000,5000,6000,7000,8000,9000,10000 ELSE LPRINT 510 RETURN 600 FOR J-l TO 33 610 LPRINT CHR»(8))1 NEXT J 620 RETURN " МИНИСТЕРСТВО ПРОСВЕЩЕНИЯ РСФСР" " НИИ ШКОЛ" iiiiiimiiiiiiiiiiiim " ।" " I ПРАКТИЧЕСКИЕ ЗАНЯТИЯ "I I" 1000 LPRINT 1010 RETURN 2000 LPRINT 2010 RETURN 3000 LPRINT 3010 RETURN 4000 LPRINT 4010 RETURN 5000 LPRINT 5010 RETURN 6000 LPRINT 6010 RETURN 7000 LPRINT " | НА ПЭВМ ЯМАХА I1 7010 RETURN 8000 LPRINT "I I' 8010 RETURN 9000 LPRINT " lllllllllllimillllllll 9010 RETURN 10000 LPRINT 10010 RETURN МОСКВА - 1987" 26. I. Г) Происхождение кодов гм и 129. ввва 10 SCREEN 2,0 12910 255 20 SPRITE»(0)-CHR*(255)+8TRING»(6,CHR»(129))+CHR»(255) 30 FOR X=0 TO 255 40 Y=96-60MSIN(X/20) 50 PUT SPRITE 0,(X,Y),,0 60 NEXT X г CHR$(129) 6 раз. 0 функции STRING^ рассказано в приложении 9
26.2. Один спрайт воспроизводится на двух разных плоскостях. 10 SCREEN 2,1 20 SPRITE*(0) «СНП»(255)+CHR»(129)+CHR»(255) 30 FOR Х=0 ТО 255 40 PUT SPRITE 0,<X,90>,,0 50 PUT SPRITE 1,(245-Х,90),2,0 60 NEXT X 26.3, На одной плоскости попеременно печатается одна из двух 10 РАТА 1,2,2,1,3,7,11,19,11,3,2,2,2,6,0,0 20 DATA 120,64,64,123,192,224,208,224 30 РАТА 192,192,64,64,64,64,64,96 40 PIN К(32)(SCREEN 2,3:3»="" 50 FOR 1-1 TO 32 60 REAP К(I)1S*-S*+CHR«(K(I)) 70 NEXT I 80 SPRITE»(0>«S» 90 К (8) =7: К (9) =3: К (14) =2: К (15) =2: К (16) =6 100 К(24)=200:К(25)=20B:К(30)=96:К(31>=0:К(32)=0 110 3»="" 120 FOR I«1 TO 32 130 S«=S*+CHR»(K(I)) 140 NEXT I 150 SPRITE»(1)=3» 160 FOR 1 = 1 TO 200 170 PUT SPRITE 0, (119,90) , ,0 1B0 FOR T«1 TO 100INEXT T 190 PUT SPRITE 0,(119,90),,! 200 FOR T=1 TO 100:NEXT T 210 NEXT I 26.4, Изображение рисуется и pa скрашивается. Затем отделяется компонента каждого цввта,изображается отдельно,создаётся со- ответствующий спрайт, и все спрайты печатаются на разных пло- скостях, но от одной координаты. Изображе- ние в це- лом Компоне- нта бе- лого цвета Компонента зелёного цвета
10 DATA 16,48,112,240,240,112,48,16 20 DATA 8,12,14,13,15,14,12,8 30 SCREEN 2,1 40 FDR 1-0 TO 1 50 S*""" 60 FDR J-l TD S 70 READ A:S*“S«+CHR*(A) 80 NEXT J 90 SPRITE*<I)“S* 100 NEXT I 110 FDR X-0 TD 255 120 PUT SPRITE 0,(X,90),,0 130 PUT SPRITE 1,(X,90),2, 1 140 NEXT X 2.6-5. Для установки Спратта в режиме SCREEN 1 используем не- большую программу.Обратите внимание на то,что в 10-й Строке не указан операнд;задающий размер спрайтов.Это означает,что сохра- няется размер спрайтов,заданный в последней из программ.При этом сохраняются все ранее созданные образы. При очистке экрана изображение спрайта сохраняется. 10 SCREEN 1 20 SPRITE*(0)=CHR*(255)+STRING*(7,CHR*(129)) 30 PUT SPRITE 0,(100,100),,0 Чтобы убрать спрайт с экрана,достаточно на ту же плоскость поместить "пустой" спрайт.Это можно сделать в режиме прямого PUT SPRITE 0,(0,0),,5 диалога. 26.6. Вставка в программу из задания 25.10. 30 SCREEN 2,0:OREN "GRPi" АВ #1 35 SPRITE*(0)“CHR*(248)+STRING*(3,CHR*(136))+CHR*(24S) 50 IF C-15 THEN PSET(X,Y),C 160 PUT SPRITE 0,(X-2,Y-3),,0 26.7. Меню в программе с использованием спрайтов можно сделать очень удобным и наглядным.Например в данном примере меню вы- полнено в виде карты программы.В прямоугольниках указаны на- звания всех разделов программы.Перемещая указатель Стрелками можно поместить его в любой прямоугольник.Нажав на пробел,по- падаем в нужную часть программы. Следует иметь ввиду,что ниже приведён только тот фрагмент программы,который обслуживает меню.
-220- 10 OFEN"grp:"FOR OUTPUT AS #1 20 COLOR 7,1,1:SCREEN 2,0 30 SPRI ТЕЛ(1) "CHR* (254) +CHR* (124 > +СНРЛ (56) +СНРЛ (16) 40 LINE(62,32)-(193.55).6,BF 50 PSET(70,40).6 60 PRINT #1."КАРТА ПРОГРАММЫ" 70 PSET(15,85).0 00 PRINT 1*1, "ВВЕДЕНИЕ" 90 I., INF < 7,77) - (85, 1,00) , 6, В 100 PSET(15,175),0 110 PRINT #1,"ОПОРНЫЙ СИГНАЛ" 120 LINE(7,167)-(130,190),6, В 130 CIRCLE(70,140),20,4 140 PAINT(70,140),4 150 CIRCLE(70,140),14,10 160 CIRCLE(63. 140) ,7, 10,0,3. .14 170 CIRCLE(77,140),7,10,3.14,6.28 1(30 PAINT (70, 134) , 10 190 PSET(14®,80) , 0 200 PRINT #1,"КАТАЛОГ" 210 LINE(132,72)-(200,95),6, В 220 PSET(140,130) , 1 230 PRINT #1,"ЛИТЕРАТУРА" 240 LINE(132,122)-<225,145),6,В 250 PSET(160,175),1 260 PRINT #1,"ОКОНЧАНИЕ" 270 LINE(152,167)-(237,190),6,В 280 PSET<50,10),0 290 PRINT #1, "-указатель" 300 X-30SY-10 310 PUT SPRITE 1, (X,Y), 10, 1 320 8-8TICK(0> 330 IF(S=1 OR S=2 OR S-B) AND Y>0 THEN Y=Y-5 340 IF(8=5 OR S=4 OR 8=6) AND YK191 THEN Y-Y+5 350 IF<8-3 Oft S-4 OR 8-2) AND X<255 THEN X-X+5 360 370 IF(S=7 OR РЛ»INKEY* S-6 OR S-8) AND X>0 THEN X=X-5 380 IF РЛ-" " AND X<95 AND Y>67 AND YC110 GOTO 1000 390 IF РЛ-" " AND X< 140 AND Y>157 GOTO 2000 400 IF РЛ-" " AND X7122 AND Y>62 AND Y<105 GOTO 3000 410 IF РЛ-" " AND X>122 AND Y>112 AND Y<155 GOTO 4000 420 430 IF РЛ-" " GOTO 310 AND X>142 AND У>157 GOTO 5000 26.8. Как обычно положение Спрайта задаётся координатами Х,У. Направление движения определяется переменными ]>Х и DY.Кроме то- го эти же величины определяют скорость перемещения спрайта. Спрайт движется,отражаясь от краёв экрана.Величины ТХ и ЭУ принимают то положительные,то отрицательные значения.При вводе величины V,определяющей скорость,необходимо изменить ве- личины])! и 1)У так,чтобы знак этих величин сохранился,а абсо- лютная величина стала равной V (Строка 60).
10 SCREEN 2. 1 20 SPRIТЕ»(0)-CHR»(255)+STRING»(6.CHR»(129))+CHR*(255 > 30 X-l28sY-961DX-1iDY-1 40 PUT SPRITE 0, (X,Y>,,0 50 V»=INKEY» 60 IF V»O"" THEN V-VAL<V*) IDX-SGN(DX)MV:DY-SGN<DY>MV 70 IF X»<0 OR XX-240 THEN DX—DX 80 IF Y=<0 OR Y>-175 THEN DY—DY 90 X-X+DX:Y-Y+DY 100 GOTO 40 24.9. в процессе работы программы можно изменять форму cnpui- та.В программе спрайт движется по диагонали.й точках с координа- тами кратными 10 производится изменение формы Спрайта,точнее раз- мера.Спрайт представляет собой растущий квадрат. Десятичные коды горизонталей,составляющих различные квад- раты: 11 111 ri 128 —111111 224 анкш 248 вииио 254 —I 1 I I I 1 I 192 — НИ 240 № 232 МММ 255 10 screen 1,1 Эти коды накапливаются в переменной А: 20 к—1:А-0 192=128+64 , 224=192+32 , 240=224+16 и т.д. 30 for х-0 то 70 40 IF X/10<>INT(X/10) THEN FOR T-0 TO 1001 NEXT TlGOTO 100 50 K-K+1:S»-"":А—А+2Л(7-K > 60 FOR 1=0 TO К 70 S»-S»+CHR»(A) 80 NEXT I 90 SPRITE*(0)=5» 100 RUT SPRITE 0, (X,X >,,0 110 NEXT X 26.iO. Программа предназначена для создания спрайтов 8*8.По решётке Стрелками перемещается двуцветный указатель (он виден и на фоне цвета 4,и на фоне цвета 15) .При нажатии на клавишу IMS в соответствующую клетку вставляется квадратик цвета 15.Такие квад- ратики образуют изображение спрайта.Для удаления квадратика нуж- нажать на клавишу JEUСправа от решётки отображается вид спрайта, сформированный к данному моменту.После нажатия на пробел произво- дится переключение в режим SCBEEM 1.Печатаются десятичные коды, необходимые для создания спрайта и Сам спрайт.После этого програ- мма завершает свою работу. Образ создаваемого спрайта хранится в SFMTE$(1) .Для его изменения используется массив А.Каждый элемент содержит код соот- ветствующей горизонтали спрайта.Номер строки,в которой находится указатель равен!,а номер столбца равен I(отсчёт столбцов произ- водится справа на лево).
Коды горизонталей- и? 30 A A A A A A A A DIM A<7> SCREEN 2,1 J (0) (1) (2) (3) (4> (.7) 76543210 2 26 24 2" 2 ---------- _______________________по столбцам SPRIТЕ*(2 >-CHR*(192)+CHR*(12В) + CHR*(12В)+CHR*(1951 35 SPRIТЕ*(3)“CHR*(4В)+CHR*(16)+CHR*(16)+ CHR*(4В) 40 FOR Х-0 ТО 140 STEF 20 50 FOR -Y=0(ТО 140 STEP 20 60 LINE<X,Y)-(Х+20,Y+20).,В 70 NEXT Y,X 80 X-101Y-10>1=7:J-0 90 PUT SPRITE 2.(X-4.Y-5).15.2 95 PUT SPRITE 3, (X-4,Y-5),4,3 100 PUT SPRITE 1.(200,50),,! 110 S-STICK(0) 120 IF SO0 THEN GOSUB 500:REM ПЕРЕМЕЩЕНИЕ ПО РЕШЕТКЕ 130 P*-INKEY* 140 IF P»='L“ THEN 200 150 IF P*O"" THEN GOSUB 1000: REM УДАЛЕНИЕ и ВСТАВКА 160 GOTO 90 200 SCREEN 1 210 PRINT "СПРАЙТ" 220 PRINT :PRINT "DATA "SPRINT 230 FOR K-0 TO 7 240 PRINT A(K)j 250 IF K<>7 THEN PRINT 260 NEXT К 270 PRINT (PRINT 280 PUT SPRITE 0,(120,130),,! 290 END 500 ’УПРАВЛЕНИЕ СТРЕЛКАМИ 510 IF (S-1 □R S«2 OR 8-8) AND Y>10 THEN Y-Y-20:J-J-l 520 IF (S-2 OR S«3 OR 3=4) AND X<150 THEN X-X+20:1=1-1 530 IF (S-4 OR B«5 OR S=6) AND Y< 150 THEN Y-Y+20:J-J+l 540 IF <S=6 OR S«7 OR S-B) AND X>!0 THEN X-X-20:1=1+1 550 RETURN 1000 'УДАЛЕНИЕ и ВСТАВКА 1010 IF ASC(P*)-18 AND P0INT(X,Y>-4 THEN LINE(X-4.Y-4)-(X+4,Y+4),,BF:A<J)-A(J)+2Л1 1020 IF ASC(P*)-127 AND POINT(X,Y)-15 THEN LINE(X-4,Y-4)-(X+4,Y+4),4,BF:A(J)-A(J)-2Л1 1030 S*="" _______ 1040 FOR K-0 TO 7 1050 S*»S*+CHR*(A(K)) 1060 NEXT К 1070 SPRITE*(1>=S* 10B0 RETURN «-I Цвет центра клетки Если POINT(X,У) = 15, то код уже содержит соста- вляющую 21.Можно прозео- дить удаление. Если POIN т (X, У) =4, то клетка свободна,код не Со- держит составляющей 21. можно проиводить вставку. >0 - составляющие кода Код клавиши IUS равен 18. Код клавиши DEL, равен 127. О POINT см.домашнее задание 21.
ПОДУМАЙ ДОПА- В данной программе реализована очень простая игра: по пря- моугольнику катится шарик.Вдоль краёв прямоугольника можно пере- мещать. дощечки,от которых шарик отражается.Если шарик пересекает границу прямоугольника в тот момент,когда дощечка находится где то в стороне,то он покидает экран.Перед игроком стоит задача удер- жать шарик в прямоугольнике. Для управления каждой дощечкой используется особая пара Дощечка движется в три раза быстрее шарика.Можно испробо - вать и другие соотношения между скоростями. 10 OPEN "grp:" AS #1 20 CLS:LOCATE ,10 30 PRINT 10 11 Удержи шарик ,в прямоугольнике 40 F*-INKEY*:IF F*=”" GOTO 40
50 SCREEN 2,2 60 BPRITE*(0)-CHR*(112)+STRING*(3,CHR* <249)) +CHR* (112) 70 SPRITE*(1>-STRING*(2,CHR*(255)) +STRING*(14,CHR*(0))+STRING*(2,CHR*(255) > S0 SPRITE*(2)“STRING*(16,CHR*(192)) 90 LINE(25,25)-(230, 166) , ,B 100 PSET(110,5),4 110 PRINT Ml,"5 6" 120 LINEU05, 15)-(115, 15) 130 PSET(107,14):РВЕТ<107,16) 140 LINE(142,15)-(152,15) 150 PSET(150,14):PSET(150,16) 160 PSET(110,1B1),4 170 PRINT Ml,"И T" 1B0 LINE(105,175)-(115,175) 190 PSET(107,174)IPSET(107,176) 200 LINE(142,175)-(152,175) 210 PSET(150,174)iPSET(150,176) 220 PSET(245,80),4iPRINT M1,"X" 230 PSET(245,95),41 PRINT Ml,">" 240 LINE(240,75)-(240,85) 250 PSET(241,77)IPSET(239,77) 260 LINE(240,95)-(240,105) 270 PSET(241,103)IPSET(239,103) 280 PSET(0,80),41 PRINT М1,"Й" 290 PSET(0,95),4:PRINT М1,”Ф" 300 LINE(15,75)-(15,85) 310 PSET(16,77)1PSET(14,77) 320 LINE(15,95)-(15,105) 330 PSET(16,103):PSET(14,103) 340 X-1281Y-96:DX-11DY--1 350 Xl-251Yl-22:X2-2151Y2-166 360 X3-231Y3-1501X4-231IY4-24 400 F*“INKEY* 410 IF F*="5" OR F*="7," THEN Xl-Xl-3 420 IF F*»"6" OR F*="V THEN Xl-Xl+3 430 IF F*-"i" OR F*-"I" OR F*-"h" OR F*-"M" THEN X2-X 440 IF F*“"t" OR F*“"T" OR F*“"t" OR F*-"T" THEN Х2-/ 450 IF F*="j" OR F«-"J" OR Е*="й" OR F*="tf" THEN Y3=Y3-3 460 IF F*="f" OR F*-"F" OR F*»"<," OR Р*="Ф" THEN Y3-Y3+3 470 IF F*="X" OR F*=":" THEN Y4=Y4-3 480 IF F*-"." OR F*=">" THEN Y4-Y4+3 490 IF X-26 AND ABS (Y3-Y+8) <9 THEN DX—DX 500 IF X-226 AND ABS (Y4-Y+8) <9 THEN DX—DX 510 IF Y=26 AND ABS (Xl-X+S) <9 THEN DY—DY 520 IF Y-161 AND ABS(X2-X+S)<9 THEN DY—DY 530 X-X+DXiY-Y+DY 540 PUT SPRITE 0,(X,Y),,0 570 PUT SPRITE 1,(XI,Yl),,1 580 PUT SPRITE 2,(X2,Y2),,1 590 PUT SPRITE 3,(X3,Y3),,2 600 PUT SPRITE 4,(X4,Y4),,2 610 IF X>255 OR X<-5 GOTO 1000 620 IF Y>191 OR Y<-5 GOTO 1000 630 GOTO 400 1000 PSET(100,90),41 PRINT Ml,"ПРОЩАЙ" 1010 FOR T-l TO 1000 iNEXT T I END К) ю
2 7.1. 10 SCREEN 2 20 CIRCLE(120.90),00 30 TIME-0 40 IF TIMEC500 GOTO 40 50 END 27.2. 10 SCREEN 2 15 TIME-0 20 CIRCLE(120,90).70 25 Tl-TIME 30 PAINT(120.90) 35 T2-TIME 40 SCREEN 0 50 PRINT Tl/50,(T2-T1)/50 27. з: 75 TIME-0 85 IF TIME/300073 THEN END 27. 4. В программе используются четыре массива: X и У - координаты соответствующего спрайта; Т - время последнего перемещения спрайта; IN - интервал,через который сдвигается спрайт. 10 DIM X(3).Y(3>,Т(3>,IN(3) 20 SCREEN 2,1 30 BPRITE*(0)-CHR*(255)+CHR*(129)+CHR*(255) 40 Y(1)-50sY(2) = 100i Y(3>=150:X(1)=0:X(2)-0:X(3)-0 45 IN(1)-15s IN(2)=25:IN(3)-35 50 FOR K-l TO 3sT(K)-TIMES NEXT k 60 FOR 1-1 TO 3 70 IF TIME-T(I)>114(1) THEN GOSUB 100 80 NEXT I 90 IF X (3X255 THEN 60 ELSE END 100 X(I)-X(I> + 1 110 PUT SPRITE I.(X(I).Y(I))..0 120 T(I)-TIME:RETURN 27. 5. 10 X-RND(-TIME) 20 FOR 1=1 TO 10 30 PRINT RND(l) 40 NEXT I
27.6. Коэффициент А В-А+1 растягивает \ \ отрезок (0,1) на отрезок [А,В] АV. \\ в 1» input а. в \v\l\ I // /7 /7 20 X=RND (-TIME) \ЧМ\ /////7 /</ 30 FOR 1 = 1 ТО 15 0 1/7// 40 PRINT A+INT((В-А+1>*RND(1>> 50 NEXT I 1 27.7. В программе последовательно вырабатываются случай- ные числа.Очередное число сравнивается со всеми предыдущими и заносится в массив,если не совпадает ни с одним из них. 10 DIM S(6):X=RND(-TIME) 20 SL(1)=1+INT(RND(1)*49)lK-1 30 P“1+INT(RND(1)*49) 40 FOR 1=1 TO К 50 IF BL(I)=F THEN 30 60 NEXT I 70 K-K+l1SL(К)-P 80 IF K<6 GOTO 30 90 FOR 1-1 TO 6iPRINT SL(I)|lNEXf I 27. B. a) 10 SCREEN 2iX=RND(-TIME) 20 FOR 1-1 TO 100 30 X=RND(1)*256:Y-RND(1)*192 40 LINE(128,96)-(X,Y) 50 NEXT I 60 GOTO 60 6) 40 IF 1=1 THEN PSET(X,Y) ELSE LINE-(X.Y) B) 10 SCREEN 2iX=RND(-TIME) 20 X1=RND(1)*256: Yl-RND(1)*192 30 X2«RND(1)*2561Y2-RND(1)*192 40 C-l+RND(1)*15 50 LINE(X1,Y1)-(X2,Y2),C,BF 60 GOTO 20 Кроме двух пар координат,задающих диагональ прямоуголь- ника,вырабатывается случайный номер цвета.
27.9. По аналогии с задачами из предыдущего задания вырабаты- вается пара Случайных координат и устанавливается точка на эк- ране .Нет гарантии,что этих точек будет 30,некоторые точки мо- 21 F-RND(-TIME) Гут СОВПЭСТЬ. 22 FOR 1-1 ТО 30 23 XT-RND(1)Х256:YT-RND<1)* 192 24 PSET(XT.YT),2:NEXT I Способ подсчёта точек указан ниже в домашнем задании. ПОД^М|0||У| ДОМА. Игра "Питон" заключается в следующем: на экране разбросаны точки жёлтого цвета (номер цвета 10),которые изображают кроликов. В центре экрана находится белая (цвет 15) точка - питон.После на- жатия на одну из стрелок питон начинает двигаться в указанном на- правлении.Нажатием на другую Стрелку направление можно изменить. Задача игрока состоит в том,чтобы с"есть всех кроликов.Питон,с"ев кролика,удлинняется на одну точку.При этом его скорость уменьша- ется. Компьютер выигрывает,если игрок просрочит время,выпустит пи- тона за рамку или питон самопересечётся (в частности нельзя нажи- мать на стрелку против хода питона). В программе широко используется функция POINT (х,У) .опреде- ляющая номер цвета точки на экране по её координатам.Так в стро- ках 50-110 по экрану разбрасываются кролики.После того как коор- динаты очередного кролика получены с помощью функции RM5,произво- дится проверка того,не-стоит ли уже на этом месте кролик (Строба 90).Таким образом удаётся подсчитать точное количество кроликов на экране.Это нужно для определения результата игры(строка 420). Отметим,что питон,с"евший всех кроликов имеет длинуN +1,поэтому в Строке130 число кроликов увеличивается на 1,если,конечно,питон сразу не наступил на одного из кроликов в точке (127,95). Движение питона фиксированной длины описано в задании 22.15 Остановимся на удлиннении питона.Длина питона задаётся переменной X.Голова находится в точке X (1) ,У(1) ,а хвост - в точке X(L),y(L) . В Строке 220 вычисляются новые координаты головы.Номер цвета этой точки заносится в переменную РВ.В том случае,когда РВ=10,питон с"едает кролика .Производится удлиннение питона (Строка 300).
После этого сразу же снова вычисляется новое положение головы и пересылка массива (переход па строку 260) 10 DIM X(31),Y(31) 20 P-RND(-TIME) ЗЯ Т1.МЕ-0:Н-0 40 SCREEN 3!COLOR .,14 50 FOR 1=1 TO 30 60 Xl-INT(256MRND(1)1 70 Y1 = 1 NT(192*RNI)(t)) 80 C-POINT(Xt,Y1> 90 IF C<>10 THEN N-N+l 100 PSET(XI,Y1) , 10 110 NEXT I 120 C-POINT(127,95) 130 IF CO 10 THEN N-N+l 140 PSET(127,95),15 150 X<1>-127:Y(1>=95:L=1 160 DX-0:DY-0 170 S=STICI<(0) 180 IF 8-1 THEN DX=0:DY=~4 190 IF S-3 THEN DX-4:DY-0 200 IF S-5 THEN DX-0:DY-4 210 IF 8=7 THEN DX—41 DY-0 220 XG-X(1)+DX:YG-Y(1)+DY 230 PR-POINT(XG,YG) 240 if pr-15 and sou goto ,370 самопересечение питона 250 РВЕТ(X(L>,Y(L)),4 260 FOR I-L TO 2 STEP -1 270 X(I)-X(1-1):Y(I)-Y(I-l) 280 NEXT I 290' X(1)-XG:Y(1)-YG 300 IF PR-10 THEN L-L+l:PR-4:PSET(XG.YG) , 15:XG-X<1)+DX YG-Y(1>+DY:GOTO 260 310 PSET(XG,YG),15 320 IF XG<0 OR XG>255 GOTO 3701 УХОД ПИТОНа 33 ЭКОЭН 330 IF YG<0 OR YG>191 GOTO 370 J 340 IF TIMEM5000 GOTO 370 350 IF L-N THEN 370 x 360 GOTO 170 V_ 370 SCREEN 0 "---просрочено время КРОЛИКИ С'ВДШЫ ••J 4 К' Си ГЧьш,К..|'4 И1 380 COLOR , , 4 390 LOCATE 10,12,0 400 PRINT"HPPA ОКОНЧЕНА" : PRINT -.PRINT 410 LOCATE 10 420 IF L-N THEN PRINT"Bbl ВЫИГРАЛИ "ELSE PRINT"Bbl ПРОИГРАЛИ" 430 PRINT :PRINT :PRINT 440 END 2.8. t. два Спрайта Случайным образом перемещаются внутри пря- моугольника .Прямоугольник и исходное положение Спрайтов устанав- ливаются в подпрограмме,начинающейся со строки 260.В строках 80- 180 осуществляется выработка случайных смещений JX и J>y для обо- их спрайтов .Подпрограмма обработки прерываний отключает прерыва- ния,чтобы избежать зацикливания программысСпрайты столкнулись и
находятся в этом положении,значит всё время происходит переход на Строку 260.Сменив цвет экрана и установив спрайты в исходное 10 dim х (?), у <2), dx (?), dy <2) положение,нужно снова включить 20 S=RND(-TIME) ’ J 30 SCREEN 2,1 прерывания. 40 ON SPRITE GOSUB 200 50 SPRI ТЕ*(0)"CHR*(255)+CHR*(129) + CHR*(255) 60 GOSUB 260 70 SPRITE ON B0 FOR 1=1 TO 2 90 DX(I)=INT(RND(l)K6+.5)-3 100 X(I)-X(I)+DX(I) 110 IF X(I)>110 THEN X(I)=110 120 IF X <1X75 THEN X (I) «75 130 DY(I)«INTCRND(1)M6+.5)-3 140 IF Y(I> >110 THEN Y(I)»110 150 IF Y(I)<75 THEN Y(I)«75 160 Y(I)=Y(I>+DY (I) 170 IF X(I)«<110 AND X (I) >=75 AND Y(I)=>75 AND Y( 1)0110 THEN PUT SPRITE I,(X(I),Y(I)),,0 1S0 NEXT I 190 GOTO 80 200 SPRITE OFF 210 COLOR 4,15,151CLS 220 FOR T-0 TO 2001 NEXT Г „ 230 color is, 4,4icls Команда EETVRM в указанном форма- s' те обеспечивает возврат на строку 250 RETURN 70 x-____— 260 LINE(75,75)-(126,126),, В С НОМерОМ 70. 270 X(1)-75iY(1>-75 280 X(2)=110:Y(2)=110 290 FOR 1=1 ТО 2 300 PUT SPRITE I,(X(I),Y(I)),,0 310 NEXT I 320 RETURN 20.2. Программа состоит из трёх кусков: 1. Инструкция и пауза (Строки 40-130); 2. Рисунок из задания 15.5 (Строки 140-290); 3. Простой графический редактор (строки 320-400). Программа периодически прокручивает инструкцию и рисунок. Подпрограмма обработки прерывания начинается с 300-й строки,как указано в ЮЛ Строке программы. После нажатия на пробел необходимо перейти в графический редактор.Работа в редакторе также должна прерываться по нажатию пробела.Таким образом после первого нажатия на пробел нужна одна форма обработки прерывания (переход в редактор),а после второго нажатия на пробел - другая (окончание программы). Именно поэтому в Строке 300 об"является новый адрес про - граммы обработки прерываний по нажатию пробела.
10 ON STRIG GOSUB 300 20 STRIG(0) ON 30 KEY OFF 40 CLS 50 LOCATE 6,6 60 PRINT "Нажимая на стрелки вы мажете " 70 PRINT 80 PRINT " нарисовать линию вез отрыва. 90 PRINT SPRINT SPRINT 100 PRINT " Для начала и окончания равоты “ 110 PRINT 120 PRINT " нажмите ПРОБЕЛ** 130 FOR Т-1 TO 1500s NEXT Т 140 DATA 36,120,20 150 DATA 80,20,110,25,70,30.100.32,85,45,75,70 160 DATA 10,75,75,80,80,105,100,100,90,115,105,125 170 DATA 130,130,135,150,80,170,110,170,95,190,130,170 180 DATA 135,185,155,165,180,170,170,160,205,150,150,145 190 DATA 145,130.165,115.170.105,175,110,185,85,185,65 20® DATA 245,45,240,60,255,60,250,40,180,0,120,20 210 SCREEN 2 220 READ N,X,Y 23.0 PSET(X.Y) 240 FOR I=i TO N 250 READ X,Y 260 LINE-(X,Y) 270 NEXT I 2B0 RESTORE 290 FOR T=0 TO 1500s NEXT T:SCREEN 0:GOTO 40 300 ON STRIG GOSUB 410 310 RETURN 320 320 X-12BsY-96 330 SCREEN 2 340 PSET(X,Y> 350 S=>STICK(0) 360 IF 1 OR S«2 OR 3«S THEN y-y-i 370 IF S=4 OR S--5 OR S=6 THEN Y-Y+l 380 IF S®2 OR S=3 OR S«4 THEN X = XH 390 IF 5^6 OR S«7 OR S®0 THEN X-X-l 400 GOTO 340 410 STRIG(0) OFF 420 KEY ONsEND 28.3. 13 программе используются прерывания по двум видам со- бытий: накатил на CTSL STOP и на пробел.При нажатии на пробел программа заканчивается,при этом выполняется оператор NEW ,текст программы уничтожается. При нажатии на CTSL STOP прерывание обрабатывает подпро - грамма,состоящая из одной команды PETtfRN (Строка 150).Обработка состоит в немедленном возврате из подпрограммы.Тем самым нажа - тие на CTRL STOP не влияет на исполнение программы.
10 ON STOP GOSUB 150:STOP ON 20 ON STRIG GOSUB 130 30 STRIG<0> ON 40 X=12S:Y“96 50 SCREEN 2 60 PSETCX.Y) 70 S”STICK(0> 80 IF S=1 OR S=2 OR S=B THEN Y=Y-1 90 IF S=4 OR S=5 OR S=6 THEN Y=Y+1 100 IF S-2 OR S=3 OR S«4 THEN X-X + l 110 IF S“6 OR S»7 OR S-8 THEN X-X-l 120 GOTO 60 130 STRIG(0> OFF 140 NEWI END 150 RETURN 28.4 После ввода двузначного кода программа распечатывает сооб- щение об ошибке. 10 F4-INPUT*(2) 20 X-VAL(F»> 30 ERROR X 26.5. Программа предназначена для вычисления результата по формуле T*/i77 .Необходимо ввести положительное число,чтобы был получен результат.Пользователя об этом предупревдйет соответст- вующее сообщение.Однако несмотря на это он может ошибиться.В стро- ке 90 тем не менее будет предпринята попытка вычисления.Произой- дёт ошибка,программа обработки ошибок выдаст сообщение:"Повтори- те ввод",и ввод будет производиться заново. 10 ON ERROR GOTO 140 20 CLS:LOCATE ,6 30 PRINT"BBQflHTe положительное числю" 40 PRINT 50 F*="" 60 S*=INFUT*(1) 70 PRINT S*; S0 IF ASC(S*><>13 THEN F*«F»+S*: GOTO 60 90 X-VAL(FH)iT-SQRtl/X) 100 PRINT :PRINT :PRINT"Bbo4 правильный":PRINT 110 PRINT "Результат”";T:PRINT 120 PRINT "Программа окончена" 130 END 140 CLS:LOCATE ,6:PRINT "Повторите ввод" 150 RESUME 40
ПО;ЧУМАй ДГНЧА- Используем сначала программное прерывание для построения графиков с произвольно"! областью определения.Система программ ИЗ ON ERROR GOTO 1130 20 DEF FNF(X)=LOG(X) 30 SCREEN 2 40 LINE(l20,0)-(120, 191) 50 I...INF (0, 96) - (255, 96) будет Строить гранки функций, Строка с определением функции будет изменяться. 60 FOR X-0 TO 255 70 PSET(X,96-30KFNF((X-12B)/30)) B0 NEXT X 90 GOTO 90 100- RESUME 00 Теперь проведём эксперимент с использованием функциональ- ном клавиши F1. Придадим ей значение,состоящее из двух команд RON с нажа- тиями на клавишу ЗсОДа (См.задание 24.4). KEY 1,"RUN100+chr«(13)+run200+chr»<13)" Наберём две строки с номерами 100 и 200.Затем нажмём на клавишу F1. 100 PRINT "ПЕРВАЯ ПРОГРАММА"!END 200 PRINT "ВТОРАЯ ПРОГРАММА":END Обе строки будут исполнены,хотя ясно,что при подаче одной команды RUN была бы исполнена только 100-я строка. Сделаем вывод: символы.задающие значение функциональной клавиши,после нажатия на эту клавишу запоминаются в особом от- деле памяти компьютера - буфере.Из буфера они извлекаются по мере надобности и исполняются. с приведённом примере сначала была исполнена первая коман- да,после того как она запустила программу,работа с буфером вре- менно приостанавливается,работает программа.Когда программа за- вершает свою работу,из буфера извлекается вторая команда и за- пускает вторую программу. Система программ содержит несколько программ; 1. Установка значений ключей (строки 10—70); 2. Задание функции в программной строке 160 (Строки 80-140); 3. Построение графика (Строки 150-270); 4. Окончание работы (Строки 280-310); 5. Подпрограмма обработки ошибок (Строка 320); 6. Задача сообщения об ошибке (Строки 330-390).
Поясним действие функциональных клавиш. Программы 1,3,6 задерживаются операто- ром F$= INPUT#(Г) .При начатии на клавиши Р1 и F3 первый Символ "z" попадает в пе- ременную Ft,команда RUN производит за- пуск программы. Программа 2 создает на экране новую 180-ю строку.После нажатия на F2 первый ВВОД завершает программу.Курсор перехо- дит на две строки нике ( после Ок) .два кода 30 соответствуют"двум накатиям на стрелку ^.Курсор поднят в созданную экранную строку,второй ВВОд засылает её а память.Коман- да RUN 150 запускает программу 3. 10 KEY OFF 20 CUSsLOCATE ,10.0 30 KEY 1,"ггип S0"+CHR»(13> 40 KEY 2, CURT' (13) +CHR* (30) +CHRT (30) +CHR* (13) +"run 150“ +CHR* (13) 50 KEY 3,"zrun 2B0"+CHR«(13) 60 PRINT ” НАЖМИТЕ КЛАВИШУ Fl" 70 F*--»INPUTT (1) {END B0 CLS:PRINT SPRINT :PRINT 90 PRINT:PRINTS PRINTS PRINTS PRINTS PRINT 100 PRINT " ЗАДАЙТЕ ФУНКЦИЮ И НАЖМИТЕ КЛАВИШУ F2" 110 PRINT SPRINT SPRINT sPRINT "160 DEFFNF(X)="s 120 FT-INPUTTd) 130 IF FHOCHR* (13) THENPRINTFH; : Р*ю" " 1 GOTO 1.20 140 END 150 ON ERROR GOTO 320 160 DEFFNF(X)«BQR(TAN<X)) 170 SCREEN 2 180 I..INE(0,90)-(255,90) 190 LINE(128,0)-(128,191) 200 FOR X-0 TO 255 210 Y=90-40*FNF((X—128)/40) 220 IFY>==0ORY-< = 191THEN PSET(X,Y) 230 NEXT X 240 OPEN"GRPi"ASM1 250 PSET (10, 10) s PRINT *tl, "ПРОДОЛЖЕНИЕ М-1 " 260 PSET (10.20) , 01 PR I NT (11." ОКОН' 1АНИЕ • -F3 " 270 F«“INPUT$(1)SEND 280 KEY 1,"print " 290 KEY 2,"auto " 300 KEY 3,"goto " 310 KEY ONsCLSsEND 320 IF ERR--2 THEN RESUME 330 ELSE RESUME 230 330 SCREEN 0 340 LOCATE 6.6 350 PRINT "Вы ошиблись.элдавая функцию" 360 PRINTS PRINTsPRINT 370 PRINT "Нажните Fl" 300 F*=INPUT»(1> 390 END
29. 4. Вставка в 26.2. 55 PEEP 22. 2. Рассмотрим два способа исполнения мелодии, а) режим прямого диалога FLAY"CCGGGGF+E" б) программный режим дязу 1.0 DATA D, В—,A,G,В-,A,D 20 FOR I«1 TO 7 30 READ N* 40 PLAY N» 50 NEXT I 29.3. а) "Грёзы" Шумана. При переводе нотной записи в буквенную нужно определить название ноты и её длительность,наличие бемоля или диеза.В дан- ной мелодии все ноты СИ имеют бемоль,Что отмечается знаком ми- нус.При подъёме выше третьей линейки необходимо включить 5-ю октаву. 10 DATA сВ,f2fВ,eS,fВ,а8,о5с8,fBf2 20 DATA e8,dB,cS,fВ,о4д8,а8,b-B,o5dS,o4fВ,д8,а8 30 DATA o5cB,o4g2,c4,f2fS,aS,fB,aS,o5cB,aBa4aB 40 DATA g8,f8,dB,cS,fS,a4,gS,aB,b-B,a5,dS,o4,gB,aB,b-8 50 DATA o5d8,o4dB,eB,f2 60 PLAY"vl2t60" 70 FOR I-l TO 46 S0 READ F* 90 FLAY F$ 100 NEXT I б) "Родина слышит" Шостаковича. В мелодии одновременно звучит до трёх нот.По нотной запи- си нужно написать три голоса для команды РЬАУ.Если какой-либо
-235- B каждой строке DATA через запятые указаны кусочки мелодии для трёх голосов.Все три куска из одной строки обладают одинаковой длительностью 10 DATA GB,EB,RS 20 DATA EB,CB,RB 30 DATA FB,DS,RB 40 DATA G4GB,E4E8,R4RB 50 DATA 05C4,E4,R4 60 DATA CB,EB,RB 70 DATA D4BBABBB,F4FS,D4DB 80 DATA G4GB,E4EB,R4RS 90 DATA E4ES,C4C8,R4R8 100 PLAY"V10T60","V10T60"."V10T60" 110 FOR 1=1 TO 9 120 READG1*,G2*,G3» 130 FLAY G1«,G2$,G3$ 140 NEXT I* 29. *1. Приведена простейшая из таких программ.После нажатия на клавишу с буквенным обозначением ноты,эта нота тут же исполня- ется. 10 F*=INFUT*(1> 20 PLAY F* 30 GOTO 10 29.5. Музыкальный редактор служит для перевода нотной запи- си в буквенную.После запуска программы на экране рисуется нот- ный стан.По нему можно перемещать указатель.Установка ноты производится нажатием на Стрелку «=$>.После установки исправить ноту нельзя ото недостаток редактора,однако для его устране- ния нужно значительно усложнить программу).до установки можно перемещать указатель по вертикали.Название ноты будет автома- тически формироваться по положению на нотном Стане .Ножнсг при- дать ноте бемоль (знак -) или диез (знак +>,а также длитель - ноСть .задаваемую одной цифрой (1-целая,2-половинная,4-чет - верть,8-воСьмая).Если длительность не указана,то подразумева- ется четверть.Порядок ввода фиксирован:после длительности вво- дить знаки - и + нельзя.Пока клавиша не нажата,можно сбро- сить длительность и знаки - и +,сдвинув указатель по вертика- ли.Программа заканчивает свою работу после нажатия на ЕВОД,му- зыка исполняется,а на экран выдаётся буквенная запись мелодии. В массиве N$ сформированы тройки символов:октава и нота от 03 С до 05 В (Строки 40-120).Нотный Стан рисуется в строках 160-180.Мелодия накапливается в переменной М$.Запись конкрет- ной ноты создаётся в переменной \*1$.Для обеспечения достаточно- го об"ёма памяти под строки использован оператор С1£АК(прил.9\
Ь Строке 210 в переменную Р$ поступает символ нажатой кла- виши.Если были нажаты вертикальные Стрелки,то переменной при- сваивается начальное значение,задающее ноту (строки 230-240). При установке знаков -,+ и длительности используются при - знаки Р1 и Г'З.Если Р1=0,знаки - и + ещё не ставились,и их можно 10 ’ПОДГОТОВКА ставить (строка 250).Если Р2=0,длительность 20 CLEAR 600 ещё не указывалась (строка 200). 30 OPEN"SRPi"А3#1 40 DATA C,D,E,F,G, А, В 50 DIM Nt(20) 60 FOR 1=0 ТО 2 70 FOR J=0 TO 6 80 READ At it 90 Nt( ГХ7 +J)="D" + STRt(1+3)+At 100 NEXT J 110 RESTORE 120 NEXT I 130 SCREEN 2,0 140 SPRITEt(0)-CHRt(192)+CHRt(192) 150 Mt»"" I X"8i Y«118|K=7iWt-Nt (K> 160 FOR 1=0 TO 4 170 LINE(0,104-1X16)-(255,104-1X16) 180 NEXT I 190 PUT SPRITE 0,(X,Y),,0 200 ’ПЕРЕМЕЩЕНИЕ КУРСОРА 210 Ft==INPUTt(l) $20 IF Xi250 SOTO 370 230 IF ABC(Ft)«30 AND K<20 THEN Y-Y-BsK-K+1 Mt-Nt(K)i F'l =0i F2=0s COTO 190 240 IF ABC (Ft) «31 AND Ю0 THEN Y=Y+8iK’-K.Il P2=0-Wt“Nt (F.) : P1=0! SOTO 190 250 IF (Ft="+" OR Ft»"-") AND Pl-0 AND P2-0 THEN Wt-Wt+Ft!Pl=lsSOTO 210 260 IF VAL(Ft) '.>0 AND P2=0 THEN Wt=Wt + Ft:P2’ 270 IF ASC(Ft)=28 THEN 290 280 IF ASC(Ft)«13 GOTO 370 ELSE 210 290 ’УСТАНОВКА НОТЫ КОД 30 1? КОД 31 1!оото -lg КОД 28 <=$> 300 PSETfX,Y-4),4 310 PRINT #1,"К 320 Fl=0:P2-0 Изображение ноты GRAPH и [У] 330 X=X+8i Mt=Mt+Wt + "UJ" 340 PLAY WtsWt=Nt(K) 350 GOTO 190 360 ’ОКОНЧАНИЕ 370 PLAY Mt 380 SCREEN 0 390 PRINT Mt 400 END 29.6. Для переложения нотной записи в буквенную запись исполь- зуйте музыкальный редактор.Для каждого голоса нужно получить от- дельную строку символов,а затем разрезать на_. кусочки равной дли- тельности,как в 29.3.6 (желательно по тактам).
-237- П О a V М А й Д О МА» Прежде всего приведём пример программы для построения "фу- нкционального" узора. для получения других узоров достаточно изменить определе- ние функции в строке 10. 10 DEF FNF(X,Y)=SQR(X'2+Y- 2) 20 SCREEN 3 30 FOR Х=-.375 ТО .375 STEF 1/64 40 FOR Y=-.375 TO .375 STEP 1/64 50 R=INT(200*FNF(X, Y)> 60 C-R-2XINT(R/2) 70 PSET(128+256XX,96+256XY).CK11+4 B0 NEXT Y,X 90 SOTO 90 После вычисления, значения функции оно умножается на 200 и округляется до целого (Строка 50).Затем вычисляется остаток от деления этого числа на 2 .(Строка 60).Номер цвета точки (Строка 70) определяется формулой С>ц+4.Таким образом он равен 4 при чётном R,h 15 при нечётном., Можно получить многоцветное изображение,получая остатки от деления R на число большее,чем 2.Для получения остатков предна- значено специальное средство: MOD (см.приложение 11). Перейдём ^’функциональной" музыке.Будем создавать мелодию в До мажор,что соответствует игре только по белым клавишам пиа- нино (все ноты без диезов и бемолей).Более того,используем толь- ко 9 клавиш. 05 05 05 05 04 04 04 04 04 F Е D С 8 г А G F Е до 8 jfeccmr от О По желанию легко расширить диапазон,в котором звучит мело- дия.Кроме того можно выбрать другую тональность.указав при нотах знаки - и +.
Использусм две Функции:одну для построения мелодии,другую для создания ритма.Обе Функции зависят от двух переменных К и X. Вычисляется значение функции PNF,определяется остаток (положи- тельный) от деления на 9.Полученное число от 0 до 8 рассматрива- ется как индекс массива Ы$,что позволяет выбрать ноту.Значение Функции FNK используется как коэффициент повторения данной ноты. Например,если это значение равно 2,то очередная нота подклеива- ется к переменной ,содержащей мелодию,два раза (Строки 210-°30). Когда построение мелодии закончено,она исполняется (Стро - ка ° г>0). Способ вытягивания нот в линию поясним рисунком. К=0 К=1 К=2 К=3 ' 1 1 1' 1 I I I 1 1 1 1 1 1 a. —1 L ... 1 _.l 1 I I I l .1.. Illi* Х=О Х=1 Х=2 Х=3 Х=0 Х=1 Х=2 Х=3 Х=0 Х=1 Х=2 Х=3 Х=О Х=1 Х=2 Х=3 Замысловатая функция FNF .конечно,подобрана.Испробуй более простые функции. Если включить в определение Функций стандартную функцию RNJ> .компьютер начнёт "сочинять". 10 DATA о4е,o4f,o4g,о4а,о4Ь,о5с.o5d,о5е,o5f 20 DIM N«<8) 30 FOR 1=0 ТО 8 40 READ N*(I) 50 NEXT I 60 DEF FNF1(X)(X+4)"2-10 70 DEF FNF2(X>(2XX+1)л2+(X + l>X(1+(-1>(X+l>>/4+1 80 DEF FNF3(X>»3X((Х+2)л2+Х+2)/2-2 90 DEF FNF4(X)-5X(ХЛ2+8БЫ(X)+1> 100 DEF FN81(K>-1-KX(3-K> 110 DEF FN82(K)-1-2XINT(K/2> 120 DEF FN83(K>-(-1>ЛК 130 DEF FNFW<X,K)-1.5+(-1>ЛКХ(X-l.5> 140 DEF FNR(X,K>-2^INT(1/(4-X>>+INT((X+l>X(K+l>/16)+1 150 DEF FNF(X,K>-FNF1(FNFW(X.K))+FN81(K)XFNF2(FNPW(X,K)) +FN82 <К) XFNF3(FNFW(X, К > )+FN83(К)XFNF4(FNFW(X,К)) 160 M»-"" 170 FOR К-0 TO 3 180 FOR X-0 TO 3 190 I=FNF(X,K>M0D9iD-FNR(X,K> 200 IF I<0 THEN I-I+9 210 FOR J-l TO D 220 M»-M»+N«(I) 230 NEXT J 240 NEXT X.K 250 FLAY M6
30. 1. В байте могут храниться целые положительные числа от &В 00000000 = 010 до &В 1111.1111 = 25510 . 30-2. Последовательно печатая с помощью PRINT шестнадцатирич- ные числа &Н1 , &Н10 ,&Н100 и т.д.,получим переполнение при &Н10000 ..Число &Н FFFF =£Н10000 - 1 уже не вызывает переполнения. Шестнадцатиричные числа от 0 до &Н 7FFF переводятся в соответст- вующие десятичные,числа от &Н 8000 до &-Н FFFF -в отрицательные десятичные от -32768 до -1.В байт можно записатььНГР. Определение и исполнение двоичной подпрограммы в прямом def U8R0-&H3E1 x«u8R0 (х) диалоге,Смена значений ПРОИСХОДИТ после 30 нажатия на ШИФР. Определение и исполнение двоичной подпрограммы в программ- ном режиме. После задержки подсказки вновь выводятся на экран командой КЕУ 0N. 10 DEF USR0=8<HCC 20 X-USR0(X) 30 INPUT FS 40 KEY ON 30.5. 10 POKE &HFCAB,255 20 FOR 1-1 TO 20 30 F»-INPUT»(1> 40 PRINT F<; 50 NEXT I 60 POKE fcHFCAB,0 Если прервать программу.клавиша Сар останется включённой, хотя индикатор не будет гореть.Отключить её можно нажатием. 30.6. Строки программы с ю~й по-30~ю выдают на экран все Символы, чтобы было удобно наблюдать за изменением таблицы шабло- нов .Любое изменение значения байта в таблице немедленно отражает- ся на форме символа на экране.Цикл в строках 40-90 последоваталь- но заменяет значение всех байтов на &В 01010101.Тем самым симво- лы постепенно превращаются в вертикальные полоски. I http://www.gr8bit.ru । 1---------------------)
Пер^ые 8 изменяемых байтов задают вид пробела.Поскольку большая часть экрана заполнена пробелами,то экран станет поло- сатым. 3 CLSsSCREEN 1 10 FORI=0 то 255 20 PRINT CHR»(I); 30 NEXT I 40 FOR I=8kH100 TO 8.H12F 50 УРОКЕ 1.8.B01010101 60 LOCATE 15,15 70 PRINT I 00 F*«INPUT»(1> 90 NEXT I 30.7. Легко добиться утолщения букв.напечатав слово от точки Х,У ,а затем от точки Х+1.У .Два контура буквы лягут рядом и создадут утолщённый образ.Аналогичным образом можно получить ша- блон. Иметься шаблон Сдвинуть на один разряд и сложить со ста- рим. Сдвиг производится с помощью деления нацело (см.прилож.9). Наложение двух шаблонов производится операцией ОД.Она выполни - 10 SCREEN I етСЯ поразрядно-. 20 FOR 1»0 ТО 255 &В 0 1 10 10 11 30 PRINT CHR*(I) ; OR »g 00110101 40 NEXT I ------—-------- 50 FOR I«8<H100 TO 8.H100+8X255 ИО 1111111 60 УРОКЕ I.VPEEKCl) OR УРЕЕК<1)\2 НОЛЬтолько из Ryx н 70 NEXT д y л^_ 30.8. Программа в челом аналогична программе из задания 30.6. 5 CLS:SCREEN 1 10 FORI=0 ТО 255 20 PRINT CHRtdlj 30 NEXT I 40 FOR I=8<H2003 TO 4.H3000 50 УРОКЕ 1,8.001001111 60 LOCATE 15,15 70 PRINT I 60 F$»INPUT$(1) 90 NEXT I Производится замена цвета символа с 15 на 4,а цвета фона с 4 на 15. Один байт таблицы отвечает за цвет сразу нескольких сим- волов .
-2'1- 30.9, "оманда я ппямом диалоге УРОКЕ 0223,8.810001000 Пля курсора задаётся пвет самого курсора и па от.которым через курсор ппос?очищается тот символ,на которым наложен кур- сор. 'Юли оба этих тгг1ета совпадают,то Ся.м курсор и символ сливаются.Создаётся впечатление,что курсор не прозрачен. 30.10. 10 COLOR10, 1, 1 It OPEN "grp:" AS #1 15,SCREEN 2 20 FOR R«7 TO 0 STEP -1 30 FOR B=7 TO 0 STEP -1 40 FOR b-7 TO 0 STEP -1 50 OUT &H99,1 60 OUT !<H99,1H90 70 OUT S<H9A,R'M16+B 80 OUT &Н9А.Б 81 LINE(90, 85)-(180,125),1,BF 83 PSET (100, 90), 1 85 PRINT #1,R;B;G 90 F$=INPUTt(l) 100 NEXT &,B,R П О Д V' M ft |“| л о M ft „ Графические операторы действуют довольно медленно.Прове- дение нескольких прямых подряд сразу улавливается взглядом,в то время кан необходимо для организации движущегося Фона произво- дить почти мгновенное изменение большого количества точек по всему экрану. В программе из задания 30.6. изменение шаблона.задающего вид пробела,вызывало немедленное изменение экрана.Попытаемся использовать этот эффект. Экран заполнен пробелами,если изменить шаблон пробела,то во всех точках экрана произойдут изменения.Таким образом для Сдвига Фона достаточно будет изменять значения восьми байтов Этим обеспечивается достаточная скорость.
Общий рил движущегося -бона. Движение решётки реализуется с помощью кольцевой пересылки байтов (Строки 80-120). 10 SCREEN 1,2 20 SPRITE*(0)=CHR*(255)+STRING*(14,CHR*(12B))+CHR*(255) +CHR*(255)+STRING*(14,CHR*(1))+CHR*(255) 30 PUT SPRITE 0, (120, 95),,0 40 KEY OFF 50 FOR J=0 TO 7 60 VPOKE S<H100+J,2''JOR2~(7-J) 70 NEXT J B0 A=VPEEK(8<H100) 90 FOR 1=1 TO 7 100 VPOKE *H100fI-l, VPEEK(&H100+I) 110 NEXT I 120 VPOKE ЬН107,А 130 LOCATE 13,12 1.40 PRINT CHR*(255)5CHR*(255) 150 LOCATE 13, 13 160 PRINT CHR*(255);CHR*(255) 170 FOR T=1 TO 100:NEXT T 180 GOTO B0 Для того чтобы движение фона было более заметным в цент- ре экрана помещён квадратный спрайт.Его внутренность очищена печатью четырёх курсоров.
ПРИЛОЖЕНИЕ I. Дополнительные сведения о клавиатуре. | Д - располагать в виде таблицы, После нажатия на клавишу ТАВ курсор перескакивает в ближайшую справа от него позицию с номером кратным 8 или в начало следующей строки. Back Space - jg™eHI,e в обратном направлении . Если курсор СТОИТ В ПОЗИ- ЦИИ с номером больше 0 , то нажатие на клавишу BS приводит к стирании сим- вола левее курсора и пе- ремещению курсора на его место.Если же курсор сто- ит в начале строки,то BS действует аналогично DEL. Совершая скачок,курсор за- метает ( заменяет пробелами) те символы,через которые он перескочил. Клавиши CTRL и GRAPH при- меняются только совместно с дру- гими клавишами,меняя их значение Нажимать Нажимать Прижимать Прижимать GRAPH - графические (симв.) ConTRoL - управлять Клавиша CTRL превращает сим- вольные клавиши в управляющие Например нажатие на клавишуГ| через CTRL очищает строку пра- вее от курсора. Нажатие на символьную клавишу через GRAPH придает символьной клавише новое символьное значе- ние. Можно осуществлять нажатие через GRAPH и SHIFT одновремен..
-244- ПРИЛОЖЕНИЕ 2. Ошибки в программах. В приложении описаны некоторые виды ошибок,их причины,,про- филактика и способы выявления. ВОЗМОЖНЫЕ ПРИЧИНЫ ОШИБКИ ПРОФИЛАКТИКА СПОСОБ ВЫЯВЛЕНИЯ I. Нажатие на клавишу со сходным символом. При наборе см. на нижние сим- волы букв.клав Посимвольный просмотр строки 2. Была включена клавиша РУС. Перед набором программы откл клавишу РУС. Ilgm выводе прог- раммы на экран ком.LIST русские буквы исчезают . Ошибка в арифметическом выражении Пары клавиш,располагающие к ошибкам : ©г© ВОЗМОЖНЫЕ ПРИЧИНЫ ОШИБКИ I. Нажатие на клавишу со сходным символом. 2. Запятая в числе вместо точки. 3. Ошибочный знак арифметической операции 4. Неверная расстановка скобок . 5. Аргумент функции без скобок . ВОЗМОЖНЫЕ I. Вместо запятой использован неверный разделитель операндов. 2. Операндов слишком много или слишком мало. Типичные ошибки а) : вместо / / PRINT 6:2 б) опущен знак умн.* PRINT 3(2+6) ПРИЧИНЫ ОШИБКИ 3. Координаты графической команды указаны без скобок. 4. Неверно опущены операнды,от чего действие оператора искажается либо невозможно. По этому типу ошибки см. приложение 5.
Ошибка в структуре программной строки ВОЗМОЖНЫЕ ПРИЧИНЫ ОШИБКИ \ I. Вместо двоеточия использован неверный ) разделитель операторов. 2. Произошла склейка строк., О СКЛЕЙКЕ СТРОК. Программная строка может занимать несколько экранных строк. При наборе символа в конце строки (38-я позиция) курсор переходит виачало следующей строки,и эта строка "склеивается" с предыдущей, т.е. компьютер воспринимает символы,стоящие во второй строке не сами по себе,а как непосредственное продолжение последовательное ти символов из первой строки. При склейке двух или более строк клавиша DEL тянет символы во всех склеенных строках JEL - ~~ ~ 1 г Нажата символьная клав? (в т.ч. пробел) или <*0 - произошла склейка ------» С Р В противном случае-только симво- лы одной строки J>EL Нажата клавиша сф - склейки нет II ВЫЯВЛЕНИЕ СКЛЕЙКИ СТРОК В ПРОГРАММЕ, При запуске программы со склеенными строками будет получено сооб- щение о синтаксической ошибке в первой из склеенных строк.Если в этой строке нет ошибок,то следует проверить её на склейку.Для этого нужно вывести на экран только эту строку (LIST и номер етро ки;подробнее см.приложение 4).Если на экране появятся сразу не- сколько строк,произошла склейка.Чтобы получить из склеенной стро- ки верные строки,нужно вызвать на экран эту строку,удалить из неё всё кроме текста второй строки и нажать ввод.Затем,снова выведя её на экран,получить из неё третью строку и т.д.Наконец,отрезав Появление в ' программе случай- ных строк и замена ^трок на случайные. хвост,получите и первую строку. о „ ПРОФИЛАКТИКА; I. Не забывайте нажимать на клавишу ВВОДа. -с.Удлинняя строку .используйте режим вставки. З.Не меняйте поло- жение курсора после .нвода строки перед вводом новой. ПРИЧИНЫ: I.Остатки старой программы \ 2.Попытка вычислений без PRINT или ввода / чисел для INPUT,не запустив программу Пример: 2+3 вместо ? 2+3 даёт стр. 2^+3 3.Буква 0 вместо нуля в номере строки Пример: 150 PRINT гместо 150 PRINT даёт 15-ю строку 15-0 PRINT
ПРИЛОХЕНИЕ 3. Экранные режимы и использование цветов. СИМВОЛЬНЫЕ РЕЖИМЫ: ГРАФИЧЕСКИЕ РЕЖИМЫ; В SCREEN 3 координаты изменяются от 0 до 255 по X и от 0 до 191 по У,но каждой точке со- ответсвуют 4 эквива- Команда изменения цвета: COLOR Ы. , 1ч|, , ГЧ, , Г-^ 1 Г* 2 ' гЗ 3 Цвета символов фона рамки . Номера цветов для цветных дисплеев 0 прозрачный 8 средне-красный I чёрный 9 светло-красный 2 средне-зелёный 10 тёмно-жёлтый 3 светло-зелёный И светло-жёлтый 4 тёмно-голубой 12 тёмно-зелёный 5 светло-голубой 13 васильковый 6 темно-красный 14 серый 7 голубой 15 белый Если в графической команде опущен Начальные цвета при лентных координаты : точки координаты 0-я 1-я 0,1,2,3 4,5,6,7 включении машины COLOR 15,4.4 номер цвета,то геометри- ческий объект рисуется цветом символов в символьном режиме,т.е. тем цветом,который был задан командой COLOR для символов. 10 20 30 40 50 60 70 80 90 SCREEN 2 OPEN"GRP:"FOR OUTPUT AS #1 PSET(160,10),0 PRINT #1 10" FOR 1=0 TO 15 PSET(1X16,20).0 PRINT tn.IMODlO LINE(IK1Ь NEXT I :0)-STEP(10. 150) . I.BF 100 F«=INFUTS(1) цвет символов фона Для нецветных дисплеев| вместо цветов использу- ются интенсивности. цвет Программа демонстрирующая цветасили интенсивности)
-247- ПРИЛОЖЕНИЕ 4. Дополнительные средства работы с программой. О команде LIST. 1) LIST Nстр — вывод на экран строки с данным номером 2) LIST.^J - вывод на экран последней введённой в програм- Стирание (DELETE) нескольких строк,идущих подрад,с номерами заключёнными между 3) му строки Вывод на экран нескольких Строк с номерами,заключёнными DELETE DELETE - N DELETE N - N 0 N и и и N 65529 LI5T LIST LIST NrN^ между и Для правильного исполнения -N N - 0 Н и N и 65529 команды DELETE (в отличии от команды LIST) необходимо,чтобы строки с номерами и Н входили в программу. Выдача номеров с N через 5 АМО N,S и памяти лито ,s с запуск несколь их программ : Автоматическая выдача номеров при вводе программных строк (очередной номер выдаётся после нажатия на клав.^О) Р А Н Е Н И Е Перенумеровка строк программы. Номер строки,с которой начнётся перенумеровка строк (до конца програм- 4—-----—Ч мы) OUM Ny,Na,S AUTO N с N AUTO с 0 через б/Текст очередной J fflaF по- дпрограммы раэмеща- s' прнммрппяки ется после уже име- I ренумеровки щихся в памяти про -\ Новый номер,который через .грамм с больших номеров „олучит строка,имев- Ю/Зму должна предшествовапл _яо м /строка с командой END. ' шая номеР Na 10 через/После новой программы также 10 /разместите строку с ком. END. Прерывание выдачи номеров^ CTRL STOP / / Запуск программы,начинающейся со строки с номером N .производят, с помощью команды RUN N Сами выясните .как работает команда RENUM \ для форматов: \ RENUM N Набирайте побуквенно без клавиши F5 \RENUM,N и тд В случае неясности уточните действие той или иной коман- ды экспериментально.Самостоятельно разберитесь как мо- жно использовать тире и точку (см LIST п.2) в др.команда
-2'8- ПРИЛОЖЕНИЕ 5. Дополнительные сведения о графических '=====- операторах. Если вы не включили графический режим,то использование гра- фических операторов приводит к ошибке.Необходимо не только нали- чие в программе строки с командой SCREEN 2 ,но и исполнение этой 1Й> SOTO 30 программе 30 FSET<10,10) полняется команды.Например в данной запуска программы будет выдано сообщение: Ill eg «а. 1 HF ил п ст ir. i сэ m с: & 1 1 20-я строка не вы- (почему?).После 1 ri 30 Поле допустимых координат Х=-32768 0 Q У=-32768 PAINT(X,y) точка вне окна-ошибка ) Х=32767 PAINT(X,y?' 1 точка в 1 окне-ошибки нет У=3276 /-Экранное ' окно 255,191 7 В графических операто- рах (кроме PAINT) мож- но использовать коорди- наты из поля,значитель- но превосходящего экран по размерам.Фактически же строятся только те части геометрических фигур,которые попадают в экранное окно. Команда PAINT в режи- ме SCREEN 3 позволяет окрасить замкнутую область цветом отлич- ным от цвета границы: РАт(Х.У) ,мобллгр; номера г W'X цветов " ' области и границы, При включённом графи-' ческом режиме смена цвета фона командой COLOR происходит толь ко после исполнения < команды CL3. / Компьютер запоминает координаты последней точки,поставленной на экране графическими операторами.Команда LINE в формате LINE - (X, У) соединяет эту точку с точкой,координаты которой заданы в команде. Вместо координат во всех графических операторах можно указывать смещение от последней точки.Признаком этого служит слово STEP (степ-шаг) перед координатами. Сравните: Опуская операнды в команде.мысленно называйте опущенный операнд, что гарантирует от ошибок.Например,предполагая построить эллипс, можно получить дугу,т.к.не хватает запятой: CIRCLEOooao) 802
ПТтао&ЕНИЕ 6. Об операторе ввода. Оператор ввода(INPUT) служит для организации диалога с Различайте диалог ПРОГРАММОЙ . с ПРОГРА’П'ОЙ и диалог с СИСТЕМОЙ Программа Подача команд.создание прогаммы Система, обслуживающая язык Бейсик Сообщения от системы Смена - диало: Прекращение работы программы Ввод значений переменных _____ В примере сообщения ----------------------Ёа^-р.ез2льтат0В/машины подчёркнуты . Пример путаницы в ввдах диалога (дзят из ЖИзни) t0 CLS$J П -----------------, 20 INPUT А, 30 PRINT А + В^ RUN<3 ? LIST<^ ------ REDO FROM START? LIST «5 Redo from start run <5 REDO FROM START? N£\N4!> Создание и запуск программы. Пока всё правильно — Роковая ошибка Растерянность и перебор команд REPO FROM START? ЕТР ISHIFT’ LIST «Л REDO FROM Т? <S 0 ----- Ok 20,45$ RUN $ SYNTAX ERROR IN 20 LIST 20 20 .«S’ Нажатие на без набора J числа сохра- няет старое зна- Iчение пере- Очистка экрана .Вышло!!! Но,увы... —х, J меннои .исход- Отчаяние нажатия на ные знач.всех пе- Незамеченный результат,программа закончилась. Запоздалое прозрение.попытка ввода значений. Запоздалы-' запуск. Произошла замена 20-й строки. 'Я этого не набирал'.’ При вводе значений возможен 1.Разовый ввод : ? 16,54,93 <J) 2.Последовательный ? 16< ?? 54<У ?? 93<^, ременных равны 0. Оператор ввода позволяет не- пользовать собственную под- сказку.Это уменьшает число ошибок при вводе. INPUT "ВВЕЩИ КАТЕТЫ"; А , В подсказка
-г'>о- ПРИЛОлДНИЕ 7. Дополнительные сведения об условном операторе. ► Печать отрицательных значений функции Условный оператор занимает программную Строку до конца,т. е. после него в строке уже не может самостоятельный оператор. Все эти операторы принадлежат к ELSE (или к THEN в сокращённой фор- ме). Пример ошибки,связанной с этим правилом: 10 FOR X = 0 ТО 1 ОТЕР .01 20 У = TAN(X)- ХЛР 30 IF У<0 THEN PRINT У : NEXT X Программист предполагал, что окончание цикла является самостоятель- ным оператором,но на самом деле оно включается в условный опера- тор.Возможны непредвиденные осложнения. Один условный оператор может входить в другой.При этом воз- никает проблема: какой ELSE относится к данному THEN. Действует правило : EL-SE относится к ближайшему слева свободному THEN. IF THEN IF THEN ELSE IF THEN ELSE ELSE A_______________________________________2=^_________! Условия и арифметические выражения. Любое условие является либо истинным.либо ложным.Действует правило,по которому каж- дое условие можно считать арифметическим выражением.Если условие ложно,то соответ- ствующее арифм.выр.равно нулю.Если усло- вие истинно,ар.выр.равно -1.Проверьте это: PRINT 5 = 4 (результат 0); PRINT 7=7 (результат -1). Наоборот каждое ариф.выр.можно рассматри- вать,как условие .Для проверки используйте программу: Порядок логич. опеиацийг 10 INPUT X 20 IF X THEN PRINT"ИС THHA"ELSE PSINT^OKb" l.NOT Для изменения порядка действий ис- 2.AND пользуют круглые скобки. 3.0R Правильность записи условия прове- ряют, распечатывая таблицу истинности. Логические связки XQR -исключающее EQV -эквивалентность IMP -импликация Программа для распе- чатки таблиц истин - ности. 10 FOR X = 0 ТО 1 20 FOR У = 0 ТО 1 30 PRINT 40 PRINT X;'\_IMPJ';y; 50 PRINT 'L=j';X IMP У 60 NEXT У,Х Аналогичным обра- зом рапечатываются таблицы истинности для любых условий.
ПТОТОлиШИЕ 8. .Пополнительные сведения о массивах. Если количество элементов в массиве не известно заранее, то можно задать его в процессе работы программы,а затем об"я- вить массив : 10 INPUT N 20 DIM A(N) Если массив пе об"явлен, но к его элементам обращаются в программе.предполагатся,что этот массив содержит 11 элемен- тов (от 0 до 10). Эквивалентны ситуации,при которых массив не об "явлен или об"явлен оператором DIM А (10). С использованием массивов связаны два характерных типа оши- б0К‘ Г10 DIM А(":>) 1 ’ Повторное описание массива । ,.,ф д Существует специальная команда CLEAR,которая очищает память ком- пьютера от переменных и массивов сохраняется только текст про - граммы .После использования этой команды модно заново об"являть массив. 2 . Значение индекса вышло за пределы,которые допустимы для данного массива (оно отрицательно или же превосходит значение указанное в операторе DIM) ПРИМЕРЫ ошибок обоих типов. Пассив об"явлен а) 10 DIM А(30) б) 10 А (1) - 10 ---неявно 20 А^34)= 1 20 DII.I А(20) л^'— явно Сообщения о соответствующих ошибках получите самостоятельно. Можно использовать массивы с двумя (и более) индексами.Если массив с одним индексом представляет coio“ чепочку переменных и называется одномерным,то массив с двумя индексами является таб- личен,а его элемент - клеткой в этой таблице. Использование дву- мерного массива : клетку,стоящую на пе- ресечении 1-“ строки и I-го столбца. TCIJH запись числа в
ПРИЛОЖЕНИЕ 9. О работе со строками. Строковые переменные занимают большое место в памяти.Если в программе используется несколько коротких стоок,общая длина ко торых не более 200 символов,то программа будет работать нормаль- но.Если же общая длина строк более велика,нужно в начале програ- ммы зарезервировать под строки достаточный об"ём памяти.Это дела- ется командой CLEAR N (N -общее число символов). (Об этой команде см. также в приложении 8). Строковые переменные.получающие конкретное значение с по- мощью оператора присваивания,хранятся в тексте программы и не занимают места в резервной области памяти (например, Т$="СТРОКА") Как только строковая переменная подвергается преобразованию (ввод, склейка и т.д.) она выносится в Строковую область.Если переменная, уже находящаяся в этой области подвергается новому преобразованию, то ей отводится новое место,а старое Становится "мусором".Если мусора в области слишком много,компьютер прерывает работу с про- граммой и чистит мусор.После паузы работа программы возобновля • ется. Оператор INPUT не позво- ляет вводить строки,со - держащие некоторые сим - волы,например запятые . Ввод произвольной Строки (до нажатия на клавишу^ производится оператором UNE INPUT имя строк.пер. Функция INPUTS позволяет вводить не только один символ,но и любое их ко- личество.Для этого необ- ходимо указать ожидаемое число символов в качест- ве аргумента. Пример (ввод 5 символов P$=INPUT$(5) I Строковые функции. STRING$(N ’*’) -строка изИодинак. ’ 1 символов SPACE$(N) -строка из пробел LEPT$>(F$,N) -вырезка Слева “строка" RIGHTS (Р$ -вырезка справа <2!__( ’ ‘СТРОКА" INSTR (N А$ В$) -Р^на номеру пози- 1 1 л v иф/ пии (не меньше N) , начиная с которой подстрока В$ вхо- дит в строку Аф.Если не входит,то фу- нкция равна 0. Можно определить собственную функцию со строковыми значениями (имя должно кончаться знаком $).Пример; DEE РЮШ(Р$,М)-МГР$(Р$Л1) Удобный приём при работе с программой; последней строкой программы поставить 1000 =INPUTtd) iSCPEEN 0:LIC,T Нажав люб .кл. .выводим прогр.на экран.
ПРИЛО&ЕНИЕ 10. Дополнительные сведения о подпрограммах. Из одно* подпрограммы можно обратиться к другой подпрогра- мме .Такая ситуация называется вложением подпрограмм.При вложении возникает очередь адресов возврата. Адреса возврата по мере обращения к очередным подпрограммам складываются Стопкой друг на друга.При возвращении берётся верх- ний адрес из стопки. скольких подпрограмм.Адреса этих подпрограмм перечислены через запятую.Выбор той пли иной подпрограммы зависит от значения пе- ременной,имя которой указано после слова ON .Выбирается подпро- грамма,адрес которой в списке имеет порядковый номер,равный зна- чению переменной. Адреса^подпрограмм QN К G-OSUB Переменная Если значение К равно 3, то происходит обращение к подпрограмме,порядковый номер адреса которой равен 3, 1000, 3000, 500,2000 Порядковые номера, адресов ’.е. к подпрограмме начин.со стр.51в
ПРИЛОЖЕНИЕ 11. Дополнительные сведения о языке MSX-Бейсик. Приложение содержит информацию о некоторых весьма полезных возможностях языка.Приложение не предназначено для систематичес- кого изучения.Его достаточно просмотреть,выбирая по вкусу и на- добности новые операторы. Кроме обычных десятичных чисел в языке Бейсик используются двоичные (См.занятие 26) ,шестнадаатиричные (см.занятие 30) и восьмеричные числа.Числу соответствующего вида предшествует ука- затель: а) «-В - двоичное число; б) &0 - восьмеричное число; в) &Н - шестнадцатиричное число. Для шестнадцатиричных чисел применяются обозначения: А16= 1010 • В16= 1^10 • С16= 1210 • ®16= ^10 , Е16= 1410 • р16= 1510 • Кроме действительных и Строковых переменных в Бейсике исполь- зуются целые переменные. Признаком целой переменной является знак процента в конце имени. Примеры имён целых переменных: KJJ , А1% , СР% . Если целой переменной присааезается действительное значение,то дробная часть отбрасывается. Можно использовать в арифметических выражениях ещё две опе- рации 1. \ - деление нацело С сначала у делимого и делителя отбрасывается дробная часть,производится деле- ние и берётся целая часть частного). 2. MOD - остаток от деления целых чисел (PRINT 7 MOD з) Команда SWAP Х,у позволяет произвести обмен значений у переменных одного типа ( действительная с действительной,строко- вая со строковой). Команда CLEAR Стирает все переменные и массивы в памяти . С помощью команды ERACE можно стереть только те массивы,имена ко- торых указаны после слова ERACE.________________________________ Команда ON К GOTO 1000,400,650,2000 действует аналогично переключателю подпрограмм (см .прил .10),но не предполагает возврата
Можно убрать с экрана подсказки для функциональных клавиш (действие самих клавиш от этого не изменится) командой КЕУ ОГР. Возврат подсказок КЕУ ОН . Вывод всех подсказок на экран для проверки КЕУ LIST . С помощью команды WIDTH можно сузить активное поле экрана в символьном режиме.Количеств о символов размещающееся на ширине экрана указывается после слова WIDTH. О положении курсора на экране можно узнать с помощью функ- CSRLIN - номер Строки ; POS (0) - - номер Столбца. При поиске ошибок в программе может помочь режим трассиров ки,т.е. распечатки номеров Строк,исполняемых по мере работы про граммы .Включение режима TRON , отключение TROPP . В музыкальном языке используются кроме перечисленных ещё и Следующие команды. L - число после буквы L указывает,что если после ноты не указано Awr.4utiw,то следует подразумевать именно его. (Пример: запись "L8ABC" эквивалентна записи А8В8С8 ). Т - число после Т задаёт темп..Используются числа от 32 до 255.Обычный темп соответствует 120. V - число от 0 до 15 задаёт громкость.Обычная громкость соответствует 8.Если задать громкость только для од- ного голоса,можно заглушить другие голоса. Существует графический язык,подобный музыкальному.После команды DRAW указывается строка однобуквенных команд с уточняющи- ми их числами.Буквенные команды управляют графическим пером,пере- мещая его в нужном направлении.При этом оно оставляет след.обра - зутощий рисунок. Направление движения задётся буквой,v а величина смещения - числом со знаком + или -.Это ч ‘ z * Е число указывает количество точек.Буква В перед на- ь \ Z правлением задает движение без следа.Буква сохра- няет след,но заставляет перо вернуться в исходную & точку .Буква С с последующим номером цвета позволя- ет менять цвет следа._________________________________ Многочисленными возможностями обладает команда PRINT USING. Одна из них - печать числа в заданном'формате (лишние цифры от- секаются) pRINT I http://www.gr8bit.ru । 1______ I
ПРИЛО&ЕНИЕ 12, О работе с дисководом. Дисковод Если на диске\ что-то меняется (форматиро- вание .запись .переиме- нование,удаление) ,то окно нужно закрыть . Нельзя записы- вать на диск (окно открыто) Удалять диск нажа- тием (EJECT - из- гонять) Включатель и индикатор включения Индикатор обращения к диску Можно записы- вать на диск (окно закрыто) Дисковод предназначен для записи на магнитный диск программ или данных.Любая самостоятельная запись на диске называется фай- лом (FILE - картотека).Программы и данные сохраняются на диске долгое время и могут быть загружены в память компьютера с помо - дью того же дисковода. Для работы с диском используется большой набор команд.Осо- бенно сложны команды записи и считывания данных.В этом приложении они не затрагиваются. Форматирование диска Чтобы начать работу с новым диском нужно его отформатиро- вать командой „FORMAT знак подчёрки- вания Запрос Запрос Запрос Команда работает в режиме диалога DRIVE NAME?(A,8) {-DOUBLE SIDES g -SING-LE. SIDES Ответы • vJ*' \ STRIKE А КЕУ WHEN READV X Сообщение об окончании(1,5 мин) FORMAT COMPLETE
Названия файлов Название файла состоит из имени (от 1 до 8 символов) и ти- па файла (от 0 до 3 символов) .Тип отделяется от имени точкой.Если тип отсутствует.точка не нужна. Заглавные и строчные латинские буквы в имени не различаются. Заглавные и строчные русские буквы различаются. Во всех командах названия файлов необходимо заключать в ка- вычки.Если в команде вместо типа файла указана звёздочка (%),то подразумеваются все файлы с данным именем и любыми типами.Звёз - дочку можно применять и вместо имени. Вывод на экран названий всех файлов.записанных на диск. FILES $ Обычно файлам,которые представляют собой программы на Бейсике,да- ют тип ВАЗ (чтобы было легче отличать их от прочих файлов).Коман- дой FILES можно вывести на экран только файлы этого типа: FILES "*.BAS"oS Сохранение программы на диске. Если вы написали программу,которую предстоит многократно применять,следует записать её на диск.Это делается с помощью кома- нды SAVE (сэйв-Сохранять).После слова SAVE указывается название программы в кавычках.Название вы должны придумать сами : SAVE "МОЯПРОГР.ВАЗ" На диск можно записать и ещё не законченную программу.За- тем её снова загружают в компьютер с диска и продолжают работу над ней. Загрузка программы с диска в память компьютера. Загрузка проводится команой LOAJ (лоуд-грузить): LOAD "МОЯПРОГР.ВАЗ" Запуск программы непосредственно с диска. WMOffilPOFP. В AS" Слияние двух кусков в одну программу. Если вы пишете большую программу,вы можете написать её по частям (блокам).каждый блок записать на диск,а затем слить их во- едино (в одну программу)в памяти компьютера. Для сохранения на диске блоков.предназначенных в дальней- шем к слиянию,нужно использовать команду SAVE в особом формате:
SAVE "БЛ0К1",A Буква А указывает,что программа BJIOK1 будет записана на диск в менее компактном виде,который позволяет сливать программы. Затем нужно создать в памяти компьютера следующий блок.Сли- яние производится командой MERGE Смедж-Сливать) ; MERGE "БЛОКГ Важно следить за тем,чтобы сливаемые программы не имели Строк с одинаковыми номерами. Изменение названия файла на диске. NAME "МОЯПРОГР.BAS" AS "РР0СР1" ^старое имя ^новое имя ИАМЕ(нейм)- „ имя Удаление файла с диска. KILL "БЛОК1" KILL (кил) - вычёркивать Копирование программы с диска на диск. У нас имеется два диска.Нужно переписать программу с одного диска (будем обозначать этот диск через А:) на другой (его обозна- чим через В:) .Подадим команду СОРУ "A:PKO&.BAS" ТО "В-.КОПИЯ.ВА " Опия исходной ^имя копии программы СоРУ Скопи) - копировать После того,как команда подана,нужно следить за появлением на экране сообщений компьютера: INSERT DISKETTE FOR DRIVE В’- /IND STRIKE A KEY WHEN R.EAD)/ Компьютер просит вставить в дисковод соответствующий диск (А: или В:) и нажать на пробел. Загрузка с диска и запуск программ,напиоанных на машинном языке. Многие программы,например игры,написаны на машинном языке. Загрузка в память и запуск таких программ производится следую - щим образом; BLOAD "ИГРА.ЯЛ",R Тип GM от GAME (гейм)-игра Некоторые игры записаны в два файла.Ко второму файлу нужно при- менить такую же команду: BLOAD "ИГРА.2<ЗМ",Р Диск А: в дисководе
ПРИЛОйДНИЕ 13. О работе на принтере. Клавиатура Механическое продвижение бумаги Принтер - печатающее устройство,которым управля- ет компьютер. Щель для вставки бумаги Бумага закреплена Включени свободна Валик Печатающая головка I-1 pOWER - индикация - индикация - индикация - индикация бумаги включения готовности вкл.печати отсутствия включение/отключение индикаторов READY и прогон страницы при отключ. READY прогон строки при отключ. READY и и .зелёный цвет красный цвет ON LIME ON UNE ON UNE сопровождается звуковым сигна- лом Печать осуще- ствляется толь- ко при горящих индикаторах READY И ON LINE
Команды принтеру. 1. (PRINT - печать на бумаге числовой и текстовой информации.Пол- ная аналогия с PRINT. 2. LUST - печать текста программы на бумаге.Полная аналогия с LIST. 3. LFILES - печать на бумаге названий всех файлов.записанных на диске.Полная аналогия с FILES. Табулятор. Командой PRINT молено печатать на экране слова в любом месте экрана.В этом помогает команда LOCATE.При печати на бумаге операт аналог. LOCATE нет.Более того.при печати нельзя возвращаться в предыдущие строки (прогон бумаги осуществляется только вперёд ). Возврат в начало текущей строки из её конца возможен. Установка печатающей головки в заданное место строки произ- водится- с помощью так называемого табулятора ТАВ<его можно исполь- зовать и в операторе PRINT). Формат команды LPRINT с табулятором виден из примера: 10 FOR 1=1 ТО 50 20 LPRINT TAB(25-20*SIN(I/3));"ПРИНТЕР" 30 NEXT I Арифметическое выражение,задающее номер позиции,указывается после слова ТАВ в скобках. Управление принтером. Использование в команде LPRINT специальных управляющих ко - дов и функции CHR$ (см.занятие 24) позволяет управлять принтером, например,менять вид шрифта,его плотность и высоту. Далее указаны команды и соответствующий им шрифт. LPRINT CHR»(27)j"5" НОРМАЛЬНЫЙ шрифт Команды включающие нормальный lprint chr»(27))"4" шрифт и италик соответственно отменяют другой шрифт. шрифт ИТАЛИК г Для принтера используются три плотности шага: цицеро,элите, уплотненный.Каждый из них может быть изменен с помощью команды расширения режима.Она увеличивает любой шаг в два раза.
LPRINT CHR*(27);"N" плотность LPRINT CHR*(27); "E" плотность ЗЛИТЕ LPRINT CHR*(27); УПЛОТНЕННЫЙ nr ЦИЦЕРО(нормальная) tBce буквы В кавычках • заглавные. Различные типы плотности У можно комбинировать с нор- • мальным шрифтом и италиком. LPRINT CHR*(14) РАСШИРЕННЫЙ режим LPRINT CHR*(IS) ОТМЕНА расширенного режима Чтобы вернуться из конца строки в ее начало нужно несколько раз воспользоваться командой возврата печатающей головки на один символ назад: LPRINT CHR*(8)j О печати изображений. Принтер-можно использовать в качестве графопостроителя,т.е. устройства,которое позволяет печатать рисунки,графики и т.д. Кодирование элемента изображения i (по вертикали) -------------------1 Принтер печатает восьмью штырьками щей головки.Каждый штырёк печатает печатаю- одну точ- *> ку.Существует режим растровой графики,позво- ляющий непосредственно управлять ударом каж- дого штырька.Он включается командой LPRINT CHR*(27) , "50200/! количество положений пе- чатающей головки в строке при растровой печати. На каждое такое положение нужно подать команду с указанием того , какие штырьки должны печатать: LPRINT chr$(двоичный код); . Чтобы не было пробелов между строками,их нужно устранить к командой •__lprint chr*(27);"Т16“ (отмена этой команды 10 data 8*00000001,&ы0000000 \______________LPRINT CHR$(27);*A" ) 20 POKE &HF418,liREM Соовщ.компьютеру о растр.режима 40 for1!»!14?*^7' ’ "Т16"’ ^Программа печатает прямоугольник 200*16 50 LPRINT CHR* (27) i "50200“ Ф ф~ | 1-Я ОТР- 60 LPRINT CHR*(255)t Q—d)— _)______________I 2-Я Стр. 70 READ А Ж—---------См.прил.9 80 LPRINT STRING*<198,CHR*(А)>; I«в<«<««’255 В В 90 LPRINT CHR*(255) | g g 100 NEXT I
Литература. Литература по Бейсику. Чтобы освоить все возможности языка MSX.- Бейсик прежде всего можно использовать пособия,входящие в комплект документа- ции к КУЕТ "ЯМАХА". 1. Справочное руководство по языку программирования Бей - сик для КУЕТ "ЯМАХА". 2. Gemini -10ХВ/15ХВ'. Инструкция по эксплуатации потребите- ля (руководство по работе с принтером). Полезна разработка Тульского пединститута 3. Методические рекомендации по использованию файловых средств диалогового языка программирования MSX - Бейсик. Близкая версия Бейсика описана в книге 4. Пул Л. Работа на персональном компьютере. М 1986. Ь разработке ПИИ школ МП РС.рСР о. Степанов М.Е. Программирование на языке Бейсик-АГАТ. описывается другая версия Бейсика,по более подробно разбираются решения некоторых задач,вошедших в данное пособие. 6. КоСневСки Ч. Занимательная математика и персональный компьютер. М 1987. Литература к домашним заданиям. Занятие 2. _ Глейзер Г.И. История математики в школе. УЛ -VIII классы. (Глава б, §§16-17) 'I 1982. Занятие 8. Интересные рисунки можнЬ найти в книгах о дизайне и архи- тектуре. Килдпе Т.Л. Основы архитектуры. М 1984. Зайцев К.Г. Графика и архитектурное творчество. М 1979. Холмянский Л.М. .Щипанов А.С. Дизайн. ’! 1985. Казаринова ь.11. Красота.Екус.акономика. М 1985. Занятие 11. Интересные орнаменты приведены в книгах Шубников А .В. Симметрия. М 1940.
Волкотруб И.Т. Основы комбинаторики в художественном кон- струировании. К 1986. Занятие 12. Изображение интересных геометрических поверхностей можно найти в книгах Гильберт Д.,Кон-Фоссен С. Наглядная геометрия. М 1981. Берже М. Геометрия,тома 1,2. М 1984. Занятие 13. О способах построения различных спиралей можно узнать в книге Матвиевская Г.П. Альберт Дюрер - учёный. М 1987. Занятие 14. Уравнения кривых взяты из книги Доморяд А.П. Математические игры и развлечения. М 1961. Занятие 17. Подробнее познакомиться с циклоидами можно по книге Берман Г.Н. Циклоида. М 1980. Занятие 18. Бескин Н.М. Изображение пространственных фигур. М 1971. Занятие 20. Дорфман А.Г. Оптика конических сечений. Занятие 22. Найти описание некоторых игр для реализации их на компью- тере можно в книгах Гик Е.Я. Занимательные математические игры. М 1987. Кибернетика.Микрокалькуляторы в играх и задачах. М 1986. Занятие 24. Немного о языке ЛОГО можно узнать из книг Современный компьютер.Сборник Статей. И 1986. Персональные компьютеры.Информатика для всех. М 1987. О простых исполнителях рассказано в книге Звенигородский Г.А. Первые уроки программирования. М 1985. Занятие 29. Задача о построении узора взята из журнала В мире HayKH.Scientijic American .Ноябрь 1986г .Раздел "Зани- мательный компьютер". О машинном сочинении музыки рассказывает книга Зарипов Р.Х. Кибернетика и музыка. М 1981.
С О Д E P I А Н И Е . Введение.................................................... 3 ЗАНЯТИЯ I . Клавиатура............................................. 8 2 . Работа в режиме калькулятора.......................... 15 3 . Командные строки.................................... 23 4 . Работа с программой................................... 31 5 . Оператор перехода..................................... 36 6 . Графический режим.Отрезки............................. 39 7 . Графический режим.Окружности.......................... 42 8 . Сложные изображения................................... 45 9 . Оператор цикла........................................ 49 10 .Построение семейств геометрических фигур............... 53 II .Построение орнаментов.................................. 56 12 .Линейная зависимость между величинами.................. 59 13 .Изменение масштаба изображения на экране............... 61 14 .Графики элементарных функций.......................... 63 15 .Хранение и считывание данных.......................... 67 16 .Понятие переменной.Оператор ввода..................... 70 17 .Оператор присваивания................................. 73 18 .Вложенные циклы....................................... 77 19 .Условный оператор..................................... 79 20 .Сложные условия....................................... 81 21 . Переход по условию................................... 84 22 .Массивы............................................... 87 23 .Строковые переменные.................................. 90 24 .Строковые функции и массивы........................... 93 25 . По дпр о г раммы..................................... 96 26 .Спрайты-движущиеся объекты............................ 98 27 .Таймер и случайные числа..............................102 28 .Прерывания по событию.................................105 29 .Музыкальный язык......................................107 30 .Непосредственное обращение к физической памяти........109 31-34.Индивидуальные задания...............................114 Контрольные............................................122 ОТВЕТЫ И РЕШЕНИЯ...........................................125
ПРИЛОЖЕНИЯ I. Дополнительные сведения о клавиатуре...................243 2. Ошибки в программе.................................... 244 3. Экранные режимы и использование цветов.................245 4. Дополнительные средства работы с программой............247 5. Дополнительные сведения о графических операторах.........248 6. Об операторе ввода.....................................249 7. Дополнительные сведения об условном операторе..........250 8. Дополнительные сведения о массивах....................251 9. 0 работе со строками...................................252 10. Дополнительные сведения о подпрограммах...............253 II. Дополнительные сведения о языке MSX-Бейсик............254 12. 0 работе с дисководом.................................256 13. 0 работе с принтером..................................259 Литература........................................... 262 ЧТО МЫ УЗНАЛИ