граммы более экономичен как с точки зрения использования памяти компьютера, так и с точки зрения быстродействия.)

QBasic организует в ОЗУ (логически, а не физически!) разные области памяти для хранения различного вида данных. Для хранения констант используется та область памяти, в которую можно записать данные только при помощи команд записи констант. Поименованные переменные числового типа и строки фиксированной длины хранятся по тем адресам, которые получаются функциями (1.16,1.17). Для строки переменной длины эти функции указывают на ту же область памяти, но на самом деле по этим адресам хранится указатель начального адреса и длины строки. Так что строки переменной длины хранятся отдельно. Результаты промежуточных вычислений (например, значения выражений до их присваивания) хранятся еще в одной области памяти, называемой стеком. Специальные области памяти отведены для статического и динамического хранения массивов. Некоторые особенности использования статического и динамического хранения связаны также с обменом данными между основной программой и вызываемыми ею функциями и процедурами или с передачей данных другим программам.

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

БТОЗ ({numericexpression¦stringexpression$}) (1.25),

которая для первого варианта по значению numericexpression выдает

-1 — свободный объем памяти для числового массива,

-2 — свободный объем памяти стека,

любое другое свободный объем памяти для строк, а для второго варианта stringexpression$

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

В среде QBasic для экономии памяти следует как можно чаще использовать временное хранение промежуточных результатов. В программировании разделение данных по признаку необходимости их постоянного (на все время работы программы) или временного хранения привело к концепции статического и динамического использования памяти. Для транслируемых программ различие между этими двумя способами хранения обычно разъясняют так: если адрес задан до работы программы, то данные хранятся статически, а если адрес вычисляется во время работы программы — динамически. Для интерпретируемых программ все адреса вычисляются во время работы интерпретирующей программы, так что признак постоянного/временного хранения является более общим.

Концепция динамического хранения информации наиболее эффективно реализована во всех языках высокого уровня при вычислении выра-