close

Вход

Забыли?

вход по аккаунту

?

Автоматизированные системы. Этапы развития...(09 05.01 Часть2)

код для вставкиСкачать
Министерство образования и науки Российской Федерации
Федеральное государственное бюджетное образовательное учреждение
высшего образования
«Воронежский государственный лесотехнический университет
им. Г.Ф. Морозова»
АВТОМАТИЗИРОВАННЫЕ СИСТЕМЫ: ЭТАПЫ РАЗВИТИЯ
И ВВЕДЕНИЕ В СПЕЦИАЛЬНОСТЬ
Лабораторный практикум
Часть II
Воронеж 2017
2
УДК 004
Автоматизированные системы: этапы развития и введение в специальность Текст : лабораторный практикум. Часть II / Т.В. Скворцова, Е.В. Кондрашова; М-во образования и науки РФ, ФГБОУ ВО «ВГЛТУ им. Г.Ф. Морозова». – Воронеж, 2016. – 182 с.
Рецензенты: кафедра электротехники и автоматики ФГБОУ ВПО
«Воронежский государственный аграрный университет
имени императора Петра I», заведующий кафедрой,
доктор технических наук, профессор Афоничев Д.Н.
начальник лаборатории ОАО «НИИЭТ» к.т.н. А. И. Яньков
Печатается по решению учебно-методического совета ФГБОУ ВО
«ВГЛТУ им. Г.Ф. Морозова» (протокол № __ от _______ 2016 г.)
В лабораторном практикуме приведены методические рекомендации к проведению
лабораторных работ по информационным системам в средах Visual Basic 6.0, Visual C++.
Лабораторный практикум предназначен для студентов 09.05.01 – Применение и эксплуатация автоматизированных систем специального назначения, специализация Автоматизированные системы обработки информации и управления
ISBN
© Скворцова Т.В., Кондрашова Е.В., 2016
© ФГБОУ ВО «Воронежский государственный
лесотехнический университет имени
Г.Ф. Морозова», 2016
3
Оглавление
Введение ....................................................................................................................... 5
Лабораторная работа 1 ................................................................................................ 6
Тема: Среда разработки Visual Basic..................................................................... 6
Задания для самостоятельной работы ................................................................. 23
Вопросы для самопроверки .................................................................................. 25
Лабораторная работа 2 .............................................................................................. 26
Тема: Работа с формами ....................................................................................... 26
Задания для самостоятельной работы ................................................................. 37
Вопросы для самопроверки .................................................................................. 39
Лабораторная работа 3 .............................................................................................. 40
Тема: Объекты (элементы) управления. ............................................................. 40
Задания для самостоятельной работы ................................................................. 56
Вопросы для самопроверки .................................................................................. 59
Лабораторная работа 4 .............................................................................................. 60
Тема: Переменные. Ввод-вывод данных. ........................................................... 60
Вопросы для самопроверки .................................................................................. 77
Лабораторная работа 5 .............................................................................................. 78
Тема: Алгоритмические структуры. .................................................................... 78
Вопросы для самопроверки .................................................................................. 89
Лабораторная работа 6 .............................................................................................. 90
Тема: Операторы перехода по условию. ............................................................. 90
Задания для самостоятельной работы ............................................................... 102
Вопросы для самопроверки ................................................................................ 103
Лабораторная работа 7 ............................................................................................ 104
Тема: Средства организации цикла. .................................................................. 104
Задания для самостоятельной работы ............................................................... 114
Вопросы для самопроверки ................................................................................ 115
Лабораторная работа 8 ............................................................................................ 116
Тема: Массивы. Процедуры и функции. ........................................................... 116
Задания для самостоятельной работы ............................................................... 128
Вопросы для самопроверки ................................................................................ 129
Лабораторная работа №9 ........................................................................................ 130
Тема: Численные методы решения обыкновенных уравнений. ..................... 130
Задания для самостоятельной работы ............................................................... 141
Вопросы для самопроверки ................................................................................ 142
Лабораторная работа 10 .......................................................................................... 143
Тема занятия: Численное интегрирование. ...................................................... 143
Вопросы для самопроверки ................................................................................ 156
Задания для самостоятельной работы ............................................................... 156
Лабораторная работа №11 ...................................................................................... 157
4
Тема занятия: Среда программирования Visual C++. ..................................... 157
Программирование линейных алгоритмов. ...................................................... 157
Задания для самостоятельной работы ............................................................... 160
Лабораторная работа №12 ...................................................................................... 163
Тема занятия: Программирование разветвляющихся алгоритмов................. 163
Задания для самостоятельной работы ............................................................... 164
Лабораторная работа №13 ...................................................................................... 167
Тема занятия: Программирование циклических алгоритмов. ........................ 167
Задания для самостоятельной работы ............................................................... 169
Библиографический список.................................................................................... 171
Приложение 1 .......................................................................................................... 172
Математические функции .................................................................................. 172
Приложение 2 .......................................................................................................... 181
Функции преобразования типов ........................................................................ 181
5
Введение
Лабораторный практикум по учебной дисциплине «Автоматизированные системы: этапы развития и введение в специальность» представляет комплекс работ по изучению инструментальных средств языка визуального программирования высокого уровня Visual Basic 6.0, С++ и основ техники создания пользовательских приложений в среде операционной системы Windows.
Материал, изложенный в методических указаниях, условно можно разделить на четыре части. В первой части представлены основные сведения об
интегрированной среде разработки языка программирования (IDE, Integrated
Development Environment), в которой можно наглядно конструировать экранные
окна, широко используемые в приложениях для Windows, на базе форм и
управляющих элементов (1-4 работы). Во второй части (работы 5-8) коротко
рассматриваются соглашения, базовые операторы языка и излагаются приемы
их использования при программировании ветвящихся и циклических структур.
В третьей части (9-10 работы) рассматривается реализация прикладных задач
(решение обыкновенных алгебраических уравнений, интегрирования) с использованием изучаемых средств и возможностей языка визуального программирования. В четвертой части (11-13 работы) рассматриваются примеры выполнения работ на языке С++ в среде Microsoft Visual Studio, представлены индивидуальные задания.
Приступая к выполнению лабораторной работы, необходимо освоить
основные положения по изучаемой теме, уяснить конструктивные и программируемые возможности свойств элементов управления, внимательно изучить
задания на выполнение работы, запрограммировать элементы интерфейса и
прикладную задачу. Добиться правильной работы приложения. Выполнить необходимый вариант задания.
6
Лабораторная работа 1
Тема: Среда разработки Visual Basic
Цель: Познакомиться с возможностями инструментальной среды языка
визуального программирования Visual Basic 6 – среды разработки Windowsприложений.
Среда разработки Visual Basic
При работе в Visual Basic (VB) самое главное для начинающего – освоить среду разработки. Без интегрированных инструментов этой среды программирование на VB превращается в утомительное и тяжелое занятие. В процессе
проектирования приходится рисовать структурные схемы и писать программы,
а затем набирать их строка за строкой. VB содержит множество полезных инструментальных средств, упрощающих процесс разработки приложений. Visual
Basic — не просто язык программирования, это —интегрированная среда разработки IDE (Integrated Development Environment), позволяющая разрабатывать, выполнять, тестировать и отлаживать создаваемые приложения.
IDE VB содержит графическую среду, в которой можно наглядно конструировать экранные формы, используя управляющие элементы. VB содержит
множество полезных инструментов, облегчающих труд при программировании.
Это проекты, формы, объекты, шаблоны, нестандартные управляющие элементы, надстройки и т.д. Почти всеми объектами и инструментами на экране можно управлять, щелкая на них правой кнопкой мыши. Эта простейшая операция
позволяет задавать свойства, добавлять новые элементы и просматривать контекстную справку.
Запуск Visual Basic 6
После инсталляции (установки пакета программ VB на компьютер) Visual Basic 6 все нужные для работы с этой системой пиктограммы будут находиться в одной папке Windows.
Для запуска Visual Basic 6 щелкните мышью по кнопке Start(Пуск) панели задач Windows**, выберите опцию Programs (Программы) из первого меню и активизируйте (щелкните мышью по соответствующей позиции) опцию
Visual Basic 6 из второго меню или дважды щелкните по ярлыку VB на Рабочем столе.
7
При первом запуске VB вызывает мастера Project Wizard, на экране появляется диалоговое окно New Project (рис. 1).
Рис. 1. Диалоговое окно New Project мастера Project Wizard
Выбор шаблона проекта на вкладке New поручает VB открыть основу
нового проекта – форму. Тоже можно сделать через Главное меню/«Файл» 
«Новый проект» или через комбинацию клавиш <Ctrl+N>: «Добавить проект». Для нового проекта в большинстве случаев выбирают «Стандартный
EXE» или значок на панели инструментов.
На рис. 4 отображены основные элементы пользовательского интерфейса интегрированной среды разработки VB.
Среда называется интегрированной, поскольку с экрана можно вызвать
любой необходимый инструмент программирования. Среду часто называют
программой конструирования. Для краткости изложения будем называть ее
просто IDE. IDE состоит из следующих компонентов:
- главного меню;
- панели инструментов;
- окна проекта (проводник проекта);
- окна свойств;
- окна макета формы;
- панели элементов;
- конструктора форм;
окна просмотра объектов.
8
Рис. 2. Интегрированная среда разработки (IDE) Visual Basic
Главным меню называется строка текста, расположенная в верхней
части окна IDE, которая внешне похожа на меню других приложений
Windows. Рассмотрим основные позиции меню, используемые для работы с VB.
Файл (File) – содержит команды открытия и сохранения проектов, создания исполняемых файлов и список последних открывавшихся проектов.
Правка (Edit) – содержит стандартные команды по работе с буфером
обмена: вырезание, копирование, вставка, а также множество команд форматирования и редактирования кода программы.
Вид (View) – содержит команды отображения или скрытия компонент и
инструментов.
Проект (Project) – содержит команды добавления и удаления форм,
программных модулей, страниц свойств и компонентов.
Формат (Format) – содержит команды выравнивания элементов управления по координатной сетке формы.
Отладка (Debug) – команды отладки программы приложения, то есть
можно запустить и остановить приложение, расставить точки прерывания и выбрать рассматриваемые объекты.
Запуск (Run) – команды запуска, прерывания и останова текущего приложения.
Запрос (Query) –меню доступно при создании баз данных.
9
Инструменты (Tools) – средства создания компонентов и элементов
управления Active X, команды запуска Menu Editor и открытия окна Option
для настройки рабочей среды IDE.
Добавления (Add-Ins) – настройки IDE, которые при необходимости
можно добавлять или удалять. Используется при создании баз данных.
Окна (Windows) – стандартное меню, содержащее команды упорядочения, разделения и расположения окон на экране.
Помощь (Help) – команда вызова справочной системы.
Панель инструментов
Панели инструментов позволяют получить быстрый доступ к наиболее
часто используемым командам меню. По умолчанию Панель инструментов
находится под главным меню (рис. 3). Если панель инструментов не видна,
выполните команду «Вид», выберите вкладку «Панели» и уставите флажок
в позиции Standard. Кроме того, в IDE VB есть возможность использовать дополнительные панели инструментов, применяемые при редактировании, конструировании и отладке форм. Команда Вид  Панели  Customize открывает
доступ к этим панелям. Установка/снятие флажка в соответствующей позиции делает панели доступными для работы или скрывает их.
Рис. 3. Панель инструментов VB
Окно форм
Главной частью экрана проектирования является окно форм (рис 4).
10
Рис. 4. Объект – форма
Форма (form) — это обычное окно Windows, состоящее из рамки
(frame), заголовка (caption) и рабочей области. Форма – это контейнер элементов управления, входящих в состав средств пользовательского интерфейса. Каждое окно, отображаемое на рабочем столе при выполнении приложения Visual
Basic – форма. В VB формы - объекты высшего уровня. Работа любого приложения начинается с создания формы.
Это окно по умолчанию имеет заголовок Form1. Если вы создадите вторую форму, она по умолчанию получит имя Form2. При желании имя формы
можно изменить. Окно форм обладает обычными свойствами окна.
Каждый проект на Visual Basic 6 имеет, по крайней мере, одну форму,
которая используется для проектирования интерфейса вашей программы.
На форме в виде точек отмечена сетка, помогающая размещать отображаемые на форме элементы. Когда вы размещаете объект на поверхности формы, например, кнопу или список, он разместится вдоль условных вертикальных
и горизонтальных линий, проходящих через ближайшие точки сетки.
Расстояние между точками можно менять или вообще сделать ее невидимой
командой Инструменты  Опции  Среда.
Окно проекта
Инструментальная панель применяется для размещения на форме
кнопок, текстовых окон, заголовков, комбинированных списков и всех других
стандартных блоков системы Windows. Все эти объекты называются
«объектами управления» (controls).
11
В правой части экрана под панелью
инструментов закреплено окно проекта
(рис. 5), предназначенное для быстрого получения информации о различных составляющих проекта — формах, классах и модулях. Это окно появляется после выбора
проекта. Окно проекта отчасти напоминает
окно Проводника Windows: в нем так же
можно разворачивать и сворачивать вложенные папки.
Все объекты, составляющие приложение объединяются в проект. При сохранении проекта для дальнейшего использования, тестирования и отладки и дополнения
VB присваивает файлу описания проекта
стандартное расширение *.vbp. Простейший
проект обычно содержит одну форму. ПоРис. 5. Окно Проекта
мимо форм в окне проекта могут быть перечислены модули и классы. Чтобы просмотреть форму, выделите ее в окне проекта и нажмите кнопку Вид объекта (View object) (для просмотра программного кода, связанного с формой, следует нажать кнопку Просмотр кода(View
code)).
Панель элементов управления
Панель элементов управления применяется для размещения на форме
кнопок, текстовых окон, заголовков, комбинированных списков и всех других
стандартных блоков системы Windows, используемых для конструирования интерфейса. Все эти объекты называются «объектами управления» (controls)
(рис. 6).
Панель элементов управления содержит компоненты, из множества которых складывается интерфейс приложения. Он состоит из различных элементов, предназначенных для взаимодействия пользователя с приложением и
управления им. Эти компоненты размещаются на формах в приложениях во
всевозможных комбинациях. Элементы, расположенные на панели удалить
Кнопка View Code
Кнопка View Object
Кнопка изменения
режима просмотра
12
нельзя, они являются базовыми элементами управления Visual Basic и называются встроенными или стандартными.
(Pointer) Указатель -
 (PictureBox) Графическое поле
(Label) Надпись - (TextBox) Текстовое поле
(Frame) Рамка - (Command Button) Кнопка
(CheckBox) Флажок - (Option Button) Переключатель
(ComboBox)Комбинир.поле (ListBox) Список
Горизонт. полоса прокрутки Вертикальная полоса прокрутки
(Timer) Таймер  (Drive ListBox) Список дисков
(Directory ListBox) Список каталогов
 (File ListBox) Список файлов
(Shape) Фигура  (Line) Линия
(Image) Рисунок (Data) Элемент данных
(OLE) Элемент OLE 
Рисунок 6. Панель элементов управления
Окно свойств
Прямо под окном проекта находится окно
свойств. В нем отображаются различные атрибуты
(свойства) выделенных объектов. Каждая форма и
управляющий элемент в приложении считается
объектом. Каждый объект характеризуется набором свойств. В окне свойств (Properties) (рис. 7)
содержится множество установок для выбранного
объекта интерфейса приложения. Свойства – это
атрибуты объекта, такие как размер, заголовок
(Caption), цвет и т.д. Установка значений свойств
настраивает внешний вид элементов управления,
формы. Например, если необходимо изменить
цвет формы, необходимо в окне свойств формы
выбрать атрибут BackColor (Цвет фона) и щелчРис. 7. Окно свойств
13
ком на кнопке со стрелкой возле текущего значения цвета отобразите палитру
выбранного цвета. Щелкните на выбранном цвете – фоновый цвет выбран, и он
моментально заменит текущий цвет.
В окне приводится список свойств, относящихся к выбранному объекту.
Их достаточно много. Названия большинства свойств говорят сами за себя, а
некоторые используются достаточно редко. Список свойств можно упорядочить в алфавитной последовательности или по категориям, выбрав соответствующую вкладку в окне свойств. Просмотр и установка свойств различных
объектов, в том числе и форм, осуществляется последовательным выделением
объектов в окне свойств. Большая часть свойств, как правило, устанавливается
в режиме конструирования, хотя некоторые из них могут изменяться и в режиме работы приложения. Например, в ходе работы приложения необходимо заблокировать какую-нибудь кнопку. В этом случае необходимо писать программный код, который изменит нужное свойство в режиме выполнения программы.
Поскольку Visual Basic IDE является визуальной средой программирования, большинство свойств задается в режиме конструирования. В этом случае
экономится время, которое тратится на написание кода, дающего те же результаты.
Окно Конструктор форм
В центре экрана расположено окно Конструктора форм (Form Designer).
В этой рабочей области экрана происходит конструирование и редактирование
интерфейса приложения. Оно используется для работы с текстовым редактором
при вводе и редактирования кода приложения. Конструктор форм отображает
на экране два окна:
- Form с отображением самой формы;
- Code c программным кодом соответствующих элементов управления.
Для переключения между окнами пользуются кнопками просмотра кода и формы в верхней части окна Проводника проекта. Чтобы отобразить формы или
код, необходимо активизировать соответствующую кнопку.
Окно программы VB
Здесь отметим и рассмотрим объект - окно программы, которое в первый
момент запуска Visual Basic на экране не появляется, но, тем не менее, является одним из основных объектов VB. Это мощный текстовый редактор с множе-
14
ством встроенных средств повышения производительности. Чтобы открыть окно программы, необходимо дважды щелкнуть на форме или элементе управления. Если двойной щелчок был сделан на форме, будет загружено окно с программным кодом процедуры текущей формы (рис. 8). Окно программы содержит следующие элементы:
Рис. 8. Окно свойств
1. Список объектов – отображает имя выбранного элемента. При раскрытии этого списка отображается список всех объектов, ассоциированных с
данной формой.
2. Список процедур – перечисляет процедуры или события выделенного
объекта. Пока список не раскрыт, в нем изображается имя выбранной процедуры. Раскрыв список, можно увидеть весь перечень возможных процедур объекта.
Код приложения Visual Basic, как правило, делится на блоки, называемые процедурами. Процедура обработки события (событийная процедура) –
это процедура, содержащая код, который выполняется, если происходит соответствующее событие, например, щелчок мыши. Имя процедуры обработки события для элемента управления составляется из имени элемента (заданного
свойством Name), знака подчеркивания (_) и имени события.
Окно проверки
Это окно располагается в нижней части IDE VB (рис. 9). В общем случае
при запуске VB его не видно. Если оно не отображено, то его можно вызвать,
выбрав в меню Вид (View) команду Окно неотложного (Immediate Windows).
15
Данное окно предназначено для отладки
программ. С его помощью можно остановить выполнение программы, проверить или изменить значения некоторых
переменных, а так же выполнить команды VB в режиме проверки. Оно поРис. 9. Окно проверки
зволяет по шагам выполнить программный код, изменить значения переменных, добавить новые команды и продолжить выполнение приложения.
Разработка пользовательского интерфейса
Интегрированная среда Visual Basic 6 позволяет выполнить полный цикл
разработки Windows-приложения пользовательского интерфейса и программ:
ввод текста программы на языке Visual Basic 6, компиляцию программы в объектный код, отладку и запуск программы. Основное отличие и преимущество
этой среды перед ранее изученными средами состоит в возможности избавить
разработчика приложения от рутины написания программного кода интерфейса
пользователя, на который уходит до 90 % объема кода приложения. Это обеспечивается стандартизацией интерфейса всех Windows-приложений, возможностью автоматической генерации кода в средах визуального программирования
и наличием библиотек элементов управления, описывающих практически все
элементы пользовательского интерфейса Windows.
После краткого знакомства с интегрированной средой, с ее возможностями, применим полученные знания на практике для создания простого приложения. При создании приложений на Visual Basic необходимо выполнить три
основных шага:
 Создать интерфейс пользователя, ―рисуя‖ элементы управления, текстовые поля и кнопки управления, на форме.
 Установить свойства для формы и элементов управления, чтобы задать, например, надписи, цвет и размер.
 Написать код, чтобы приложение работало.
