Для закрепления материала разработаем алгоритм решения задачи, используя пользовательские процедуры

Занятие 21

Тема: Процедуры, определенные пользователем

Цели: 1. Научиться создавать процедуры пользователя в объектно-ориентированной среде программирования.

2. Использовать подпрограммы, созданные пользователем в событийных процедурах.

3. Развивать логическое мышление.

Актуализация:

  1. Дайте понятие термину подпрограмма.
  2. Какие бывают подпрограммы?
  3. Чем функция отличается от процедуры?
  4. Локальные и глобальные переменные.

Подпрограмма - это отдельная функционально независимая часть программы.

Подпрограммы решают три важные задачи:

  1. избавляют от необходимости многократно повторять в тексте программы аналогичные фрагменты;
  2. улучшают структуру программы, облегчая ее понимание;
  3. повышают устойчивость к ошибкам программирования и непредвиденным последствиям при модификациях программы.

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

  1. Когда Вы несколько раз перепишете в программе одну и ту же последовательность команд, необходимость введения подпрограммы приобретает характер острой внутренней потребности.
  2. Иногда слишком много мелочей заслоняют главное. Полезно убрать в подпрограмму подробности, скрывающие смысл основной программы.
  3. Полезно разбить длинную программу на составные части - просто как книгу разбивают на главы. При этом основная программа становится похожей на оглавление.
  4. Бывают сложные частные алгоритмы. Полезно отладить их отдельно в небольших тестирующих программах. Включение отлаженных алгоритмов в основную программу будет легким, если они оформлены как подпрограммы.
  5. Все, что Вы сделали хорошо в одной программе, Вам захочется перенести в новые. Для повторного использования таких частей лучше сразу выделять в программе полезные алгоритмы в отдельные подпрограммы.

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

Стандартная подпрограмма (процедура или функция) - подпрограмма, включенная в библиотеку программ, доступ к которой обеспечивается средствами языка программирования. Вызывается подпрограмма по имени с заданием фактических параметров. Типы фактических параметров должны соответствовать типам формальных параметров, указанным при описании данной процедуры в библиотечке процедур и функций.

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

Задача: Даны две двумерные квадратные целочисленные матрицы. Найти средние арифметические значения положительных, отрицательных и всех элементов каждой из матриц. А также максимальный и минимальный элементы и сумму элементов каждой матрицы.

Для закрепления материала разработаем алгоритм решения задачи, используя пользовательские процедуры - student2.ru

Public Class Form1

Dim m1(,), m2(,) As Integer

Dim n1, n2 As Integer

Private Sub inicial(ByVal m(,) As Integer, ByVal n As Integer, ByVal lab As Object)

'инициализация и вывод матрицы

Dim i, j As Integer

lab.text = ""

For i = 1 To n

For j = 1 To n

m(i, j) = Int(Rnd() * 20 - i - Rnd(10) * j * 0.56)

lab.Text = lab.Text + Format(m(i, j), "0 ")

Next

lab.Text = lab.Text + vbCrLf

Next

End Sub

Private Sub sredn_pol(ByVal m(,) As Integer, ByVal n As Integer, ByVal lab As Object)

'среднее арифметическое положительных элементов

Dim i, j, sum, k As Integer

Dim sr As Double

For i = 1 To n

For j = 1 To n

If m(i, j) > 0 Then

sum = sum + m(i, j)

k = k + 1

End If

Next

Next

sr = sum / k

lab.text = Format(sr, " 0.00 ")

End Sub

Private Sub sredn_otr(ByVal m(,) As Integer, ByVal n As Integer, ByVal lab As Object)

'среднее арифметическое отрицательных элементов

Dim i, j, sum, k As Integer

Dim sr As Double

For i = 1 To n

For j = 1 To n

If m(i, j) < 0 Then

sum = sum + m(i, j)

k = k + 1

End If

Next

Next

sr = sum / k

lab.text = Format(sr, " 0.00 ")

End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

'матрица 1

n1 = Int(InputBox("размерность массива", "двумерный массив", "5"))

ReDim m1(0 To n1, 0 To n1)

inicial(m1, n1, Label1)

End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

'матрица 2

n2 = Int(InputBox("размерность массива", "двумерный массив", "4"))

ReDim m2(0 To n2, 0 To n2)

inicial(m2, n2, Label2)

End Sub

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Randomize()

End Sub

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

'среднее арифметич. положительных матрица 1

sredn_pol(m1, n1, Label3)

End Sub

Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click

'среднее арифметич. положительных матрица 2

sredn_pol(m2, n2, Label4)

End Sub

Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click

'среднее арифметич. отрицательных матрица 1

sredn_otr(m1, n1, Label5)

End Sub

Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click

'среднее арифметич. отрицательных матрица 2

sredn_otr(m2, n2, Label6)

End Sub

End Class

Контрольные вопросы:

  1. В каких случаях целесообразно применять процедуры без параметров?
  2. Какие преимущества предоставляют подпрограммы с параметрами?
  3. Каковы правила передачи параметров-переменных?
  4. Можно ли применять в одной подпрограмме несколько параметров-переменных различных типов?

Наши рекомендации