Построение динамических изображений 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Построение динамических изображений



 

Для того, чтобы создать впечатление движущихся по экрану объекта, следует каждый раз сначала стирать изображение с экрана, а затем снова выводить его на экран в новом месте. При этом местоположение объекта при каждом последующем выводе должно очень незначительно отличаться от его местоположения при предыдущем выводе. В противном случае вместо плавного перемещения изображение будет «дергающимся». Для решения этой проблемы в языке BASIC включены операторы GET и PUT

 

 

Операторы GET и PUT

 

Оператор GET позволяет запоминать цвета всех точек заданной прямоугольной области экрана монитора и хранит их номера в виде числового массива. Оператор PUT повторно воспроизводит все эти цвета на экране.

 

 

Определение массива для запоминания картинки

 

Массив для запоминания картинки резервируется с помощью известного оператора DIM. Массив резервируется как одномерный, которому присваивается имя, характерное для картинки, например, SET. Тогда синтаксическая структура DIM:

 

DIM SET(N),  

 

где N – количество пикселей (точек);

 

 

Оператор GET

 

Синтаксическая структура оператора GET:

 

GET (a,b)-(a1,b1), SET,

 

где GET – ключевое слово “запомнить”, а (a,b) и (a1,b1) – координаты противоположных вершин прямоугольной области, которой ограничено изображение. В операторе указывается только имя массива без скобок и индексов.

 

Оператор PUT

 

Этот оператор используется для воспроизведения изображения. Его синтаксическая структура:

 

PUT (a2,b2), SET,

 

где PUT – ключевое слово “воспроизвести”, (a2,b2) – это координаты верхнего левого угла воспроизводимого в новом месте прямоугольника.

Если в операторе PUT указывать координаты (a,b) вершины предыдущего изображения, то этот оператор стирает изображение на экране.

 

 

Организация движения объекта

 

Для синтеза на экране движения объекта необходимо выполнить следующие действия:

· воспроизвести изображение объекта на экране с помощью оператора PUT;

· определить координаты нового местоположения объекта на экране;

· с помощью оператора PUT повторно воспроизвести изображение на экране;

· стереть с помощью оператора PUT текущее изображение объекта на экране;

· повторить все операции, начиная со второй (это делается в цикле FOR-NEXT);

Примечание: Пункты 3 и 4 можно менять местами.

 

ПРИЛОЖЕНИЕ 1

 

Характерные примеры схем алгоритмов и программ на языке BASIC.

1.Условные обозначения в схемах алгоритмов

 

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

МКС 01.080.40 ГОСТ 19701-90 (ИСО 5807-85). На рис.1 приведены наиболее употребляемые блоки.

 

Рисунок 1. Условные обозначения схем алгоритмов

 

1) Процесс – вычислительное действие или последовательность вычислительных действий;

2) Решение – проверка условий или разветвление процесса (трёхнаправленный и двунаправленный переключатель);

3) Модификация – начало цикла;

4) Ввод и вывод – операция ввода–вывода;

5) Предопределённый процесс – подпрограмма (ПП);

6) Начало и конец программы – пуск и остановка;

7) Комментарий – пояснения, содержание подпрограмм, формулы;

8) Соединитель – разрыв линий потока на одной и той же странице, указывается номер блока;

9) Межстраничный соединитель – разрыв линий потока на различных листах (страницах).

 

Примеры программ и схем алгоритмов.

 

2.1. Линейный вычислительный процесс.

 

Задача 1. Вычислить функцию:

, где ;

При а = 0,93;  с использованием операторов присваивания.

 

Решение:

 

2.1.1. Составим схему алгоритма – см. Рис.2, п.1

 

2.1.2. Присвоим переменные имена:

a b x y
A B X Y

 

2.1.3. Представим распечатку листинга программы в соответствие с приведенными к лабораторным работам требованиями в виде:

 

нс 1 REM Иванов В.П.,гр.107…,вариант 1–3

 Здесь использованы для выделения комментария.

 

2.1.4. Программа с использованием оператора присваивания.

 

Распечатку исходных данных и результатов выберем в виде:

 

Исходные данные:

А=…

В=…                   

 

Результаты:

 печать в разных строках, сдвинутая вправо на 5 интервалов

 