Но перед разработкой интерфейса, полезно ответить на несколько вопросов.
1. С какой целью создается приложение?
16
2. Каков алгоритм реализации метода достижения цели?
3. Какие элементы управления и зачем, будут использованы при разработке интерфейса приложения?
4. Какие средства языка программирования необходимо при этом задействовать?
5. Какова возможна стратегия взаимодействия пользователя при работе с
приложением?
Ответы на поставленные вопросы дают возможность правильно распределить внимание и усилия при написании программного кода, уделить особое
внимание элементам управления, обеспечивающих ввод данных, вывод результатов и контроль над работой приложения.
Большую помощь при этом оказывает понимание того факта, что приложение будет работать в операционной среде, организованной по принципу:
событие – сообщение – окно. Обращение к объекту управления – событие, которое должно обрабатываться в соответствующей процедуре.
Создание проекта
Написать программу для вычисления линейного арифметического выражения:
.
При x=2.45, y=-0.42310-2 z=1.232103. Ответ: h=7.244105.
Теоретические сведения:
Выражения представляют собой комбинацию переменных и операндов,
соединенных знаками отношения. В зависимости от используемых знаков операций различают арифметические выражения, логические выражения и строковые выражения.
Синтаксис всех выражений одинаков:
<операнд> знак_операции <операнд>
В качестве операндов в выражениях могут использоваться константы,
переменные, функции и другие выражения. В табл. 1 приведены основные математические функции, используемые в языке Visual Basic. Примеры использования математических функций и функции преобразования типов приведены в
приложении 1-2.
17
Таблица 1
Функция
Abs(N)
Atn(N)
Cos(N)
Exp(N)
Fix(N)
Int(N)
Log(N)
Rnd(N)
Round(N[, дес])
Sgn(N)
Sin(N)
Sqr(N)
Tan(N)
Val(C)
Математические функции
Описание
Вычисляет абсолютное значение числа N
Вычисляет арктангенс числа N. Значение аргумента
должно находиться в интервале от –1 до +1.
Вычисляет косинус аргумента.
Возвращает число е, возведенное в указанную степень
Возвращает целое число, меньшее или равное N для положительных чисел и большее или равное N для отрицательных чисел.
Возвращает целое число, меньшее или равное N как для
положительных, так и для отрицательных чисел
Вычисляет натуральный логарифм аргумента.
Возвращает случайное число в интервале от 0 до 1. При
N<0 возвращает определенное число, зависящее от N; при
N=0 – псевдослучайное число; при N>0 – новое случайное
число.
Возвращает число, округленное к заданному числу десятичных знаков.
Возвращает знак числа: 1 , если N>0; 0 , если N=0; -1, если N<0.
Вычисляет синус угла.
Вычисляет корень квадратный из аргумента.
Вычисляет тангенс угла.
Преобразует аргумент строкового типа в число.
Для вычисления логарифма числа по произвольному основанию и для
вычисления обратных тригонометрических функций полезно запомнить следующие формулы преобразования:
Log b ( x )
Log a ( x ) 
Log b (a )
arcsin(x)  arctg(x / 1  x 2 )
18
arccos(x)   / 2  arctg(x / 1  x 2 )
arcctg(x)   / 2  arctg(x)
Порядок выполнения
1. Создайте в своей рабочей папке для нового проекта папку с именем
LabRab1.
2. Создайте новый Проект. Для этого в главном меню выполните команду Файл→Новый проект (Ctrl+N).
3. Установите свойства объектов проекта согласно данным таблицы 2.
4. Сохраните проект в папке с именем LabRab1. Стартовая форма лабораторной работы 1 представлена на рисунке 10.
Таблица 2
Объект проекта
Свойство
Значение
Проект1
Имя (Name)
Изучение_среды_IDE
Имя (Name)
FrmLab1_1
Форма Form1
Caption
Лабораторная работа 1
Метка Label1
Заголовок (Caption)
Фамилия, имя исполнителя
Метка Label2
Заголовок (Caption)
Дата начала выполнения
Метка Label3
Заголовок (Caption)
Наименование работы
Рис. 10. Стартовая форма
19
5. Добавьте новую форму в проект «Изучение_среды_IDE», путем выбора опции Добавить форму в меню Проект (Project). При этом создаются файл
формы с расширением .frm , в окне конструирования появляется новая форма, а
в окне проекта проходит процедура включения формы в проект.
6. Расположите на форме объекты, как показано на рис. 11.
Рис. 11. Интерфейс приложения
7. Задайте значения свойств формы и элементов управления согласно
данным таблицы 2.
Таблица 2
Элементы управления
Свойство
Значение
1
2
3
Name
FrmLab1_2
Форма Form2
Caption
Мое первое приложение
Командная кнопка
Name
CmdOK
Command1
Caption
&OK
Командная кнопка
Name
CmdExit
Command2
Caption
Выход
Caption
x
Текстовая метка
Autosize
True
Label1
FontSize
14
20
1
Текстовая метка
Label2
Текстовая метка
Label3
Текстовое поле Text1
Текстовое поле Text2
Текстовое поле Text3
2
Caption
Autosize
FontSize
Caption
Autosize
FontSize
Text
Text
Text
Окончание табл. 2
3
y
True
14
z
True
14
2,45
-0,00423
123,2
Текст, присвоенный свойству формы Caption (Заголовок), будет выведен
в строке заголовка окна формы.
Амперсенд () в значении свойства кнопки Caption перед первым символом означает, что вместо щелчка мышью, кнопку можно активизировать с
клавиатуры (в данном случае сочетанием клавиш Alt+O). Подобные сокращения следует назначать по мнемоническому принципу (например, буква О для
кнопки ОК).
8. Откройте окно кода FrmLab1_2, щелкнув дважды на кнопке cmdOK.
Двойной щелчок на элементе (или форме) открывает окно программы со стандартным событием. Для кнопки стандартным событием является событие Click.
При этом на экране должен появиться шаблон процедуры cmdOK_Click (рис.
12).
Рис. 12. Процедура в окне программы
21
9. Введите между строками Private Sub и End Sub следующий фрагмент программы:
10. Выполните команду Файл Сохранить Проект (Save Project). Перед
сохранением проекта сохраняются все входящие в него файлы. В нашем приложении имеется две формы, которым соответствуют два файла.
Замечание. Обратите внимание – форма описывается тремя атрибутами: свойством –Name (FrmLab1_2), свойством Caption (Мое первое приложение) и именем файла(FrmLab1_2.frm). Необходимо понимать, что свойство
Caption выводится в заголовке формы, свойство Name служит для работы с
формой в программе, а имя файла используется файлом проекта и операционной системой.
11. Для задания первоначально загружаемой формы FrmLab1_2: откройте окно Проекты > Проект 1 Свойства (Project 1 Properties) и укажите имя
стартовой формы: FrmLab1_2 в поле Start Object (объект запуска) диалогового
окна Свойства проекта (рис. 13).
22
Рис. 13. Стартовая форма
12. Проверьте работу приложения (рис. 14).
13. Завершите работу приложения кнопкой Выход.
14. Сохраните проект в папке LabRab1.
Рис. 14. Результат работы приложения
15. После завершения проектирования, тестирования и отладки проекта в
среде Visual Basic наступает завершающий этап компиляция, то есть создание
независимого от среды исполняемого файла (с расширением exe), библиотеки
динамической компоновки (с расширением dll) или компонента ActiveX (с
расширением ocx).
Для запуска процесса компиляции и создания исполняемого файла проекта приложения необходимо выполнить следующие действия:
23
а) Выполнить команду Project / <Имя проекта> Properties и в открывшемся диалоговом окне Project Properties свойств проекта настроить параметры компиляции на вкладках Make (Создать) и Compile (Компиляция).
б) Выполнить команду File / Make <имя проекта>.exe Файл / Создать.
При этом появляется окно диалога Make Project (рис. 15).
в) В поле Имя файла диалогового окна Make Project (Создать проект)
ввести имя исполняемого файла или оставить имя, предлагаемое VB по умолчанию исходя из имени проекта.
Рис. 15. Окно диалога Создать проект
г) Нажать кнопку Options (Параметры) в открывшемся диалоговом окне
Project Properties свойств проекта ввести номер версии исполняемого файла.
д) Нажатием кнопки ОК запустить процесс компиляции.
После успешного завершения процесса компиляции проект готов к независимой работе без среды Visual Basic.
Задания для самостоятельной работы
1.
.
При x=14.26, y=-1.22, z=3.510-3. Ответ: h=0.749155.
24
2.
.
При x=-4.5, y=0.7510-4, z=-0.845102. Ответ: s=-3.23765.
3.
.
При x=3.7410-2, y=-0.825, z=0.16102. Ответ: s=1.05534.
4.
.
При x=0.4104, y=-0.875, z=-0.47510-3. Ответ: s=1.98727.
5.
.
При x=-15.426, y=4.64210-2, z=21. Ответ: s=-182.038.
6.
.
При x=16.5510-3, y=-2.75, z=0.15. Ответ: s=-40.6307.
7.
.
При x=0.1722, y=6.33, z=3.2510-4. Ответ: s=-205.306.
8.
.
При x=-2.23510-2, y=2.23, z=15.221. Ответ: s=39.3741.
9.
.
При x=1.825102, y=18.225, z=-3.29810-2. Ответ: s=1.21308.
10.
.
При x=3.98110-2, y=-1.625103, z=0.512. Ответ: s=1.26185.
25
11.
.
При x=6.251, y=0.827, z=25.001. Ответ: s=0.712122.
12.
.
При x=3.251, y=0.325, z=0.46610-4. Ответ: s=4.23655.
13.
.
При x=17.421, y=10.36510-3, z=0.828105. Ответ: s=0.330564.
14.
.
При x=12.310-1, y=15.4, z=0.252103. Ответ: s=82.8256.
15.
.
При x=2.444, y=0.86910-2, z=-0.13103. Ответ: s=-0.498707.
Вопросы для самопроверки
1 Что означает термин IDE?
2 Основные компоненты интегральной среды IDE.
3 Возможности главного меню.
4 Назначение и состав инструментальной панели.
5 Окно проекта. Состав, назначение.
6 Окно свойств. Назначение, состав, возможности.
7 Панель элементов управления.
8 Окно программы Visual Basic. Окно компоновки форм.
9 Возможности и назначение окна проверки.
10 Как в общих чертах осуществляется разработка интерфейс пользователя.
26
Лабораторная работа 2
Тема: Работа с формами
Цель: Изучить возможности и свойства формы как базового элемента интерфейса приложения.
Формой называется главный элемент приложения (рис. 1), на котором
размещаются все прочие элементы. Форма образует визуальную основу приложения. По своей сути форма представляет собой окно, в котором можно разместить различные управляющие элементы при создании приложения. Большинство разрабатываемых приложений будут использовать простейший интерфейс – одиночную форму.
Рис. 1. Работа с формами
Работа со свойствами форм
Объект характеризуется такими основными понятиями, как:
 состояние – каждый объект всегда находится в определенном состоянии, которое определяется набором свойств объекта;

свойство – признак, некоторое отдельное качество объекта (табл. 1).
27
Таблица 1
1
Значение
по умолчанию
2
Name
«Form 1»
Apperance
1
BorderStyle
2
Caption
«Form 1»
СontrolBox
1
Enabled
True
Свойства
Комментарий
3
Имя формы. Присваивается при разработке. Префикс frm (например, frmProject1)
Внешний вид формы: 0 – плоская, 1 – объѐмная.
Внешний вид и возможность изменения размеров
формы при помощи мыши:
0 - без рамки. Нет кнопок и заголовка. Используется для экранов с заставками. Изменять размеры и
перемещать нельзя.
1 - нельзя изменять размеры. Возможны операции
Minimize и Maximize. Имеется две кнопки: кнопка
системного меню и кнопка закрытия окна.
3 - толстая рамка, размеры которой менять нельзя.
Используется для создания диалоговых панелей.
Имеется две кнопки: кнопка системного меню и
кнопка закрытия окна.
4 – нельзя изменять размеры. Используется для вывода окна с кнопкой Close. Имеется одна кнопка закрытия окна.
5 - то же, что и 4, но можно изменять размеры окна.
Текст заголовка. Устанавливается при разработке.
1 - есть кнопка системного меню.
0 - нет кнопки системного меню (плохая идея).
Доступность формы. Если значение свойства установлено True, то форма реагирует на события, False
– форма не реагирует на события.
28
Продолжение табл. 1
1
2
Font
MS Sans
Serif
Height
Width
2880
3840
Icon
Согласно
стандартным настройкам
Windows
Left
Top
0
0
3
Возможна настройка параметров шрифта с помощью окна диалога: тип, стиль, размер, эффекты,
размещение. При щелчке мышью по свойству Font
в строке ввода появляется значок - эллипсис (или
троеточие). Если щелкнуть мышью по этому значку, то открывается окно диалога для настройки
шрифтов.
Высота и ширина в твипах. В одном сантиметре 567
твипов.
Определяет значок, выводимый при минимизации
программы на линейку инструментов или на рабочий стол в случае обычного исполняемого файла
Windows. Форму значка можно изменить, загрузив
новый файл с помощью окна диалога. Предварительно необходимо найти на компьютере папку с
файлами, имеющими расширение .ICO.
Определяют положение формы: расстояние от левого края экрана до формы, и от верхнего края экрана до формы, соответственно. Другой способ установки положения формы на экране состоит в использовании окна Form Layout. Перетащите мышью
значок формы в нужное положение. Это окно работает только после запуска программы. Выведите на
экран окно Layout командой View\Form Layout
Window. Запустите программу и закройте окно – в
окне формы Layout появится значок формы, переместите его в нужное место экрана.
29
Окончание табл. 1
1
Mouse
Pointer,
Mouse Icon
Visible
WindowsSt
ate
ScaleMode
ScaleHeight
ScaleWidth
ScaleLeft
ScaleTop
ForeColor
BackColor
2
3
Установка формы курсора мыши. Имеется 17 значений. Наиболее часто используют 11 и 13. 11 – пе0
сочные часы, 13 – стрелка с песочными часами. Ес(None)
ли установить значение свойства Mouse Pointer 99,
то можно использовать любой значок.
Видимость формы на экране. True – форма видима,
True
False – невидима.
Определяет вид формы после загрузки. 0 – нормальный; 1 – форма уменьшается до значка; 2 –
0
форма развернута на весь экран, соответствует операции Maximize.
Позволяет изменять единицу измерения масштаба.
1 - Twip
Существует семь вариантов: 0 – собственное значение, 1 – твипы, 3 – пиксели, 6 – мм, 7 – см.
Используют, когда установлена не стандартная
3195
единица измерения масштаба. Установка данных
4680
значений приводит к присвоению свойству
0
Описывают значения координат левой и верхней
0
рамок формы относительно экрана.
Цвет текста и цвет фона, соответственно. Можно
Согласно установить собственные значения, выбрав из спинастройкам ска. Закладка Palette выводит панель палитры. ЗаWindows
кладка System выводит список текущих значений
цвета различных элементов Windows.
События формы
Формы могут распознавать более 20 различных событий.
События Click, DoubleClick служат для обработки одиночного и двойного щелчка мыши.
С каждым событием связана процедура - обработчик событий. События
генерируются в ответ на действия пользователя – внешние события или генери-
30
руются системой - системные события. Например, реакция на щелчок мыши по
форме реализуется в виде процедуры обработки события Click формы:
Private Sub Form_Click ()
<текст программы>
End Sub
Основные события формы, как правило, обрабатываются в таком
порядке: Initialize, Load, Activate, Deactivate, Query Unload, Unload, Terminate.
Событие Initialize используется, обычно, для подготовки приложения к
работе. В обработчике этого события переменным присваивают начальные значения, расставляют элементы управления на форме и масштабируют их. Данное
событие возникает в момент создания экземпляра формы (до еѐ загрузки или
отображения). Событие Initialize генерируется, например, при загрузке формы,
еѐ показе.
Событие Load используется для выполнения каких-либо действий до вывода формы на экран. Оно позволяет присвоить исходные значения свойствам
формы и еѐ элементам управления. Это событие возникает при каждой загрузке
формы в память. При первой загрузке событие Load следует за событием
Initialize. Событие Load генерируется также в результате применения оператора
Load или Show, а также после ссылки на свойства, методы или элементы управления не загруженной формы.
События Activate /Deactivate. Эти события возникают при работе с несколькими формами. Событие Activate возникает, когда фокус ввода переходит
на данную форму от другой формы того же приложения. При этом форма
должна быть видима. Например, форма, загруженная оператором Load, остаѐтся невидимой, пока не примените метод Show или не установите значение
свойства Visible формы True. Событие Deactivate происходит тогда, когда фокус ввода переходит с данной формы на другую форму этого же приложения.
Обработчик события Unload можно использовать для проверки того, надо ли выгрузить форму.
Mетоды формы
Для управления формами в программах на Visual Basic предназначены
методы: Load, Unload, Hide, Show.
31
Оператор Load инициализирует и загружает форму в память, не выводя
ее на экран. Любая ссылка на форму вызывает автоматическую загрузку ресурсов этой формы, если они еще не загружены в память:
Load frmMyForm ‗форма загружается, но не выводится на экран
Оператор Unload удаляет форму из памяти. Для ссылки на текущую
форму можно использовать константу Ме.
Unload frmMyForm
Или
Unload Me
Оператор Hide – убирает форму с экрана, не удаляя ее из памяти. Хотя
элементы управления скрытой формы не доступны пользователю, к ним можно
обращаться программно. Когда форма скрыта, пользователь не может взаимодействовать с соответствующей частью приложения.
Если на момент вызова метода Hide форма еще не загружена в память,
она загружается, но на экране не появляется.
FrmMyForm.Hide
Или
Me.Hide
Оператор Show выводит форму на экран. Если на момент вызова оператора форма еще не загружена в память, то VB сначала вызывает метод Load.
Метод Show позволяет показывать формы либо как модальные, либо как не модальные.
а) показать форму:
frmMyForm.Show
или
Me.Show
б) показать модальную форму
frmVvodData.Show vbModal
или
frmVvodData.Show 1
Добавление формы в проект
Добавление формы в проект осуществляется командой Project > Add
Form. После ввода команд появится диалоговое окно Add Form. Щелкнуть
32
мышкой по значку Form, затем – по кнопке Open. В проект будет добавлена новая форма.
Установка стартовой формы
Приложение может иметь более одной формы, когда оно начинает работать, загружается одна из них. Для задания первоначально загружаемой формы,
используется команда Проекты > Проект 1 Свойства (Project 1 Properties) и
указывается имя стартовой формы в поле Start Object (объект запуска) диалогового окна Свойства проекта (рис. 2). По умолчанию первой форме, созданной
в начале работы с проектом, предлагается имя Form1. В качестве стартового
объекта может использоваться и процедура. Ее имя должно быть Main, и она
помещается в модуль. Если в окне Свойства проекта указать процедуру Main
как стартовый объект, загрузка и отражение форм приложения будет выполняться из этой процедуры.
Рис. 2. Диалоговое окно свойств проекта
Создание проекта
Разработать интерфейс и программу, позволяющую вычислять объем полого цилиндра и одновременно среднее значение толщины стенок цилиндра
при разных исходных данных в одном сеансе работы. В проекте использовать
две пользовательские формы: в первой разместить элементы управления для
33
ввода исходных данных, запуска вычисления и окончания работы, а во второй –
для вывода результатов. Вычисление объема оформить как подпрограммуфункцию, а вычисление среднего значения параметра – как процедуру.
Порядок выполнения
1. Создайте в своей рабочей папке для нового проекта папку с именем
LabRab2.
2. Создайте новый проект. Для этого в главном меню выполните команду Файл→Новый проект (Ctrl+N).
3. Установите свойства объектов проекта согласно данным таблицы 2.
4. Сохраните проект в папке с именем LabRab2. Стартовая форма лабораторной работы 2 представлена на рисунке 3.
Таблица 2
Объект проекта
Свойство
Значение
Проект1
Имя (Name)
Работа_с_формами
Имя (Name)
FrmLab2_1
Форма Form1
Caption
Лабораторная работа 2
Метка Label1
Заголовок (Caption)
Фамилия, имя исполнителя
Метка Label2
Заголовок (Caption)
Дата начала выполнения
Метка Label3
Заголовок (Caption)
Наименование работы
Рис.3. Стартовая форма
5. Добавьте новую форму в проект «Работа_с_формами», путем выбора
в меню Проект (Project) опции Добавить форму.
34
6. Расположите на формах объекты, как показано на рис. 4-5. Установите
значения свойств элементов согласно данным таблицы 3.
Рис. 4. Интерфейс формы Frm1_Cylinder для ввода данных
Рис. 5. Интерфейс формы Frm2_Cylinder для вывода данных
Таблица 3
Элемент управления
1
Форма Form1
Свойство
2
Name (Имя)
Сaption
StartUpPosition
Значение
3
Frm1_Cylinder
Ввод
0-Manual
35
1
Командная кнопка
Command1
Командная кнопка
Command2
Текстовая надпись
Label1
Текстовая
Label2
надпись
Текстовая надпись
Label3
Текстовая надпись
Label4
Текстовая надпись
Label5
Текстовое
окно
Text1
Текстовое
окно
Text2
Текстовое
окно
Text3
Форма Form2
Текстовая
Label1
Текстовая
Label2
надпись
надпись
2
Name(Имя)
Caption (Заголовок)
Name(Имя)
Caption (Заголовок)
Name(Имя)
AutoSize
Caption (Заголовок)
Font
ForeColor
Name(Имя)
AutoSize
Caption (Заголовок)
Font
Name(Имя)
Caption (Заголовок)
Name(Имя)
Caption (Заголовок)
Name(Имя)
Caption (Заголовок)
Name(Имя)
Text (Текст)
Name(Имя)
Text (Текст)
Name(Имя)
Text (Текст)
Name (Имя)
Сaption
Name(Имя)
Caption (Заголовок)
Name(Имя)
Caption (Заголовок)
Продолжение табл. 3
3
CmdРасчет
Объем полого цилиндра
CmdВыход
Выход
Label1
True
Исходные данные для расчета
объема полого цилиндра
MS San Serif, 12, полужирный
Desktop
Label2
True
V=3,1415*(R1^2-R2^2)*H
Times New, 16
Label3
Внешний радиус R1 (мм)
Label4
Внутренний радиус R2 (мм)
Label5
Высота H (мм)
txtR1
1
txtR2
0
txtH
1
Frm2_Cylinder
Вывод
Label1
Объем (мм^3)
Label2
Средняя толщина стенок (мм)
36
1
Текстовая надпись
Label3
Текстовое
окно
Text1
Текстовое
окно
Text2
Текстовое
окно
Text3
Командная кнопка
Command1
2
Name(Имя)
Caption (Заголовок)
Name(Имя)
Text (Текст)
Name(Имя)
Text (Текст)
Name(Имя)
Text (Текст)
Name(Имя)
Caption (Заголовок)
Окончание табл. 3
3
Label3
Количество образцов (шт)
txtVal
txtMed
txtN
CmdReturn
Ввод новых данных
7. Откройте окно кода Frm1_Cylinder и добавьте в шаблон процедуры
следующий фрагмент:
Option Explicit
Public a As Double
Const Pi As Double = 3.141593
Public Function Volume(R1, R2, h As Double) As Double
Volume = Pi * (R1 ^ 2 - R2 ^ 2) * h
End Function
Public Sub Sum(ByVal Rr1 As Double, ByVal Rr2 As Double)
Static k As Integer, summa As Integer
Rr1 = Rr1 - Rr2
k=k+1
Frm2_Cylinder.txtN = Str(k)
summa = Rr1 + summa
Frm2_Cylinder.txtMed = Str(summa / k)
End Sub
Private Sub CmdРасчет_Click()
Dim Rad1 As Double, Rad2 As Double, Height As Double
37
Rad1 = Val(txtR1)
Rad2 = Val(txtR2)
Height = Val(txtH)
a = Volume(Rad1, Rad2, Height)
Frm2_Cylinder.Show
Call Sum(Rad1, Rad2)
Frm2_Cylinder.txtVal = Str(a)
Frm1_Cylinder.CmdРасчет.Visible = False
End Sub
Private Sub CmdВыход_Click()
Unload Frm1_Cylinder
Unload Frm2_Cylinder
End
End Sub
8. Откройте окно кода Frm2_Cylinder и напишите программный код для
командной кнопки CmdReturn:
Private Sub CmdReturn_Click()
Frm1_Cylinder.Show
Frm1_Cylinder.CmdРасчет.Visible = True
End Sub
9. Запустите приложение (Run / F5) и проверьте, как оно работает.
10. Сохраните проект в рабочей папке.
Задания для самостоятельной работы
Разработать интерфейс и программу, позволяющую многократно вычислять некоторую физическую величину по заданной формуле (например: объем,
центральный момент и т.п.) и одновременно вычислять среднее значение одного из параметров формулы (толщины стенок, высоты и т.п.). В проекте использовать две пользовательские формы. В первой разместить элементы управления
для ввода исходных данных, запуска вычисления и окончания работы, а во вто-
38
рой – результаты расчета. Вычисления по формуле оформить как подпрограмму-функцию, а вычисление среднего значения параметра – как процедуру.
Варианты заданий по лабораторной работе приведены в табл. 4.
Таблица 4
№
Наименование
Формула для расчета
Параметр
1
2
3
4
Объем геометрического тела
1
2
3
4
Тор
Бочка (h – высота, d и D
– диаметры основания и
средней части соответственно)
Усеченный круглый цилиндр
Усеченный прямой конус
5
Шаровой сектор
6
Шаровой сегмент
V  2 2 Rr 2
V
r
h 
3 2
2
 2 D  Dd  d 
15 
4

h  h2
V  R 2 1
2
h 2
V
R  r 2  Rr
3

h
R

h
2R 2 h
V
3
1
V  h 2 3 R  h 
3
R
h
Шаровой слой (h – высота, 2а и 2b – диаметры
1
V  h 3a 2  3b 2  h 2
7
h
окружностей в основа6
ниях)
Центральный момент инерции тела, приведенный к единичной массе (при вычислениях задать m=1)
Прямоугольный паралm 2
J
a  b2  c2
8
c
лелепипед
12
mh
3R  h
Jz 
9
Шаровой сектор
h
5


10
Шаровой сегмент


mh  20 R 2  15 Rh  3h 2
Jz 
20 
3R  h




h
39
Окончание табл. 4
4
1
2
3
11
Усеченный прямой конус
3 R5  r 5
J
m
10 R 3  r 3
r
12
Тор
3 

J z  m R 2  r 2 
4 

r
13
Тор
14
Полый прямой круглый
цилиндр (Oz – ось цилиндра)
15
Полый шар
Jx  Jy 
J

m
4 R 2  5r 2
8

m
3 R 2  3r 2  H 2
12
2 R5  r 5
J m
5 R3  r 3

r

R-r
R-r
Вопросы для самопроверки
1. Дать характеристику внешнему виду формы.
2. Стартовая форма. Назначение.
3. Загрузка, отображение и скрытие формы.
4. События и методы формы.
5. Установка свойств формы.
6. Понятие о MDI-форме.
8. Как включить программный код в процедуры событий формы?
9. Как добавить новую форму в проект? Как включить в проект форму
ранее разработанного проекта?
10. Как сохранить форму, удалить форму?
40
Лабораторная работа 3
Тема: Объекты (элементы) управления.
Цель работы: ознакомиться с базовым набором управляющих элементов,
их свойствами и возможностями при построении интерфейса приложения.
Элементы управления – это объекты, содержащиеся внутри объекта Форма. Каждый тип элемента управления имеет свой собственный набор
свойств (табл. 1), методов и событий, что делает его пригодным для определенной цели.
Таблица 1
Основные свойства объектов управления
Свойство
Назначение
Name
Имя объекта
Caption
Заголовок
Visible
Видимость
BorderStyle
Стиль границ
FontBold
Полужирный шрифт
FontItalic
Курсив
FontName
Тип шрифта
FontSize
Размер шрифта
FontUnderline
Шрифт подчеркнутый
Enabled
Доступ
Left
Координата по горизонтали
Top
Координата по вертикали
Height
Высота объекта
Width
Ширина объекта
BorderColor
Цвет фона
ForeColor
Цвет шрифта
BorderColor
Цвет границ
FillStyle
Стиль заполнения
MousePointer
Вид курсора при наведении на объект
Для размещения элемента на форме нужно дважды щелкнуть на выбранном значке на панели элементов или же «нарисовать» элемент на форме -
41
для этого необходимо щелкнуть на нем мышью и на форме растянуть соответствующий контур. После размещения элемента последовательно задаются его
свойства в окне свойств.
При выборе имени (Name) объектов Visual Basic рекомендуется использовать следующую простую схему:
 начинать название с трехбуквенного префикса;
 использовать только буквы, цифры и знак подчеркивания ( _ );
 использовать не более 40 символов.
