Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Основы программирования для студентов технологического профиля. Учебное пособие
.pdf
101
Программа на QBasic:
RESTORE m2: READ a1
1
RESTORE m1: READ a2
2
? a1, a2
3
RESTORE m1: READ a3
4
RESTORE m2: READ a4
5
? a3; a4
6 102
CLS : READ a, b, c, c$
PRINT a, b, c, c$
END
DATA 1.5, 20, -30, "Отличная погода"
Обсуждение программы: в первой строке программы
оператором CLS производится очистка экрана вывода от
информации. Оператор READ ищет оператор DATA и
осуществляет чтение данных: переменным a, b, c присваиваются
числовые значения, а строковой константе c$ присваивается
значение текстовой константы.
В следующей строке программы оператор PRINT
выводит значения переменных на пустой экран вывода
информации. Оператор END завершает работу программы.
Оператор RESTORE
(RESTORE - восстанавливать)
Формат оператора:
RESTORE [ метка ]
метка - метка строки, где расположен оператор DATA, данные
которого необходимо прочитать оператором READ. Если метка
не указана, то указатель чтения данных будет установлен на
первый элемент первого оператора DATA, где бы он не
располагался в программе.
Назначение оператора: восстановление данных для их
повторного чтения.
Программа 3.4.3.2. Cоставить программу для вывода числовой
информации, используя операторы Read и Data. Данные
прочитать так, чтобы они были выведены на экран монитора в
порядке возрастания, а затем в порядке их убывания.

окончание таблицы
END
7
m1:DATA 10
8
m2:DATA 3
9
Обсуждение программы: после запуска программы оператор
Restore, расположенной в первой строке программы, ищет метку
m2 и устанавливает указатель чтения на число 3, расположенное
в строке 9. Оператор READ первой строки читает число 3 и
присваивает это значение переменной a1. Оператор Restore,
находящийся во второй строке, ищет метку m1 и устанавливает
указатель чтения на число 10, расположенное в строке 8.
Оператор READ второй строки читает число 10 и присваивает
это значение переменной a2. В третьей строке оператор PRINT
выводит на экран вывода два числа в порядке их возрастания,
расположив числа по зонам.
Далее оператор Restore, расположенный в четвертой строке
программы, ищет метку m1 и восстанавливает данные в строке
8, устанавливая указатель чтения на число 10. Оператор READ
четвертой строки читает число 10 и присваивает это значение
переменной a3. Оператор Restore, находящийся в пятой строке,
ищет метку m2 и восстанавливает данные в строке 9,
устанавливая указатель чтения на число 3. Оператор READ
пятой строки читает число 3 и присваивает это значение
переменной a4. В шестой строке оператор PRINT выводит на
экран вывода два числа, выполнив сжатую печать. На экране
вывода информация будет расположена следующим образом:
3 10
10 3
3.5 Замкнутые программы
Оператор GOTO
(GOTO - перейти к)
?Формат оператора:
?GOTO метка
?метка - метка строки, на которую осуществляется переход. Под
меткой понимают совокупность букв и цифр. Метка
заканчивается двоеточием.

103
?Назначение оператора: безусловный (т.е. без проверки
′ Программа для суммирования положительных чисел
1
′ Название файла программы: SUMMA1.BAS
2
′Разработчик программы–студент гр.4901 Сидоров А.И.
3
′ Дата разработки программы- 18.06.13
4
CLS : s=0 ′очистка экрана и обнуление сумматора
5
m1 : INPUT ′′ Введите положительное число′′; p
6
′ Накопление чисел
7
s=s+p
8
PRINT ″ Вывод накопленный суммы″ s
9
GOТО m1
10
1-4
- записана шапка программы;
5
- оператором CLS очищается экран вывода информацию.
Поскольку поставлена задача накопления суммы, то
необходимо в программе создать сумматор. Сумматор
предназначен для накопления и хранения накопленной
суммы. Обычно в качестве сумматора используют
переменную. Перед накоплением суммы принято
обнулять сумматор. В 5 строке создан сумматор s и в
него записано число 0;
6
- использован оператор INPUT для ввода данных с
клавиатуры. Введенное число записывается в ячейку р.
7
- записана подсказка.
8
- организовано накопление суммы. Для накопления
суммы использован оператор LET.
9
-осуществляется вывод накопленной промежуточной
суммы на экран вывода информации.
каких либо условий) переход к указанной в программе метке.
?Программа 3.5.1. Составить программу для суммирования
положительных чисел, введенных с клавиатуры.
?Реализация программы на QBasic:
Обсуждение программы:

