Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Учебное пособие по информатике. Часть 3

.pdf
Скачиваний:
25
Добавлен:
31.05.2015
Размер:
1.49 Mб
Скачать

51

Для обращения к процедуре используется оператор вызова процедуры. В теле функции должен обязательно быть хотя бы один оператор присваивания, в левой части которого стоит имя функции. Именно он и определяет значение, возвращаемое функцией. Если таких операторов несколько, то результатом функции будет значение последнего выполненного оператора присваивания. В этих операторах вместо имени функции можно указывать переменную Result, которая создается в качестве синонима для имени функции.

Обмен данными между основной программой и подпрограммой

Обмен данными между основной программой и подпрограммой выполняется через глобальные переменные либо через формальные и фактические параметры.

Глобальные переменные – это переменные, объявленные в основной программе. Глобальные переменные доступны как основной программе, так и любой подпрограмме.

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

Формальные и фактические параметры должны соответствовать друг другу по порядку следования, по типу и по количеству.

Формальные параметры могут быть параметрами – значениями и параметрами – переменными и параметрами константами.

Группа параметров, перед которыми в заголовке подпрограммы отсутствуют слова var и const и за которыми следует их тип, называются параметрами – значениями.

Пример

Procedure P1(a: real; g:integer); a, g – параметры-значения.

Группа параметров, перед которыми в заголовке подпрограммы стоит слово const или var и за которыми следует их тип, называются соответственно параметрами-константами и параметрами – переменными.

Пример

Procedure P2(const x,y: integer); Function F1(var d, f: real; g: integer): real;

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

5.15 Знакомство с компонентами

Компоненты могут быть визуальные и невизуальные.

Квизуальным относятся кнопки, списки, переключатели, а также форма.

Кневизуальным компонентам относятся компоненты, выполняющие вспомогательные действия – таймер Timer или набор данных Table.

52

Страница Standard

1.MainMenu // Создание и обслуживание сложных иерархических меню

2.Popupmenu //всплывающее меню (при нажатии правой кнопки мыши)

3.Label //Метка (надпись)

4.Edit // Однострочный текстовый редактор (для ввода и./или отображения одной текстовой строки)

5.Memo // Многострочный текстовый редактор

6.Button // Командная кнопка (Обработчик события OnClick)

7.CheckBox // Независимый переключатель

8.RadioButton // Зависимый переключатель

9.ListBox // Список выбора

10.ComboBox // Комбинированный список выбора (комбинация списка выбора и текстового редактора)

11.ScrollBar // Полоса управления вертикальной и горизонтальной полосами, напоминающие полосы прокрутки

12.GroupBox// Группа элементов (для группировки нескольких связанных по смыслу компонентов.)

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

14.Panel// Панель (для объединения нескольких компонентов)

Страница Additional

1.BitBtn // Командная кнопка с надписью и пиктограммой

2.SpeedButton // Пиктографическая кнопка (используется для быстрого доступа к опциям главного меню).

3.MaskEdit // Специальный текстовый редактор (используется для фильтрации текста)

4.StringGrid // Таблица строк (представление информации в табличном

виде)

5.DrawGrid //Произвольная таблица (может содержать рисунки)

6.Image // Графический образ

7.Shape // Геометрическая фигура (вставка геометрической фигуры в

окно)

8.Bevel // Кромка (для выделения отдельных частей окна)

9.ScrollBox // Панель с полосами прокрутки (полосы прокрутки включаются по необходимости автоматически)

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

11.Splitter // Граница для разделения компонентов

12.StaticText // Статический текст (имеет собственное окно)

13.Chart // Диаграмма

Страница Win32

1.TabControl // Закладка (закладка-окно с надписью)

2.PageControl // Набор панелей с закладками

3.ImageList //Набор рисунков

4.RichEdit // Многострочный редактор форматированного текста

53

5.Track Bar // Регулятор (для управления величин в программах)

6.ProgressBar // Индикатор процесса

7.UpDown // Цифровой регулятор

8.HotKey /// Управляющая клавиша

9.Animate // Мультипликатор

10.DateTimePicker // Селектор выбора времени/даты

11.TreeView // Дерево объектов

12.ListView // Список

13.HeaderControl // Управляющий заголовок

14.StatusBar // Строка состояния

15.ToolBar // Инструментальная панель

