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

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

ЗАВДАННЯ 8.4

Постановка задачи СОСТАВИТЬ ПРОГРАММУ, КОТОРАЯ ОПРЕДЕЛЯЕТ СРЕДНЕЕ АРИФМЕТИЧЕСКОЕ ВВЕДЕННЫХ ЧИСЕЛ. КОЛИЧЕСТВО ЧИСЕЛ И САМИ ЧИСЛА ВВОДЯТСЯ С ПОМОЩЬЮ ОКНА INPUTBOX. Как работает приложение, можно понять из рис. 8.3.

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

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

Рис.8.3

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

  • для формы —frmЦикл;

  • для кнопки — cmdЦикл;

  • для первого текстового поля — txtЧисла;

  • для второго текстового поля — txtСреднее;

  • для первого текстового поля установите значение свойства MultiLine —True и значение свойства ScrollBars —2 (Vertical).

Свойство MultiLine, равное True, для текстового поля с именем txtЧисла указывает на то, что текст данного поля разбит на строки, между которыми стоят символы перехода на новую строку и возврата к левому краю текста (коды ASCII этих символов 13 и 10).

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

3. Составьте программный код проекта:

Private Sub CmdЦикл_Click()

Dim N As Integer, i As Integer 'Количество чисел, счетчик цикла

Dim sum As Single, sr As Single 'Сумма, среднее значение

Dim P As String, К As String

txtЧисла.Text ="": txtСреднее.Text = ""

P = InputBox ("Сколько чисел?", "Количество чисел")

N = Val(P) 'Количество чисел

sum = 0 'Начальное значение суммы

For i = 1 To N

K = InputBox("Введите" + Str(i) + "число и нажмите кнопку ОК", _

"Ввод очередного числа")

txtЧисла.Text = txtЧисла.Text + К + Chr(13) + Chr(10)

'Добавление чисел в текстовое поле

sum = sum + Val(K) 'Накопление суммы

Next i

sr = sum / N 'Вычисление среднего

txtСреднее.Text = Str(sr)

End Sub

4. Сохраните проект под именем Лр8_Зад4_Фамилия.

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

6. Измените программу так, чтобы выполнялся подсчет среднего арифметического только отрицательных чисел. (Внимание! Программа должна корректно работать при отсутствии отрицательных чисел.)

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

8. Сохраните изменения в проекте.

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

Оператор циклов с условием Do … Loop При программировании циклов далеко не всегда известно количество повторов. В этих случаях используют циклы с условием, которые в Visual Basic могут быть реализованы с помощью 4-х конструкций оператора Do … Loop

Проверка условия в начале цикла

Проверка условия в конце цикла

D o W h i l e < условие >

<тело цикла >

[ E x i t D o ]

L o o p

<тело цикла> выполняется, если <условие> истинно, иначе осуществляется переход на оператор, расположенный после Loop. Если первая проверка <условия> даст результат – ложь, то цикл не выполнится ни разу.

D o

< тело цикла>

[ E x i t D o ]

L o o p W h i l e < условие>

<тело цикла> выполняется до тех пор, пока

<условие> истинно, иначе выполнение цикла заканчивается. Но хотя бы один раз цикл выполнится в любом случае.

D o U n t i l e < условие>

<тело цикла >

[ Ex it D o ]

L o o p

<тело цикла> выполняется, если <условие> ложно, иначе осуществляется переход на оператор, расположенный после Lo op. Если первая проверка <условия> даст результат – истина, то цикл не выполнится ни разу.

D o

< тело цикла>

[ Ex it D o ]

L o o p U n t i l e < условие>

<тело цикла> выполняется до тех пор, пока

<условие> ложно, иначе выполнение цикла

заканчивается. Но хотя бы один раз цикл выполнится в любом случае.

ЗАВДАННЯ 8.5.

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

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

  1. Расположите на форме две командные кнопки, пять текстовых полей и метки к ним в соответствии с рис. 8.4.

