Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Basic-методичка.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
222 Кб
Скачать
☆

Подпрограммы

Иногда бывает удобно некоторые фрагменты программы представить в виде отдельных частей, по несколько раз используемых в разных частях программы. Такие части оформляются как подпрограммы. Подпрограмма записывается следующим образом :

GOSUB N - переход на строку N

RETURN - конец подпрограммы.

При использовании оператора GOSUB N компьютер запоминает следующий после GOSUB номер строки и после завершения подпрограммы начинает дальнейшее исполнение с этого номера.

Число подпрограмм не ограничено.

Функция пользователя.

В тех случаях, когда функция не является элементарной, или у функции несколько аргументов, удобно использовать функцию пользователя: DEF FN. Имя функции всегда должно начинаться с букв FN.

DEF FN не может быть рекурсивной (не может вызывать сама себя), и должна быть определена перед пользователем.

Пример:

Пусть X и Y - натуральные числа. R - остаток от деления X на Y. Выразить R(X,Y) - R функция от X и Y.

R=X- INT(X/Y)*Y - остаток от деления X на Y

DEF FN R(X,Y)=X-Y*INT(X/Y)

В этом примере R(X,Y) - функция двух аргументов.

PRINT (SIN(47*PI/180)-COS(78*PI/180)^2)/(EXP(1.5)-SIN(13*PI/180))

Работа с файлами

Базы данных

В некоторые программы надо многократно вводить одни и те же данные, что очень утомительно. Можно сэкономить много времени используя базы данных.

DATA список констант через запятую

READ список имен переменных

RESTORE номер строки с DATA- ой для восстановления

10 DATA 1,4,-5,10,56

30 FOR I=1 TO 5

40 READ X

50 PRINT X

60 NEXT I

70 END

В результате исполнения программы мы получим на экране :

1

4

-5

10

56

10 DATA 15,4,-5,80,56,105,8,9,4,6

20 CLS

30 FOR I=1 TO 5

40 READ A, B

50 PRINT A+B

60 NEXT I

70 END

А сейчас более подробно разберем эту программу. В строке 10 мы задали список констант, а затем стали их считывать. Сначала А, затем В, затем их сумму выводим на экран. И так 5 раз.

A | 15|-5|56|8|4|

B | 4|80|105|9|6|

После выполнения программы мы получим :

19

75

161

17

10

Константы могут быть и символьными, как работать с символами я расскажу чуть позже .

Запись в файл и вывод из файла

Иногда необходимо чтобы программа записала результаты вычислений в какой-то файл на диске, пусть это будет файл proba.txt .

Для начала этот файл надо открыть, и указать зачем, к примеру, открыть файл proba.txt для ввода. Сделать это можно так:

OPEN "proba.txt" FOR OUTPUT AS# 1

AS #1 - логический номер файла, это номер произволен, т.е. Вы сами можете его выбрать.

Ввод в файл осуществляется так: PRINT #N, A,B

Где N - логический номер файла (в нашем случае это 1), А и В- имена переменных записываемых в файл.

INPUT #N,A,B- вывод из файла с логическим номером N, значений переменных А и В.

CLOSE #N- закрытие файла с логическим номером N.

После того как Вы закончите работать с файлом его следует закрыть.

Комбинированные типы.

Под переменной в языках программирования понимают программный объект (число, слово, часть слова, несколько слов, символы), имеющий имя и значение, которое может быть получено и изменено программой. При объявлении переменных можно указать тип данных. Это делается с помощью оператора DIM. В бейсике имеется несколько встроенных типов: числовые (integer, long, single, double) и стоковые (string, string *).

При работе с большим числом данных одного типа очень удобно использовать массивы. Массив, это разновидность переменной. Он дает возможность хранить сколько угодно значений одного типа под одним и тем же именем. К каждому конкретному значению массива, необходимо обращаться через числовой индекс.

При написании программы, возникает необходимость описать характеристики (свойства) некоторого объекта, представляемого и обрабатываемого в программе. Таким объектом может быть человек, некоторый вычислительный комплекс, письмо, посылаемое по почте и т.д. Во всех подобных случаях свойства объекта представляются значениями различных типов и поэтому для их описания не могут быть использованы массивы.

Для описания объекта «ученик» могут понадобиться, например, следующие характеристики:

  • фамилия, имя и отчество (строки);

  • возраст (integer);

  • пол (строка);

  • класс (integer);

  • буква класса (символ); и т.д.

Для представления такой разнородной, но логически связанной информации удобно использовать комбинированный тип. Необходимо отметить, что в данном случае определенные компоненты комбинированного типа, ввиду их различной природы, не могут идентифицироваться порядковыми номерами (индексами), как в массивах, поэтому для обозначения компонентов используются идентификаторы (имена). Таким образом, описание комбинированного типа представляет собой список описаний его элементов; каждое описание похоже на описание простой переменной. Для примера, приведенного выше, описание комбинированного типа PUPIL (ученик) может выглядеть следующим образом:

TYPE Pupil

fio AS STRING * 20

age AS INTEGER

sex AS STRING * 6

class AS INTEGER

classname AS STRING * 1

END TYPE

Определив собственный тип данных, вы можете использовать его для объявления переменных этого типа.

DIM Schoolchildrens AS Pupil

DIM Group(1 TO 25) AS Pupil

Доступ к компонентам (свойствам) переменной пользовательского типа осуществляется путем указания точки после имени переменной.

Schoolchildrens.fio = "Иванов Иван"

Schoolchildrens.age = 15

Schoolchildrens.sex = "male"

Schoolchildrens.class = 10

Schoolchildrens.classname = "А"

PRINT Schoolchildrens.fio, Schoolchildrens.age, Schoolchildrens.sex, Schoolchildrens.class, Schoolchildrens.classname

Пример простой программы:

REM использование комбинированных типов

REM описание типа ученик

TYPE Pupil

fio AS STRING * 20

age AS INTEGER

sex AS STRING * 6

class AS INTEGER

classname AS STRING * 1

END TYPE

REM объявление массива из 3 элементов типа ученик

DIM Group(1 TO 3) AS Pupil

Group(1).fio = "Иванов Иван"

Group(1).age = 15

Group(1).sex = "male"

Group(1).class = 10

Group(1).classname = "А"

Group(2).fio = "Петрова Маша"

Group(2).age = 14

Group(2).sex = "female"

Group(2).class = 10

Group(2).classname = "Б"

Group(3).fio = "Сидоров Вася"

Group(3).age = 16

Group(3).sex = "male"

Group(3).class = 11

Group(3).classname = "В"

REM выводим на экран учеников 10 класса

FOR i=1 TO 3

IF Group(i).class = 10 THEN PRINT Group(i).fio

NEXT i

END

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