Командная кнопка (Command Button)
Кнопка используется для управления процессом: начало, окончание,
пре-рывание и т. д.
Основными свойствами являются имя, название, положение, размеры,
цвет, доступность, видимость.
Дополнительно можно указать следующие свойства:
Default – определяет, является данная кнопка активной по умолчанию
или нет. Свойство имеет два значения: True и False. По умолчанию – False. Если установлено значение True, то фокус установлен на данной кнопке, то есть
кнопка активна. Нажатие клавиши Enter перехватывается и передается этой
кнопке.
Cancel - используется подобно свойству Default. Оно обеспечивает перехват нажатия клавиши Esc и вызов события Click для соответствующей кнопки.
Appearance – позволяет придать кнопке трехмерный вид.
ToolTipText – позволяет ввести текст, который отображается в подсказке,
появляющейся при зависании указателя мыши на элементе управления.
Надпись (Label)
Надпись предназначена для отображения текста, который пользователь не может изменить с клавиатуры. Она обладает всеми перечисленными
выше об-щими свойствами (табл. 1). Дополнительно можно указать еще ряд
свойств:
BorderStyle - позволяет отображать текст с рамкой или без рамки.
Font - это свойство позволяет оформлять шрифты, используя все возможности Windows.
42
AutoSize - автоматическое приведение ширины объекта в соответствие с
длиной текста. Если свойство AutoSize равно False и длина вводимого текста
больше ширины надписи, то текст усекается. Если свойство AutoSize равно
True, то размер объекта приводится в соответствие с длиной текста.
Текстовое поле (TextBox)
Текстовое поле является основным элементом управления, предназначенным для ввода и вывода данных.
Основные свойства текстового поля совпадают с перечисленными выше
(табл. 1), но есть и особенные свойства:
Text – аналог свойства Caption. Через это свойство осуществляется, как
правило, ввод данных в программу и вывод данных на экран;
Alignment – выравнивание текста. Имеет три значения: 0- выравнивание
по левому краю, 1 - по правому краю, 2 - по центру;
ScrollBars – вывод линеек прокрутки. Свойство Scrollbars позволяет устанавливать горизонтальную, вертикальную линейки прокрутки или обе.
MultiLine – определяет может ли поле содержать более одной строки
текста. Обычно совмещается с установкой свойства ScrollBars.
В текстовом поле можно выделять и заменять текст. Это осуществляется
программным путем с помощью свойств SelStart, SelLength, SelText.
SelStart – начало выделения.
SelLength – длина выделяемого текста.
SelText – замена текста.
Например:
Text1.SelStart=2 ‗начать выделение со второго символа
Text1.SelLength=6 ‗выделить шесть символов
Text1.SelText = ―Привет‖ ‗заменить выделение на слово ―Привет‖
MaxLength – определяет максимальное число символов – По умолчанию
– 0, что означает максимальное значение – 32 тысячи символов.
PassWordChar – позволяет заменять вводимые символы звездочками.
Это свойство используется для ввода пароля.
Locked – запрещает пользователям изменять содержимое поля. Поле
можно просматривать, но нельзя редактировать или удалять. Однако, значение
поля можно изменить программным путем.
43
Объект TextBox может обрабатывать 23 события. Основные события текстового поля связаны с вводом данных: Click, DblClick, KeyDown, KeyUp, GotFocus, LostFocus, которые рассмотрены были ранее;
Change - изменение значения текстового поля.
При вводе данных с клавиатуры в активное текстовое поле программа не
делает различий между буквами и цифрами: все вводится как текст. Поэтому
для перевода текста в числа и обратно чисел в текст, используются функции
преобразования символьных переменных:
Val(С) – преобразование текста в число ;
Str(N) – преобразование числа в текст или Str$(N) - для преобразования в
символьную переменную переменных типа Variant.
Например:
А = Val(Text1.Text) ‗перевод значения текстового поля в число.
Text2.Text = Str$(а) ‗перевод числа в текст.
Окно с рисунком (PictureBox )
Элемент управления PictureBox предназначен для отображения рисунков и других графических объектов.
К основным и наиболее часто используемым свойствам относятся:
Align - определяет положение PictureBox в форме: 0 - None, 1 - Top, 2 Bottom, 3 - Left, 4 - Right. В зависимости от значения этого свойства объект будет закрепляться у одного из краев формы или будет сохранять положение, заданное разработчиком (None). Если элемент управления закрепляется у одного
из краев формы, то его размер (ширина и высота) всегда будут устанавливаться
в соответствии с размерами формы.
Picture - позволяет загружать графические объекты и сохранять их, содержит отображаемый графический объект.
Для загрузки графического объекта щелкните мышью по кнопке троеточие в поле свойства Picture – появится диалоговое окно Load Picture, которое
позволяет осуществить поиск и загрузку нужного файла с диска. Например:
C:\Windows\облака.bmp.
В процессе работы программы загрузку изображений можно осуществлять с помощью функции LoadPicture:
Объект.Picture = LoadPicture("спецификация_файла")
44
Выгрузка рисунка в процессе работы осуществляется этой же функцией
без указания имени файла:
Объект.Picture = LoadPicture()
Флажки и переключатели
Флажки (CheckBox) – это элементы управления, которые можно отмечать «галочками», выбирая из ряда опций одну или несколько.
Переключатели (OptionButton) – это элементы управления, которые
можно отмечать точкой, выбирая один элемент из группы.
Важнейшим событием для этих элементов является событие Click, а основным свойством – его значение Value. С помощью этого свойства можно определить состояние объекта. Свойство Value может иметь три значения: 0 – не
отмечен; 1- отмечен; 2 – отмечен, но недоступен. Последнее значение может
быть установлено только программно.
Списки и поля со списками
Имеется несколько типов полей со списками: простые списки
(ListBox), раскрывающиеся списки
(ComboBox) или поле со списком, а
также элемент Im-ageCombo.
Списки позволяют выбирать значения из списка, вносить записи в процессе работы программы и на этапе разработки. Если данные не умещаются в
окне, то автоматически появляется линейка прокрутки.
К основным и наиболее часто используемым свойствам относятся: Text,
List, ListIndex, ListCount, Columns, Sorted, ItemData, MultiSelect.
Text – хранит значение выбранного элемента списка.
List – это свойство хранит все значения списка. Все записи в списке имеют индекс (как массивы), нумерация элементов списка начинается с нуля. Зная
индекс элемента, можно выбрать его из списка. Синтаксис команды:
<переменная>=lstBox.List(i)
ListIndex - возвращает индекс элемента списка:
< номер_элемента >= lstBox.ListIndex
Можно комбинировать свойства List и ListIndex:
<Элемент_списка>=lstBox.List(lstBox. ListIndex)
Если в списке не выбран ни один элемент, то значение свойства ListIndex
равно –1.
ListCount – сохраняет текущее значение числа элементов списка.
45
Columns – это свойство позволяет в процессе разработки отображать
данные в несколько столбцов. Заполнение столбцов в этом случае осуществляется последовательно – сначала заполняется первый столбец, затем второй и
т.д.
Sorted – определяет способ расположения элементов в списке. Если это
свойство установлено в True, то все элементы будут сортироваться по алфавиту, даже если они добавлены с указанием индекса. Индекс последнего добавленного элемента имеет свойство NewIndex. Значение свойства сортировка устанавливается только на этапе разработки.
MultiSelect – это свойство позволяет выбирать одновременно несколько
элементов. Данное свойство имеет три значения:
0 – множественный выбор невозможен;
1 – простой множественный вы-бор; 2 – расширенный выбор.
Методы списков
AddItem - добавление элементов в список:
List1.AddItem <Элемент [ , Индекс ]>
List1.AddItem ―Персональная выставка‖,5
RemoveItem - удаление элементов из списка:
List1. RemoveItem.ИндексЭлемента
ListBox Clear - удаление всех элементов списка.
Создание проекта
Создать приложение для ознакомления с возможностями элементов
управления.
Порядок выполнения
1. Создайте в своей рабочей папке для нового проекта папку с именем
LabRab3.
2. Создайте новый проект. Для этого в главном меню выполните команду Файл→Новый проект (Ctrl+N).
3. Установите свойства объектов проекта согласно данным таблицы 2.
4. Сохраните проект в папке с именем LabRab2. Стартовая форма лабораторной работы 2 представлена на рисунке 1.
46
Таблица 2
Объект проекта
Проект1
Форма Form1
Метка Label1
Метка Label2
Метка Label3
Свойство
Имя (Name)
Имя (Name)
Caption
Заголовок (Caption)
Заголовок (Caption)
Заголовок (Caption)
Значение
Объекты_управления
FrmLab3_1
Лабораторная работа 3
Фамилия, имя исполнителя
Дата начала выполнения
Наименование работы
Рис. 1. Стартовая форма
5. Добавьте новую форму в проект «Объекты_управления», путем выбора в меню Проект (Project) опции Добавить форму.
6. Установите значения свойств элементов согласно данным таблицы 3.
Приведите свою форму в соответствие с образцом (рис. 2).
Таблица 3
Объект
Свойство
Значение
1
2
3
Форма
Name
FrmLab3_2
Caption
Свойства списка и комбинированного списка
Рамка
Caption
Выбранная запись и ее номер
Font
Размер 10
47
Окончание табл. 3
1
Метки
Список
2
Name
Caption
Name
Caption
Name
List
Sorted
Height
Style
3
Lbl1
(отсутствует)
Lbl2
(отсутствует)
LstFruct
Груша
Слива
Персик
Ананас
Вишня
Апельсин
Лимон
Мандарин
True
1035
0-Standard
(переход к следующему
элементу
списка
Ctrl/Enter)
Рис. 2. Интерфейс приложения
7. В окне кода процедуры обработки события Click для объекта LstFruct
добавьте строки:
48
Lbl2.Caption = LstFruct.ListIndex
Lbl1.Caption = LstFruct.Text
8. Проверьте работу созданной программы (обратите внимание, что список отсортирован и нумерация элементов списка начинается с нуля).
9. Остановите программу, установите для объекта LstFruct значение 1CheckBox для свойства Style и проверьте работу программы.
10. Добавьте на форму объекты и измените их свойства в соответствии с
табл. 4. Приведите свою форму в соответствие с образцом рис. 3.
Таблица 4
Объект
Свойство Значение
Рамка
Caption
Количество записей в списке
Font
Размер 10
Метка
Name
Lbl3
Caption
(отсутствует)
Комбинированный
Name
CboProduct
список
List
Хлеб
Молоко
Сыр
Сметана
Масло
Творог
Sorted
False
Width
1000
Style
0-DropDown Combo
Text
(отсутствует)
Командные кнопки Name
CmdAdd
Caption
Добавить
Name
CmdDel
Caption
Удалить
11. В окне кода процедуры обработки события Click для объекта
CmdAdd добавьте строки:
CboProduct.AddItem CboProduct.Text
Lbl3.Caption = CboProduct.ListCount
49
Рис. 3. Интерфейс приложения
12. В окне кода процедуры обработки события Click для объекта
CmdDel добавьте строки:
CboProduct.ListIndex = 0
CboProduct.RemoveItem CboProduct.ListIndex
lbl3.Caption = CboProduct.ListCount
13. Проверьте работу программы (рис. 4). Сохраните проект в рабочей
папке.
Рис. 4. Результат работы программы
50
14. Добавьте в проект «Объекты_управления» новую форму.
15. Установите значения свойств элементов согласно данным таблицы 5.
Приведите свою форму в соответствии с образцом (рис. 5).
Таблица 5
Объект
Свойство
Значение
1
2
3
Frame1 (рамка)
Caption
Выбери фигуру
Frame2
Caption
Ширина границы фигуры
Frame3
Caption
Стиль заполнения фигуры
Frame4
Caption
Стиль границ
Frame5
Caption
Цвет границ
Option1
Name
Opt1
(Переключатели)
Caption
Прямоугольник
Option2
Name
Opt2
Caption
Квадрат
Option3
Name
Opt3
Caption
Овал
Option4
Name
Opt4
Caption
Окружность
Option5
Name
Opt5
Caption
Прямоугольник с закругленными углами
HScroll1
Name
HsbWidth
(Горизонтальные
Max
20
прокрутки)
Min
1
HScroll2
Name
HsbFillSt
Max
7
Min
0
HScroll3
Name
HsbBorderSt
Max
6
Min
0
HScroll4
Name
HsbRed
Max
255
Min
0
51
Окончание табл. 5
1
HScroll5
HScroll6
Shape1
2
Name
Max
Min
Name
Max
Min
Name
3
HsbBlue
255
0
HsbGreen
255
0
Shape1
Рис. 5. Интерфейс приложения
Чтобы поместить переключатель внутрь рамки, необходимо один раз
щелкнуть на нем в панели элементов и перетащить его внутрь рамки.
16. В окне кода процедуры обработки события Change для объектов
Hsbred , HsbBlue, HsbGreen добавьте строки:
Shape1.BorderColor = RGB(Hsbred.Value, Hsbgreen.Value, HsbBlue.Value)
17. В окне кода процедуры обработки события Click для объекта Opt1
добавить строки:
Shape1.Shape = 0
52
18. Самостоятельно введите код для других переключателей, меняя только число:
Квадрат
1
Овал
2
Окружность
3
Прямоугольник с закругленными углами
5
19. Проверьте работу программы (рис. 6).
Рис. 6. Работа приложения
20. Добавьте в проект «Объекты_управления» новую форму.
21. Установите значения свойств элементов согласно данным таблицы 6.
Приведите свою форму в соответствии с образцом (рис. 7).
Таблица 6
Объект
Свойство
Значение
1
2
3
Метки
Caption
212
Caption
100
Caption
По Фаренгейту
Caption
По Цельсию
Caption
-40
Caption
-40
53
Окончание табл. 6
1
Вертикальная
прокрутка
Текстовые окна
2
Name
Max
Min
LargeChange
SmallChange
Name
Text
Name
Text
3
VsbTherm
-40
100
10
1
TxtF
(отсутствует)
txtC
(отсутствует)
Рис. 7. Интерфейс приложения
22. В окне кода процедуры обработки события Change добавьте строки
для объекта VsbTherm проверьте работу приложения:
Dim tempC, tempF As Integer
tempC = CInt ( vsbTherm.Value )
TxtC.Text = Str ( tempC )
tempF = CInt ( tempC * 9 / 5 + 32 )
txtF.Text = Str( tempF )
23. Проверьте работу приложения (рис. 8):
54
Рис. 8. Результат работы приложения
24. В графическом редакторе Paint создайте четыре рисунка «зима»,
«весна, «лето», «осень» и сохраните рисунки в отдельных файлах на диске С:.
25. Добавьте в проект «Объекты_управления» новую форму. Установите
значения свойств элементов согласно данным таблицы 7. Приведите свою форму в соответствии с образцом (рис. 9).
Таблица 7
Объект
Свойство
Значение
1
2
3
Форма
Name
frmPaint
WindowState 2-Maximized
Метка
Name
LblResult
Caption
0
Полоса прокрутки
Name
HsbSet
Max
15
Min
1
Командные кнопки
Name
CmdWinter
Caption
Зима
Name
CmdSpring
Caption
Весна
Name
CmdSummer
Caption
Лето
55
Окончание табл. 7
1
Командные кнопки
2
Name
Caption
Name
Caption
3
CmdAutumn
Осень
cmdExit
Выход
Рис. 9. Интерфейс приложения
26. В окне кода процедуры обработки события Change набрать для объекта HsbSet:
lblResult.Caption = Str(hsbSet.Value)
frmPaint.BackColor = QBColor(hsbSet.Value)
27. Такой же код набрать для обработки события Scroll для объекта
HsbSet.
28. В окне кода процедуры обработки события Click набрать для объекта
cmdExit:
MsgBox “До свидания”,0,”Выход”
End
29. В окне кода процедуры обработки события Click набрать для объекта
cmdWinter:
frmPaint.Picture = LoadPicture("c:\Мои Документы\зима.bmp")
56
30. Проверить работу приложения (рис. 10):
Рис. 10. Результаты работы приложения
Задания для самостоятельной работы
Задание № 1
Разработать приложение, позволяющее с помощью списков «Фирма»,
«Цвет», «Исполнение», «Тип кузова» и полосы прокрутки дать описание модели автомобиля. Выбранные значения должны отображаться в метке по щелчку
по кнопке «Зафиксировать». Значения списков формируются на стадии проектирования.
Рис. 11. Интерфейс приложения об описании моделей автомобилей
57
Задание № 2
Разработать приложение, позволяющее добавлять и удалять фамилии
студентов из списка, а также выводить в метку выбранные значения из 3 списков (при щелчке по командной кнопке). Значения для списков «Студенты»,
«Список экзаменов», «Оценка» сформировать на стадии проектирования (рис.
12).
Рис. 12. Интерфейс приложения о результатах экзамена
Задание № 3
Разработать приложение, позволяющее с помощью группы флажков отображать или не отображать элементы управления в окне приложения (рис. 13).
Рис. 13. Интерфейс приложения для отображения/скрытия элементов
управления
58
Задание № 4
Разработать приложение, позволяющее менять режимы работы текстового
окна и метки с помощью групп соответствующих флажков (рис. 14).
Рис. 14. Интерфейс приложения по изменению режимов работы текстового
окна и метки
Задание № 5
Разработайте приложение, которое позволяет с помощью полосы прокрутки
установить величину угла в градусах, перевести эту величину в радианы, а также определить значение синуса, косинуса и тангенса угла. Разработайте форму
по следующему образцу (рис. 15):
Рис. 15. Интерфейс приложения для перевода угла в радианы
59
Вопросы для самопроверки
1. Управляющие элементы Visual Basic. Назначение. Установка.
2. Какие свойства элементов управления являются базовыми?
3. Как установить свойства блокирования и невидимости элементов
управления?
4. Кнопка как управляющий элемент. Свойства кнопок. Базовые события
кнопок.
5. Элемент управления - текстовые поля. Свойства текстовых полей.
Работа с текстовыми полями.
6. Назначение, свойства и события элемента – текстовая надпись.
7. Переключатели и флажки. Свойства, События. Работа с флажками и
переключателями.
8. Списки. Свойства. События. Работа со списками.
9. Организация работы с рисунками (образами).
60
Лабораторная работа 4
Тема: Переменные. Ввод-вывод данных.
Цель: Изучить способы представления и использования данных, способы
ввода-вывода данных.
Переменные
Переменная – это именованная область памяти, предназначенная для хранения данных.
Значения переменных могут изменяться в процессе выполнения программы. Каждой переменной присваивается идентификатор – имя. Имя переменной начинается с буквы и может содержать до 255 символов. В имени не
допускаются пробелы, нельзя использовать также символы ―.‖ и ―&‖. Имя переменной рекомендуется начинать с одно символьного префикса (табл. 1), характеризующего тип хранимых данных. Тип переменной устанавливается при
объявлении переменной или определяется программой автоматически по содержанию присвоенной ей информации. Тип переменной задает определенный
формат и размер содержимого переменной.
Способы объявления переменных
Чтобы не было путаницы с типами данных и проблем при поиске ошибок,
рекомендуется обязательно объявлять тип переменной. Тип переменной можно
объявить несколькими способами:
1. Не явно с помощью специального символа – суффикса, записанного
после имени переменной (табл. 1). Спецсимвол следует указывать только при
первом использовании переменной:
C$ = ―текст‖: a! = 1.769: B% = 12674
2. По умолчанию с помощью операторов вида DefType. Этот оператор
используется только в разделе Главная. Синтаксис оператора:
DefType <список символов >!
Например:
DefStr C
DefInt I-L
В данном примере первый оператор объявляет, что все переменные, имя
которых начинается с символа С являются переменными строкового типа, вто-
61
рой оператор объявляет, что все переменные, имена которых начинаются с
символов I, J, K, L являются переменными целого типа одинарной точности.
3. Явное объявление с помощью операторов Dim, Private, Static, Public,
Global. При объявлении переменной указывается ее имя и тип. Синтаксис операторов объявления переменных:
Dim <имя_переменной> As <тип_переменной> [,<имя_переменной>,
As <тип_переменной >]
Не допускается использование в программе двух одинаковых имен, отличающихся только типом.
Особо необходимо отметить переменные типа Variant. Если тип переменной не указан, они будут объявлены программой, как Variant. В переменной типа Variant можно хранить переменные любого типа. Преобразование типов переменных в этом случае осуществляется автоматически. Но при этом в некоторых случаях могут возникать ошибки. Кроме того, использование переменной
типа Variant приводит к перерасходу оперативной памяти, а также этот тип
данных неприемлем для использования в качестве аргументов для тех функций,
параметры которых описаны явным образом. Поэтому рекомендуется с самого
начала объявлять типы переменных явно.
Область определения (видимости) переменных
В VB есть три вида областей определения, характеризующих доступность
переменной: локальная; контейнера (формы или модуля); глобальная.
Локальная переменная доступна только в текущей процедуре или
функции. Локальные переменные объявляются оператором Dim.
Переменная контейнера доступна только в текущей форме, модуле или
классе. Объявляются оператором Dim в разделе Главная (General) формы или
модуля. Переменная модуля объявляется оператором Private.
Глобальные переменные доступны во всем проекте. Они объявляются в
разделе General главного модуля программы (файл с расширением .bas) оператором Global или Public.
Примеры:
Dim a As Integer, b As Single
Dim nCount As Integer, I As Integer, J As Integer
Publuc sText As String, NameFile As String
Global dFiz As Double
62
Таблица 1
ОбъявСуф Пре ление по
фикс фикс умолчанию
DefByte
%
n
DefInt
&
l
DefLng
!
f
DefSng
#
d
DefDbl
@
c
DefCur
-
b
DefBool
-
-
Date
$
s
DefStr
-
v
DefVar
Тип данных
Описание
Целые величины в диапазоне от 0 до 255
Целые величины в диапазоне от –32768 до 32767
Целые от –2147483648 до 2147483647
Числа с плавающей точкой одинарной точности
(4 байта) с точностью 7 знаков (остальные отSingle
брасываются с округлением) от 10-45 до 10+38,
как положительные, так и отрицательные
Числа с плавающей точкой двойной точности,
16 значащих цифр в диапазоне от –
Double 1.79769313486232E308 до –4.94065645841247E324 и положительные от 4.94065645841247E-324
до 1.79769313486232E308
Числа с фиксированной точкой и четырьмя деCurrenсятичными цифрами от –923337203684477.5808
cy
до 923337203685477.5807
Логическая величина, используется для предBoolean
ставления логических переменных, имеет два
значения: True и False
Дата и время, от 1/1/100 до 12/31/ 9999; от 0:0:0
DefDate
до 23:59:59
Строковая переменная. Зависит от размера
String
строк. Позволяет хранить до 2 Гбайт текста.
Variant
Вариантный
Byte
Integer
Long
Время жизни переменных
Переменные, объявленные как локальные, при выходе из процедуры удаляются из памяти, а при новом вызове инициализируются заново.
63
Глобальные переменные при выходе из программы сохраняют свои значения.
Статические переменные
С целью обеспечения сохранности значений переменных при выходе из
процедуры они могут быть объявлены в данной процедуре как статические
оператором Static:
Static nPageNumber As Integer
Чтобы объявить статическими все переменные процедуры ключевое слово Static следует записать в заголовке процедуры:
Static Sub <имя_процедуры> _<событие> (аргументы)
Static Sub ИзвлечениеКорня_Click ( )
Константы
Основное отличие констант от переменных состоит в том, что их значения нельзя изменить в процессе выполнения программы. Они всегда сохраняют
значение, присвоенное при разработке. Области видимости для констант определяются так же, как и для переменных. Константы бывают локальные, контейнеры и глобальные. При объявлении констант используется ключевое слово
Const. Глобальная константа объявляется как Public Const.
Глобальные константы объявляются только в модуле. Одновременно с
объявлением константе можно присвоить и значение:
Public Const <Имя константы>=<Значение>
Private Const <Имя константы>=<Значение>
Например:
Public Const Pi = 3.1415926538897932
Const G = 9.81
Public Const nName = «Лев Толстой»
Const ПлотностьМатериала = 225
Const Масса = ПлотностьМатериала * Высота* Ширина* Длина.
Константы можно объявлять и с указанием типа данных:
[ Public\ Private] Const <Имя константы> As <Тип_данных>=<Значение>
Для указания типа данных используются те же ключевые слова, что и при
объявлении переменных.
Ввод-вывод данных
Данные в программу могут быть введены несколькими способами:
64
- присвоением начальных значений переменным непосредственно в программе с помощью оператора присваивания;
- вводом данных с клавиатуры в режиме диалога с помощью элемента
управления TextBox;
- с помощью диалогового окна InputBox.
Присвоение начальных значений переменным
Присвоение начальных значений переменным осуществляется с помощью
оператора присваивания;
Синтаксис оператора:
<имя_переменной> = <значение>
Например:
a=3.754
n=Sin(x)
c$= ―Зимние каникулы‖
Ввод данных с помощью элемента управления TextBox
В режиме диалога пользователя с программой данные можно ввести с клавиатуры непосредственно в строку ввода элемента управления TextBox. Текстовое
поле используется для ввода самой разнообразной информации. Вся информация вводится как текст. Для преобразования строковых данных в числовые используется функция Val(строковая переменная). Например:
<переменная_символьного_типа>= txtText1.Text
<переменная_числового_типа>= Val(txtText1.Text)
Ввод данных с помощью окна диалога InputBox
В режиме диалога данные можно ввести в программу с помощью функции InputBox (рис. 1). Функция InputBox используется тогда, когда необходимо ввести только краткую информацию. Она имеет следующий синтаксис:
<Переменная> = InputBox (prompt [,title] [,default] [,xpos] [,ypos]
Параметр: Prompt определяет текст, отображаемый в диалоговом окне как
приглашение («Введите значение переменной Х»).
Title – отвечает за надпись заголовка («Ввод данных»). Если этот параметр не указан, то отображается название приложения.
65
Default – определяет значение по умолчанию, отображаемое в строке ввода.
Параметры XPos и YPos используются совместно и указывают координаты верхнего левого угла окна. По умолчанию окно отображается посредине экрана.
При нажатии кнопки ОК, функция InputBox возвращает строку, введенную пользователем. При нажатии кнопки <Cancel> возвращается пустая строка.
Рис. 1. Окно ввода InputBox
Вывод данных
Для вывода данных также используется несколько способов: с помощью
оператора Print; с помощью текстового поля; с помощью окна сообщений
MsgBox, с помощью сетки MSFlexGrid.
Оператор Print
Оператор Print может выводить информацию непосредственно в форму
или графический объект PictureBox.
Синтаксис оператора Print:
Print [―текстовое сообщение‖] [;/�/,] <список выражений> [;/,]
Здесь ―текстовое сообщение‖ – текcт, делающий понятным то, что выводится на форму;
[;/� /,] - управляющие символы: если в качестве разделителя используется ―;‖ или пробел ― ‖, то очередное значение выводится непосредственно вслед
за предыдущим значением. Поэтому, если выводится текст, то он сливается.
При выводе положительных чисел оставляется один пробел под знак числа. Если в качестве разделителя используется запятая, то очередное значение выводится в соседнюю зону. Выводная строка оператора Print разбита на пять зон по
14 символов в каждой, что позволяет позиционировать выводимую информацию;
66
<список выражений> - в качестве выводимых значений могут использоваться константы, переменные, функции, арифметические выражения или
текст.
Текстовое поле TextBox
Текстовое поле TextBox может использоваться для вывода информации в
любом месте формы. Позиция элемента управления устанавливается как при
разработке формы, так и в процессе выполнения программы:
Text1.Top=Y
Text1.Left=X
Text1.Text = ―текст‖
Окно диалога MsgBox
Окно MsgBox подобно окну InputBox и служит для вывода информации.
Этот компонент широко используется для вывода различных сообщений в приложениях Windows.
MsgBox можно вызвать как команду и как функцию.
Синтаксис команды:
MsgBox Prompt [, Buttons] [,Title] [, Helpfile, Context]
Вид окна сообщения может быть различным, но в его состав всегда входят: текст сообщения (prompt), заголовок (title), пиктограмма и набор кнопок.
В табл. 1. приведены константы окна MsgBox.
Параметр Buttons определяет состав кнопок в окне. Он формируется из
нескольких частей:
Buttons = Button + Icon + Default + Modal +Extras
где Button – количество кнопок и их состав;
Icon – вид пиктограммы;
Default – определяет, какая кнопка активна;
Modal – вид диалогового окна (окно приложения или системы). Модальность означает, что выполнение приложения возможно только после закрытия
окна;
Extras – дополнительные свойства.
По умолчанию выводятся кнопки <ОК> и <Отмена>.
67
Таблица 1
Константа
Значение
Описание
Категория Button
vbOkOnly
0
Только кнопка Ok
VbOkCancel
1
Кнопки Ok и Cancel
vbAbortRetryIgnore
2
Выводится кнопка Abort, Retry, Ignore
vbYesNoCancel
3
Выводится кнопка Yes, No, Cancel
vbYesNo
4
Выводится кнопка Yes, No
vbRetryCancel
5
Выводится кнопка Retry, Cancel
Константы категории Icon
Отображает пиктограмму Critical
VbCritical
16
Message
Отображает пиктограмму Worning
VbQuestion
32
Query (запрос)
Отображает пиктограмму Worning
VbExclamation
48
Message (предупреждение)
Отображает пиктограмму Information
vbInformation
64
Message (информация)
Константы категории Default
vbDefaultButton1
0
по умолчанию активна первая кнопка
vbDefaultButton2
256
по умолчанию активна вторая кнопка
vbDefaultButton3
512
по умолчанию активна третья кнопка
по умолчанию активна четвертая кнопvbDefaultButton4
768
ка
Константы категории Modal
модальное диалоговое окно приложеvbModal
1
ния
vbSystemModal
4096
модальное диалоговое окно системы
Константы категория Extras
vbMsgBoxHelpButton
163874
дополнительная кнопка для справки
отображение диалогового окна в фоноvbMsgBoxSetForeground
65536
вом режим
vbMsgBoxRight
524288
текст выровнен по правому краю
vbMsgBoxRtlReading
1048576
текст отображается справа налево
68
Если вам необходимо получить информацию о том, какое решение принял пользователь, можно использовать функцию MsgBox.
Синтаксис функции:
<Переменная>= MsgBox (Prompt [, Buttons] [,Title] [, Helpfile, Context])
Эта функция не только отображает окно сообщения, но еще и возвращает
в переменную некоторое значение (табл. 2).
Таблица 2
Константа
Значение
Нажата кнопка
vbOk
1
<Ok>
VbCancel
2
<Отмена>
VbAbort
3
<Прервать>
VbRetry
4
<Повторить>
VbIgnore
5
<Пропустить>
VbYes
6
<Да>
VbNo
7
<Нет>
Для вывода окна, представленного на рис. 2, использовалась функция
k = MsgBox("Вы хотите выйти", vbQuestion + vbOKCancel, "Окна")
Рис. 2. Окно вывода MsgBox
Создание проекта
Создать приложение для ознакомления со способами ввода-вывода данных.
Порядок выполнения
1. Создайте в своей рабочей папке для нового проекта папку с именем
LabRab4.
2. Создайте новый проект. Для этого в главном меню выполните команду Файл→Новый проект (Ctrl+N).
3. Установите свойства объектов проекта согласно данным таблицы 2.
69
4. Сохраните проект в папке с именем LabRab4. Стартовая форма лабораторной работы 4 представлена на рисунке 1.
Таблица 3
Объект проекта
Свойство
Значение
Проект1
Имя (Name)
Диалоговые_окна
Имя (Name)
FrmLab4_1
Форма Form1
Caption
Лабораторная работа 4
Метка Label1
Заголовок (Caption)
Фамилия, имя исполнителя
Метка Label2
Заголовок (Caption)
Дата начала выполнения
Метка Label3
Заголовок (Caption)
Наименование работы
Рис. 3. Стартовая форма
5.
Добавьте новую форму в проект «Диалоговые_окна», путем выбора
в меню Проект (Project) опции Добавить форму.
6. Установите значения свойств элементов согласно данным таблицы 4.
Таблица 4
Объект
Свойство
Значение
1
2
3
Рамка
Caption
Введите X и Y
Текстовое окно
Name
TxtX
Text
(отсутствует)
Текстовое окно
Name
TxtY
Text
(отсутствует)
70
1
Линейка прокрутки
2
Окончание табл. 4
3
Name
HSX
Max
1000
Min
0
Линейка прокрутки
Name
HSY
Max
100
Min
0
Рамка
Caption
Результат
Метка
Name
LblResult
Caption
(отсутствует)
Командные кнопки
Name
CmdPlus
Caption
+
Name
CmdMinus
Caption
Name
CmdDel
Caption
/
Name
CmdMul
Caption
*
7. Для текстовых окон и метки установите выравнивание по центру
(свойство Alignment). Для всех объектов, кроме прокруток, увеличьте размер
шрифта (свойство Font). Приведите свою форму в соответствии с образцом
(рис. 4).
Рис. 4. Интерфейс приложения
71
8. В разделе общих объявлений добавьте строку:
Dim X,Y As Integer
9. В окне кода процедуры обработки события Change добавьте строки
для объекта HSX: TxtX.Text = HSX.Value
для объекта HSY: TxtY.Text = HSY.Value
10. В окне кода процедуры обработки события Change добавьте строки
для объекта TxtX: X = Val(TxtX.Text)
для объекта TxtY: Y = Val(TxtY.Text)
11. В окне кода процедуры обработки события Click для объекта
CmdРlus добавьте:
LblResult.Caption = x + y
12. Загрузите программу и проверьте работу кнопки «+» (ввод значений
для X и Y выполните двумя способами: с клавиатуры и с помощью прокруток)
13. Остановите программу. Напишите программный код для остальных
командных кнопок.
14. Проверьте работу приложения (рис. 5):
Рис. 5. Результат работы приложения
15. Добавьте на форму несколько командных кнопок для вычисления
следующих значений:
sin x  cos y ;
X Y ;
tg 2 x  y
16. Добавьте новую форму в проект «Диалоговые_окна», путем выбора в
меню Проект (Project) опции Добавить форму.
72
17. Установите значения свойств элементов согласно данным таблицы 5.
Приведите свою форму в соответствии с образцом (рис. 6).
Таблица 5
Объект
Свойство
Значение
Изображение (Image) Name
Image1
Picture
\Icons\Elements\Water
Изображение (Image) Name
Image2
Picture
\Icons\Elements\Sun
Изображение (Image) Name
Image3
Picture
\Icons\Elements\Show
Изображение (Image) Name
Image4
Picture
\Icons\Elements\Litening
Командные кнопки
Name
CmdHello
(CommandButton)
Caption
Познакомимся?
Name
CmdExit
Caption
Выход
Рис. 6. Интерфейс приложения
18. В окне кода процедуры обработки события Click для объекта Image1
добавьте строку:
MsgBox "это вода", 64, "справка"
19. Наберите код для других картинок.
20. В окне кода процедуры обработки события Click для объекта
CmdHello добавьте строки:
73
MyFam = InputBox("Ваша фамилия", "Скажите пожалуйста")
MyNam = InputBox("Ваше имя", "Скажите пожалуйста")
MyOt = InputBox("Ваше отчество", "Скажите пожалуйста")
'выделим последнюю букву отчества и определим пол человека
k = Len(MyOt)
x = Mid(MyOt, k, 1)
If x = "а" Then y = "Здравствуйте, укажаемая" Else y = "Здравствуйте,
укажаемый"
MsgBox MyNam + Chr(10) + MyOt + Chr(10) + MyFam, , y
21. В окне кода процедуры обработки события Click для объекта
CmdExit добавьте строки:
s = MsgBox("Вы хотите выйти", vbQuestion + vbYesNo, "Выход")
If s = 6 Then
s = MsgBox("Хотите остаться", 32 + 4, "Просьба")
If s = 6 Then
MsgBox "Ну и правильно", vbExclamation, "Мы очень рады"
Exit Sub
End If
MsgBox "Работа завершена", 16, "Завершение"
End
End If
22. Добавьте новую форму в проект «Диалоговые_окна».
23. Установите значения свойств элементов согласно данным таблицы 6.
Приведите свою форму в соответствии с образцом (рис. 7).
24. В разделе общих объявлений наберите строки:
Dim k As Integer , otv As Integer
25. В окне кода процедуры обработки события Load для объекта Form
добавьте строки:
Randomize Timer
otv = Int(Rnd * 100 + 1) 'число загадано
k = 0 ' количество попыток
74
Таблица 6
Объект
Рамки
Текстовое окно
Метки
Командная кнопка
Свойство
Caption
Caption
Name
Name
Caption
Name
Caption
Name
Caption
Name
Caption
Name
Caption
Значение
Ваше число
Диапазон чисел
TxtOtvet
LblMalo
0
LblMnogo
100
Label1
Мало
Label2
Много
CmdProverka
Проверить
Рис. 7. Интерфейс приложения
26. В разделе общих объявлений добавьте строку:
Dim k As Byte, otv As Integer
27. В окне кода процедуры обработки события Click для объекта
cmdProverka добавьте строки:
x = Val(TxtOtvet.Text)
k=k+1
If x = otv Then
MsgBox "количество попыток " + Str(k), , "УГАДАНО"
LblMalo.Caption = "0"
75
LblMnogo.Caption = "100"
MsgBox "загадано новое число", , ""
k=0
otv = Int(Rnd * 100 + 1)
Exit Sub
End If
If x > otv Then
If x < Val(LblMnogo.Caption) Then LblMnogo.Caption = x
MsgBox "Много", , ""
Exit Sub
End If
If x < otv Then
If x > Val(LblMalo.Caption) Then LblMalo.Caption = x
MsgBox "Мало"
Exit Sub
End If
28. Проверьте работу программы.
29. Измените программу для того, чтобы:
 после каждого вывода сообщения «Много», «Мало» или «Угадано» содержимое текстового окна удалялось;
 после отгадывания числа выводилось:
сообщение «Отлично», если количество попыток меньше 4,
сообщение «Хорошо», если количество попыток от 4 до 7,
сообщение «Слабо!», если количество попыток больше 7.
Задания для самостоятельной работы
Вывести значения y и z на форму, в метку, в окно сообщений. Для ввода x
использовать функцию InputBox().
 1  5 x 2  sin 2  x  , x  0

4 x e
1. y 
, z   7  x 2
;
4
2
,x 0

4  x  sin  x 
 3 4  e  0 ,7 x
2 3x
76
 1  x2
, x  0,


4
6x
2. y  cosx  1e , z   1  x
;
2
sin  x 

2
x

,x  0

2 x
3. y  5 sinx cos3x  1 ,
 1 x
, x  1
3
2
 1 x  x

1  cos 4  x 

z  2 ln 1  x 2 
, x   1,0 ;
2

x

1  x  3 5 , x  0





 5x 2
,x0

2  sin 3  x 
1  x 2
4. y 
, z
;
2
1 x
 1  2x , x  0

1  x2

 1 x
,x0

 2 x
5. y  7 sinx   cos3x  sinx  , z  
;
 1 x
,x0

3
 2  cos x
 1  5x
,x0

2
3  x
1  xe  x

6. y 
sin 2  x  , z  sin 2  x  5  x , x  0,1 ;
2  x2
 3
0 ,6 x
, x 1
sin  x  1e

 1  x2 , x  0

7. y  cos5x  sin 2 3x   3 sinx cos 3 3x  , z  
;
1  x3
,x0

 x  5 1  e  0 ,5 x
77
1  x  x 2
,x0

2
 1 x
1

5x
1   x  5 3
8. y 
, z   1
;
, x  0,1
3
2
1

x

1 2  x  x
5 0,7 cos  x   sin  x  , x  1


3x  1  x 2 , x  0


2
9. y  3 cos 2 x  sin5x  , z  2 cos  x e  2 x , x  0,1 ;
2 sin 3x , x  1


 x
e 5 x , x  0

2
1  x
2
10. y  6 sin3x cosx   cos2x  sin 2x   cos4x  , z   1  x 4 , x  0,1
;
1  cos x 

 3x , x  1
 6 x

Вопросы для самопроверки
1. Дать определение переменной. Еѐ назначение.
2. Типы переменных.
3. Область видимости и время жизни переменных. Ключевое слово
Static.
4. Что такое приоритет арифметических операций?
5. Назначение диалоговых окон.
6. Как осуществляется вывод сообщения ?
7. Чем отличается организация вывода сообщения функцией и оператором?
8. В чем заключается организация вывода содержательной части сообщения?
9. Чем определяется вид диалогового окна сообщения?
10. Параметры и константы, определяющие вид окна сообщения.
11. Коды возврата диалоговых окон.
78
Лабораторная работа 5
Тема: Алгоритмические структуры.
Цель: закрепить навыки и умения составления алгоритмов различной
структуры.
Задача 1. По представленным тексту и результатам работы программы
(рис. 1):
1) дать формулировку условий задачи с описанием входной и выходной
информации;
2) составить алгоритм;
3) разработать интерфейс;
4) создать проект.
Private Sub Command1_Click()
Dim x(20), max, min As Single, i, N As Integer
Dim Nmax, Nmin As Integer
Form1.Cls
Print "Исходный массив"
N = Val(Text1.Text)
For i = 1 To N
x(i) = Round(Rnd * 235, 2)
Print i, x(i)
Next
max = x(1): min = x(1)
Nmax = 1: Nmin = 1
For i = 2 To N
If x(i) > max Then
max = x(i): Nmax = i
End If
If x(i) < min Then
min = x(i): Nmin = i
End If
Next
Print
Print "max="; max; "Nmax="; Nmax
Print "min="; min; "Nmin="; Nmin
End Sub
Private Sub Command2_Click()
End
End Sub
79
Рис. 1. Результат работы приложения
Задача 2. По представленным тексту и результатам работы программы
(рис. 2):
1) дать формулировку условий задачи с описанием входной и выходной
информации;
2) составить алгоритм;
3) разработать интерфейс;
4) создать проект.
Private Sub Command1_Click()
Dim Tabl(10, 10), sumP As Single
Dim col As Integer, row As Integer, s1 As String
Dim n As Integer, m As Integer
List1.Clear
n = Text1.Text
m = Text2.Text
For col = 1 To n
s1 = ""
For row = 1 To m
Tabl(col, row) = Round(100 - Rnd * 120, 2)
s1 = s1 + Str(Tabl(col, row)) + " "
Next
List1.AddItem s1
Next
For col = 1 To n
80
For row = 1 To m
If Tabl(col, row) > 0 Then
sumP = sumP + Tabl(col, row)
End If
Next: Next
Text3.Text = sumP
End Sub
Private Sub Command2_Click()
End
End Sub
Рис. 2. Результат работы приложения
Задача 3. По представленным тексту и результатам работы программы
(рис. 3):
1) дать формулировку условий задачи с описанием входной и выходной
информации;
2) составить алгоритм;
3) разработать интерфейс;
4) создать проект.
Private Sub Command1_Click()
Dim A(20) As Integer
Dim i As Integer, s1 As String
81
Dim n As Integer, k As Integer
List1.Clear
n = Text1.Text
For i = 1 To n
A(i) = Round(50 - Rnd * 60)
s1 = Str(A(i))
List1.AddItem s1
Next
k=0
For i = 1 To n
If A(i) = 25 Then k = k + 1
Next
Text3.Text = k
End Sub
Private Sub Command2_Click()
End
End Sub
Рис. 3. Результат работы приложения
Задача 4. По представленным тексту и результатам работы программы
(рис. 4):
82
1) дать формулировку условий задачи с описанием входной и выходной
информации;
2) составить алгоритм;
3) разработать интерфейс;
4) создать проект.
Private Sub Command1_Click()
Dim WR(35), S As Integer
Dim i As Integer, k As Integer
Dim s1 As String
For i = 1 To 35
WR(i) = Int(Rnd * 26 - Rnd * 15)
s1 = Str(WR(i))
List1.AddItem s1
Next
Print
S=0
For i = 1 To 35
If WR(i) > 0 Then
S = S + WR(i)
Else: WR(i) = WR(i) * 2
End If
Next
For i = 1 To 35
s1 = Str(WR(i))
List2.AddItem s1
Next
Text3.Text = S
End Sub
Private Sub Command2_Click()
End
End Sub
83
Рис. 4. Результат работы приложения
Задача 5. По представленным тексту и результатам работы программы
(рис. 5):
1) дать формулировку условий задачи с описанием входной и выходной
информации;
2) составить алгоритм;
3) разработать интерфейс;
4) создать проект.
Private Sub Command1_Click()
Dim kl, i As Integer, k As Integer
Dim Slovo As String * 11
Dim S1 As String * 1
Slovo = Text1.Text
S1 = Text2.Text
kl = 0
k = 0: i = 1
Do While i < Len(Slovo)
k = InStr(i, Slovo, S1)
Print k
If k > 0 Then
i = k + 1: kl = kl + 1
End If
84
Loop
Print " количество найденных символов ="; kl
End Sub
Private Sub Command2_Click()
End
End Sub
Рис. 5. Результат работы приложения
Задача 6. По представленным тексту и результатам работы программы
(рис. 1):
1) дать формулировку условий задачи с описанием входной и выходной
информации;
2) составить алгоритм;
3) разработать интерфейс;
4) создать проект.
Private Sub Command1_Click()
Dim k, i, M As Integer
Dim S, A(20) As Integer
Randomize
M = Val(Text1.Text)
For i = 1 To M
A(i) = Rnd * 128
List1.AddItem Str(i) + Chr(9) + Str(A(i))
If A(i) Mod 5 = 0 Then
S = S + A(i)
k=k+1
End If
Next
85
List1.AddItem " S=" + Str(S) + " k=" + Str(k)
If k <> 0 Then
S=S/k
Text3.Text = S
Else: MsgBox " Чисел, кратных 5 - нет", vbInformation, " Среднее
арифметическое"
End If
End Sub
Private Sub Command2_Click()
End
End Sub
Рис. 6. Результат работы приложения
Задача 7. По представленным тексту и результатам работы программы
(рис. 7):
1) дать формулировку условий задачи с описанием входной и выходной
информации;
2) составить алгоритм;
3) разработать интерфейс;
4) создать проект.
Private Sub Command1_Click()
Dim n, M, k, H As Integer
Form1.Cls
M = Val(Text1.Text)
Print: Print: Print
n=M
86
k=2
Do While n <> 1
H=n\k
If H * k <> n Then
k=k+1
Else
Print " "; k
n=H
End If
Loop
End Sub
Private Sub Command2_Click()
End
End Sub
Рис. 7. Результат работы приложения
Задача 8. По представленным тексту и результатам работы программы
(рис. 8):
1) дать формулировку условий задачи с описанием входной и выходной
информации;
2) составить алгоритм;
3) разработать интерфейс;
4) создать проект.
Private Sub Command1_Click()
Dim kl As Integer, i As Integer, k As Integer
Dim N As Integer, i1 As Integer, s1 As String * 1
Dim Slovo As String
Form1.Cls
Slovo = Text1.Text
87
s1 = Text2.Text
kl = 0
N = Len(Slovo)
Print: Print
Print " Количество символов в слове N="; N
Print
Print " N позиции для "; s1
For i = 1 To N
If i = 1 Then i1 = i
k = InStr(i1, Slovo, s1)
If k <> 0 Then Print " "; k
If k > 0 Then
kl = kl + 1: i1 = k + 1
End If
Next
Print " Количество символов "; s1; " ="; kl
End Sub
Private Sub Command2_Click()
End
End Sub
Рис. 8. Результат работы приложения
Задания для самостоятельной работы
Составить блок-схему алгоритма решения задачи:
1.
Числа, которые можно одинаково прочитать слева направо и справа
налево, называются палиндромами (21312, 52325, 4224). Проверить, является
ли заданное число палиндромом.
2.
В заданном интервале найти все натуральные числа, равные кубу
суммы своих цифр.
88
3.
Натуральное число называется совершенным, если оно равно сумме
своих простых делителей, например 6=1+2+3. Найти все совершенные числа в
заданном интервале.
4.
Известно, что разность любого натурального числа и суммы его
цифр кратна 9. Проверить этот факт для чисел в заданном интервале.
5.
Число делится на 11, если разность между суммой цифр, стоящих
на нечѐтных местах, кратна 11. Проверить этот признак для всех натуральных
чисел, значение которых не превосходит заданного m, и показать числа, кратные 11.
6.
Проверить, можно ли заданное натуральное число представить в
виде: а) произведения двух простых чисел; б) произведения трѐх простых чисел; в) квадрата какого-либо простого числа; г) куба какого-либо простого числа.
7. Перенести в начало массива S(k) все отрицательные элементы по возрастанию, далее нулевые и затем положительные также по возрастанию.
8.
Элементы массива M(k) случайны перемешаны. В массиве N(k)
хранятся номера массива M(k) до перемешивания. Восстановить исходное состояние массива M(k).
9. Дана матрица натуральных чисел Y(n,m), в которой столбцы упорядочены по убыванию. Вычислить сумму элементов каждого столбца и из полученных сумм получить новый массив S(k), который упорядочить по убыванию.
10. Дана матрица натуральных чисел Y(n,m), в которой строки упорядочены по возрастанию. Вычислить сумму элементов каждой строки и из полученных сумм получить новый массив S(k), который упорядочить по возрастанию.
11. Дана матрица натуральных чисел Y(n,m), в которой столбцы упорядочены по убыванию. Переместить содержимое матрицы в массив S(k) по
столбцам и упорядочить по убыванию, удалив одинаковые элементы. Определить новое количество элементов.
12. В матрице X(m,n), где m=n, переставить строки и столбцы так, чтобы элементы главной диагонали образовывали убывающую последовательность.
89
13. Даны два упорядоченных по возрастанию массиваA(n), B(m). Получить слиянием новый массив C(n+m), в котором упорядочить элементы по
убыванию.
14. Дана матрица T(m), элементы которой  строковые переменные.
Упорядочить строки матрицы по возрастанию.
15. Даны пять попарно различных целых чисел: a,b,c,d,e. Упорядочить их
по возрастанию, используя для этого не более 7 сравнений.
Вопросы для самопроверки
1. Базовые алгоритмические структуры.
2. Приведите примеры алгоритмов, использующих последовательные
алгоритмические конструкции.
3. Приведите примеры алгоритмов, использующие ветвящиеся алгоритмические конструкции.
4. Приведите примеры алгоритмов, использующие циклические алгоритмические конструкции.
90
Лабораторная работа 6
Тема: Операторы перехода по условию.
Цель: Познакомиться с логикой управления последовательностью выполнения программ приложения, как заставить его компоненты совместно работать.
Операторы выбора
Позволяют на основе анализа некоторого условия выбрать нужный вариант продолжения вычислительного процесса.
Условный оператор IF
Различают одностроковые и многостроковые условные операторы If.
Синтаксис однострокового оператора IF:
а) простой одностроковый оператор:
If <условие> Then <операторы>
При выполнении оператора If проверяется условие и, если оно истинно, то
выполняется действие, указанное после оператора Then. Если выражение ложно, то управление передается оператору, следующему за оператором If.
Пример:
IF x<a Then y=Sin(x)*Exp(2^Log(x))
б) простой расширенный оператор If
If <условие> Then <операторы1> Else <операторы 2
При выполнении оператора If, если условие истинно, то выполняются
операторы, указанные после оператора Then, в ином случае выполняются операторы, следующие за оператором Else. После выполнения соответствующей
группы операторов управление передается оператору, следующему за оператором If.
После операторов Then и Else может быть указано несколько операторов,
разделенных двоеточием. Однако, число операторов ограничено длиной строки.
Кроме того, чтение, анализ и поиск ошибок в длинных строках затруднителен.
В условии используются знаки операций отношения (=, <>, <,>, <=, >=).
Если требуется проверить несколько условий, их объединяют знаками логических операций (not, and, or, xor). Для записей, содержащих два сравнения, условия записываются не по математической формуле ( a  x  b ). Операции отношения бинарные, т.е. должны иметь два операнда, условия два: x  a , x  b , сле-
91
довательно, операций тоже должно быть две. Поскольку необходимо, чтобы эти
условия выполнялись одновременно, они объединены с помощью операции логического И, т.е. выражение примет вид ( x  a ) and ( x  b ) . Каждое условие заключается в скобки, потому что логические операции имеют более высокий
приоритет, чем операции отношения.
Синтаксис многострокового оператора IF:
а) простой
б) расширенный
If <условие> Then
If <условие> Then
<перваягруппа операторов>
<первая группа операторов>
Else
ElseIf <условие> Then
<вторая группа операторов>
<вторая группа операторов>
End If
Else
<третья группа операторов>
End If
Достоинство многострокового оператора If состоит в том, что число операторов в группах не ограничено.
Оператор Select Case
Оператор Select Case, также как и оператор IF является оператором выбора. Он позволяет выполнить одну группу операций из нескольких в зависимости от значения переключающего выражения. Структура данного оператора
похожа на структуру многострочного If, но он имеет больше условий выбора,
чем этот оператор. Синтаксис оператора: Select Case <переключающее выражение>
Case значение1
«Значение» может быть:
[операторы ]
константой
Case значение2
переменной
[операторы]
списком значений (1,2,3,5)
...
диапазоном значений (1 Tо 9)
Case Else
условием (Is > 0)
[операторы]
End Select
92
Создание проекта
Создать приложение для знакомства с работой операторов условного перехода.
Порядок выполнения
1. Создайте в своей рабочей папке для нового проекта папку с именем
LabRab6.
2. Создайте новый проект. Для этого в главном меню выполните команду Файл→Новый проект (Ctrl+N).
3. Установите свойства объектов проекта согласно данным таблицы 1.
4. Сохраните проект в папке с именем LabRab6. Стартовая форма лабораторной работы 6 представлена на рисунке 1.
Таблица 1
Объект проекта
Свойство
Значение
Проект1
Имя (Name)
Условные_операторы
Имя (Name)
FrmLab6_1
Форма Form1
Caption
Лабораторная работа 6
Метка Label1
Заголовок (Caption)
Фамилия, имя исполнителя
Метка Label2
Заголовок (Caption)
Дата начала выполнения
Метка Label3
Заголовок (Caption)
Наименование работы
Рис. 1. Стартовая форма
5. Добавьте новую форму в проект «Условные_операторы».
6. Установите значения свойств элементов согласно данным таблицы 2.
Приведите свою форму в соответствии с образцом (рис. 2).
93
Таблица 2
Объект
Рамки
Текстовые окна
Метки
Командная кнопка
Свойство
Caption
Caption
Name
Name
Name
Name
Caption
Name
Caption
Name
Caption
Name
Caption
Name
Caption
Рис. 2. Интерфейс приложения
Значение
Длины сторон треугольника
Результаты проверки
TxtA
TxtB
TxtC
LblInfo1
(отсутствует)
LblInfo2
(отсутствует)
LblInfo3
(отсутствует)
LblInfo4
(отсутствует)
CmdProverka
Проверить
94
7. В окне кода процедуры обработки события Click набрать для объекта
cmdProverka:
Dim a, b, c As Integer
a = Val(txtA.Text)
b = Val(TxtB.Text)
c = Val(TxtC.Text)
'проверка существует ли треугольник
If (a >= b + c) Or (b >= a + c) Or (c >= a + b) Then
LblInfo1.Caption = "треугольник не существует"
Else
LblInfo1.Caption = "треугольник существует"
End If
'проверка на равенство сторон
If a = b And a = c Then
LblInfo2.Caption = "треугольник равносторонний"
Else
LblInfo2.Caption = "треугольник не равносторонний"
End If
'проверка на равнобедренность
If a = b Or a = c Or b = c Then
LblInfo3.Caption = "треугольник равнобедренный"
Else
LblInfo3.Caption = "треугольник не равнобедренный"
End If
'проверка на наличие прямого угла
If (a ^ 2 = b ^ 2 + c ^ 2) Or (b ^ 2 = a ^ 2 + c ^ 2) Or (c ^ 2 = a ^ 2 + b ^ 2)
Then
LblInfo4.Caption = "треугольник прямоугольный"
Else
LblInfo4.Caption = "треугольник не прямоугольный"
End If
8. Проверьте работу программы (рис. 3).
95
Рис. 3. Результат работы приложения
9. Добавьте новую форму в проект «Условные_операторы».
10. Установите значения свойств элементов согласно данным таблицы 3.
Приведите свою форму в соответствии с образцом (рис. 4).
Таблица 3
Объект
Свойство
Значение
1
2
3
Командная кнопка Name
CmdEdit
Caption
Преобразовать
Переключатели
Name
OptMSek1
Caption
м/сек
Name
OptKmSek1
Caption
км/сек
Name
OptKmUr1
Caption
км/час
96
Окончание табл. 3
1
Переключатели
Текстовое окно
Метка
2
Name
Caption
Name
Caption
Name
Caption
Name
Name
3
OptMSek2
м/сек
OptKmSek2
км/сек
OptKmUr2
км/час
TxtDano
LblResult
Рис. 4. Интерфейс приложения
11. В разделе общих объявлений набрать:
Dim s1 As Byte, s2 As Byte, x As Single, y As Single
12. В окне кода процедуры обработки события Click набрать
для optMSek1:
S1=1
для optKmSek1:
S1=2
для optKmUr1:
S1=3
для optMSek2:
S2=1
для optKmSek2:
S2=2
для optKmUr2:
S2=3
97
13. В окне кода процедуры обработки события Click для cmdEdit набрать:
x = Val(TxtDano.Text)
If S1 = 1 Then
If S2 = 1 Then y = x
If S2 = 2 Then y = x / 1000
If S2 = 3 Then y = x * 3.6
End If
If S1 = 2 Then
If S2 = 1 Then y = x * 1000
If S2 = 2 Then y = x
If S2 = 3 Then y = x * 3600
End If
If S1 = 3 Then
If S2 = 1 Then y = x / 3.6
If S2 = 2 Then y = x / 3600
If S2 = 3 Then y = x
End If
LblResult.Caption = Str(y)
14. Проверьте работу программы (рис. 5):
Рис. 5. Результат работы приложения
98
15. Добавьте новую форму в проект «Условные_операторы».
16. Установите значения свойств элементов согласно данным таблицы 4.
Приведите свою форму в соответствии с образцом (рис. 6).
Таблица 4
Объект
Свойство Значение
Фигура
Name
Pole
Shape
0
Изображение
Name
Shar
Stretch
True
Таймер
Name
Timer1
Interval
50
Рис. 6. Интерфейс приложения
17. В разделе общих объявлений набрать:
Dim x1, y1, x2, y2, sx, sy, w, h As Integer
18. В окне кода процедуры обработки события Load набрать для объекта
Form
'координаты границ поля
x1 = Pole.Left
y1 = Pole.Top
99
x2 = Pole.Width + x0
y2 = Pole.Height + y0
sx = 100 'шаг по горизонтали
sy = 100 'шаг по вертикали
19. В окне кода процедуры обработки события Timer для объекта Timer1
набрать
'двигаем и уменьшаем шар
shar.Left = shar.Left + sx
shar.Top = shar.Top + sy
shar.Height = shar.Height - 1
shar.Width = shar.Width - 1
w = shar.Width
h = shar.Height
'проверка на изменение движения
If (shar.Left < x1) Or (shar.Left + w > x2) Then sx = sx * (-1)
If (shar.Top < y1) Or (shar.Top + h > y2) Then sy = sy * (-1)
'проверка на окончание игры
If w < 20 Or h <20 Then
MsgBox "Вы проиграли", 48, “Движение внутри поля”
End
End If
20. В окне кода процедуры обработки события Click для объекта Shar набрать
shar.Height = shar.Height + 50
shar.Width = shar.Width + 50
MsgBox "Ой, Ой"
21. Проверить работу программы
22. Измените программу так, чтобы
 при увеличении размера шарика до 1500, выходило сообщение «Поздравляю. Вы победили»
 шарик двигался с различной скоростью (менять скорость при столкновении со стенкой)