Рис. 8.4

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

Таблица 8.3

Объект

Свойство

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

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

Name

Textogr, Textk, Textr, Texta

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

Name

MultiLine

Texty

True

Метки

Caption

в соответствии с рис. 8.1.

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

Name

Caption

Command1

Розрахунок

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

Name

Caption

Command2

Вихід

  1. Разберите программный код, а затем наберите его:

Dim r, k, y, ogr, vr

Dim i As Integer

Private Sub Command1_Click()

ogr = Val(Textogr.Text)

k = Val(Textk.Text)

a = Val(Texta.Text)

r = Val(Textr.Text)

TextY.Text = ""

y = r + (3 * k) / (6 * a ^ 2)

TextY.Text = Str(r) + "+" + Str((3 * k) / (6 * a ^ 2)) + "+"

i = 2

Do

vr = ((-1) ^ (i + 1)) * (k / (a ^ (2 * i)))

If Abs(vr) <= ogr Then Exit Do

y = y + vr

TextY.Text = TextY.Text + ")+(" + Str(vr)

i = i + 1

Loop

Print “y=”; y

End Sub

Private Sub Command2_Click()

End

End Sub

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

  2. Изменяя поочередно исходные данные и ограничитель получите результат и проанализируйте его.

  3. Внесите в знаменатель расчет вакториала

  4. Проанализируйте результат.

  5. Сохраните проект и форму в папке ЛАБ8 с именами Лр8_Зад5_Фамилия.

Спеціальні завдання

ЗАВДАННЯ 8.6

Постановка задачи У ПРОЕКТІ ПЕРЕДБАЧИТИ МОЖЛИВІСТЬ РОЗРАХУНКУ СЕРЕДНЬОЇ КІЛЬКОСТІ ЛОКОМОТИВІВ У РЕМОНТІ ЗА ЗАДАНИЙ ПЕРІОД.

Вихідні дані: Місяць року для якого треба одержати результат та загальна кількість локомотивів.

Результат. Вивести на формі загальну кількість локомотивів, кількість локомотивів, які експлуатуються, резерв і кількість локомотивів у ремонті. Результати розрахунків записати у файл. Обчислити середню кількість локомотивів у ремонті за заданий період — один або декілька місяців поточного року.

Обов'язкові умови. Введення, розрахунки і виведення даних повинні здійснюватися при натисканні відповідних кнопок. Середню кількість локомотивів у ремонті за заданий період вивести на окремій формі.

Порядок виконання роботи:

  1. Увійдіть в середовище Visual Basic. Відкрийте збережений проект Лр7_Зад3_P_Прізвище.

  2. Змініть проект згідно рис. 8.5

2.1. Використайте вже створені об'єкти форм FrmIshDan і FrmRez.

2.2. Додайте об'єкт CommandButton. Для нього встановіть властивість CaptionВибір місяця, властивість NameCmdМісяць.

2.3. Додайте об'єкт ComboBox (список, що розкривається). Змініть властивість Name об’єкта ComboBox на Combo_month.

Щоб розмістити значення в списку під час розроблення, виконайте такі дії:

  • Виділіть властивість List (Список).

  • У правому стовпці властивості з'явиться кнопка, що містить направлену вниз стрілку. Натисніть цю кнопку. Відкриється список, що дозволяє вводити значення.

  • Введіть перше значення списку(січень).

  • Для переходу на новий рядок списку натисніть комбінацію клавіш <Ctrl>+<Enter>.

  • Введіть наступне значення списку.

Щоб при появі форми на екрані в списку за попереднім визначенням було виділене певне значення, використовується властивість ListIndex, яка доступна тільки під час виконання.