16.CoolBar // Контейнер для размещения стандартных компонентов

Страница System

1.Timer // Таймер

2.PaintBox // Окно для рисования

3.MediaPlyaer // Мультимедийный проигрыватель

4.OleContainer // OLE-контейнер

5.DDEClient // DDE-связь

6.DDEServer // DDE-связь

Страница Dialogs

1. OpenDialog // Открыть (диалоговое окно Открыть файл)

2.SaveDialog // Сохранить

3.OpenPictureDialog // Сохранить рисунок

4.FontDialog // Шрифт

5.ColorDialog // Цвет

6.PrintDialog // Печать

7.FindDialog // Поиск

8.ReplaceDialog // Замена текстового фрагмента Пример.

1.Задать переменные х и у и, если x<y вычислить s=2x+y, иначе вычислить

z=sin(x+y).

Новый проект можно создать с помощью команды File | New Application. Свойство Name формы позволяет задать имя переменной, которое будет

использоваться при ссылке на объект, представляющий форму в коде программы. Свойство Caption представляет заголовок формы. Свойства Color определяет цвет, Width-ширину, Height – высоту формы. Компонент Panel (пиктограмма в палитре Стандарт) можно использовать для объединения объектов. Кроме того, необходимо разместить компоненты для ввода данных (х, у) и вывода результата (s, z), а также метки с надписями х, у, s, z (Label). Для ввода будем использовать однострочный текстовый редактор (Edit).

Конструирование формы

Для формы Form1 в инспекторе объектов Object Inspector можно задать следующие свойства:

Caption – Заголовок окна (например, «Вычисление») Height – 400 (Высота окна)

54

Width – 600 (Ширина окна) Поместить на форму компоненты (рис. 9):

панель Panel1 (в нижней части экрана для вывода информации);

панель Panel2 (в верхней части для входной информации) (страница

Standard)

Для панелей выполнить:

Caption – очистить поле заголовка для вывода результата Font.Size – 10 (задать размер шрифта)

На панели Panel2 разместить компоненты Edit1и Edit2 – для ввода данных

(страница Standard)

Text – очистить поле для ввода информации (переменных x и y)

Label1 и Label2 – использовать для задания меток для х и у (страница

Standard) Caption

x= (для Label1) y=(для Label2)

Кнопка Button1 (страница Standard) Caption – Вычислить

Кнопка BitBtn1 (страница Additional) Kind – Close

На панели Panel1 разместить метку Label3. Caption задать «Результат»

Командную кнопку BitBtn1 будем использовать для закрытия окна. Управлять вычислением будет кнопка Button1, для нее необходимо создать

обработчик события OnClick (нажатие кнопки).

Для создания обработчика надо перейти на вкладку Events Инспектора объектов Object Inspector, выбрать мышкой нужный компонент Button1 и найти требуемое событие OnClick.

Двойной щелчок на этой кнопке и на экране окно кода программы.

Курсор устанавливается в процедуру-обработчика события, которая должна иметь следующий вид:

procedure Tform1.Button1Click(Sender:Tobject); begin

<место курсора>

End;

Ниже представлена программа обработки заданного события. procedure Tform1.Button1Click(Sender:Tobject);

Var

x,y,s,z:integer; // описание переменных begin

x:=StrToInt(Edit1.Text);// ввод переменных и преобразование их из строкового в целый

тип

y:=StrToInt(Edit2.Text);

If x>y then begin S:=2*(x+y); Panel1.Caption:=‟S=‟+IntToStr(S) end else

begin z:=sin(x+y); Panel1.Caption:=‟z=‟+IntToStr(z)

55

end;

end;

Вывод результата выполнен в заголовок панели Panel1. Процедура закрытия окна будет иметь вид:

procedure Tform1.Bitbtn1Click(Sender:Tobject); begin

Form1.Close ; End.

Рис. 9. Компоненты, размещенные на форме

Созданный проект компилируется и выполняется при отсутствии ошибок. Его необходимо сохранить командой File | Save. При сохранении Delphi предложит сохранить модуль с формой под именем Unit.pas, а проект – как

Project.dpr.

Информация вводится в текстовые редакторы в строковом виде, а в программе эти данные используются как числовые, поэтому должно быть выполнено преобразование из строкового вида в числовое. В программе это преобразование осуществляется с помощью StrToInt (из строкового в целый String – Integer). При выводе результата на экран необходимо выполнить обратное преобразование.

