Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
задания_lab_VB-net.doc
Скачиваний:
0
Добавлен:
09.11.2019
Размер:
139.78 Кб
Скачать

Додаток

Завдання до лабораторних робіт

У момент здачі лабораторних робіт студент повинен мати роздруковане завдання

Для всіх лабораторних робіт необхідно знати відповіді на наступні питання.

Що означає і як використовується кожна змінна (ідентифікатор), де вона визначена, якого типу, де задається (змінюється) значення цієї змінної, чи існують синоніми для цієї змінної..

Завдання 1

В таблиці 1 приведені значення коефіцієнтів функції z=f(x,y) двох аргументів. Функція має вигляд :

Z=k1 * (x-k2)2+k3*(x-k2)*sin(x-k2) + k4*(sin(x-k2))2 + k5*(y-6)2 + k7 * (sin (k8*y-k6))2

Значення коефіцієнтів для кожного варіанту перераховані в одному рядку таблиці. Номер варіанту, виконуваний студентом, відповідає його порядковому номеру в журналі.

  1. Необхідно за допомогою процедур подій форми і елементів управління (ЕУ) Command, TextBox, Label написати програму, яка реалізує обчислення значень функції для заданих користувачем програми аргументів. Початковими даними для програми є значення двох аргументів. Результатом значення функції.

  2. В програмі повинен бути реалізований контроль правильності введення цифрових значень вхідних параметрів (неприпустимість введення букв в числові поля).

Цей контроль реалізувати за допомогою двох технологій.(Різні технології для різних полів).

Перша технологія для події KeyPress-

Private Sub Text1_KeyPress(KeyAscii As Integer)

Select Case KeyAscii

Case 0, 8, 46, 13, 48 To 57

Case Else

KeyAscii = 0

End Select

End Sub

Друга технологія для Validate

Private sub Text2_Validate(Cancel as boolean)

On Error goTo M1

A= cdbl(text1.text)

Exit sub

M1:

Msgbox (“Error”)

Cancel =true

End sub

Варіанти кодування для NET

Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress

Dim c0 As Char = "0"

Dim c1 As Char = "1"

Dim c9 As Char = "9"

Select Case e.KeyChar

Case c0, c1 To c9

Case Else

e.KeyChar = Nothing

End Select

End Sub

Друга технологія для Validate

Private Sub TextBox2_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles TextBox2.Validating

On Error GoTo M1

Dim a As Double

a = CDbl(TextBox2.Text)

a = Convert.ToDouble(TextBox2.Text)

Exit Sub

M1:

MsgBox("Error")

e.Cancel = True

End Sub

Інша технологія перехоплення помилок

Private Sub TextBox3_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles TextBox3.Validating

Dim a As Double

Try

a = Nothing

a = CDbl(TextBox3.Text)

a = Convert.ToDouble(TextBox3.Text)

Exit Sub

Catch ex As Exception When a = Nothing

If ex Is Nothing Then

Exit Sub

Else

MsgBox("Error")

e.Cancel = True

End If

End Try

End Sub

Приклад для C#

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

namespace WindowsFormsApplication1

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

private void Form1_Load(object sender, EventArgs e)

{

int n = 2;

switch (n)

{

case 1:

case 2:

case 3:

Console.WriteLine("It's 1, 2, or 3.");

break;

default:

Console.WriteLine("Not sure what it is.");

break;

}

}

private void textBox1_TextChanged(object sender, EventArgs e)

{

}

private void t1_kp(object sender, KeyPressEventArgs e)

/// визначається лише во властивостях

{

char c0 = '0';/// використати не можна

switch (e.KeyChar) {

case '1':

break;

case '2':

goto case '1';

case '9':

default:

e.KeyChar = (char)0;

break;

}

}

private void t2_val(object sender, CancelEventArgs e)

{

double a;

try { a = Convert.ToDouble(textBox2.Text); }

catch { e.Cancel = true; }

}

}

}

  1. Програма повинна не допускати помилкове введення інформації в елементи для висновку результатів (TextBox).

  2. Передбачити різні стилі оформлення елементів (Шрифт, колір фону і тексту).

  3. Форма, в якій реалізовані всі обчислення, повинна містити інформацію про студента, що виконав роботу, і варіанті завдання.

Питання

Які класи містять кодування потрібне для виконання цієї роботи.

Які елементи керування завдання можуть отримувати фокус які ні.