100
23. Добавьте новую форму в проект «Условные_операторы».
24. Установите значения свойств элементов согласно данным таблицы 5.
Приведите свою форму в соответствии с образцом (рис. 7).
Таблица 5
Объект
СвойЗначение
ство
Командная кнопка
Name
CmdResult
Caption
Определить
Рамки
Caption
Сколько Вам лет
Caption
Чем следует заниматься
Метки
Name
LblLet
Caption
(отсутствует)
Name
LblInfo
Caption
(отсутствует)
Текстовое окно
Name
TxtLet
Рис. 7. Интерфейс приложения
25. В окне кода процедуры обработки события Click для cmdResult наберите:
Dim n, k As Integer
Dim info As String
n = Val(TxtLet.Text)
'определим текстовую запись возраста
101
If n >= 10 And n <= 20 Then
info = "лет"
Else
k = n Mod 10
Select Case k
Case 1
info = "год"
Case 2, 3, 4
info = "года"
Case Else
info = "лет"
End Select
End If
LblLet.Caption = info
'определим род деятельности
Select Case n
Case Is < 7
info = "детский сад"
Case 7 To 16
info = "учеба в школе"
Case 17 To 21
info = "учеба в ВУЗе"
Case 22 To 55
info = "трудовая деятельность"
Case Else
info = "заслуженный отдых - пенсия"
End Select
LblInfo.Caption = info
26.Проверьте работу программы.
102
27. Добавьте на форму текстовое окно (для ввода номера месяца рождения) и метку(для вывода времени года). Добавьте в программу CmdResult_Click код для определения времени года по номеру месяца рождения.
Задания для самостоятельной работы
Напишите программу вычисления одной из следующих функций, используя конструкцию If … Then … Else. При выполнении задания предусмотреть
выбор вида функции f(x):
или . Формы интерфейса по каждому заданию
включить в состав проекта и сохранить в рабочей папке LabRab6.
1.
2.
3.
4.
5.
6.
7.
103
8.
9.
10.
11.
12.
13.
14.
15.
Вопросы для самопроверки
1.
2.
3.
4.
5.
6.
Как корректируется ход выполнения программы?
Что понимается под выражением - «булевы выражения»?
Каковы конструкции принятия решения?
Как работает конструкция – IF …. Then, If … then … else ?
Логические операторы. Приоритет логической операции
Конструкция Select Case. Назначение. Шаблон записи.
104
Лабораторная работа 7
Тема: Средства организации цикла.
Цель: Изучить технические средства организации циклических процедур.
Циклические операторы используются для многократного повторения
некоторого фрагмента программы. Количество повторений может быть заранее
заданным (цикл с параметром) или определяться выполнением некоторого условия (циклы с предусловием и с постусловием) (рис. 1).
начальные
установки
логич.
выражение
false
true
парам. цикла:=
<нач.знач.>
(шаг изменен.)
to <кон.знач.>
операторы
операторы
изменение
параметра
цикла
операторы
изменение
параметра
цикла
начальные
установки
false
логич.
выражение
true
Рис. 1. Структурная схема операторов цикла: а – цикл с предусловием; б –
цикл с постусловием, в – цикл с параметром
Оператор FOR…NEXT – используется для выполнения определенного ко-
личества итераций. В данном цикле используется переменная (называемая
счетчиком цикла), значение которой увеличивается или уменьшается на заданную величину при каждом повторении цикла. Синтаксис оператора следующий:
For счѐтчик = начальное значение To конечное значение [Step приращение]
105
(операторы)
Next [счѐтчик]
Параметры счетчик, начальное значение, конечное значение, приращение
являются числовыми (тип integer). Элементы оператора цикла в квадратных
скобках необязательны. Параметр приращение может быть как положительным, так и отрицательным. Если он положителен, параметр начальное значение
должен быть меньше или равен параметру конечное значение, иначе цикл не
будет выполняться. Если параметр приращение отрицателен, то параметр начальное значение должен быть больше или равен значению параметра конечное
значение, чтобы выполнялось тело цикла. Если параметр Step не задан, то значение параметра приращение по умолчанию равно 1. После ключевого Next
можно не указывать имя переменной – счетчика.
Visual Basic выполняет цикл For в следующей последовательности:
1. Устанавливает значение переменной цикла счетчик в начальное значение.
2. Сравнивает значение переменной цикла счетчик и значение переменной конечное значение. Если переменная счетчик больше, Visual Basic завершает выполнение цикла.
3. Выполняет операторы тела цикла.
4. Увеличивает значение переменной цикла счетчик на единицу или на
величину значения приращения.
5. Повторяет шаги со 2 по 4.
Для преждевременного прерывания цикла используется оператор EXIT
FOR. При нормальном завершении цикла, т.е. при выходе из цикла через оператор NEXT, значение счетчика равно последнему его значению плюс величина
приращения.
Оператор Do/Loop - универсальный оператор, служит для организации
циклов типа "ПОКА". Он может быть организован как цикл с предусловием,
так и как цикл с постусловием.
Когда в теле цикла используется оператор While, то тело цикла выполняется в том случае, если условие истинно.
Когда используется оператор Until, то тело цикла выполняется в том случае, если условие ложно.
Синтаксис оператора:
106
а) цикл с предусловием
Do [ ( While | Until) Условие ]
[операторы]
[Exit Do]
[ операторы]
Loop
б) цикл с постусловием
Do
[операторы ]
[Exit Do]
[операторы] Loop [(While | Until)
Условие ]
Создание проекта
Создать приложение для знакомства с работой операторов цикла.
Порядок выполнения
1. Создайте в своей рабочей папке для нового проекта папку с именем
LabRab7.
2. Создайте новый проект и установите свойства объектов проекта согласно данным таблицы 1 и рис. 2.
3. Сохраните проект в папке с именем LabRab7.
Таблица 1
Объект проекта
Свойство
Значение
Проект1
Имя (Name)
Операторы_цикла
Имя (Name)
FrmLab7_1
Форма Form1
Caption
Лабораторная работа 7
Метка Label1
Заголовок (Caption)
Фамилия, имя исполнителя
Метка Label2
Заголовок (Caption)
Дата начала выполнения
Метка Label3
Заголовок (Caption)
Наименование работы
Рис. 2. Стартовая форма
107
4. Добавьте в проект «Операторы_цикла» новую форму и установите на
форме объекты (рис. 3).
Рис. 3. Интерфейс приложения
5. Измените их свойства в соответствии с таблицей 2.
Таблица 2
Объект
Командная кнопка
Рамки
Текстовые окна
Командные кнопки
Свойство
Name
Caption
Name
Caption
Caption
Name
Name
Name
Name
Name
Caption
Name
Caption
Name
Значение
Cmd1
Вывести
Параметры оператора цикла
Введите текст
Текст наоборот
Txt1
Txt2
TxtStep
Text1
Text2
Вывести
Cmd1
Перевернуть
Cmd2
6. В окне кода процедуры обработки события Click для объекта Cmd1
добавьте строки:
108
n1 = Val(Txt1.Text)
n2 = Val(Txt2.Text)
n3 = Val(TxtStep.Text)
Cls
For i = n1 To n2 Step n3
Print i
Next i
7. В окне кода процедуры обработки события Click для объекта Cmd2
наберите:
s = Text1.Text
k = Len(s)
b = ""
For i = k To 1 Step -1
b = b + Mid(s, i, 1)
Next i
Text2.Text = b
8. Проверьте работу программы на различных фразах, в том числе на
следующих фразах:
А РОЗА УПАЛА НА ЛАПУ АЗОРА
АРГЕНТИНА МАНИТ НЕГРА
9. Добавьте в проект «Операторы_цикла» новую форму и установите на
форме следующие объекты (рис. 4).
10. Измените их свойства согласно данным таблицы 3.
Рис. 4. Интерфейс приложения
109
Таблица 3
Объект
Командная кнопка
Список
Текстовое окно
Метка
Свойство
Name
Caption
List
Name
Text
Caption
WordWrap
Значение
Cmd1
Ввод чисел
List1
TxtSr
(Отсутствует)
Среднее значение
True
11. Приведите свою форму в соответствие с образцом
12. В окне кода процедуры обработки события Click для объекта Cmd1
набрать
List1.Clear
s = 0 :k = 0
Do
x = Val(InputBox("Введите ноль для окончания ввода"))
s=s+x :
k=k+1
List1.AddItem x
Loop While x <> 0
txtSr.Text = s / (k - 1)
13. Добавьте на форму следующие объекты и измените их свойства согласно данным таблицы 4.
Таблица 4
Объект
Свойство
Значение
Командная кнопка
Name
Cmd
Caption
Нажми
Графическое окно
Name
PicShah
Height
2500
Width
2500
14. В окне кода процедуры обработки события Click для объекта Cmd
добавьте строки:
110
PicShah.Scale (0, 0)-(8, 8)
For i = 1 To 8
For j = 1 To 8
n=n+1
If (i + j) Mod 2 = 0 Then c = vbWhite Else c = vbRed
PicShah.Line (i - 1, j - 1)-(i, j), c, BF
Next j
Next i
15. Проверьте работу программы (рис. 5).
Рис. 5. Результат работы приложения
16. Добавьте в проект «Операторы_цикла» новую форму и установите на
форме объекты в соответствии с рис. 6.
17. Измените их свойства согласно данным табл. 5.
111
Рис. 6. Интерфейс приложения
Таблица 5
Объект
1
Рамки
Командные кнопки
Свойство
2
Caption
Caption
Caption
Caption
Caption
Caption
Caption
Name
Caption
Значение
3
График функции y=sin(x)
Цвет графика
График функции y=x^2
A
B
D
Спирограф
Cmd1
Пуск
112
Окончание табл. 5
1
Командные кнопки
Графические окна
Переключатели
Текстовые окна
2
3
Name
Caption
Name
Caption
Name
Height
Width
Name
Height
Width
Name
Height
Width
Name
Caption
Name
Caption
Name
Caption
Name
Text
Name
Text
Name
Text
Cmd2
Убрать графики
Cmd3
Построить
PicSin
1200
4800
PicKv
2300
2300
Pic1
1000
1000
OptBl
Черный
OptRed
Красный
OptBlue
Синий
TxtA
125
TxtB
75
TxtD
12
18. В разделе общих объявлений объявите переменные z (цвет),
R(радиус), k (степень искажения)
19. В окне кода процедуры обработки события Click для объекта Cmd1
набрать:
PicSin.Scale (0, 10)-(20, -10)
For X = 0 To 20 Step 0.05
113
Y = Sin(X) * 10
PicSin.Circle (X, Y), R, z, , , k
Next X
PicKv.Scale (-10, 100)-(10, -10)
For X = -10 To 10 Step 0.001
Y=X^2
PicKv.Circle (X, Y), R, z, , , k
Next X
20. Наберите код для кнопки Cmd2 и переключателей:
Private Sub Cmd2_Click()
PicSin.Cls
PicKv.Cls
End Sub
Private Sub OptBl_Click()
z = vbBlack
End Sub
21. Для кнопки Cmd3 наберите код, который выполняет построение спирографа.
Pic1.Scale (-A, A)-(A, -A)
k = A: m = B
Do While k <> m 'НАХОЖДЕНИЕ НОД
If k > m Then k = k - m Else m = m - k
Loop
n=B/k
For t = 0 To 2 * 3.1428 * n Step 0.001
V = (A / B) * t
x = (A - B) * Cos(t) + D * Cos(V)
y = (A - B) * Sin(t) - D * Sin(V)
Pic1.Circle (x, y), 1, z
Next t
22. Проверьте работу программы на различных значениях для A, B, D
(рис. 7).
114
Рис. 7. Результат работы приложения
Задания для самостоятельной работы
Вывести на экран таблицу значений функции Y(x) и еѐ разложения в ряд
S(x) для x, изменяющегося от a до b с шагом h=(b-a)/10, табл. 1.
Таблица 1
№ a
b
S(x)
n
Y(x)
1
2
3
4
5
6
1
0.1
1
160
2
0.1
1
100
3
0.1
1
120
4
0.1
1
80
sin x
cos x
115
4
5
1
2
3
5
0.1
1
140
6
0.1
1
80
7
0.1
1
120
8
0.1
1
100
9
0.1
1
140
10
0.1
0.5
150
11
0.1
1
100
12
0.1
1
80
13
–2
–
0.1
160
14
0.1
0.8
180
n 
15. Вычислить   1 
k 1 
1 
 .
