Basic вводный курс


Алгоритмы, графика, символы и строки


Глава 2. Алгоритмы, графика, символы и строки
Глава 2. Алгоритмы, графика, символы и строки Алгоритмы Виды алгоритмов Линейный алгоритм Графика в Бейсике Графические примитивы Правила по...
Алгоритмы
Алгоритмы Все, что бы мы ни делали, будь то на компьютере, или в жизни, чаще всего преследует какую-либо цель. И не всегда эта цель достигается. Но если мы как следует сформулируем для себя же л...
Безусловный переход
Безусловный переход Безусловный переход оператором goto предписывает программе свернуть с линейного пути и, беспрекословно повинуясь, перейти к метке, расположенной в любом месте программы. 8 к...
Условный переход
Условный переход Мало того, что условный переход подразумевает выполнение тех или иных команд в зависимости от проверяемого условия, так Бейсик предоставляет нам еще и несколько вариантов дейс...
Рисунок 32. Движение точки по экрану под углом 45°
Рисунок 32. Движение точки по экрану под углом 45° SCREEN 9 Х=300: Y=175 ' начальные координаты точки DX=1: DY=1 ' приращение координат X и Y. ' Так как мы их сделали положительными, ' координаты...
Рисунок 33. Движение точки по экрану с препятствием
Рисунок 33. Движение точки по экрану с препятствием Допустим, координаты углов прямоугольника следующие: левый верхний 100, 180; правый верхний 300, 180; левый нижний 100, 230; правый нижний 3...
Рисунок 34. Муха в графине
Рисунок 34. Муха в графине 133. Если вы обратили внимание, "муха" при полете слегка пробивает стенки графина. Что нужно изменить в условиях, чтобы этого избежать? Сделайте из "мухи&...
Рисунок сутствует, возврат гарантирован."
Рисунок сутствует, возврат гарантирован." PRINT "В Вас отсутствует дух авантюризма, это слишком скучно." END SELECT Еще пример. По заданному номеру дня недели требуется напечатать е...
Циклический алгоритм
Циклический алгоритм В тех случаях, когда нам необходимо выполнить одинаковые действия, в которых изменяется только какая-либо величина (так называемый параметр), то мы применяем операторы цикл...
Оператор с заранее известным числом повторений
Оператор с заранее известным числом повторений Когда мы работали с графикой, то в одном из заданий вам предлагалось построить мишень — пять концентрических окружностей. Мы это легко сделали, пя...
. Горизонтальная линия из точек
Рисунок 1.35. Горизонтальная линия из точек 138. Заполните экран горизонтальными линиями (через 10), а затем, с помощью еще одного оператора цикла, вертикаль ными линиями другого цвета (тоже че...
. Решетка
Рисунок 1.36. Решетка...
. Пешеходный переход "зебра"
Рисунок 1.37. Пешеходный переход "зебра" 139. Нарисуйте пятиконечную звезду, вписанную в окружность, как на Рисунок 1.25. Используйте для рисования и закраски операторы цикла. 140. По...
. Фантастический глаз
Рисунок 1.38. Фантастический глаз...
. Взрыв сверхновой
Рисунок 1.39. Взрыв сверхновой 142. Изобразите взрыв сверхновой звезды (если это задание делать по-простому, то понадобится четыре оператора цикла, можно сложнее — но и короче). Сделайте лучи в...
. Орнамент
Рисунок 1.40. Орнамент Правила построения орнаментов: выявить в орнаменте повторяющийся фрагмент; выделить опорную изменяющуюся величину (параметр), ее начальное, конечное и шаг;...
Рисунок 41. Греческий орнамент
Рисунок 41. Греческий орнамент...
. Буратино
Рисунок 1.42. Буратино 154. Когда мы изучали операторы data и read, to мы говорили, что используем их при изучении оператора цикла. Этот час пробил. Задав в операторе data координаты всех точек...
Оператор цикла WHILE... WEND
Оператор цикла WHILE... WEND Этот оператор позволяет сочетать свойства условного оператора и оператора цикла. С их помощью можно выполнять повторяющиеся действия с заранее неизвестным количеств...
Случайные числа
Случайные числа В процессе изучения циклических алгоритмов уместно рассказать о генерации случайных чисел программным путем. При кажущейся простоте получить случайные числа не так легко. Попро...
Моделирование бросания монеты
Моделирование бросания монеты Нам необходимо при каждом запуске программы случайным образом получать либо число 0 ("решка"), либо 1 ("орел"). Если мы будем просто брать цел...
Моделирование бросания игрального кубика
Моделирование бросания игрального кубика Казалось бы надо пойти по уже проторенному пути первого примера и, раз нам надо получить цифры от 1 до 6, просто умножить rnd(N) на 6. Но, если разобра...
Программа "Звездное небо"
Программа "Звездное небо" Изобразим звездное небо пятьюстами белыми точками на черном фоне. Координаты каждой из точек должны быть в пределах по X от 0 до 640 и по Y от 0 до 350....
. "600 Секунд"
Рисунок 1.43. "600 секунд" 177. Видоизмените (весьма, надо сказать незначительно, легким движением руки) предыдущую программу, чтобы она заполняла экран сотней цветных прямоугольников...
. Разноцветные прямоугольники
Рисунок 1.44. Разноцветные прямоугольники...
. Разноцветные окружности
Рисунок 1.45. Разноцветные окружности...
. Взрыв
Рисунок 1.46. Взрыв  ...
Построение графиков функций
Построение графиков функций Строить графики в Бейсике мы будем точками, а задавать компьютеру функцию для построения оператором def fn. Кроме того, координатная сетка экрана компьютера, как мы...
. График функции синуса
Рисунок 1.47. График функции синуса Значение X изменяется от 0 до 640, давая возможность строить график на всю ширину экрана. Достаточно сложно выражение для Y. Это связано с переносом начала к...
. График гиперболы
Рисунок 1.48. График гиперболы Постройте теперь графики следующих функций. 187. y=1i/(x+d. 188. Y=SQR(X). 189. Y=X/(X^2-1). Сейчас задания посложнее, но и интереснее. Изобразите на экране...
Циклы с несколькими зависимыми параметрами
Циклы с несколькими зависимыми параметрами Бывает, что при попытке выполнить задание с помощью оператора цикла выясняется, что изменяется не одна, а две или три величины. В том случае, если вы...
. "Рупор"
Рисунок 1.49. "Рупор" Действуем по правилам. Все окружности лежат на одной горизонтали, т. е. у их центров меняются не координаты Y, а координаты X. Кроме этого, они имеют разный ради...
Рисунок .50. "Орбиты"
Рисунок .50. "Орбиты" 194. Создайте программу, выводящую на экран "труба" — окружности одного радиуса, выходящие из левого верхнего угла экрана и идущие под углом 45° вправо...
. "Труба" под углом 45°
Рисунок 1.51. "Труба" под углом 45°...
Рисунок 52. "Труба" по диагонали
Рисунок 52. "Труба" по диагонали 195. Напишите программу, аналогичную предыдущей, только окружности разместите из левого верхнего угла в правый нижний по диагонали экрана (Рисунок 1.5...
. Лестница 1
Рисунок 1.53. Лестница 1...
. Лестница 2
Рисунок 1.54. Лестница 2 197. Нарисуйте две пирамиды индейцев майя — вид спереди и вид сверху (Рисунок 1.55 и 1.56). 198. Вернитесь к примеру с "рупором" из увеличивающихся окружносте...
Рисунок 55. Пирамида: вид спереди
Рисунок 55. Пирамида: вид спереди...
Рисунок 56. Пирамида: вид сверху
Рисунок 56. Пирамида: вид сверху 199. Напишите программу построения "эллипсирующих окружностей" (Рисунок 1.57)....
Рисунок 57. "Эллипсирующие окружности"
Рисунок 57. "Эллипсирующие окружности"  ...
Вложенные циклы
Вложенные циклы В предыдущем разделе мы рассмотрели случаи, когда в цикле изменяются несколько величин, но их можно выразить друг через друга. Сейчас нам надо рассмотреть ситуации, когда измен...
Рисунок 58. Лоскутный ковер
Рисунок 58. Лоскутный ковер 201. Заполните экран светофорными кругами (Рисунок 1.59). Самые большие круги красные, средние — желтые, маленькие — зеленые....
Рисунок 59. Светофорные круги
Рисунок 59. Светофорные круги 202. Воспользовавшись предыдущим заданием, замените окружности на квадраты — получатся "светофорные" квадраты. 203. Изобразите шахматную доску. Мы всё ра...
Рисунок 60. Таблица умножения
Рисунок 60....
Таблица умножения Прежде чем выдать
? "Поспите 10 сек." SLEEP 10 ? "Подъем! Учитель пришел!" Если значение секунд указано 0 или не указано вовсе, то программа будет ожидать нажатия любой клавиши, например:...
Рисунок 61. Электронный будильник
Рисунок 61. Электронный будильник А теперь два интегрированных задания, где надо применить знания, приобретенные вами ранее. 207. Напишите программу "Уничтожение астероида". Экран запо...
Рисунок 62. Вычисление числа я методом Монте-Карло
Рисунок 62. Вычисление числа я методом Монте-Карло  ...
Наращивание переменной
Наращивание переменной О том, что такое переменная и об операторе присваивания мы уже говорили. И обращали внимание на такое абсурдное с точки зрения математики выражение Х=Х+1 Применяет...
. Цепочка соприкасающихся окружностей
Рисунок 1.63. Цепочка соприкасающихся окружностей 217. Создайте программу вычисления среднего роста десяти человек, данные о которых занесены в оператор data. 218. Напишите программу вычисления ср...
Виды алгоритмов
Виды алгоритмов Алгоритмы бывают трех основных видов, которые являются базовыми при написании программ. Первый тип — линейный алгоритм. В нем все действия выполняются в строгом порядке, последо...
Оператор DO...LOOP
Оператор DO...LOOP Оператор do. . .loop чем-то похож на оператор while. . .wend, но возможности его применения несколько шире — проверяемое условие может быть использовано не только в начале оп...
. Разноцветные круги
Рисунок 1.64. Разноцветные круги  ...
Символы и строки
Символы и строки Когда мы говорили о дружественном интерфейсе, то упоминали о так называемых строковых переменных, имена которых отли чаются от обычных добавлением знака $. В таких переменных мо...
Функции ASC и CHRS
Функции ASC и CHRS Функция asc определит нам код ASCII для первого символа этой строковой переменной и имеет следующую форму записи: ASC(строковая_переменная) Например: N=ASC("F&...
Функция INPUTS
Функция INPUTS Эта функция ожидает ввода N символов, которые и будут обрабатываться программой сразу после их набора на клавиатуре, не дожидаясь нажатия клавиши <Enter>. В этом заключает...
Функция LEN
Функция LEN Следующая функция — len. Она определяет длину введенной или существующей в переменной строковой переменной в символах. Синтаксис: LEN(строковая_переменная) Например, CLS INPUT &q...
Функции LEFTS, RIGHTS и MID$
Функции LEFTS, RIGHTS и MID$ Для получения фрагмента строки (или значения строковой переменной) применяются специальные функции. Функция left$ выделяет из введенной строковой переменной n симв...
. Телеграф
Рисунок 1.65. Телеграф  ...
Сравнение строковых переменных
Сравнение строковых переменных Над строковыми переменными тоже можно производить операции сравнения. Больше будет та переменная, которая начинается с символов, более близких к концу алфавита,...
Преобразование строчных и прописных букв
Преобразование строчных и прописных букв Если ваш текст напечатан строчными буквами, вы хотите заменить его прописными или наоборот, не надо заново его набирать. Для этого есть две функции:...
Функция определения вхождения подстроки
Функция определения вхождения подстроки Допустим, мы хотим найти в тексте какое-либо слово. Нам на помощь приходит функция instr, имеющая следующий синтаксис: INSTR(N, F$, R$) где n — по...
Функция INKEY$
Функция INKEY$ Вернемся еще раз к организации пауз и задержек в вашей программе. Мы уже делали это с помощью пустого оператора цикла, с помощью оператора sleep. Есть еще одна полезная функция...
Линейный алгоритм
Линейный алгоритм Для написания программ с линейным алгоритмом мы уже готовы. Нам известно, как очистить экран и поприветствовать пользователя по имени, запросить у него необходимые данные и ре...
Графика в Бейсике
Графика в Бейсике Иногда при изучении этой темы приходится сталкиваться с непониманием учащихся. "А зачем так сложно, если в любом графическом редакторе можно сделать то же самое?" Вз...
Рисунок 4. Размеры и координаты экрана в режиме screen 9
Рисунок 4. Размеры и координаты экрана в режиме screen 9  ...
Графические примитивы
Графические примитивы Ну что ж, начнем с графических примитивов, т. е. элементарных объектов, на которые можно разбить любое сложное изображение....
Точка
Точка Первый из графических примитивов — точка. Для изображения точки используется оператор pset со следующим синтаксисом: PSET(X, Y) , С где х и y — координаты точки на экране, а с — ее...
Отрезок и прямоугольник
Отрезок и прямоугольник Следующий примитив — отрезок прямой линии. Оператор записывается таким образом: LINE (X1, Y1)-(X2, Y2), С где XI, yi — координаты начала отрезка; х2, Y2 — координ...
Рисунок 5. Отрезок прямой линии
Рисунок 5. Отрезок прямой линии Программа будет выглядеть так: screen 9 COLOR 1, 14 LINE (100, 300)-(600, 50), 1 Не секрет, что по диагонали прямоугольника можно всегда его достроить. Из...
Рисунок .6. Прямоугольник со сторонами, параллельными экрану
Рисунок .6. Прямоугольник со сторонами, параллельными экрану...
Предупреждение 1
Предупреждение 1 Будьте внимательны с координатами. Довольно часто вместо координат диагонали указывают координаты стороны прямоугольника. В таком случае вы получите просто отрезок, параллельный э...
Рисунок 7. Так надо делать!
Рисунок 7. Так надо делать! К сожалению, опыт автора показывает, что многим из вас лень этим заниматься — отсюда пустая трата сил и времени и очень неказистые результаты. Перейдем к упражнениям...
Ромб с диагоналями
Рисунок 1.8. Ромб с диагоналями Пропущенные координаты определите сами, зная свойства ромба. 90. Создайте программу, рисующую Российский флаг'. Флаг состоит из трех полос, поэтому рисовать их н...
Рамка с конвертом
Рисунок 1.9. Рамка с конвертом Рамка рисуется двумя операторами line с bf, конверт — подумайте сами. Координаты тоже выберите сами. Только не рисуйте слишком мелкие объекты....
Рисунок ок должен быть крупным
Рисунок ок должен быть крупным и наглядным. Это любят преподаватели! 92. Создайте программу, выводящую на одном экране куб и пирамиду (Рисунок 1.10)....
. Куб и пирамида
Рисунок 1.10. Куб и пирамида...
Окружность
Окружность Следующий этап построения — окружность. Все, что нужно знать об окружности для Бейсика — это координаты ее центра и радиус. Оператор выглядит так: CIRCLE (X, Y) , R, С где х,...
Эллипс
Эллипс Очередной примитив — эллипс. Эллипс — это, по сути, окружность, которой слегка дали по "голове" или по "бокам", в результате чего она стала вытянутой по вертикали ил...
. Эллипс, вытянутый по горизонтали
Рисунок 1.11. Эллипс, вытянутый по горизонтали...
. Эллипс, вытянутый по вертикали
Рисунок 1.12. Эллипс, вытянутый по вертикали Очевидно, что если коэффициент сжатия равен 1, то это будет уже никакой не эллипс, а просто окружность. Оператор рисования эллипса записывается почт...
. Два пересекающихся эллипса
Рисунок 1.13. Два пересекающихся эллипса...
Рисунок 14. Мишень Рисунок 15. Снеговик
Рисунок 14. Мишень...
Рисунок 15. Снеговик Рисунок 16. Цилиндр
Рисунок 16. Цилиндр...
. Летающая тарелка
Рисунок 1.17. Летающая тарелка Ну что ж, если все получается, то пора постепенно переходить к более сложным вещам, а именно, к рисованию дуг окружностей и эллипсов. Но прежде следует вспомнить,...
. Тригонометрическая окружность
Рисунок 1.18. Тригонометрическая окружность Взглянув на тригонометрическую окружность, мы всегда довольно легко сможем определить начало и конец нужных нам дуг. Более того, Бейсик позволяет исп...
. Верхняя половина окружности
Рисунок 1.19. Верхняя половина окружности Первым делом, глядя на дугу, определяем направление против часовой стрелки. Это дает нам возможность выяснить, где находится начало и конец дуги. Далее...
Предупреждение 2
Предупреждение 2 Прежде, чем мы приведем более сложный пример дуги, хочется сделать еще одно полезное замечание. Если в операторе построения дуг поставить знак минус перед значениями углов дуги, т...
Рисунок 20. CD-MAN
Рисунок 20. CD-MAN Построим изображение CD-MAN (Рисунок 1.20). Радиус "глаза" и координаты его центра определим исходя из здравого смысла. Хотя на первый взгляд кажется, что данное по...
Рисунок 21. Месяц
Рисунок 21. Месяц В качестве примера нарисуем "светит месяц, светит ясный" (Рисунок 1.21). Внешняя граница месяца — это дуга окружности, а внутренняя — дуга эллипса. Центр у них общий...
. CD-MAN, глядящий на запад
Рисунок 1.22. CD-MAN, глядящий на запад...
. Квадрат с окружностями
Рисунок 1.23. Квадрат с окружностями 99. Создайте программу, отображающую месяц в обратную сторону, чем в примере, рассмотренном выше. Закрасьте его красным цветом. 100. С помощью Бейсика нарис...
. Петля гистерезиса
Рисунок 1.24. Петля гистерезиса...
. Звезда
Рисунок 1.25. Звезда 102. Выведите на экран пятиконечную звезду, вписанную в окружность и закрашенную как на Рисунок 1.25. 103. Нарисуйте корабль в ночном море под российским флагом (Рисунок 1....
. Корабль в ночи
Рисунок 1.26. Корабль в ночи  ...
Правила построения сложных изображений
Правила построения сложных изображений При рисовании придерживайтесь определенных правил, которые перечислены далее. Обязательно начертите свое изображение на бумаге в масштабе. Разб...
Предупреждение 1
Предупреждение 1 Запускать программу необходимо не после ее ввода целиком, а следом за первым логически законченным фрагментом изображения, чтобы иметь возможность сразу оценить правильность того...
. Храм
Рисунок 1.27. Храм...
. Буква F, католический костел, яхта, знаки "Не курить" и "Любовь", мороженое
Рисунок 1.28. Буква F, католический костел, яхта, знаки "Не курить" и "Любовь", мороженое 106. Так как программированием чаще занимаются представители сильного пола, а среди...
Рисунок 29. Эмблема футбольной команды "Зенит"
Рисунок 29. Эмблема футбольной команды "Зенит"  ...
Макроязык GML
Макроязык GML Для расширения возможностей машинной графики Бейсика был дополнительно разработан специальный макроязык GML (Graphics Macro Language). Он позволяет строить довольно сложные изобра...
Таблица 1.3. Команды языка GML
Таблица 1.3. Команды языка GML Команда Действие Un Переместиться вверх на n точек Dn Переместиться вниз на n точек Ln Переместиться...
Рисунок 30. Основные команды перемещения языка GML
Рисунок 30. Основные команды перемещения языка GML Для приведения в действие последовательности команд языка GML необходимо использование оператора draw. Например, команда I DRAW "R50...
. Елочка
Рисунок 1.31. Елочка 109. Если вам удалось предыдущее задание, то попробуйте вырастить на экране еловый бор из трех одинаковых елочек, пририсовать к ним траву, солнце, небо, облака — в общем, в...
Вывод текстовой информации в графике
Вывод текстовой информации в графике Часто хочется сопроводить свои рисунки подписями. Не сдерживайте свои желания. Делайте это просто — с помощью операторов locate и print, как мы это уже мног...
Предупреждение 1
Предупреждение 1 Только надо помнить, что координаты в операторе locate не графические (640x350), а текстовые (80x25).  ...
Разветвляющийся алгоритм
Разветвляющийся алгоритм Ну что ж, надеюсь, что с линейными программами особых трудностей у вас не возникло. Пиши команды подряд, хотя, конечно, все сначала надо было продумать, и изображения у...








Начало