Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа_3_1_Лс_27_11_2011.doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
4.63 Mб
Скачать

Завдання на самостійну роботу(в,вс,лс)

ЗАВДАННЯ 9.4, 9,5. СТВОРІТЬ ПРОЕКТИ ЗГІДНО З ВАРІАНТОМ ІНДИВІДУАЛЬНОГО ЗАВДАННЯ.

Лабораторна робота №9. Проектування додатків vb6, що містять вкладені циклічні алгоритмічні структури. Заняття 2

ЗАВДАННЯ 9.6. Постановка задачи: ВЫВЕСТИ ВСЕ ВОЗМОЖНЫЕ СПОСОБЫ РАЗМЕНА ОПРЕДЕЛЕННОЙ СУММЫ ДЕНЕГ С ПОМОЩЬЮ КУПЮР ДОСТОИНСТВОМ 1, 2 И 5 ГРН. ЭТА СУММА ДЕНЕГ ДОЛЖНА ВВОДИТЬСЯ С ПОМОЩЬЮ ОКНА INPUTBOX (РИС. 9.2). Вид работающего приложения представлен на рис. 9.5.

Порядок действий

1. Расположите на форме две метки, одну командную кнопку и одно текстовое поле (рис. 9.5).

Рис. 9.52

2. Установите значения свойства Name:

  • для кнопки — cmdРазмен;

  • для второй метки — lblСумма;

  • для текстового поля — txtРазмен.

  • для текстового поля установите значение свойства MultiLineTrue и значение свойства ScrollBars2(Vertical).

3. Все остальные свойства, определяющие внешний вид проекта, установите по собственному желанию.

4. Проанализируйте, а затем наберите программный код проекта:

Private Sub cmdРазмен_Click()

Dim k As String, r As Integer, d As Integer, p As Integer, n As Integer

txtРазмен = ""

k = InputBox("Введіть суму грошей, яку бажаєте розміняти", "Розмін")

n = Val(k)

lblСумма.Caption = "Ваша сума " + Str(n) + " грн."

For r = 0 To n 'r — можлива кількість купюр по 1 грн.

For d = 0 To n / 2 'd — можлива кількість купюр по 2 грн.

For p = 0 To n / 5 'p — можлива кількість купюр по 5 грн.

If 1 * r + 2 * d + 5 * p = n Then 'Якщо сума грошей з купюр по 1, 2, 5 грн. дорівнює сумі,

яку треба розміняти, то цей варіант розміну друкується в текстовому полі

txtРазмен.Text = txtРазмен.Text + (Str(r) + " x 1 грн " + Str(d) + " x 2 грн " + Str(p) + " x 5 грн ") + Chr(13)

End If

Next p

Next d

Next r

End Sub

  1. Сохраните проект с именем Лр9_Зад6_Фамилия

  2. Запустите проект. Проанализируйте результат.

ЗАВДАННЯ 9.7. ОПРЕДЕЛИТЬ, СКОЛЬКО СУЩЕСТВУЕТ ВАРИАНТОВ РАЗМЕНА СУММЫ 3 РУБ. 20 КОП., ЕСЛИ У ВАС ИМЕЮТСЯ МОНЕТЫ ДОСТОИНСТВОМ 2 РУБ., 1 РУБ., 50 КОП., 10 КОП.

Завдання на самостійну роботу(в,вс,лс)

ЗАВДАННЯ 9.8 ВЫВЕСТИ НА ФОРМУ СЛЕДУЮЩУЮ ИНФОРМАЦИЮ:

1

12

123

1234

12345

123456

ЗАВДАННЯ 9.9. СОСТАВИТЬ ПРОГРАММУ, ПОЗВОЛЯЮЩУЮ РАСПЕЧАТАТЬ ПРОСТЫЕ НАТУРАЛЬНЫЕ ЧИСЛА В ДИАПАЗОНЕ ОТ 1 ДО 100.

ЗАВДАННЯ 9.10. ЕСЛИ ТРЕХЗНАЧНОЕ ЧИСЛО РАВНО СУММЕ КУБОВ ЧИСЕЛ, ОБРАЗУЮЩИХ ЭТО ЧИСЛО, ТО ТАКОЕ ЧИСЛО НАЗЫВАЕТСЯ "МАГИЧЕСКИМ". НАЙТИ ВСЕ МАГИЧЕСКИЕ ЧИСЛА.

Лабораторна робота №10. Проектування додатків vb6, у яких дані організовані у вигляді одновимірних масивів. Заняття 1.

Засоби заповнення та обробки одновимірних масивів

При составлении программ важно правильно организовать не только действия, но и структуру данных, которые программа обрабатывает. Visual Basic различает три вида структур данных: массивы, структуры и коллекции. Наиболее распространенный способ организации данных – табличный.

