Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
книга1(полный конспект).docx
Скачиваний:
57
Добавлен:
23.12.2018
Размер:
49.16 Mб
Скачать

13.12.3. Простые операторы языка MapBasic.

Алгебраические операторы языка MapBasic соответствуют операторам языка С. Исключение составляют: деление нацело , остаток от деления Mod ( в языке С - % ), возведение в степень - .

В MapBasic имеются операторы работы с датами : дата + целое число -- более поздняя дата , дата - целое число -- более ранняя дата , дата - дата -- значение типа Iuteger: длительность периода .Операторы сравнения аналогичны операторам языка С , только оператор равенства обозначается через = , а неравенство через . Расположение в диапазоне описывается оператором Between...And. Логические операторы аналогичны таким операторам других языков . Это- And, Or, Not. Географические операторы : Contains (содержит ) , Contains Part (содержит часть ), Contains Entire (содержит полностью), Within ( центроид первого объекта содержит второй объект), Entirely Within (второй объект полностью содержит первый объект), Partli Within (второй объект содержит часть первого), Intersects ( два объекта имеют общую точку - пересекаются ).

Приоритеты операторов языка MapBasic следующие: скобки, возведение в степень, отрицание, умножение, деление, Mod, целочисленное деление, сложение, вычитание, географические операторы, операторы сравнения Like, Not, And, Or.

13.12.4. Управляющие операторы и циклы языка MapBasic .

В MapBasic имеются следующие управляющие операторы.

  1. If...Then...Else, соответствующий оператору if-else языка С. Конструкция Else If соответствует if-else языка С.

  2. Do Case (выражение)

Case константа последовательность операторов.

Данный управляющий оператор соответствует оператору switch языка С.

  1. Оператор Go to аналогичен оператору go to других языков.

Операторы цикла.

а) For i=1 to N

последовательность операторов цикла

Next.

Данный оператор цикла соответствует оператору For языка С.

б) Do

последовательность операторов цикла

Loop While ( условие)

соответствует оператору цикла языка С Do - While .

в) While (условие)

последовательность операторов цикла

Wend.

г) Do While (условие)

последовательность операторов цикла

Loop.

Операторам цикла в и г соответствует оператор While языка С.

13.12. 5. Процедуры и функции.

В основном процедуры и функции MapBasic соответствуют функциям языка С. Их прототипы объявляются в начале программы, а вызов в программе осуществляется так:

Call имя процедуры (параметры)

Call имя функции (параметры).

Сами процедуры и функции располагаются в поле основной программы. Передача параметров осуществляется также как и в языке С и других языках. Возможно обращение к процедурам и функциям и без параметров. В отличие т процедуры функция возвращает значения.

13.13. Предложения по составлению программы на языке MapBasic.

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

  1. Составление программы на языке MapBasic следует начинать с программирования главного меню как средства пользования. Пусть необходимо запрограммировать меню «Инвентаризация и межевание земель» с подменю Инвентаризация земель", "Межевание земель"((рис.13.59).

Рис.13.59

Для этого в MapBasic существуют операторы Greate Menu u Alter Menu . Основная программа Main , реализующая это меню , главное в программе , будет иметь вид :

Include "Mapbasic.def"

Declare Sub Main

Declare Sub Invent

Declare Sub Mejevan

Sub Main

Create Menu

"Инвентаризация и межевание земель"

As

"Инвентаризация земель" Calling Invent,

"Межевание земель" Calling Mejevan

Alter Menu Bar Add "Инвентаризация и межевание земель"

End Sub

Здесь оператором Calling осуществляется вызов процедур: Invent u Mejevan, соответствующих командам меню «Инвентаризация земель», «Межевание земель».

Настоящая программа работать не будет, пока не будут введены эти процедуры. Текст процедуры Invent представлен ниже. Его последовательными фрагментами будем излагать возможности MapBasic. В начале следуют операторы Sub, Dim, определяются значения переменных типа String.

'Процедура Invent

Sub Invent

Dim Pol1(100) as object

Dim Pol,yf as object

Dim Zona,Nkvart,Nuch,Nomuch,Nzap,Nmz,j,i,i1 as Smallint

Dim Gor,Namisp1,Namisp2 as String

Dim Kadmas as Smallint,winnum As Integer

Dim Nt(50),Nomzn(50),Nomuch1 as Smallint

Dim x(50),y(50),xl(50),yl(50),a,b,c,d as Float

'Dim fio,adr,vid,nsv as String

Dim xc,yc,xm,ym,xmax(100),ymax(100),ymin(100),xmin(100) as Float

Dim xmax1,ymax1,xmin1,ymin1 as Float

Dim Reestr1 as string

Dim sobstv,kadnom1,fio1,adr1,vid1,nsv1,pl1,rab,rab2 as string

Reestr1="Реестр землевладельцев(землепользователей)"+Chr$(10)+

"в кадастровом квартале"

kadnom1="Кадастровый номер"+Chr$(10)+

"землевладельца(землепользователя)"

fio1="ФИО владельца(пользователя)"

adr1="Местоположение землевладения,землепользования(адрес)"

vid1="Вид предоставления земли"

Nsv1="Номер свидетельства"

Pl1="Площадь"

Поскольку будет создаваться база данных « Реестр землепользователей» с именем Reestr, то для этого применяется оператор Greate Table ... File.

'Создать таблицу "Реестр..."

Create Table Reestr

( kadnom SmallInt,

fio char(30),

adr char(20),

vid char(10),

Nsv char(7),

Pl Float )

File "C:\MAPINFO\Reestr.tab"

В нем kadnom, fio, adr, vid, Nsv, Pl - атрибуты базы данных Reestr. Каждому атрибуту определен тип: Smallint, char, Float и другие. После слова File следует спецификация файла, в котором будет находиться база данных.

Базы данных в MapInfo определены как таблицы, а атрибуты как поля.

Данной базе данных соответствует карта земельных участков, заданных координатами поворотных точек границ. Имя карты соответствует имени таблицы. Она создается оператором Greate Map For... . Oператором Set Coord-Sys Nonearth Units «m» устанавливается плоская прямоугольная система координат , единицы измерений - метры. Оператором Bounds тут же определяются минимальные и максимальные значения координат для данной карты.

Create Map For Reestr

Set CoordSys Nonearth Units "m"

Bounds(4000,-1700)(5000,-1600)

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

Ivanov Petrov

Novgorod 4 5

  1. 2

  1. 4 Diskov

1 50 50

2 150 50

3 100  100

4 50  100

2 4 Karpatin

1 50 100

2 100 100

3 100 150

4 50 150

Открытие файла осуществляется оператором Open File ... For Input as ... , ввод данных оператором Input ... построчно.