Главная » Bascom-8051, Basic, Железо » Программирование с использованием индексированных переменных Bascom

0

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

‘————————————————— ‘ Использования массивов индексированные переменных

‘—————————————————

Dim Ni As Const 5               ‘объем массива

Dim Nm As Byte , Jm As Byte , Jmd As Byte , Tmp As Byte Dim Stmp As String * 8

Dim Ar(ni) As Byte              ‘массив

Dim Sa(ni) As String * 8        ‘строковый массив

For Nm = 1 To Ni                ‘заполнить массив

Ar(nm) = Lookup(nm , Da)

‘   Sa(nm) = Lookupstr(nm , Ds) ‘это работает только с первым элементом

Stmp = Lookupstr(nm , Ds) : Sa(nm) = Stmp ‘поэтому нужно через буфер

Next

‘сортировка методом "пузырька" – наибольшее (или наименьшее) всплывает

For Nm = 2 To Ni              ‘начинаем сортировку чисел с начала

For Jm = Ni Downto Nm       ‘проверяя пары соседних чисел

Jmd = Jm – 1              ‘формируем второй указатель

‘    If Ar(jmd) < Ar(jm) Then ‘в порядке убывания значений

If Ar(jmd) > Ar(jm) Then  ‘в порядке возрастания значений

Tmp = Ar(jmd) : Ar(jmd) = Ar(jm) : Ar(jm) = Tmp  ‘поменять местами

‘      Swap Ar(jmd) , Ar(jm)  ‘с индексированными переменными не работает!

End If

Next Next

‘посмотрим, что получилось

For Nm = 1 To Ni : Print Sa(nm) ; Ar(nm) : Next End

‘байтовые числовые значения, записываемые в массив для сортировки

Da:

Data 0 , 12 , 222 , 45 , 6 , 78 , 4 , 5 , 99 , 45 , 146 , 100 ‘строковые значения, записываемые в массив

Ds:

Data "1=" , "2=" , "3=" , "4=" , "5=" , "6=" , "7=" , "8=" , "9=" , "10="

Источник: М.Л.Кулиш, СПРАВОЧНИК ПО ПРОГРАММИРОВАНИЮ BASCOM-8051, Краснодар 2001

По теме:

  • Комментарии