k2 
Вопросы для самопроверки
1.
2.
3.
4.
Назначение оператора цикла с параметром.
Правила задания шага цикла.
Укажите основные правила вложенных циклов.
Организация циклов по условию.
Окончание табл. 1
6
arctg x
116
Лабораторная работа 8
Тема: Массивы. Процедуры и функции.
Цель: Изучить варианты представления и использования данных и процедур при формировании и организации состава проектов.
Понятие об индексированных переменных. Массивы.
Массивом называется совокупность индексированных элементов a(i,j):
 a11 a12  a1 j  a1n 






 ai1 ai 2  aij  ain





 a m1 a m 2  a mj  a mn 


Здесь аij – элемент массива. Индекс i означает номер строки, j – номер
столбца.
Массивы в VB можно классифицировать по следующим признакам: числу измерений, области видимости, способу распределения памяти (рис. 1).
Рис. 1. Классификация массивов
VB позволяет создавать одномерные и многомерные массивы. Число размерностей массива может достигать до 60.
Нумерация элементов массива начинается с нуля. Для изменения индексации с нуля на единицу используется оператор Option Base N, где N может
принимать значения 0 и 1. Однако, при объявлении массивов можно задавать
произвольные значения верхних и нижних границ массива, используя следующий синтаксис:
117
Dim (нижняя_граница TO верхняя_граница)
Примеры объявления массивов:
Dim A(10) As String – одномерный массив, содержит 11 элементов;
Dim B(5 TO 10, 1 TO 20) As Integer – двухмерный массив, имеет 6 строк и
20 столбцов. Нумерация строк начинается с 5, а нумерация столбцов с единицы.
Область видимости массивов, объявление массивов
Так же как и переменные, массивы могут быть локальные – уровня процедуры. Такие массивы объявляются оператором Dim:
Dim Array1(10, 20)
Локальные массивы модуля объявляются оператором Private.
Массивы уровня формы доступны всем процедурам формы. Они объявляются оператором Dim в разделе General.
Глобальные массивы доступны всем процедурам проекта и объявляются
оператором Public или Global в разделе General формы или модуля.
Способы распределения памяти
В зависимости от способа распределения памяти массивы делятся на массивы со статическим распределением памяти и массивы с динамическим распределением памяти.
Массивы со статическим распределением памяти объявляются операторами Dim, Private, Public, Static:
Static A (1 TO 5, 1 TO 2)
Эти массивы объявляются один раз и не меняют своих размерностей в
процессе выполнения программы.
Массивы с динамическим распределением памяти объявляются в два этапа:
Dim AMassiv ( ) As Variant
Затем с помощью оператора ReDim устанавливаются фактические размерности массива:
ReDim MassivA(5, 10 ) As Integer
ReDim MassivB(m, n ) As Single
Удаление массива осуществляется командой Erase:
Erase < имя_массива>
Алгоритм сортировки массива. Сортировка выбором.
118
Идея метода состоит в том, чтобы создавать отсортированную последовательность путем присоединения к ней одного элемента за другим в правильном
порядке.
Будем строить готовую последовательность, начиная с левого конца массива. Алгоритм состоит из n последовательных шагов, начиная от нулевого и
заканчивая (n-1)-м.
На i-м шаге выбираем наименьший из элементов a[i] ... a[n] и меняем его
местами с a[i].
Функции пользователя
Синтаксис функции пользователя:
Function ИмяФункции ( аргумент1 As тип, [, аргумент2 As тип ] ) As тип
< операторы >
ИмяФункции = результат
End Function
В качестве аргументов могут быть константы, переменные или выражения.
ИмяФункции – простая переменная, имя которой совпадает с именем
функции. Этим оператором имени функции передается вычисленное значение.
Использование пользовательских функций
Функции пользователя используются в выражениях справа от знака равно, могут включаться также в оператор Print:
< имя переменной > = ИмяФункции ( аргумент 1 [, аргумент 2, …])
Print ИмяФункции
Преждевременный выход из функции осуществляется с помощью оператора Exit Function.
Подключение пользовательских функций и процедур к текущей форме
осуществляется следующим образом:

