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

4. Составление программного кода

После запуска приложения мы увидим форму (окно), изображенное на рис. 1. Пользователю достаточно ввести первое число, второе число и щелкнуть по одной из кнопок, имеющих названия арифметических операций. После этого должен выполниться код, который будет соответствовать выбранной арифметической операции. После щелчка по кнопке с названием <Конец> форма должна быть закрыта. То есть код обрабатывает событие щелчка (Click) кнопки. Поэтому говорят, что в Visual Basic программирование событийное.

Для работы с программным кодом командной кнопки нуж­но на ней дважды щелкнуть мышью. Например, щелкнем по кнопке <cmdСложение>. После этого появляется окно «Code» (Код).

Блок кода, связанный с частным объектом интерфейса, назы­вается процедурой события Visual Basic. Тело процедуры должно быть заклю­чено между операторами, указывающими на начало и конец порцедуры:

Private Sub cmdСложение_Click начало процедуры

End Sub ‘конец процедуры

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

Разработаем программный код для кнопки <cmdСложение>, а затем для <cmdEnd>.

  1. Наберите следующие программные строки между заголовком и концом процедуры, которые приведены выше:

Private Sub cmdСложение_Click

‘ Объявление переменных sngА и sngВ

Dim sngA As Single, sngB As Single

‘ Присвоение sngА и sngB значения, введенного

‘ в первое и второе текстовые поля

sngA = Val(txtЧисло1.Text)

sngB = Val(txtЧисло2.Text)

‘ Выдача суммы в поле объекта lblРезультат

lblРезультат.Caption = sngA + sngB

‘Выдача вида операции в поле объекта lblОперация

lblОперация.Caption = “СЛОЖЕНИЕ”

End Sub

  1. Для командной кнопки <cmdEnd> введите процедуру, состоящую из одного оператора End:

Private Sub cmdEnd_Click

End ‘ Останов программы и удаление формы с экрана

End Sub

Для запуска программы нажмите клавишу F5.

Для остальных кнопок программный код введите самостоятельно. Для этого можно скопировать код для кнопки Сложение и изменить в нем нужные строки.

Для кнопки Деление введите после строки sngB = Val(txtЧисло2.Text) введите следующий код:

If sngB = 0 Then

MsgBox "Введите Число 2!!", vbCritical + vbOKOnly, "ОШИБКА!!!"

txtЧисло2.SetFocus

Exit Sub

End If

После завершения работы над программой ее нужно сохра­нить в своей папке.

З адание № 4. Программирование вычислительных задач разветвляющейся структуры

Постановка задачи

Вычислить значение функции f = 3k2 – 2p, где

если 2 < x ≤ 6

если x > 6

k =

при трех исходных значениях Х, равных соответственно 1; 4; 7

Анализ задачи

Анализ постановки задачи показывает, что данный вычислительный процесс является разветвляющимся и вычисление величины К выполняется по разным формулам в зависимости от значения Х. Исходные данные – значения Х, промежуточные – К, Р, результирующая – f.

Алгоритм задачи

Алгоритм задачи изображен на рис. 4.1

Обсудим этот алгоритм. Опытный программист сразу обратит внимание на то, что алгоритм составлен не оптимально, а в «лоб». Просто следуем записи постановки задачи. Что видим, то поем, как акын казахских степей. Для инженера или другого специалиста, для которого программирование не основная специальность, надо быстро получить результат. А этот алгоритм, составляемый таким образом, позволяет решать любую задач подобного рода.

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

Разработка

пользовательского

интерфейса

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

Нас должен интересовать интерфейс, связанный с тремя основными блоками: ввода исходных данных, блока вычислений, вывода результатов.

Ввод исходных данных

Ввод исходных данных, т. е. значения Х здесь проще всего осуществлять с помощью одного Текстового поля и одной Надписи с приглашением ввода Х.

Блок вычислений

Все вычисления будут запрограммированы в программе (процедуре). Но для начала вычислений необходимо предусмотреть на форме Кнопку с названием <Вычислить>, которая и будет запускать на выполнение такую процедуру. Еще одна Кнопка с названием <Выход> (или <Конец>) необходимо построить на форме для завершения работы с формой.

Вывод результатов

Одна Надпись (Label) нужна для выдачи заголовка Результаты расчетов. Одна Надпись – для заголовка «К            Р            f» (вместо трех). Вывод результатов K, P, f запрограммируем на три Надписи. Еще одна Надпись нужна для выдачи сообщения «Нет решения» в случаях, когда значение Х > 6. Но это сообщение можно выдавать на ту же Надпись, на которой будет записан заголовок Результаты расчетов. Но в этом случае придется запрограммировать вывод сообщения Нет решения и восстановление заголовка Результаты расчетов в одном и том же элементе управления Надпись Таким образом, всего в этом блоке будет использовано 6 Надписей.

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