2.1.5. Программа:

 

10 REM Иванов В.П., гр.107…,вариант 1–3

20 PRINT

30 PRINT

40 A=.93

50 B=1.25E-2

60 X=EXP(A)*LOG(ABS(B))

70 Y=A^2*X*SIN(A)/(SQR(ABS(A))+X^2)

80 PRINT ”Исходные данные”

90 PRINT “A=”; A, “B=”; B

100 PRINT

110 PRINT “Результаты:”

120 PRINT “ ”; X

130 PRINT “ ”; Y

140 STOP

150 END

 

Рисунок 2. Примеры схем алгоритмов

 

Операторы в строках 40–70 являются операторами присваивания. Строки 80 –130 осуществляют печать на экран монитора.

 

2.1.6. Для выполнения программы подайте команду:

 

RUN

        

В результате на экран монитора и принтер информация выводится в виде п.2.1.4.

Задача 2. Решить задачу 1 с использованием операторов задания начальных значений и ввода.

 

Отличие только в двух операторах в программе (см. п. 2.1.5.):

40 DATA.93, 1.25E-2

50 READ A, B

60. …

Примечание: В дальнейшем выбираем рассмотренные здесь виды распечаток и ограничимся рассмотрением алгоритма и программы.

 

2.2. Разветвляющийся вычислительный процесс.

 

Задача3. Вычислить значение функции:

 

Исходные данные: а=1.45, x=0.57

 

2.2.1. Составим схему алгоритма - см. рис.2 (2).

 

2.2.2. Присвоим переменным имена:

a x y
A X Y

 

2.2.3. - 2.2.4. – аналогичны п.п.2.1.3. – 2.1.4.

 

2.2.5. Программа:

 

10 REM Иванов В.П., гр.107…,вариант 1–3

20 PRINT

30 PRINT

40 A=1.45

50 X=.57

60 IF A<X THEN y=A*X^2*SIN(X) ELSE IF A=X THEN

Y=EXP(3)*SQR(ABS(X)) ELSE Y=TAN(X)

90 PRINT ”Исходные данные”

100 …

 … аналогично строкам 90–140 п.2.1.5.

240 …

 

Оператор в строке 60 является оператором условного перехода. Возможны другие варианты программы с использованием IF – GOTO   и IF – THEN, но программа становится длиннее.

 

2.2.6. - аналогичен п.2.1.6.

Циклический процесс.

 

Задача 4. Вычислить значение функции.

Исходные данные: a0=2.15; a1=3.02; a2=4.15; a3=1.35;

x0=0.67; x1=0.95; x2=0.37; x3=0.78;

 

Составим схему алгоритма – см.рис.3. п.1

 

Присвоим массивам имена:

 

Ai Xi Yi
А(I) X(I) Y(I)

 

2.3.3. Пункт аналогичен п.2.1.3.

 

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

 

ИСХОДНЫЕ ДАННЫЕ:

 Печать в одной строке с использованием TAB;

РЕЗУЛЬТАТЫ РАСЧЁТА:

Печать в разных строках с использованием TAB;

 

2.3.5.     Программа:

 

10 REM Иванов В.П., гр.107…, вариант 1–3

20 PRINT

30 PRINT

40 DIM A(3), X(3), Y(3)

50 FOR I=0 TO 3

60 INPUT A(I), X(I)

70 IF I<=2 GOTO 100

80 Y(I)=A(I)^2+X(I)^2/COS(X(I))

90 GOTO 110

100 Y(I)=A(I)* X(I)*SIN(X(I))

110 NEXT I

120 PRINT ”Исходные данные”

130 FOR I=0 TO 2

140 PRINT TAB(5); “A(“; I; ”)=”; A(I); TAB(15); “X(“;I;”)=”;X(I);

150 NEXT I

160 PRINT “Результаты расчёта:”

170 FOR I=0 TO 3

180 PRINT TAB(10); “Y(“; I; ”)=”; Y(I);

190 NEXT I

200 LPRINT

210 LPRINT ”Исходные данные:”

220 FOR I=0 TO 3

230 LPRINT TAB(5); “A(“; I; ”)=”; A(I); TAB(15); “X(“;I;”)=”;X(I);

240 NEXT I

