1 Федеральное агентство морского и речного транспорта РФ Морской государственный университет им. адм. Г. И. Невельского С. Г. Фадюшин КОМПЬЮТЕРНЫЕ ТЕХНОЛОГИИ В СУДОВОЖДЕНИИ Часть 2 Учебное пособие Рекомендовано методическим советом Морского государственного университета в качестве учебного пособия для специальности 240200 «Судовождение» Владивосток 2005 2 УДК 656.61 + 639.2.053 Фадюшин С. Г. Компьютерные технологии в судовождении: Учеб. пособие. Владивосток: Мор. гос. ун-т, 2005. 79 с. Рассматриваются основные принципы решения задач судовождения на персональных компьютерах с использованием таких пакетов программ, как Mi- crosoft Access, Easy Trace; языка программирования Visual Basic и языка разметки гипертекста HTML. Материал излагается в виде лекций и поясняется на примере программы-приложения ЭКС «Кадет». Пособие завершается заданиями на прак- тические занятия. Предназначено для курсантов и студентов специальности 240200 «Судовож- дение» и судоводителей морского флота. Ил. 11, табл. 2, прил. 2, библиогр. 20 назв. Рецензенты: А. Н. Солодянкин, канд. техн. наук, доцент кафедры судовождения ДВГТРУ; Е. Н. Бакланов, начальник УТЦ кафедры АПС и ТСС ДВГТРУ Фадюшин С. Г., 2005 Морской государственный университет им. адм. Г. И. Невельского, 2005 3 ПРЕДИСЛОВИЕ Техническая культура современного производства, использование высоких технологий на базе персональных электронных вычисли- тельных машин (ПЭВМ) остро потребовали от инженера компьютер- ную грамотность и умение решать с помощью ПЭВМ различные про- изводственные задачи. С появлением ПЭВМ возникла человеко-компьютерная система практически с неограниченными возможностями. Однако решение технических задач в рамках этой системы, например, задач навигации с помощью электронных картографических систем, требует тщатель- ной предварительной подготовки и творческого подхода. В этой связи начали разрабатываться специальные технологии, в том числе и в су- довождении. Так появились компьютерные технологии в судовожде- нии, и назрела необходимость обучения курсантов и студентов по но- вой дисциплине «Компьютерные технологии в судовождении». Настоящее учебное пособие является продолжением одноимѐнно- го пособия «Компьютерные технологии в судовождении. Часть 1» [20], где в основном рассматривается работа с текстовыми судовыми документами на компьютере. В этом учебном пособии основное вни- мание уделено вопросам использования готовых программ и разра- ботки программ-приложений для решения задач из области навига- ции. При работе над учебным пособием учитывались следующие ас- пекты развития информационных технологий: Основой компьютерных технологий является язык программи- рования. Для компьютерных технологий в судовождении таким языком может служить Basic. В учебном пособии рассматрива- ется одна из современных разновидностей этого языка Visual Basic. К настоящему времени накоплен огромный объѐм информации по судовождению в электронном виде, и для его хранения и пе- реработки нужны базы данных. В этой работе рассматривается база данных Access. На сегодняшний день актуальным вопросом в судовождении является разработка электронных навигационных карт. В учеб- ном пособии этому вопросу также уделено внимание. Бурное развитие Internet привело к широкому применению для информационного обмена технологии World Wide Web. Ин- формация играет важную роль для обеспечения безопасности 4 плавания судна. Вот почему один из разделов настоящего учебного пособия посвящѐн Web-технологии. Современные морские суда представляют собой сложные техни- ческие системы. Решить многие задачи, связанные с расчетом и про- ектированием процессов управления судном, можно только используя персональный компьютер, математические модели этих процессов и специально разработанные прикладные программы. Разработка прикладных программ для компьютерного моделиро- вания судовых процессов очень трудоемкий процесс, его невозмож- но осилить без современных интегрированных сред разработки при- ложений, например, Visual Basic (VB). Однако эта среда до сих пор мало используется в учебном процессе, так как пособий по еѐ изуче- нию недостаточно. Настоящее пособие ставит задачу ликвидировать этот пробел и дать курсантам специальности «Судовождение» современный мощ- ный инструментарий для разработки приложений. Среда Visual Basic состоит из интегрированной среды разработки IDE (Integrating Devel- opment Environment), языка программирования, текстового редактора, библиотеки. В пособии даны элементы языка программирования Vis- ual Basic и изложены основные принципы программирования с ис- пользованием методов и событий. В пособии на примере учебной программы, условно названной ЭКС «Кадет», показаны принципы разработки VB-программ моде- лирования процессов управления движением судна и их элементов. Листинги программы курсанты могут использовать как для приобре- тения навыков программирования в интегрированной среде VB, так и для их модернизации, а модули программ можно применять при раз- работке новых. Должен ли современный судоводитель уметь составлять компью- терные программы для решения задач, которые ставит перед ним практика? Этот вопрос, зародившись ещѐ в ту пору, когда появились первые программируемые микрокалькуляторы, остаѐтся актуальным и по сей день. Для современного инженера-судоводителя владение хотя бы одним языком программирования – это не только производствен- ная необходимость, но и часть его культурного развития. Компьютерные языки программирования необходимы для обще- ния и передачи информации. Их знание и владение ими требуются со- временному человеку, как знание обычных языков: русского, англий- ского…, как знание языка музыки – нот. И, конечно же, общение на языке программирования невозможно без компьютера. ПЭВМ – 5 «скрипка», на которой искусный программист, как профессиональный музыкант, создаѐт свои мелодии-программы. В этой связи интересно отметить, что первым персональным ком- пьютером считается машина под названием «Альтаир-8800». Еѐ раз- работала в 1974 году небольшая фирма Micro Instrumentation and Telemetry System (MITS), расположенная в городе Альбукерке, кото- рую возглавлял отставной офицер ВВС США энтузиаст электроники Эдвард Робертс. По современным понятиям это была довольно при- митивная машина. Собранная на процессоре Intel 8080, с объѐмом па- мяти 256 байт, она не имела ни клавиатуры, ни экрана. Данные вводи- лись в двоичном коде с помощью выключателей, результаты (в дво- ичном коде) считывались по мигающим лампочкам. Однако эта ма- шина имела ошеломляющий коммерческий эффект, настолько лю- дям хотелось иметь собственную вычислительную машину и зани- маться программированием. Владелец Microsoft Билл Гейтс также начал свою карьеру про- граммистом в MITS, разрабатывая программу, которая реализовывала язык Бейсик для компьютера «Альтаир». Таким образом, ускорить решение многих задач судовождения так, чтобы идти в ногу со временем, всегда находясь на гребне волны, можно, лишь научив инженера-судоводителя самостоятельно разраба- тывать математические модели систем судовождения, алгоритмы и программы их расчѐта, используя при этом вычислительную технику и свой творческий потенциал, т. е. обучив компьютерным технологи- ям в судовождении. В этом и заключается цель настоящего учебного пособия. Содержание работы соответствует учебной программе дисципли- ны «Компьютерные технологии в судовождении» и излагается в виде лекций, раскрывающих теоретические занятия. Задания на лаборатор- ные работы приведены в последнем разделе. Автор выражает признательность рецензентам: доценту кафедры судовождения ДВГТРУ А. Н. Солодянкину, начальнику УТЦ кафедры АПС и ТСС ДВГТРУ Е. Н. Бакланову и сотрудникам кафедры судо- вождения Морского государственного университета имени адмирала Г. И. Невельского за полезные критические замечания и дружеские пожелания по совершенствованию изложения материала при работе над рукописью учебного пособия. Замечания и предложения можно направлять по электронному ад- ресу
[email protected] или обращаться на учебный Web-сайт ав- тора: www.sv-navigator.narod.ru. mailto:
[email protected] 6 1. ИНТЕГРИРОВАННАЯ СРЕДА РАЗРАБОТКИ ПРИЛОЖЕНИЙ VISUAL BASIC Что такое Visual Basic? Принципы и преимущества структурного программирования, этапы программирования, интегрированная среда разработки IDE, элементы управления, выбор информативных имен для элементов управления, процедуры и функции, переменные, массивы и константы, управляющие структуры программы Что такое Visual Basic? Visual Basic (VB) это система программирования для создания приложений, работающих под Microsoft Windows. Первая часть этого словосочетания, Visual, относится к методу создания графического интерфейса пользователя (Graphical User Inter- face, GUI). Вместо того чтобы составлять большие программы для описания элементов интерфейса, в Visual Basic достаточно поместить заранее созданные объекты в соответствующие места экрана. Слово «Basic» относится к языку программирования BASIC (Be- ginners All-Purpose Symbolic Instruction Code Универсальный симво- лический программный код для новичков), языку, пользующемуся наибольшей популярностью среди других языков программирования за всю историю вычислительной техники. Visual Basic вырос из ис- ходного языка BASIC и в настоящее время состоит из нескольких со- тен операторов, функций и ключевых слов. С помощью VB начи- нающий пользователь может разработать полезное приложение, изу- чив лишь небольшое количество ключевых слов. Однако VB – доста- точно мощный язык программирования: с его помощью можно ре- шить любую задачу программирования, какую только можно вообра- зить. Язык программирования Visual Basic является универсальным языком. Версия Visual Basic для приложений, Applications Edition, включена в Microsoft Excel, Microsoft Access и многие другие Win- dows-приложения. Для написания скриптов (сценариев) также широко используется язык Visual Basic Scripting Edition (VBScript). Принципы и преимущества структурного программирования Язык Basic ориентирован на структурное программирование. Структура программы состоит из отдельных модулей, следующих 7 один за другим. У каждого модуля один вход и один выход закон- ченная конструкция для решения определенной задачи. Цель созда- ваемой программы достигается составлением композиции из отдель- ных модулей, разработанных применительно к поставленной задаче. Преимущества структурного программирования заключаются в следующем: отдельные блоки могут разрабатываться и проходить тестиро- вание независимо от остальной части программы; несколько программистов могут работать над разными частями программы независимо друг от друга; модули, написанные для одной программы, могут быть исполь- зованы в другой; существенно упрощается построение программы и еѐ отладка. Этапы программирования Решение задачи с использованием ЭВМ включает в себя следую- щие этапы: 1. Чѐткая формулировка задачи с выделением достигаемой це- ли и вида получаемого результата. 2. Разработка алгоритма решения задачи. 3. Разработка интерфейса программы. 4. Установление свойств элементов управления. 5. Выбор обозначений и объявление переменных величин про- граммы. Рекомендуется присваивать переменным значащие названия. В судовождении официально установлен перечень символов и сокращений для используемых величин, кото- рым следует руководствоваться при наименовании перемен- ных в программе. 6. Написание кодов программы. После появления на свет операционной системы Microsoft Win- dows оконный интерфейс стал общепринятым стандартом для разра- ботки прикладных программ (приложений). Разработка соответствующего интерфейса «вручную» имеет ряд трудностей и требует от программиста больших затрат времени. При- менение визуальных сред позволяет легко и быстро конструировать экранные формы и управляющие элементы, даже не являясь экспер- том в области C++ или другого языка программирования. Срок разра- ботки готового приложения сокращается от многих месяцев до недель и даже дней. 8 Интегрированная среда разработки IDE Интегрированная среда разработки, или IDE (Integrating Develop- ment Environment) (рис. 1) это важная составная часть Visual Basic. Именно здесь выполняется основная работа над приложением. Рис. 1. Интегрированная среда разработки приложений VB IDE состоит из следующих компонентов: 1. Строка меню. Обеспечивает доступ к командам, управ- ляющим средой программирования. 2. Панель инструментов. Ускоряет доступ к некоторым ко- мандам меню. 3. Окно дизайнера форм. Служит для визуального конструи- рования макета формы и размещения на нѐм управляющих элементов, кроме того, в этом окне производятся ввод и ре- дактирование текста программы. 4. Панель элементов. Содержит интерфейсные элементы для создаваемого приложения. 1 4 3 2 5 7 6 8 9 9 5. Окно проводника проекта. Показывает список форм и мо- дулей текущего проекта. (Проект – это набор файлов, ис- пользуемых для построения приложения). 6. Окно свойств. Позволяет изменять характеристики интер- фейсных элементов. 7. Окно макета формы. Показывает, как выглядит форма и где она находится во время выполнения программы. 8. Кнопка для перехода к окну кодов. 9. Кнопка для перехода к окну дизайнера формы. Элементы управления Основным элементом Windows-интерфейса является «окно». В Visual Basic этот объект называется формой. Это контейнер, на кото- ром располагаются все остальные элементы управления. Таким обра- зом, создание интерфейса сводится к размещению на форме управ- ляющих элементов. К ним относятся: кнопки, текстовые поля, надпи- си, переключатели, флажки, рамки, списки, комбинированные поля, рисунки, изображения и т. д. Кнопки (CommandButton) используются для решения самых раз- ных задач от простейшего ввода информации до вызова специаль- ных функций. Текстовые поля (TextBox) применяются для ввода данных или по- лучения информации от пользователя, а также в некоторых случаях для вывода информации. Надписи (Label) служат для размещения на форме текста, чисел и символов, а также, как и текстовые поля, для вывода информации. Главное отличие надписей от текстовых полей заключается в том, что пользователь (не программист) не может изменить текст надписи по своему усмотрению. Переключатели (OptionButton) позволяют выбрать один (и только один) вариант из группы. Обычно переключатели группируются в рамках, однако их можно группировать прямо на форме, если ис- пользуется только одна группа переключателей. Флажки (CheckBox) отчасти похожи на переключатели, однако работают независимо друг от друга. Рамки (Frame) используются в сочетании с другими элементами. Внутри рамки можно разместить любые элементы. Они группируются и в случае перемещения рамки двигаются вместе с ней. Списки (ListBox) это идеальное средство для работы с перечнем 10 из нескольких вариантов. Пользователь может просмотреть содержи- мое списка и выбрать одну или несколько строк для последующей об- работки. Прямое редактирование содержимого списка невозможно. Комбинированные поля (ComboBox) сочетают возможности тек- стового поля и списка. Они позволяют выбрать из списка заранее оп- ределенную строку или ввести значение, которого нет в списке. Важ- ной особенностью комбинированного поля является то, что оно может быть раскрывающимся. Это дает возможность экономить место на форме. Графические поля (PictureBox) часто используются для отображе- ния графических файлов. Кроме того, во время выполнения програм- мы в поле рисунка можно выводить текст и рисовать с помощью раз- личных методов. Но самое главное заключается в том, что рисунок может выполнять функции контейнера, т. е. в него можно поместить кнопку или другой элемент. Изображения (Image) являются упрощенным вариантом рисун- ков. В отличие от рисунков изображения не могут выполнять функции контейнера и подходят только для простейшего вывода картинок на форме, однако занимают гораздо меньше памяти, чем рисунки. Полосы прокрутки (VScrollBar, HScrollBar) обычно применяются для изменения величины в пределах непрерывной шкалы. Элемент полосы прокрутки представляет собой совершенно независимый объ- ект, не привязанный к другим элементам (текстовым полям или спи- скам). Горизонтальная и вертикальная полосы прокрутки ничем не от- личаются друг от друга, кроме ориентации. Описанные выше управляющие элементы являются стандартны- ми они всегда присутствуют на панели элементов. Кроме того, су- ществует еще много управляющих элементов, которые можно вызвать на панель элементов, щелкнув на ней правой кнопкой мыши и выбрав из контекстного меню команду Components. Далее на вкладке Controls диалогового окна Components необходимо установить флажки рядом с нужными элементами. Так, например, очень удобными являются диа- логовые блоки с закладками (SSTab). Они могут служить контейнером для других элементов управления и позволяют в значительной мере экономить место на форме. Каждый элемент управления имеет определенный набор свойств, которые можно изменять как с помощью окна свойств, так и про- граммно. 11 Выбор информативных имен для элементов управления Каждый элемент управления имеет свойство Name (Имя), где ука- зывается его имя. Причем оно должно быть уникальным (если этот элемент не является частью массива элементов управления). Когда создается тот или иной управляющий элемент, Visual Basic присваи- вает ему имя по умолчанию. Так, например, первая кнопка будет на- звана Command1, следующая кнопка Command2 и т. д. Это имя мо- жет сообщить, что данный элемент является кнопкой и никакой дру- гой информации не несет. Имена по умолчанию подходят для выясне- ния порядка, в котором создавались элементы управления, но не вы- зывают никаких разумных ассоциаций относительно того, для чего они предназначены. Имя должно информировать как о типе управляющего элемента, так и о его назначении. Поэтому рекомендуется придерживаться со- глашения об именах. Это сделает код программы более простым для понимания и усовершенствования. Следующее соглашение об именах используется для идентифика- ции элементов управления большинством программистов на Visual Basic: ctlName, где ctl префикс, определяющий тип управляющего элемента; Name имя элемента управления (информативное с точки зре- ния функционального назначения). Таким образом, имя cmdExit однозначно указывает на кнопку вы- хода из программы, а имя txtPassword на текстовое поле для ввода пароля. Следует обратить внимание на то, что первая буква информатив- ной части в синтаксисе имени является прописной, и таковыми явля- ются первые буквы всех слов, входящих в эту часть имени (например, txtFirstName). Это сделано для того, чтобы отделить имя от префикса, а также разделить слова в имени. Процедуры и функции Все объекты, составляющие приложение, объединяются в проект. Он может состоять как из одной, так и из нескольких форм, на каждой из которых располагаются свои управляющие элементы. Вся суть создания Windows-приложения сводится к программиро- ванию событий, происходящих с управляющими элементами. Поэто- му текст Visual Basic-программы представляет собой набор процедур 12 обработки событий. Под событием понимается действие, которое будет производить пользователь над управляющими элементами в процессе работы с готовой программой. Все процедуры, связанные с данной формой, называются кодом формы (модулем формы). Кроме того, в проект может входить само- стоятельный набор процедур, не связанный с какой-либо формой. Этот фрагмент программы называется модулем и может вызываться из любой формы. Каждая процедура начинается ключевыми словами Private (Public) Sub и заканчивается словами End Sub. Ключевые слова Private и Public определяют область видимости данной процедуры. Процедура, объяв- ленная с ключевым словом Public, является открытой, т. е. видимой другими компонентами приложения. Ключевое слово Private означает, что процедура является закрытой, т. е. доступной только из данной формы или модуля. Существуют процедуры как связанные с элементами управления, так и не связанные с ними. Такие процедуры, по сути, являются под- программами и вызываются с помощью оператора Call. Подпрограм- ма выполняет предписанное ей действие и потом возвращается в точ- ку вызова. Другой важный тип процедур функции (Function). Они также объявляются с ключевыми словами Private и Public. Функции возвра- щают некоторое значение вызывающей процедуре и заканчиваются строкой End Function. Переменные, массивы и константы Любая программа в процессе своей работы производит операции над данными. Это могут быть числа, строки текста, рисунки и т. д. В самой программе эти данные могут размещаться в переменных или массивах. Переменная это именованная область памяти, отведенная для временного хранения данных. При выполнении программы можно изменять значение переменной. Прежде чем начать использование пе- ременной, необходимо ее объявить. Объявление переменных может быть как явным, так и неявным. Явное объявление переменной производится с помощью операто- ра Dim (от dimension размерность). Этот оператор резервирует оп- ределенную область памяти под данную переменную. Далее указыва- ется тип данных для переменной. Например, Dim X as String. В этом 13 примере переменная X объявлена как строковая. Типы данных, ис- пользуемых в Visual Basic, указаны в табл. 1. Таблица 1 Типы данных, используемых в Visual Basic Тип данных Размер Диапазон значений Byte (байт) 1 байт От 0 до 255 Boolean (логический) 2 байта True (Истина) или False (Ложь) Integer (целое) 2 байта От 32768 до 32767 Long Integer (длинное целое) 4 байта От 2 147483648 до 2 147483647 Single (одинарной точ- ности с плавающей де- сятичной точкой) 4 байта От 3.402823Е38 до 3.402823Е38 Double (двойной точно- сти с плавающей деся- тичной точкой) 8 байт От 1. 797693 13486232D308 до 1.79769313486232D308 Currency (денежные единицы 8 байт От 922337203685477.5808 до 922337203685477.5807 Data (дата) 8 байт От January (Январь) 1, 100 до December (Декабрь) 31, 9999 String (строка) 1 байт на символ От 0 до 65535 символов Variant (вариант) 16 байт (для чи- сел); 22 байта +1 на символ (для строк) Для всех типов переменных Можно объявить переменную и без использования оператора Dim. Этот процесс называется неявным объявлением. В этом случае пере- менной автоматически будет присвоен тип Variant. Переменная, объ- явленная оператором Dim в той или иной процедуре, будет использо- ваться только внутри этой процедуры. Такая переменная называется локальной. При выходе из процедуры значение переменной будет об- нуляться. Чтобы сохранить еѐ значение, необходимо вместо Dim ис- 14 пользовать ключевое слово Static. В этом случае переменная будет со- хранять последнее присвоенное ей значение. Для того чтобы переменная могла использоваться всеми процеду- рами данной формы или модуля, ее необходимо объявлять в секции General Declarations (в самом начале окна с кодами). Кроме того, пе- ременная может быть доступна на уровне всего приложения. Такая переменная называется открытой, или глобальной. Она также объяв- ляется в секции General Declarations, но вместо Dim используется ключевое слово Global. Обычно в таких случаях в проект включается стандартный модуль с расширением bas, а все глобальные переменные помещаются в его секцию объявлений. Массивы можно считать разновидностью переменных, однако в них хранится сразу несколько однородных значений. Например, если записано Dim X (5) as Integer, то это значит, что объявляется массив X, в котором резервируется место для шести целочисленных значений (начиная с Х(0)). Массивы могут быть как одномерными, так и мно- гомерными. Например, Х(5) это одномерный массив, содержащий шесть элементов, a Y(3,5) двухмерный, содержащий 24 элемента. Таким образом, массивом называется список однородных величин, на которые можно ссылаться по имени и индексу. Нередко размер мас- сива (т. е. количество хранящихся в нѐм элементов) не может быть определѐн заранее. Объявлять массив заведомо большего размера до- вольно расточительно. В таком случае он объявляется пустым масси- вом. Массив, который в начале своего жизненного цикла не содержит ни одного элемента, называется динамическим. По мере выполнения программы в массив необходимо добавлять элементы, в которых бу- дут храниться значения. Для этого используется оператор ReDim. Позднее количество элементов массива снова можно изменить этим же оператором. Однако все имевшиеся до этого в массиве значения будут утрачены. Чтобы сохранить их, используют ключевое слово Preserve. Константы обладают некоторым сходством с переменными: они тоже объявляются, и им присваиваются значения. Тем не менее в от- личие от переменных значения констант остаются неизменными на протяжении всей программы. Одновременно с объявлением констан- ты ей присваивается значение. Для этого используется ключевое сло- во Const. Например, Const Pi = 3.141593. 15 Управляющие структуры программы В любом языке программирования существуют управляющие кон- струкции, позволяющие задать порядок выполнения отдельных частей программы. К ним относятся ветвления и циклы. Ветвление управляющая структура, позволяющая выбрать, по какому пути продолжится выполнение программы. Операторы ветв- ления являются мощным инструментом программирования. Они по- зволяют выборочно выполнять различные фрагменты программы и соответствующим образом реагировать в ситуациях, возникающих при выполнении приложения. Чаще всего ветвление в Visual Basic реализуется посредством опе- ратора If. В центре каждого оператора If находится условие выра- жение, принимающее два значения: True (истина) и False (ложь). Если условие истинно, выполнение программы продолжается по одной вет- ви, если ложно, то по другой. В зависимости от сложности действий, выполняемых в ветвлении, программная конструкция с оператором If может занимать одну строку или принимать вид блока. В обеих фор- мах используются ключевые слова If, Then, Else. В простейшем виде ветвление представлено однострочным оператором If, который имеет вид: If условие Then действие 1 Else действие 2 Здесь условие это выражение, дающее результат True или False, а действие 1 и действие 2 операторы Visual Basic. Если условие ис- тинно, действие 1 выполняется, а действие 2 опускается. Если усло- вие ложно, то наоборот. Часть Else является необязательной, без неѐ однострочный оператор If принимает самый простой вид: If условие Then действие В этом случае действие выполняется, если условие истинно. В противном случае оператор If ничего не выполняет. Для того чтобы выбрать один из нескольких блоков программы, каждый из которых содержит несколько операторов, следует исполь- зовать условную управляющую структуру. Одна из еѐ форм выглядит так: If условие Then Блок, выполняющийся, когда условие истинно Else Блок, выполняющийся, когда условие ложно End If Ветвление, включающее проверку нескольких условий, реализует- ся с помощью ключевого слова ElseIf. В эту структуру может входить 16 любое количество блоков ElseIf, каждый со своим условием и набо- ром операторов: If условие 1 Then Блок, выполняющийся, когда условие 1 истинно ElseIf условие 2 Then Блок, выполняющийся, когда условие 2 истинно ElseIf условие 3 Then Блок, выполняющийся, когда условие 3 истинно Else Блок, выполняющийся, когда все условия ложны End If В этой структуре Visual Basic последовательно проверяет истин- ность каждого из условий. Если встречается истинное условие, вы- полняется соответствующий фрагмент программы, а оставшаяся часть структуры пропускается. Вторая управляющая структура ветвления задается с помощью ключевых слов Select Case. Из всех блоков программного кода, вхо- дящих в структуру выбора, оператор Select Case выполняет один из блоков или не выполняет ни одного. Общий формат записи оператора Select Case выглядит так: Select Case контрольное выражение Case выражение 1 Блок, выполняющийся при соответствии выражения 1 значению контрольного выражения Case выражение 2 Блок, выполняющийся при соответствии выражения 2 значению контрольного выражения Может присутствовать любое количество блоков Case Case Else Блок, выполняющийся в случае несоответствия ни одного из вы- ражений контрольному выражению End Select. Циклы применяются для многократного выполнения фрагмента программы до тех пор, пока не будет выполнено определенное усло- вие или счѐтчик не достигнет заданного значения. Цикл состоит из двух основных компонентов: блока программного кода, который должен повторяться, и команды, управляющей про- должительностью повторений. Первое требование, выполняемое при написании цикла задать блок программного кода, который должен повторяться. Для этого в начале и в конце цикла ставятся соответствующие ключевые слова. В цикле Do это слова Do и Loop. Операторы, заключенные меж- ду Do и Loop, составляют тело цикла. Условное выражение, опреде- ляющее продолжительность цикла, может стоять либо при Do в нача- ле цикла, либо при Loop в конце. Более того, в обоих случаях условие 17 вводится с одним из ключевых слов While или Until. Если необходи- мо, чтобы цикл выполнялся, пока условие истинно, применяется клю- чевое слово While. Цикл с условием Until прекращается, когда усло- вие становится истинным. Синтаксис цикла Do приводится ниже: Do While условие Блок операторов, выполняемых в цикле до тех пор, пока условие остается истинным Loop Do Блок операторов, выполняемых в цикле до тех пор, пока условие не станет истинным Loop Until условие На поведение цикла существенно влияет место расположения ус- ловия. Если условие расположено вначале, его проверка происходит перед выполнением первой итерации. Если она оказывается неудач- ной, цикл пропускается и ни одна итерация не выполняется. Наобо- рот, в цикле с постусловием итерация всегда выполняется хотя бы один раз. После выполнения первой итерации происходит проверка условия продолжения цикла. В цикле For ключевыми словами являются For и Next. Этот цикл уместно применять, когда количество итераций известно. В синтаксис этого цикла также входит переменная счѐтчик цикла и диапазон принимаемых ею значений, а также шаг приращения счетчика: For счетчик = выражение1 То выражение2 Step выражение3 Блок операторов, повторяющийся, пока счетчик не пройдет значение от выражения1 до выражения2 с шагом выражение3 Next счетчик Здесь счетчик имя переменной, выражение1 и выражение2 нижний и верхний пределы диапазона значений переменной, выра- жение3 значение приращения переменной. Оператор Step может не указываться, в этом случае при каждой итерации счетчик будет увеличиваться на единицу. Пример. Определить разность широт (РШ), если известны раз- ность меридиональных частей (РМЧ), разность долгот (РД) и коорди- наты верхнего левого и нижнего правого углов навигационной карты. Судно находится в северных широтах, в восточном полушарии и следует курсами в NE четверти. РШ можно определить по формуле 18 . РД ОТШРМЧ РШ В этой формуле ОТШ можно найти из выражения ,cosРДОТШ m где в качестве начального значения средней широты m можно при- нять среднюю широту карты, т. е. , 2 21 m где 1, 2 – широта верхней и нижней рамок карты соответственно. По мере вычислений и уточнений разности широт текущей точки значение m также должно уточняться до тех пор, пока текущее значе- ние РШ не будет отличаться от его предыдущего значения на задан- ную малую величину. Фрагмент кода программы, реализующий вышеприведѐнный ал- горитм, выглядит следующим образом: Dim f1r As Single 'Широта верхнего левого угла рамки карты Dim dLt As Single 'Разность долгот левой рамки карты и текущей точки Dim fsrk As Single 'Средняя широта карты Dim OTt As Single 'Отшествие текущей точки Dim rmcht As Single 'Разность меридиональных частей текущей точки Dim dft As Single 'Текущая разность широт Dim dfti As Single 'Предыдущее значение текущей разности широт Do dfti = dft OTt = (dLt / 57.3) * Cos(fsrk / 57.3) OTt = OTt * 57.3 dft = (rmcht * OTt) / dLt Ft = f1r dft fsrk = (f1r + Ft) / 2 Loop Until Abs(dfti dft) 19 2. РАЗРАБОТКА ФОРМ ПРИЛОЖЕНИЙ В VISUAL BASIC Способы ввода данных в программу и вывода результатов, разработка главной формы ЭКС «Кадет» Форма разрабатываемой программы-приложения должна обладать удобным для пользователя интерфейсом и обеспечить ввод начальных данных решаемой задачи и вывод полученных результатов. Ввод данных в программу может осуществляться различными пу- тями. Самым простым способом ввода данных является заполнение переменных и массивов непосредственно в тексте программы. Однако этот способ имеет ряд существенных недостатков. Во-первых, если данных большое количество, то процесс их ввода будет достаточно трудоемким. Во-вторых, при изменении данных придется постоянно искать их в тексте программы. Но самый главный недостаток заклю- чается в том, что после компиляции программы (перевода в машин- ные коды) изменить данные будет невозможно. Следующим способом ввода данных является ввод с помощью элементов управления. Так, например, можно выбрать один из пунк- тов раскрывающегося списка. Для этого список необходимо запол- нить. Это можно сделать с помощью окна свойств, добавив нужные данные в свойство List списка. После ввода каждой строки необходи- мо нажимать клавишу Enter. Кроме того, список можно заполнить и программно с помощью метода Addltem, который служит для вклю- чения строк в список. Если числовые данные лежат в строго определенном диапазоне, можно вводить их с помощью полосы прокрутки. Для этого значение переменной приравнивается к свойству Value полосы прокрутки. Наиболее универсальным является ввод данных в текстовое окно (TextBox). Однако в этом случае необходимо ограничить возможности пользователя. Так, например, если в текстовое поле необходимо вво- дить только числовую информацию, то нужно сделать невозможным ввод текста. В противном случае в программе произойдѐт сбой. Наиболее удобным является хранение информации вне програм- мы в отдельных файлах. Такими файлами могут быть ASCII- файлы обыкновенные текстовые файлы, которые можно создать в любом текстовом редакторе. Они содержат данные произвольного ти- па и могут форматироваться в виде списка величин, разделенных за- пятыми или другими символами. Для открытия файла в Visual Basic используется оператор Open. 20 Его синтаксис имеет вид: Open имя файла For режим доступа As файловый номер Параметр имя файла определяет полное имя открываемого файла (содержащее путь к файлу). Visual Basic позволяет открыть несколько файлов одновременно. Для идентификации открываемого файла служит параметр файло- вый номер, который используется при выполнении файловых опера- ций в программе. Параметр режим доступа может принимать следующие значения: Append (Дополнение), Input (Ввод), Output (Вывод), Random (Про- извольный) и Binary (Двоичный). Ни один из этих режимов не имеет явных преимуществ перед остальными. Выбор режима зависит от формата данных файла. Режимы Input, Output и Append служат для последовательного доступа к данным. В этом случае символы считываются (или записы- ваются) один за другим. Если используется режим Input, то файл от- крывается для чтения. Здесь чаще применяется оператор Line Input # построчный ввод (а также оператор Input # или функция Input). После символа # необходимо указывать файловый номер. Если используется режим Output или Append, то файл открывается для записи. Причем в случае применения Output все данные, хранив- шиеся до этого в файле, стираются, а в режиме Append новые записи добавляются в конец файла. Для записи в файл можно пользоваться оператором Print # (или Write #). Если выбран режим Random, то осуществляется произвольный доступ к данным. В отличие от последовательного доступа программа может перейти к любой записи (строке данных) и считать ее содер- жимое. Для этого в операторе Open необходимо указать длину записи в символах: Open имя файла For Random As файловый номер Len = длина за- писи. Режим Random открывает файл как для записи, так и для чтения. Для записи данных применяется оператор Put #, а для чтения опера- тор Get #. Синтаксис этих операторов следующий: Put (Get) # файловый номер, номер записи, содержимое Для оператора Put содержимое переменная, которая содержит эту запись, а для оператора Get переменная, в которую будет зане- сена эта запись. Если выбран режим Binary, то режим доступа двоичный. Так же, как и в произвольном режиме доступа, чтение данных производится 21 командой Get #, a запись командой Put #. Двоичный доступ отлича- ется от произвольного тем, что нельзя случайным образом переме- щаться по файлу и читать данные в любом месте. В двоичном режиме чтение данных происходит последовательно и в виде блоков. Количе- ство байт, прочитанных из файла, равно размеру строки, в которую должны быть занесены прочитанные данные. После выполнения всех операций открытый файл необходимо за- крыть оператором Close #. Чаще всего данные приходится загружать в программу из таблиц Microsoft Access, а также с других СУБД. В Visual Basic предусмотре- но много возможностей для работы с базами данных формата Micro- soft Access. Для работы с базами данных необязательно иметь уста- новленную копию Access, так как в Visual Basic входит ядро Access Jet Engine. Microsoft Jet Engine представляет собой систему программ, управляющих базами данных. Разработка главной формы ЭКС «Кадет» Ввод данных в программу и вывод полученных результатов разбе- рѐм на примере разработки главной формы учебной программы, ус- ловно названной электронной картографической системой «Кадет» (ЭКС «Кадет»). Задача заключается в том, чтобы разработать главную форму ЭКС «Кадет», с помощью которой можно было бы обеспечить расчѐт и вы- вод истинного курса судна (К), расстояния, пройденного судном на этом курсе (S), и времени плавания на курсе (T), после ввода коорди- нат пункта отхода (f1, L1) и прихода (f2, L2) и скорости судна (V). Суд- но находится в северных широтах, в восточном полушарии и следует курсами в NE четверти. Для решения поставленной зада- чи воспользуемся формулами, из- вестными из аналитического (пись- менного) счисления, которые выво- дятся из локсодромического тре- угольника, изображѐнного на рис. 2. Отшествием (ОТШ) называется длина отрезка параллели между ме- ридианами пункта отхода и прихода, рассчитываемая по средней паралле- ли и выраженная в морских милях. S Рис. 2 22 .cosРДОТШ ,KsinSОТШ п Меридиональной частью (МЧ) называется длина отрезка мери- диана от экватора до параллели заданной точки, выраженная в эквато- риальных милях. .МЧМЧРМЧ 12 Разность долгот (РД) это меньшая из дуг экватора между мери- дианами точки отхода и прихода. 12РД , или , cos ОТШ РД п где п промежуточное значение широты в интервале между 1 и 2. На небольших расстояниях промежуточное значение широты до- пустимо принимать равным средней широте, т. е. . 2 21 mп Разность широт (РШ) это дуга меридиана между параллелями точки отхода и прихода. 12РШ , или .KcosSРШ Курс судна рассчитывается по формуле 23 . РШ ОТШ РМЧ РД tgK Примечание. Если нет ни ветра, ни течения, то в качестве курса К принимается истинный курс (ИК), если есть ветер – то ПУ . Течение учитывается отдельным курсом и в качестве К принимается ПУ . При совместном воздействии ветра и течения – путевой угол ПУc. Курс получается в четвертном счѐте. Плавание судна рассчитывается по формуле .КsecРШS Для расчѐта времени плавания можно использовать формулу VST / . Главную форму ЭКС «Кадет» можно представить в виде, изобра- жѐнном на рис. 3. Рис. 3. Главная форма ЭКС «Кадет» Для создания интерфейса, показанного на рис. 3, и написания ко- дов программы необходимо выполнить следующие шаги: 1. Запустить VB. 2. Увеличить размеры формы-заготовки, так чтобы на ней смогли разместиться нужные элементы. Это можно сделать с помощью мыши, растянув ею форму-заготовку за маркеры размера (прямоугольники по контуру). 24 3. Щѐлкнуть мышью на кнопке соответствующего элемента, расположенного на панели элементов. В нашем примере не- обходимы следующие элементы: Надписи (Label), Тексто- вые поля (TextBox), Кнопки (CommandButton). 4. Переместить указатель мыши на форму-заготовку и после того, как он примет вид перекрестия, нажать левую кнопку мыши и, не отпуская еѐ, выделить место для элемента. Кро- ме этого можно дважды щѐлкнуть по кнопке нужного эле- мента левой кнопкой мыши. Тогда он появится в центре формы-заготовки, и его можно будет перетащить мышью в нужное место и с помощью маркеров размеров изменить размер. Для перемещения элемента по форме-заготовке можно использовать также комбинацию клавиш Ctrl и кла- виши управления курсором (клавиши со стрелками), а для изменения размеров – комбинацию клавиш Shift и клавиши управления курсором. 5. После того как все нужные элементы будут нанесены на форму-заготовку, необходимо изменить их свойства. Для этого активизируем нужный элемент (щѐлкаем по нему ле- вой кнопкой мыши) и в окне свойств указываем новые свой- ства, предварительно удалив свойства по умолчанию. На- пример, щѐлкнув мышью по форме, находим свойство Caption и вместо свойства, указанного по умолчанию (Form1), вписываем ЭКС «Кадет». То же самое проделыва- ем с другими элементами, кроме текстовых полей, указав соответствующее им свойство Caption. 6. Переходим к окну кодов, для этого можно щѐлкнуть мышью по кнопке перехода к окну кодов (см. первую лекцию) и в самом начале программы (секция General) объявляем пере- менные величины, так, как это показано на фрагменте Dim f1 As Single 'Широта пункта отхода Dim f2 As Single 'Широта пункта прихода Dim L1 As Single 'Долгота пункта отхода Dim L2 As Single 'Долгота пункта прихода Dim df As Single 'Разность широт Dim dL As Single 'Разность долгот Dim fsr As Single 'Средняя широта Dim OT As Single 'Отшествие Dim K As Single 'Истинный курс Dim S As Single 'Расстояние Dim V As Single 'Скорость Dim T As Single 'Время 25 7. Переходим к окну дизайнера формы, для этого можно щѐлк- нуть мышью по соответствующей кнопке интегрированной среды разработки. Выбираем элемент, для которого требует- ся написать код (в данном случае это кнопка ПУСК), и два- жды щѐлкаем по нему левой кнопкой мыши. В то место, где находится курсор после выполнения вышеуказанной коман- ды (между ключевыми словами Private Sub Command1_Click() и End Sub), вписываем нижеприведѐнные коды: Private Sub Command1_Click() f1 = Text1.Text ‘Ввод исходных данных в соответствующее текстовое поле L1 = Text2.Text f2 = Text3.Text L2 = Text4.Text df = f2 f1 dL = L2 L1 fsr = (f1 + f2) / 2 OT = (dL / 57.3) * Cos(fsr / 57.3) ‘Углы под знаком тригонометрической функ- ции вводятся в радианах K = OT / (df / 57.3) K = Atn(K) S = (((df / 57.3) * (1 / Cos(K))) * 57.3) * 60 K = K * 57.3 Text6.Text = K ‘Вывод результатов в соответствующее текстовое поле Text7.Text = S V = Text5.Text T = S / V Text8.Text = T End Sub 8. Пункт 7 повторяем для кнопки ВЫХОД, в качестве кодов указав только один оператор End: Private Sub Command2_Click() End End Sub 9. Запускаем программу, нажав кнопку START или клавишу F5. Примечание. В настоящем учебном пособии имена управляющих элементов заданы по умолчанию. Выбор информативных имѐн предлагается сделать са- мостоятельно. Вопросы для самоконтроля 1. Какие способы ввода данных в программу и вывода резуль- татов вы знаете? 2. Что такое переменные и постоянные величины? 3. Как задаются свойства элементов формы? 26 3. ВВЕДЕНИЕ В ТЕХНОЛОГИЮ РАЗРАБОТКИ РАСТРОВЫХ И ВЕКТОРНЫХ ЭЛЕКТРОННЫХ НАВИГАЦИОННЫХ КАРТ Растровые изображения, векторная графика, основные способы оцифровки навигационных карт, векторизация растровых изображений, растровые картографические дисплейные системы (РКДС), векторные навигационные карты, разработка растровых и векторных навигационных карт для ЭКС «Кадет» Растровая графика Электронные карты (ЭК) являются основным элементом элек- тронных картографических систем (ЭКС). ЭК и ЭКС изучаются на старших курсах судоводительского факультета, когда курсантами на- коплен достаточный багаж знаний для освоения этих сложных пред- метов [1], [2]. В настоящей лекции рассматриваются лишь некоторые основные вопросы технологии разработки растровых и векторных электронных навигационных карт, знание которых в дальнейшем по- может успешному освоению ЭК и ЭКС. Прежде всего, разберѐм, что такое растровое изображение и век- торная графика. Растровым изображением называется изображение, представ- ленное двумерным массивом точек (пикселей), каждая из которых имеет свой цвет. В монохромных, или бинарных растровых изображе- ниях любая точка может иметь только один из двух цветов: чѐрный или белый. Эти точки называются растровыми точками. Каждый пик- сел на растровом поле соседствует с восьмью другими, которые обра- зуют растр. Растровые изображения могут быть получены сканирова- нием оригинального изображения с бумаги, преобразованием видео- изображения специальным декодером или с помощью программы ре- дактора растра. К форматам файлов растровой графики относятся: BMP, TIFF, GIF, JPEG и другие (этими сокращениями обычно указываются рас- ширения файлов). Рассмотрим каждый из перечисленных форматов. Формат файла BMP (сокращенно от BitMaP) это «родной» фор- мат растровой графики для Windows, поскольку он наиболее близко соответствует внутреннему формату Windows, в котором эта система хранит свои растровые массивы. Для имени файла, представленного в BMP-формате, чаще всего используется расширение BMP, хотя неко- 27 торые файлы имеют расширение RLE, означающее run length encoding (кодирование длины серий). Расширение RLE имени файла обычно указывает на то, что произведено сжатие растровой информации фай- ла одним из двух способов сжатия RLE, которые допустимы для фай- лов BMP-формата. В файлах BMP информация о цвете каждого пиксела кодируется 1, 4, 8, 16 или 24 бит (бит/пиксел). Числом бит/пиксел, называемым так- же глубиной представления цвета, определяется максимальное число цветов в изображении. Изображение при глубине 1 бит/пиксел может иметь всего два цвета, а при глубине 24 бит/пиксел более 16 млн. различных цветов. TIFF (Tagged Image File Format, формат файлов изображения, снабженных тегами) один из самых сложных. Каждый файл начина- ется заголовком файла изображения (IFH), важнейший элемент кото- рого каталог файла изображения (IFD, Image File Directory) служит указателем к структуре данных. IFD представляет собой таблицу для идентификации одной или нескольких порций данных переменной длины, называемых тегами. Теги хранят информацию об изображе- нии. В спецификации формата файлов TIFF определено более 70 раз- личных типов тегов. Например, тег одного типа хранит информацию о ширине изображения в пикселах, другого информацию о его высоте. В теге третьего типа хранится таблица цветов (при необходимости), а тег четвертого типа содержит сами данные растрового массива. Изо- бражение, закодированное в файле TIFF, полностью определяется его тегами, и этот формат файла легко расширяется, поскольку для при- дания файлу дополнительных свойств достаточно лишь определить дополнительные типы тегов. Так что же делает TIFF столь сложным? С одной стороны, состав- ление программ, различающих все типы тегов, это непростое дело. В большинстве программ для чтения файлов TIFF реализуется только подмножество тегов, именно поэтому созданный одной программой файл TIFF иногда не может быть прочитан другой. Кроме того, про- граммы, создающие файлы TIFF, могут определять собственные типы тегов, имеющие смысл только для них. Программы чтения файлов TIFF могут пропускать непонятные для них теги, но всегда существу- ет опасность, что это повлияет на внешний вид изображения. Еще одна сложность заключается в том, что файл TIFF может со- держать несколько изображений, каждому из которых сопутствуют собственный IFD и набор тегов. Данные растрового массива в файле TIFF могут сжиматься с использованием любого из нескольких мето- 28 дов, поэтому в надежной программе для чтения файлов TIFF должны быть средства распаковки RLE, LZW (LempelZivWelch) и несколько других. Ситуацию еще больше ухудшает то обстоятельство, что поль- зование программами распаковки LZW должно осуществляться в со- ответствии с лицензионным соглашением с фирмой Unisys Corp. на право пользования алгоритмом LZW. В результате даже самые луч- шие программы считывания TIFF нередко «сдаются», когда сталки- ваются со сжатым по методу LZW изображением. Несмотря на свою сложность файловый формат TIFF остается од- ним из лучших для передачи растровых массивов с одной платформы на другую благодаря своей универсальности, позволяющей кодиро- вать в двоичном виде практически любое изображение без потери его визуальных или каких-либо иных атрибутов. GIF (Graphics Interchange Format) формат обмена графическими данными (произносится «джиф»). Структура файла GIF зависит от версии GIF-спецификации, которой соответствует файл. В настоящее время используются две версии, GIF87a и GIF89a. Первая из них про- ще. Независимо от номера версии, файл GIF начинается с 13-байт за- головка, содержащего сигнатуру, которая идентифицирует этот файл в качестве GIF-файла, номер версии GIF и другую информацию. Если файл хранит всего одно изображение, вслед за заголовком обычно располагается общая таблица цветов, определяющая цвета изображе- ния. Если в файле хранится несколько изображений (формат GIF, ана- логично TIFF, позволяет кодировать в одном файле два и более изо- бражений), то вместо общей таблицы цветов каждое изображение со- провождается локальной таблицей цветов. В файле GIF87a вслед за заголовком и общей таблицей цветов размещается изображение, которое может быть первым из нескольких располагаемых подряд изображений. Каждое изображение состоит из 10-байт описателя изображения, расположенной вслед за ним локаль- ной таблицы цветов и битов растрового массива. Для повышения эф- фективности использования памяти данные растрового массива сжи- маются с помощью алгоритма LZW. Файлы GIF89a имеют аналогичную структуру, но они могут со- держать факультативные блоки расширения с дополнительной ин- формацией о каждом изображении. В спецификации GIF89a опреде- лены четыре типа блоков расширения. Это блоки расширения для управления графикой, которые описывают, как изображение должно выводиться на экран (например, накладывается ли оно на предыдущее изображение подобно диапозитиву или просто заменяет его); блоки 29 расширения с обычным текстом, содержащие текст, отображаемый вместе с графикой; блоки расширения для комментария, содержащие комментарии в коде ASCII; и блоки расширения прикладных про- грамм, в которых хранится информация, принадлежащая только соз- давшей этот файл программе. Блоки расширения могут находиться практически в любом месте файла после общей таблицы цветов. Основные достоинства GIF заключаются в широком распростра- нении этого формата и его компактности. Но ему присущи два доста- точно серьезных недостатка. Один из них состоит в том, что в изо- бражениях, хранящихся в виде GIF-файла, не может быть использова- но более 256 цветов. Второй заключается в том, что разработчики программ, использующие в них форматы GIF, должны иметь лицен- зионное соглашение с CompuServe и вносить плату за каждый экземп- ляр программы. Возникшее в результате этого запутанное юридиче- ское положение пока тормозит внедрение программистами в свои графические программы средства для работы с файлами GIF. Формат файла JPEG (Joint Photographic Experts Group Объеди- ненная экспертная группа по фотографии, произносится «джейпег») был разработан компанией C-Cube Microsystems как эффективный ме- тод хранения изображений с большой глубиной цвета, например, по- лучаемых при сканировании фотографий с многочисленными, едва уловимыми (а иногда неуловимыми) оттенками цвета. Самое большое отличие формата JPEG от других рассмотренных здесь форматов со- стоит в том, что в JPEG используется алгоритм сжатия с потерями (а не алгоритм без потерь) информации. Алгоритм сжатия без потерь так сохраняет информацию об изображении, что распакованное изобра- жение в точности соответствует оригиналу. При сжатии с потерями приносится в жертву часть информации об изображении, чтобы дос- тичь большего коэффициента сжатия. Распакованное изображение JPEG редко соответствует оригиналу абсолютно точно, но очень часто эти различия столь незначительны, что их едва можно (если вообще можно) обнаружить. Для работы с растровой графикой широко используется такая про- грамма, как Paint. Распространенные форматы файлов растровой графики, рассмот- ренные выше, представлены в табл. 2. 30 Таблица 2 Распространѐнные форматы файлов растровой графики Формат Максимальное число бит/пиксел Максимальное число цветов Максимальный размер изображе- ния, пиксел Методы сжатия BMP 24 16777216 65535 65535 RLE* GIF 8 256 65'535 65535 LZW JPEG 24 16777216 65535 65535 JPEG TIFF 24 16777216 всего 4294967295 LZW, RLE и другие* * Сжатие выполняется факультативно. Векторная графика Векторная графика это изображения, состоящие из геометри- ческих объектов, таких как прямые линии, дуги, окружности, эллип- сы, прямоугольники. Достоинства векторной графики: изображения занимают относительно небольшой размер; векторные изображения могут быть легко масштабированы без потери качества. Недостатки векторной графики: векторная графика не позволяет получать изображения фото- графического качества; векторные изображения иногда не распечатываются или выгля- дят на бумаге по-другому, чем на экране. Программы, работающие с векторной графикой: Corel Draw. Специализированная программа для создания кар- тин и анимации в формате cdr. Macromedia Free Hand. Специализированная программа для создания векторных изображении в формате h10. Macromedia Flash. Программа, предназначенная для создания анимации специально для Интернет в формате swf и fla. Современная векторная графика это уже не просто геометриче- ские фигуры, разбавленные текстом. Сегодня векторные программы 31 это мощные инструменты с возможностью создания фотореалистич- ных коллажей. Граница между векторной и растровой графикой по- степенно исчезает. И то, что вчера возможно было только в растровых редакторах, сегодня доступно счастливым пользователям таких паке- тов, как Adobe Illustrator 9, Expression 2, Deneba Canvas 8. В векторных программах гораздо удобнее работать с текстом, лег- че создавать геометрические фигуры, более простая и легкая работа с цветом. Векторные программы называют еще иллюстративными. Особенное удобство иллюстративных программ в том, что рису- нок в них состоит из отдельных частей графических объектов. По- этому такие программы еще называют «объектно-ориентированными» редакторами, в отличие от «пиксель-ориентированных» растровых ре- дакторов. Такая объектность даѐт векторной графике необычайную гибкость в работе. В любой момент вы можете легко изменить любой компо- нент, добавить что-то новое или ввести новый текст (данные). Другая, немаловажная деталь это независимость иллюстраций от размеров физического носителя. Плакат или значок-логотип из одного и того же векторного рисунка получаются с неизменным качеством, в то время как растровые, или, как еще говорят, фотоизображения при всех операциях по изменению размера резко теряют свое качество. Из-за этой способности к масштабируемости векторные файлы зачас- тую занимают гораздо меньше места на жестком диске, чем аналогич- ные растровые файлы. В последнее время наметилась интересная тенденция. В связи с выросшими мощностями компьютеров многие растровые редакторы приобрели ряд функций для работы с векторной графикой. При этом ряд преимуществ векторной графики стал доступен и для пользовате- лей программ типа Photoshop, Paint Shop Pro, Fireworks и т. д. Так, композиция размером на лист А4 при разрешении 300 dpi в формате Photoshop 6 при использовании только векторных объектов занимает всего 700 КБайт против 12 Мбайт в формате Photoshop 5! А с другой стороны, векторная графика по той же самой причине вплотную подошла к растровой по возможности создания фотореали- стичных эффектов. Особых успехов в этом достигли пакеты Illustrator 9 от компании Adobe, Expression 2 от CreatureHouse и Canvas 8 от De- neba. 32 Основные способы оцифровки навигационных карт Для оцифровки бумажных навигационных карт применяются та- кие способы, как: цифровой ввод ввод по координатам, обработка результатов аэро- и космической фотосъемки, оцифровка с помощью дигитайзера и сканера. Рассмотрим перечисленные способы оцифровки. С цифровым вводом в той или иной мере имеют дело практически все пользователи ГИС. Наиболее ярким примером такого ввода явля- ется ввод регистрационных точек тиков. Как правило, они вводятся в реальных координатах по результатам съѐмки местности и исполь- зуются для привязки всей последующей вводимой информации. Методы ввода могут быть разными. Например, ввод координат с клавиатуры или запись в обычный текстовый файл, набираемый по итогам топосъѐмки или выдаваемый какой-либо системой обработки результатов топосъѐмки. Самые совершенные и точные способы цифрового ввода полу- чение цифровых данных на машинном носителе непосредственно в процессе топосъѐмки с помощью электронного теодолита и использо- вание систем глобального позиционирования (GPS). Фотосъѐмка это очень удобный способ получить свежую и точ- ную картографическую информацию на машинном носителе. Прово- дят аэрофотосъѐмку и обрабатывают еѐ результаты специализирован- ные организации Главного управления геодезии и картографии. Ме- тодики, программно-технические средства всѐ это разработки Глав- ного управления геодезии и картографии и военных. На выходе вы получаете картографическую информацию на твердом носителе. Как правило, все эти разработки выполнены на достаточно высоком уров- не, в своѐм стандарте. Оцифровка карт с помощью дигитайзера это старый, проверен- ный и отлаженный способ ввода картографической информации. Ди- гитайзер представляет собой планшет для оцифровки (digitizing tablet, или по-русски координатограф). Обычно он включает внутреннюю координатную систему с высоким разрешением, поверх которой по- мещается карта или графическое изображение. Как правило, все раз- витые системы ГИС поддерживают работу с дигитайзером напрямую, либо имеют возможность импорта данных через AutoCAD, который имеет развитые средства поддержки работы с дигитайзером. Для эф- фективной оцифровки с помощью дигитайзера необходимо подгото- вить пространственные данные к обработке и приобрести опыт, чтобы улавливать различные аспекты информации. 33 Хорошей альтернативой традиционному способу оцифровки карт с помощью дигитайзера может стать сканирование карт с последую- щей векторизацией растровых изображений. Довольно широко рас- пространено мнение, что это, в принципе, самый дешевый и эффек- тивный способ оцифровки. На самом деле все не так однозначно. Здесь следует выделить две проблемы: выбор модели сканера; выбор метода векторизации. Методика работы может быть разной, в зависимости от типа ска- нера и избранного метода векторизации. Сканеры бывают ручные, планшетные и проекционные. Векторизовать полученные растры можно вручную, автоматически или полуавтоматически при помощи специализированных программ. Ручные сканеры мало пригодны для обработки картографической информации. Они обладают небольшим рабочим полем, что влечет за собой дополнительную проблему склейки различных частей одной карты. Кроме того, точность ввода с помощью ручного сканера зави- сит от состояния оператора. Планшетные сканеры это отлаженная технология, гарантиро- ванный результат, простота, удобство в работе. Но вместе с тем это жесткая привязка к формату сканера, высокая стоимость, растущая с увеличением формата. Обычный сканер формата А4 с приемлемой стоимостью малопригоден для обработки картографической инфор- мации, т. к. небольшое рабочее поле влечет за собой дополнительную проблему склейки различных частей одной карты. Профессиональные сканеры больших форматов стоят довольно дорого. Проекционные сканеры позволяют уйти от жесткой привязки к формату, но необходимость использования специальных объективов, средств юстировки, подбора освещения также резко увеличивают стоимость работ. Существуют программные средства оцифровки навигационных карт, например, пакет Didger, разработанный фирмой Golden Software. Didger служит для преобразования бумажных вариантов карт, графических изображений, аэрофотоснимков, а также другой графи- ческой напечатанной информации в цифровой формат. Это позволяет трансформировать различные графические объекты (точки, линии или площадные участки) в данные, которые могут использоваться в дру- гих приложениях. Didger это 32-разрядная программа оцифровки, работающая в среде Windows 95/NT и служащая для преобразования графической 34 печатной информации в цифровой формат, который может использо- ваться в других приложениях. Оцифровка карт выполняется либо с использованием планшета, либо на экране монитора с помощью мы- ши или даже клавиатуры. Разумеется, здесь точность ввода будет ог- раничена разрешающей способностью экрана, а снимать координаты можно будет только с уже имеющегося электронного изображения карты. Но для полноценного использования Didger при работе с бу- мажными носителями потребуется дигитайзер. Рекомендовать какой-либо способ оцифровки в качестве единст- венно верного практически невозможно по целому ряду причин, как чисто организационных, так и экономических. В каждом конкретном случае будет выбран способ или ряд способов в соответствии с имеющимися ресурсами и доступностью той или иной информации. Векторизация растровых изображений Векторизовать полученные растры можно вручную, автоматиче- ски или полуавтоматически с помощью специализированных про- грамм, например, Easy Trace. Наиболее эффективна векторизация карт с однородной информа- цией например, рельеф в виде изолиний. При наличии хорошей ос- новы в этом случае возможно применение программ автоматического распознавания типа VECTORY. Существуют также программы полуавтоматической векторизации и векторизации в режиме экранного дигитайзера. Все, что ранее было сказано о подготовке карт к оцифровке обычным дигитайзером, оста- ется в силе и для них. Рассмотрим основные возможности программы-векторизатора Easy Trace. Easy Trace является пакетом программ для полуавтоматической интерактивной векторизации цветных и черно-белых растровых изо- бражений, работающим под Windows 95/NT. Он предназначен для пе- реноса графической информации с бумажных носителей в компьютер и ориентирован, прежде всего, на обработку картографических мате- риалов. Для подготовки растровых изображений навигационных карт можно использовать непосредственно Easy Trace или дополнительный модуль для векторизатора Easy Trace пакет Rainbow. Перед сканированием необходимо разбить карту на отдельные растровые участки и поставить на них опорные точки (тики), которые должны быть общими для двух соседних растров. Для соединения 35 растров используется команда Сшивка из меню Редактирование. Данная команда предназначена для соединения растров по двум опор- ным точкам. Соединяемые растры могут иметь разный цветовой ре- жим, но итоговый документ будет создан в цветовом режиме того рас- тра, который был загружен первым. Основной режим при работе с пакетом Easy Trace режим векто- ризации, главное средство которого трассировка. Трассировкой называется процесс полуавтоматического или руч- ного прослеживания линии по еѐ изображению на растре. Инструментами векторизации в программе Easy Trace являются: трассировщик сплошных (пунктирных) линий; трассировщик ломаных линий; трассировщик ортогональных линий; трассировщик точечных линий; трассировщик заштрихованных областей; трассировщик залитых областей; прямоугольник; 3D полилиния. Управление всеми этими инструментами описано в соответст- вующих темах справочной системы Easy Trace. В зависимости от качества растра, плотности изображения и ха- рактера линии целесообразно применять ручной или полуавтоматиче- ский режим трассировки или их комбинацию. В любом случае про- цесс ввода полностью находится под контролем пользователя. В ручном режиме трассировки точки полилиний добавляются на- жатием левой клавиши «мыши». В полуавтоматическом режиме в об- щем случае достаточно указать точку затравки в любом месте трасси- руемой полилинии. При этом рекомендуется использовать достаточно большое увеличение (2 : 1 и выше) и выбирать для точки затравки участок полилинии, на котором не предвидится осложнений для трас- сировщика. Последней, заключительной стадией работы пакета Easy Trace яв- ляется операция Экспорт. В процессе векторизации Easy Trace хранит координаты и другие параметры оцифрованных объектов в своем внутреннем формате. Со- вместимость с практически любыми конечными системами (в основ- ном, ГИС) достигается за счет поддержки экспорта в общепринятые обменные форматы. Для выполнения операции Экспорт необходимо вызвать данную команду и определить параметры экспорта в открывшемся диалого- techn_rejim_trace.htm ../about/about_vector.htm 36 вом окне Экспорт, в котором выпадающий список позволяет выбрать один из следующих выходных форматов: DXF (обменный формат AutoCAD); DGN (обменный формат Intergraph Microstation); GEN (обменный формат ARC/INFO); MIF/MID (формат графических и атрибутивных данных пакета MapInfo); SHP (формат ArcView); ASC (формат WinGIS); TOP (формат CREDO); CSV (формат, определяемый пользователем). Помимо замены растровых изображений на векторные примитивы с последующей передачей их в ГИС (САПР), программа Easy Trace позволяет решать в процессе векторизации следующие задачи: минимизация числа векторных примитивов (две пересекаю- щиеся линии разных слоев должны остаться двумя линиями, а не четырьмя, сошедшимися в одной точке); восстановление информации, частично утраченной или иска- женной из-за износа бумажного носителя, дефектов чертежных инструментов, дефектов исполнения, погрешностей сканирова- ния; «расслоение» изображения по его смысловому содержанию (например, карта может содержать слои рельефа, коммуника- ций, границ, изобат и т. д.); введение атрибутивной информации для графического объекта (например, высота линии электропередач, литер навигационно- го знака и т. п.); построение корректной топологической структуры информа- ции, соответствующей требованиям конечной ГИС или САПР. Таким образом, с помощью программ-векторизаторов можно соз- давать файлы векторных и атрибутивных данных, несущие в себе го- раздо больше информации, чем исходный бумажный материал, и пре- вышающие его по точности. Программы-векторизаторы, как правило, не предназначены для редактирования содержания растровых файлов (стирание, рисование) и достижения сходства между исходным растровым изображением и его векторным аналогом (штриховки, заливки, сложные топографиче- ские знаки). На рис. 4 изображѐн фрагмент проекта Easy Trace с участком бе- реговой линии в растровом и векторном форматах, который позволяет 37 сравнить два изображения электронных карт: растровых и векторных. Рис. 4. Растровое и векторное изображения в проекте Easy Trace Растровые картографические дисплейные системы (РКДС) РКДС представляют собой растровые навигационные карты (РНК) и средства электронного позиционирования (определения места суд- на). Появление и развитие таких систем прошло почти незамеченным, тогда как все внимание мирового морского сообщества было сфо- кусировано на электронных картографических дисплейных информа- ционных системах (ЭКДИС), в которых используются электронные навигационные карты (ЭНК) векторного формата. Однако в настоя- щее время по меньшей мере пять национальных гидрографических служб производят официально признанные РНК, общая продажа ко- торых за период после 1995 года достигла 1,5 2 миллионов экземпля- ров, в том числе в США более 600 тыс. растровых карт, которые ис- пользуются на всех видах транспорта. Растровое изображение Векторное изображение 38 В основе технологии производства РНК лежит сканирование обычных бумажных навигационных карт. В процессе сканирования создаются компьютерные цифровые файлы, содержащие визуальное изображение бумажной карты в виде матрицы точек (пикселей) раз- личного цвета и плотности, называемое побитовым изображением. Разрешение выбирается таким, чтобы обеспечить качественное и дос- товерное изображение карты на мониторе компьютера. При этом од- нако возникают проблемы с объемом файлов, поскольку увеличение разрешения ведет к увеличению объема файла и соответственно тре- бует увеличения памяти в геометрической прогрессии. Так, увеличе- ние низкого разрешения в 75 dpi (пикселей на дюйм) до сравнительно высокого разрешения 300 dpi приводит к увеличению объема файла в 16 раз. Затем производится тщательная привязка цифровых файлов к со- ответствующему референц-эллипсоиду, с тем чтобы навигационное программное обеспечение могло определять географические коорди- наты объектов на изображении карты. Полученные файлы дополня- ются метаданными, которые описывают карту, ее систему геодезиче- ских координат (нуль карты), проекцию и другую информацию о кар- те и цифровом файле. После этого специалисты-гидрографы обычно корректируют цифровые файлы, чтобы получить совершенную карто- графическую проекцию. При этом устраняются остаточные искаже- ния, которые могли иметь место на цветовых оттисках или могли быть внесены в изображение при сканировании. На завершающем этапе ре- зультирующий массив цифровых данных транслируется в конкретный растровый формат, готовый для последующего распространения. Ко- нечный продукт поступает на рынок в виде дискет или лазерных дис- ков. Векторные навигационные карты Векторное представление данных позволяет создать электронную карту как совокупность отдельных элементов и поэтому даѐт много дополнительных возможностей. Судоводитель может включать или выключать на экране отобра- жение различных классов картографических объектов, подбирая удобную для данных условий плавания конфигурацию отображения карты. Можно установить слежение за любым ориентиром, установив на нем специальный маркер, включить тревожную сигнализацию при подходе к опасностям и т. п. Векторное представление данных позво- 39 ляет объединять картографическую информацию с информацией, ко- торой нет на самой карте, вводить новые информационные слои, на- пример: создавать прямо на карте предварительную прокладку, которую можно записать в виде отдельного файла для использования в дальнейшем; наносить на карту различные зоны, линии, надписи, условные знаки. При этом содержимое самой карты не изменяется; накладывать на карту данные о целях, получаемые от САРП, и т. п. Векторная форма представления данных имеет важное значение для последующей корректуры ЭК. Изменяется не вся карта, а лишь еѐ отдельные элементы. Карты фирмы TRANSAS MARINE включают в себя практически всю информацию о водной части бумажных карт и информацию о суше, которая важна с точки зрения навигации. Это более 100 слоѐв информации. Технология производства векторных карт имеет мощ- ный математический аппарат по пересчѐту различных картографиче- ских проекций, компенсации деформации и дефектов бумажных карт, а также аппарат предварительной математической проверки карт, на- пример, на присутствие нулевых глубин, пустых текстов, наличие глубин, больших или меньших диапазона безопасных глубин в этом месте. Точность нанесения объектов на ЭК оценивается в 0,2 мм. Разработка растровых и векторных навигационных карт для ЭКС «Кадет» Для примера рассмотрим по пунктам технологию разработки рас- тровых и векторных навигационных карт для ЭКС «Кадет». 1. Готовим бумажную карту к сканированию. Для этого выби- раем область сканирования, включающую в себя не менее двух растров формата А4 (предполагается, что будет ис- пользоваться сканер формата А4). Растры должны распола- гаться друг к другу так, чтобы на общем поле этих растров можно было указать две общие точки, принадлежащие обо- им растрам. Отмечаем эти точки на карте. 2. Запускаем программу-векторизатор Easy Trace с помощью ярлыка на рабочем столе или через кнопку ПУСК и опцию Программы. 40 3. В меню Файл выбираем опцию Сканировать, сканируем подготовленные согласно пункту 1 растры бумажной карты в чѐрно-белом изображении и сохраняем их в своей рабочей папке. 4. В меню Файл выбираем опцию Открыть растр и открыва- ем отсканированные растры. 5. Активизируем первый растр, входим в меню Редактирова- ние и выбираем опцию Сшивка (эти команды можно выпол- нить через соответствующие кнопки на панели инструмен- тов). 6. В появившемся окне указываем второй растр для соедине- ния. Для этого можно воспользоваться выпадающим спи- ском, где содержатся уже открытые или недавно использо- вавшиеся документы, или диалоговым окном Открыть растровый файл, которое открывается при нажатии кнопки справа от поля ввода имени файла (данное окно является стандартным для Windows окном выбора файлов). Когда второй растр выбран, можно нажать кнопку ДАЛЕЕ для пе- рехода к следующему этапу. 7. В диалоговом окне Мастер соединения растров (шаг 2 из 3) необходимо выбрать пару проставляемых точек (по умолча- нию активизирована первая пара). Затем наводим указатель мыши в виде перекрестия на первую общую точку, распо- ложенную на первом растре, и щѐлкаем по ней левой кноп- кой мыши. После этого переводим указатель-перекрестие мыши на второй растр, находим на нѐм также первую об- щую точку и, наведя на неѐ перекрестие, щѐлкаем по ней ле- вой кнопкой мыши. Для контроля изображения проставляе- мых точек будут появляться на схеме фрагментов. Далее в диалоговом окне Мастер соединения растров (шаг 2 из 3) выбираем вторую пару точек (нажимаем на кнопку с цифрой «2») и выполняем те же самые команды, что и для первой пары точек. Когда две пары точек проставлены, можно на- жать на кнопку ДАЛЕЕ. 8. Если всѐ сделано правильно, то в диалоговом окне Мастер соединения растров (шаг 3 из 3) появится сообщение, что программа закончила сшивку растров, и тогда можно нажать на кнопку ГОТОВО. 9. Третий растр, полученный путѐм сшивки из двух первых, сохраняем в своей рабочей папке. 41 10. Входим в меню Редактирование и выбираем опцию Инвер- сия. 11. Входим в меню Файл и выбираем опцию Новый проект. 12. В появившемся диалоговом окне Новый проект устанавли- ваем флажок напротив параметра Создать по растровому фрагменту и указываем третий растр, по фрагменту которо- го будет создаваться новый проект. Для этого так же, как и при выполнении пункта 6, можно воспользоваться выпа- дающим списком, где содержатся уже открытые или недав- но использовавшиеся документы, или диалоговым окном Открыть растровый файл. Когда третий растр выбран, можно нажать кнопку ДАЛЕЕ для перехода к следующему этапу. 13. В появившемся окне диалога Свойства проекта на вкладке Координаты (устанавливается по умолчанию) в поле Раз- решение DPI вписываем или выбираем из списка число 300. Если необходимо, то указываем и другие свойства. После этого нажимаем на кнопку ОК. 14. Если растровое изображение карты содержит несколько слоѐв (береговая черта, изобаты, горизонтали и т. п.), то для их создания необходимо войти в меню Проект и выбрать опцию Слои проекта. По умолчанию устанавливается один слой, обозначенный цифрой 0. 15. Через меню Инструменты и опцию Трассировка или с по- мощью кнопок на панели инструментов выбираем инстру- мент трассировки (для векторизации береговой линии и изобат подойдѐт инструмент Кривая). Затем переводим ука- затель мыши в виде косого крестика на векторизуемый элемент растрового изображения (например, на береговую линию) и щѐлкаем по нему левой кнопкой мыши. Для того чтобы завершить процесс трассировки, отжимаем кнопку с соответствующим инструментом трассировки или нажима- ем на правую кнопку мыши и в появившемся контекстном меню щѐлкаем по кнопке ЗАВЕРШИТЬ И НАЧАТЬ (кноп- ка с изображением косой черты, наклонѐнной влево). Эту команду повторяем дважды. 16. После завершения трассировки входим в меню Файл и вы- бираем опцию Экспорт. В появившемся диалоговом окне Общие в списке поля Формат выбираем формат DXF – Формат AutoCAD или другой формат. 42 17. В поле Файл в диалоговом окне Сохранить как, которое от- крывается при нажатии кнопки справа от поля ввода имени файла, указываем имя сохраняемого файла и место для со- хранения и нажимаем кнопку СОХРАНИТЬ. После этого в диалоговом окне Общие нажимаем на кнопку ДАЛЕЕ для перехода к следующему этапу. 18. В диалоговом окне Слои указываем экспортируемый слой (в нашем примере выбираем все слои) и нажимаем на кноп- ку ДАЛЕЕ. 19. В диалоговом окне Опции DXF указываем нужные пара- метры, если требуется, и нажимаем на кнопку ГОТОВО. 20. В окне Информация будут указаны параметры экспорта. Здесь же нажимаем на кнопку ОК. 21. Полученную векторную карту в формате DXF экспортиру- ем из AutoCAD в формат BMP, для того чтобы для ведения на ней прокладки использовать графический редактор Paint и включаем в базу данных для использования в ЭКС «Ка- дет». Вопросы для самоконтроля 1. Дайте характеристику растровой и векторной графики. 2. Перечислите и охарактеризуйте основные способы оциф- ровки навигационных карт. 3. Что такое растровые карты? 4. Что такое векторные карты? 5. Перечислите и охарактеризуйте основные шаги при разра- ботке растровых и векторных карт. 43 4. РАЗРАБОТКА СУДОВОГО ЭЛЕКТРОННОГО КАТАЛОГА Начало работы c Microsoft Access, объекты базы данных, окно базы данных, открытие базы данных, разработка судового электронного каталога навигационных карт для ЭКС «Кадет» Начало работы c Microsoft Access База данных – это совокупность данных, например, судовой ка- талог карт и книг. Реляционная база данных – это база данных, ко- торая позволяет определять отношения между различными катего- риями данных, содержащимися в ней, например, между навигацион- ными картами и датой их корректуры. Microsoft Access это гибкая программа, позволяющая работать как с простыми, так и со сложными базами данных. Следует добавить, что это реляционная база данных, то есть база данных, которая по- зволяет определять отношения между различными категориями ин- формации (как, например, между данными о грузоотправителях и дан- ными об их грузах). В результате можно пользоваться данными совместно. Чтобы запустить Microsoft Access, щелкните на кнопке ПУСК на панели задач и выполните команды: Программы, Microsoft Access. Ко- гда Access начнет работу, на экране появится окно диалога (рис. 5). Рис. 5. Начальное окно диалога Microsoft Access 44 Список имен, перечисленных в нижней части окна, будет меняться в зависимости от того, какие базы данных или проекты вы создали ра- нее. На данном этапе есть выбор: создать новую базу данных, полагаясь на свои знания, или вос- пользоваться помощью Мастера баз данных (Database Wizard); создать страницу доступа к данным (Data Access page), чтобы просматривать данные с помощью броузера Internet Explorer; создать проект Microsoft Access; открыть базу данных или проект, которые были созданы ранее. Объекты базы данных Microsoft Access Основу базы данных составляют хранящиеся в ней данные. Одна- ко в базе данных Access есть и другие важные компоненты, которые принято называть объектами: Таблицы содержат данные. Запросы позволяют задавать условия для отбора данных и вносить изменения в данные. Формы позволяют просматривать и редактировать информа- цию. Страницы файлы в формате HTML (Hypertext Markup Language язык разметки гипертекста), позволяющие просмат- ривать данные Access с помощью броузера Internet Explorer. Отчеты позволяют обобщать и распечатывать информацию. Макросы выполняют одну или несколько операций автома- тически. Еще один тип объектов Microsoft Access это модули. Модуль это программа автоматизации и настройки функций базы данных, на- писанная на языке VB. В настоящем учебном пособии рассматривает- ся, как создать и отладить базу данных, в основном, без применения программирования. Любая информация, которую вы заносите в базу данных Microsoft Access, сохраняется в таблице, показанной на рис. 6 в режиме Конст- руктора. 45 Рис. 6. Таблица в режиме Конструктора Как видно на рис. 6, таблица состоит из строк и столбцов. На язы- ке базы данных строки называются записями, а столбцы полями. В Microsoft Access существует множество различных способов создания таблицы. Эти способы рассматриваются в специальной литературе. Окно базы данных Microsoft Access В каждой базе данных Microsoft Access имеется окно базы данных, показанное на рис. 7. Рис. 7. Окно базы данных 46 В этом окне находится панель ОБЪЕКТЫ (Objects) со следующи- ми кнопками: ТАБЛИЦЫ (TABLES), ЗАПРОСЫ (QUERIES), ФОРМЫ (FORMS), ОТЧЕТЫ (REPORTS), СТРАНИЦЫ (PAGES), МАКРОСЫ (MACROS) и МОДУЛИ (MODULES). В окне базы данных также имеется своя панель инструментов со следующими кнопками: ОТКРЫТЬ (OPEN) для открытия объекта базы данных и ра- боты с ним; ПРОСМОТР (PREVIEW) для открытия отчета в режиме предварительного просмотра (только для отчетов); ЗАПУСК (RUN) для запуска макроса или модуля (только для макросов и модулей); КОНСТРУКТОР (DESIGN) для изменения макета выбранно- го объекта; СОЗДАТЬ (NEW) для создания нового объекта базы данных. Открытие базы данных Microsoft Access Для открытия базы данных: в меню Файл (File) выберите имя файла в списке, расположен- ном прямо над командой Выход (Exit). Этот список содержит имена баз данных, с которыми вы недавно работали; щелкните два раза на значке базы данных в окне Проводника Windows; щелкните на кнопке ОТКРЫТЬ (OPEN) на панели инструмен- тов; щелкните правой кнопкой мыши на строке заголовка или на се- рой области окна базы данных и выберите в контекстном меню пункт ОТКРЫТЬ (OPEN); выберите команду Файл (File), Открыть (Open); нажмите клавиши Ctrl+O. В результате любого из этих действий, кроме двух первых, на эк- ране появится окно диалога Открытие файла базы данных (Open), изображенное на рис. 8. 47 Рис. 8. Окно диалога Открытие файла базы данных В этом окне выберите базу данных, с которой будете работать. Чтобы выбрать базу данных в списке этого окна диалога, щѐлкните два раза на ее имени или, выделив имя, щелкните на кнопке ОТКРЫТЬ (OPEN). Для открытия базы данных, которую открывали недавно, в рас- крывающемся списке Имя файла (File Name) найдите имя файла этой базы данных и щѐлкните по нему мышью. Для открытия базы данных имеются другие способы. Совместное использование технологий Microsoft Access и Visual Basic позволяет получить удобное для работы на морских судах при- ложение в виде электронного каталога, который позволяет добавлять к нему другие базы (например, базу данных судовой коллекции карт и книг). Разработка приложений в виде совокупности баз данных, таких как судовой электронный каталог, позволит штурману лучше ориен- тироваться в «океане» информации. В свою очередь это приведѐт к повышению уровня безопасности мореплавания и обеспечит эффек- тивную производственную деятельность судна. Кроме того, судовой электронный каталог является важным звеном в актуальных и пер- спективных для программного обеспечения ЭВМ морских судов при- ложениях – АРМ судоводителей. 48 Разработка судового электронного каталога навигационных карт для ЭКС «Кадет» Разработка судового электронного каталога навигационных карт состоит из двух этапов. На первом этапе с помощью системы управ- ления базами данных создаѐтся база данных, например, судовой кол- лекции карт. На втором этапе созданная база данных подключается к программе, написанной в VB (ЭКС «Кадет»). Создание базы данных судовой коллекции карт в Microsoft Access состоит из следующих шагов: 1. Запускаем Microsoft Access и выполняем команду Создать новую базу данных. Это можно сделать через меню Файл пу- тѐм выбора следующих опций: Создать, База данных. 2. В появившемся окне указываем имя файла создаваемой базы данных (по умолчанию db1) и место для сохранения, напри- мер, Z:\Рабочие документы\Иванов\db1.mdb (файл с базой данных сохраняем в своей рабочей папке). 3. Выбираем опцию Создание таблицы в режиме конструк- тора. В раскрывшемся окне в первой клетке столбца, оза- главленного Имя поля, вводим имя поля создаваемой табли- цы базы данных, например, Карты. В первой клетке столб- ца, озаглавленного Тип данных, с помощью контекстного меню, которое появляется при нажатии на правую кнопку мыши, выбираем тип данных таблицы. Для карт указываем Поле объекта OLE. 4. Закрываем окно конструктора таблиц с сохранением струк- туры данных таблицы (по умолчанию таблица называется Таблица 1). При этом на вопрос Создать ключевое поле сей- час? отвечаем положительно и возвращаемся к окну базы данных. 5. В окне базы данных двойным щелчком левой кнопки мыши по названию созданной таблицы раскрываем таблицу и щѐл- каем правой кнопкой мыши в пустой клетке, озаглавленной именем поля, введѐнного в режиме конструктора. 6. В появившемся контекстном меню выбираем опцию Доба- вить объект. 7. В раскрывшемся окне Вставка объекта выбираем опцию Создать из файла, ставим флажок в опции Связь и через кнопку ОБЗОР указываем файл с данными, который требу- 49 ется включить в базу данных, например, Японское море.bmp с изображением карты и нажимаем кнопку ОК, а затем за- крываем Microsoft Access. 8. Для того чтобы открыть созданную таким путѐм базу дан- ных в VB, необходимо сделать еѐ преобразование путѐм вы- полнения следующих команд меню Сервис: Служебные про- граммы, Преобразовать базу данных, К предыдущей версии базы данных Access. Преобразованную базу данных необхо- димо сохранить и затем использовать еѐ для подключения к ЭКС «Кадет». При преобразовании на замечание о возмож- ной потере данных отвечаем утвердительно. В результате выполненных действий в таблицу базы данных будет включѐн файл с навигационными картами, который открывается вме- сте с приложением, в котором этот файл был создан (Paint). Таким об- разом можно открыть растровое изображение карты одновременно с запуском графического редактора Paint, для того чтобы с его помо- щью выполнять прокладку на этой карте. Подключение разработанной базы данных к ЭКС «Кадет» выпол- няется следующим образом: 1. Запускаем VB и открываем программу ЭКС «Кадет». На главную форму этой программы наносим элементы OLE и Data, так, как это показано на рис. 9. Рис. 9. Элементы OLE и Data на главной форме ЭКС «Кадет» Элемент OLE Элемент Data 50 2. Активизируем элемент Data и в окне свойств для этого эле- мента указываем следующие свойства: Connect – Access (задаѐтся по умолчанию); DatabaseName – путь к созданной базе данных и имя файла ба- зы данных, например, Z:\Рабочие документы\Иванов\db1.mdb; RecordSource – имя созданной таблицы базы данных, которая выбирается в этом свойстве из списка, например, Таблица 1; 3. Активизируем элемент OLE и задаѐм для него следующие свойства: DataSource – имя (Name) базы данных (по умолчанию Data1); DataField – имя поля таблицы базы данных, в котором находят- ся данные, например, Карты; 4. Запускаем программу кнопкой START на панели инстру- ментов или клавишей F5 и, если потребуется, делаем отлад- ку программы. Вопросы для самоконтроля 1. Что такое база данных? 2. Что такое реляционная база данных? 3. Как открыть базу данных Microsoft Access? 4. Перечислите и охарактеризуйте объекты базы данных Microsoft Access. 5. Перечислите и охарактеризуйте основные шаги при разра- ботке базы данных и еѐ подключении к VB. 51 5. ПРИВЯЗКА ИЗОБРАЖЕНИЯ НАВИГАЦИОННОЙ КАРТЫ К СИСТЕМЕ КООРДИНАТ ГРАФИЧЕСКОГО РЕДАКТОРА Использование графических редакторов для ведения навигационной прокладки; перевод географических координат текущей точки в прямоугольные координаты; перевод прямоугольных координат текущей точки в географические координаты; привязка растровых навигационных карт базы данных ЭКС «Кадет» к географической системе координат; код программы ЭКС «Кадет» Использование графических редакторов для ведения навигационной прокладки Графические редакторы, такие как Paint, Corel Draw, Autocad и другие, постоянно совершенствуясь, достигли такого уровня, при ко- тором их возможности можно использовать в навигационных целях для ведения прокладки. Эти редакторы позволяют вести навигацион- ную прокладку как на растровых, так и на векторных изображениях навигационных карт. Графические редакторы, например, Paint, доступны широкому кругу пользователей и позволяют использовать навигационные карты, оцифрованные и в случае необходимости векторизованные судоводи- телем, бумажный аналог или электронный вариант которых имеется в его распоряжении. Следует заметить, что изображения навигационных карт, исполь- зуемые в графических редакторах, не должны заменять бумажные и лицензированные электронные навигационные карты, но их можно применять для планирования рейса при ведении навигационной пред- варительной прокладки, в учебном процессе и в случае, если на судне отсутствует необходимая бумажная или электронная навигационная карта. Однако при использовании графических редакторов в качестве средства для ведения навигационной прокладки возникает проблема, которая заключается в установлении соответствия географической системы координат навигационной карты прямоугольной системе ко- ординат графического редактора. Т. е. перевод географических коор- динат , точки на навигационной карте в прямоугольные координа- ты X, Y точки на изображении навигационной карты, представленном в электронном виде, и наоборот (привязка изображения навигацион- ной карты к системе координат графического редактора). 52 Перевод географических координат текущей точки в прямоугольные координаты Рассмотрим перевод географических координат текущей точки , в прямоугольные координаты xt и yt для северных широт и восточ- ных долгот (для координат остальных наименований привязка осуще- ствляется аналогичным образом, но с учѐтом знаков, так, как это при- нято в навигации). Составим следующую пропорцию: , ; ttx РДX ( 1) где X – абсцисса нижнего правого угла карты; РД – разность долгот нижнего правого и верхнего левого углов карты; xt – абсцисса текущей точки; t – разность долгот текущей точки и верхнего левого угла карты. Из составленной пропорции найдѐм ,xtt kx где . РД X k x Для нахождения ординаты текущей точки yt составим пропорцию , ; tt РМЧy РМЧY ( 2) где Y – ордината нижнего правого угла карты; РМЧ – разность меридиональных частей верхней и нижней рамок карты, рассчитываемая по формуле , ОТШ РШРД РМЧ где РШ – разность широт верхней и нижней рамок карты; ОТШ – отшествие между верхним левым и правым нижним углами карты. 53 РМЧt – разность меридиональных частей верхней рамки карты и текущей точки, рассчитываемая по формуле , t tt t w РМЧ где t – разность широт между верхней рамкой карты и текущей точкой; wt – отшествие между верхним левым углом карты и текущей точкой. Из пропорции (2) найдѐм . РМЧ РМЧY y tt Обозначим ,yk РМЧ Y тогда .ytt kРМЧy ( 4) Перевод прямоугольных координат текущей точки в географические координаты Рассмотрим перевод прямоугольных координат xt и yt текущей точки в географические координаты , также для северных широт и восточных долгот. Для перевода ординаты yt в географическую широту воспользу- емся составленной ранее пропорцией (2) и выражением (4), из которо- го определим . y t t k y РМЧ Разность широт t найдѐм по формуле 54 . t tt t wРМЧ ( 5) В формуле (5) , x t t k x а wt можно найти из выражения .cos mttw ( 6) В выражении (6) в качестве начального значения m можно при- нять среднюю широту карты, т. е. , 2 нв m где в, н – широта верхней и нижней рамок карты соответствен- но. По мере итерационного уточнения широты текущей точки, кото- рое в программном виде можно организовать в виде цикла, значение m также должно уточняться до тех пор, пока текущее значение t не будет отличаться от его предыдущего значения на заданную малую величину. Определив t и t, географические координаты текущей точки можно найти из выражений , ; tлt tвt где л – долгота левой рамки карты. Привязка растровых навигационных карт базы данных ЭКС «Кадет» к географической системе координат 55 Рассмотрим в качестве примера привязку растровых навигацион- ных карт базы данных ЭКС «Кадет» к географической системе коор- динат для северных широт и восточных долгот. Цель этого примера заключается в том, чтобы показать, каким об- разом можно подготовить растровые навигационные карты к ведению на них прокладки с помощью графического редактора Paint. Технология привязки состоит из следующих шагов: 1. На главную форму ЭКС «Кадет» нанести элементы, изобра- жѐнные на рис. 10 под заголовком Привязка карты. В соот- ветствии с рис. 10 указать их свойство Caption. Рис. 10. Главная форма с элементами привязки карты 2. Переходим к окну кодов (см. вторую лекцию) и объявляем переменные величины, так, как это показано на нижеприве- дѐнном фрагменте: 'Привязка карты (объявление переменных величин) Dim f1r As Single 'Широта верхнего левого угла рамки карты Dim f2r As Single 'Широта нижнего правого угла рамки 56 Dim X1 As Single 'Координата X верхнего левого угла рамки Dim Y1 As Single 'Координата Y верхнего левого угла рамки Dim L1r As Single 'Долгота верхнего левого угла рамки Dim L2r As Single 'Долгота нижнего правого угла рамки Dim X2 As Single 'Координата X нижнего правого угла рамки Dim Y2 As Single 'Координата Y нижнего правого угла рамки Dim dLr As Single 'Разность долгот рамки Dim Kx As Single 'Коэффициент по оси x Dim Ky As Single 'Коэффициент по оси y Dim xt As Single 'Координата x текущей точки Dim yt As Single 'Координата y текущей точки Dim dLt As Single 'Разность долгот левой рамки карты и текущей точки Dim Lt As Single 'Долгота текущей точки Dim fsrk As Single 'Средняя широта карты Dim fsrt As Single 'Средняя широта текущей точки Dim OTr As Single 'Отшествие между верхним левым и нижним правым углами карты Dim OTt As Single 'Отшествие текущей точки Dim RMCHr As Single 'РМЧ рамки карты Dim rmcht As Single 'Разность меридиональных частей текущей точки Dim dfr As Single 'Разность широт верхней и нижней рамок карты Dim dft As Single 'Текущая разность широт Dim dfti As Single 'Предыдущее значение текущей разности широт Dim Ft As Single 'Широта текущей точки 3. Переходим к окну дизайнера форм и дважды щѐлкаем по элементу Option1. Перейдя к окну кодов, в место, в котором находится курсор, записываем следующие коды: 'Привязка карты (перевод географических координат в X и Y) Private Sub Option1_Click() f1r = Text13.Text L1r = Text14.Text X1 = Text15.Text Y1 = Text16.Text f2r = Text17.Text L2r = Text18.Text X2 = Text19.Text Y2 = Text20.Text Ft = Text11.Text Lt = Text12.Text dLr = L2r L1r Kx = (X2 X1) / dLr dLt = Lt L1r xt = dLt * Kx xt = X1 + xt Text9.Text = xt fsrk = (f1r + f2r) / 2 57 OTr = (dLr / 57.3) * Cos(fsrk / 57.3) OTr = OTr * 57.3 dfr = f1r f2r RMCHr = (dLr * dfr) / OTr Ky = (Y2 Y1) / RMCHr fsrt = (f1r + Ft) / 2 OTt = (dLt / 57.3) * Cos(fsrt / 57.3) OTt = OTt * 57.3 dft = f1r Ft rmcht = (dLt * dft) / OTt yt = rmcht * Ky yt = Y1 + yt Text10.Text = yt End Sub 4. Переходим к окну дизайнера форм и дважды щѐлкаем по элементу Option2. Перейдя к окну кодов, в место, в котором находится курсор, записываем следующие коды: 'Привязка карты (перевод X и Y в географические координаты Private Sub Option2_Click() f1r = Text13.Text L1r = Text14.Text X1 = Text15.Text Y1 = Text16.Text f2r = Text17.Text L2r = Text18.Text X2 = Text19.Text Y2 = Text20.Text xt = Text9.Text yt = Text10.Text xt = xt X1 yt = yt Y1 dLr = L2r L1r Kx = (X2 X1) / dLr dLt = xt / Kx Lt = L1r + dLt Text12.Text = Lt fsrk = (f1r + f2r) / 2 OTr = (dLr / 57.3) * Cos(fsrk / 57.3) OTr = OTr * 57.3 dfr = f1r f2r RMCHr = (dLr * dfr) / OTr Ky = (Y2 Y1) / RMCHr rmcht = yt / Ky Do dfti = dft OTt = (dLt / 57.3) * Cos(fsrk / 57.3) 58 OTt = OTt * 57.3 dft = (rmcht * OTt) / dLt Ft = f1r dft fsrk = (f1r + Ft) / 2 Loop Until Abs(dfti dft) 59 Рис. 11. Графическое представление результатов работы программы ЭКС «Кадет» Код программы-приложения ЭКС «Кадет» для северных широт и восточных долгот и плавании судна курсами в NE четверти приведѐн ниже. Код программы-приложения ЭКС «Кадет» 'Объявление переменных величин (разработка главной формы) Dim f1 As Single 'Широта пункта отхода Dim f2 As Single 'Широта пункта прихода Dim L1 As Single 'Долгота пункта отхода Dim L2 As Single 'Долгота пункта прихода Dim df As Single 'Разность широт Dim dL As Single 'Разность долгот Dim fsr As Single 'Средняя широта Dim OT As Single 'Отшествие Dim K As Single 'Истинный курс Dim S As Single 'Расстояние Dim V As Single 'Скорость Dim T As Single 'Время 'Объявление переменных величин (привязка карты) Dim f1r As Single 'Широта верхнего левого угла рамки карты Dim f2r As Single 'Широта нижнего правого угла рамки Dim X1 As Single 'Координата X верхнего левого угла рамки Dim Y1 As Single 'Координата Y верхнего левого угла рамки Dim L1r As Single 'Долгота верхнего левого угла рамки Dim L2r As Single 'Долгота нижнего правого угла рамки Dim X2 As Single 'Координата X нижнего правого угла рамки Dim Y2 As Single 'Координата Y нижнего правого угла рамки Dim dLr As Single 'Разность долгот рамки Dim Kx As Single 'Коэффициент по оси x Dim Ky As Single 'Коэффициент по оси y Dim xt As Single 'Координата x текущей точки Dim yt As Single 'Координата y текущей точки Dim dLt As Single 'Разность долгот левой рамки карты и текущей точки Dim Lt As Single 'Долгота текущей точки Dim fsrk As Single 'Средняя широта карты Dim fsrt As Single 'Средняя широта текущей точки Dim OTr As Single 'Отшествие между верхним левым и нижним правым уг- лами карты Dim OTt As Single 'Отшествие текущей точки Dim RMCHr As Single 'РМЧ рамки карты Dim rmcht As Single 'Разность меридиональных частей текущей точки Dim dfr As Single 'Разность широт верхней и нижней рамок карты 60 Dim dft As Single 'Текущая разность широт Dim dfti As Single 'Предыдущее значение текущей разности широт Dim Ft As Single 'Широта текущей точки Private Sub Command1_Click() f1 = Text1.Text ‘Ввод исходных данных в соответствующее текстовое поле L1 = Text2.Text f2 = Text3.Text L2 = Text4.Text df = f2 f1 dL = L2 L1 fsr = (f1 + f2) / 2 OT = (dL / 57.3) * Cos(fsr / 57.3) ‘Углы под знаком тригонометрической функ- ции вводятся в радианах K = OT / (df / 57.3) K = Atn(K) S = (((df / 57.3) * (1 / Cos(K))) * 57.3) * 60 K = K * 57.3 Text6.Text = K ‘Вывод результатов в соответствующее текстовое поле Text7.Text = S V = Text5.Text T = S / V Text8.Text = T End Sub Private Sub Command2_Click() End End Sub 'Привязка карты (перевод географических координат в X и Y) Private Sub Option1_Click() f1r = Text13.Text L1r = Text14.Text X1 = Text15.Text Y1 = Text16.Text f2r = Text17.Text L2r = Text18.Text X2 = Text19.Text Y2 = Text20.Text Ft = Text11.Text Lt = Text12.Text dLr = L2r L1r Kx = (X2 X1) / dLr dLt = Lt L1r xt = dLt * Kx xt = X1 + xt Text9.Text = xt 61 fsrk = (f1r + f2r) / 2 OTr = (dLr / 57.3) * Cos(fsrk / 57.3) OTr = OTr * 57.3 dfr = f1r f2r RMCHr = (dLr * dfr) / OTr Ky = (Y2 Y1) / RMCHr fsrt = (f1r + Ft) / 2 OTt = (dLt / 57.3) * Cos(fsrt / 57.3) OTt = OTt * 57.3 dft = f1r Ft rmcht = (dLt * dft) / OTt yt = rmcht * Ky yt = Y1 + yt Text10.Text = yt End Sub 'Привязка карты (перевод X и Y в географические координаты Private Sub Option2_Click() f1r = Text13.Text L1r = Text14.Text X1 = Text15.Text Y1 = Text16.Text f2r = Text17.Text L2r = Text18.Text X2 = Text19.Text Y2 = Text20.Text xt = Text9.Text yt = Text10.Text xt = xt X1 yt = yt Y1 dLr = L2r L1r Kx = (X2 X1) / dLr dLt = xt / Kx Lt = L1r + dLt Text12.Text = Lt fsrk = (f1r + f2r) / 2 OTr = (dLr / 57.3) * Cos(fsrk / 57.3) OTr = OTr * 57.3 dfr = f1r f2r RMCHr = (dLr * dfr) / OTr Ky = (Y2 Y1) / RMCHr rmcht = yt / Ky Do dfti = dft OTt = (dLt / 57.3) * Cos(fsrk / 57.3) OTt = OTt * 57.3 dft = (rmcht * OTt) / dLt 62 Ft = f1r dft fsrk = (f1r + Ft) / 2 Loop Until Abs(dfti dft) 63 6. WEB-ТЕХНОЛОГИЯ В СУДОВОЖДЕНИИ Основные понятия Web-технологии, «инструменты» Web-технологии, язык разметки гипертекста (HTML), структура HTML-документа, использование Web-технологии в судовождении Основные понятия Web-технологии Технология World Wide Web, или Web-технология была изобрете- на в начале 90-х годов и нашла широкое применение для информаци- онного обмена. Основой Web-технологии является гипертекстовая информационная система «клиент – сервер». Web-технология – это технология навигации по гиперссылкам. Гиперссылка – это помеченная позиция в документе, указываю- щая на другие объекты в виде текста, картинки, а также Web- страницы. При активизации гиперссылки совершается переход на ука- занный объект. Гипертекстом называется документ, содержащий гиперссылки. Web-сайт – это упорядоченный набор текстовой и графической информации в виде web-страниц, связанных между собой гипертек- стовыми ссылками, который располагается на Web-сервере и имеет своѐ имя (адрес). Основные «инструменты» Web-технологии Web-серверы. Компьютеры, исполняющие программы для обра- ботки клиентских запросов к ресурсам. Один компьютер может одно- временно исполнять роль множества серверов в зависимости от про- граммного обеспечения, установленного на нѐм (Web-сервер, FTP- сервер, файл-сервер и т. д.). Браузеры (прямое озвучивание английского названия про- граммы Web-browser, броузеры, обозреватели). Клиентские про- граммы, генерирующие запросы к ресурсам и направляющие их Web- серверам. К таким программам относятся: Internet Explorer, Netscape Navigator, Opera и др. Протокол передачи гипертекстовых файлов (HTTP, Hypertext Transfer Protocol). Это протокол прикладного уровня из набора TCP/IP, используемый серверами и браузерами для взаимодействия друг с другом. Протокол – это набор правил, по которым составляется программный код приложения. Язык разметки гипертекста (HTML, Hypertext Markup Lan- 64 guage). Это язык программирования, применяемый для создания Web- страниц. Язык разметки гипертекста (HTML) HTML давно уже не просто язык разметки гипертекста. Понятие HTML сейчас включает способы оформления Web-страниц, гипертек- стовые редакторы, браузеры и т. п. Знать этот язык это значит пред- ставлять возможности в оформлении страниц, уметь делать сложные программы быстро и простыми способами, наконец, не только видеть и слепо копировать, но и понимать то, что сделано другими. Важно овладеть и художественными приѐмами оформления стра- ниц. Путешествие по Word Wide Web это, с одной стороны, переход с одного Web-сервера на другой, но с другой переходы с одних Web-страниц с их картинками, гиперссылками, дизайном на другие. И чем привлекательней выполнена страничка, тем, как правило, дольше пользователь задержится на ней и получит больше полезной инфор- мации. Гипертекстовые технологии из-за географии их начальных разра- боток сохраняют англоязычную терминологию, что до некоторой сте- пени создает трудности для пользователей, слабо владеющих англий- ским языком. Однако язык HTML оперирует сотней терминов, что яв- ляется вполне приемлемым для быстрого усвоения. В языке HTML приняты следующие термины и понятия. Элемент конструкция языка HTML, состоящая из одного или двух тегов, атрибутов и текста. Тег – оператор языка HTML, который подаѐт команду браузеру на выполнение какого-то действия, заданного пользователем при актива- ции гиперссылки. Для выделения тегов используются угловые скобки, например, . Перед конечным тегом ставится косая черта с накло- ном влево. Большинство тегов – парные, например, Самый крупный заголовок . Пример непарного тега: . Теги могут иметь атрибуты, уточняющие действие тега, например, Выравнивание заголовка по центру . Атрибут – параметр элемента. Он располагается внутри начально- го тега и принимает одно из возможных (стандартных или произволь- ных) значений. Символьные значения в отличие от числовых заклю- чаются в кавычки (некоторые браузеры позволяют опускать кавычки). HTML-страница – документ, созданный в виде гипертекста на основе языка HTML. 65 Фрейм – область HTML-страницы, имеющая собственные полосы прокрутки. Код HTML – текст документа с включением элементов и атрибу- тов языка HTML. URL (Uniform Resourse Locator) – адрес конкретного объекта в Интернете. Он имеет вид http://www.название.домен/имя файла, где домен обозначение страны, региона или области деятельности и т. п. Апплет – программа, передаваемая на компьютер клиента и за- пускаемая при просмотре Web-страницы. Скрипт – программа, включенная в состав Web-страницы для расширения еѐ возможностей. Расширение – элемент, не входящий в стандартный набор эле- ментов языка, но используемый на практике для расширения возмож- ностей языка. Говоря о языке разметки гипертекста HTML, необходимо отме- тить некоторые его особенности. В языке реализован принцип, по которому не только допускается вложение элементов друг в друга, но вложение является краеуголь- ным камнем построения кода HTML-документа. Вложение элементов может быть многократным. При этом не все элементы могут вклады- ваться друг в друга, а только разрешенные: для большинства элемен- тов существуют группы элементов, которые могут в них вкладываться. Основной проблемой при описании и изучении HTML является определение набора атрибутов и их значений, допустимых для каждо- го элемента. Им будем уделять большое внимание. Недостающие опи- сания будут компенсированы большим числом приведѐнных примеров. Структура HTML-документа Название Web-страницы Содержимое страницы, которое будет выводиться в окне браузера Для написания HTML-документа можно использовать любой тек- стовый редактор, например, Блокнот, или специальную программу, например, Macromedia Dreamweaver. Созданный документ необходи- 66 мо сохранить в виде файла с расширением htm. Начальная Web- страница, как правило, имеет следующее имя файла: index.html. HTML-документ может иметь исполняемые модули (скрипты, сценарии), которые запускают специальные программы-апплеты. Эти исполняемые модули создаются с помощью специальных программ, например, JavaScript, VBScript. Последнюю версию HTML-учебника можно найти на Web-сайте: www.citforum.ru. Использование Web-технологии в судовождении Имеются многочисленные примеры использования Web- технологии в судовождении [20]. К ним относятся: Электронная система информации о водных путях ELWIS Ми- нистерства водного транспорта Германии (http://www.elwis.de); Web-сайт ГУНиО МО РФ (www.gunio.ru), где можно, напри- мер, получить электронные выпуски извещений мореплавате- лям (ЭВИМ) в формате PDF; Web-сайт РОССИЙСКОГО МОРСКОГО РЕГИСТРА СУДОХОДСТВА (http:// www.rs-head.spb.ru); Ресурс для обучения плавсостава и аттестации MARINEPROFTEST (http://www.marineproftest.narod.ru) и др. Вопросы для самоконтроля 1. Что такое Web-технология? 2. Перечислите «инструменты» Web-технологии и дайте им характеристику. 3. Перечислите и охарактеризуйте основные элементы языка HTML. 4. Какова структура HTML-документа? 5. Приведите примеры использования Web-технологии в судо- вождении. http://www.citforum.ru/ http://www.elwis.de/ http://www.gunio.ru/ http://www.rs-head.spb.ru/ http://www.marineproftest.narod.ru/ 67 7. ПРАКТИЧЕСКИЕ ЗАНЯТИЯ 7.1. Разработка главной формы ЭКС «Кадет» Цель: разработать главную форму ЭКС «Кадет», обеспечиваю- щую расчет курса судна (К), расстояния, пройденного судном на этом курсе (S) и времени плавания (T) после ввода координат пункта отхо- да (f1, L1) и прихода (f2, L2) и скорости судна (V). Задание: 1. Изучить теоретические сведения, изложенные в лекции «Разработка форм приложений в Visual Basic». 2. Запустить Visual Basic и нанести на форму-заготовку сле- дующие элементы: Надписи (Label), Текстовые поля (TextBox), Кнопки (CommandButton). Надписи указанных элементов должны соответствовать тем, которые указаны на рис. 3. 3. Перейти к окну кодов и в соответствии с расчѐтными фор- мулами, приведѐнными во второй лекции, написать коды программы по нижеприведѐнным вариантам: Вариант № 1: Дано: северная; восточная; курсы судна в SE четверти. Вариант № 2: Дано: северная; восточная; курсы судна в SW четверти. Вариант № 3: Дано: северная; восточная; курсы судна в NW четверти. Вариант № 4: Дано: северная; западная; курсы судна в NE четверти. Вариант № 5: Дано: северная; западная; курсы судна в SE четверти. Вариант № 6: Дано: северная; западная; курсы судна в SW четверти. Вариант № 7: Дано: северная; западная; курсы судна в NW четверти. Вариант № 8: Дано: южная; восточная; курсы судна в NE четверти. Вариант № 9: Дано: южная; восточная; курсы судна в SE четверти. Вариант № 10: Дано: южная; восточная; курсы судна в SW четверти. Вариант № 11: Дано: южная; восточная; курсы судна в NW четверти. Вариант № 12: Дано: южная; западная; курсы судна в NE четверти. 7.2. Создание растровых навигационных карт Цель: создать растровую навигационную карту. Задание: 1. Изучить теоретические сведения, изложенные в лекции «Введение в технологию разработки растровых и векторных электронных навигационных карт». 2. Запустить Easy Trace, отсканировать 2 растра фрагмента на- вигационной карты по нижеприведѐнным вариантам и сде- лать их сшивку: 68 Вариант № 1: навигационная карта № 60090. Вариант № 2: навигационная карта № 60091. Вариант № 3: навигационная карта № 60092. Вариант № 4: навигационная карта № 60100. Вариант № 5: навигационная карта № 60101. Вариант № 6: навигационная карта № 62071. Вариант № 7: навигационная карта № 68006. Вариант № 8: навигационная карта № 62082. Вариант № 9: навигационная карта № 62171. Вариант № 10: навигационная карта № 67351. Вариант № 11: навигационная карта № 62028. Вариант № 12: навигационная карта № 63002. 3. Результирующий 3-й растр сохранить в формате bmp. 7.3. Векторизация растровых навигационных карт Цель: создать векторную навигационную карту. Задание: 1. Запустить Easy Trace и командой Цветовой режим в меню Редактирование выполнить цветоразделение векторизуемо- го растра (из файла формата bmp создать монохромный растр). Для векторизации использовать растр, подготовлен- ный по варианту подраздела 7.2. 2. Создать новый проект. 3. Выполнить трассировку береговой линии и изобат в моно- хромном растре с помощью трассировщика сплошных (пунктирных) линий. 4. Полученное векторное изображение экспортировать в фор- мат DXF. 5. Полученный файл открыть в AutoCAD и экспортировать в формат bmp командой Export меню File. 7.4. Разработка судового электронного каталога навигационных карт для ЭКС «Кадет» Цель: разработать базу данных навигационных карт для ЭКС «Кадет». Задание: 1. Изучить теоретические сведения и разобрать пример, приве- дѐнный в лекции «Разработка судового электронного ката- лога». 69 2. Создать базу данных судовой коллекции карт в Microsoft Access, включив в неѐ файл с фрагментом карты, получен- ном при выполнении пункта 5 подраздела 7.3. 3. Подключить базу данных к программе ЭКС «Кадет». 7.5. Привязка растровых навигационных карт к географической системе координат Цель: подготовить растровые навигационные карты из созданной базы данных к ведению на них прокладки. Задание: 1. Изучить теоретические сведения и разобрать пример, приве- дѐнный в лекции «Привязка изображения навигационной карты к системе координат графического редактора». 2. Используя образец формы, приведѐнной в этой же лекции на рис. 10, нанести элементы на главную форму ЭКС «Кадет» для привязки растровых навигационных карт к географиче- ской системе координат. 3. Написать код программы по варианту подраздела 7.1. 7.6. Отладка программы ЭКС «Кадет» Цель: привести в рабочее состояние программу-приложение ЭКС «Кадет» и решить контрольный пример. Задание: 1. Доработать интерфейс главной формы. 2. Решить контрольный пример и устранить ошибки кодов. 3. Откомпилировать программу через меню Файл и опцию Создать Проект exe. 7.7. Разработка Web-страницы Цель: разработать Web-страницу, включающую сведения о про- грамме ЭКС «Кадет». Задание: 1. Изучить теоретические сведения, приведѐнные в лекции «Web-технология в судовождении». 2. Сделать заголовок Web-страницы с указанием еѐ названия и учебного заведения. 3. Вставить логотип (рисунок на тему судовождения). 70 4. Сделать ссылку на программу ЭКС «Кадет» и дать еѐ крат- кое описание. 5. Привести сведения об авторе. 7.8. Зачѐтное занятие На зачѐтном занятии необходимо показать умение программиро- вать, создавать растровые и векторные навигационные карты, рабо- тать с базами данных и ответить на нижеприведѐнные вопросы. Вопросы на зачѐт по дисциплине «Компьютерные технологии в судовождении» 1. Требования ТБ при работе на ПЭВМ в судовых условиях. 2. Санитарные правила и нормы при работе на ПЭВМ. 3. Основные положения Руководства по использованию ком- пьютеров на судах. 4. Требования Регистра РФ к компьютерам и компьютерным системам. 5. Язык программирования Visual Basic. 6. База данных Microsoft Access. 7. Программа-векторизатор Easy Trace. 8. Растровая графика. 9. Векторная графика. 10. Растровые навигационные карты. 11. Векторные навигационные карты. 12. Способы оцифровки навигационных карт. 13. Привязка изображения навигационной карты к системе ко- ординат графического редактора. 14. Использование графических редакторов для ведения нави- гационной прокладки. 15. Web-технология. 16. Использование Web-технологии в судовождении. 17. Язык HTML. 18. Структура HTML-документа. 71 ПРИЛОЖЕНИЯ Приложение 1 Встроенные математические и тригонометрические функции АВS (числовое выражение) присваивает абсолютное значение числовому выражению. ЕХР (числовое выражение) натуральный логарифм числового выражения. SQR (числовое выражение) корень квадратный из числового вы- ражения. SIN (числовое выражение) вычисляет значение синуса от угла, заданного в радианах. СОS (числовое выражение) вычисляет значение косинуса от уг- ла, заданного в радианах. ТАN (числовое выражение) вычисляет значение тангенса от уг- ла, заданного в радианах. АТN (числовое выражение) вычисляет значение арктангенса в радианах от числового выражения. Полезное дополнение для судоводителя к встроенным функциям: А = SIN(X), В = COS(Y), тогда: X = ATN(A/SQR( A*A+1)) формула для вычисления ARCSIN(X); Y = PI/2 АТN(В/SQR( B*B+1)) формула для вычисления ARCCOS(X). 72 Приложение 2 Требования Регистра РФ к компьютерам и компьютерным системам 1. Область распространения 1.1.1. Настоящие требования распространяются на компьютеры и компьютерные системы, применяемые в установках и системах, под- лежащих надзору Регистра, а также на компьютеры, не применяемые в указанных установках и системах, но с помощью которых выполня- ются расчеты по обеспечению безопасности судна. 1.1.2. Случаи применения компьютеров и компьютерных систем, не содержащиеся в настоящих требованиях, являются предметом спе- циального рассмотрения Регистром. 1.2. Определения и пояснения Компьютер техническая система, состоящая из процессора с основным программным обеспечением, запоминающего устройства, устройства ввода и вывода данных, систем шин и энергоснабжения. Компьютерная система система, состоящая из одного или не- скольких компьютеров, включая периферийные устройства. Периферийное устройство устройство для ввода или вывода информации в компьютер или из компьютера. ОЗУ (оперативное запоминающее устройство) запоминающее устройство считывания и записи, теряющее свои данные при отклю- чении электропитания. ПЗУ (постоянное запоминающее устройство) запоминающее устройство для хранения постоянных данных, которые программиру- ются изготовителем, сохраняющее свои данные при отключении элек- тропитания. Автономный режим работа компьютера без непосредственного воздействия на другие устройства и установки. Управляющий режим работа компьютера с непосредственным воздействием на другие устройства и установки. 1.3. Объем надзора Общие положения о надзоре и освидетельствовании содержатся в Общих положениях о надзорной деятельности. 73 1.3.1. Надзору при изготовлении подлежат: 1) компьютеры, 2) периферийные устройства, 3) модули сопряжения (интейфейс). 1.3.2. Надзору на судне подлежат указанные в настоящей части компьютеры и компьютерные системы автоматизации устройств, ме- ханизмов и систем, поднадзорных Регистру и перечисленных в соот- ветствующих частях Правил. 1.4. Техническая документация До начала надзора за изготовлением применяемых компьютеров и компьютерных систем завод-изготовитель должен представить сле- дующую документацию: механическую конструкцию; техническое описание с принципиальной схемой; данные о входе и выходе и о возможности сопряжения; описание системы самоконтроля и поведения в случае неис- правностей; принципиальную схему устройства питания; алгоритм управления механизмами (программа пользователя); инструкцию по обслуживанию и уходу; программу испытаний; сведения о надежности системы и ее устойчивости к судовым условиям эксплуатации; перечень запасных частей. 1.5. Требования к конструкции компьютеров 1.5.1. Компьютеры и периферийные устройства должны надежно работать в условиях эксплуатации, указанных в настоящей части, если в соответствующих частях Правил для механизмов и установок, об- служиваемых ими, не указаны другие условия эксплуатации. 1.5.2. Компьютеры, не являющиеся конструктивной частью другой установки, а также периферийные устройства должны иметь степень защиты в соответствии с частью Х1 «Электрическое оборудование», но не ниже IP 22. 1.5.3. Конструкция компьютеров должна соответствовать требова- ниям, указанным в настоящей части. 74 1.6. Общие технические требования 1.6.1. Требования главы действительны независимо от преду- смотренного режима работы компьютера (автономного или управ- ляющего). 1.6.2. Должна быть исключена возможность внесения изменений в программы персоналом судна. 1.6.3. Для оборудованных компьютерами установок изменения программ пользователя, оказывающие влияние на выполнение функ- ций установки, следует считать конструктивными изменениями и со- общать о них Регистру. 1.6.4. Любое отключение периферийных устройств от вычисли- тельной машины не должно вызывать бесконтрольного выполнения команд, могущих привести к критическим состояниям. 1.6.5. При вводе данных оператором должен быть обеспечен кон- троль ввода (например, дисплей, печатающее устройство). 1.6.6. Ошибочные действия оператора не должны вызывать по- вреждения компьютера, стирания или изменения информации в ОЗУ и ПЗУ. 1.6.7. Программы и данные, необходимые для безошибочной ра- боты установки, следует хранить в постоянном запоминающем уст- ройстве или во внешних запоминающих устройствах. 1.6.8. Если при эксплуатации вычислительной техники необходи- ма принудительная вентиляция или кондиционирование, то должна быть предусмотрена индикация или сигнализация по превышению допустимого предельного значения климатических параметров. 1.6.9. Изменение цвета при использовании цветных мониторов не должно влиять на достоверность передаваемой информации. 1.7. Проверка функционирования, самоконтроль и сигнализация о неисправностях 1.7.1. Должна быть обеспечена возможность проверки всех функ- ций компьютера с помощью специальных программ. 1.7.2. Повреждение компьютера или перерыв в выполнении его функций должны сопровождаться сигналами независимой аварийно- предупредительной системы с одновременным указанием места (бло- ка) повреждения или этапа выполнения функций. 1.7.3. Каждый компьютер должен быть обеспечен самоконтролем. 75 Самоконтроль должен охватывать также периферийные устройства. Самоконтроль следует осуществлять с помощью соответствующих тест-программ (например, проверка на чѐтность, проверка продолжи- тельности и частоты цикла). 1.7.4. Неисправности в компьютерах и компьютерных системах не должны приводить к аварийному состоянию обслуживаемой установ- ки или всего судна в целом. 1.7.5. Отказ периферийных устройств не должен оказывать влия- ния на принцип действия остального периферийного оборудования вычислительной системы. Должна быть предусмотрена сигнализация о неисправностях. 1.7.6. В случае отказов в электропитании должен быть предусмот- рен беспрерывный переход к батарейному питанию ОЗУ. 1.8. Дополнительные требования к компьютерам для управления и регулирования судовых установок 1.8.1. При возникновении неисправностей в установках, связанных с компьютерами или компьютерными системами, вычислительное устройство должно регулировать их и подавать сигнал. 1.8.2. Мультикомпьютерные системы автоматизации должны иметь такую структуру, чтобы при возникновении неисправностей в отдельных компьютерах или в линиях связи между ними было обес- печено резервирование выполнения всех управляющих функций (по- средством компьютеров или обычных средств автоматизации). 1.8.3. Если компьютерная система может выполнять одновремен- но более чем одну функциональную программу, следует предусмот- реть координирование выполнения этих программ. Порядок приори- тета программ (уровней программ) по обеспечению безопасности экс- плуатации следует определить в зависимости от их возможностей. 1.8.4. Использование функциональных блоков одной системы с компьютером в качестве резерва для другой системы с компьютером в каждом конкретном случае подлежит особому согласованию с Реги- стром. 1.8.5. Компьютеры или компьютерные системы могут использо- ваться в системах защиты только в том случае, если при отказе ком- пьютера будет обеспечено автоматическое функционирование систе- мы защиты традиционным способом. При наличии резервирования компьютеров это требование не выполняется. 1.8.6. Компьютеры, применяемые для управления процессами 76 и/или регулирования работы судовых установок, должны функциони- ровать без задержки и выполнять функции контроля и защиты в ре- альном масштабе времени. 1.8.7. Периферийные устройства, необходимые для функциониро- вания системы, при отказе должны заменяться резервными устройст- вами с такими же условиями присоединения. 1.8.8. Если применяются экраны для изображения процессов, по- являющийся при сигнализации о неисправностях в установках и сис- темах сигнал мгновенно должен быть представлен на экране. При этом не допускается разделения квитированных и неквитированных сигналов только изменением цвета. 1.8.9. Если для визуальной сигнализации аварийных состояний применяется экранный дисплей, то должен быть дополнительно пре- дусмотрен дублирующий дисплей или устройство представления ука- занной сигнализации в иной форме (лампочки, светодиоды и т. п.). 1.9. Установка компьютеров и компьютерных систем на судах 1.9.1. Пространственное размещение устройств ввода и вывода данных должно обеспечить возможность нормального обслуживания. В компьютерных системах с постоянным резервированием трассы со- единения должны дублироваться и размещаться как можно дальше друг от друга. 1.9.2. При установке и конструктивном исполнении вычислитель- ной техники следует обеспечить электромагнитную совместимость между системой вычислительных машин в сборе и остальными систе- мами на месте установки. В случае необходимости следует учесть специальные нормативно- технические документы завода-изготовителя системы вычислитель- ных машин или установки и конечного производителя, учитывающие специфические условия эксплуатации. Меры для обеспечения электромагнитной совместимости следует согласовать с Регистром. 77 БИБЛИОГРАФИЧЕСКИЙ СПИСОК 1. Корректура морских электронных карт: Метод. указания /Сост. В. М. Лобастов. – Владивосток: ДВГМА, 1998. – 17 с. 2. Лобастов В. М. Управление работой ЭКС «Maptech Proffesional 3.0»: Учеб. пособие. – Владивосток: ДВГМА, 2000. – 23 с. 3. Морской Регистр Судоходства. Правила классификации и по- стройки морских судов. – 7-е. изд. – СПб., 1995. – 442 с. 4. Баранов Ю. К., Гаврюк М. И., Логиновский В. А., Песков Ю. А. Навигация: Учеб. для вузов. – 3-е изд., перераб. и доп. – СПб.: Лань, 1997. – 512 с. 5. Visual Basic 6.0: Пер. с англ. – СПб.: БХВ-Петербург, 2004. – 992 с. 6. Робинсон С. Microsoft Access 2000: учебный курс. – СПб: Пи- тер, 2001. – 512 с. 7. Габрюк В. И. Компьютерные технологии в промышленном ры- боловстве. – М.: Колос, 1995. – 544 с. 8. Зельднер Г. A. Microsoft Basic professional development system 7.1. – M.: Изд-во ABF, 1994. – 400 c. 9. Михайлов И. Ю., Степанников В. М. Современный Basic для IBM PC. Среда, язык, программирование. – М.: Изд-во МАИ, 1993. – 288 с. 10. Очков В. Ф., Рахаев М. А. Этюды на языках Qbasic, QuickBasic, Basic Compiler. – M: Финансы и статистика, 1995. – 368 с. 11. Кренкель Т. Э., Коган А.Г., Тараторим A. M. Персональные ЭВМ в инженерной практике. – М.: Радио и связь, 1989. – 336 с. 12. Светозарова Г. И., Мельников А. А., Козловский А. В. Прак- тикум по программированию на языке Бейсик: Учеб. пособие для ву- зов. – М.: Наука, 1988. – 368 с. 13. Лапшин Е. Графика для IBM PC. – М.: СОЛОН, 1995. – 228 с. 14. Ваулина Е. Ю. Толковый словарь пользователя PC. – СПб.: Атон, 1998. – 176 с. 15. Справочник программиста и пользователя / Под ред. А. Г. Шевчика, Т. В. Демьянкова. – М.: Кварта, 1993. – 128 с. 16. Браун С. Visual Basic 6: учебный курс. – СПб.: Питер, – 576 с. 17. James D. Murray and William van Ryper, Encyclopedia of Graph- ics File Formats, Second Edition (O'Reilly & Associates, 1996). 18. Steve Rimmer, Windows Bitmapped Graphics (Windcrest /McGraw-Hill, 1993). 19. Семѐнов В. С. Язык HTML: Учеб. пособие. – Владивосток: ДВГМА, 2000. – 38 с. 20. Фадюшин С. Г. Компьютерные технологии в судовождении: Учеб. пособие. Ч. 1. – Владивосток: Мор. гос. ун-т, 2004. – 77 с. 78 Оглавление ПРЕДИСЛОВИЕ ….…………………...……………………………... 3 1. ИНТЕГРИРОВАННАЯ СРЕДА РАЗРАБОТКИ ПРИЛОЖЕНИЙ VISUAL BASIC ……………………………………………………. 6 2. РАЗРАБОТКА ФОРМ ПРИЛОЖЕНИЙ В VISUAL BASIC ……. 19 3. ВВЕДЕНИЕ В ТЕХНОЛОГИЮ РАЗРАБОТКИ РАСТРОВЫХ И ВЕКТОРНЫХ ЭЛЕКТРОННЫХ НАВИГАЦИОННЫХ КАРТ 26 4. РАЗРАБОТКА СУДОВОГО ЭЛЕКТРОННОГО КАТАЛОГА ..... 43 5. ПРИВЯЗКА ИЗОБРАЖЕНИЯ НАВИГАЦИОННОЙ КАРТЫ К СИСТЕМЕ КООРДИНАТ ГРАФИЧЕСКОГО РЕДАКТОРА ….. 51 6. WEB-ТЕХНОЛОГИЯ В СУДОВОЖДЕНИИ …………………… 63 7. ПРАКТИЧЕСКИЕ ЗАНЯТИЯ ……………………………………. 7.1. Разработка главной формы ЭКС «Кадет» …………………... 7.2. Создание растровых навигационных карт ………………….. 7.3. Векторизация растровых навигационных карт …………….. 7.4. Разработка судового электронного каталога навигационных карт для ЭКС «Кадет» ……………………………………….. 7.5. Привязка растровых навигационных карт к географической системе координат ……………………………………............ 7.6. Отладка программы ЭКС «Кадет» …………………………... 7.7. Разработка Web-страницы ………………………...……......... 7.8. Зачѐтное занятие ……………………………………………… 67 67 67 68 68 69 69 69 70 ПРИЛОЖЕНИЯ ……………………………………………………… 71 Приложение 1. Встроенные математические и тригонометриче- ские функции …………………………………………………………. 71 Приложение 2. Требования Регистра РФ к компьютерам и компь- ютерным системам …………………………………………………... 72 БИБЛИОГРАФИЧЕСКИЙ СПИСОК …………………………......... 77 79 Позиция № 104 в плане издания учебной литературы МГУ на 2005 г. Сергей Геннадьевич Фадюшин КОМПЬЮТЕРНЫЕ ТЕХНОЛОГИИ В СУДОВОЖДЕНИИ. ЧАСТЬ 2 Учебное пособие 4,9 уч.-изд. л. Тираж 150 экз. Формат 60 84 1 /16 Заказ № Отпечатано в типографии ИПК МГУ им. адм. Г. И. Невельского Владивосток, 59, ул. Верхнепортовая, 50а