Пояснення. У полі списку відображуватиметься перший елемент списку (січень). Якщо для списку, що розкривається, не встановлене використовуване за попереднім визначенням значення, то при появі його на екрані в полі, призначеному для введення значення списку, відображається текст Combol, що задається властивістю Text і що є ім'ям об'єкта. Якщо ви хочете, щоб це поле при появі списку на екрані було порожнім або містило заданий вами текст, виділіть властивість Text і в правому стовпці видаліть інформацію, залишивши поле порожнім, або введіть необхідний текст.

Рис. 8.5. Зовнішній вигляд форми (FrmIshDan)

3. Змініть код проекту згідно з приведеним нижче:

Dim a As Single

Private Sub Cmd_Расчет_Click()

TxtAll.Text = InputBox("введіть загальну кількість локомотивів", _

"введення загальної кількості локомотивів", "", 2000, 2000)

If Combo_month.ListIndex <= 3 Or Combo_month.ListIndex >= 9 And Combo_month.ListIndex <= 11 Then

TxtExpluat.Text = 40 * TxtAll.Text \ 100

TxtRezerv.Text = 10 * TxtAll.Text \ 100

TxtRemont.Text = TxtAll.Text - TxtExpluat.Text - TxtRezerv.Text

Else

TxtExpluat.Text = 1.5 * 40 * TxtAll.Text \ 100

TxtRezerv.Text = 10 * TxtAll.Text \ 100

TxtRemont.Text = TxtAll.Text - TxtExpluat.Text - TxtRezerv.Text

End If

a = TxtRemont.Text

Open "dan.txt" For Append As #1

Write #1, a

Close #1

FrmRez.Visible = True

FrmRez.Cmd_Среднее.SetFocus

End Sub

Private Sub Cmd_Выход_Click()

Kill ("dan.txt")

End

End Sub

Private Sub Cmd_Месяц_Click()

MsgBox "Виберіть місяць зі списку та натисніть Розрахунок "

Combo_month.SetFocus

End Sub

Private Sub Form_Load()

Combo_month.ListIndex = 0

End Sub

Private Sub TxtAll_LostFocus()

If Not IsNumeric(TxtAll) Then

MsgBox "Невірне значення: не цифра"

TxtAll.SetFocus

End If

End Sub

  1. Спроектуйте форму FrmRez згідно з рис.8.6.

Рис. 8.6. Зовнішній вигляд форми (Frmrez)

  1. Додайте такий код для елементів цієї форми:

Dim k As Single

Dim s As Single

Dim a As Single

Private Sub Cmd_Середнє_Click()

Open "dan.txt" For Input As #1

k = 0

s = 0

Do

Input #1, a

s = s + a

k = k + 1

Loop While Not EOF(1)

Close #1

Text1.Visible = True

Text1.Text = s \ k

End Sub

Private Sub Cmd_Продовження_Click()

frmIshDan.TxtExpluat.Text = ""

frmIshDan.TxtRezerv.Text = ""

frmIshDan.TxtRemont.Text = ""

frmIshDan.TxtAll.Text = ""

MsgBox "Виберіть місяць зі списку та натисніть Розрахунок "

frmIshDan.Combo_month.SetFocus

End Sub

6. Запустіть проект на виконання:

6.1. На основній формі FrmIshDan натисніть кнопку Вибір місяця. У віконці, що з’явилося, натисніть OK.

6.2. Оберіть зі списку місяць.

6.3. Натисніть кнопку Розрахунок.

6.4. Введіть за допомогою вікна, що з’явилося, загальну кількість локомотивів, натисніть OK.

6.5. В вікні Результати натисніть кнопку Розрахунок середньої кількості в ремонті.

6.6. Отримавши в цьому вікні значення, Ви або натискаєти кнопку Продовження та повторюєте п.п.6.2-6.5, або натискаєте кнопку Вихід на основній формі FrmIshDan.

7. Перевірте роботу програми з різними наборами даних.

8. Збережіть проект та форми в папці ЛАБ8 з іменами Лр8_Зад6_P_Прізвище, Лр8_Зад6_F1_ Прізвище та Лр8_Зад6_F2_ Прізвище.