250 LPRINT “Результаты расчёта:”

260 FOR I=0 TO 3

270 LPRINT TAB(10); “Y(“; I; ”)=”; Y(I);

280 NEXT I

290 STOP

300 END

40-я строка резервирует память для элементов массивов;

50–100 строки – циклический процесс (из 4-х циклов) для ввода исходных данных и вычисления функции Y(I);

строки 120–150 и 160–190 предназначены для распечатки исходных данных и результатов расчёта на экране монитора согласно п.2.3.4.;

строки 200–280 – для вывода той же информации на принтер.

 

2.3.6. Выполнение программы:

 

а) подайте команду: RUN 

б) программа будет останавливаться при каждом операторе INPUT в строке 60; необходимо на каждый знак вопроса печатать значения а0 и x0 через запятую:

 

?2.15, 0.87

?3.02, 0.95

?4.15, 0.37

?1.35, 0.78

 

В результате выполнения программы информация в виде п.2.3.4. выводится на экран монитора и принтер.

 

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

 

Рисунок 3. Примеры схем алгоритмов

 

Задача 5. Вычислить значение функции:

 

при a=3.2; x=-0.75; c1=1.5; c2=-2.3; c3=-3.4.

 

Вычисление произведений оформить подпрограммой.

 

2.4.1. Составим схему алгоритма основной программы (рис.3, схема 2), и подпрограммы (рис.3, схема 3).

 

2.4.2. присвоим переменным и массиву имена:

 

a x П Сi
A X Р... С(I)

 

2.4.3. Пункт аналогичен п.2.1.3.

 

2.4.4. Распечатку исходных данных и результатов выберем в виде:

ИСХОДНЫЕ ДАННЫЕ:

А=              X=

Элементы массива С(I)=

……… ……… ………. ………

 

РЕЗУЛЬТАТЫ РАСЧЕТА:

Р1=……………     Y=………………

 

2.4.5. Программа:

10 REM Иванов В.П., гр.107…, вариант 1–3

20 PRINT

30 PRINT

40 DIM С(3)

50 DATA 3.2, -.75

60 GOSUB 290

70 Р1=Р

80 READ A, X

90 Y=(A*X^2+EXP(X))/SQR(ABS(A))+P1

100 PRINT ”Исходные данные”

110 PRINT “A=”; A, “X=”; X

120 PRINT “Элементы массива С(I)=”

130 FOR I=3 TO 3

140 PRINT С(I),

150 NEXT I

160 PRINT TAB(11); “Результаты расчёта:”

170 PRINT TAB(2); “P1=”; P1; TAB(15); “Y=”; Y

190 LPRINT ”Исходные данные:”

200 LPRINT “A=”; A, “X=”; X

210 LPRINT “Элементы массива С(I)=”

220 FOR I=1 TO 3

230 LPRINT С(I),

240 NEXT I

250 LPRINT TAB(11); “Результаты расчёта:”

260 LPRINT TAB(2); “P1=”; P1; TAB(15); “Y=”Y

270 STOP

280 REM -- ПОДПРОГРАММА

290 FOR I=1 TO3

300 INPUT C(I)

310 NEXT I

320 P=1

330 FOR I=1 TO3

340 P=P*C(I)

350 NEXT I

360 RETURN

370 END

 

40 – я строка резервирует память для трёх элементов массива;

строка 50 задаёт начальные условия, которые считываются в 80–ой строке;

обращение к подпрограмме происходит в 60–й строке;

в 70–й строке результат, полученный при выполнении подпрограммы, присваивается переменной Р1 (это не обязательно, т.к. в программе нет другого обращения к подпрограмме);

в 90–й строке вычисляется значение функции.

Строки 100 – 170 выводят информацию на экран согласно п.2.4.4., а строки 190 – 260 - на принтер. Завершается основная программа 270–й строкой с обязательным оператором STOP.

Строки 290 – 360 - это подпрограмма вычисления произведения, оканчивающаяся оператором RETURN.

Завершает программу с подпрограммой оператор END в 370 –й строке.

 


ПРИЛОЖЕНИЕ 2



Поделиться:


Последнее изменение этой страницы: 2020-12-09; просмотров: 65; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.216.230.107 (0.082 с.)