Раз-04-Инф-210700 / УчеП-Раз-4-Инф-270100 / Тема-04-05
.pdfпоследовательности по формуле fi= fi-1 + fi-2, а f0 = f1 = 1.
Это задача вычисления чисел Фибоначчи, которые определяются по заданной выше формуле. В данном примере каждый очередной член последовательности зависит от двух предыдущих. Обозначим b=f0, с=f1. Тогда очередной член последовательности a=b+c. Далее операторы b=c и c=a изменяют значения b и c для очередного вычисления a. Таким образом, значение предыдущего члена последовательности присваивается предшествующему ему члену последовательности (b=c), а значение только что вычисленного члена a присваиваем предыдущему (c=a). Начальное значение параметра цикла i=3, так как вычисление начинается с 3-его члена последовательности (f0=f1=1 по условию задачи).
Схема алгоритма и код программы приведены на рис. 4.5.2-11.
Pr45211( ) |
Function Pr45211(n) |
Function Pr45211(ByVal n As Integer)As Integer |
||
|
|
|
Dim a, b, c As |
Integer |
b=1 |
|
|
Dim i As Integer |
|
c=1 |
|
|
b = 1 : c = 1 |
|
|
|
|
For i = 3 Ton |
|
i = 3, n |
|
|
a = b + c |
|
|
|
|
b=c |
|
a=b+c |
|
|
c = a |
|
b=c |
|
|
Next i |
|
c=a |
|
|
Return a |
|
|
|
End Function |
|
|
a=Pr45211 |
|
|
|
|
Конец |
|
|
|
|
Рис. 4.5.2-11 |
|
|
|
|
Процедура – функция Pr45211( ) |
может быть вызвана из любой другой процедуры |
|||
или из модуля формы, например, как показано на рис. 4.5.2-12. |
Dim aa As Integer
Dim nn As Integer
…
nn= vvodInt4(TextBox1) aa = Pr45211(nn) vivodInt4(aa, TextBox2)
Рис. 4.5.1-12
Пример4.5.2-5.Написать процедуру–Function, которая вычисляет значение факториала заданного числа n.
По определению факториал f=n!=1∙ 2 ∙ 3 ∙ … ∙ (n-1) ∙ n (при n≥1) и f=0!=1(при n=0). Таким образом, задача вычисления факториала сводится к задаче вычисления
произведения значений целых чисел, изменяющихся от 1 до n с шагом 1. Накопление произведения будем производить по рекуррентной формуле:
fi = fi-1 ∙ i; i =1,n ; f0 = 1.
Схема алгоритма и код программы приведены на рис. 4.5.2-13
Тема 4.5. Средствапрограммирования регулярных циклическихструктур |
Страница 153 |
Pr45213( ) |
Function Pr45213(n) |
f = 1
i = 2, n
f = f · i
f=Pr45213
Function Pr45213(ByVal n As Integer) As Long |
|
Dim f As Long |
|
Dim i As Integer |
|
f = 1 |
|
For |
i = 2 To n |
Next |
f = f * i |
i |
Return f
End Function
Конец
Рис. 4.5.2-13
Процедура – функция Pr45213( ) может быть вызвана из любой другой процедуры или из модуля формы, например, как показано на рис. 4.5.2-14.
|
Dim |
nn |
As |
Integer |
|
|
Dim |
ff |
As |
Long |
|
|
… |
|
|
|
|
|
nn= vvodInt4(TextBox1) |
|
|||
|
… |
|
|
|
|
|
ff = Pr45213(nn) |
|
|||
|
vivodLngFx7(ff, TextBox2) |
|
|||
Рис. 4.5.2-14 |
|
|
|
Пример 4.5.2-6.Написать процедуру–подпрограмму, которая находит наименьшее значение функции y=c∙e-dx∙sin(2x+5), где c, d – входные параметры, а x изменяется на отрезке [a;b]с шагом h.
Схема алгоритма и код программы приведены на рис. 4.5.2-15.
Алгоритм нахождения наименьшего (наибольшего) значения функции основан на последовательном сравнении очередного значения функции с текущим наименьшим (наибольшим) значением функции. В качестве начального наименьшего значения ymin следует использовать число, близкое к наибольшему числу из диапазона возможных значений того типа данных, который описывает рассматриваемую функцию, чтобы наверняка выполнилось условие y<ymin при первом проходе цикла. То есть, за ymin можно принять число, близкое к наибольшему из диапазона значений данных типа Doublе, т.е
Double.MaxValue.
Соответственно, за начальное значение ymax можно принять число Double.MinValue, то есть число, близкое к наименьшему числу из диапазона значений Double, для того чтобы при первом проходе цикла гарантированно выполнялось условие y>ymax. Для определения значения аргумента xmin (xmax), соответствующего найденному наименьшему (наибольшему) значению функции при каждом переопределении текущего наименьшего (наибольшего) значения функции необходимо одновременно переопределять текущее значение xmin (xmax).
Тема 4.5. Средствапрограммирования регулярных циклическихструктур |
Страница 154 |
Sub Pr45215(ByVal n As Integer, _
ByVal a As Double, _
ByVal c As Double, _
ByVal d As Double, _
ByVal h As Double, _
ByRef xmin As Double, _
ByRef ymin As Double)
Dim i As Integer Dim x, y As Double ymin = Double.MaxValue x=a
For i =1 To n
y =c*Exp(-d*x)*Sin(2*x+5) If y<ymin Then
ymin=y : xmin=x End If
Nextxi=x+h
End Sub
Рис. 4.5.2-15
Процедура – функция Pr45215( ) может быть вызвана из любой другой процедуры или из модуля формы, например, как показано на рис. 4.5.2-16.
Dim nn As Integer
Dim aa, bb, hh, cc, dd, ym, xm As Double aa = vvodDbl2("Введите значение a=",TextBox1) bb = vvodDbl2("Введите значение b=",TextBox2) hh = vvodDbl2("Введите значение h=",TextBox3) cc = vvodDbl2("Введите значение c=",TextBox4) dd = vvodDbl2("Введите значение d=",TextBox5) nn = CInt((bb-aa)/hh)+1
…
Pr45215(nn, aa, cc, dd, hh,xm, ym)
vivodDblFx6(xm, TextBox6) : vivodDblFx6(ym, TextBox7)
Рис. 4.5.2-16
Пример4.5.2-7.Получить таблицу значений функции z(x,y)=x2+y2 в заданных диапазонах значений аргументов x [a;b], y [c;d] , если шаг изменения x равен hx, а
шаг изменения y равен hy.
Схема алгоритма и код программы приведены на рис. 4.5.2-17.
Тема 4.5. Средствапрограммирования регулярных циклическихструктур |
Страница 155 |
Pr45217( ) |
Sub Pr45217(n, m, a, |
Sub Pr45217(ByVal |
n |
As |
Integer, _ |
|||
hx, c, hy) |
|
|
ByVal |
m As |
Integer, _ |
|||
|
|
|
|
ByVal |
a As |
Double, _ |
||
x=a |
|
|
|
ByVal hx As Double, _ |
||||
|
|
|
|
ByVal |
c |
As |
Double, _ |
|
|
|
|
Dim |
ByVal hy As Double) |
||||
i=1, n |
|
|
x, y, z |
As |
Double |
|||
|
|
|
Dim j, i As Integer |
|
|
|||
|
|
|
x = a |
1 To n |
|
|
|
|
y=c |
|
|
For i = |
|
|
|
||
|
|
|
|
y =c |
|
|
|
|
j=1, m |
|
|
|
For |
j = 1 To m |
|
|
|
|
|
|
|
|
z = x^2 + y^2 |
|
||
|
|
|
|
|
vivodDblFx6(x, TextBox7) |
|||
z=x2+y2 |
|
|
|
|
vivodDblFx6(y, TextBox8) |
|||
|
|
|
|
|
vivodDblFx6(z, TextBox9) |
|||
|
|
|
|
Next |
y = y + hy |
|
|
|
Вывод |
|
|
|
j |
|
|
|
|
x, y, z |
|
|
Next |
x = x + hx |
|
|
|
|
|
|
|
i |
|
|
|
|
|
y=y+hy |
|
End |
Sub |
|
|
|
|
|
x=x+hx |
|
|
|
|
|
|
|
|
Конец |
|
|
|
|
|
|
|
|
Рис. 4.5.2-17 |
|
|
|
|
|
|
|
|
Процедура Pr45217( ) может быть вызвана из любой другой процедуры или из модуля формы, например, как показано на рис. 4.5.2-18.
Dim nn, mm As Integer
Dim a, b, hx, c, d, hy As Double
a = vvodDbl2("Введите значение a", TextBox1) b = vvodDbl2("Введите значение b", TextBox2) hx = vvodDbl2("Введите значение hx",TextBox3) c = vvodDbl2("Введите значение c",TextBox4) d = vvodDbl2("Введите значение d",TextBox5) hy = vvodDbl2("Введите значение hy",TextBox6) nn = CInt((b-a )/ hx) + 1
mm = CInt((d-c) / hy) + 1
…
Sub Pr45217(nn, mm, a,hx, c, hy)
Рис. 4.5.2-18
Пример 4.5.2-8.Создать проект, который выводит в текстовое окно значения функции y= x + 5 +cosx3 на отрезке [a;b] с шагом h.
Форма должна содержать три элемента Label для записи подсказок вводимых переменных и три текстовых поля TextBox для ввода значений этих переменных. На форме должно быть также текстовое поле для вывода значений функции и аргумента. Для этого текстового поля необходимо задать свойство MultiLine равное True, а свойство ScrollBars - в значение Vertical для возможности прокрутки текстового поля по вертикали Помимо этого, на форме должна быть кнопка Button1, с которой необходимо связать программный код. Форма должна быть такой, как на рис. 4.5.2-19.
Тема 4.5. Средствапрограммирования регулярных циклическихструктур |
Страница 156 |
Рис. 4.5.2-19
Результаты работы проекта представлены на рис. 4.5.2-20.
Рис. 4.5.2-20
Программный код проекта приведен рис. 4.5.2-21.
|
|
Option Explicit On |
|
|
|
|
Option Strict On |
|
|
|
|
Imports System.Math |
|
|
|
|
Public Class Form1 |
|
|
|
|
Function vvodDbl1(ByVal T As TextBox) As Double |
|
|
|
|
Return Val(T.Text) |
|
|
|
|
End Function |
|
|
|
|
Sub vivodDblFxy8(ByVal x As Double, _ |
|
|
|
|
ByVal y As Double, _ |
|
|
|
|
ByVal T As TextBox) |
|
|
|
|
T.Text = T.Text + Format(x, "0.000 ") + Space(8) + _ |
|
|
|
|
Format(y, "0.000 ") + vbCrLf |
|
|
|
|
End Sub |
|
|
|
|
Sub TabFun(ByVal a As Double, ByVal b As Double, ByVal h As Double) |
|
|
|
|
Dim x As Double, y As Double |
|
|
|
|
Dim i, n AsInteger |
|
|
|
|
x = a |
|
|
|
|
n = CInt(((b - a) / h) + 1) |
|
|
|
|
For i = 1 To n |
|
|
|
|
y = Sqrt(x + 5) + Cos(x ^ 3) |
|
|
|
|
vivodDblFxy8(x, y, TextBox4) |
|
|
|
|
Nextxi= x + h |
|
|
|
|
End Sub |
|
|
Тема 4.5. Средствапрограммирования регулярных циклическихструктур |
Страница 157 |
|
Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click
Dim aa, bb, hh As Double aa = vvodDbl1(TextBox1) bb = vvodDbl1(TextBox2) hh = vvodDbl1(TextBox3) TabFun(aa, bb, hh)
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button2.Click
End End Sub
End Class
Рис. 4.5.2-21
Тема 4.5. Средствапрограммирования регулярных циклическихструктур |
Страница 158 |
4.5.3. Задачи для самостоятельного решения по теме «Программирование алгоритмов регулярных циклических структур»
Решить задачи, приведенные ниже. Предварительно, если необходимо, формализовать их, то есть представить задачу в формальном математическом виде. Затем составить схему алгоритма и написать программный код с использованием процедур.
1)Дано натуральное число n. Вычислить(1+112 ) (1+ 212 ) ... (1+ n12 ) .
2)Дано натуральное число n. Вычислить
|
|
1 |
+ |
1 |
+ |
1 |
|
|
+... + |
|
|
|
|
1 |
|
|
|
|
|
. |
|
|
|
|
|
|
|
|||
|
|
sin1+ sin2 |
sin1+ sin2 + sin3 |
sin1+ sin2 + sin3 +... + sinn |
|
|
|
|
|
|||||||||||||||||||||
3) |
|
sin1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||
Составить алгоритм и программу для вычисления суммы n членов ряда, где n и x- |
|
|
||||||||||||||||||||||||||||
|
заданные натуральные числа 1 |
+ |
|
1 |
+ |
|
1 |
|
+... . |
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
x |
|
x (x +1) |
|
|
x (x +1) (x + 2) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
4) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Дано натуральное число n . Вычислить n корней |
|
|
|
|
|
|
|
|
|
|
|
. |
|
|
|
|
|
|||||||||||||
2 + |
2 + 2 +... + |
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||
2 |
|
|
|
|
|
|||||||||||||||||||||||||
5) Дано натуральное число n , действительное число x . Вычислить 1 |
+ |
|
1 |
+ |
1 |
+... + |
1 |
. |
||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
х |
|
|
|
|
|
х2 |
|
х4 |
|
х2 N |
6)Дано натуральное число n , действительное число x .
Вычислитьх (х −n) (x −2 n) ... (x −n2 ).
7)Дано натуральное число n . Вычислить3 + 6 + 9 +... + 3 (n −1) + 3 n .
8)Дано натуральное число n . Вычислить
|
|
cos1 |
cos1+cos2 |
|
cos1+cos2 +cos3 |
... |
cos1+cos2 +cos3 +...cosN. |
|
|
|
sin1 |
sin1+sin2 |
|
sin1+sin2 +sin3 |
|
sin1+sin2 +sin3 +... +sinN |
|
9) |
|
Дано натуральное число n. Вычислить произведение первых n сомножителей |
||||||
1 |
|
3 |
5 ... |
|
|
|
|
|
2 |
|
4 |
6 |
|
|
|
|
|
10)Дано натуральное число n. Вычислить произведение первых n сомножителей
11 32 35 ....
11)Дано натуральное число n , действительные числа a и x . Вычислить
((…((x+a)2+a)2+…a)2+a)2+a ,
гдеn – число парных скобок.
12) Дано натуральное число n , действительное число x . Вычислить sin x+sin2x+sin3x+…sinnx.
13) Дано натуральное число n , действительное число x . Вычислить sin x+sin x2+sin x3+…+sin xn.
14) Рассчитать 10-ть членов ряда(1+11) * (1+ 21) * (1+ 31) * ....
|
2 |
4 |
6 |
|
x |
18 |
|
||||
15) |
Найти сумму членов ряда |
x |
+ |
x |
+ |
x |
+... + |
|
|
. |
|
3 |
3 |
3 |
|
|
3 |
||||||
|
1 |
2 |
3 |
9 |
|
|
16)Даны действительные числа a, h, натуральное число n. Вычислить
F(a)+2F(a+h)+2F(a+2h)+…+2F(a+(n-1)h)+F(a+nh),гдеF(x)=(x2+1)cos2x.
17) Даны натуральные числа a,b. Получить все простые числа p, |
удовлетворяющие |
неравенствам a ≤ p ≤ b . |
Страница 159 |
Тема 4.5. Средствапрограммирования регулярных циклическихструктур |
18) Даны действительные числа a, b, натуральное число n (b>a). Получить
|
(F1+F2+…+Fn)h, где h=(b-a)/n, F = |
a +(k −1/ 2)h |
, |
k =1, 2, ...,, n. |
||||||||||||||
|
1+(a +(k −1/ 2)h)2 |
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
k |
|
|
||||
19) |
Пусть a |
|
= a =1; |
a |
|
= a |
|
+ k −1, |
k = 2, 3, ... . Найти |
|
произведение a0a1a2 … a44. |
|||||||
20) |
|
0 |
1 |
|
|
|
k |
|
k−2 |
|
k +1 |
|
|
|
|
|
||
Пусть x0 |
= c; x1 = d; |
|
xk = qxk−1 +rxk−2 +b, |
k = 2, 3,... . |
|
|
||||||||||||
Даны действительные q, r, d, c,b, d, натуральное n (n>=2). |
|
Получить xn. |
||||||||||||||||
21) |
Пустьa0=1; ak=k∙ak-1+1/k; k=1, 2, … . Дано натуральное число n. Получить an. |
|||||||||||||||||
|
|
|
N |
1 |
|
|
|
|
|
|
|
N x +coskx |
|
|
|
|||
22) |
Вычислить∑ |
|
+sin x , |
|
|
∑ |
|
|
|
. |
|
|
||||||
|
|
|
|
k |
|
|
|
|||||||||||
|
|
|
k=1 k! |
|
|
|
|
|
|
k=1 |
2 |
|
|
|
|
|||
|
|
|
10 |
1 |
|
|
|
10 |
|
|
1 |
|
|
|
|
|
||
23) |
Вычислить∑ |
|
, |
|
∏ |
2 + |
|
. |
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
k=1 k! |
|
|
|
k=1 |
|
|
k! |
|
|
|
|
|
|||
24) |
Даны целые числа n, k (n>=k>=0). Вычислитьn(n −1)...(n −k +1). |
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
k! |
|
|
25) Дано действительное число x. Вычислить(x −2)(x −4)(x −8)...(x −64). (x −1)(x −3)(x −7)...(x −63)
26)Вычислить сумму n членов ряда, где n–заданное натуральное число.
1+ 21 +142 +1 28 3 +1 2163 4 +...
27)Некто продал лошадь за 156 рублей, но покупатель, приобретя лошадь, раздумал ее покупать за такую цену. Тогда продавец предложил другие условия: купить только все подковные гвозди, а лошадь – в придачу бесплатно. Гвоздей в каждой подкове – 6. Цена первого гвоздя – ¼ копейки, второго – ½ копейки, третьего – 1 копейка и т. д. Покупатель, желая даром получить лошадь, принял условия продавца, рассчитывая, что за гвозди придется уплатить не более 10 рублей. На какую сумму покупатель проторговался?
28)Вычислить сумму ряда, где x –заданное натуральное число
|
x2 |
|
2 x3 |
3 x4 |
7 x8 |
|||||
1+ |
|
|
− |
|
6 |
+ |
|
8 |
−... + |
16 . |
2 |
4 |
3 |
4 |
|||||||
|
|
|
|
|
|
|
8 |
29)В числовую переменную в произвольном порядке вводится Nнатуральных чисел. Вывести на экран значения тех чисел, которые: являются удвоенными нечетными числами; при делении на 7 дают остаток 1, 2 или 5.
30)В одну и ту же переменную вводят n действительных чисел. Определить сумму чисел, порядковые номера которых являются четными числами, и среднее арифметическое чисел, порядковые номера, которых являются нечетными числами.
31)Даны целые числа m и n (m ≠ 0 и n ≠ 0 ). Получить все их общие делители (положительные и отрицательные).
32)Даны целые числа m и n(m ≠ 0 и n ≠ 0 ). Получить все их натуральные общие кратные,
меньшие mxn.
33) Числа 46 и 96 обладают любопытной особенностью: их произведение не меняет своей величины, если переставить их цифры. Действительно, 46 96 = 4416 = 64 69 . Требуется установить, имеются ли другие пары двузначных чисел с тем же свойством.
34)Дано натуральное число n. Вычислить1 2 +2 3 4 +... +n (n +1) ... 2n.
35)Дано натуральное число n. Получить все натуральные числа, меньшие n и взаимно простые с ним.
Тема 4.5. Средствапрограммирования регулярных циклическихструктур |
Страница 160 |
4.5.4. Тестовые задания по теме «Программирование алгоритмов регулярных циклических
структур»
1.Оператор For – это
1)оператор выбора
2)оператор регулярного цикла
3)оператор итеративного цикла
4)составной оператор
2.Переменная, изменяющая свое значение при каждом новом вхождении в цикл, называется
1)параметром цикла
2)шагом цикла
3)индексом
4)размером
3.Многократно повторяющаяся часть алгоритма называется
1)телом цикла
2)выбором
3)перебором
4)шагом цикла
4.Циклическая алгоритмическая структура может быть
1)регулярная, итеративная
2)регулярная, разветвляющаяся
3)итеративная, разветвляющаяся
4)нет верного ответа
5.В регулярной циклической структуре число повторений операторов тела цикла
1)заранее известно или может быть предварительно вычислено
2)может быть, известно или неизвестно заранее
3)заранее неизвестно
4)нет верного ответа
6.Телом цикла в операторе For…Nextмогут быть
1)любые операторы
2)только оператор условного перехода или оператор присваивания
3)только арифметические или логические выражения
4)нет верного ответа
7.Тело цикла в оператореFor…Next
1)может ни разу не выполниться
2)обязательно выполнится хотя бы 1 раз
3)выполняется несколько раз
4)нет верного ответа
Тема 4.5. Средствапрограммирования регулярных циклическихструктур |
Страница 161 |
8.Для досрочного прекращения регулярного цикла используется оператор
1)ExitFor
2)Exit
3)Break
4)Exit For
9.Для того чтобы операторы тела цикла выполнились необходимое число раз, параметр цикла
1)должен быть переменной вещественного типа
2)должен быть переменной целого типа
3)должен быть переменной строкового типа
4)должен быть переменной целого или вещественного типа
10.Если в операторе регулярного цикла For…Next слово Step отсутствует, это означает, что после каждого выполнения тела цикла
1)параметр цикла увеличивается на 1
2)параметр цикла уменьшается на 1
3)параметр цикла изменяется произвольно
4)параметр цикла не изменяется
5)будет сообщение об ошибке
11. Для нахождения наименьшего значения числовой функции от аргумента,значение |
к |
следует принять |
|
1)число, близкое к наибольшему числу из диапазона типа данных рассматриваемой функции
2)число, близкое к наименьшему числу из диапазона типа данных рассматриваемой функции
3)0
4)нет верного ответа
12.Для нахождения наибольшего значения числовой функции от аргумента, значение которого изменяется на заданном интервале, за начальное наибольшее значение следует принять
1)число, близкое к наибольшему числу из диапазона типа данных рассматриваемой
функции
2)0
3)нет верного ответа
4)число, близкое к наименьшему числу из диапазона типа данных рассматриваемой функции
13.Для нахождения значения произведения числовой функции от аргумента, значение которого изменяется на заданном интервале, за начальное значение произведения следует принять
1)1
2)число, близкое к наибольшему числу из диапазона типа данных рассматриваемой функции
3)число, близкое к наименьшему числу из диапазона типа данных рассматриваемой функции
4)0
5)нет верного ответа
Тема 4.5. Средствапрограммирования регулярных циклическихструктур |
Страница 162 |