Различаются линейные и прямоугольные таблицы. В программировании понятию таблицы соответствует понятие массива.

Массив – упорядоченная последовательность однотипных величин, имеющих общее имя.

Линейной таблице соответствует одномерный массив.

Прямоугольной таблице соответствует двумерный массив.

До сих пор мы рассматривали только простые переменные. Имени переменной соответствовала одна ячейка памяти.

Структуры данных это объединение под одним именем нескольких ячеек памяти. Массив – одна из таких структур в Visual Basic.

Пример одномерного массива:

i

1

2

3

4

5

6

7

8

9

10

11

Fam

Петров

Иванов

Сидоров

Котов

Кротов

Андреев

Титов

Львов

Смирнов

Лунин

Мамин

Под общим именем Fam объединено 11 ячеек памяти, содержащих однотипные строковые величины – фамилии. i – индекс (номер) элемента в массиве. При обращении к элементу массива указывается имя массива и в скобках его индекс.

Fam (2) = «Иванов»

Fam (7) = «Титов»

Прежде чем использовать массив, его необходимо объявить. При объявлении массива Visual Basic выделяет под него место в памяти. Массивы в программе объявляются точно так же, как объявляются обычные скалярные переменные. Если массив объявлен локальным, его можно использовать только в той процедуре, в которой он объявлен. Если массив объявлен как глобальный в стандартном модуле, он может быть использован в любом месте в программе.

При объявлении массива в оператор объявления необходимо включить следующую информацию:

Информация, помещаемая в оператор объявления массива

Описание

Имя массива

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

Тип данных

Тип данных, который будет использоваться для элементов массива.

Размерность

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

Размер

Количество элементов, которые будут содержаться в массиве. Номера элементов в массиве соответствуют их индексам. По умолчанию первый элемент массива имеет индекс 0 (ноль).

Массивы, приведенные в качестве примеров, могут быть описаны следующим образом:

Public Fam (1 To 11) As String

Dim B(1 To 4,1 To 3) As Single

В первом случае объявлен одномерный массив из 11 элементов с индексами от 1 до 11; имя массива – Fam; тип данных – String ; массив объявлен как глобальный. Во втором случае объявлен двумерный массив из 12 (4*3) элементов; имя массива – В; тип данных – Single; массив объявлен как локальный. Часто минимальное значение индекса не указывается. Тогда оно автоматически (по умолчанию) принимается равным 0. Ключевое слово To при этом не используется. Максимальное значение индекса должно быть указано обязательно.

Поместив в стандартный модуль оператор Option Base 1 можно сделать программу более удобной для восприятия, заменив индекс первого элемента каждого массива на 1 вместо 0. Допускаются отрицательные значения индексов.

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

Динамический массив создается в такой последовательности:

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

Dim Count () As Integer

2) с помощью оператора ReDim указывается размерность массива в виде числа или выражения. Синтаксис оператора ReDim аналогичен синтаксису оператора объявления массива фиксированного размера. Например, размерность массива может быть задана любым из следующих способов:

ReDim Count (х)

ReDim Count (20)

ReDim Count (l То 20)

При выполнении оператора ReDim данные, размещенные в массиве ранее, теряются. Это удобно в том случае, если данные больше не нужны и требуется переопределить размерность массива и подготовить его для размещения новых данных. Если хотите изменить размер массива, не потеряв при этом данных, необходимо воспользоваться оператором ReDim с ключевым словом Preserve.

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

ReDim Preserve Count (х + 1)

Окно списка и Комбинированное окно

Окно списка (ListBox ) (см Л.Р.8 Завд. 8.6) позволяет хранить не одно значение, а список значений. Список значений – это упорядоченное множество. Элементы списка имеют индекс. Минимальный индекс равен 0. Значения в списке имеют тип String. Важным свойством объекта является свойство ListIndex. После того как пользователь щелкнет на пункте списка, свойство ListIndex возвращает число, которое соответствует позиции пункта в списке, т.е. индексу.

Комбинированное окно (ComboBox ) (см Л.Р.8 Завд. 8.6) представляет собой объединение двух полей окна списка и текстового поля. Комбинированное окно аналогично Окну списка, но занимает меньше места. Окно имеет свойство Style. Значение свойства 0 делает список невидимым (его можно увидеть, щелкнув по кнопке раскрытия списка). Свойство ListIndex аналогично этому же свойству Окна списков.

ЗАВДАННЯ 10.1. Постановка задачи: ВЫПОЛНИТЕ ПРОЕКТ, ПОЗВОЛЯЮЩИЙ ЗАПОЛНЯТЬ МАССИВ ДВУМЯ СПОСОБАМИ:

1 - СЛУЧАЙНЫМИ ЦЕЛЫМИ ЧИСЛАМИ В ДИАПАЗОНЕ ОТ 0 ДО100;