открыть окно Программы (Code);
119

выбрать пункт меню Tools, Add Procedure;

указать в диалоговом окне имя процедуры;

установить переключатель Function;

щелкнуть по кнопке OK.
Управляющий элемент сетка
Управляющий элемент MSFlexGrid – сетка предназначен для вывода
данных на экран. Вводить данные в ячейки сетки непосредственно нельзя.
1. Сетки нет среди стандартных элементов панели ToolBox. Для загрузки
управляющего элемента MSFlexGrid необходимо ввести команду
Project\Components и выбрать в диалоговой панели элемент Microsoft Flex
Grid Control 6.0.
Свойства сетки легко настраивать с помощью диалоговой панели: щѐлкните по полю Custom окна Properties – появится кнопка троеточие, щелкните
мышью по этой кнопке – появится диалоговая панель (рис. 2).
Cols, Rows – устанавливает число колонок и столбцов.
Col, Row – возвращают/ устанавливают номер колонки и строки.
ColWidth, RowHeight – ширина и высота столбца.
Text – возвращает или устанавливает текст, хранящийся в текущей ячейке.
Рис. 2. Свойства управляющего элемента MSFlexGrid
Создание проекта
120
1.
Заполните таблицу случайным образом. Определите количество нулевых элементов главной диагонали. Найдите элементы главной диагонали <1 и
присвойте им значения
ai  j 2 b , (a и b – заданные значения). Найдите суммы
элементов указанных строк и столбцов.
2.
Отсортируйте массив случайных чисел описанным выше методом
выбора.
Порядок выполнения
1. Создайте в своей рабочей папке для нового проекта папку с именем
LabRab8.
2. Создайте новый проект. Установите свойства объектов проекта согласно данным таблицы 1 и рис. 3.
Таблица 1
Объект проекта
Свойство
Значение
Проект1
Имя (Name)
Массивы. Процедуры и функции
Имя (Name)
FrmLab8_1
Форма Form1
Caption
Лабораторная работа 8
Метка Label1
Заголовок (Caption)
Фамилия, имя исполнителя
Метка Label2
Заголовок (Caption)
Дата начала выполнения
Метка Label3
Заголовок (Caption)
Наименование работы
Рис. 3. Стартовая форма
3. Добавьте новую форму в проект «Массивы. Процедуры и функции»,
путем выбора в меню Проект (Project) опции Добавить форму.
4. Установите значения свойств элементов согласно данным таблицы 2 и
рис. 4.
Таблица 2
121
Объект
1
Form1
Command2
Command3
Свойство
2
Name
Caption
Caption
Top
Height
Left
Top
Width
Cols
Rows
Caption
Caption
Command4
Caption
Text1
Text
Command5
Caption
Text2
Command6
Text3
Command7
Text4
Label1
Label2
Text5
Text6
Text
Caption
Text
Caption
Text
Caption
Caption
Text
Text
Command1
MSFlexGrid1
Значение
3
Frmlab8_2
Работа с таблицей
Заполнить таблицу
0
3855
240
720
5895
6
6
Очистка таблицы
Выход
Кол-во нулевых элементов
главной диагонали
(отсутствует)
Поиск элементов <1 и присвоение им значения
(отсутствует)
Сумма строки
(отсутствует)
Сумма столбца
(отсутствует)
Введите № строки
Введите № столбца
(отсутствует)
(отсутствует)
122
Рис. 4. Интерфейс приложения
5. В окне кода объекта Frmlab8_2 наберите:
Option Explicit
Private Sub Command1_Click()
Randomize
Dim tabl(5, 5) As Integer
Dim c, w As Integer
For w = 0 To 4
For c = 0 To 4
tabl(w, c) = Int(Rnd * 5 - Rnd * 5)
Next c
Next w
MSFlexGrid1.Rows = 6: MSFlexGrid1.Cols = 6
MSFlexGrid1.Row = 0
MSFlexGrid1.BackColorFixed = &H80000000
For c = 0 To 5
MSFlexGrid1.CellPictureAlignment = 1
MSFlexGrid1.Col = c
MSFlexGrid1.ColWidth(c) = 965
123
MSFlexGrid1.RowHeightMin = 620
MSFlexGrid1.Text = c
MSFlexGrid1.ForeColorFixed = vbBlack
Next c
MSFlexGrid1.Col = 0
For w = 1 To 5
MSFlexGrid1.Row = w
MSFlexGrid1.Text = w
MSFlexGrid1.ForeColor = vbBlack
Next w
For w = 1 To 5
For c = 1 To 5
MSFlexGrid1.Col = c
MSFlexGrid1.Row = w
MSFlexGrid1.Text = tabl(w - 1, c - 1)
Next c
Next w
End Sub
Private Sub Command2_Click()
MSFlexGrid1.Clear
End Sub
Private Sub Command3_Click()
End
End Sub
Private Sub Command4_Click()
Dim w, c, n As Integer
Dim s, tabl(5, 5) As Single
For w = 1 To 5
For c = 1 To 5
MSFlexGrid1.Col = c
MSFlexGrid1.Row = w
tabl(w, c) = MSFlexGrid1.Text
124
Next c
Next w
s=0
For w = 1 To 5
For c = 1 To 5
If w = c And tabl(w, c) = 0 Then
s=s+1
End If
Next c
Next w
Text1.Text = s
End Sub
Private Sub Command5_Click()
Randomize
Dim a, b As Single, k As Integer
Dim i, j As Integer
Dim tabl(5, 5) As Single
a = Rnd(9): b = Rnd(9)
For i = 1 To 5
For j = 1 To 5
MSFlexGrid1.Col = j
MSFlexGrid1.Row = i
tabl(i - 1, j - 1) = MSFlexGrid1.Text
If tabl(i - 1, j - 1) < 1 Then
MSFlexGrid1.Text = Round(Sqr(a * i + (j ^ 2) * b), 2)
k=k+1
End If
Next j
Next i
k=1
Text2.Text = k
End Sub
125
Function xsum(c As Integer, X() As Single) As Single
If c = 0 Then
xsum = 0
Else: xsum = X(c) + xsum(c - 1, X)
End If
End Function
Private Sub Command6_Click()
Dim w As Integer, c As Integer, n As Integer, a As Integer
Dim s As Single, tabl(5, 5) As Single, tabl2(10) As Single
a = Val(Text3.Text)
For w = 1 To 5
For c = 1 To 5
MSFlexGrid1.Col = c
MSFlexGrid1.Row = w
tabl(w, c) = MSFlexGrid1.Text
Next c
Next w
For c = 1 To 5
tabl2(c) = tabl(a, c)
Next c
s = xsum(5, tabl2())
Text5.Text = s
End Sub
Private Sub Command7_Click()
Dim w As Integer, c As Integer, n As Integer, a As Integer
Dim s As Single, tabl(5, 5) As Single, tabl2(10) As Single
a = Val(Text4.Text)
For w = 1 To 5
For c = 1 To 5
MSFlexGrid1.Col = c
MSFlexGrid1.Row = w
tabl(w, c) = MSFlexGrid1.Text
126
Next c
Next w
For w = 1 To 5
tabl2(w) = tabl(w, a)
Next w
s = xsum(5, tabl2())
Text6.Text = s
End Sub
6. Проверьте работу программы.
7. Добавьте новую форму в проект «Массивы. Процедуры и функции»
8. Установите значения свойств элементов согласно данным таблицы 3 и
рис. 5.
Таблица 3
Объект
Свойство
Значение
Name
frmlab8_3
Form1
Caption
Сортировка простым выбором
Label1
Caption
Исходный массив
Label2
Caption
Заданное количество чисел
Label3
Caption
Сортированный массив
Text1
Text
(отсутствует)
List1
List
(отсутствует)
Command1
Caption
Выбор
Command2
Caption
Close
Рис. 5. Интерфейс приложения «Сортировка массива»
127
9. В окне кода объекта Frmlab8_2 добавьте строки:
Private Sub Выбор_Click()
Dim a(20) As Integer, i As Integer, k, n As Integer
Dim j As Integer, x As Integer
Randomize
List1.Clear
n = Text1.Text
Print: Print: Print " ";
For i = 1 To n
a(i) = Rnd * 1125 - Rnd * 1120
Print a(i); " ";
Next
Print
For i = 1 To n
k = i: x = a(i)
For j = i + 1 To n
If a(j) < x Then
x = a(j)
k=j
End If
Next j
a(k) = a(i): a(i) = x
Next i
For i = 1 To n
List1.AddItem Str(a(i))
Next
End Sub
Private Sub Command2_Click()
End
End Sub
10. Проверьте работу программы (рис. 6).
128
Рис. 6. Результат работы приложения
Задания для самостоятельной работы
Выполнить задание в соответствии с выданным вариантом.
1. Задан массив из k символов. Преобразовать массив следующим образом: сначала должны стоять цифры, входящие в массив, а затем все остальные
символы. Взаимное расположение символов в каждой группе не должно изменяться.
2. Задан массив из k символов. Преобразовать массив следующим образом: расположить символы в обратном порядке.
3. Задан массив из k чисел. Найти число, наиболее часто встречающееся
в этом массиве.
4. Задан массив из k чисел. Отсортировать элементы массива по возрастанию.
5. Задан массив из k чисел. Найти числа, входящие в массив только один
раз.
6. Задан массив из k чисел. Сдвинуть элементы массива циклически на n
позиций влево.
7. Задан массив из k чисел. Сдвинуть элементы массива циклически на n
позиций вправо.
8. Задан массив из k чисел. Преобразовать массив следующим образом:
все отрицательные элементы массива перенести в начало, а все остальные – в
129
конец, сохранив исходное взаимное расположение как среди отрицательных,
так и среди положительных элементов.
9. Задан массив из k символов. Создать два новых массива: в первый перенести все цифры из исходного массива, во второй – все остальные символы.
10. Задан массив из k символов. Определить, симметричен ли он, т.е. читается ли он одинаково слева направо и справа налево.
11. Задано два массива. Найти наименьшее среди элементов первого массива, которые не входят во второй массив.
12. Задан массив из k чисел. Определить количество инверсий в массиве
(т.е. таких пар элементов, в которых большее число находится слева от меньшего).
13. Задан массив из k символов. Удалить из него повторные вхождения
каждого символа.
14. Задан массив из k символов. Определить количество различных элементов в массиве.
15. Задан массив из k символов латинского алфавита. Вывести на экран в
алфавитном порядке все символы, которые входят в этот массив по одному разу.
1.
2.
3.
4.
5.
6.
7.
8.
Вопросы для самопроверки
Массивы. Определение, назначение, задание массивов.
Использование массивов для хранения информации.
Понятие процедуры. Общие процедуры.
Процедуры, управляемые событиями.
Области действия событийных и общих процедур.
Использование событийных процедур.
Передача параметров.
Процедуры – функции.
130
Лабораторная работа №9
Тема: Численные методы решения обыкновенных уравнений.
Цель: Изучить методы нахождения корней уравнений
Одной из важнейших и наиболее распространенных задач прикладной
математики является задача решения нелинейных уравнений, встречающихся в
разных областях научных исследований.
Любое уравнение в общем случае можно представить в виде:
f(x)=0
(1)
где x – корень уравнения.
Задача уравнения заключается в нахождении таких значений x, которые
обращают (1) в тождество, т.е. в 0.
Приближенное определение корней уравнения проводится в два этапа:
1. Отделение корней, т.е. установление достаточно малых отрезков, в
каждом из которых содержится только один корень уравнения.
2. Уточнение приближенного значения корней до некоторой заданной
степени точности.
Теорема. Если непрерывная функция f(x) принимает значения разных
знаков на концах отрезка [a,b], т.е. f ( a )  f ( b )  0 , то между точками a и b
имеется хотя бы один действительный корень уравнения f(x)=0, т.е. существует
такое число  , принадлежащее [a,b], что f (  )  0 (рис. 1).
Рис. 1. Метод отделения корней
При этом, если на заданном отрезке [a,b] существует первая производная
f ' ( x ) , сохраняющая знак внутри [a,b] ( f ' ( x ) >0 или f ' ( x )  0 ), то корень 
будет единственным (рис. 2). Процесс отделения корней начинается с
131
установления знаков функции в граничных точках a и b. Затем определяются
знаки в ряде промежуточных точек. После чего выделяются отрезки, на границе
которых функция меняет знак на противоположный. Выделенные отрезки и
содержат корень данного уравнения.
Рис. 2. Метод отделения корней
Итерационный процесс состоит в последовательном уточнении начального приближения x0 . Каждый такой шаг называется итерацией. Рассмотрим некоторые итерационные методы решения нелинейных уравнений.
Метод деления отрезка пополам (метод бисекций)
Пусть дано уравнение f(x)=0.
Допустим, нам удалось найти такой отрезок [a,b], на котором расположено значение корня  , т.е. a    b .
В качестве начального приближения корня x0 (рис. 3) принимаем
середину отрезка x0  a  b / 2 .
Далее исследуем значения функции: если f ( x0 )  0 , то x0 является
корнем уравнения, т.е.   x0 . Если f ( x0 )  0 , то выбираем одну из половин
отрезка [a,
x0 ] или [ x0 ,b], на концах которой функция f(x) имеет
противоположные знаки, т.е. содержит искомый корень, поэтому его
принимаем в качестве нового отрезка [ x0 ,b]. Вторую половину отрезка, на
концах которого знак f(x) не меняется, отбрасываем: в данном случае [a, x0 ].
Отрезок [ x0 ,b] вновь делим пополам. Новое приближение: x1  ( x0  b ) / 2 .
132
Вновь исследуем функцию f(x) на концах отрезка и отбрасываем отрезок [ x1 ,b],
т.к. f ( x1 )  0 и f ( b )  0 .
Отрезок [ x0 , x1 ], на концах которого функция имеет противоположные
знаки f ( x1 )  0 , f ( x0 )  0 , вновь делим пополам и получаем новое
приближение
корня
x 2  ( x0  x1 ) / 2
и
т.д.
Итерационный
процесс
продолжаем до тех пор, пока длина отрезка после n-й итерации не станет
меньше некоторого заданного малого числа (погрешности)  , т.е.
ba .
Тогда за искомое значение корня принимается полученное приближение
x n :   x n и говорят, что решение данного уравнения найдено с точностью  .
Рис. 3. Метод деления отрезка пополам
Метод Ньютона (метод касательных)
Если известно начальное приближение к корню уравнения f(x)=0, то эффективным методом уточнения корней является метод Ньютона.
Достаточные условия сходимости метода.
Пусть функция f(x) имеет первую и вторую производные на отрезке [a,b],
причем выполнено условие знакопеременности функции f ( a )  f ( b )  0 , а
производные f ' ( x ), f ( x ) , сохраняют знак на отрезке [a,b]. Тогда, исходя из
начального
приближения
x0  a , b ,
удовлетворяющего
неравенству
f ( x )  f ( x )  0 , можно построить итерационную последовательность
x n1  x n 
f ( xn )
f ' ( xn )
, n  0 ,1,2 ,...,.,
сходящуюся к единственному на отрезке [a,b] решению  уравнения f(x)=0.
133
В данном методе процесс итераций состоит в том, что в качестве приближений к корню принимаются значения x0 , x1 , x 2 ,... точек пересечения касательной к кривой y=f(x) с осью абсцисс. Геометрически метод Ньютона эквивалентен замене небольшой дуги кривой y=f(x) – касательной. При этом не обязательно задавать отрезок [a,b], содержащий корень уравнения, а достаточно
лишь найти некоторое начальное приближение корня x  x0 (рис. 4).
В качестве начального приближения выберем x0  a , для которого выполняется условие
f ( x0 )  f ( x0 )  0 . Проведем касательную в точке
A0 x0 , f ( x0 ). Первым приближением корня будет точка пересечения этой ка-
сательной с осью абсцисс x1 . Через точку A1 x1 , f ( x1 ) снова проводим касательную, точка пересечения которой с осью ОХ даст нам второе приближение
корня x 2 и т.д.
Рис. 4. Метод Ньютона
На рис. 5 приведены возможные варианты выбора правого или левого
конца отрезка в качестве начального приближения.
Условие выбора: f ( x0 )  f ( x0 )  0 .
Метод простых итераций
Одним из наиболее важных численных методов решения нелинейных
уравнений является метод итераций (метод последовательных приближений).
Сущность метода заключается в следующем.
Заменим исходное нелинейное уравнение f(x)=0 эквивалентным ему
уравнением вида:
x  ( x )
(2)
Пусть известно начальное приближение корня x  x0 . Подставляя это
значение в правую часть уравнения (2), получаем новое приближение
x1  ( x0 ) ,
(3)
134
Рис. 5. Варианты выбора начального приближения для метода Ньютона
Затем аналогичным образом получим
(4)
x 2  ( x1 ) .
Далее, подставляя каждый раз новое значение корня в (3), получаем последовательность значений
(5)
xn1  ( xn ), n  1,2,... .
Итерационный процесс продолжается до тех пор, пока не станут близки
результаты двух последовательных итераций:
x n1  x n   ,
(6)
Достаточным условием сходимости метода простых итераций является
условие
' ( x )  1 ,
(7)
выполненное для любого x, принадлежащего некоторому отрезку [a,b],
содержащему корень уравнения.
Рассмотрим геометрическую интерпретацию метода. Построим графики
функций y=x и y  ( x ) (рис. 6). Корнем  уравнения x  ( x ) является абсцисса точки пересечения кривой y  ( x ) с прямой y=x.
При ' ( x )  0 (рис. 6, а, б) и при ' ( x )  0 (рис. 6, в, г) возможны как
сходящиеся, так и расходящиеся итерационные процессы. Скорость сходимо-
135
сти зависит от абсолютной величины производной эквивалентной функции
' ( x ) . Чем меньше ' ( x ) вблизи корня, тем быстрее сходится процесс. Таким
образом, при переходе от уравнения (1) к уравнению (2) необходимо, чтобы
выполнялось условие (6).
Итерационные процессы могут быть односторонними, если ' ( x )  0 , и
двусторонними, если ' ( x )  0 .
Рис. 6. Метод простых итераций
Создание проекта
Создать приложение для ознакомления с численными методами решения
обыкновенных уравнений.
Порядок выполнения
1. Создайте в своей рабочей папке для нового проекта папку с именем
LabRab9.
2. Создайте новый проект. Для этого в главном меню выполните команду Файл→Новый проект (Ctrl+N).
3. Установите свойства объектов проекта согласно данным таблицы 1 и
рис. 7.
4. Сохраните проект в папке с именем LabRab9.
136
Таблица 1
Объект проекта
Проект1
Форма Form1
Метка Label1
Метка Label2
Метка Label3
Свойство
Имя (Name)
Имя (Name)
Caption
Заголовок (Caption)
Заголовок (Caption)
Заголовок (Caption)
Значение
Численные_методы
FrmLab9_1
Лабораторная работа 9
Фамилия, имя исполнителя
Дата начала выполнения
Наименование работы
Рис. 7. Стартовая форма
5. Добавьте новую форму в проект «Численные_методы» (рис. 8):
Рис. 8. Интерфейс приложения «Метод бисекций»
6. В окне кода процедуры обработки события Click для объекта Command1 добавьте:
137
Dim X As Single, a As Single, b As Single, c As Single
Dim eps As Single
Form1.Cls
Print " Нахождение корней уравнения"
a = Val(InputBox(" Введите начальное значение интеграла a",
"DelPp"))
b = Val(InputBox(" Введите конечное значение интервала b",
"DelPp"))
Print
Print " a = "; a; " b = "; b
eps = Val(InputBox("Введите точность вычислений eps", "DelPp"))
If F(a) * F(b) < 0 Then
Do
c = (a + b) / 2
If F(c) = 0 Then
Print " Точное значение корня ", c
Exit Do
„ Определение нового интервала
Else:
If F(a) * F(c) < 0 Then b = c Else: a = c
End If
Loop While Abs(b - a) > eps
Print " Результат вычислений: значение корня = ", c
Print " Точность вычислений ", eps
Else
Print " Значение корня не найдено или решение не единственное"
End If
7. В окне кода добавьте функцию:
Function F(X As Single) As Single
„ F = Sin(Log(Abs(X ^ 3 - 0.5)))
„F=5*X^2+8*X-3
F = (3 * Sin(X) - 1) / 2
End Function
8. В окне кода процедуры обработки события Click для объекта Command2 добавьте:
Private Sub Command2_Click()
End
End Sub
9. Добавьте новую форму в проект «Численные_методы» (рис. 9):
138
Рис. 9. Интерфейс приложения «Метод простых итераций»
10. В окне кода процедуры обработки события Click для объекта Command1 добавьте:
Private Sub Command1_Click()
Dim x0 As Single, x As Single, eps As Single
x0 = Val(InputBox("Введите приближенное значение корня x0"))
eps = Val(InputBox("Введите точность вычислений eps"))
Print "Промежуточные значения корня "; x0
Print "Точность вычислений"; eps
x = Miter(x0, eps)
Print "Приближенное значение корня x = "; x
End Sub
11. В окне кода добавьте строки:
Function Miter(x0 As Single, eps As Single) As Single
Dim it As Integer, eps1 As Single
Form1.Cls
it = 0
Print
Print " Промежуточные значения метода итерации"
Print
Print " Ni", "X", "F(x)", "Eps"
Print
139
Do
eps1 = Abs(x0 - Y(x0))
Print it, x0, Y(x0), eps1
x0 = Y(x0)
it = it + 1
Loop While eps1 <= eps
Print "Число итераций=", it
Miter = x0
End Function
Function Y(x As Single) As Single
„ Y = x + Log(x)
Y = (x + Log(x)) / 11
End Function
12. В окне кода процедуры обработки события Click для объекта Command2 добавьте:
Private Sub Command2_Click()
End
End Sub
13. Добавьте новую форму в проект «Численные_методы» (рис. 10):
Рис. 10. Интерфейс приложения «Метод Ньютона»
140
14. В окне кода добавьте строки:
Const eps = 10 ^ (-5)
Function f(x As Single) As Single
„f=x*x*x*x-2*x-4
f = (x + Log(x)) / 11
„ f = Sin(x)/(x-2)
End Function
Function df(x As Single) As Single
„ Приближенное вычисление производной
df = (f(x + eps) - f(x)) / eps
End Function
Function MKAS(x As Single) As Single
Dim k As Integer, x0 As Single
k=0
Print " k ", " x ", " f(x)"
Print " *******************************"
Do
x0 = x
If df(x0) <> 0 Then
x = x0 - f(x0) / df(x0)
Print " "; k, x, f(x)
End If
k=k+1
Loop While Abs(x0 - x) > eps
Print
Print " Количество итераций ="; k
Print " Точность вычислений "; eps
MKAS = x
End Function
141
Private Sub Command1_Click()
Dim eps As Single, x As Single, x0 As Single
Form1.Cls
x = Val(InputBox("Ввести приближение x"))
Print
Print " Приближение x = "; x
Print " *******************************"
x0 = MKAS(x)
Print " Значение корня "; x0
End Sub
Private Sub Command2_Click()
End
End Sub
Задания для самостоятельной работы
Вариант 1
Вариант 9
Найти корни трансцендентного
Найти корни трансцендентного
уравнения
уравнения
sin x  x  1  0
4 x  5 ln x  5  0
для интервала  10  x  10
для интервала  10  x  10
Вариант 2
Вариант 10
Найти корни алгебраического
Найти корни алгебраического
уравнения
уравнения
x 3  5x 2  7  0
для интервала  10  x  10
Вариант 3
Найти корни алгебраического
уравнения
x 3  2 x 2  3 x  10  0
для интервала  10  x  10
Вариант 11
Найти корни алгебраического
уравнения
x3  x  6  0
для интервала  10  x  10
Вариант 4
Найти корни алгебраического
уравнения
x 3  2 x  1,4  0
для интервала  10  x  10
Вариант 12
Найти корни трансцендентного
уравнения
6 x 3  12,3 x 2  x  2  0
для интервала  10  x  10
0 ,1x 2  x ln x  0
для интервала 0 ,001  x  10
142
Вариант 5
Найти корни трансцендентного
уравнения
x  sin x  1  0
для интервала  10  x  10
Вариант 6
Найти корни алгебраического
уравнения
x 3  2 x 2  3x  5  0
для интервала  10  x  10
Вариант 7
Найти корни трансцендентного
уравнения
e x  2( x  1 ) 2  0
для интервала  10  x  10
Вариант 8
Найти корни алгебраического
уравнения
x 3  0 ,2 x 2  0 ,2 x  1,2  0
для интервала  10  x  10
Вариант 13
Найти корни алгебраического
уравнения
x 3  0 ,39 x 2  10 ,5 x  11  0
для интервала  10  x  10
Вариант 14
Найти корни трансцендентного
уравнения
e x  10 x  0
для интервала  10  x  10
Вариант 15
Найти корни трансцендентного
уравнения
x  sin x  0 ,25  0
для интервала  10  x  10
Вариант 16
Найти корни алгебраического
уравнения
x3  x2  x  2  0
для интервала  10  x  10
Вопросы для самопроверки
1. В чем заключается метод бисекции?
2. В чем заключается метод простых итераций?
3. В чем заключается метод касательных?
4. Какой из методов решения уравнения вы считаете более предпочтительным?
143
Лабораторная работа 10
Тема занятия: Численное интегрирование.
Цель: Целью работы является изучение методов вычисления определѐнных интегралов.
В инженерной практике постоянно возникает необходимость вычисления
определенных интегралов. Если некоторая функция f(x) непрерывна на отрезке
a  x  b и известна ее первообразная F(x), то определенный интеграл от этой
функции может быть вычислен по формуле Ньютона-Лейбница:
b
 f ( x )dx F ( b )  F ( a ) ,
