Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
49
Добавлен:
27.04.2015
Размер:
986.46 Кб
Скачать

последовательности по формуле 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

Соседние файлы в папке УчеП-Раз-4-Инф-270100