- •Методические рекомендации по изучению дисциплины «визуальное программирование»
- •Лабораторная работа №2 тема: реализация задач обработки строковых данных.
- •Лабораторная работа №3 тема: программная реализация задач с использованием типа даты и времени
- •Лабораторная работа №4 тема: программирование задач с использованием массива записи
- •Лабораторная работа № 5 тема: организация стека. Рекурсивные алгоритмы
- •Перебор возможных решений
- •Лабораторная работа № 6 тема: составление алгоритмов решения задач с использованием файлов последовательного доступа
- •Лабораторная работа № 7 тема: программирование задач с использованием компонентов treeview, listview
- •Лабораторная работа № 8 тема: использование компонента flexgreed для решения задач
- •Лабораторная работа №9 тема: решение задач с использованием графических построений
- •Лабораторная работа № 10 тема: разработка простейших игровых приложений
- •Методические указания по срсп
Лабораторная работа № 6 тема: составление алгоритмов решения задач с использованием файлов последовательного доступа
Цель работы: Изучение методов работы с файлами последовательного доступа.
План работы: Разработать алгоритм решения задачи с использованием файла последовательного доступа.
Теоретический материал:
Последовательный файл состоит из текстовых строк ASCII-формата. Любая информация считывается или сохраняется в текстовом виде построчно. Последовательные файлы могут обрабатываться любым текстовым редактором.
Способ открытия файла с последовательным доступом (для чтения, записи или добавления) задается при вызове оператора открытия файла:
Open <ИмяФайла> For <Режим> As <Дескриптор Файла>,
где ИмяФайла определяет имя открываемого файла — это либо строка символов, заключенная в кавычки, либо выражение, значением которого является строка символов. Она представляет собой путь к открываемому файлу; режим — это режим доступа, который может иметь значения:
Input (Ввод) — если файл открывается для чтения из него текстовых данных;
Output (Вывод) — если файл открывается для записи в него данных, начиная с первой позиции. Вся имевшаяся в нем старая информация будет стерта;
Append (Дополнение) — если файл открывается для записи в него данных не с первой, а с конечной позиции, так что вся имевшаяся в нем старая информация будет сохранена.
ДескрипторФайла — целое число, по которому идентифицируется открываемый файл. Файловые номера используются при выполнении файловых операций в программе.
Все открытые файлы закрываются оператором:
Close [<СписокДескрипторов>]
СписокДескрипторов — это записанные через запятую дескрипторы файлов, которые должны быть закрыты. При отсутствии этого параметра будут закрыты все открытые файлы.
Для записи в файл используются операторы;
Print # <ДескрипторФайла>, [<СписокЗначений>] Write .# <ДескрипторФайла>, [<СписокЗначений>],
где СписокЗначений — это записанные через разделитель значения (или выражения).
Оба оператора записывают данные в файл текстовыми строками. Текстовая строка — это последовательность символов, которая заканчивается символом перехода на яовую текстовую строку или символом возврата каретки (коды 13 и 10). Текстовый файл представляет собой последовательность текстовых строк.
Задание.
Лабораторная работа № 7 тема: программирование задач с использованием компонентов treeview, listview
Цель работы: Изучение методов работы с компонентами TreeView, ListView.
План работы: Разработать алгоритм обработки событий для компонентов TreeView, ListView.
Теоретический материал:
Элемент управления ListView (Табличный список) позволяет создавать список с заголовками. Кроме того, элементы списка наряду с текстом могут содержать и значки. В этом случае необходимо дополнительно создать элемент управления ImageList с растровыми изображениями значков и связать их с соответствующими элементами списка.
Элементами списка ListView являются объекты ListItem, а заголовками его столбцов — объекты ColumnHeader.
Используется ListView обычно для представления результатов запросов к базе данных или совместно с ниже обсуждаемым элементом управления TreeView. Кроме того, допустимо его применение как списка, имеющего несколько столбцов с заголовками. Иногда это дает более наглядное представление данных.
Перечислим основные свойства элемента управления ListView.
Свойство |
Описание |
View |
Определяет режим отображения информации. Допустимые значения: |
|
• lvwIcon == 0 (объекты списка отображаются в виде крупных значков); |
|
• lvwsmallIcon == 1 (объекты списка отображаются в виде маленьких значков); |
|
• lvwList == 2 (объекты списка отображаются в виде маленьких значков и текста); |
|
• lvwReport == 3 (объекты списка отображаются в виде маленьких значков и текста). |
Arrange |
Определяет способ упорядочивания объектов. Допустимые значения: |
|
• lvwNone == 0 (не упорядочены); |
|
• lvwAutoLeft == 1 (слева направо); |
|
• lvwAutoTop == 2 (сверху вниз). |
GridLines |
Логическое свойство, которое определяет, надо ли строки и столбцы табличного списка разделять горизонтальными и вертикальными линиями. |
FullRowSelect |
Логическое свойство, которое определяет, допустим ли выбор целой строки. |
LabelEdit |
Допускает редактирование надписей в элементе. Допустимые значения: |
|
• lvwAutomatic == 0 (генерируется событие BeforeLabelEdit, когда пользователь щелкает надпись); |
|
• lvwManual == 1 (генерируется событие BeforeLabelEdit только когда был применен метод StartLabelEdit). |
LabelWrap |
Логическое свойство, которое определяет, надо ли переносить надписи. |
MultiSelect |
Логическое свойство, которое устанавливает, допустим ли выбор нескольких элементов из списка. |
ColumnHeaders |
Возвращает семейство ColumnHeaders |
|
Работа с объектами семейства производится стандартными методами: Remove, Clear, Add. |
|
Приведем синтаксис только для метода Add. |
|
Синтаксис: |
|
Add(index, key, text, width, alignment, icon) |
|
• index — индекс объекта (заголовка колонки списка); |
|
• key — ключ, идентифицирующий объект; |
|
• text — отображаемый текст в заголовке; |
|
• width — ширина колонки; |
|
• alignment — устанавливает выравнивание заголовка. Допустимые значения: |
|
° LvwColumnLeft == 0 (по левому краю); |
|
° LvwColumnRight == 1 (по правому краю); |
|
° LvwColumnCenter == 2 (по центру); |
|
• icon — индекс или ключ объекта из элемента управления ImageList, когда свойство View установлено равным lvwSmalllcon. |
ListItems |
Возвращает семейство Listltems элементов табличного списка. |
|
Работа с объектами семейства производится стандартными методами: Remove, Clear, Add. |
|
Приведем синтаксис только для метода Add. |
|
Синтаксис: |
|
Add(index, key, text, icon, smallIcon) |
|
• index — индекс объекта (если он опущен, то считается равным на единицу больше, чем число элементов списка); |
|
• key — ключ, идентифицирующий объект; |
|
• text — отображаемый текст; |
|
• icon — индекс соответствующего растрового изображения из элемента управления ImageList, когда свойство View установлено равным lvwIcon; |
|
• smallIcon — индекс соответствующего растрового изображения из элемента управления ImageList, когда свойство View установлено равным lvwSmalllcon. |
SubItems |
Возвращает массив строк, связанный с данным элементом списка. |
|
Синтаксис: |
|
Subltems(Индекс) [= Строка] |
В качестве примера использования элемента управления ListView рассмотрим задачу расчета размера постоянных платежей по выданной в долг сумме на фиксированный срок под фиксированные проценты. Размер выплат будет рассчитываться для различных процентных ставок, изменяющихся от начальной до конечной с фиксированным шагом. Размер выплат найдем с помощью финансовой функции Pmt, которая возвращает величину постоянной периодической выплаты ренты (например, регулярных платежей по займу) при постоянной процентной ставке.
Итак, в форме создайте две надписи, два поля ввода (для ввода размера ссуды и числа платежей), элемент управления Slider, с помощью которого вводится либо одна процентная ставка, либо целый диапазон и элемент управления ListView, куда будет выводиться результат расчета размера выплат.
Теперь, в модуле формы наберите следующую программу:
' Переменные уровня модуля
Dim Начало As Integer
Dim Конец As Integer
Private Sub Form_Load()
Caption = "Периодические выплаты"
Label1.Caption = "Ссуда"
Label2.Caption = "Число выплат"
Text1.Text = Empty
Text2.Text = Empty
With ListView1
.View = lvwReport
.ColumnHeaders.Add Index:=1, Text:="Ставка", Width:=.Width / 2
.ColumnHeaders.Add Index:=2, Text:="Выплата", Width:=.Width / 2
.Gridlines = True
End With
With Slider1
.Min = 0
.Max = 100
.SelectRange = True
End With
End Sub
'
Private Sub Slider1_MouseDown(Button As Integer, Shift As Integer, x As Single, у As Single)
With Slider1
If Shift = 1 Then
.ClearSel
.SelStart = .Value
Начало = .SelStart
Else
.ClearSel
End If
End With
End Sub
'
Private Sub Slider1_MouseUp(Button As Integer, Shift As Integer, x As Single, у As Single)
Dim p As Double
Dim k As Integer
Dim i As Integer
Dim A As Object
If IsNumeric(Text1.Text) = False Then
MsgBox "Ошибка в ссуде", vbExclamation, "Периодические выплаты"
Text1.SetFocus
Exit Sub
End If
If IsNumeric(Text2.Text) = False Then
MsgBox "Ошибка в числе выплат", vbExclamation, "Периодические выплаты"
Text2.SetFocus
Exit Sub
End If
p = CDbl(Text1.Text)
k = CInt(Text2.Text)
If Shift = 1 And Slider1.SelectRange = True Then
With Slider1
If .Value >= .SelStart Then
.SelLength = .Value - .SelStart
Конец = .Value
End If
End With
End If
ListView1.Listltems.Clear
For i = Начало To Конец
Set A = ListView1.Listltems.Add(Text:=CStr(i))
A.Subltems(1) = CStr(Format(Pmt(i / 100, k, -p), "Fixed"))
Next i
If Shift <> 1 Then
With ListView1
.Listltems.Clear
Set A = .ListItems.Add(Text:=CStr(Slider1.Value))
End With
A.Subltems(1) = CStr(Format(Pmt(Sliderl.Value / 100, k, -p), "Fixed"))
End If
End Sub
Задание. Разработать программное приложение с использованием компонентов TreeView, ListView.
