Лабораторная работа №4. Циклический алгоритм цикл с параметром

  • doc
  • 07.05.2020
Публикация на сайте для учителей

Публикация педагогических разработок

Бесплатное участие. Свидетельство автора сразу.
Мгновенные 10 документов в портфолио.

Иконка файла материала 81. Лабораторная работа №4. Циклический алгоритм цикл с параметром.doc

Лабораторная работа №4. Циклический алгоритм: цикл с параметром

 

Предварительные сведения:

 

Цикл с параметром выполняет последовательность команд определенное, заранее известное число раз. Эту конструкцию называют также циклом For...Next, а выполняемые ею программные коды - телом цикла.

 

Синтаксис конструкции For...Next следующий:

 

For счетчик = начЗначение То конЗначение [Step шаг]

 

Группа команд (тело цикла)

 

Next[счетчик]

 

Пример 1

 

Ввести с клавиатуры произвольное целое число n и вычислить его факториал: n!

 

N!=1*2*3*…*n

 

Выполнение:

 

1 Создайте форму следующим образом (рис. 16):

 

1.1 Поместите  на форму метку: элемент Label с панели Toolbox. Измените значение свойства Caption с “Label1” на название задания: Циклический алгоритм.

 

1.2 Поместите на форму (с помощью мыши) поле TextBox для ввода входных значений (значение поля ввода оставьте пустым!).

 

1.3 Слева от поля поместите надпись (с помощью инструмента Label), поясняющую, значение какой из переменных вводится в данное поле TextBox. Например: Введите n, или n =.

 

1.4 Поместите на форму кнопку CommandButton1 с панели Toolbox.

 

1.5 Измените название кнопки Caption на Вычислить n!.  С помощью мыши задайте свой размер кнопки.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Рис. 16. Форма для примера 1 лабораторной работы № 4

 

 

1.6 Двойным щелчком по кнопке CommandButton1 откройте окно редактирования кода программы.

 

2 Алгоритм, реализующий вычисление факториала, имеет вид:

 

Private Sub CommandButton1_Click()

 

Dim n As Integer  'описание входной переменной

Dim fact As Double  'описание выходной переменной

n = Val(TextBox1.Text) 'присваивание значения переменной n

fact = 1 'присваивание начального значения результату

 

'цикл со счетчиком

 

For i = 1 To n  'оператор начала цикла

 

    fact = fact * i 'тело цикла (вычисление факториала)

 

Next i 'оператор конца цикла

 

MsgBox("n!=" & fact) 'выдача результата в отдельное окно

 

End Sub

 

 

! Обратите внимание:

Входным переменным необходимо присвоить значения, которые пользователь ввел в поля ввода.

Это делается командой присваивания, обозначаемой знаком равенства: «=».

Значение, которое занесено в поле ввода с клавиатуры, хранится в свойстве text.

Код для присваивания входных значений переменным следующий:

 

n = Val(TextBox1.Text)

 

Функция val() преобразует символьную переменную в числовую.

 

Результат работы программы приведен на рис. 17.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Рис. 17. Результат работы программы для примера 1

лабораторной работы № 4

 

 

Пример 2

 

Найти среднее арифметическое четных чисел из N чисел, вводимых с клавиатуры.

 

Предварительные сведения

 

Среднее арифметическое - это значение суммы чисел, деленной на их количество. Поэтому для решения задачи потребуются переменные для накопления суммы и количества четных чисел. Пусть это будут переменные S и K. Основу алгоритма составит цикл:

 

1 Ввести число;

2 Проверить, если оно четное, то

            2.1 добавить его к сумме S;

            2.2 увеличить счетчик четных чисел K на 1.

 

Эти операторы надо повторить N раз. На выходе из цикла сумма четных чисел и их количество будут посчитаны, останется только разделить S на K и запомнить результат. Для хранения результата возьмем, например, переменную R.

Выполнение:

 

