Описание методической разработки. 1. Название. Изучение графических программирования Qbasic. возможностей среды 2. Аннотация. Курс, состоящий из шести уроков, предназначен для ознакомления и изучения графических возможностей среды программирования Qbasic. Курс используется при изучении предмета информатика в 9-11 классе. По опыту использования, ученики со слабым и средним уровнем компьютерной подготовки без труда осваивают команды работы с графикой. Подготовленные ученики подходят к выполнению практики творчески, то есть вносят в программы свои дополнения. 3. Описание разработки. Изучение языка программирования и создание программ на этом языке это не одно и тоже. Глубокое знание первого предполагает совершенное владением вторым, то есть программированием на этом языке. Но, например, зная к 5-му классу базу литературного языка, прилично выражать свои мысли на этом языке учатся до одиннадцатого, а яркие произведения на нем создают единицы. То же самое происходит и в программировании. Переход от знания языка к его эффективному использованию не так прост, как кажется на первый взгляд. Поэтому то в задачу преподавателя и входит показ того, что результат работы всего нескольких строк простенькой программы тоже может быть неожиданным, интересным, дающим возможность творчески участвовать в этом процессе. А когда у ученика появляется интерес и понимание, что он не просто пассивный наблюдатель, а активный участник и творец, материал усваивается им на лету, откладывается глубоко, легко может быть им использован и расширен. А не в этом ли наша задача? Курс предполагает не статическое отображение графических элементов, а динамическое (меняющееся). Программы, демонстрирующие графические возможности построены по принципу программ - хранителей экрана. Программы - хранители экрана выводят на монитор динамическое (изменяющееся) изображение, что исключает возникновение "усталости" пикселей. Усталость пикселей это эффект снижения яркости их свечения. Например, если у вас в одном и том же месте экрана находится одна и та же иконка, и монитор показывает это изображение постоянно то через пару - тройку лет яркость пикселей на этом участке снижается и даже на выключенном мониторе в этом месте будет заметен след от этой иконки. Конечно же, приводимые программы не полноценные Screen-saver - программы, которые мы используем в WINDOWS, но принцип их работы аналогичен: выведение на экран динамического (изменяющегося) изображения до момента нажатия любой клавиши. Приводимые примеры программ активно используют большое количество стандартных алгоритмических структур, операторов языка и приемов программирования, наглядный показ которых легко воспринимается и обеспечивает возможность их применения в дальнейшем. Задача преподавателя сводится к демонстрации азов использования графических возможностей компьютера. Если удается разбудить в учениках творческое начало при изучении данной темы, эффективность ее восприятия повышается многократно. Урок 1.Знакомство с графическими режимами программной среды Qbasic. Урок открывает новую тему. Объем новой информации значителен. Основную массу ее необходимо дать под запись. Время на опрос учащихся по предыдущим темам в данном уроке не предусмотрено. Практическое использование компьютера также не предусмотрено. Объяснение новой темы: Существуют 2 способа вывода информации на экран текстовый и графический. В текстовом режиме в любую точку на экране можно вывести 1 символ. Символ может быть любым из 256, исходя из информации, хранящейся в одном байте. Символы выводятся построчно. Количество строк и символов в строке может быть разным, но стандартный текстовый режим обычно выводит 25 строк по 80 символов. В графическом режиме минимальным элементом, который можно вывести на экран, является не символ, а пиксель. Пиксель (точка экрана) представляющая собой крошечный прямоугольник, размеры которого зависят от установленного графического режима. Верхняя левая точка экрана имеет координату (0,0), ось Х направлена вправо, ось Y - вниз, т.е. чем ниже на экране расположена точка, тем больше ее координата по оси Y. Программная среда QBasic работает в текстовом режиме. Для работы программы в графическом режиме, этот режим нужно включить. Для переключения режимов работы видеосистемы используется оператор SCREEN. Оператор имеет вид: SCREEN номер режима. Оператор переводит режим работы экрана из текстового в графический с заданным номером. Графические режимы различаются разрешением (максимально отображаемым количеством точек по горизонтали и вертикали) экрана и количеством возможных цветов. Если оператор SCREEN в программе не указан, то подразумевается текстовый режим. Текстовый режим имеет номер 0, поэтому, если нужно из графического режима перейти в текстовый, следует использовать SCREEN 0. SCREEN 1 - это устаревший графический режим, используемый в QBasic только для совместимости с некоторыми мониторами. В этом режиме доступны одновременно только 4 цвета (включая цвет фона). SCREEN 2 задает разрешение 640 точек по горизонтали на 200 точек по вертикали. В этом графическом режиме возможны только два цвета - черный и белый, заданные "раз и навсегда". SCREEN 7 задает разрешение 320 точек по горизонтали на 200 точек по вертикали и может использовать 16 цветов. Полное описание всех, возможных для использования, режимов можно получить, вызвав справку в среде QBasic. В этом и следующих режимах используется оператор COLOR, который управляет цветом линий, цветом фона экрана и цветом символов текста. Оператор COLOR имеет следующий вид: COLOR цвет_линии, цвет_фона Цвет линии - число от 0 до 15, цвет фона - число от 0 до 7. Заданные параметры распространяются и на текстовый вывод. В графическом режиме на экран кроме символов можно выводить и геометрические фигуры: точки, линии, прямоугольники, окружности и т.д. Замкнутые фигуры можно закрашивать. Урок 2. Рисование точек и линий Урок предусматривает опрос учащихся по материалу прошлого урока в течение 7-10 минут. Материал данного урока в полном объеме дается под запись, так как в данном виде ни в одном из учебников не присутствует. Тексты программ здесь и далее объясняются подробно, но без записи. Работа операторов и алгоритмических структур, используемых в них, подробно объясняется на предыдущих уроках при изучении основ языка BASIC. Объяснение новой темы: Оператор PSET (x, y)[, цвет] - закрашивает точку экрана заданным цветом. Оператор LINE (x1, y1)-(x2, y2)[, цвет] рисует отрезок, соединяющий на экране точки с координатами (x1, y1) и (x2, y2) Оператор LINE - (x2, y2)[, цвет] рисует отрезок, соединяющий последнюю выведенную на экран точку с точкой (x2, y2). Цвет в этих операторах задается числом от 0 до 15. Если цвет в графических операторах не указан, то все линии рисуются белым цветом. Пример. Соединить точки (20, 45) и (38, 144). Первый способ: LINE (20, 45) - (38, 144) Второй способ: PSET (20, 45) LINE -(38, 144) Основу всех практических заданий составляет программа хранителя экрана. SCREEN 7 Включение графического режима DO Начало цикла работы программы ... Действия, выполняемые программой ... LOOP UNTIL INKEY$ <> "" Конструкция, проверяющая нажатие любой из клавиш. В случае, если нажата какая либо клавиша, программа заканчивает работу. Практическое задание N1: Ввести и опробовать программу хранителя экрана, которая выводит на экран цветные точки, выбирая место вывода случайным образом. REM Вывод цветных точек до нажатия клавиши SCREEN 7 DO PSET (INT(300 * (RND(1))), INT(300 * RND(1))), INT(10 * RND(1)) T = TIMER A: IF T = TIMER THEN GOTO A LOOP UNTIL INKEY$ <> "" Программа использует оператор PSET для вывода цветных точек с определением их места на экране случайным образом. Цвет выводимой точки также определяется случайным числом. Задержка при выводе точек использует оператор TIMER. Используемая конструкция в отличие от пустого цикла дает одинаковую задержку на компьютерах с любыми частотами процессора. Работоспособным является также упрощенный вариант строки с оператором PSET PSET (RND * 300, RND * 200), RND * 10 Практическое задание N2: Ввести и опробовать программу хранителя экрана, выводит на экран цветную ломаную линию. которая REM Разноцветная ломаная до нажатия клавиши SCREEN 7 DO X = RND * 250 Y = RND * 180 LINE -(X, Y), RND * 15 T = TIMER + 1 A: IF T > TIMER THEN GOTO A LOOP UNTIL INKEY$ <> "" Программа использует конструкцию из предыдущего примера, но рисует ломаную линию, которая проводится из исходной точки в новую, каждая из которых выбирается случайным образом Урок 3. Окружности и дуги Урок предусматривает опрос учащихся по материалу прошлого урока в течение 7-10 минут. Материал урока в полном объеме дается под запись. Объяснение новой темы: Оператор CIRCLE (x, y), радиус[, цвет] рисует окружность заданного радиуса и цвета с центром в точке (x, y). Если вся окружность на экране не поместится, то будет нарисована только ее часть. Радиус окружности задается в пикселях, но такое количество пикселей укладывается только по горизонтали. Размер вертикального радиуса (в пикселях) зависит от номера графического режима. Пример изображения концентрических окружностей ("мишень"). SCREEN 7 FOR K = 5 TO 65 STEP 5 CIRCLE (160, 100), K, 3 NEXT K Тем же оператором можно нарисовать и дугу, только дополнительно потребуется задать значения начального и конечного углов дуги: CIRCLE (x, y), радиус, [цвет], нач_угол, кон_угол Если поместить в точку (x, y) начало математической системы координат, то начальный и конечный углы откладываются от оси x в направлении против часовой стрелки. Углы дуги должны задаваться в радианах. Градусы переводятся в радианы по следующей формуле: Угол. в радианах = Угол в градусах / 180 * 3.1415 Пример рисования дуг. SCREEN 7 CIRCLE (100, 50), 60, 2, 270/180*3.14, 0 CIRCLE (220, 50), 60, 2, 90/180*3.14, 270/180*3.14 Практическое задание N1: Ввести и опробовать программу рисующую на экране окружности различного диаметра, в разных точках экрана, разным цветом. REM Цветные окружности до нажатия клавиши SCREEN 7 DO X = RND * 300 Y = RND * 180 C = RND * 15 CIRCLE (X, Y), RND * 20, C T = TIMER A: IF T = TIMER THEN GOTO A LOOP UNTIL INKEY$ <> "" Практическое задание N2: Ввести и опробовать программу рисующую на экране концентрические окружности относительно точки в центре экрана. Цвет окружностей меняется, пока не будет нажата какая либо из клавиш на клавиатуре. REM Разноцветные концентрические окружности до нажатия клавиши SCREEN 7 DO CIRCLE (160, 100), 100 * RND, RND * 15 T = TIMER A: IF T = TIMER THEN GOTO A LOOP UNTIL INKEY$ <> "" Урок 4. Закраска произвольной области экрана. Урок предусматривает опрос учащихся по материалу прошлого урока в течение 7-10 минут. Материал урока в полном объеме дается под запись. Объяснение новой темы: Если на экране нарисована замкнутая кривая, то область внутри нее можно закрасить. Также можно закрасить и область, оставшуюся снаружи от кривой. Для этого используется оператор PAINT (x, y), цвет закраски, цвет границы Точка (x, y) должна попасть внутрь области, подлежащей закрашиванию. Если границы области имеют пропуски, то краска выльется за пределы области, даже если этот пропуск всего в один пиксель. То же самое произойдет, если граница области содержит по недосмотру кусочек другого цвета - для оператора PAINT это все равно, что дырка. При закраске окружности в качестве начальной точки для оператора PAINT удобно брать центр окружности, в других случаях, особенно при закраске маленьких областей, легко "промахнуться" мимо области. Чтобы проконтролировать расположение начальной точки, замените оператор PAINT оператором PSET(x, y). После того как мы убедимся в том, что точка (x, y) попала в нужное место, нужно вернуть оператор PAINT на свое законное место. Практическое задание N1: Ввести и опробовать программу рисующую на экране круги различного диаметра и цвета, в разных точках экрана. REM Цветные круги до нажатия клавиши SCREEN 7 RANDOMIZE (TIMER) K=0 DO X = RND * 300 Y = RND * 180 C = RND * 15 CIRCLE (X, Y), RND * 20, C PAINT (X, Y), C T = TIMER A: IF T = TIMER THEN GOTO A K = K + 1: IF K > 20 THEN CLS : K = 0 LOOP UNTIL INKEY$ <> "" В данную программу включены новые команды. RANDOMIZE (TIMER) - команда перенастраивает генератор случайных чисел числом секунд прошедших с момента полуночи. А так как это число практически всегда будет разным, то и отображение графических элементов тоже будет меняться с каждым запуском программы. Предыдущие программы при кажущейся случайности отображали элементы при каждом запуске одинаково. В программу введена переменная K, значение которой увеличивается на 1 после отображения каждого из элементов. При достижении значения K=20 происходит очистка экрана. Переменная K обнуляется. Этот процесс при работе программы периодически повторяется. Урок 5. Линии и прямоугольники. Урок предусматривает опрос учащихся по материалу прошлого урока в течение 7-10 минут. Материал урока в полном объеме дается под запись. Объяснение новой темы: Оператор LINE предоставляет возможность рисования на экране не только линий, но и прямоугольников, в том числе и закрашенных. Конструкция оператора для данного случая выглядит следующим образом. LINE [x1,y1],(x2,y2) N, B[BF] - рисовать прямоугольник, если координаты x1 и y1 пропущены то рисовать из текущей точки, иначе из указанной координатами. N - цвет. B - контур прямоугольника. BF - закрашенный прямоугольник. Практическое задание N1: Ввести и опробовать программу, рисующую на экране прямоугольники различного размера и цвета в разных точках экрана. REM Разноцветные прямоугольники до нажатия клавиши SCREEN 7 DO X = RND * 250 Y = RND * 180 LINE -(X, Y), RND * 15, B T = TIMER + 1 A: IF T > TIMER THEN GOTO A LOOP UNTIL INKEY$ <> "" Необходимо обратить внимание, что в данном примере каждый следующий прямоугольник рисуется из точки, в которой заканчивается предыдущий. Практическое задание N2: Ввести и опробовать программу, рисующую на экране закрашенные прямоугольники различного размера и цвета в разных точках экрана. REM Разноцветные закрашенные прямоугольники до нажатия клавиши SCREEN 7 RANDOMIZE (TIMER) DO X1 = RND * 250 Y1 = RND * 180 X2 = RND * 250 Y2 = RND * 180 LINE (X1, Y1)-(X2, Y2), RND * 15, BF T = TIMER + 1 A: IF T > TIMER THEN GOTO A LOOP UNTIL INKEY$ <> "" В данной программе обе крайние точки прямоугольника задаются случайным образом. Практическое задание N3: Ввести и опробовать программу повышенной сложности, рисующую на экране пучки разноцветных линий исходящих из случайной точки экрана. REM Пучки линий до нажатия клавиши SCREEN 7 DO X1 = RND * 300: Y1 = RND * 200 FOR X = -3.14 TO 0 STEP .1 Y = SIN(X) LINE (X1, Y1)-(X * RND * 50 + RND * 200, -Y * RND * 50 + RND * 150), RND * 15 NEXT X T = TIMER + 1 A: IF T > TIMER THEN GOTO A CLS LOOP UNTIL INKEY$ <> "" Программа демонстрирует использование оператора LINE. Цветные линии расходятся пучком из центральной точки в точки образующие замкнутую область в результате чего получается непредсказуемый рисунок. Урок 6. Творческое использование графических возможностей. Урок предусматривает опрос учащихся по материалам прошлых уроков в течении 7-10 минут. Материал урока в полном объеме дается под запись. Урок дает возможность ученикам, используя изученный и предоставляемый материал создать свою программу хранитель экрана, продемонстрировать ее, по мнению учеников, выбрать самые интересные. Для начала предлагается ввести две следующих программы, которые могут быть использованы при создании своих программ - хранителей экрана. При создании программы можно комбинировать выводы точек, линий, прямоугольников кругов и окружностей. Можно изменять диапазоны переменных, параметры циклов и задержек, способы закраски элементов. В процессе творческого использования графических возможностей среды QBasic происходит закрепление изученного материала. Программа ss_71.bas REM Случайные цветные мишени до нажатия клавиши SCREEN 7 K=0 DO X = RND * 250 Y = RND * 180 FOR R = 1 TO 30 CIRCLE (X, Y), R, RND * 15 NEXT R T = TIMER + 1 A: IF T > TIMER THEN GOTO A K = K + 1: IF K > 5 THEN CLS : K = 0 LOOP UNTIL INKEY$ <> "" Программа ss_72.bas REM Разноцветные конусы под разными углами до нажатия клавиши SCREEN 7 DO X = RND * 280 Y = RND * 200 Z = RND * 100 IF Z > 50 THEN ZX = 1 ELSE ZX = -1 Z = RND * 100 IF Z > 50 THEN ZY = 1 ELSE ZY = -1 FOR I = 1 TO 50 CIRCLE (X + I * ZX, Y + I * ZY), I / 2, RND * 15 NEXT T = TIMER + 1 A: IF T > TIMER THEN GOTO A LOOP UNTIL INKEY$ <> "" 4. Дополнительно кодировке. прилагаются тексты программ в DOS