6 РАБОТА В DELPHI С МАССИВАМИ

Для работы с массивами удобно использовать компоненты StringGrid и

Memo.

Основные свойства StringGrid: Name – Имя компонента Colcount – Количество столбцов RowCount – Количество строк Cells – Ячейка таблицы

FixedCols – Количество зафиксированных столбцов

Options.goEditing – Признак допустимости редактирования содержимого ячеек (true, false)

Options.goTab – Разрешает (true) или запрещает (false) использование клавиши TAB для перемещения курсора в следующую ячейку таблицы

56

Options.goAlways – Признак нахождения компонента в режиме редактирования

DefaultColWidth – Ширина колонок таблицы DefaultRowHeight – Высота строк таблицы

GridLineWidth – Расстояние от левой границы поля таблицы до левой границы формы

Left – Расстояние от верхней границы поля таблицы до верхней Top – границы формы

Height – Высота поля таблицы Width – Ширина поля таблицы

Font – Шрифт для отображения содержимого таблицы

ParentFont – Признак наследования характеристик шрифта формы Пример.

Вычислить среднеарифметическое значение элементов одномерного массива.

Первому элементу массива присвоить значение суммы. Массив вывести на экран.

Для ввода данных в массив будем использовать компонент StringGrid, который находится на странице Additional и представляет собой таблицу, ячейки которой – строки символов.

Конструирование формы

Поместить на форму компоненты (рис. 10):

панель Panel1 (в нижней части экрана для вывода информации)

панель Panel2 (в верхней части для входной информации) (страница

Standard)

Для панелей задать:

Caption – пустое (очистить место для вывода результата) Font.Size – 10 (размер шрифта)

Label1 и Label2 – метки для панелей (страница Standard)

Caption

Label1 Ввод массива (панель Panel2)

Label2 очистить (использовать для вывода результата панель Panel1)

кнопка Button1 (страница Standard) Caption – Вычислить

Добавляем компонент StringGrid1 и задаем следующие свойства:

ColCount 5

FixedCols 0

RowCount 1 DefaultRowHeight 24 DefaultColWidth 64 Options.go.Editing true Options.goTabs true Options.go.Always true

57

Значения Height и Width следует настроить так, чтобы размер компонента был равен размеру строки при помощи мыши.

Для вывода массива на экран будем использовать компонент Memo1 (Многострочный редактор).

Управлять вычислением будет кнопка Button1,для нее необходимо создать обработчик события OnClick (нажатие кнопки)

Двойной щелчок на этой кнопке и на экране окно кода программы.

Курсор устанавливается в процедуру – обработчика события, которая должна иметь следующий вид:

procedure Tform1.Button1Click (Sender:Tobject); Var

a:array[1..5] of integer; sum,i:integer;

sr:real; begin

//ввод массива // считаем, если ячейка пустая, то соответствующий элемент массива равен 0 for i:=1 to 5 do

if Length (StringGrid1.Cells[i-1,0])<>0

then a[I]:= StrToInt(StringGrid1.Cells[i-1,0]) else a[I]:=0;

// Обработка массива sum:=0;

for i:=1 to 5 do

sum:=sum+a[i]; // вычисление суммы элементов массива sr:=sum/5;

a[1]:=sum;

//вывод суммы элементов массива и среднего значения в заголовок метки

Label2.Caption:=‟Сумма элементов‟+IntToStr(sum)+#13+‟Среднеарифм.‟+FloatToStr(sr);

//вывод массива

Memo1.Lines.Add(„Массив после обработки‟); for i:=1 to 5 do Memo1.Lines.Add(IntToStr(a[i]));

end;

Рис. 10. Компоненты, размещенные на форме

При нажатии клавиш Ctrl+F9 выполняется компиляция кода программы.

58

Если компиляция выполнена успешно (ошибок нет) то можно выполнить Project1 с помощью клавиши F9.

7КОНТРОЛЬНЫЕ ВОПРОСЫ

1.В чем заключается визуальное объектно-ориентированное программирование?

2.Какой язык программирования используется в Delphi?

3.Какие средства используется системами ускоренной разработки программ?

4.Что включает разработка приложения в Delphi?

