Скачиваний:
109
Добавлен:
21.01.2014
Размер:
2.38 Mб
Скачать

4. Контрольные вопросы

  1. Назначение и синтакис операторов цикла ?

  2. Назначение и синтакис условных операторов ?

Вопросы по процедуре выполнения индивидуального задания.

5. Библиографический список

  1. Бобровский С. Программирование на языке QBASIC для школьников и студентов. — М.: Десс; Инфорком-Пресс, 1999. - 208 с.

  2. Зельднер Г.А. Программируем на языке QuickBASIC 4.5. - М: ABF, 1996. - 432 с.

  3. Введение в программирование на языке Microsoft BASIC: Учебное пособие / Ю.Я. Максимов, С.В. Осипов, А.В. Потемкин, Щ.С. Симоненков. - М.: ”Диалог-МИФИ”,1991. - 176 с.

Министерство образования

Российской Федерации

Тульский государственный университет

Кафедра “Инструментальные и метрологические системы”

Информатика

ЛАБОРАТОРНАЯ РАБОТА 13

Создание функций пользователя и подпрограмм

для студентов очного обучения

Тула 2000 г.

1. Цель и содержание работы

Целью работы является изучение приемов унификации вычислений в пределах одной программы.

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

2. Порядок выполнения работы

                  1. Изучить теоретическую часть.

                  1. Получить задание у преподавателя.

                  1. Выполнить задание.

                  1. Оформить отчет.

                  1. Защитить работу.

3. Теоретическая часть

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

GOSUB

RETURN

Операторы

Выполняют вызов подпрограммы и возврат из нее.

GOSUB метка_1

[операторы]

RETURN [метка_2]

  • метка_1 - метка первой строки вызываемой подпрограммы;

  • метка_2 - метка строки, в которую возвращается управление после выхода из подпрограммы.

  • Если не указана метка строки для RETURN, то выполнение программы продолжится с оператора, стоящего за GOSUB (при вызове подпрограммы) или там, где произошло событие (при обработке событий).

  • Вызвать подпрограмму возможно любое количество раз, однако сама подпрограмма вызвать себя (быть рекурсивной) не может. Одна подпрограмма может иметь несколько операторов RETURN.

  • GOSUB и RETURN должны находится в одном модуле. RETURN не может использоваться для передачи управления из одной процедуры типа SUB или FUNCTION другой процедуре.

  • Операторы SUB и FUNCTION представляют собой более удобную альтернативу для подпрограмм GOSUB. Использовать GOSUB RETURN имеет смысл только внутри процедур SUB и FUNCTION, при обращении к одному фрагменту текста, если выделение фрагмента в отдельную процедуру нецелесообразно.

  1. FOR i% = 1 TO 20

GOSUB Square

NEXT i%

END

Square:

PRINT i%, i% * i%

RETURN

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

Если данные, которые вы используете в программе, необходимо сгруппировать по какому-либо признаку, то для этого очень удобно использовать пользовательский тип данных (записи). Он составляется из простых типов данных (числовых и символьных) и занимает в памяти столько байт, сколько занимают в сумме каждый из составляющих его элементов.

DEF FN

Оператор

Определяет функцию как пользовательскую.

DEF FNимя[(параметры)] = выражение ’Линейная форма

DEF FNимя[(параметры)] ‘ Блочная форма

[блок_операторов]

FNимя = выражение

[блок_операторов]

EXIT DEF]

END DEF

  • имя - имя переменной, до 40 знаков. Имя комбинируемое с FN, является именем функции. Имя может иметь знак определения типа, указывающий на тип возвращаемого значения;

  • параметры - список переменных, разделенных запятыми. Аргументы передаются по значению в следующем формате:

перемен[( )] [AS тип] [, перемен[( )] [AS тип]]...

  • перемен - имя переменной Basic.

  • тип - тип данных переменной (INTEGER, LONG,SINGLE, DOUBLE, STRING или тип данных, определенный пользователем);

  • выражение - выражение, вычисляющее результат функции. В линейном синтаксе является телом функции. Если нет выражений присвоенных имени функции, по умолчанию возвращается “0” для числовой функции и пустая строка - для символьной.

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

  • DEF FN присущи следующие особенности. Она не может:

  • быть вложенной или рекурсивной;

  • не поддерживает массивы, записи или символьные строки фиксированной длины;

  • быть вызвана из модуля в котором она не определена т.е. необходимо определение DEF FN в каждом модуле, или использование включаемого (INCLUDE) файла с ее определением;

  • однако, DEF FN позволяет передавать любой числовой аргумент, поскольку она не проверяет его тип.

  • Для выхода из блочной формы DEF FN используется оператор EXIT FN.

  • Вследствие перечисленных недостатков имеет смысл использовать более современную конструкцию FUNCTION ... END FUNCTION.

  1. DEF fns$ (b) = LTRIM$(STR$(b)) ‘Пример преобразования целых чисел в сим-

b = 200 : PRINT “>”; fns$ (b); “<” ‘вольную строку

TYPE

Оператор

Определяет тип данных, содержащий один или несколько элементов.

TYPE тип_пользов

имя_элемента AS тип

[имя_элемента AS тип]

END TYPE

  • тип_пользов - имя определяемого типа данных. Имя может быть длиной до 40 символов и должно начинаться с буквы. Допустимые символы: A-Z, 0-9 и точка (.);

  • имя_элемента - элемент типа данных определенных пользователем;

  • тип - Тип элемента (INTEGER, LONG, SINGLE, DOUBLE, STRING или тип данных (запись), определенный пользователем).

  • Используйте DIM, REDIM, COMMON, STATIC или SHARED для создания переменной определенного пользователем типа данных (причем в главном модуле).

  1. TYPE Card

Suit AS STRING * 9

Value AS INTEGER

END TYPE