2 - ПУТЕМ ВВОДА ЧИСЕЛ С КЛАВИАТУРЫ (НЕ ОБЯЗАТЕЛЬНО ЦЕЛЫХ).

После того как будет сформирован графический интерфейс пользователя, форма должна выглядеть следующим образом (рис.10.1):

Порядок действий

1. Расположите элементы управления на экранной форме в соответствии с рисунком. Для выбора способа заполнения массива использовать комбинированное окно ComboBox.

2. Значения свойств элементов управления, которые определяют внешний вид приложения установите по своему усмотрению.

3. Значения свойств Caption меток, кнопок и рамок установите в соответствии с рис 10.1.

4. Установите значения свойств объектов в соответствии со следующей таблицей:

Табл. 10.1

Объект

Свойство

Значение свойства

Форма

Name

Caption

frmМассив

Способы заполнения массива

Текстовое окно

Name

txtN

Текстовое окно

Name

txtМассив

Текстовое окно

Name

txtMax

Текстовое окно

Name

txtnMax

Командная кнопка

Name

cmdМассив

Командная кнопка

Name

cmdMax

Комбинированное окно

Name

cboСпособ

Text

Выберите способ заполнения массива

Style

0

List

Список должен содержать два способа заполнения:

-ввод с клавиатуры

-случайными числами

5. Подробно разберите программный код, написанный для заполнения массива разными способами, а затем наберите его:

Option Explicit

Dim a() As Single ‘Массив объявлен как динамический, количество элементов в нем может быть различным

Dim i As Integer

Dim n As Integer

Dim K As String

Dim Max As Single, nMax As Integer

Dim ListIndex As Integer

Private Sub cmdМассив_Click()

n = Val(txtN.Text)’Введено количество элементов в массиве

ReDim a(1 To n) ’Переопределение массива. Количество элементов в массиве – n.

Select Case cboСпособ.ListIndex

Case 0

txtМассив.Text = ""

For i = 1 To n

K = InputBox("Введите число" + Str(i) + " число", "Заполнение массива")

a(i) = Val(K)

txtМассив.Text = txtМассив.Text + " " + Str(a(i))

Next i

Case 1

txtМассив.Text = ""

Randomize Timer

For i = 1 To n

a(i) = Int(100 * Rnd())

txtМассив.Text = txtМассив.Text + " " + Str(a(i))

Next i

End Select

End Sub

7. Проверьте, что заполнение массива обоими способами происходит нормально.

ЗАВДАННЯ 10.2. Постановка задачи: ВЫПОЛНИТЕ ПРОЕКТ, ПОЗВОЛЯЮЩИЙ НАХОДИТЬ МАКСИМАЛЬНЫЙ ЭЛЕМЕНТ МАССИВА (ЗАПОЛНЕННОГО В ЗАВДАННІ 10.1) И ЕГО НОМЕР.

8. Предварительно ознакомьтесь с алгоритмом поиска максимального элемента.

Алгоритм поиска максимального (минимального) элемента в массиве:

Дано: N — количество элементов в массиве А; А(1: N) — N элементов массива А.

Вычислить: наибольший элемент Мах в массиве А и его номер nМах.

Принцип поиска заключается в сравнении каждого элемента массива со значением в Мах и запоминанием в нем элемента, который оказался больше значения Мах. Для корректного первого сравнения в качестве начального значения Мах можно использовать первый элемент массива, тогда сравнения в цикле целесообразно начинать с i = 2. При поиске максимального значения среди элементов массива, удовлетворяющих не которому условию, например, только среди отрицательных элементов, нельзя в качестве Мах использовать первый элемент массива, так как А(l) может не быть отрительным. В этом случае в качестве начального значения Мах можно использовать очень маленькое число (-1. Е38 — для массива вещественных чисел и -32768 – для целочисленного массива). Как только встретится отрицательный элемент массива, больший Мах, значение Мах будет заменено на этот элемент. Если Мах останетсн неизменным, это значит, что в массиве нет элементов, удовлетворяющих заданному условию (отрицательных).

Для поиска минимального элемента среди элементов массива, в качестве начального значения Min нужно использовать большое положительное число (l.E38 — для массива вещественных чисел, 32761 — для целочисленного массива).

9. Проанализируйте приведенный программный код поиска максимально элемента в массиве.

10. Наберите процедуру поиска максимального элемента.

Private Sub CmdMax_Click()

FrmМассив.Caption = " Пошук максимального елемента"

max = a(1): nmax = 1

For i = 2 To n

If a(i) > max Then

max = a(i)

nmax = i

End If

Next i

MsgBox "максимум " + Str(max), 0 + 64, "максимум"

TxtMax.Text = Str(max)

Txtnmax.Text = Str(nmax)

End Sub

11. Проверьте правильность работы проекта и сохраните его под именем Лр10_Зад2_Фамилия