Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Oparin

.pdf
Скачиваний:
9
Добавлен:
23.02.2015
Размер:
433.77 Кб
Скачать

PRINT USING "##"; i;

PRINT "!";

FOR j = 1 TO p

PRINT USING "####"; i * j;

NEXT j: PRINT

NEXT i

PRINT

END

SUB frame (n)

'Подпрограмма построения линии

'из n чёрточек

FOR k = 1 TO n

PRINT "-";

NEXT k: PRINT

'Для возврата в основную программу

'нажать клавишу F2 и затем выбрать

'среди программных элементов SUBs

'программу с именем prim0006.bas END SUB

Рис. 6. Таблица умножения (файл prim0006.bas)

'prim0007.bas

'Старояпонский календарь

CLS ' Очистка экрана

' Запрос года

INPUT "Введите год"; year

'Вычисление номера цвета

'и номера животного

c = ((9910 - year) MOD 60) \ 12 k = (year - 3) MOD 12

' Определение по номеру цвета года

PRINT "Цвет года - ";

31

SELECT CASE c

CASE 0

PRINT "зелёный"

CASE 1

PRINT "красный"

CASE 2

PRINT "жёлтый"

CASE 3

PRINT "белый"

CASE 4

PRINT "чёрный"

END SELECT

' Определение по номеру животного года

PRINT "Животное года - ";

SELECT CASE k

CASE 0

PRINT "кабан"

CASE 1

PRINT "крыса"

CASE 2

PRINT "бык"

CASE 3

PRINT "тигр"

CASE 4

PRINT "кот"

CASE 5

PRINT "дракон"

CASE 6

PRINT "змея"

CASE 7

PRINT "лошадь"

CASE 8

PRINT "овца"

CASE 9

32

PRINT "обезьяна"

CASE 10

PRINT "петух"

CASE 11

PRINT "собака"

END SELECT

PRINT "Удачи вам!"

END

Рис. 7. Пример использования оператора выбора (файл prim0007.bas)

'prim0008.bas

'Упорядочение целочисленного

'массива методом "пузырька"

'Начальная установка счётчика перестановок

count = 0

CLS ' Очистка экрана

PRINT "Сколько чисел в массиве?"

INPUT n

OPTION BASE 1

DIM massiv0(n) AS LONG, massiv1(n) AS LONG ' Ввод массива

FOR i = 1 TO n

PRINT "Введите "; i; "-е целое число";

INPUT massiv0(i)

massiv1(i) = massiv0(i) NEXT i

' Сортировка

FOR i = 1 TO n - 1

FOR j = i + 1 TO n

IF massiv1(i) < massiv1(j) THEN ' Подсчёт перестановок

count = count + 1 term = massiv1(i)

33

massiv1(i) = massiv1(j) massiv1(j) = term

END IF

NEXT j

NEXT i

PRINT TAB(28); "Исходный массив"

FOR i = 1 TO n

PRINT USING "###"; massiv0(i);

NEXT i

PRINT

PRINT TAB(25); "Отсортированный массив"

FOR i = 1 TO n

PRINT USING "###"; massiv1(i);

NEXT i

PRINT

PRINT "Количество перестановок ="; count

END

Рис. 8. Программа сортировки целочисленного массива (файл prim0008.bas)

'prim0009.bas

'Российский флаг

CLS ' Очистка экрана

SCREEN 12

LOCATE 3, 4: PRINT "Российский флаг" ' Белая полоса

LINE (80, 100)-(550, 190), 15, BF ' Синяя полоса

LINE (80, 190)-(550, 280), 1, BF ' Красная полоса

LINE (80, 280)-(550, 370), 4, BF

END

Рис. 9. Российский флаг (файл prim0009.bas)

34

DECLARE SUB g (x0!, y0!, r0!, t!)

'prim0010.bas

'Построение графика функции, заданной параметрически

CONST pi

=

3.1415926#

t = 18 '

Количество точек на графике

x0

= 320

 

 

y0

=

200

 

 

r0

=

100

'

Радиус окружности

'Установка графического экранного режима

'с разрешением 640 x 480 точек

SCREEN 12

'Вызов подпрограммы-процедуры g,

'строящей график функции

'с центром в точке (x0,y0),

'радиусом r0 и количеством линий t CALL g(x0, y0, r0, t)

END

SUB g (x0, y0, r0, t)

'Подпрограмма построения графика

'функции по t опорным точкам

CONST pi = 3.1415926# k = 20

l = 1 m = 1

PSET (x0, y0 + r0), 2

FOR a = 0 TO pi * 2 STEP pi / t r = r0 * COS(a * k)

x = x0 + r * SIN(a * l) y = y0 + r * COS(a * m) LINE -(x, y), 2

NEXT a

END SUB

Рис. 10. Пример графической программы (файл prim0010.bas)

35

DECLARE SUB g (x0!, y0!, r0!, t!, k!)

'prim0011.bas