104
окончание таблицы
10
- оператор GOTO передает управление на метку m1,
которая находится в строке 6. Сама метка расположена
перед оператором INPUT.
Работа программы: после запуска программы на экране
′ Программа для вычисления выражения
1
′ Название файла программы: F2.BAS
2
′Разработчик программы–студент гр.4901 Сидоров А.И.
3
′ Дата разработки программы- 19.06.13
4
pi=4*atn(1) ′ вычисление числа пи
5
INPUT ′′ Введите значения x и а′′; x, a
6
′ Вычисление выражения
7
y=abs(x^5-0.31*x^(2/3)/(cos(x)^2))
8
p=pi/(2*a) : d=atn(p/sqr(1-p^2)): y=log(y)/log(10)+d
9
PRINT ′′Значение выражения равно′′; y
10
END
11
вывода информации появляется подсказка «Введите
положительное число». Пользователь набирает положительное
число и нажимает клавишу Enter. Введенное число записывается
в сумматор и затем выводится на экран с подсказкой «Вывод
накопленной суммы». После этого вновь начинает работать
оператор INPUT. В результате создана з а мк н ут а я бесконечно
выполняющаяся программа. Остановить работу такой
программы можно только с помощью клавиш Ctrl+Pause(Brek) –
а в а р ий н ы й о с т а но в .
Программа 3.5.2. Вычислить значение переменной y (см.
условие Задачи 2.4.1.)
Реализация программы на QBasic

105
Обсуждение программы:
′ Программа для вычисления длины гипотенузы
1
′ Название файла программы: len_gip. bas
2
′ Программист –студент гр.4901-23 Сидоров А.И.
3
′ Дата разработки программы- 18.06.13
4
RESTORE m1
5
В первых четырех строках записана шапка программы. В
пятой строке вычисляется значение константы π. В 6 строке, с
помощью оператора INPUT вводятся две переменные x и a. В 7
строке записана подсказка. В 8 строке вычисляется первая часть
заданного выражения. Обратите внимание на то, что сложный
знаменатель необходимо записать в скобки. Поскольку на
Qbasic отсутствует кубический корень, то приходится его
записывать через степень. В 9 строке записано три оператора
присваивания: первый оператор вычисляет аргумент функции
arc sin и записывает полученное значение в ячейку р; второй
оператор присваивания вычисляет значение функции arc sin.
Поскольку такая тригонометрическая функция на QBasic
отсутствует, ее необходимо заменить функциями, которые
имеются на QBasic (см. табл. 2.1); третий оператор
присваивания объединяет две вычисленные части выражения и
окончательный результат записывается в ячейку y. В строке 10
полученный результат выводится на экран вывода информации.
В строке 11 оператор END прекращает работу программы.
После запуска программы на экран вывода выводится
сообщение «Введите значения х и а». Пользователь должен
ввести значения указанных переменных в том же порядке,
разделяя их при вводе знаком запятой и нажать клавишу Enter.
После вычисления переменной y появляется подсказка и
выводится сам результат.
Программа 3.5.3. Вычислить длину гипотенузы, если известны
значения катетов (Задача 2.3.1.1.). Исходные данные ввести
оператором READ.
Реализация программы на QBasic:

106
окончание таблицы
READ a, b
6
с= SQR(a^2+b^2)
7
? "Значение гипотенузы, (в метрах) равно" с
8
END
9
′ Запишите в DATA значения катетов, а и b в метрах:
10
m1: DATA 5, 3.5
11
Обсуждение программы: строки 1-4 – шапка программы.
В строке 5 оператор RESTORE настраивает указатель чтения на
строку, в которой расположена метка m1. В строке 6 оператор
READ осуществляет чтение данных из строки, в которой
расположен указатель чтения, т.е. из строки 11. Прочитанные
числовые значения присваиваются переменным, указанным в
списке оператора READ. В строке 7 вычисляется значение
гипотенузы. В строке 8 оператором PRINT выводится подсказка
и значение длины гипотенузы. В строке 9 оператор END
прекращает работу программы. В строке 10 с помощью
оператора REM записана подсказка, напоминающая о вводе
данных в программу. В строке 11 с помощью оператора DATA
записаны значения катетов прямоугольного треугольника. Для
удобства записи данных оператор DATA часто располагают в
конце (или в начале) программы.
3.5.1 Функция пользователя в QBasic
Оператор функции пользователя (DEF FN) позволяет
пользователю описать пользовательскую функцию.
Оператор DEF FN
(DEFinition FuNction - определение функции)
Формат линейной формы оператора:
?DEF FNимя [(параметры)] = выражение
имя- допустимое имя переменной длиной до 40 символов,
образующее вместе с буквами FN полное имя нестандартной
функции; параметры - список формальных параметров,
которые заменяются конкретными значениями при вызове

107
функции; выражение - совокупность констант, функций,
´Программа для вычисления площади круга
1
´Название файла программы: S_KRUG.BAS
2
´Разработчик программы–студент гр.4901 Сидоров А.И.
3
´Дата разработки программы- 8.09.01
4
´Условные обозначения:
5
´R- радиус круга (м)
6
´S- площадь круга кв. м.
7
´ Определение функции пользователя
8
Def FNS (r)= pi*r^2
9
pi=3.14159 ′ задание константы ПИ
10
? ″Значения радиуса и площади круга в кв. метрах равны″
11
? ″r=″ 3, fns(3)
12
? ″r=″ 13, fns(13)
13
? ″r=″ 20, fns(20)
14
END
15
переменных, соединенных знаками арифметических действий.
Назначение оператора: определение функции пользователя и
присваивание ей имени. Оператор необходимо записать до
первого вызова функции.
Программа 3.5.4. (см. условие Задачи 2.4.2.) Вычислить
площадь круга для значений радиуса 3, 13, 20. Для вычисления
площади круга использовать функцию пользователя.
Реализация программы на QBasic:
Обсуждение программы:
Шапка программы записана в строках 1-4. В cтроках 5-7
описаны единицы физических величин, от которых зависит
решение поставленной задачи. В строке 8 записана подсказка. В
строке 9 записана функция пользователя, которая имеет имя
FNS. В качестве параметра использован радиус круга. В строке
10 задана константа π. В строке 11 на экран вывода выводится