Де і навіщо виконується перехоплення помилок.

Яка з процедур Validate або KeyPress гарантує неможливість вводу літери у поле.

Яка з процедур Validate або KeyPress гарантує правільність перетворення строки у число.

З яких структурних елементів складається проект.

З чого починається виконання програми

Яким є призначення формальних параметрів Cancel KeyAscii.

Які властивості яких елементів керування отримали значення під час проєктування, які під час виконання програми.

Завдання 2

Доповнити форму завдання 1 елементами управління і кодами для реалізації наступних альтернативних обчислень....

Створити елементи управління і написати код, які, додатково до функцій завдання 1, реалізують обчислення або суми значень функції з двома аргументами завдання 1 на деякій безлічі аргументів або середнього арифметичного значень функції на тій же множині аргументів. Безліч аргументів функції задається мінімальним і максимальним значенням аргументу x, у і кроком зміни кожного аргументу shx, shy. Програма повинна здійснити обчислення для всіх поєднань значень аргументів. Повинні бути обчислений і підсумований (або знайдено середнє арифметичне) для значення функції аргументів x+I*shx, y+J*shy, де I і J пробігають всі значення, при яких аргументи залишаються в області допустимих значень. Початковими даними для цієї частини програми є шестірка чисел, які визначають нижню (два числа) і верхню межу (два числа) зміни кожної змінної і крок зміни кожної змінної в заданому діапазоні (два числа).

Форма цього завдання повинна залежно від значення групи елементів управління – перемикачів (OptionButton) реалізувати три варіанти обчислень:

1-обчислення лабораторної роботи 1.

2 – обчислення суми значень функції в заданому оператором діапазоні.

3– обчислення середнього набору значень функцій в заданому оператором діапазоні.

В заданій області кожний з аргументів змінюється з кроком, значення якого може бути задано за допомогою ЕУ SkrollBar. Дискретна зміна параметрів shx, shy, яке задає цей елемент управління також повинне задаватися окремим параметром.

Непотрібні для реалізації даного варіанту обчислень (вибраного за допомогою OptionButton) елементи управління робити невидимими. Наприклад, для реалізації обчислень 1- й лабораторної роботи немає необхідності у вікнах для завдання діапазону і кроку. Ці поля повинні бути прихованими. При кожному виборі режиму обчислень повинні також змінюватися пояснюючі написи.

Використовувати ProgressBar для ілюстрації процесу обчислень.

Під час написання програми можна скористатися прикладом кодування який не відповзає умовам завдання і може бути використаний лише як пояснюючий приклад. Приклад може бути виконаний якщо на формі розмістити дві кнопки та ProgresBar.

Dim pr%, xmin#, xmax#, ymin#, ymax#, stepx#, stepy#

Function f(x, y)

f = 1

End Function

Private Sub Command1_Click()

pr = 0

For x = xmin To xmax Step stepx

ProgressBar1.Value = x

For y = ymin To ymax Step stepy

Sum = Sum + f(x, y)

For z = 1 To 100

DoEvents

If pr = 1 Then If MsgBox("прервать вычисления", vbYesNo) = vbYes Then Exit Sub

pr = 0

Next

Next

Next

End Sub

Private Sub Command2_Click()

pr = 1

End Sub

Private Sub Form_Load()

xmax = 1000

xmin=1

ymin=1

ymax = 100

End Sub

Приклад на NET С#

namespace cWindowsFormsApplication1

{

public partial class Form2 : Form

{

private bool pr;

public Form2()

{

pr = false ;

InitializeComponent();

}

private void timer1_Tick(object sender, EventArgs e)

{

if (vScrollBar1.Value < vScrollBar1.Maximum) { vScrollBar1.Value += 1; }

if (axProgressBar1.Value < axProgressBar1.Max ) {

axProgressBar1.Value = axProgressBar1.Value+10;

}

}

private void button2_Click(object sender, EventArgs e)

{

while (1 < 2)

{

if (pr == true) { return; }

Application.DoEvents();

}

}

private void button1_Click(object sender, EventArgs e)

{

pr = true ;

}

private void load(object sender, EventArgs e)

{

}

private void button3_Click(object sender, EventArgs e)

{

timer1.Start();

}

private void button4_Click(object sender, EventArgs e)

{

this.Dispose();

this.Close();

}

private void button5_Click(object sender, EventArgs e)

{

while (1 < 2)

{

if (pr == true) { return; }

}

}

}

}