'Построение графиков функций, заданных параметрически

CONST pi = 3.1415926# k = 1

t = 90 ' Количество точек на графике x0 = 50

y0 = 50

r0 = 30 SCREEN 12

FOR y0 = 50 TO 450 STEP 60 FOR x0 = 50 TO 600 STEP 60 CALL g(x0, y0, r0, t, k) k = k + 1

NEXT x0

NEXT y0

END

SUB g (x0, y0, r0, t, k)

CONST pi = 3.1415926#

l = 1 m = 1

PSET (x0, y0 + r0)

FOR a = 0 TO pi * 2 STEP pi / t r = r0 * COS(a * k)

x = x0 + r * SIN(a * l) y = y0 + r * COS(a * m)

LINE -(x, y), k * 4 MOD 7 + 1, B

'Можно убрать B или поставить BF NEXT a

'Запустить несколько раз,

'изменяя значения k, l и m

END SUB

Рис. 11. Пример графической программы (файл prim0011.bas)

36

DECLARE SUB waits ()

'prim0012.bas

'Организация диалога "Человек - ЭВМ" CLS ' Очистка экрана

'Подготовка данных

'Начальное значение счётчика баллов

Count = 0

' Количество вопросов n = 1

' Начальное значение количества вопросов

CountAnswer = 0

PRINT "Ответьте, пожалуйста, на вопросы,"

PRINT "выбирая ответы из списка и нажимая"

PRINT "на соответствующую номеру ответа"

PRINT "клавишу и затем <Enter>"

PRINT : PRINT : PRINT : PRINT : PRINT

' Обращение к подпрограмме ожидания нажатия любой клавиши

CALL waits

CLS ' Очистка экрана

' Подсчёт количества вопросов

CountAnswer = CountAnswer + 1

Ball = 0

' Меню ввода

PRINT "Вам сладко от:"

PRINT TAB(15); "1. Соли"

PRINT TAB(15); "2. Глюкозы"

PRINT TAB(15); "3. Каротина"

PRINT TAB(15); "4. Фруктозы"

INPUT ask

READ a, Ball

IF a = ask THEN

Count = Count + Ball

END IF

CLS ' Очистка экрана

37

Ball = 0

' Подсчёт количества вопросов

CountAnswer = CountAnswer + 1 PRINT "Вам холодно от:" PRINT TAB(15); "1. Воды" PRINT TAB(15); "2. Снега" PRINT TAB(15); "3. Пара" PRINT TAB(15); "4. Массажа" INPUT ask

READ a, Ball

IF a = ask THEN

Count = Count + Ball

END IF

CLS

' Подсчёт количества вопросов

CountAnswer = CountAnswer + 1

Ball = 0

PRINT "Вам смешно от:" PRINT TAB(15); "1. Тоски" PRINT TAB(15); "2. Комедии" PRINT TAB(15); "3. Жизни" PRINT TAB(15); "4. Зарплаты" INPUT ask

IF CountAnswer = 3 THEN READ b1, b2, b3, b4 END IF

SELECT CASE ask

CASE 1

Ball = b1

CASE 2

Ball = b2

CASE 3

Ball = b3

CASE 4

38

Ball = b4

END SELECT

Count = Count + Ball / 4

CLS ' Очистка экрана

' Подсчёт количества вопросов

CountAnswer = CountAnswer + 1

PRINT "Вам спать хочется от:"

PRINT TAB(15); "1. Усталости"

PRINT TAB(15); "2. Шума"

PRINT TAB(15); "3. Книги"

PRINT TAB(15); "4. Погоды"

INPUT ask

Ball = (ask - 1) / 3

Count = Count + Ball

'Окончание опроса

'Окончательный подсчёт

mark = Count / CountAnswer PRINT "Конечный результат:"

PRINT "Вы набрали в"; CountAnswer; PRINT "вопросах"; Count; "баллов" PRINT "В среднем "; mark

PRINT "Ваша оценка = "; PRINT USING "#.##"; mark * 5 ' База данных

DATA 4,1,2,1,1,2,4,2

END

SUB waits

' Подпрограмма ожидания нажатия любой клавиши

DO

LOOP UNTIL INKEY$ <> ""

END SUB

Рис. 12. Простейший тест (файл prim0012.bas)

39

Учебное электронное текстовое издание

Опарин Дмитрий Всеволодович

ПРАКТИКУМ ПО АЛГОРИТМИЗАЦИИ И ПРОГРАММИРОВАНИЮ НА ЯЗЫКЕ ВЫСОКОГО УРОВНЯ QBASIC

Редактор

Н.В. Лутова

Компьютерная вёрстка

Д.В. Опарин

Рекомендовано Методическим советом Разрешено к публикации 28.10.10.

Электронный формат – pdf Объём 2,0 уч.-изд. л.

УрФУ 620002, Екатеринбург, ул. Мира, 19

Информационный портал УрФУ http://www.ustu.ru

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