Таблица 4.1

Объект

Свойство

Установленное

значение

Label1

Caption

Введите Х:

TextBox1

Text

Пусто (для ввода Х)

(Имя)

txtX

TextAlign

3 – TextAlignRight

TabIndex

0

Label2

Caption

Результаты расчетов

(Имя)

lblЗагол

TextAlign

3 – TextAlignCenter

Label3

Caption

К P f

Label4

Caption

Пусто (для выдачи К)

(Имя)

lblK

TextAlign

3 – TextAlignRight

BorderStyle

1- fmBorderStyleSingle

Label5

Caption

Пусто (для выдачи Р)

(Имя)

lblP

TextAlign

3 – TextAlignRight

BorderStyle

1- fmBorderStyleSingle

Label6

Caption

Пусто (для выдачи f)

(Имя)

lblF

TextAlign

3 – TextAlignRight

BorderStyle

1-fmBorderStyleSingle

CommandButton1

(Имя)

cmdВычислить

Caption

Вычислить

Default

True

CommandButton2

(Имя)

cmdEnd

Caption

Выход

В режиме выполнения этого приложения форма может выглядеть, например, так, как это изображено на рис. 4.2.

Если для командной кнопки установить свойству Default значение True, то при щелчке по клавише Enter всегда будет срабатывать эта кнопка. Если командных кнопок на форме несколько, только для одной кнопки можно назначить свойству Default значение True.

При задании значения 0 (ноль) для свойства TabIndex текстового поля txtX, при запуске программы обеспечивает положение курсора в этом поле.

Написание программного кода

Для события Click кнопки cmdВычислить (<Вычислить>) напишите следующий код:

Private Sub cmdВычислить_Click()

Dim X As Single, k As Single, blnДалее As Boolean

Dim P As Single, f As Single

‘ Переменные р и f можно не вводить, а сразу рассчитать по формулам

‘ их значения и присвоить их этикеткам lblP и lblF

‘ Булевская переменная blnДалее введена вместо переменной В,

‘ которая используется в блок-схеме

X = Val(txtX)

blnДалее = True

If X > 2 And X <= 6 Then

k = (2 * X ^ 2 + Exp(X)) / 2 / X

ElseIf X > 6 Then

k = 3 * X + 4 * (Cos(X)) ^ 2

Else

blnДалее = False

End If

If blnДалее Then

P = (2 * X + k) / k ^ 2

f = 3 * k ^ 2 - 2 * P

lblK.Caption = FormatNumber (k, 4)

‘ ниже не приводим Caption и с помощью функции FormatNumber

‘ выдаем для вещественных чисел 4 знака после запятой

lblP = FormatNumber(P, 4) 'P

lblF = FormatNumber (f, 4) 'f

Else

lblЗагол.ForeColor = &HFF&

lblЗагол.Caption = "Нет решения"

blnДалее = True

End If

End Sub

Поскольку сообщение "Нет решения" выводится красными буквами в надпись lblЗагол, то при вводе нового значения Х следует почистить этикетки lblK, lblP, lblF от прежних результатов и для этикетки lblЗагол восстановить надпись "Результаты расчетов" буквами черного цвета, записываем для события Change (Изменение) текстового поля txtX следующую процедуру:

Private Sub txtX_Change()

‘ чистим три этикетки:

lblK.Caption = ""

lblP.Caption = ""

lblF.Caption = ""

lblЗагол.ForeColor = &H0& ‘восстанавливаем черный цвет текста, затем заголовок

lblЗагол.Caption = "Результаты расчетов"

End Sub

Задача № 4-1. Решение квадратного уравнения

В программе использовать условный оператор If … ElseIf … Else …

Составить программу решения квадратного уравнения Ах2 + Вх + С = 0.

Рассмотрите шесть возможных вариантов:

  • А = В = С = 0, корней бесчисленное множество (х – любое);

  • А = В = 0, С ≠ 0, уравнение не имеет корней;

  • А = 0, В ≠ 0, С ≠ 0, вырожденное квадратное уравнение, име­ется один корень (формулу вычисления корня найдите сами);

  • D < 0, где D – дискриминант, который предварительно на­до вычислить; уравнение не имеет вещественных кор­ней;

  • D = 0, уравнение имеет два одинаковых корня (вывести их значения);

  • D > 0, уравнение имеет два различных вещественных корня (вычислить и вывести их значения).

Соответствующие сообщения вывести на форму вместе с корнями уравнения, если они имеет определенные значения.

Для проверки правильности работы программы предлагает­ся шесть тестовых вариантов исходных данных:

  • А = В = С = 0;

  • А= В = 0, С = 1;

  • А=0, В = 3, С = 6 (должно получиться х = -2);

  • А=5, В=3, С=2;

  • А = 1, В = 2, С = 1 (должно получиться x1= x2 = -1);

  • А = 2, В = 5, С = 2 (должно получиться х1 = -2, х2 = -8).

