- •Введение
- •1. Общие сведения о микроэвм. Выбор языка программирования
- •1.1. Общие сведения о микроЭвм.
- •1.2. К выбору языка программирования
- •2. Системы счисления микроэвм. Двоичная арифметика. Разрядные сетки. Прямой и дополнительный коды
- •2.1. Системы счисления
- •2.2. Двоичная арифметика
- •2.3. Разрядные сетки микроЭвм
- •2.4. Прямой и обратный коды
- •3. Загрузка языка basic – интерпретатора. Основные понятия языка. Получение листинга простейшей программы
- •3.1. Загрузка языка basic – интерпретатора
- •3.2. Основные понятия языка basic
- •3.2.1. Алфавит языка
- •3.2.2. Условные обозначения
- •3.2.3. Константы
- •3.2.4. Переменные
- •3.2.5. Стандартные функции
- •3.2.6. Арифметические выражения
- •3.2.7. Строки и операторы
- •3.3. Оператор remark
- •3.4. Оператор присваивания
- •3.5. Операторы окончания программы
- •3.6. Команда выполнения программы
- •3.7. Отладка и редактирование программы
- •3.8. Основные команды языка gw-basic
- •4. Программирование линейных вычислительных процессов
- •4.1. Линейный вычислительный процесс
- •4.2. Оператор печати для вывода информации на экран
- •4.3. Вывод информации на печатающее устройство
- •4.4. Операторы задания начальных значений и ввода данных
- •4.5. Оператор восстановления блока данных
- •3Адание 2.
- •5. Программирование разветвляющихся вычислительных процессов
- •5.1. Разветвляющийся процесс
- •5.2. Выражения отношений
- •5.3. Логические функции
- •5.4. Приоритет выполнения всех операций
- •5.5. Операторы безусловного перехода
- •5.6. Оператор условного перехода
- •5.7. Оператор on
- •5.8. Решение нелинейных уравнений
- •5.8.1. Метод простой итерации
- •5.8.2.Метод Ньютона
- •5.8.3.Метод деления пополам
- •6. Диалоговый режим работы. Программирование циклических процессов
- •6.1. Диалоговый режим
- •6.2. Оператор input
- •6.3.Циклические вычислительные процессы
- •6.4.Итерационные циклы
- •6.5. Циклы с параметром
- •6.6. Операторы for и next
- •6.7. Вложенные циклы
- •6.8. Операторы while – wend
- •6.9. Операторы do – loop
- •7. Обработка массивов
- •7.1.Массивы
- •7.2. Оператор dim
- •7.3. Обработка массивов
- •7.4. Ввод массивов
- •7.5. Вывод массивов
- •7.6. Использование массивов в вычислениях
- •7.7. Функция tab
- •8. Использование массивов в вычислениях
- •9. Функции и подпрограммы пользователя
- •9.1. Функции пользователя
- •9.2. Подпрограммы пользователя
- •10. Графические средства языка basic
- •10.1. Передний план, фон и окантовка
- •10.2. Режимы работы экрана
- •10.3. Координаты точек на экране
- •10.4. Оператор color в текстовом режиме
- •10.5. Оператор color в графическом режиме
- •10.6. Оператор pset
- •10.7. Оператор line
- •10.7.1 Построение ломаных линий
- •10.10. Оператор circle
- •10.10.1. Построение дуг окружностей
- •10.10.2. Построение радиусов
- •10.10.3. Построение эллипсов
- •10.11. Оператор paint
- •10.12. Оператор draw
- •10.12.1. Команды оператора draw
- •10.13. Построение графиков
- •11. Построение динамических изображений
- •Приложение 1
- •2.3. Циклический процесс.
- •Приложение 2
9. Функции и подпрограммы пользователя
9.1. Функции пользователя
Помимо стандартных функций (см. табл. 3.1) в программе пользователь может определить и далее использовать другие (нестандартные) функции. Для определения функции пользователем используется оператор DEF FN. Его синтаксическая структура:
DEF FNv[тип](X1, X2, …) = E,
где DEF(от DEFINE) - определить; FN(от FUNCTION) – фукция; v – имя функции, которое, вместе с FN и символами %, $ и др., не должно превышать 40; квадратные скобки указывают на возможность выбора типа функции; X1, X2 – простые переменные – формальные аргументы функции; E – арифметическое выражение, по которому вычисляется функция.
Арифметическое выражение в правой части может содержать (но не обязательно) формальные аргументы X1, X2,… другие переменные, общие для всей программы, а также любую комбинацию формальных аргументов в других переменных программы. Оператор DEF FN является описательным и относится к невыполняемым операторам и должен располагаться в программе до первого использования определяемой им функции, целесообразнее в начале программы.
Пример: DEF FNY(X, Y) = A * X ^ 2 + Y ^ 3
Здесь функция пользователя определена для вычисления выражения при двух формальных параметрах вещественного типа.
Вычисление функции, описанной оператором DEF FN, осуществлялся при обращении к ней по её имени с указанием в скобках фактических параметров, при которых она должна быть вычислена. В частном случае имена фактических и формальных аргументов могут совпадать.
Пример: Вычислить FNY: а) при переменных А и В; б) возвести в 3 степень при X=1, Y=0.
нс Y1 = FNY(A, B)
…
Y2 = FNY(1, 0) ^ 3
Следует помнить, что количество, порядок следования и тип фактических переменных должен соответствовать количеству, порядку следования и типу формальных переменных.
При обращении к функции пользователя фактические параметры передаются в арифметическое выражение, заменяя формальные значения. Обращение заменяется вычисленным значением.
Сложное выражение можно разбить на несколько простых, каждое из которых определяется самостоятельной функцией пользователя.
9.2. Подпрограммы пользователя
Когда некоторая совокупность действий должна выполняться в нескольких различных местах программы, обычно нежелательно каждый раз повторять группу операторов, реализующих эти действия. Чтобы избежать повторений, указанную группу операторов можно записать в программе один раз и обращаться к ней, когда в этом возникает необходимость. Обособленную группу операторов, которую можно выполнять многократно, обращаясь к ней из различных мест программы, называют подпрограммой. Подпрограмма – это самостоятельная программная единица, которая находится под управлением основной программы.
Подпрограммы могут быть внутренними, то есть подпрограмма привязана к основной программе, и внешними, которые располагаются на каком-либо носителе информации.
Здесь будут рассматриваться внутренние подпрограммы.
Для подпрограмм характерными являются описание и обращение.
Описание внутренней подпрограммы может начинаться с любой строки, но нагляднее (особенно при большом количестве подпрограмм) с комментария, который отражает функциональную сущность подпрограммы. Далее следуют операторы для выполнения подпрограммы. Подпрограмма должна обязательно заканчиваться оператором, который осуществляет возврат в основную программу. Для этого используется оператор со следующей синтаксической структурой:
нс RETURN, где
Return – ключевое слово “вернуться”.
Структура описания подпрограммы :
нс <комментарий>
… операторы
… подпрограммы
RETURN,
Количество операторов RETURN может быть любым.
В QB и TB можно использовать номер строки или метку.
Обращение к подпрограмме осуществляется в основной программе по формату:
GOSUB нс (или метки),
где GOSUB – ключевое слово “идти к”; номер строки или метка указывают, к какой подпрограмме обращается основная программа. Для подпрограмм желательно использовать большие номера, например, начиная с 1000. Подпрограммы располагаются в конце основной программы и должны обязательно отделяться от основной программы оператором STOP для GB, или оператором END для QB и TB.
Правило выполнения подпрограммы:
Когда в основной программе встречается обращение, основная программа передаёт управление подпрограмме. После выполнения подпрограммы управление передаётся снова в основную программу к оператору, следующему за GOSUB, а обращение замещается вычисленным значением или остаётся в подпрограмме, так как область памяти для основной программы и подпрограмм одна и та же, а поэтому все вычисленные в подпрограмме значения доступны для основной программы. Однако при повторном обращении к той же подпрограмме вычисленные значения потеряются. В таком случае после 1-го обращения к подпрограмме вычисленные значения должны сохраняться в основной программе, присвоив их каким-либо переменным.
Подпрограммы могут содержать обращения к другим подпрограммам. В этом случае говорят о вложенности подпрограммы, которая несколько отличается от вложенности циклов или вложенности скобок в выражении. В случае подпрограмм вкладываются не сами подпрограммы, а вызывающие их операторы GOSUB.
Вид вложенности, когда подпрограмма обращается к самой себе, называется рекурсией. Понятие рекурсии охватывает также ситуацию, при которой первая подпрограмма вызывает вторую, а та, в свою очередь, вызывает первую.
Задание 1.
Составьте программу вычисления выражений, приведенных в табл.9.1, с использованием нестандартной функции.
Задание 2.
Составьте программу вычисления этого же выражения с использованием подпрограммы.
Таблица 9.1. Список заданий
Вариант |
Вычислить |
Данные |
1 |
||
2 |
|
|
3 |
||
4 |
|
|
5 |
|
|
6 |
|
|
7 |
|
|
8 |
||
9 |
||
10 |
|