108
подсказка “Значения радиуса и площади круга в кв. метрах
имя
- имя модуля длиной до 40 символов;
список
параметров
- имена простых или индексированных
переменных, разделенных запятыми.
равны”. В строках 12-14 выводится значение радиуса и значение
площади круга. Для вычисления значения площади круга
использована функция пользователя с именем FNS. Вместо
формального параметра r подставляются конкретные значения
радиусов. Поскольку под именем FNS записано выражение для
вычисления площади круга, значения радиусов подставляются в
выражение для площади круга и полученные результаты
выводятся на экран.
3.6 Элементы структурного программирования
Функция пользователя позволяет писать более лаконичные
программы, но является устаревшей конструкцией QBasic. Все
дело в том, что современное программирование является
модульным. Это существенно облегчает чтение сложных
программ. Кроме того, модульные программы позволяет
разделить работу над сложной программой между многими
программистами, каждый из которых пишет свой модуль. На
бейсике можно создавать модули двух типов: модуль типа
Function и модуль типа Sub. По окончании работы все модули
подключаются к основному г л а вн о м у модулю. Выделение
главного модуля происходит автоматически, если объявляется
(создается) какой либо модуль. Для создания модуля типа
Function необходимо использовать операторы DECLARE,
FUNCTION…END FUNCTION.
Оператор DECLARE
Формат оператора:
DECLARE{FUNCTION / SUB} имя [ ( [список параметров ] ) ]
Назначение оператора: неисполняемый оператор,
описывающий имя, параметры и тело процедуры Function.
Оператор размещается в н а ч ал е главного модуля.
Оператор можно не набирать, т.к. при сохранении программы на
диске он создается автоматически при наличии модуля.

109
Оператор FUNCTION ... END FUNCTION
DECLERE FUNCTION SKRUG (r)
0
´ Основной модуль
1
´Программа для вычисления площади круга
2
´Название файла программы: S_KRUG.BAS
3
´Разработчик программы–студент гр.6131-11 Кива Ю.А.
4
´Дата разработки программы- 8.09.01
5
´Условные обозначения:
6
´R- радиус круга (м)
7
´S- площадь круга кв. м.
8
Print “Значения радиуса и площади круга в кв. метрах”
9
? “r=” 3, SKRUG(3)
10
? “r=” 13, SKRUG (13)
11
? “r=” 20, SKRUG (20)
12
END
13
(FUNCTION ... END FUNCTION (функция ... конец функции)
Формат оператора:
FUNCTION имя [список параметров]
[группа операторов]
имя = выражение
END FUNCTION
имя - имя модуля длиной до 40 символов; список параметров имена простых или индексированных переменных, разделенных
запятыми. Имя индексной переменной задается с пустыми
скобками; выражение – совокупность констант, переменных,
функций, соединенных знаками арифметических действий.
Программа 3.6.1. Составить программу для вычисления
площади круга (см. Программу 3.5.4.) с использованием модуля
function.
Реализация программы на QBasic:
Запишем основной модуль программы:
Для создания модуля Function используем меню бейсика:

110
Редактирование =>Новая Function. В появившемся окне
Function SKRUG(r)
14
pi=3.14159 ′ задание константы ПИ
15
SKRUG= pi*r^2
16
End Function
17
необходимо ввести имя модуля – SKRUG. В результате
создается модуль (новый лист программы) который
первоначально имеет вид:
Function ()
End Function
Пользователю необходимо ввести после слова Function
имя модуля, в скобках записать от какого параметра зависит
выражение (модуль). В модуле function запишем значение
константы π, а вычисляемое выражение присвоим имени
модуля, строго придерживаясь формата Function.
В результате получается следующие записи:
Обсуждение программы:
Основной модуль состоит из следующих строк:
Нулевой строки, в которой с помощью оператора Declare
объявлено о создании модуля SKRUG. В качестве параметра
использован радиус круга (оператор Declare может быть создан
автоматически при записи программы на диск и при наличии
модуля SGRUG). Оператор Declare должен быть п ер в о й
строкой основного модуля.
Шапка программы записана в строках 1-5. В строках 6-8
описаны единицы физических величин, от которых зависит
решение поставленной задачи. В строке 9 на экран вывода
выводится подсказка “Значения радиуса и площади круга в кв.
метрах”. В строках 10-12 выводятся значение радиуса и
значение площади круга. Для вычисления значения площади
круга использовано обращение к модулю с именем SKRUG.
Вместо формального параметра r подставляются конкретные
значения радиусов. Поскольку под именем SKRUG записан
модуль для вычисления площади круга, значение радиуса
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
