1. Этапы решения задач на компьютере
2. Оболочка QBASIC
3. Алфавит языка. Данные на языке QBASIC
4. Арифметические выражения на языке QBASIC
5. Стандартные функции
6. Оператор LET
7. Программирование линейных алгоритмов
8. Оператор INPUT
9. Оператор PRINT
10. Функция RND
11. Оператор RANDOMIZE
12. Оператор LOCATE
13. Оператор COLOR
14. Программирование разветвляющихся алгоритмов
15. Условный оператор IF
16. Безусловный оператор GOTO
17. Программирование циклических алгоритмов
18. Цикл ДО
19. Цикл ПОКА
20. Цикл ДЛЯ
21. Составление программ с использованием циклов
22. Операторы ввода данных DATA b READ
23. Понятие массива
24. Ввод элементов массива
25. Вывод элементов массива
26. Другие действия с элементами массива
27. Символьные переменные и константы. Операции.
28. Функции для символьных переменных
29. Составление программ с символьными данными
30. Символьные массивы. Действия с элементами массивов.
31. Графика в QBASIC.
1 и 2 этапы.
Вычислить площадь треугольника по формуле Герона
S =, где a, b, c – стороны треугольника, p – полупериметр
P =. Результат
вывести на экран.
a, b, c – исходные данные;
p – промежуточный результат;
S – конечный результат.
3 этап. Составляем блок-схему алгоритма.
4 этап. Программирование.
CLS
REM Вычисление площади треугольника
PRINT «Введите стороны треугольника»
INPUT “a = “, a
INPUT “b = “, b
INPUT “c = “, c
LET p = (a + b + c)/2
LET S = SQR (p * (p – a) * (p - b) * (p - c ))
PRINT “S =”; S
Запуск программы. Программа запускается с помощью клавиши ENTER или двойным щелчком мыши на ярлыке QBASIC, находящемся на Рабочем столе. На экране монитора появляется окно среды языка QBASIC с приглашением, которое удаляется клавишей ESC.
Характеристики окна. В верхней части экрана имеется главное меню: Файл, Редактирование и др. Для входа в меню используется клавиша ALT. Рабочее поле разделено на 2 окна (области):
Верхнее – окно редактирования текста программы;
Нижнее – окно немедленного выполнения (на экране сразу виден результат).
Переход из одного окна в другое осуществляется клавишей <F6> или щелчком левой клавиши мыши в соответствующем окне.
Ввод и редактирование текста программы. Программа на языке QBASIC состоит из последовательности строк, в каждой строке записывается 1 команда (оператор) на английском языке. Команды набираются с помощью клавиатуры. Для перехода на следующую строку используется клавиша ENTER. Для редактирования текста программы используются клавиши DELETE. BACKSPACE. Для перехода с одного алфавита на другой используются следующая комбинация клавиш:
CTRL + SHIFT (справа) – переход с английского языка на русский;
CTRL + SHIFT (слева) – переход с русского языка на английский.
В языке QBASIC можно работать с фрагментами текста: удалять, копировать, перемещать. Надо выделить фрагмент текста и в меню Редактирование выбрать нужную команду. Для удаления фрагмента текста используется клавиша DELETE.
Запуск программы на выполнение. В меню Запуск выбрать одну из команд Запуск или Продолжить. Можно использовать «горячие» клавиши:
SHIFT + <F5> - запустить программу сначала;
<F5> - запустить программу с места, где она прервалась.
<F4> - окно для просмотра результата программы.
Сохранение и открытие файла. Написав программу и желая ее сохранить на диске, выберите в меню Файл команду Сохранить или Сохранить как. Откроется диалоговое окно, в котором вы должны выбрать диск и папку (каталог) для сохранения, дать имя файлу и нажать ОК. В заголовке окна редактирования появится имя файла.
Для открытия существующего файла в меню Файл выберите команду Открыть. В диалоговом окне выбрать диск и каталог, где записан файл, указать его имя и нажать ОК.
Для работы с новым файлом в меню Файл выбрать команду Новый.
Для выхода из QBASIC в меню Файл выбрать команду Выход.
В языке QBASIC используются:
- 26 латинских букв от A до Z;
- 10 цифр от 0 до 9;
- знаки арифметических операций: + (сложение), - (вычитание), * (умножение), /
(деление), ^ (возведение числа в степень);
- знаки сравнения (операций отношения): > (больше), < (меньше), = (равно), >=
(больше или равно), <= (меньше или равно), <> (не равно);
- разделители и прочие символы: точка, точка с запятой, запятая, кавычки, апостроф,
круглые скобки, процент и другие;
- буквы русского алфавита от А до Я.
Язык QBASIC позволяет обрабатывать любую информацию – числовую и текстовую. (символьную). Независимо от типа информации данные могут быть представлены в виде констант, переменных или массивов.
Константы – это данные, которые имеют конкретное значение и не изменяются в ходе выполнения программы. Константы бывают числовые и строковые.
Числовые константы представлены в виде конкретного числа целого или вещественного. Вещественная константа в своей записи имеет десятичную точку. Числовые константы бывают положительные, отрицательные, маленькие или большие. Например:
12 – целая константа;
- 35 – целая константа отрицательная;
3.14 – вещественная константа;
- .876 – вещественная константа (- 0,876);
2.5Е4 – вещественная константа (2,5 . 104);
-7.86Е-6 – вещественная константа (-7,8 . 10-6).
Строковая константа – это заключенная в кавычки последовательность букв, цифр и других символов. Например:
“Результат Х =”;
“у =”.
Переменная – это величина, которая изменяется в ходе выполнения программы и имеет имя. Имя переменной – это буква, слово на английском языке или комбинация букв, цифр или знаков (в последнем случае первый символ в имени должна быть буква). Переменные бывают числовые (целые и вещественные) и символьные. В имени целой числовой переменной стоит знак % (процент), в имени символьной переменной – знак $ (доллар).
Например:
А – вещественная переменная с именем А;
B7 – вещественная переменная с именем В7;
Н% - целая переменная с именем Н;
M$ - символьная переменная с именем М.
Между константой и переменной существует прямая связь:
Константа Имя переменной
=
где знак = читается присвоить
имя переменной – это ячейка оперативной памяти, в которой хранится значение
константы
Например:
А2 = 3.5 – вещественной числовой переменной А2 присвоить значение 3,5;
M% = 8 –целой числовой переменной присвоить значение 8;
С$ = “мяч” – символьной переменной присвоить значение «мяч».
Каждая ячейки оперативной памяти имеет адрес в виде двоичного числа, который назначает процессор. Эти адреса мы не знаем, поэтому мы обращаемся к ячейкам по их именам.
Иногда в правой части команды присвоить может быть алгебраическое выражение или имя переменной или их комбинация. Например:
А = В - переменной А присвоить значение В;
F = 3*A^2 – переменной F присвоить значение 3*А2.
В языке QBASIC команда присвоить определяется оператором LET (пусть), который в программе можно не писать.
T = 3 или LET T = 3 это одно и тоже.
Задача. Какое значение переменная Х присвоит в ходе выполнения фрагмента программы?
А = 3
В = 2
С = 5
Х = В + С – А или
Х = 2*Х
LET А = 3
LET В = 2
LET С = 5
LET Х = В + С - А
LET Х = 2*Х
Ответ: Х = 8
При решении различных задач с помощью компьютера бывает необходимо вычислить логарифм или модуль числа, синус угла и т.д.
Вычисления часто употребляемых функций осуществляются посредством подпрограмм, называемых стандартными функциями, которые заранее запрограммированы и встроены в транслятор языка. |
Название и математическое обозначение функции |
Указатель функции |
|
Абсолютная величина (модуль) |
| х | |
abs(x) |
Корень квадратный |
|
sqr(x) |
Натуральный логарифм |
ln x |
log(x) |
Экспонента (степень числа е " 2.72) |
ex |
exp(x) |
Целая часть х (т.е. максимальное целое число, не превосходящее х) |
|
int(x) |
Частное от деления целого х на целое y |
|
div(x,y) |
Остаток от деления целого х на целое y |
|
mod(x,y) |
Случайное число в диапазоне от 0 до 1 |
|
rnd(x) |
Синус (угол в радианах) |
sin x |
sin(x) |
Косинус (угол в радианах) |
cos x |
cos(x) |
Тангенс (угол в радианах) |
tg x |
tan(x) |
sin(3.05) |
sin(x) |
sin(2*y+t/2) |
sin((exp(x)+1)^ 2) |
В качестве аргументов функций
можно использовать константы, переменные и выражения. Например:
Каждый язык программирования имеет свой набор стандартных функций.
ПРИМЕЧАНИЕ:
1. В случае тригонометрических функций аргумент указывают в радианах. Для перевода градусов в радианы используют формулу:
радианы = градусы * p/180
2. Для перевода натуральных логарифмов в десятичную используют формулу:
lg X = ln X /ln 10
Арифметические выражения записываются по следующим правилам:
· Нельзя опускать знак умножения между сомножителями и ставить рядом два знака операций.
· Индексы элементов массивов записываются в квадратных (школьный АЯ, Pascal) или круглых (Basic) скобках.
· Для обозначения переменных используются буквы латинского алфавита.
· Операции выполняются в порядке старшинства: сначала вычисление функций, затем возведение в степень, потом умножение и деление и в последнюю очередь — сложение и вычитание.
· Операции одного старшинства выполняются слева направо. Например, a/b*c соответствует a/b*c. Однако, в школьном АЯ есть одно исключение из этого правила: операции возведения в степень выполняются справа налево. Так, выражение 2^ (3^2) в школьном АЯ вычисляется как 2^3^2) = 512. В языке QBasic аналогичное выражение 2^3^2 вычислясляется как (2^3)^2 = 64. А в языке Pascal вообще не предусмотрена операция возведения в степень, в Pascal x^y записывается как exp(y*ln(x)), а x^y^z как exp(exp(z*ln(y))*ln(x)).
Математическая запись |
Запись на школьном алгоритмическом языке |
|
x*y/z |
|
x/(y*z) или x/y/z |
|
(a^3+b^3)/(b*c) |
|
(-b+sqr(b^2-4*a*c))/(2*a) |
|
0.49*e^(a^2 –b^2)+log(cos(a^2))^ 3 |
|
x/(1+x*x/(3+(2*x)^3)) |
5x+1 |
Пропущен знак умножения между 5 и х |
Типичные ошибки в записи
выражений:
Пример. Определить объём и площадь боковой поверхности цилиндра с
заданными радиусом основания R и высотой H.
Исходные данные |
Результаты |
||
Радиус R |
Высота H |
Объем цилиндра V |
Площадь боковой поверхности цилиндра S |
Алгоритм
![]() |
Исходные данные вводятся
с клавиатуры в ячейки R и H
Ячейка V присваивает
значение алгебр. выражения
Ячейка S присваивает
значение алгебр. выражения
Результаты выводятся
на экран из соответствующих
ячеек V и S
Программа на языке QBASIC
CLS
INPUT "Введите высоту цилиндра: ", H
INPUT "Введите радиус основания: ", R
V = 3.14 * R ^ 2 * H
S = 2 * 3.14 * R * H: PRINT
PRINT "Объем цилиндра = "; V
PRINT "Площадь боковой поверхности = "; S
END
Для составления линейных программ достаточно знать 5 оператора: LET, INPUT, PRINT, CLS, END.
Оператор CLS
Очистка экрана от предыдущей информации. Как правило, стоит в начале программы.
Оператор END
Заканчивает выполнение программы. Как правило, стоит в конце программы.
Вводит исходные данные с клавиатуры. В общем виде оператор имеет 2 формы записи:
INPUT <имя переменной>
1)
Например, INPUT a
INPUT в
|
2)
Например, INPUT “a = ”; a
INPUT “Ведите целое число ”; в
Рассмотрим 1 случай.
Встретив, оператор INPUT, приостанавливается выполнение программы и на экране появляется знак вопроса «?». Необходимо ввести, используя клавиатуру, нужное число и нажать ENTER. Переменная присвоит значение.
В этом случае пользователь не понимает, что требуется ввести.
Рассмотрим 2 случай.
Встретив, оператор INPUT, приостанавливается выполнение программы и на экране появляется текст без кавычек. Необходимо ввести, используя клавиатуру, нужное число и нажать ENTER. Переменная присвоит значение.
В этом случае пользователь понимает, что требуется ввести.
Таким образом, вторая форма записи более удобна, ее мы и будем использовать в дальнейшем.
Выводит на экране результат (-ы) работы программы из соответствующих ячеек памяти.
В общем виде оператор имеет оператор имеет вид:
|
Где:
<выводной список> - это константа, алгебраическое выражение, имя переменной или
комбинация чисел, алгебр. выражения и имен переменных с
использованием разделительных знаков запятая или точка с
запятой.
Разделительные знаки играют важную роль в выводе информации.
Знак «;» (точка с запятой) – каждое значение выводного списка печатается со следующей
позиции;
Знак «,» (запятая) – каждое значение выводного списка печатается с 16-ой позиции
данной строки, т.к. в каждой строке 80 позиций по 5 зон. Такой вывод
называется «зонным форматом».
Например:
1)PRINT 12.3Е3
на экране: 12300
2) PRINT 2^3 + 72/8
на экране: 17
3) A = 3
B = 4
PRINT А; В
на экране: 34
4) A = 3
B = 4
PRINT А, В
на экране: 3 4
5) A = 3
B = 4
PRINT A + B
на экране: 7
6) A = 3
B = 4
PRINT “Сумма = ”; A + B
на экране: Сумма = 7
7) PRINT “Вычисление функции Y”
на экране: Вычисление функции Y
8) PRINT 1, 2, 3, 4
на экране: 1 2 3 4
Примечание: если в операторе PRINT отсутствует выводной список, то компьютер
сформирует пустую строку.
Позволяет управлять выводом данных в определенное место экрана, который в текстовом режиме представляет условную сетку из столбцов и строк. В стандартном режиме 80 столбцов и 50 строк.
Оператор в общем виде имеет вид:
|
Где: Y, X - координаты курсора
Y – номер строки (0<Y<50);
X – номер столбца (0< X <80).
Оператор LOCATE стоит либо перед оператором PRINT, либо перед оператором INPUT.
Например,
1) CLS
LOCATE 3, 7
PRINT “привет”
на экране в 3 строке 7 столбце: привет
3 строка
7 столбец
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
п |
р |
и |
в |
е |
т |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2) CLS
LOCATE 10, 5
INPUT “Введите число а ”, а
на экране в 10 строке 7 столбце: Введите число а
Оператор COLOR
Предназначен для изменения цвета символов и фона для знакоместа. В общем виде имеет вид:
|
|
1) или 2)
Где: N1 –номер цвета символов (шрифта);
N2 –номер цвета фона.
Во втором случае цвет фона может отсутствовать.
В текстовом режиме различают 16 цветов от 0 дл 15.
Номер цвета |
Название цвета |
Номер цвета |
Название цвета |
0 1 2 3 4 5 6 7 |
Черный Синий Зеленый Голубой Красный Фиолетовый Коричневый Белый |
8 9 10 11 12 13 14 15 |
Серый Светло-синий Светло-зеленый Светло-голубой Светло-красный Светло- фиолетовый Желтый Интенсивно белый |
По умолчанию устанавливается следующие цвета: фон - черного цвета и шрифт - белого цвета. Оператор COLOR должен стоять перед выводом данных на экран.
Например,
1)CLS
COLOR 14, 4
PRINT “привет”
на экране желтым цветом на красном фоне выведется фраза: привет
2) CLS
COLOR 4
INPUT “Введите число 10 ”, а
COLOR 14
PRINT а*2
на экране красным цветом на черном фоне выведется фраза: Введите число 10
на экране желтым цветом на черном фон выведется число: 20
В памяти компьютера вырабатывается случайное число в интервале [0, 1.]. Случайными называют числа, величина которых заранее неизвестна. Например, случайно значение числа, выпадающего при бросании игрального кубика. Случайные числа находят широкое применение в игровых и прикладных программах. Функция RND используется в операторах LET и PRINT в общем виде имеет вид:
|
||||
|
||||
или
Например:
1) CLS
PRINT RND
на экране выведется случайное число в {0, 1}: .7055475
2) CLS
а = RND
PRINT а
на экране выведется случайное число в {0, 1}: .7055475
Чтобы изменить интервал случайного числа существует формула:
|
где: A – нижняя граница интервала
B – верхняя граница интервала
![]() |
Например:
CLS
A = 5
B = 20
PRINT RND * (B – A) + A
на экране выведется случайное число в {5, 20}: 15.58321
Для изменения базы генератора случайных чисел используется оператор RANDOMIZE вместе с функцией TIMER (возвращает число секунд от начала суток до текущего момента времени), которые в программе имеют вид:
|
При каждом запуске программы компьютер будет вырабатывать новое случайное число в данный момент времени. Оператор RANDOMIZE должен стоять в начале программы.
Например:
CLS
RANDOMIZE TIMER
A = 5
B = 20
PRINT RND * (B – A) + A
на экране выведется случайное число в {5, 20}: 5.611789
Функция INT
Округляет число до ближайшего меньшего целого. В программе имеет вид:
|
где: аргумент – это число или алгебраическое выражение.
Используется в операторах LET и PRINT.
Например:
1) а = INT (10.51)
PRINT а
на экране: 10
2) PRINT INT (- 10.25)
на экране: -11
3) CLS
RANDOMIZE TIMER
A = 5
B = 20
PRINT INT (RND * (B – A) + A)
на экране целое случайное число в {5, 20}: 9
|
Отбрасывает дробную часть от аргумента. В программе имеет вид:
где: аргумент – это число, имя переменной или алгебраическое выражение.
Используется в операторах LET и PRINT.
Например:
1) а = FIX (10.51)
PRINT а
на экране: 10
2) PRINT FIX (-10.25)
на экране: -10
ПРИМЕР
Составить алгоритм и программу для вычисления площади прямоугольного треугольника S со сторонами a и b, где стороны a и b – случайные числа в [10, 25]. Результат вывести на экран целым случайным образом в пределах экрана и случайным цветом.
![]() |
|
|||||
![]() |
Программирование разветвляющихся алгоритмов
Пример 1. Вычислить значение Y по формулe в зависимости от X.
Y = 1 + sin X, если Х>0
‘ однострочный оператор IF CLS INPUT "Введите
значение Х: ", X IF X>0 THEN Y = 1 + SIN (X)
: PRINT “При Х =”; X, “Y(X) = ”; Y END или ‘ многострочный оператор IF CLS INPUT "Введите
значение Х: ", X IF X>0 THEN Y = 1 + SIN (X) PRINT “При Х =”; X, “Y(X)
= ”; Y END IF END
Пример 2. Вычислить значение Y по двум разным формулам в зависимости от X:
![]() |
1 + sin X, если Х>0
Y =
2 + cos X, если Х<=0
‘ однострочный оператор IF CLS INPUT "Введите
значение Х: ", X IF X>0 THEN Y = 1 + SIN(X)
ELSE Y
= 2 + COS (X) PRINT “При Х =”; X, “Y(X)
= ”; Y ‘ вывод результата END
или
|
Оператор IF изменяет ход выполнения программы в зависимости от результатов проверки условий. В операторе IF используются
знаки сравнения (операции отношения):
> (больше),
< (меньше),
= (равно),
>= (больше или равно),
<= (меньше или равно),
<> (не равно);
связывающие слова AND (И) – в интервале, OR (ИЛИ) – вне интервала
![]() |
Существует 2 формы оператора IF: полная и неполная.
1) Неполная форма имеет вид:
|
(если условие выполняется, то выполни команду1: команду2)
Неполная форма оператора IF используется в примере 1, в котором действия выполняются на веточку «да» (THEN), на веточку «нет» никаких действий нет.
2) Полная форма имеет однострочную или многострочную записи:
IF <условие> THEN
<оператор 1>:< оператор 2> ELSE
<оператор 3>:< оператор 4>
1
однострочная запись
многострочная запись
(если условие выполняется, то выполни команду1: команду2 иначе выполни команду3: команду4)
Полная форма оператора IF используется в примере 2, в котором на веточку «да» (THEN) выполняются действие 1, на веточку «нет» (ELSE) - действие 2.
Ключевые слова переводятся:
|
Безусловный оператор GOTO
Выполняет безусловный переход на строку программы с указанным номером или меткой.
В общем виде оператор GOTO записывается:
|
Где <номер строки> - число =1 , 2, 3 и т.д.
Предыдущий пример 2 можно записать другим способом с использованием оператора
GOTO:
![]() |
|||
|
|||
1 + sin X, если Х>0
Y =
2 + cos X, если Х<=0
Если X>0, то Y=1 + sin X и затем управление перейдет на строку с меткой 1 и напечатается сообщение “При Х =”; X, “Y(X) = ”; Y ‘ иначе Y=2 + cos X и напечатается то же сообщение .
Ключевое слово GOTO переводятся перейти на…
Пример 3. Составить алгоритм и программу нахождения наибольшего из двух чисел X и Y,
которые вводятся с клавиатуры. В программе использовать оператор GOTO.
CLS INPUT "Введите
значение Х: ", X INPUT "Введите
значение Y: ", Y IF X>Y THEN GOTO 1 PRINT “Y>X” GOTO 2 1 PRINT “X>Y” 2 END
Если X>Y, то управление перейдет на строку с меткой 1 и напечатается сообщение “X>Y”, иначе напечатается сообщение “Y>X” и управление перейдет на метку 2 – конец выполнения программы.
В циклических алгоритмах некоторая группа команда повторяется неоднократно. Циклы бывают:
- цикл ПОКА;
- цикл ДО;
- цикл ДЛЯ.
Пример 1. Вывести на экран 10 случайных чисел в интервале [0, 1] с использованием цикла
ДО и цикла ДЛЯ.
‘цикл ДО CLS RANDOMIZE TIMER I = 1 ‘параметр
цикла или счетчик 1 PRINT RND ‘тело цикла I = I +1
‘изменение параметра цикла на шаг 1 IF I<10 THEN GOTO 1 ’ проверка
условия END ‘цикл ДЛЯ CLS RANDOMIZE TIMER FOR I = 1 TO 10 STEP
1‘ параметр цикла или счетчик PRINT RND ‘ тело цикла NEXT I’ ‘ изменение параметра цикла на 1 END
Рассмотрим основные понятия циклических структур.
Параметр цикла (счетчик)– это переменная целого типа, которая характеризуется начальным и
конечным значениями и величиной изменения (шага);
Шаг – величина, на которую изменяется параметр цикла, может принимать цело или дробное
значение;
Тело цикла – последовательность команд, которые выполняются неоднократно (> 2 раз).
В общем виде имеет следующую структуру:
В общем виде имеет следующую структуру:
Цикл ДО в отличие от цикла ПОКА выполнится хотя бы 1 раз, т.к. в цикле ДО условие ставится в после тела цикла в отличие от цикла ПОКА.
В общем виде имеет следующую структуру:
1.заголовок цикла (задаются начальное (Iн) ,
конечное значения параметра цикла (Iк)
и шаг (êI)). 2.тело цикла 3.увеличиение значения параметра цикла на величину шага 4.как только начальное значение параметра станет больше
конечного значения параметра цикла на величину шага
цикл остановится, иначе цикл повторится.
Ключевые слова переводятся:
FOR – для
TO – до
STEP – шаг (если шаг равен 1, то его можно не записывать)
NEXT – следующий
Пример 2. Что будет выведено на экране из следующего фрагмента программы?
‘цикл ДО
CLS
I = 1 ‘начальное значение параметра цикла
P = 1 ‘начальное значение переменной Р
Тело цикла
1 PRINT P, P*I ‘вывод результата
PRINT ‘пустая строка
I = I +1 ‘изменение параметра на шаг=1
P = P + 2 ‘изменение переменной Р на величину 2
IF I < =15 THEN GOTO 1 ’ проверка условия: если счетчик не достиг 6 перейти на метку 1,
‘иначе останов выполнения программы
END
На экране: 1 1
3 6
5 15
7 28
9 45
11 55
13 78
15 105
Пример 3. Составить алгоритм и программу вывода натурального ряда чисел и их квадраты от
1 до 10 в 2 столбика.
‘вывод натурального ряда чисел и их квадратов CLS FOR I = 1 TO 10 STEP 1 ‘заголовок
цикла PRINT “I
=”; I, “I^2 =”; I^2 ‘тело цикла – вывод результата NEXT I ‘изменение параметра цикла на 1 END
Пример 4. Составить алгоритм и программу вычисления функции Y = 2x2 + 1 для 5 различных
значений Х: 5, 9, -3, 10, 8, которые вводятся с клавиатуры.
‘ вычисление функции Y в
зависимости от Х CLS PRINT “Введите 5 значений Х” FOR I = 1 TO 5 ‘заголовок
цикла INPUT “X
=”, X ‘ввод i–ого Х Y = 2* X
^2 + 1 ‘вычисление i-ого
Y PRINT “При Х =”; X, “Y (“; I;
“) =”; Y ‘вывод i–ого Y NEXT I ‘изменение
параметра цикла на 1 END
Пример 5. Табулирование функции. Составить алгоритм и программу вычисления функции
Y = 2x2 + 1 для 5 значений Х: 2, 6, 10, 14, 18, где Х изменяется на величину шага 4.
‘табулирование функции Y CLS FOR Х = 2 TO 18 STEP
4 ‘параметр цикла - переменная Х Y = 2* X
^2 + 1 ‘вычисление i-ого
Y PRINT “При Х =”; X, “Y (“; I;
“) =”; Y ‘вывод i–ого Y NEXT Х ‘изменение
параметра цикла на 1 END
Пример 6. Составить алгоритм и программу вычисления суммы нечетных чисел от 1 до 40
‘определение суммы нечетных чисел натурального ряда CLS S = 0 ‘начальное
значение S FOR I = 1
TO 39 STEP 2 ‘заголовок
цикла S = S + I ‘в
переменной S накапливается сумма NEXT I ‘изменение
параметра цикла на 2 PRINT “Сумам S
=”; S ‘вывод результата из
переменной S END
Пример 7. Составить алгоритм и программу вычисления произведения четных чисел от 1 до 40
‘определение произведения четных чисел натурального ряда CLS P = 1 ‘начальное
значение P FOR I = 2
TO 40 STEP 2 ‘заголовок
цикла P = P * I ‘в
переменной P накапливается произв-ние NEXT I ‘изменение
параметра цикла на 2 PRINT “Произведение P =”; P ‘вывод результата из
переменной P END
Пример 8. Составить алгоритм и программу вычисления суммы 10 целых случайных чисел в
интервале [-5, 5].
‘определение суммы 10 случайных чисел CLS RANDOMIZE TIMER S = 0 ‘начальное
значение S FOR I = 1
TO 10 ‘заголовок цикла A = INT
(RND * (25 + 5) - 5) S = S + A ‘в
переменной S накапливается сумма PRINT “A(”;I;”)
=”; A NEXT I ‘изменение
параметра цикла на 1 PRINT “Сумам S
=”; S END
Пример 9. Составить
алгоритм и программу вычисления
суммы членов ряда , где Х
– любое число, введенное с клавиатуры, K = 1, 2, 3…100
‘определение суммы членов ряда CLS INPUT “X=”,
X S=0 ‘начальное
значение S FOR K = 1
TO 100 ‘заголовок цикла A = K/(X + 1) S = S + A ‘в переменной S накапливается сумма NEXT К ‘изменение
параметра цикла на 1 PRINT “Сумам S
=”; S END
Пример 10. Составить алгоритм и программу вычисления суммы только
положительных целых случайных чисел, находящихся в интервале [-5, 7]. Цикл повторить
10 раз.
‘определение суммы случайных чисел по условию CLS RANDOMIZE TIMER S=0 ‘начальное
значение S FOR I = 1 TO 10 ‘заголовок цикла A = INT (RND * 12 - 5) PRINT “A(”;I;”) =”; A IF A>=0 THEN S = S + A ‘сумма определяется
по условию NEXT I ‘изменение
параметра цикла на 1 PRINT “Сумам S
=”; S END
Пример 11. Составить алгоритм и программу количество только отрицательных
целых случайных чисел, находящихся в
интервале [-5, 10]. Цикл повторить 15 раз.
|
Операторы DATA и READ всегда работают в паре друг с другом. В общем виде в программе имеют вид:
В операторе DATA записываются константы (числовые или символьные), которые присваиваются соответствующим переменным оператора READ. Операторы DATA и READ могут использоваться в любых типах алгоритмов: линейных, разветвляющихся и циклических и могут стоять в любом месте программы. Основное условие выполнения этих операторов следующее – количество переменных должно соответствовать количеству констант.
Пример 1. Ввести данные из блока данных DATA и вывести на экран в зонном формате.
CLS
DATA .5, 34, 12Е3, -1.4, 15
READ A, B, C. D, E
PRINT “A=”;A, “B=”; B, “C=”;C. “D=”;D, “E=”;E
На экране:
A=5 B=34 C=2000 D=-1.4 C=15
Пример 2. Составить алгоритм и программу вычисления функции Y = 2x2 + 1 для 5 различных
значений Х: 5, 9, -3, 10, 8, которые вводятся из блока данных (этот пример был
рассмотрен ранее).
‘ вычисление функции Y в
зависимости от Х CLS DATA 5, 9, -3, 10, 10 FOR I = 1 TO 5 ‘заголовок
цикла READ X Y = 2* X
^2 + 1 ‘вычисление i-ого
Y PRINT “При Х =”; X, “Y (“; I;
“) =”; Y ‘вывод i–ого Y NEXT I ‘изменение
параметра цикла на 1 END На экране: При Х = 5 Y(1) =101 При Х = 9 Y(2) =163 При Х =-3 Y(3) =19 При Х = 10 Y(4) =201 При Х = 8 Y(5) =129
DATA - данные
READ - читай
Понятие массива
Рассмотрим следующую задачу.
Определить и напечатать средний рост ученика данного класса. Рост ученика вводится с клавиатуры в см.
Алгоритм и программу можно решить следующим образом.
|
В этой задаче, единственное, мы не можем распечатать рост каждого ученика, т.к. когда в ячейку Х вводим новое значение роста, старое значение стирается. Поэтому задачу приходится решать другим способом – с использованием массива.
Массив – это упорядоченный набор однотипных элементов, имеющий одно общее имя и последовательную нумерацию его элементов (элементов).
Примером массива могут быть квартиры в доме: сами квартиры – это массив, каждая квартира этого массива отличается от другой только своим порядковым номером.
Массивы могут быть одномерные, двумерные, многомерные. Мы будем рассматривать только одномерные массивы.
Для объявления массива используется оператор DIM, который в общем виде в программе имеет вид:
Где: DIM – имя оператора, рекомендуется помещать в начале программы;
имя массива – буква на латинском языке; слово; комбинации букв, цифр, знаков (на первом
месте обязательна буква);
размерность массива – максимальное количество элементов в виде целого числа
Например:
DIM A (5) – объявлен массив с именем А, состоящий из 5 элементов;
DIM B1 (10) - объявлен массив с именем B, состоящий из 10 элементов;
DIM MAS (7) - объявлен массив с именем MAS, состоящий из 7 элементов.
«Увидев» оператор DIM, компьютер в своей памяти сформирует пустые ячейки, каждая из которых будет иметь имя и индекс (номер) ячейки.
Например объявлен массив DIM N (6) – внутри сформируются 6 пустых ячеек с именами: N(1), N(2), N(3), N(4), N(5), N(6), Схематично это можно изобразить так:
Массив N, состоящий из 6 элементов
N(1) |
N(2) |
N(3) |
N(4) |
N(5) |
N(6) |
0 |
0 |
0 |
0 |
0 |
0 |
Иногда такие переменные называют индексированными, т.к. каждый элемент массива имеет индекс (номер) в виде числа.
Теперь вернемся к нашему предыдущему примеру, в котором надо не только рассчитать средний рост учеников в классе, а еще распечатать значения роста каждого ученика.
‘ вычисление среднего роста учеников CLS INPUT “Введите количество
учеников”, N S=0 DIM X (N) ‘объявление
массива FOR I = 1 TO N ‘заголовок
цикла PRINT “Введите рост”; I; “-ого ученика” INPUT “”, X
(I) ‘ввод
рост i–ого ученика S = S + X (I) ‘в
переменной S накапливается сумма NEXT I ‘изменение
параметра цикла на 1 FOR I = 1 TO N ‘заголовок
цикла PRINT “Рост “; I;
“- ого ученика =”; X (I);
“см” ‘вывод роста I-ого ученика NEXT I PRINT “Средний рост учеников =”;
S/N END
1 способ – с использованием оператора INPUT
Пример 1. Имеется массив А, состоящий из 10 элементов, элементы которого заполняются
любыми числами, введенными с клавиатуры.
DIM A (10)
PRINT “Введите 10 элементов массива”
FOR I =1 TO 10
PRINT “Введите ”; I; “-ый элемент”
INPUT A(I)
NEXT I
2 способ – с использованием оператора LET
Пример 2. Имеется массив А, состоящий из 8 элементов, элементы которого заполняются
целыми случайными числами в интервале [3, 9].
RANDOMIZE TIMER
DIM A (8)
FOR I =1 TO 8
A (I) = INT (RND * 6 + 3)
NEXT I
3 способ – с использованием оператора DATA и READ
Пример 3. Имеется массив А, состоящий из 6 элементов, элементы которого заполняются
следующими числами: 2, 4, -2, 9, 3, -5, которые считываются из блока данных.
DIM A (6)
DATA 2, 4, -2, 9, 3, -5
FOR I =1 TO 6
READ A (I)
NEXT I
Вывод элементов массива осуществляется в цикле (лучше отдельным циклом) с использованием оператора PRINT. Для примера 1 надо организовать отдельный цикл от 1 до 10:
FOR I =1 TO 10
PRINT “A (”; I; “) =”; A (I)
NEXT I
Для примеров 2 и 3 изменяются только конечное значение цикла, соответственно 8 и 6.
Пример 1. Составить алгоритм и программу определения произведения элементов массива D,
состоящего из N элементов. Элементы массива любые числа, которые считываются
из блока данных DATA. Результат программы вывести на экран.
|
Пример 2. Составить алгоритм и программу определения суммы элементов массива T,
состоящего из N элементов. Элементы массива целые случайные числа в интервале
[2, 24]. Результат программы вывести на экран.
‘вычисление суммы элементов массива CLS RANDOMIZE TIMER INPUT “Введите количество
элементов массива”, N S=0 DIM T (N) ‘объявление
массива FOR I = 1 TO N ‘заголовок
цикла T (I) = INT (RND * 22 + 2) ‘ввод
рост i–ого ученика S = S + T (I) ‘в
переменной S накапливается сумма NEXT I ‘изменение
параметра цикла на 1 FOR I = 1 TO N ‘заголовок
цикла PRINT “T
(“; I; “) =”; T (I) ‘вывод элементов массива T NEXT I PRINT “Сумма
=”; S ‘вывод результата S END
Пример 3. Составить алгоритм и программу определения суммы элементов массива M (N),
находящихся в интервале [5, 10]. Элементы массива целые случайные числа в
интервале [-24, 24]. Результат программы вывести на экран.
|
Пример 4. Составить алгоритм и программу следующего содержания. Дан массив M (N),
элементы массива целые случайные числа в интервале [-24, 24]. Положительные
элементы массива М переписать в массив A, отрицательные – в массив B. Результаты
программы вывести на экран.
Допустим количество элементов в массиве М равно 8 (N=8). Компьютер в данный момент присвоил элементам массива М следующие числа: М(1)=10, М(2)=12, М(3)=-3, М(4)=-8, М(5)=0, М(6)=7, М(7)=-5, М(8)=11. В массив А перепишутся только положительные элементы массива М, в массив В – только отрицательные. Схематично это можно изобразить так:
Из схемы видно, что A (1) = M (1) B (1) = M (3)
A (2) = M (2) B (2) = M (4)
A (3) = M (5) B (3) = M (7)
A (4) = M (6)
A (5) = M (8)
То есть некоторые индексы массивов А и В не совпадают с индексами массива М (они выделены красным цветом). Поэтому для этого надо определить индексы массивов А и В (в программе это переменные К1 и К2 соответственно).
‘запись элементов одного массива в другой по условию CLS RANDOMIZE TIMER INPUT “Введите количество
элементов массива ”, N K1 = 0 : K2
= 0 DIM М (N),
A (N), B
(N) ‘объявление массивов FOR I = 1 TO N ‘заголовок 1-ого
цикла М (I) = INT
(RND * 48 - 24) ‘ввод i–ого элемента IF M(I)>=0 THEN K1=K1 + 1 ‘индекс
массива М A(K1) = M(I) ELSE K2=K2 + 1 ‘индекс
массива М B(K2) = M(I) END IF NEXT I ‘изменение параметра
цикла на 1 FOR I = 1 TO N ‘заголовок 2-ого цикла LOCATE I + 2, 40 PRINT “M (“; I; “) =”; M (I) LOCATE I + 7, 10 PRINT “A (“; I; “) =”; A (I), “B (“;
I; “) =”; B (I) NEXT I END
Пример 5. Составить алгоритм и программу следующего содержания. Дан массив M (N), элементы массива целые случайные числа в интервале [-24, 24]. Четные элементы массива М переписать в массив A. Результаты программы вывести на экран.
‘запись элементов одного массива в другой по условию CLS RANDOMIZE TIMER INPUT “Введите количество
элементов массива ”, N K = 0 DIM М (N),
A (N) ‘объявление
массивов FOR I = 1 TO N ‘заголовок 1-ого
цикла М (I) = INT
(RND * 48 - 24) ‘ввод i–ого элемента IF M (I)/2=INT (M
(I)/2) THEN K=K + 1 ‘индекс
массива A A (K) = M (I) END IF NEXT I ‘изменение параметра
цикла на 1 FOR I = 1 TO N ‘заголовок 2-ого цикла LOCATE I + 2, 40 PRINT “M (“; I; “) =”; M (I) LOCATE I + 7, 10 PRINT “A (“; I; “) =”; A (I) NEXT I END Примечание: выделенную красным цветом строку можно изменить: IF M (I) mod 0 THEN
Где функция MOD
определяет остаток от деления
Пример 6. Составить алгоритм и программу следующего содержания. Дан массив M (N), элементы массива целые случайные числа в интервале [-24, 24]. Найти минимальный элемент массив М. Результат программы вывести на экран.
‘определение минимального элемента массива CLS RANDOMIZE TIMER INPUT “Введите количество
элементов массива ”, N DIM М (N) ‘объявление
массивов М (1) = INT (RND
* 48 - 24) K = 1: P
= M (1) FOR I = 2 TO N ‘заголовок 1-ого
цикла М (I) = INT
(RND * 48 - 24) ‘ввод i–ого элемента PRINT M (“; I; “) =”; M (I) IF P>=M (I) THEN GOTO 1 P=M (I): K = I ‘индекс
массива М END IF 1 NEXT I ‘изменение параметра цикла
на 1 PRINT “минимальный элемент =”;P ; “с номером “;K END
Пример 7. Составить алгоритм и программу следующего содержания. Дан массив M (N), элементы массива заполнены целыми случайными числами в интервале [-24, 24]. Определить количество отрицательных элементов массива М. Результат программы вывести на экран.
‘определение количество элементов массива по условию CLS RANDOMIZE TIMER INPUT “Введите количество
элементов массива ”, N DIM М (N) ‘объявление
массивов K = 0 FOR I = 1 TO N ‘заголовок
цикла М (I) = INT (RND * 48 - 24) ‘ввод i–ого элемента PRINT M (“; I; “) =”; M (I) IF M (I) < 0 THEN K = K + 1 ‘индекс
массива М NEXT I ‘изменение параметра
цикла на 1 PRINT “количество отрицательных
элементов =”; K END
Пример 8. Составить алгоритм и программу следующего содержания. Дан массив M (N), элементы массива заполнены целыми случайными числами в интервале [-24, 24]. Переписать четные номера (индексы) элементов массива М в массив В. Результаты программы вывести на экран.
‘запись элементов одного массива в другой по условию CLS RANDOMIZE TIMER INPUT “Введите количество
элементов массива ”, N K = 0 DIM М (N),
A (N) ‘объявление
массивов FOR I = 1 TO N ‘заголовок 1-ого
цикла М (I) = INT
(RND * 48 - 24) ‘ввод i–ого элемента IF I/2=INT(I/2) THEN K=K + 1 ‘индекс
массива A A (K) = M (I) END IF NEXT I ‘изменение
параметра цикла на 1 FOR I = 1 TO N ‘заголовок 2-ого цикла LOCATE I + 2, 40 PRINT “M (“; I; “) =”; M (I) LOCATE I + 7, 10 PRINT “A (“; I; “) =”; A (I) NEXT I END
Пример 9. Составить алгоритм и программу следующего содержания. Даны массивы A(N) и B(N), элементы которых заполнены целыми случайными числами в интервале [-24, 24]. Суммировать соответствующие элементы массивов A(N) и В(N) и переписать их в массив M(N), уменьшив в 2 раза. Результаты программы вывести на экран.
То есть M (1) = (A (1) + B (1)) / 2
M (2) = (A (2) + B (2)) / 2 и т. д.
‘перезапись элементов массива элементов массива CLS RANDOMIZE TIMER INPUT “Введите количество
элементов массива”, N DIM A (N), B
(N), M (N) ‘объявление
массивов FOR I = 1 TO N ‘заголовок
цикла A (I) = INT (RND *48 - 24) B (I) = INT (RND *48 - 24) M (I) = (A (I) + B (I))/2 NEXT I ‘изменение
параметра цикла на 1 FOR I = 1 TO N ‘заголовок
цикла LOCATE I + 2, 2 PRINT “A (“; I; “) =”; A (I) ‘вывод
результатов LOCATE I + 2, 20 PRINT “B (“; I; “) =”; B (I) LOCATE I + 2, 40 PRINT “M (“; I; “) =”; M (I) NEXT I END
Пример 10. Составить алгоритм и программу следующего содержания. Дан массив M (N), элементы массива заполнены целыми случайными числами в интервале [-24, 24]. Переписать только 5 первых элементов массива М в массив A. Результаты программы вывести на экран.
‘запись элементов одного массива в другой по условию CLS RANDOMIZE TIMER INPUT “Введите количество
элементов массива ”, N K = 0 DIM М (N),
A (N) ‘объявление
массивов FOR I = 1 TO N ‘заголовок 1-ого
цикла М (I) = INT
(RND * 48 - 24) ‘ввод i–ого элемента IF I <= 5 THEN K=K + 1 ‘индекс
массива A A (K) = M (I) END IF NEXT I ‘изменение
параметра цикла на 1 FOR I = 1 TO N ‘заголовок 2-ого цикла LOCATE I + 2, 10 PRINT “M (“; I; “) =”; M (I) LOCATE I + 7, 30 PRINT “A (“; I; “) =”; A (I) NEXT I END
Символьная константа – это величина, заключенная в кавычки.
Символьная переменная – это величина, которая в своем имени имеет знак $ (доллар). Имя переменной может быть буква, слово на латинском языке, комбинация букв, знаков или цифр, но обязательно на первом месте должна быть буква.
Операции над символьными переменными
1) Операция присваивания
Между символьной переменной и константой существует связь:
Символьным переменным можно присваивать значение константы 3 способами:
- с помощью оператора LET,
- с помощью оператора INPUT (ввод с клавиатуры),
- с помощью оператора DATA и READ (из блока данных).
Например:
1) A$ = “Привет”
PRINT A$
На экране: Привет
2) B1$ = “12 * 5 – 20 = 40”
PRINT B1$,
На экране: 12 * 5 – 20 = 40
3) DATA Москва, Санкт-Петербург
READ A$, B$
PRINT B$; A$
На экране: Санкт-Петербург Москва
4)INPUT “Введите слово КОМПЬЮТЕР”, T$
PRINT Т$
На экране: КОМПЬЮТЕР
2) Операция сравнения
Каждый символ, представленный на клавиатуре для компьютера переводится в числовой код. Эти коды объединены в стандартную международную таблицу кодов ASCII. Всего их 128 кодов (с 0 по 127). Коды с 0 по 32 не имеют изображения на экране и служат для функций управления (пробел, клавиши управления курсором и другие). Коды с 33 по 127 включают знаки препинания, цифры, строчные и прописные буквы латинского алфавита и другие символы клавиатуры. А еще 128 кодов (от 128 по 255) – это национальные коды, которые служат для генерации национальных символов (для нашей страны это русский алфавит).
При сравнении символьных переменных больше будет та, которая начинается с символов, более близких к концу алфавита, т.е. имеющих больший код. В случае, если коды символов совпадают, идет сравнение следующих символов в данной строке.
Например:
A$ = “ABCD”
B$ = “BACD”
IF A$ > B$ THEN PRINT “A$ > B$” ELSE PRINT “A$< B$”
На экране: A$ < B$
2) Операция сцепления
Для этой операции используется знак + (плюс).
Например:
1)A$ = “мяч ”
B$ = “катится”
PRINT A$ + B$
На экране: мяч катится
2) D$ = “сим”
F$ = “вол”
C$ = D$ + F$
H$ = C$ + “ика”
PRINT C$, H$
На экране: символ символика
С помощью символьных переменных очень удобно составлять диалоговые программы.
Пример.
PRINT “Привет! Я компьютер, а ты кто?” ‘Компьютер
INPUT “Введите свое имя ”, A$ ‘Пользователь
PRINT A$; “, а сколько вам лет?” ‘Компьютер
INPUT “Не стесняйтесь, я никому не скажу”, B ‘Пользователь
PRINT “Да, ”; A$; “, вы очень еще молоды. Счастья вам в жизни!” ‘Компьютер
Задание. Составить диалоговую программу следующего содержания:
Компьютер: Как Вас зовут?
Пользователь: Оля
Компьютер: Оля, вы девушка или юноша?
Пользователь: Девушка
(Выбирается условие – если девушка, то вывести сообщение «Вы очень прекрасны, леди!», иначе – «Вы настоящий джентльмен!»)
Компьютер: Вы очень прекрасны, леди!
Для работы с символьными данными (константами и переменными) используются стандартные символьные функции. Их аргументами могут быть строковые или числовые данные. Каждая функция имеет свое неповторимое имя. Если имя функции оканчивается знаком $ (доллар), то в результате ее выполнения создается строка символов, если в имени функции знак $ (доллар) отсутствует, то результатом является целое десятичное значение.
Функция LEN определяет длину строки, т.е. количество всех символов в символьной строке, включая пробелы. В общем виде функция LEN имеет вид:
Где: аргумент – символьная константа, символьное выражение или символьная переменная.
Например:
1)B$ = “программа”
PRINT “В слове ”; B$; LEN (B$); “букв”
На экране: 9
2)INPUT “Введите вашу фамилию ”, A$
N = LEN (A$)
PRINT “В вашей фамилии ”; N; “букв”
На экране: число букв
Функция MID$ «вырезает» из символьной переменной определенное количество символов, начиная с заданного. В общем виде функция MID$ имеет вид:
Где: аргумент – символьная константа, символьное выражение или символьная переменная.
N – порядковый номер символа, с которого начинается вырезка;
K – количество вырезаемых символов.
Например:
1)B$ = “программа”
PRINT MID$ (B$, 4, 5)
На экране: грамм
Функция LEFT$ и RIGHT$ выделяют из символьной переменной определенное количество символов слева или справа соответственно. В общем виде функции LEFT$ и RIGHT$ имеют вид:
Где:
аргумент – символьная константа, символьное выражение или символьная переменная;
N – количество символов, которое вырезаются слева или справа соответственно.
Например:
1)B$ = “газонокосильщик”
PRINT LEFT $ (B$, 5)
На экране: газон
2)B$ = “газонокосильщик”
PRINT RIGHT $ (B$, 9)
На экране: косильщик
Функция CHR$ выдает символ по его коду ASCII. В общем виде функция CHR$ имеет вид:
Где: N – десятичный код в интервале [33, 255]
Например:
1) PRINT “латинская буква - ”:CHR$ (65)
На экране: латинская буква – A
КОДЫ СИМВОЛОВ
1 – 32 - управляющие клавиши (например, код 27 – клавиша ESC, код 32 клавиша пробел);
48 – 57 – коды цифр от 0 до 9;
65 – 90 - прописные буквы латинского алфавита;
97 – 122 – строчные буквы латинского алфавита;
176 223 – символы псевдографики;
33 – 43, 58 – 63, 91 – 95, 123 – 127, 240 – 254 – знаки препинания и другие символы;
128 – 159 - прописные буквы русского алфавита;
160 – 175 и 224 – 239 – строчные буквы русского алфавита.
Функция ASC выдает код ASCII по его символу. В общем виде функция ASC имеет вид:
Где: N –символ,
N$ - символьная переменная
Например:
1)A$ = “Д”
PRINT “код буквы D - ”: ASC (A$)
На экране: код буквы D – 68
2) PRINT “код буквы B = ”: ASC (“Б”)
На экране: код буквы B = 65
Функция INKEY$ ожидает нажатия определенной клавиши и/или анализирует поступающую информацию об уже нажатых клавишах. Если ничего не нажато, то она возвращает в качестве своего значения пустую строку. Если нажата одна из клавиш, то INKEY$ возвращает строку из одного символа, кода нажатой клавиши. В общем виде функция INKEY$. имеет вид:
Например:
1) PRINT “Для выхода из программы нажмите клавишу Y”
10 K$ = INKEY$
IF K$ = “Y” THEN PRINT “КОНЕЦ” ELSE GOTO 10
Программа будет опрашивать состояние клавиатуры до тех пор, пока не будет нажата клавиша Y.
2) PRINT “Если вы девушка, нажмите клавишу д ”
10 K$ = INKEY$
IF K$ = “д” THEN PRINT “Вы прекрасны, леди” ELSE GOTO 10
END
Программа будет опрашивать состояние клавиатуры до тех пор, пока не будет нажата любая клавиша.
Пример 1. Составить алгоритм и программу следующего содержания. Символьная переменная A$ присвоила значение ПРОГРАММИРОВАНИЕ. Из этого слова сформировать слова: ПРОГРАММА, ПИРОГ. Результаты программы вывести на экран.
|
Пример 2. Составить алгоритм и программу следующего содержания. Символьная переменная A$ присваивает разные значения слов: банан, арбуз, ананас, виноград, яблоки. Вывести на экран те слова, у которых длина больше или равно 6. Результаты программы вывести на экран.
CLS DATA банан, арбуз, ананас,
виноград, яблоки FOR I = 1 TO 5 ‘заголовок
цикла READ A$ IF LEN (A$) >= 6 THEN
PRINT A$ END IF NEXT I ‘изменение
параметра цикла на 1 END
Пример 3. Составить алгоритм и программу следующего содержания. Символьная переменная A$ присваивает разные значения слов: банан, арбуз, ананас, виноград, яблоки. Вывести на экран те слова, которых начинаются с буквы А. Результаты программы вывести на экран.
CLS DATA банан, арбуз, ананас,
виноград, яблоки FOR I = 1 TO 5 ‘заголовок
цикла READ A$ IF MID$ (A$, 1, 1) = “а” THEN PRINT A$ END IF NEXT I ‘изменение
параметра цикла на 1 END
Пример 4. Составить алгоритм и программу следующего содержания. Символьная переменная A$ присваивает значение в виде предложения, которое вводится с клавиатуры. Определить в символьной строке количество букв а. Результаты программы вывести на экран.
CLS K = 0 INPUT “Введите предложение ”, A$ FOR I = 1 TO LEN (A$) ‘заголовок
цикла IF MID$ (A$, I, 1) = “а” THEN K = K +
1 END IF NEXT I ‘изменение
параметра цикла на 1 PRINT “Количество букв А в
предложении =”; K END
Пример 5. Составить алгоритм и программу следующего содержания. Вывести на экран коды символов в интервале [32, 47]. Результаты программы вывести на экран в 1 столбик, в 5 столбиков, в строку, случайным образом.
CLS ‘RANDOMIZE TIMER FOR I = 32 TO 47 ‘заголовок
цикла ‘LOCATE 23*RND + 1, 75*RND + 1 PRINT I; “=”; CHR$(I) NEXT I ‘изменение
параметра цикла на 1 END Примечание: для вывода результата в 5 столбиков надо в операторе PRINT
добавить запятую PRINT I; “=”; CHR$(I), в строку – в операторе PRINT
добавить точку с запятой: PRINT I; “=”; CHR$(I); случайным образом – удалить апострофы в операторах RANDOMIZE и LOCATE
Пример 6. Составить алгоритм и программу следующего содержания. Символьная переменная A$ присваивает значение в виде последовательности символов из знаков и цифр. Определить в символьной строке количество букв и цифр. Коды цифр находятся в интервале [48, 57]. Результаты программы вывести на экран.
CLS K1 = 0: К2
= 0 A$ =
“1**2$$3%678” FOR I = 1 TO
LEN (A$) ‘заголовок цикла IF ASC (MID$
(A$, I, 1)< = 57 AND ASC (MID$ (A$, I, 1)> = 48 THEN K1 = K1 + 1 ELSE K2 = K2
+ 1 END IF NEXT I ‘изменение
параметра цикла на 1 PRINT “Количество цифр в строке =”; K1 PRINT “Количество знаков в строке =”; K2 END
Пример 7. Составить алгоритм и программу следующего содержания. При нажатии любой клавиши клавиатуры на экран выводится код символа. Для остановки программы надо нажать клавишу с буквой s.
CLS K$= “” 1 IF K$ = “s” THEN PRINT “Работа
завершена” : END K$ = INKEY$ IF K$ <> “” THEN PRINT ASC (K$); K$
GOTO 1 END
Пример 8. Составить алгоритм и программу следующего содержания. Символьная переменная A$ присваивает значение в виде последовательности символов 5, а, 2, в, с, %, $,. Определить в символьной строке код символа. Результаты программы вывести на экран.
CLS DATA 5, а, 2, в, с, %, $ FOR I = 1 TO 7 ‘заголовок
цикла READ A$ PRINT «Символ»;
A$; «имеет код»; ASC(A$) NEXT I ‘изменение
параметра цикла на 1 END
CLS A$= “хорошо” FOR I = 1 TO LEN (A$) ‘заголовок
цикла PRINT MID$(A$, I, 1); ASC (MID$(A$, I,
1) NEXT I ‘изменение
параметра цикла на 1 END
Пример 9. Составить
алгоритм и программу следующего содержания. Символьная переменная A$ присваивает значение в виде слова «Хорошо». Вывести на
экран буквы данного слова по одной в каждой строке и определить код буквы.
Результаты программы вывести на экран.
Символьные массивы, как и числовые массивы, в своем имени имеют знак $ (доллар). Для объявления символьного массива также используется оператор DIM.
Например, объявлен массив N$, состоящий из 6 элементов:
DIM N$(6)
N$(1) |
N$(2) |
N$(3) |
N$(4) |
N$(5) |
N$(6) |
0 |
0 |
0 |
0 |
0 |
0 |
В памяти компьютера сформировались 6 пустых ячеек с именами от N$(1) до N$(6). С элементами символьных массивов можно делать разные действия: вводить, выводить, перезаписывать в другой массив по условию и без условия и другие действия.
1 способ – с использованием оператора INPUT
Пример 1. Имеется символьный массив А$, состоящий из 5 элементов, элементы которого заполняются любыми словами, введенными с клавиатуры.
DIM A$ (5)
PRINT “Введите 5 элементов массива”
FOR I =1 TO 5
PRINT “Введите ”; I; “-ый элемент”
INPUT A$(I)
NEXT I
2 способ – с использованием оператора DATA и READ
Пример 2. Имеется символьный массив А$, состоящий из 5 элементов, элементы которого заполняются следующими словами: INPUT, PRINT, LET, COLOR, RND, которые считываются из блока данных.
DIM A$ (5)
DATA INPUT, PRINT, LET, COLOR, RND
FOR I =1 TO 5
READ A$ (I)
NEXT I
Вывод элементов массива осуществляется в цикле (лучше отдельным циклом) с использованием оператора PRINT. Для примера 2 надо организовать отдельный цикл от 1 до 5:
FOR I =1 TO 5
PRINT “A (”; I; “) =”; A$ (I)
NEXT I
На экране:
А(1) = INPUT
А(2) = PRINT
А(3) = LET
А(4) = COLOR
А(5) = RND
Пример 1. Составить алгоритм и программу следующего содержания. Имеется символьный массив B$, , состоящий из 5 элементов. Элементы массива заполнены следующими словами: молоко, кокос, корова, кот, колос, которые считываются из блока данных DATA. Определить количество букв О в каждом слове. Результаты программы вывести на экран.
![]() |
Пример 2. Составить алгоритм и программу следующего содержания. Имеется символьный массив B$, состоящий из 6 элементов. Элементы массива заполнены следующими словами: молоко, ферма, корова, сок, кот, колос, которые считываются из блока данных DATA. Все слова, начинающиеся на букву К переписать в массив С$, остальные слова – в массив N$. Результаты программы вывести на экран.
‘запись элементов одного массива в другой по условию CLS K1 = 0 : K2
= 0 DATA молоко, ферма, корова, сок,
кот, колос, DIM B$ (6), C$ (6), N$
(6) ‘объявление массивов FOR I = 1 TO 6 ‘заголовок
1-ого цикла READ B$(I) ‘ввод i–ого элемента NEXT I FOR I = 1 TO 6 ‘заголовок
2-ого цикла IF LEFT$(B$(I), 1 ) = ”к” THEN K1=K1 +
1 ‘индекс массива C$ C$(K1) = B$(I) ELSE K2=K2 + 1 ‘индекс
массива N$ N$(K2) =
B$(I) END IF NEXT I ‘изменение параметра
цикла на 1 FOR I = 1 TO 6 ‘заголовок
3-ого цикла LOCATE I + 2, 40 PRINT “B$ (“; I; “) =”; B$ (I) LOCATE I + 7, 10 PRINT “C$ (“; I; “) =”; C$ (I), “N$ (“;
I; “) =”; N$ (I) NEXT I END
Пример 3. Составить алгоритм и программу следующего содержания. Имеется символьный массив B$, состоящий из 6 элементов. Элементы массива заполнены следующими словами: молоко, ферма, корова, сок, кот, колос, которые считываются из блока данных DATA. Все слова, длина которых меньше или равна 5, но больше или равна 3 переписать в массив С$, остальные слова – в массив N$. Результаты программы вывести на экран.
‘запись элементов одного массива в другой по условию CLS K1 = 0 : K2
= 0 DATA молоко, ферма, корова, сок,
кот, колос, DIM B$ (6), C$ (6), N$
(6) ‘объявление массивов FOR I = 1 TO 6 ‘заголовок
1-ого цикла READ B$(I) ‘ввод i–ого элемента NEXT I FOR I = 1 TO 6 ‘заголовок
2-ого цикла IF LEN(B$(I))>=3 AND
LEN(B$(I))<=5 THEN K1=K1 +
1 ‘индекс массива C$ C$(K1) = B$(I) ELSE K2=K2 + 1 ‘индекс
массива N$ N$(K2) =
B$(I) END IF NEXT I ‘изменение параметра
цикла на 1 FOR I = 1 TO 6 ‘заголовок
3-ого цикла LOCATE I + 2, 40 PRINT “B$ (“; I; “) =”; B$ (I) LOCATE I + 7, 10 PRINT “C$ (“; I; “) =”; C$ (I), “N$ (“;
I; “) =”; N$ (I) NEXT I END
Пример 4. Составить алгоритм и программу следующего содержания. Имеется символьный массив B$, состоящий из 6 элементов. Элементы массива заполнены следующими символами: 1, а, 2, б, 3, в, 4, г, которые считываются из блока данных DATA. Все числа, переписать в массив С$, буквы– в массив N$. Интервал цифр [48,57]. Результаты программы вывести на экран.
‘запись элементов одного
массива в другой по условию CLS K1 = 0 : K2 = 0 DATA 1, а, 2, б, 3, в, 4,
г DIM B$ (6), C$
(6), N$ (6) ‘объявление массивов FOR I = 1 TO
6 ‘заголовок 1-ого цикла READ B$(I) ‘ввод
i–ого элемента NEXT I FOR I = 1 TO
6 ‘заголовок 2-ого цикла IF
ASC(MID$(B$(I), 1, 1)<=57 AND ASC(MID$(B$(I), 1, 1)>=48 THEN K1=K1 + 1 ‘индекс
массива C$ C$(K1) = B$(I) ELSE K2=K2
+ 1 ‘индекс массива N$ N$(K2) = B$(I) END IF NEXT I ‘изменение
параметра цикла на 1 FOR I = 1 TO
6 ‘заголовок 3-ого цикла LOCATE I + 2,
40 PRINT “B$ (“;
I; “) =”; B$ (I) LOCATE I + 7,
10 PRINT “C$ (“;
I; “) =”; C$ (I), “N$ (“; I; “) =”; N$ (I) NEXT I END
Пример 5. Составить алгоритм и программу следующего содержания. Имеется символьный массив B$, состоящий из 4 элементов. Элементы массива заполнены следующими словами: кот, бит, сок, нос, которые считываются из блока данных DATA. Вывести на экран коды букв каждого слова (элемента) массива. Результаты программы вывести на экран.
CLS DATA кот, бит, сок, нос DIM B$ (4) ‘объявление
массивов FOR I = 1 TO 4 ‘заголовок
1-ого цикла READ B$(I) ‘ввод i–ого элемента NEXT I FOR I =
1 TO 4 ‘заголовок
2-ого цикла PRINT “Коды символов в слове ” ;
B$(I); “:” FOR J =
1 TO LEN (B$(I)) PRINT MID$(B$(I), J, 1); “=”; ASC (MID$
(B$(I), J, 1)) NEXT J NEXT I ‘изменение
параметра цикла на 1 END
При входе в оболочку QBAIC по умолчанию включается текстовый режим, в котором можно производить вычисления и выводить результаты на экран. Если мы хотим пользоваться графическими возможностями языка, то должны войти в графический режим с помощью
специального оператора SCREEN, который определяет количество точек на экране. Причем чем больше точек, тем качественнее графическое изображение или иначе разрешение. Каждая точка или пиксель экрана имеет свои координаты: по горизонтали (X) и вертикали (Y). Начало координат находится в левом верхнем углу экрана монитора с координатами (0, 0).
В языке QBAIC существует несколько графических режимов, от которых зависит разрешение экрана, формат текста и число цветов (см. таблицу):
Номер режима (SCREEN) |
Разрешение режима |
Формат текста |
Число цветов |
1 2 7 8 9 12 13 |
320х200 640х200 320х200 640х200 640х350 640х480 320х200 |
40х25 80х25 40х25 80х25 80х25 80х30 40х25 |
16 16 16 16 64 256 256 |
Мы будем использовать графический режим SCREEN 9 или SCREEN 12.
Для вывода точки используется оператор PSET, который в общем виде записывается
Где X и Y – координаты точки на экране;
С – код цвета точки от 0 до 15 (по умолчанию черный цвет).
Примеры:
1) SCREEN 9
PSET (320, 175), 4
На экране: на черном экране появится красная точка в центре.
2) SCREEN 9
COLOR , 1
PSET (320, 175), 4
На экране: на синем экране появится красная точка в центре
Для вывода линии используется оператор LINE, который в общем виде записывается:
Где X1 и Y1 – координаты начала отрезка;
X и Y2 – координаты конца отрезка;
С – код цвета линии от 0 до 15 (по умолчанию черный цвет).
Если координаты начальной точки отсутствуют, то за начальную точку принимается точка окончания предыдущей линии, либо точка с координатами (0, 0).
Пример:
SCREEN 9
COLOR 1, 14
LINE (100, 300) – (600, 50), 1
На экране: на желтом экране появится отрезок синего цвета;
Для вывода прямоугольника используется оператор LINE, в который добавляется буква B и в общем виде записывается:
Где X1 и Y1 – координаты начала диагонали;
X и Y2 – координаты конца диагонали;
С – код цвета линии от 0 до 15 (по умолчанию черный цвет).
B – признак прямоугольника.
Для вывода окрашенного прямоугольника используется оператор LINE, в который добавляются буквы BF (слитно) и в общем виде записывается:
Пример:
SCREEN 9
COLOR 1, 14
LINE (100, 300) – (600, 50), 1, B
На экране: на желтом экране появится прямоугольник синего цвета.
Для вывода окружности используется оператор CIRCLE, который в общем виде записывается:
Где X и Y – координаты центра окружности;
R – радиус окружности;
С – код цвета от 0 до 15 (по умолчанию черный цвет).
Пример:
SCREEN 9
CIRCLE (320, 175), 50, 2
На экране: на черном экране в центре появится окружность зеленого цвета.
Эллипс – это по сути окружность, которой слегка дали по «голове» или по «бокам», в результате чего она стала вытянутой по вертикали или горизонтали. И вместо одного радиуса, как у окружности, у эллипса стало два – по осям X (Rх) и Y (Ry).
Частное от деления Rx и Ry дает нам так называемый коэффициент сжатия:
К =
Таким образом, для вытянутых по горизонтали эллипсов коэффициент сжатия будет в пределах [0, 1]. А для эллипсов, вытянутых по вертикали коэффициент сжатия будет больше 1,
Для вывода эллипса используется оператор CIRCLE, который в общем виде записывается:
Где X и Y – координаты центра эллипса;
R –радиус той окружности, из которой этот эллипс получился;
С – код цвета линии от 0 до 15 (по умолчанию черный цвет).
К – коэффициент сжатия.
Пример:
SCREEN 9
CIRCLE (320, 175), 50, 2, , , .5
На экране: на черном экране в центре появится эллипс зеленого цвета, сжатый сверху и снизу. у которого Ry в 2 раза меньше, чем Rх.
Закрашивает замкнутые области.
Для закраски замкнутых областей используется оператор PAINT, который в общем виде записывается:
Где X и Y – координаты любой точки внутри закрашиваемого контура;
С1 – цвет, которым закрашивается контур;
С2 – цвет самого контура.
Если цвета равны, то достаточно указать цвет С1.
Этапы работы при создании рисунка.
1. Начертить координатную сетку или воспользоваться миллиметровой бумагой при этом продумать масштаб, например, одна клеточка 10 или 20 точек экрана.
2. Перенести рисунок на подготовленную координатную сетку. При этом полезно отмечать координаты наиболее важных точек рисунка. Например, центров окружностей, углов прямоугольника..
3. Придумать использование операторов.
4. Записать программу и ввести ее в память компьютера.
5. Выполнить программу. При необходимости отладить (отредактировать) программу.
ЗАДАНИЕ 1
Создать на экране картинку, используя операторы графики
В программировании возникает ситуация, когда некоторая последовательность операторов должна повторяться в нескольких местах программы. Эту группу операторов объединяют в небольшую программу и обращаются к ней по мере необходимости. В этом случае мы сталкиваемся с понятием подпрограммы.
Подпрограмма – это отдельная группа операторов, которая выполняется многократно и к которой обращаются по необходимости.
Подпрограмма записывается в виде последовательности строк в конце программы, всегда начинается с определенного номера строки и заканчивается оператором RETURN. Оператор RETURN (вызов) возвращает подпрограмму в то место, откуда она вызывалась и передает управление оператору, стоящему за оператором GOSUB.
Для вызова подпрограммы используется оператор GOSUB. В общем виде оператор GOSUB записывается:
Где N – номер строки с которой начинается подпрограмма.
Схематично это можно изобразить так:
Основная программа
Подпрограмма
Как правило подпрограмм может быть не одна, а несколько. Причем одна подпрограмма может вызывать другую подпрограмму и это действие называется рекурсией.
Рассмотрим пример. На картинке надо нарисовать не одно, а несколько деревьев. Для этого лучше организовать подпрограмму для рисования одного дерева, а затем будем вызывать ее столько раз, сколько деревьев надо нарисовать.
ЗАДАНИЕ 2
Создать на экране картинку с использованием подпрограмм (для дерева и для облака).
ЗАДАНИЕ 3
Создать на экране картинку в соответствии с образцом.
1) Измените координаты солнца и туч в соответствии с картинкой.
2) Вставьте строки в нужные места программы (файл КАРТИНК2.BAS)
‘ОКРАСКА ВСЕГО ЭКРАНА В ГОЛУБОЙ ЦВЕТ
COLOR 1, 11
‘ЦИКЛ ДЛЯ ВЫВОДА ДОЖДЯ В ТЕКСТОВОМ ЭКРАНЕ
FOR I =1 TO 30
X = RND * (10 – 4) + 4 ‘интервал строк от 4 до 10
Y = RND * (70 – 50) + 50 ‘интервал столбцов от 50 до 70
LOCATE X, Y
PRINT “/”
NEXT I
‘ОКРАСКА ПОЛЯ ЗЕМЛИ В СВЕТЛО-ЗЕЛЕНЫЙ ЦВЕТ
LINE (0, 160) – (650, 350), 10, BF
‘ЦИКЛ ДЛЯ ВЫВОДА ТОЧЕК В ПОЛЕ ЗЕМЛИ
FOR I =1 TO 3000
X = RND * 650 ‘интервал точек по оси Х от 0 до 650
Y = RND * (350 – 160) + 160 ‘интервал точек по оси Y от 160 до 350
PSET (X, Y), 6
NEXT I
Задание 4
1) Поставьте деревья в соответствии с картинкой. Для этого используйте цикл со счетчиком от 1 до 8 и приращения для переменных Х1, Х2, Х3.
‘ЗАДАТЬ НАЧАЛЬНЫЕ ЗНАЧЕНИЯ ПЕРЕМЕННЫХ ДЛЯ 1-ого ДЕРЕВА
X1=20: Y1=340: X2=40: Y2=260: X3=30: Y3=210
FOR I=1 TO 8
GOSUB 10 ‘вызов подпрограммы для рисования дерева
X1=X1 + 80 ‘приращение Х1
X2=X2 + 80 ‘приращение Х2
X3=X3 + 80 ‘приращение Х3
NEXT I
2) Поставьте облака в соответствии с картинкой. Для этого используйте цикл от 1 до 3 и приращения для переменных Х4 и Y4.
.
Задание 5
1) Поставьте деревья в соответствии с картинкой. Для этого используйте цикл со счетчиком от 1 до 7 и приращения для переменных Х1, Х2, Х3, Y1, Y2, Y3.
.
2) Поставьте облака в соответствии с картинкой.
Скачано с www.znanio.ru
Материалы на данной страницы взяты из открытых источников либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.