5.Как создать интерфейс приложения?

6.В чем заключается функциональность приложения?

7.Что представляют собой поля, методы, свойства?

8.Что включают классы в Delphi?

9.Какие свойства объектов являются свойствами классов?

10.Назначение палитры компонентов.

59

ЧАСТЬ 3. VISUAL BASIC FOR APPLICATIONS

1 ОСНОВНЫЕ ПОНЯТИЯ ЯЗЫКА VBA

При помощи VBA пользователь может создавать свои собственные функции. С ними можно работать на рабочем листе при помощи мастера функций точно так же, как и с любой встроенной функцией [5].

VBA – это язык объектно-ориентированного программирования. Основными парадигмами являются объект, свойство, метод, событие, класс

и семейство объектов.

Объект – это инкапсуляция данных вместе с кодом, предназначенным для их обработки.

Семейство – объект, содержащий несколько других объектов того же типа: Worksheets (“Лист 1”) – рабочий лист с имени Лист 1,

Worksheets (1) – первый лист рабочей книги.

Классы – это проект, на основе которого будет создан объект, т.е. класс определяет имя объекта, его свойства и действия, над ним выполняемые. А каждый объект, свою очередь, является экземпляром класса.

Методы – это действия, выполняемые над объектом. Объект.метод – синтаксис метода Пример 1.

Application.Quit – закрыть объект Application.

Пример 2.

Worksheets (“Лист1”).Chartobjects.Delete – удалит все диаграммы с листа “Лист1”.

Свойства – это атрибут объекта, определяющий его характеристики: размер, цвет, положение на экране или состояние (доступность, видимость).

Для изменения характеристик меняют его свойства: Объект.Свойство=Значение свойства Пример:

Worksheets.Visible = False

Есть свойства, возвращающие объект:

ActiveCell возвращает активную ячейку активного листа активной рабочей книги.

ActiveWindow – активное окно.

Свойства ActiveCell, ActiveWindow. ActiveCell и Application. ActiveWindow. ActiveCell возвращают одну и ту же активную ячейку.

События – это действия, распознаваемые объектом.

Суть программирования на VBA и заключается в том, чтобы на событие получить отклик (см. табл. 3).

Основные наборы (классы объектов), с которыми работает программа на языке VBA в среде Excel, приведены в табл. 4.

 

60

 

Таблица 3. Команды работы с семействами

Метод

Описание

Add

Добавить новый элемент в семейство Object. Add item, key, before,

 

after – здесь:

 

item – обязательный параметр – выражение специфицирующее

 

добавляемый элемент.

 

Key – необязательный – строковое выражение,

 

идентифицирующее элемент

 

Before, after – перед или после какого добавлять – необязательные

Item

Возвращает специфицированный элемент семейства

 

Object. Item (index), где index – порядковый № элемента в

 

семействе или идентификатор, заданный как Key в методе Add.

Remove

Удаляет элемент из семейства.

 

Object. Remove index, где index – порядковый № элемента в

 

семействе или его идентификатор, задаваемый параметром Key в

 

методе Add.

Доступ к компоненту набора осуществляется 2 способами:

1)по номеру компонента: Workbooks («Имя книги»). Worksheets(2) – номер листа;

2)по имени компонента: Workbooks («Имя книги»). Worksheets («Имя

листа»).

 

Таблица 4. Виды объектов

Имя объекта

Вид объектов в наборе

Sheets

Все листы любых типов в рабочей книге

Workbooks

Все текущие открытые рабочие книги

Worksheets

Все таблицы в рабочей книге

Charts

Все листы диаграмм в рабочей книге

Range

Диапазон ячеек таблицы (строк, столбцов, несмежных ячеек,

 

трехмерных выделений)

Отдельные ячейки таблицы доступны через объект Range и следующие методы:

Cells (число 1; число2) – аргументы определяют местоположение отдельной ячейки таблицы.

Range – работа с прямоугольной областью ячеек.

В качестве аргументов используется одна или две ссылки на ячейки таблицы в стиле А1: Range (“A2”;”G10”) или Range (“S4”).

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

Union – метод множественного выделения областей ячеек – Union (область1;область2).

Примеры:

Cells (1;2).Value = 5 – присваивает ячейке B1 акт. Листа рабочей книги значение 5.