Задание № 4-2 Страны и их курорты

Используя оператор выбора Select CaseEnd Select разработать проект, позволяющий по названию страны, введенному в текстовое поле, получать список курортов этой страны.

Список 9-ти стран разместить на форме.

При разработке этого проекта использовать следующую таблицу.

Страна

Курорт

Страна

Курорт

Египет

Шарм-Эль-Шейх

Таиланд

о. Самди

Египет

Хургада

Таиланд

Паттайя

Египет

Сафага

ОАЭ

Дубай

Куба

Варадеро

ОАЭ

Шарджа

Куба

Гавана

Италия

Рим

Куба

о. Кайо Санта

Италия

Тоскана

Португалия

о. Мадейра

Италия

Римини и Равенна

Ямайка

Вестморлэнд

Италия

Флоренция

Ямайка

Монтего Бэй

Италия

Лацио

Ямайка

Очо Риос

Италия

Венеция

Турция

Стамбул

Индия

Гоа

Турция

Кемер

Индия

Керала

Турция

Сиде

Турция

Аланья

Турция

Анталия


Задание № 5. Программирование циклического алгоритма (табулирование функций)

Постановка задачи

Вычислить значение функции f = 3k2 – 2p, где

если 2 < x ≤ 6

если x > 6

k =

при значениях Х, изменяющегося от 1 до 11 с шагом 0,5.

Анализ задачи

Анализ постановки задачи показывает, что данный вычислительный процесс является циклическим и значение Х изменяется от начального значения Хn до конечного Хk с шагом DХ.

Переменные: X, Xn, Xk, dX. Rez, k, p, f, blnДалее.

Исходные данные: Xn, Xk, dX.

Схема алгоритма задачи

Разработка интерфейса

Элементы управления, которые следует построить на форме приведены в табл. 1.

Таблица 1

Объект

Свойство

Установленное значение

Label1

Caption

Введите Хn, Хk, dX:

Text1

Имя

txtXn

TabIndex

0

Text

Пусто (для ввода Хн)

Text2

Имя

txtXk

TabIndex

1

Text

Пусто (для ввода Хк)

Text3

Имя

txtDX

TabIndex

2

Text

Пусто (для ввода dX)

Label2

Caption

Результаты расчетов

ForeColor

Темно-коричневый

Text4

Имя

txtRez

MultiLine

True

Text

Пусто (для ввывода результатов)

Command1

Имя

cmdВычислить

Default

True

Caption

Вычислить

Command2

Имя

cmdEnd

Caption

Выход

Примечание: если задать свойству Default кнопки значение True, то кнопка будет нажата при щелчке по клавише Enter. Назначить значение True свойству Default можно только для одной кнопки!

В ид формы

Коды процедуры

Private Sub cmdВычислить_Click()

Dim Xn As Single, Xk As Single, dX As Single

Dim k As Single, X As Single, blnДалее As Boolean

Dim p As Single, f As Single, rez As String

xn = Val(txtXn.Text): xk = Val(txtXk.Text): dX = Val(txtDX.Text)

txtRez.Text = "" ' чистка текстового поля

‘ в текстовой переменной rez формируем шапку таблицы с результатами:

rez = "X" & vbTab & vbTab & "K" & vbTab & vbTab & "P" & _

vbTab & vbTab & "F" & vbCrLf

For X = Xn To Xk Step dX ‘ начало цикла со счетчиком Х (здесь счетчик – аргумент функции)

‘ Xn – начальное значение параметра Х; Xk – конечное значение параметра Х

‘ dX – шаг изменения Х (Step – шаг)

blnДалее = True

If X > 2 And X <= 6 Then

k = FormatNumber(((2 * X ^ 2 + Exp(X)) / 2 / x), 3)

ElseIf X > 6 Then

k = FormatNumber((3 * 3 + 4 * (Cos(X)) ^ 2), 3)

Else

blnДалее = False

End If

If blnДалее Then

p = FormatNumber(((2 * X + k) / k ^ 2), 3)

f = FormatNumber((3 * k ^ 2 - 2 * p), 3)

rez = rez & FormatNumber(X, 1) & vbTab & vbTab & k & vbTab & vbTab & p & _

vbTab & vbTab & f & vbCrLf

Else

rez = rez & X & vbTab & "Нет решения!" & vbCrLf

End If

Next x ‘ конец цикла

txtRez.Text = rez ‘ вывод таблицы результатов в текстовое окно txtRez

MsgBox rez, vbInformation + vbOkOnly, “Результаты расчетов” ‘ вывод в окно сообщений MsgBox

End Sub