1 Форма имеет следующий вид (рис. 18).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Рис. 18. Окно формы для примера 2 лабораторной работы № 4

 

 

2 Блок-схема алгоритма этой задачи выглядит следующим образом:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


3 Алгоритм, реализующий вычисление среднего арифметического:

 

Private Sub CommandButton1_Click()

Dim n  As Integer, x  As Integer, K  As Integer, S As Integer

Dim R As Single

n = Val(TextBox1.Text)

S = 0

K = 0

For i = 1 To n

    x = InputBox("Введите число")

    If x Mod 2 = 0 Then

        S = S + x

        K = K + 1

    End If

Next

R = S / K

MsgBox("Среднее арифметическое равно" & R)

End Sub

 

Обратите внимание, что переменные S и K предварительно обнуляются («чистятся»), причем до начала цикла. «Чистку» необходимо делать, так как при переводе программы на машинный язык под переменные отводится память, в которой может что-нибудь уже находиться, какая-либо старая информация. Если убрать оператор S=0, то в последующем присваивании S=S+x при вычислении правой части к значению х будет добавлено неизвестное значение S, и результат будет неверный.

 

 

Пример 3

 

Ввести с клавиатуры N чисел. Найти сумму тех из них, которые принадлежат интервалу (3; 17).

 

Выполнение:

 

1 Помимо знакомых нам элементов Label и TextBox, экранная форма, созданная для решения этой задачи, имеет также элемент ListBox (список), который применяется для хранения списка значений. В нашем случае в нем будут находиться вводимые с клавиатуры числа.

На панели элементов он находится, как правило, в правом верхнем углу (рис. 19).

 

 

 

 

 

 

 

 

 

 

 

 


Рис. 19. Элемент ListBox

 

Для заполнения этого элемента данными используется команда:

 

  ListBox1.AddItem (<строка>),

 

<строка> представляет собой выражение, которое будет выводиться в следующей по счету строке, начиная с первой.

То есть каждая такая команда добавляет в список очередной элемент. В нашем случае элементами списка служат строки матрицы.

Экранная форма будет иметь следующий вид (рис. 20):

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Рис. 20. Окно формы для примера 3 лабораторной работы № 4

 

 

2 Блок-схема алгоритма этой задачи выглядит следующим образом:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


3 Подпрограмма имеет вид:

 

Private Sub CommandButton1_Click()

 

Dim n As Integer, x As Single, S As Single

 

n = Val(TextBox1.Text)

S = 0

 

For i = 1 To n

    x = InputBox("Введите число х")

    ListBox1.AddItem (Str(x))

                   If x > 3 And x < 17 Then

                             S = S + x

                   End If

Next

 

MsgBox ("S=" & S)

 

End Sub

 

 

4 Результат работы программы приведен на рис. 21.

 

Рис. 21. Результат работы программы для примера 3 лабораторной работы № 4

 

 

Пример 4

 

Вывести на печать отрицательные значения функции  для х, изменяющегося на отрезке [–8; 20] с шагом 1.

 

Выполнение:

 

1 В этой задаче указаны начальное и конечное значения переменной х, а также шаг его изменения. Поэтому в данном случае х может выступать в качестве параметра цикла. Программный код имеет вид:

 

Private Sub CommandButton1_Click()

 

Dim z As Single, x As Integer

 

For x = -8 To 20

    z = Sin(7 - x) / Cos(x + 2)

        If z < 0 Then

            ListBox1.AddItem (Str(z))

        End If

Next

 

End Sub

2 Форма для данной задачи и результат ее решения приведены на рис. 22, рис. 23.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Рис. 22. Окно формы для примера 4 лабораторной работы № 4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 23. Результат работы программы для примера 4

лабораторной работы № 4

3 Блок-схема для рассматриваемой задачи выглядит так:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Варианты

 

1           Найти среднее арифметическое нечетных чисел, введенных с клавиатуры. Всего ввести N различных чисел.

 