a
где F' ( x )  f ( x ) .
Однако в большинстве случаев не существует конечных формул, выражающих неопределенный интеграл в виде комбинации элементарных функций,
так как найти первообразную F(x) не представляется возможным. В тех же случаях, когда возможно выразить интеграл аналитически, получаемая конечная
формула часто бывает настолько сложна для вычисления по формуле (1), что
удобнее проинтегрировать функцию численно, получив приближенное значение интеграла.
Численное интегрирование – это область приближенных методов вычисления определенных интегралов. Численное интегрирование применяют при
решении различных задач, например: при определении площадей сложных геометрических фигур, определении работы сил, расчете длины траектории точки
и в других случаях, когда подынтегральная функция "f(x)" задана по точкам,
имеет сложное аналитическое выражение или ее первообразная не определяется аналитически. Сущность численных методов интегрирования состоит в различной замене (интерполяции) сложной подынтегральной функции на малых
отрезках простой функцией, либо в представлении подынтегральной функции в
виде сходящегося бесконечного ряда. Существует множество методов численного интегрирования: формулы трапеций, Симпсона, Гаусса, Ньютона-Котеса,
Чебышева и др.
Метод прямоугольников
144
Метод прямоугольников — метод численного интегрирования функции
одной переменной, заключающийся в замене подынтегральной функции на
многочлен нулевой степени, то есть константу, на каждом элементарном отрезке. Если рассмотреть график подынтегральной функции, то метод будет заключаться в приближѐнном вычислении площади под графиком суммированием
площадей конечного числа прямоугольников, ширина которых будет определяться расстоянием между соответствующими соседними узлами интегрирования, а высота — значением подынтегральной функции в этих узлах.
Если отрезок a , b является элементарным и не подвергается дальнейшему разбиению, значение интеграла можно найти по:
1. Формуле левых прямоугольников:
b
 f ( x )dx  f ( a )( b  a )
(2)
a
2. Формуле правых прямоугольников:
b
 f ( x )dx  f ( b )( b  a )
(3)
a
3. Формуле прямоугольников (средних):
a  b
( b  a )
 f ( x )dx  f 
2


a
b
(4)
В случае разбиения отрезка интегрирования на элементарных отрезков
формулы (2), (3), (4) применяются на каждом из этих элементарных отрезков
между двумя соседними узлами. В результате, получаются составные квадратурные формулы.
1.
Для левых прямоугольников:
b
n1
a
i 0
 f ( x )dx   f xi xi 1  xi  .
2.
Для правых прямоугольников:
145
b
n
a
i 1
 f ( x )dx   f xi xi  xi 1  .
3.
Для средних прямоугольников:
n1  x  x
n x
 xi 
i
i 1 
xi 1  xi    f  i 1
xi  xi 1  .
 f ( x )dx   f 
2
2




i

0
i

1
a
Наглядное сравнение трех методов представлено на рисунке 1. .
b
Рис. 1. Сравнение применения различных формул прямоугольников: (a) –
метод левых прямоугольников, (b) – метод правых прямоугольников, (c) – метод средних прямоугольников.
Метод трапеций
Метод трапеций — метод численного интегрирования функции одной
переменной, заключающийся в замене на каждом элементарном отрезке подынтегральной функции на многочлен первой степени, то есть линейную функцию.
Площадь под графиком функции аппроксимируется прямоугольными трапециями.
Если отрезок [a,b] является элементарным и не подвергается дальнейшему разбиению, значение интеграла можно найти по формуле:
b
 f ( x )dx 
a
f (a )  f (b)
( b  a )  E( f ),
2
E( f ) 
f '' ( )
( b  a )3 .
12
Это простое применение формулы для площади трапеции — произведение полусуммы оснований, которыми в данном случае являются значения
функции в крайних точках отрезка, на высоту (длину отрезка интегрирования).
Погрешность аппроксимации можно оценить через максимум второй производной.
146
Рис. 2. Аппроксимация функции линейной зависимостью при интегрировании методом трапеций.
Если отрезок [a,b] разбивается узлами интегрирования и на каждом из
элементарных отрезков применяется формула трапеций, то суммирование даст
составную формулу трапеций:
b
n 1 f  x   f ( x
i
i 1 )
a
i 0
 f ( x )dx  
2
xi 1  xi  
n 1
x
x
f(a)
x1  a    f ( xi ) i 1 i 1  f ( b ) ( b  x n1 )

2
2
2
i 1
(5)
Рис.3. Применение составной формулы трапеций (5)
В случае равномерной сетки применяется формула Кортеса:
 f 0  f n n1 

f
(
x
)
dx

h
  f i   E n ( f ) ,

2
i 1 

a
b
(6)
147
En ( f ) 
где
f '' ( )
b  a h 2 .
12
– шаг сетки.
Рис. 4. Применение формулы трапеций для равномерной сетки (6)
Метод Симпсона
Суть метода Симпсона заключается в интерполяции f(x) на отрезке [a, b]
подходящим полиномом, для которого определенный интеграл вычисляется по
формулам численного интегрирования [3].
Рис. 5. Аппроксимация функции f(x) квадратичным полиномом P(x)
Формулой Симпсона называется интеграл от интерполяционного многочлена второй степени на отрезке [a,b]:
148
b
b
 f ( x )dx   p 2 ( x )dx 
a
a
b  a

a  b
 f(a) 4 f 
  f ( b )
6 
 2 

(7)
a  b
где f(a), f 
 и f(b) – значения функции в соответствующих точках
 2 
(на концах отрезка и в его середине).
Для более точного вычисления интеграла, интервал [a,b] разбивают на
отрезков одинаковой длины и применяют формулу Симпсона (7) на каждом из
них. Значение исходного интеграла является суммой результатов интегрирования на всех отрезках.
b
 f ( x )dx 
a
N 1
N x
 xk
