Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
KNIGA.DOC
Скачиваний:
37
Добавлен:
09.02.2015
Размер:
162.82 Кб
Скачать

§ 11.3 Решение задач.

Задача 1.

Нарисовать “Кремлевскую стену”:

0 х

. . .

у

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

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

x,y-20 x+20,y-20

x+10,y-10

x,y x+20,y x+30,y

SCREEN 9:COLOR 7,2: CLS

Y= 40

FOR X=1 TO 300 STEP 30

LINE(X,Y)-(X,Y-20)

LINE - (X+10,Y-10)

LINE - (X+20,Y-20)

LINE - (X+20,Y)

LINE - (X+30,Y)

NEXT X

END

пояснение: Повторяющийся фрагмент, тело цикла, выделен на рисунке пунктирной окружностью. Расставив координаты на фрагменте, легко написать операторы, рисующие его. Осталось установить область изменения переменной цикла Х и шаг изменения. Так как длина фрагмента 30, то и шаг изменения будет 30, а Х изменяется в графическом режиме от 1 до 300. Значение Y можно выбрать самим.

Задача 2.

Подсчитать N! (факториал числа N), то есть произведение первых N натуральных чисел. Число N ввести с клавиатуры.

ПОЯСНЕНИЕ. Для подсчета нам необходимо завести переменную памяти, в которой будут “накапливаться” произведения. Пока она не задействована, ей присваивают значение 1. Переменная цикла будет последовательно принимать значения натуральных чисел от 1 до N. В теле цикла ячейке-”копилке” будут присваиваться произведения ее старого значения на переменную цикла.

CLS

INPUT “Введите натуральное число: ”;N

P=1

FOR I=1 TO N STEP 1

P=P*I

NEXT I

PRINT N; ”! = “; P

END

Задача 3.

Подсчитать сумму дробей видаот 1 до n (n ввести с клавиатуры).

ПРИМЕЧАНИЕ. В данной задаче нам тоже понадобится переменная-”копилка”, в которую мы будем складывать дроби. Первоначальное значение переменной должно быть равно 0. Округление произвести с помощью функции USING.

СLS

INPUT ‘“Введите натуральное число “; N

S=0

FOR I=1 TO N STEP 1

S=S+ 1/(I+1)

NEXT I

PRINT “ Сумма дробей вида 1/(n+1) для n от 1 до “;N; “равна “;

PRINT USING”##.##”;S

END

Результат для N=4:

Введите натуральное число? 4¿

Сумма дробей вида 1/(n+1) для n от 1 до 4 равна 1.28

Задача 4.

Написать программу переворачивающую слово.

Решение.

CLS

INPUT ‘“Введите слово: “;B$

A$=“”

FOR I= LEN(B$) ТО 1 STEP -1

A$=A$+ MID$(B$, I, 1)

NEXT I

PRINT “Перевернутое слово — “; A$

END

§11.4 Программирование динамического элемента.

Задача 1.

Нарисовать на графическом экране 15 прямоугольников с координатами диагонали (20,20) и (80, 100), закрашенных во все цвета от 1 до 15.

Решение:

CLS: SCREEN 9 :REM Графический режим

FOR I=1 TO 15 STEP 1 :REM Заголовок цикла

LINE (20,20) - (80, 100), I, BF :REM Закрашенный пр-к цвета I

NEXT I :REM Конец цикла

END

Пояснение: Переменная цикла I изменяется от 1 до 15 и является номером цвета в операторе LINE. Тело цикла — рисование закрашенного прямоугольника цветом I, с координатами диагонали (20,20) и (80, 100).

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

Например: FOR I=1 TO 1000 STEP 1 : NEXT I

ВНИМАНИЕ! Имя переменной цикла не должно совпадать ни с каким другим именем программы!

Задержку вставляют в тело цикла, например, между операторами LINE и NEXT. Программа примет вид:

CLS: SCREEN 9 :REM Графический режим

FOR I=1 TO 15 STEP 1 :REM Заголовок цикла

LINE (20,20) - (80, 100), I, BF :REM Закрашенный пр-к цвета I

FOR J=1 TO 300: NEXT J :REM ЗАДЕРЖКА

NEXT I :REM Конец цикла

END

Так же в качестве задержки используют оператор SLEEP N, где N — время в секундах.

Разберем задачу:

Задача 2.

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

Напишем алгоритм.

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

  2. Нарисовать левую сторону прямоугольника цветом фона.

  3. Нарисовать линию на 1 пиксел правее прямоугольника цветом прямоугольника.

  4. Повторять пункты 2 и 3 до тех пор, пока прямоугольник не достигнет правого края экрана.

SCREEN 9: CLS

X=1: Y=10 :REM установка левого верхнего угла пр-ка

LINE(X,Y) - (X+50, Y+30), 5, BF :REM пункт 1

FOR X=1 TO 320 STEP 1 :REM заголовок цикла

LINE(X,Y)-(X,Y+30), 0 :REM пункт 2

LINE(X+50,Y)-(X+50,Y+30), 5 :REM пункт 3

FOR J=1 TO 300: NEXT J :REM задержка

NEXT X :rEM конец цикла

END

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

Задача 3.

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

Алгоритм.

  1. Задать Rmax.

  2. Нарисовать окружность единичного радиуса.

  3. Нарисовать окружность на 1 пиксел больше.

  4. Повторять пункт 3 до тех пор, пока радиус не станет больше Rmax.

SCREEN 9: CLS :REM графический режим, очистка экрана

INPUT “Rmax=“;Rmax :REM ввод Rmax

FOR R=1 TO Rmax STEP 1 :REM пункты 2-4

CIRCLE (150, 100), R, 9 :REM рисование окружности радиусом R

FOR I=1 TO 300:NEXT I :REM задержка

NEXT R :REM конец цикла

END

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]