2           Найти сумму отрицательных значений функции  для x, изменяющегося на отрезке [–5; 12] с шагом 1.

 

3           Найти среднее арифметическое положительных чисел, введенных с клавиатуры. Всего ввести N различных чисел.

 

4           Найти сумму значений функции , больших 2, для x, изменяющегося на отрезке [–3; 8] с шагом 1.

 

5           Ввести с клавиатуры N чисел. Найти сумму тех из них, которые принадлежат интервалу (1; 12) и являются четными.

 

 

6           Вывести на печать значения функции, меньшие 3, , для x, изменяющегося на отрезке [–7; 4] с шагом 1.

 

 

7           Найти количество отрицательных чисел, введенных с клавиатуры. Всего ввести N различных чисел.

 

8           Вывести на печать отрицательные значения функции , для x, изменяющегося на отрезке [7; 25] с шагом 1.

 

9           Ввести с клавиатуры N чисел. Найти сумму тех из них, которые являются положительными и кратными 3.

 

10      Вывести на печать значения функции , находящиеся в интервале (–0,4; 0,8), для x, изменяющегося на отрезке [–1; 15] с шагом 1,4.

 

11      Найти среднее арифметическое чисел, принадлежащих отрезку [2; 18], кратных 4 и введенных с клавиатуры. Всего ввести N различных чисел.

 

12      Найти произведение положительных значений функции  для x, изменяющегося на отрезке [1; 18] с шагом 1,5.

 

13      Найти произведение положительных нечетных чисел, введенных с клавиатуры. Всего ввести N различных чисел.

 

 

14      Найти сумму положительных значений функции  для x, изменяющегося на отрезке [–10; 15] с шагом 1.

 

15      Ввести с клавиатуры N чисел. Напечатать те из них, которые принадлежат интервалу (1; 11) и являются четными.

 

 

16      Найти произведение отрицательных значений функции  для x, изменяющегося на отрезке [–3; 20] с шагом 0,5.

 

17      Ввести с клавиатуры N чисел. Напечатать те из них, которые являются положительными, кратными 7.

 

18      Найти количество значений функции , меньших 3, для x, изменяющегося на отрезке [–5; 25] с шагом 1.

 

19      Ввести с клавиатуры N чисел. Напечатать те из них, которые принадлежат интервалу (2; 9).

 

20      Найти количество отрицательных значений функции  для x, изменяющегося на отрезке [-7; 10] с шагом 0,4.

 

21      Ввести с клавиатуры N чисел. Напечатать те из них, которые не принадлежат интервалу (1; 5).

 

22      Найти сумму значений функции , находящихся в интервале (–0,5; 0,9) для x, изменяющегося на отрезке [9; –5] с шагом –1,5.

 

23      Ввести с клавиатуры N чисел. Найти произведение тех из них, которые не принадлежат интервалу (50; 100) и являются нечетными.

 

24      Вывести на печать значения функции , находящиеся в интервале (–3; 3), для x, изменяющегося на отрезке [10; –15] с шагом ‑0,3.

 

25      Ввести с клавиатуры N чисел. Найти количество тех из них, которые кратны 5 и принадлежат отрезку [3; 15].

 

26      Напечатать значения функции  для x, изменяющегося на отрезке [–4; 14] с шагом 1 (учесть область допустимых значений функции).

 

27      Ввести с клавиатуры N чисел. Найти количество тех из них, которые равны 0.

 

28               Вывести на печать отрицательные значения функции  для x, изменяющегося на отрезке [–6; 13] с шагом 1 (учесть область допустимых значений функции).

 

29      Ввести с клавиатуры N чисел. Найти среднее арифметическое тех из них, которые принадлежат отрезку [8; 30] и являются кратными 3.

 

30      Найти сумму значений функции  для x, изменяющегося от 2 до 13 с шагом 1 (A – произвольное число).