![]() |
Работа с функциями.Date: 2015-10-07; view: 380. Глава II. Решение задач. Функции пользователя. Помимо стандартных функций (см. п. 2.3.) в программе можно определить и далее использовать другие (нестандартные) функции – функции пользователя. Язык Бейсик позволяет вам создавать собственные функции. Функция может быть определена одной строкой (оператор-функция) или несколькими строками (подпрограмма-функция). DEF FN имя [(список параметров)] = выражение это определение оператора-функции. Здесь список параметров может включать не более 16 параметров. DEF FN имя [(список параметров)] описание переменных операторы [EXIT DEF] .... [FN имя = выражение] END DEF (это определение подпрограммы-функции). Обращение к функции записывается там, где нужно получить ее значение. При этом параметры заменяются их фактическими значениями. Например, DEF FNF (x,y) = x * x + y * y a = 3 : b = 4 P = FNF (a,b) или P = FNF (3,4) Функция возвращает одно значение, тип которого определяется именем функции. Определение функции может располагаться в любом месте программы (обычно в начале или в конце). Например: F = FNa (1.5) PRINT F DEF FNa (x) FNa = x*x END DEF END или F = FNa (1.5) PRINT F END DEF FNa (x) FNa = x*x END DEF В результате будет напечатано 2.25. Список параметров оператора-функции может включать только имена переменных.
Задачи для самостоятельной работы.
4.1 Функция INKEY$. Для ввода чисел и символьных данных мы пользуемся оператором INPUT, который навязывает строгие правила: ввод каждого символа отображается на экране, вводимые данные разделяются запятой завершив ввод надо нажать {Enter}. Однако с помощью клавиатуры мы можем посылать сигналы всевозможных служебных клавиш, используя их в текстовых и графических редакторах, играх и т.п. При программировании на Бейсике достаточно простых вычислительных или развлекательных задач возникает потребность в средствах контроля над клавиатурой – как по своему интерпретировать любой сигнал, поступающий от любой клавиши? Универсальным средством для этого является функция INKEY$. Сигнал, посылаемый в компьютер при нажатии любой клавиши , перехватывается системными программами – MS-DOS и драйверами клавиатуры. Они представляют сигнал в виде целого числа и помещают его в память – в буфер клавиатуры и «забывают» о нем. Любая работающая программа может извлекать символ из буфера. Функция INKEY$ считывает символ из буфера клавиатуры и возвращает его. При этом возможны 2 ситуации: 1) буфер пуст (клавиши не нажимались) – функция возвращает пустую строку («»); 2) нажата клавиша – функция возвращает строку, содержащую символ, считанный с клавиатуры (то есть не ждет ввода в отличии от INPUT ). Функция INKEY$ не приостанавливает выполнение программы и вы сами управляете процессом извлечения сигналов клавиатуры. Простейшее применение этой функции – приостановить программу до нажатия любой или заранее определенной клавиши. Например: ?”Нажмите любую клавишу” 1 IF INKEY$=”” THEN 1 или ? “Нажмите клавишу M” 1IF INKEY$<>”M” THEN 1 Эту часть удобно оформить как подпрограмму Функции преобразования символьных величин Часто совместно с INKEY$ используют функции ASC и CHR$. Каждому символу соответствует 8-битовое обозначение. Так можно обозначить 256 символов, то есть каждому символу можно дать десятичный код от 0 до 255. Была составлена ASCII-таблица (American Standard Coding for Information Interchange – Американский Стандартный Код для Обмена Информацией). Первая половина этой таблицы от 0 до 127 стандартизирована, а вторая уникальна для каждой страны. (см. Приложение 3). Функция ASC выдает десятичный код первого символа в символьном выражении. ASC(символьное выражение) Например: ?ASC(«Q») ?ASC(«A») На экран выводится: 81 65
Функция CHR$ выдает символ, соответствующий заданному коду. CHR$(целое число) Например: ? СHR$(65) ? CHR$(81) На экран выводится: А Q
Пример: управляемый рисунок. По нажатию клавиш на клавиатуре окружность перемещается в заданном направлении. Выберем следующие клавиши:
C CLS:SCREEN 9 X=300:Y=200:K=0 CIRCLE(X,Y),2,2 1 A$=INKEY$ IF A$=”” THEN 1 CIRCLE(X,Y),2,16 IF A$=”R” THEN Y=Y-1 IF A$=”C” THEN Y=Y+1 IF A$=”D” THEN X=X-1 IF A$=”F” THEN X=X+1 К=К+1 IF K<100 THEN 1 END
|