h 
  f ( x0  2  f ( x k )  4   k 1
6 
2
k 1
k 1 

  f ( xN


) 

ba
– величина шага, а x k  a  kh – узлы интегрирования, граN
ницы элементарных отрезков, на которых применяется формула Симпсона.
Создание проекта
Создать приложение для ознакомления с методами вычисления определѐнных интегралов.
Порядок выполнения
1. Создайте в своей рабочей папке для нового проекта папку с именем
LabRab10.
2. Создайте новый проект. Для этого в главном меню выполните команду Файл→Новый проект (Ctrl+N).
3. Установите свойства объектов проекта согласно данным таблицы 1.
4. Сохраните проект в папке с именем LabRab10. Стартовая форма лабораторной работы 10 представлена на рисунке 6.
Таблица 1
Объект проекта
Свойство
Значение
Проект1
Имя (Name)
Численное_интегрирование
Имя (Name)
FrmLab10_1
Форма Form1
Caption
Лабораторная работа 10
Метка Label1
Заголовок (Caption)
Фамилия, имя исполнителя
Метка Label2
Заголовок (Caption)
Дата начала выполнения
Метка Label3
Заголовок (Caption)
Наименование работы
где h 
149
Рис. 6. Стартовая форма
5. Добавьте новую форму в проект «Численное_интегрирование» (рис.
7):
Рис.7. Интерфейс приложения «Метод прямоугольников»
6. В окне кода приложения добавьте:
Sub MRect(eps As Single, a As Single, b As Single, IntS As Single)
Dim S1 As Single, S2 As Single, dx As Single, x As Single
150
Dim i As Integer, n As Integer
S1 = 0: x = a: n = 5
Print " Промежуточные значения интеграла"
Print " Int", " n"
dx = (b - a) / n
For i = 1 To n
S1 = S1 + f(x)
x = x + dx
Next
Do
S2 = S1
S1 = 0: x = a
dx = (b - a) / (2 * n)
For i = 1 To n
S1 = S1 + f(x)
x = x + dx
Print " "; Round(S1, 4), i
Next
Loop While Abs(S1 - S2) < eps
IntS = S1
End Sub
Function f(x As Single) As Single
„f=1/x
„ f = Sin(x) / x
f = Exp(x / 2) * Sqr(2 * x + 1)
„ f=sqr(x)
„ f=cos(x)
End Function
7.
В окне кода процедуры обработки события Click для объекта
Command1 добавьте:
Private Sub Command1_Click()
151
Dim IntS As Single, eps As Single, a As Single, b As Single
Form1.Cls
Print
a = Val(InputBox(" Ввести нижний предел интегрирования a",
"MRect"))
b = Val(InputBox(" Ввести верхний предел интегрирования b",
"MRect"))
eps = Val(InputBox("Ввести точность вычислений Eps", "MRect"))
Print " Пределы интегрирования: a ="; a; " b="; b
MRect eps, a, b, IntS
Print " Интеграл равен "; IntS
Print " Точность вычислений "; eps
End Sub
8. В окне кода процедуры обработки события Click для объекта Command2 добавьте:
Private Sub Command2_Click()
End
End Sub
9. Проверьте работу приложения для различных функций.
10. Добавьте новую форму в проект «Численное_интегрирование» (рис.
8):
Рис. 8. Интерфейс приложения «Метод Симпсона»
152
9. В окне кода приложения добавьте:
Function Msimp(a As Single, b As Single, eps As Single) As Single
Dim dx As Double, s1 As Single, s2 As Single, s As Single
Dim i As Integer, n As Integer, x As Single
n = 2: h = (b - a) / 2 * n
s1 = dx * (f(a) + f(b)) / 3
Print " Промежуточные значения интеграла"
Print " S", " n", "Int"
Do
s2 = s1
s2 = f(a) + f(b)
dx = (b - a) / (2 * n)
s=0
For i = 1 To 2 * n
x = a + (2 * i - 1) * dx
s = s + f(x)
Next
s2 = s2 + 4 * s
s=0
For i = 1 To 2 * n - 1
x = a + 2 * i * dx
s = s + f(x)
Print " "; Round(s, 4), i
Next
s1 = dx * (s1 + 2 * s) / 3
Print "", "", Round(s1, 4)
Loop While Abs(s1 - s2) < eps
Msimp = s1
End Function
Function f(x As Single) As Single
„f=1+x^2
„ f = Exp(-Sqr(x))
If x = 1 Then f = 1 Else f = Sin(x) / (x - 1)
153
„ f = Exp(Sqr(x + 2) / 2) * Sqr(2 * x ^ 2 + 1)
End Function
10. В окне кода процедуры обработки события Click для объекта Command2 добавьте:
Private Sub Command2_Click()
Dim a As Single, b As Single, eps As Single
Dim s As Single
Form1.Cls
Print
a = Val(InputBox("Ввести нижний предел интегрирования a",
"MSimp"))
b = Val(InputBox("Ввести верхний предел инегрирования b",
"MSimp"))
eps = Val(InputBox("Ввести точность вычислений Eps", "MSimp"))
Print " Пределы интегрирования: a ="; a; " b="; b
Print
s = Msimp(a, b, eps)
Print
Print " Значение интеграла = "; s
Print " Точность вычислений "; eps
End Sub
11. В окне кода процедуры обработки события Click для объекта Command1 добавьте:
Private Sub Command1_Click()
End
End Sub
12. Проверьте работу приложения для различных функций.
13. Добавьте новую форму в проект «Численное_интегрирование» (рис.
9):
154
Рис. 9. Интерфейс приложения «Метод трапеций»
14. В окне кода приложения добавьте:
Private Sub Command1_Click()
End
End Sub
Function Mtrap(a As Single, b As Single, eps As Single) As Single
Dim n As Double, i As Double, x As Single
Dim s1 As Single, s2 As Single, dx As Single, s As Single
n = 5: dx = (b - a) / n
s1 = 0
Print " Промежуточные значения интеграла"
Print " Int", " n"
Do
s2 = 0
For i = 1 To n - 1
x = dx * i + a
s2 = s2 + f(x)
Print " "; Round(s2, 4), i
Next
s2 = (s2 + f(a) / 2 + f(b) / 2) * dx
155
s = s1: s1 = s2: s2 = s
n=2*n
dx = (b - a) / n
Loop While Abs(s1 - s2) < eps
Mtrap = s1
End Function
Private Sub Command2_Click()
Dim eps As Single, a As Single, b As Single
Dim s As Single
Form1.Cls
Print
a = Val(InputBox("Ввести нижний предел интегрирования a",
"MTrap"))
b = Val(InputBox("Ввести верхний предел интегрирования b",
"MTrap"))
eps = Val(InputBox("Ввести точность вычислений Eps", "MTrap"))
Print " Пределы интегрирования: a ="; a; " b="; b
Print
s = Mtrap(a, b, eps)
Print
Print " Интеграл равен "; s
Print " Точность вычислений "; eps
End Sub
Function f(x As Single) As Single
„f=1+x^2
„ If x = 1 Then f = 1 - x Else f = Sin(x - 1) / (x - 1)
„ f = Sin(x) / (x - 1)
„ f = x * x - 25
f = Exp(Sqr(x + 1) + 2)
End Function
15. Проверьте работу приложения для различных функций.
156
Вопросы для самопроверки
1. В каком случае приходится прибегать к численному интегрированию?
2. Как представляется определѐнный интеграл при численном интегрировании?
3. В чѐм заключается метод прямоугольников?
4. В чѐм отличие метода прямоугольников от метода трапеций?
5. В чем заключается метод Симпсона?
6. Какие преимущества имеет метод Симпсона по сравнению с другими
методами численного интегрирования?
7. В каком случае решение будет наиболее точным?
Задания для самостоятельной работы
Вычислить интеграл по формулам прямоугольников, трапеций, Симпсона
с точностью до третьего десятичного знака.
1.6
1.
2.

2.1
dx
2
0.8
2x  1
2.7
dx

1.2
1.2
3. 
2
x  3.2
dx
2
0.2
x 1
1.4
dx
4. 
2x 2  3
1.2
dx
0.4
6.
.
.
0.8
5. 
.
7.
8.

3x  1
2.7
dx

3x  2
2.4
dx

0.5 x 2  2

1.2
2.7
. 10.

1.2
.
2
1.2
2.7
9.
2
1.4
1.2
.
dx
2
x  0.5
x 2  3.2
x3  2
.
.
12.
13.
1.5
dx
0.6
2

.
14.
dx
2
2

dx
0.5
2


1.4
15.
x 1
1.3
2
.
3x  1
3.5
2.2
dx
dx
11.

1.2
x 2
.
.
.
dx
3 x 2  1.5
dx
x 2  1.2
157
Лабораторная работа №11
Тема занятия: Среда программирования Visual C++.
Программирование линейных алгоритмов.
Консольный режим работы среды Visual C++
Программа, создаваемая в среде Visual C++, всегда оформляется в виде
отдельного проекта. Проект (project) – это набор взаимосвязанных исходных
файлов, предназначенных для решения определенной задачи, компиляция и
компоновка которых позволяет получить выполняемую программу. В проект
входят как файлы, непосредственно создаваемые программистом, так и файлы,
которые автоматически создает и редактирует среда программирования.
Для создания нового проекта необходимо:

Выбрать File – New;
 В открывшемся окне на закладке Projects выбрать тип проекта Win32
Console Application;

В поле Project Name ввести имя проекта, например LabRab11;
 В поле Location ввести имя каталога, в котором будет размещен проект и полный путь к нему;

Указать тип создаваемого проекта– Win32 Console Application;

Щелкнуть мышью по кнопке ОК;
 В открывшемся окне мастера приложений Win32 Console
Application– выбрать An empty project (пустой проект) и щелкнуть по кнопке
Finish;
 В открывшемся окне New Project Information (информация о новом
проекте) щелкнуть мышью по кнопке ОК.
Для создания нового файла необходимо:

Выбрать File– New;

В открывшемся окне на закладке Files выбрать тип файла С++ Source
File;
 В поле File name: ввести имя файла. Для удобства желательно ввести
имя, совпадающее с именем проекта, например LabRab11;
 Щелкнуть мышью по кнопке ОК.
Для добавления в проект уже существующего файла с текстом программы необходимо:
158
 Скопировать имеющийся файл (расширение срр) в рабочую папку
проекта;
 В окне Workspace, закладка File View, щелкнуть правой кнопкой
мыши по папке Source Files;
 В открывшемся диалоговом окне Insert Files… выбрать добавляемый
файл и щелкнуть мышью по кнопке ОК.
В папке проекта, как правило, размещено пять файлов и одна вложенная
папка. Файлы имеют следующее назначение.
Файл с расширением dsw – файл проекта, который объединяет все входящие в проект файлы.
Файл с расширением dsp предназначен для построения отдельного проекта или подпроекта.
Файл с расширением opt содержит все настройки данного проекта.
Файл с расширением ncb – служебный файл.
Файл с расширением cpp – файл текста программы.
Функции библиотеки math.lib
Функции для расчета математических выражений (табл. 1) находятся в
библиотеке math.lib (подключение библиотеки: #include math.h). Все аргументы
в тригонометрических функциях задаются в радианах. Параметры и аргументы
всех остальных функций имеют тип double (кроме abs(x))).
Таблица 1
Функция библиоОписание
теки math.lib
1
2
Вычисление значения x (только для целых чисел!)
Abs(x)
Acos(x)
Вычисление значения arccos( x )
Atan(x)
Вычисление значения arctg( x )
Atan2(x,y)
Вычисление значения arctg( x / y )
Ceil(x)
Cos(x)
Функция возвращает действительное значение, соответствующее наименьшему целому числу, которое больше
или равно (округление к большему)
Вычисление значения cos( x )
159
Окончание табл. 1
1
2
Вычисление косинуса гиперболического x:
Cosh(x)
ch( x )  ( e x  e x ) / 2
Exp(x)
Вычисление значения e x
Вычисление абсолютного значения x
Fabs(x)
Log(x)
Функция возвращает действительное значение, соответствующее наибольшему целому числу, которое меньше
или равно x (округление к меньшему)
Функция возвращает действительное значение, соответствующее остатку от целочисленного деления x на y
Вычисление значения ln( x )
Log10(x)
Вычисление значения lg10 ( x )
Pow(x,y)
Возведение x в степень y
Вычисление значения sin( x )
Floor(x)
Fmod(xy)
Sin(x)
Вычисление синуса гиперболического x:
Sinh(x)
sh( x )  ( e x  e x ) / 2
Sqrt(x)
Вычисление значения x
Tan(x)
Вычисление значения tg ( x )
Tanh(x)
Вычисление тангенса гиперболического x
Пример выполнения работы
Условие: написать программу для вычисления линейного арифметического выражения
h
x 2 y  e y 1
 10  3 x  ln z .
1  x y  tgz
При x=2.45, y=-0.42310-2, z=1.232103. Ответ h=6.9465.
Текст программы:
#include <iostream.h>
#include <math.h>
int main()
{
160
double x,y,z,a,b,c,h;
cout << ‘’Vvedite x: ‘’;
cin >> x;
cout << ‘’Vvedite y: ‘’;
cin >> y;
cout << ‘’Vvedite z: ‘’;
cin >> z;
a = pow(x,2*y)+exp(y-1);
b=1+x*fabs(y-tan(z));
c=10*pow(x,1/3)-log(z);
h=a/b+c;
cout << ‘’Result h= ‘’ << h << endl;
return 0;
}
Задания для самостоятельной работы
1.
.
При x=14.26, y=-1.22, z=3.510-3. Ответ: h=0.749155.
2.
.
При x=-4.5, y=0.7510-4, z=-0.845102. Ответ: s=-3.23765.
3.
.
При x=3.7410-2, y=-0.825, z=0.16102. Ответ: s=1.05534.
4.
.
При x=0.4104, y=-0.875, z=-0.47510-3. Ответ: s=1.98727.
5.
.
161
При x=-15.426, y=4.64210-2, z=21. Ответ: s=-182.038.
6.
.
При x=16.5510-3, y=-2.75, z=0.15. Ответ: s=-40.6307.
7.
.
При x=0.1722, y=6.33, z=3.2510-4. Ответ: s=-205.306.
8.
.
При x=-2.23510-2, y=2.23, z=15.221. Ответ: s=39.3741.
9.
.
При x=1.825102, y=18.225, z=-3.29810-2. Ответ: s=1.21308.
10.
.
При x=3.98110-2, y=-1.625103, z=0.512. Ответ: s=1.26185.
11.
.
При x=6.251, y=0.827, z=25.001. Ответ: s=0.712122.
12.
.
При x=3.251, y=0.325, z=0.46610-4. Ответ: s=4.23655.
13.
.
При x=17.421, y=10.36510-3, z=0.828105. Ответ: s=0.330564.
162
14.
.
При x=12.310-1, y=15.4, z=0.252103. Ответ: s=82.8256.
15.
.
При x=2.444, y=0.86910-2, z=-0.13103. Ответ: s=-0.498707.
163
Лабораторная работа №12
Тема занятия: Программирование разветвляющихся алгоритмов.
Оператор условной передачи управления if
Формат оператора выбора:
If (логическое выражение) оператор1;
Else оператор2;
Если логическое выражение истинно, то выполняется оператор 1, иначе
оператор 2.
Оператор множественного выбора switch
Общая форма оператора следующая:
switch (переменная выбора) {
case const 1: оператор1; break;

case const N: операторы N; break;
default:
операторы N+1;
}
При использовании оператора switch сначала анализируется переменная
выбора и проверяется, совпадает ли ее значение со значением одной из констант. При совпадении выполняются операторы этого case. Конструкция default
(может отсутствовать) выполняется, если результат выражения не совпал ни с
одной из констант.
Пример выполнения работы
 f ( x )  ln( y ), xy  10 ,

Условие: вычислить значение выражения s  e f ( x ) y
5  xy  10 ,

sin( x )  tg ( y ), xy  5.
При выполнении
задания предусмотреть выбор вида функции
f ( x ) : sh( x ), x 2 , e x .
Текст программы:
#include <iostream.h>
#include <math.h>
int main()
{
164
double x,y,f,a,s;
int k;
cout << ''Vvedite x: ''; cin >> x;
cout << ''Vvedite y: ''; cin >> y;
cout << ''Viberite f: 1 – sh(h) , 2 – x^2, 3 – exp(x) ''; cin >> k;
switch(k)
{
case 1: f=sinh(x); break;
case 1: f=pow(x,2); break;
case 1: f=exp(x); break;
default: cout << ''Ne vybrana funkciya ''; return 1;
}
a=fabs(x*y);
if (a<5) {
cout << ''Net rezultata'' << endl;
return 1;
} else
If (a>10) s=fabs(f)+log(y);
else
if (a<=10 && a>5) s=exp(f+y);
else s=sin(x)+tan(y);
cout << ''RESULT ='' << s << endl;
return 0;
}
Задания для самостоятельной работы
Напишите программу вычисления одной из следующих функций, используя оператор If. При выполнении задания предусмотреть выбор вида функции
f(x): sh(x) ,
или . Проект сохранить в рабочей папке LabRab12.
165
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
166
11.
12.
13.
14.
15.
167
Лабораторная работа №13
Тема занятия: Программирование циклических алгоритмов.
Оператор цикла for
Общий вид оператора:
for (инициализирующее выражение; условие;
инкрементирующее выражение)
{
тело цикла
}
Инициализирующее выражение выполняется только один раз в начале
выполнения цикла и, как правило, инициализирует счетчик цикла.
Условие содержит операцию отношения, которая выполняется в начале
каждого цикла. Если условие равно 1(true), то цикл повторяется, иначе выполняется следующий за телом цикла оператор.
Инкрементирующее выражение, как правило, предназначено для изменения значения счетчика цикла. Модификация счетчика происходит после каждого выполнения тела цикла.
Оператор цикла while
Оператор цикла с предусловием. Общий вид оператора:
while (условие);
{
тело цикла
}
Организует повторение операторов тела цикла до тех пор, пока условие
истинно.
Оператор цикла do
Оператор цикла с постусловием. Общий вид оператора:
do (условие);
{
тело цикла
}
168
while (условие);
Организует повторение операторов тела цикла до тех пор, пока условие
истинно.
Пример выполнения работы
100
Условие 1. Вычислить простое рекуррентное выражение   1k 
k 0
xk
.
k!
Перед написанием алгоритма следует получить рекуррентную формулу. Для
x
1
этого рассматриваются значения слагаемых при различных k: при k=1 a1  1 ;
xx
xxx
; при k=3 a3  1
и т.д. Видно, что очередное слагаемое
1 2
1 2  3
x
отличается от предыдущего на множитель  . Исходя из этого, формула реk
x
куррентной последовательности имеет вид ak  ak 1 . Полученная формула
k
при k=2 a2  1
позволяет избавиться от многократного вычисления факториала и возведения в
степень.
Текст программы:

s=a=1;
for(int i=1; i<101; i++)
{
a *=x/i;
s +=a;
}
Условие 2. Вывести на экран таблицу значений функции Y ( x )  9 x и ее
разложения в ряд S( x )  1 
ln 9 n , n=50, на интервале [-3,3], h=0.1.
ln 9
x 
1
k!
#include <iostream.h>
#include <iomanip.h>
#include <math.h>
int main()
{
double a,b,h,x,y,s,p;
169
int n,i;
cout << ''Vvedite a,b,h,n: ''; <<endl;
cin >> a>>b>>h>>n;
x=a;
do
{
p=s=1;
for (i=1; i<=n; i++)
{
p *=log(9)*x/i;
s +=p;
}
y=pow(9,x);
cout << setw(15) << x<< setw(15) << y << setw(15) << s << endl;
x +=h;
}
while (x<=b+h/2);
cout << endl;
return 0;
}
Задания для самостоятельной работы
Вывести на экран таблицу значений функции Y(x) и еѐ разложения в ряд
S(x) для x, изменяющегося от a до b с шагом h=(b-a)/10, табл. 1.
Таблица 1
№ a
b
S(x)
n
Y(x)
1
2
3
4
5
6
1
0.1
1
160
sin x
170
4
5
1
2
3
2
0.1
1
100
3
0.1
1
120
4
0.1
1
80
5
0.1
1
140
6
0.1
1
80
7
0.1
1
120
8
0.1
1
100
9
0.1
1
140
10
0.1
0.5
150
11
0.1
1
100
12
0.1
1
80
13
–2
–
0.1
160
14
0.1
0.8
180
n 
15. Вычислить   1 
k 1 
1 
 .
k2 
Окончание табл. 1
6
cos x
arctg x
171
Библиографический список
Основная литература
1. Голицына, О.Л. Информационные системы: Учебное пособие / О.Л.
Голицына, Н.В. Максимов, И.И. Попов. - 2-e изд. - М.: Форум: НИЦ ИНФРА-М,
2014. - 448 с. – ЭБС "Znanium".
Дополнительная литература
2. Скворцова, Т. В. Автоматизированные системы: этапы развития и
введение в специальность [Электронный ресурс]: лабораторный практикум. Ч.1
/ Т. В. Скворцова, Е. В. Кондрашова; Т. В. Скворцова, Е. В. Кондрашова; М-во
образования и науки Рос. Федерации, Фед. гос. бюджет. образоват. учреждение
высш. образования "Воронеж. гос. лесотехн. ун-т им. Г. Ф. Морозова". - Воронеж, 2017. - 115 с.
3. Скворцова, Т. В. Автоматизированные системы: этапы развития и
введение в специальность Текст: методические указания для самостоятельной
работы студентов / Т.В. Скворцова; М-во образования и науки РФ, ФГБОУ ВО
«ВГЛТУ им. Г.Ф. Морозова». – Воронеж, 2017. – 30 с.
172
Приложение 1
Математические функции
Функция Sqr
Sqr(Number)
Функция Sqr вычисляет значения элементарной математической функции
квадратного корня. Возвращает значение типа Double, содержащее квадратный
корень указанного числа.
Number – обязательный аргумент представляет значение типа Double или любое допустимое неотрицательное числовое выражение.
Пример
Print Sqr(4) ' возвращается 2
Функция Tan
Tan(Number)
Функция Tan вычисляет тангенс угла в радианах. Функция Tan является обратной к функции Atn, которая определяет величину угла в радианах по указанному отношению длин двух сторон прямоугольного треугольника. Для того,
чтобы перевести градусы в радианы используйте формулу:
Угол (в радианах)=угол(в градусах)*pi/180
где pi=3.14159265358979.
Возвращает значение типа Double.
Number – обязательный аргумент типа Double или любое допустимое числовое
значение, задающее угол в радианах. Если аргумент не может быть оценен как
число, генерируется ошибка времени исполнения Type mismatch.
Пример
'Вычисляем тангенс угла 45 градусов
Dim MyAngle, retval, GradToRad
Const pi = 3.14159265358979 'определяем константу pi
MyAngle=45 'задаем угол в градусах
GradToRad=MyAngle*pi/180 'переводим градусы в радианы
retval=Tan(GradToRad) 'вычисляем тангенс 45 градусов
Debug.Print retval
Функция Sin
173
Sin(Number)
Функция Sin вычисляет синус угла. Аргумент задается в радианах. Для того,
чтобы перевести градусы в радианы используйте формулу:
Угол(в радианах)=угол(в градусах)*pi/180
где pi=3.14159265358979.
Функция возвращает величину с типом данных Double, лежащую в диапазоне
от -1 до 1.
Number – обязательный аргумент представляет собой значение типа Double, задающее угол в радианах. Если аргумент не может быть оценен как число, генерируется ошибка времени исполнения Type mismatch.
Пример
' Вычисляем синус прямого угла
Dim MyAngle, retval, GradToRad
Const pi = 3.14159265358979 'определяем константу pi
MyAngle=90 'задаем угол в градусах
GradToRad=MyAngle*pi/180 'переводим градусы в радианы
retval=Sin(GradToRad) 'вычисляем синус прямого угла
Debug.Print retval
Функция Sgn
Sgn(Number)
Функция Sgn (Sign) определяет знак аргумента. Функция возвращает величину
с типом данных Variant(Integer) следующим образом:
Положительный аргумент
Возвращается 1
Отрицательный аргумент
Возвращается -1
0
Возвращается 0
Number – Обязательный аргумент представляет собой любое выражение, оцениваемое как число.
Если аргумент не может быть оценен как число, генерируется ошибка времени
исполнения Type mismatch.
Пример
' Определяем знак числа
Dim Znak
Znak=Sgn(77) 'возвращает 1
Znak=Sgn(-10) 'возвращает –1
174
Znak=Sgn(0) 'возвращает 0
Функция Round
Round(Number [,NumDigitAfterDecimal])
Функция Round служит для округления чисел до заданной точности (число
значащих цифр в дробной части). В результате действия функции возвращается
округленное число, тип которого совпадает с типом переданного аргумента.
Number – обязательный аргумент может представлять любое допустимое числовое выражение.
NumDigitAfterDecimal – необязательный аргумент, представляющий собой целое положительное число, указывающее, сколько знаков следует оставить после запятой. Если аргумент опущен, то дробная часть отбрасывается.
Пример
Dim A,retval
A=123.456789
retval=Round(A) 'возвращается 123
retval=Round(A,3) 'возвращается 123.457
Функция Rnd
Rnd[(Number)]
Функция Rnd (Random) служит для генерации случайных чисел. Функция Rnd
возвращает значение в диапазоне от 0 до 1 типа Single, содержащее случайное
число (причем 1 не входит в этот диапазон, а 0 входит). Строго говоря, функция
возвращает псевдослучайные числа. При каждом запуске программы, функция
генерирует одну и ту же последовательность случайных чисел. Во избежания
этого явления используйте инструкцию Randomize.
Примечание. Чтобы получить значения случайных чисел в интервале от min до
max используйте формулу:
Int((max – min + 1) * Rnd + min)
где min и max - минимальное и максимальное число соответственно.
Number – необязательный аргумент представляет число типа Single или любое
допустимое числовое выражение. Аргумент может принимать следующие значения:
175
Аргумент
опущен
или
больше 0
Аргумент отрицательный
Аргумент равен 0
Пример
Генерируется следующее случайное число в последовательности. При повторном запуске программы генерируется
аналогичная последовательность случайных чисел
Генерируется одно и то же число, используя аргумент как
опорное число
Генерируется одно и то же число, используя число при предыдущем вызове функции
' Генерируем случайные числа от 1 до 10
Dim MyValue As Byte
MyValue = Int((10 * Rnd) + 1)
Функция Log
Log(Number)
Функция вычисляет значения элементарной математической функции
ln(x)(натурального логарифма). Применяется в математических и статистических расчетах. Натуральный логарифм – это логарифм по основанию e. Значение константы e равняется приблизительно 2,718282. Для вычисления логарифма числа x по основанию n следует разделить натуральный логарифм числа
x на натуральный логарифм числа n:
Logn(x) = Log(x) / Log(n)
Возвращает значение типа Double, содержащее натуральный логарифм числа.
Number – обязательный параметр является значением типа Double или любым
действительным числовым выражением, значение которого больше нуля
Примечание. Если аргумент не является числом, то генерируется ошибка времени исполнения Type mismatch. Если аргумент равен нулю или отрицателен,
то генерируется ошибка времени исполнения Invalid procedure call or
argument.
Пример
'В примере показана
' пользовательская функция,
' предназначенная для вычисления логарифмов
' по основанию 10
Static Function Log10(X)
Log10 = Log(X) / Log(10#)
End Function
176
Функция IsNumeric
IsNumeric(Expression)
Функция IsNumeric проверяет, является ли значение данного выражения числом. Функция способна обрабатывать данные любого типа без генерации
ошибки. Возвращает значение типа Boolean, показывающее, имеет ли выражение числовое значение. Функция IsNumeric возвращает True, если выражение
имеет числовое значение; в противном случае возвращается False. IsNumeric
возвращает False, если выражение является выражением даты.
Expression – Обязательный аргумент представляет выражение типа Variant, содержащее числовое выражение или строковое выражение.
Пример
' Проверка – имеет ли переменная
' значение, которое может
' интерпретироваться как числовое
Dim MyVar, MyCheck
MyVar = "53" ' присваиваем значение
MyCheck = IsNumeric(MyVar) ' возвращает True
MyVar = "45 Help" ' присваиваем значение
MyCheck = IsNumeric(MyVar) ' возвращает False
Функция Int
Int(Number)
Функция Int (Integer) отбрасывает дробную часть числа и возвращает целое
значение. Функция схожа с функцией Fix. Различие между функциями Int и Fix
состоит в том, что для отрицательного значения аргумента число функция Int
возвращает ближайшее отрицательное целое число, меньшее либо равное указанному, а Fix ближайшее отрицательное целое число, большее либо равное
указанному. Например, функция Int преобразует -8.4 в -9, а функция Fix преобразует -8,4 в -8.
Функция возвращает значение типа, совпадающего с типом аргумента, которое
содержит целую часть числа.
Number – Обязательный аргумент Number может представлять любое допустимое числовое выражение или число типа Double. Если аргумент имеет значение
Null, то возвращается также Null.
177
Примечание. Если значение аргумента не попадает в диапазон допустимых
значений Double, то генерируется ошибка стадии выполнения Overflow. Если
аргумент имеет тип данных String, то он должен представлять собой число,
иначе генерируется ошибка стадии выполнения Type mismatch.
Пример
' В данном примере
' функции Int и Fix возвращают целые части чисел.
' В случае отрицательного аргумента Int возвращает
' ближайшее отрицательное целое число,
'меньшее либо равное указанному,
' а Fix ближайшее отрицательное целое число,
' большее либо равноеуказанному
Dim MyNumber
MyNumber = Int(99.8) ' Возвращает 99
MyNumber = Fix(99.2) ' Возвращает 99
MyNumber = Int(-99.8) ' Возвращает -100
MyNumber = Fix(-99.8) ' Возвращает -99
MyNumber = Int(-99.2) ' Возвращает -100
MyNumber = Fix(-99.2) ' Возвращает -99
Функция Fix
Fix(Number)
Функция Fix(Fixed) отбрасывает дробную часть числа и возвращает целое значение. Функция схожа с функцией Int. Различие между функциями Int и Fix
состоит в том, что для отрицательного значения аргумента число функция Int
возвращает ближайшее отрицательное целое число, меньшее либо равное указанному, а Fix ближайшее отрицательное целое число, большее либо равное
указанному. Например, функция Int преобразует -8.4 в -9, а функция Fix преобразует -8,4 в -8.
Выражение Fix(Number) эквивалентно следующему:
Sgn(Number) * Int(Abs(Number))
Функция возвращает значение типа, совпадающего с типом аргумента, которое
содержит целую часть числа.
Number – Обязательный аргумент Number может представлять любое допустимое числовое выражение или число типа Double. Если аргумент имеет значение
Null, то возвращается также Null.
178
Примечание. Если значение аргумента не попадает в диапазон допустимых
значений Double, то генерируется ошибка стадии выполнения Overflow. Если
аргумент имеет тип данных String, то он должен представлять собой число,
иначе генерируется ошибка стадии выполнения Type mismastch.
Пример
' В примере показано,
' как функции Int и Fix возвращают целые части чисел.
' В случае отрицательного аргумента Int возвращает
' ближайшее отрицательное целое число,
' меньшее либо равное указанному,
' а Fix ближайшее отрицательное целое число,
' большее либо равное указанному
Dim MyNumber
MyNumber = Int(99.8) ' Возвращает 99
MyNumber = Fix(99.2) ' Возвращает 99
MyNumber = Int(-99.8) ' Возвращает -100
MyNumber = Fix(-99.8) ' Возвращает -99
MyNumber = Int(-99.2) ' Возвращает -100
MyNumber = Fix(-99.2) ' Возвращает -99
Функция Exp
Функция Exp используется для вычисления числа e (основание натуральных
логарифмов=2.7182818). Функция Exp является обратной к функции Log, поэтому ее иногда называют антилогарифмом.
Number – обязательный аргумент представляет собой значение типа Double.
Аргумент не может превышать число 709 782712893. Если аргумент не может
быть оценен как число, то генерируется ошибка времени выполнения Type
mismatch.
Пример
Dim retval
retval=Exp(2) 'вычисляем экспоненту
Debug.Print retval
Функция Cos
Cos(Number)
Функция Cos вычисляет косинус угла. Аргумент задается в радианах. Для того,
чтобы перевести градусы в радианы используйте формулу:
179
Угол (в радианах) = угол(в градусах) * pi/180
где pi=3.14159265358979
Функция возвращает величину с типом данных Double, лежащую в диапазоне
от -1 до 1.
Number – Обязательный аргумент представляет собой значение типа Double,
задающее угол в радианах. Если аргумент не может быть оценен как число, генерируется ошибка времени исполнения Type mismatch.
Пример
'Вычисляем косинус прямого угла
Dim MyAngle, retval, GradToRad
Const pi = 3.14159265358979 ' определяем константу pi
MyAngle = 90 ' задаем угол в градусах
GradToRad = MyAngle*pi/180 ' переводим градусы в радианы
retval = Cos(GradToRad) ' вычисляем косинус прямого угла
Debug.Print retval
Функция Atn
Atn(Number)
Функция Atn (Arctangent) определяет величину угла в радианах по указанному
отношению длин двух сторон прямоугольного треугольника (противолежащего
катета и прилежащего катета). Функция Atn является обратной к функции Tan,
которая возвращает тангенс указанного угла.
Возвращает значение типа Double, содержащее артангенс числа. Возвращаемое
значение лежит в диапазоне от -pi/2 до pi/2 радиан.
Number – обязательный аргумент типа Double или любое допустимое числовое
значение, задающее угол в радианах. Если аргумент не может быть оценен как
число, генерируется ошибка времени исполнения Type mismatch.
Пример
Вычисляем значение pi
Dim pi
pi=4*Atn(1) ' вычисляет значение pi
Функция Abs
Abs(Number)
180
Функция Abs(Absolute) служит для вычисления абсолютного значения (модуля)
числа. Абсолютное значение числа - это положительная величина, например
абсолютное значение числа -7 равно 7.
В результате действия функции Abs возвращается значение, тип которого совпадает с типом переданного аргумента и равняется абсолютному значению указанного в аргументе числа. Если аргумент имеет тип String, который может
быть преобразован в число, тогда возвращается значение типа Double.
Number – Обязательный аргумент может представлять любое допустимое числовое выражение. Если аргумент имеет значение Null, то возвращается также
Null. Если аргумент - не инициализированная переменная, то возвращается нулевое значение.
Пример
Dim A,B
A=Abs(10.7) ' возвращается 10.7
B=Abs(-17.4) ' возвращается 17.4
181
Приложение 2
Функции преобразования типов
Имя функции, параметры
Аsc(СтрокаСимволов)
СВооl(Выражение)
СВуtе(Выражение)
CCur (Выражение)
СDate(Выражение)
Сint(Выражение)
СLng(Выражение)
CSng(Bыpaжeниe)
СStr(Выражение)
Cvar(Выражение)
Нех(Число)
Осt(Число)
Vа1(Строка)
Возвращаемое значение
Возвращает код первого символа строки
Преобразует числовое выражение или строку в булево значение: True, если значение
выражения отлично от нуля, или False, если
значение выражения равно нулю
Преобразует числовое выражение или строку в байт. Аргумент может принимать значения в диапазоне 0-255
Преобразует числовое выражение или строку в число денежного формата
Преобразует числовое выражение или строку в дату
Преобразует числовое выражение или строку в число типа Integer
Преобразует числовое выражение или строку в число типа Long
Преобразует числовое выражение или строку в число типа Single
Преобразует числовое выражение или строку в строку
Преобразует числовое выражение или строку в число типа Variant
Преобразует числовое выражение или строку в шестнадцатеричное число
Преобразует числовое выражение или строку в восьмеричное число
Преобразует строку в число
182
Учебное издание
Скворцова Татьяна Владимировна
Кондрашова Елена Владимировна
АВТОМАТИЗИРОВАННЫЕ СИСТЕМЫ: ЭТАПЫ РАЗВИТИЯ И ВВЕДЕНИЕ
В СПЕЦИАЛЬНОСТЬ
Лабораторный практикум
Часть II
Редактор
Подписано в печать
. Формат 6090 /16. Объем
п. л.
Усл. печ. л. . Уч.-изд. л. . Тираж
экз. Заказ
ФГБОУ ВО «Воронежский государственный лесотехнический университет
имени Г.Ф. Морозова»
РИО ФГБОУ ВО «ВГЛТУ». 394087, г. Воронеж, ул. Тимирязева, 8
Отпечатано в УОП ФГБОУ ВО «ВГЛТУ»
394087, г. Воронеж, ул. Докучаева, 10
Документ
Категория
Без категории
Просмотров
6
Размер файла
3 314 Кб
Теги
этап, система, автоматизированной, часть, развития
1/--страниц
Пожаловаться на содержимое документа