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

F0, F1, и F2=F0+F1=2 и их сумма S=F0+F1+F2=4. В цикле переопределяем значение переменных F0 и F1, выводим очередное (предыдущее) число Фибоначчи, вычисляем следующее число и добавляем его в сумму. Когда текущее число Фибоначчи превосходит заданное число m (F2≤m - False), то происходит выход из цикла. Так как это число Фибоначчи уже добавлено в сумму, то после выхода из цикла его необходимо вычесть из нее (S=S-F2). Таким образом, в окончательном значении суммы будут учтены только те числа Фибоначчи, которые еще не превосходят заданное число m.

Схема алгоритма и код процедуры-Sub приведены на рис. 4.6.2-12.

 

Sub Pr4612(m,S,k)

Sub P46212(ByVal m As Integer,ByRef S As Long,

Pr4612( )

 

 

 

 

ByRef k As Integer)

 

 

 

 

 

 

 

 

 

F0=1, F1=1

 

 

Dim F, F1,

F2As Integer

K=3

 

 

F0 = 1

:

F1 = 1

:

F2 = 2

F2=2, S=4

 

 

 

 

 

 

 

 

 

 

 

 

S =

F0 + F1 + F2

:

k= 3

F2≤m

Нет

 

Do

While F2

<=

m

 

Да

 

 

 

F0= F1

:

F1 = F2

F0=F1

 

 

 

vivodIntLs12(F1,ListBox1)

F1=F2

 

 

 

F2= F0

+ F1

 

 

F1

 

 

 

S= S +

F2

 

 

 

 

 

 

k= k +

1

 

 

 

Вывод

 

 

 

 

 

 

 

 

 

S=S+F2

 

 

Loop

 

 

 

 

 

 

 

 

S= S – F2

 

 

 

 

F2=F0+F1

 

 

k = k

- 1

 

 

 

 

k=k+1

 

End

 

 

 

 

 

 

Sub

 

 

 

 

 

 

S=S-F2

 

 

 

 

 

 

 

 

 

K=k-1

 

 

 

 

 

 

 

 

 

Конец

 

 

 

 

 

 

 

 

 

Рис. 4.6.2-12

 

 

 

 

 

 

 

 

 

Процедура-Sub Pr46212( ) может быть вызвана из любой другой процедуры или из модуля формы, например, как показано на рис. 4.6.2-13.

Dim SS As Long

Dim mm, kk As Integer

mm=vvodInt9("Введите значение mm= ", TextBox1) Pr46212(mm, SS, kk)

vivodFxn14(SS, kk, TextBox2)

Рис. 4.6.2-13

Пример 4.6.2-6.Написать процедуру-Function, которая вычисляет с точностью ε=0.001 сумму членов ряда

12 5

22 6

 

+

32 7

 

 

...

 

 

 

2 4 6 8

.

2 4 2 4 6

 

 

Очевидно, что задана

знакопеременная убывающая последовательность, поэтому для

вычисления

суммы

 

ряда

с

точностью ε будем вычислять и суммировать члены

последовательности до тех пор, пока очередной член ряда не станет меньше точности по модулю.

Заданный ряд вычислять через рекуррентную формулу нецелесообразно, так как это,

во-первых, трудно, а, во-вторых, скорее всего, невозможно вывести общую формулу n-го

Тема 4.6. Программирование алгоритмовитеративныхциклическихструктур

Страница 177

члена ряда. Поэтому можно воспользоваться следующим универсальным приемом

вычисления подобных рядов.

 

 

 

 

 

 

 

 

Каждый член последовательности можно представить как

 

 

a = z

n2 b

,

 

 

 

 

 

 

 

 

 

c

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

где z– множитель, равный 1 или -1 (знак члена ряда);

 

 

n–первый сомножитель в числителе каждого слагаемого (в данном случае совпадает

с номером члена ряда);

 

 

 

 

 

 

 

 

b–второй сомножитель в числителе;

 

 

 

 

 

 

с– знаменатель каждого слагаемого.

 

 

 

 

 

 

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

сомножителей, причем с увеличением номера члена ряда увеличивается и количество

сомножителей в знаменателе. Таким образом, знаменатель можно представить, как с=с∙d, где

d – сомножитель,

добавленный к значению знаменателя предыдущего члена ряда.

 

 

 

и код процедуры-функции приведены на рис. 4.6.2-14.

 

 

Pr46214

Sub Pr46214(x,E)

Function Pr46214(ByVal E As Double) As Double

 

 

 

 

 

Dim

a, s

As

Double

As Integer

 

n=1,z=1,d=4

 

 

 

Dim

n, z, b, c, d

 

 

 

 

n = 1

 

 

 

 

 

b=5, c=2∙4

 

 

 

 

 

 

 

 

 

 

 

 

 

z =1

 

 

 

 

 

a=z∙n2∙b/c

 

 

 

b = 5

 

 

 

 

 

s=0

 

 

 

 

c = 2*4

 

 

 

 

 

 

 

 

 

 

d = 4

 

 

 

 

 

 

 

 

 

 

a = z * n^ 2 * b / c

 

 

 

|a|>E

Да

Нет

 

 

s = 0

 

 

 

 

 

 

 

 

 

Do While Abs(a)> E

 

 

 

 

 

 

 

 

 

vivodIntLs12(n,ListBox1)

 

 

Вывод

 

 

 

 

vivodDblLs13(a,ListBox2)

 

 

n, a

 

 

 

 

 

s = s + a

 

 

 

 

s = s+a

 

 

 

 

n = n + 1

 

 

 

 

 

 

 

 

z = -z

 

 

 

 

 

n = n+1

 

 

 

 

 

 

 

 

 

z = -z

 

 

 

 

b = b + 1

 

 

 

 

b = b+1

 

 

 

 

d = d + 2

 

 

 

 

d = d+2

 

 

 

 

c = c * d

 

 

 

 

c = c∙d

 

 

 

 

a = z * n^ 2 * b / c

 

 

 

 

 

 

 

Loop

 

 

 

 

a=(z∙n2∙b)/c

 

End

Return s

 

 

 

 

 

 

 

 

Function

 

 

 

 

Pr46214=s

 

 

 

 

 

 

 

 

 

 

Конец

 

 

 

 

 

 

 

 

 

Рис. 4.6.2-14

 

 

 

 

 

 

 

 

 

Процедура-Function Pr46214( )

может быть вызвана из любой другой процедуры

или из модуля формы, например, как показано на рис. 4.6.2-15.

 

 

 

 

 

 

 

 

 

 

 

 

 

Dim EE, SS As Double

 

 

 

 

 

 

 

 

EE =vvodDbl1(TextBox1)

 

 

 

 

 

 

 

 

SS = Pr46214(EE)

 

 

 

 

 

 

 

Страница 178

Тема 4.6. Программирование алгоритмовитеративныхциклическихструктур

Страница 179

vivodDbl1(SS, TextBox2)

Рис. 4.6.2-15

4.6.3. Задачи для самостоятельного решения по теме «Программирование алгоритмов итеративных циклических структур»

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

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

2)Составить алгоритм и программу нахождения суммы цифр заданного натурального числа.

3) Даны натуральные числа n и m. Получить сумму m последних цифр числа n.

4)Найти 100 первых простых чисел.

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

6)Найти минимальное натуральное число n, при котором выполняется условие:

13 +23 +33 +... +n3 > 300.

7)

Вычислить сумму таких членов последовательности ai =

x

 

,

1 2 3

... i

где i =1,2,… , значения которых больше 0.01. Вводимое значение 0<x<1.

8)Дано натуральное число n. Переставить первую и последнюю цифры этого числа.

9)Дано натуральное число n. Приписать по единице в начало и в конец записи числа n.

10)Составить алгоритм и код программы, которые находят максимальное количество членов ряда, при котором сумма его членов остается меньше 12, и выводят на экран

значение последнего слагаемого и эту сумму:

7 +

7

 

+

7

 

+

7

 

+...

2 *1

3 * 2 *1

4 * 3 * 2 *1

 

 

 

 

 

11)Составить алгоритм и программу для нахождения минимального количества слагаемых

всумме членов ряда, при котором эта сумма станет больше 2000.Кроме того, найти

значения

суммы

и

 

 

последнего

слагаемого (a и x- любые положительные

числа).

a3

x2

+

a4 x3

+

 

a5 x4

+

 

 

a6 x5

 

+...

1 3

1 3

5

1 3 5 7

1 3 5 7

9

 

 

 

 

 

12)Составить алгоритм и программу для нахождения максимального количества слагаемых в сумме членов ряда, при котором эта сумма ещё остаётся меньше 1000.Кроме того, найти значения суммы и последнего слагаемого.

6 2 3 +6 2 3 9 +6 2 3 4 27 +...

13)Вычислить сумму членов ряда. Суммирование осуществлять, пока разность между текущим и предыдущим значениями суммы остается больше 0.001. Кроме этого, найти

значение последнего слагаемого и его номер

12 5 +

22 6

+

32 7

+...

 

2 4 6 8

 

2 4 2 4 6

 

14) Вычислить сумму членов ряда. Суммирование осуществлять, пока разность между текущим и предыдущим слагаемыми остается меньше 200. Кроме суммы, найти значение последнего слагаемого и его номер.

2+4+8+16+32+…

15) Вычислить сумму членов ряда. Суммирование осуществлять, пока разность между текущим и предыдущим слагаемыми остается больше 0.04. Кроме суммы, найти значение последнего слагаемого и его номер.

Тема 4.6. Программирование алгоритмовитеративныхциклическихструктур

211+ 212 + 213 + 214 + 215 +...

16)Дано натуральное число n. Составить алгоритм и программу, которые формируют из него другое число, исключив из записи исходного числа все цифры 5.

17)Дано натуральное число n. Найти все меньшие n числа, запись которых совпадает с

последними цифрами записи их квадрата (как, например, 62 = 36, 252 = 625 и т.д.)

18)Дано натуральное число n. Найти все меньшие n числа Мерсена (простое число

называется числом Мерсена, если оно может быть представлено в виде 2p −1, где р – тоже простое число).

19)Даны натуральные числа m и n. Получить все меньшие n натуральные числа, квадрат суммы цифр которых равен m. Произвести проверку ввода исходных данных.

20)Дано натуральное число n. Получить в порядке возрастания n первых натуральных чисел, которые не делятся ни на какие простые числа, кроме 2, 3 и 5.

21)В числовую переменную вводятся целые числа. Количество чисел заранее неизвестно. Подсчитать количество четных положительных чисел, а также сумму чисел, принадлежащих отрезку[-2; 2].

22)В числовую переменную вводятся целые числа. Количество чисел заранее неизвестно. Подсчитать сумму тех чисел, которые нечётны и отрицательны, а также количество чисел, которые кратны пяти.

23)Найти все четырехзначные натуральные числа, не превосходящие заданного числа n, которые делятся на каждую из своих цифр. Если таких чисел нет, выдать соответствующее сообщение.

24)Натуральное число из m цифр является числом Армстронга, если сумма его цифр,

возведенных в m -ую степень, равна самому числу (как, например, 153 =13 +53 +33 ). Получить все числа Армстронга, меньшие n, где n – произвольное натуральное число.

25)В числовую переменную вводятся произвольные числа, не равные нулю. Количество чисел заранее неизвестно. Вычислить сумму тех из них, порядковые номера которых являются простыми числами. Произвести проверку ввода исходных данных.

26)Составить алгоритм и программу, которые находят первые n (n – задается) натуральных чисел, при «зачеркивании» в которых последней цифры эти числа уменьшаются в целое число раз. Для каждого найденного числа вывести на экран число, полученное при «зачеркивании» последней цифры, и число, которое показывает, во сколько раз первое больше второго.

27)Для последовательности натуральных чисел Р (число которых заранее неизвестно)

получить их двоичное представление в виде последовательности a0,a1,...an нулей и единиц такой, что Р=an 2n +an−1 2n−1 +... +a1 21 +a0 .

28)Найти все натуральные числа n, не превосходящие заданного числа А (0<A<20), такие, что у числа n!+5 (n!=1 2 3 4 ... n) сумма цифрпростое число. Если таких чисел нет, то выдать соответствующее сообщение. Произвести проверку вводимой информации.

29)Дано действительное x. Вычислить приближенное значение бесконечной суммы с точностью0,00001: x+x2/2+x3/3+… ( |x|<1).

30)Вычислить приближенное значение бесконечной суммы с точностью 0,0001 (справа от суммы дается ее точное значение, с которым можно сравнить полученный результат): 1- 1/2+1/3-1/4+…, точное значение - 0,6931478….

31)Вычислить приближенное значение бесконечной суммы с точностью 0,0001 (справа от суммы дается ее точное значение, с которым можно сравнить полученный результат):

1/(2*3)+1/(2*3)+1/(3*4)+…,точное значение - 1.

32)Даны действительные числа x, ε (x<>0, ε>0). Вычислить с точностью ε:

Тема 4.6. Программирование алгоритмовитеративныхциклическихструктур

Страница 180

k

2(k+1)

(−1) (x / 2)

2 .

k=0

((k +1)!)

33) Вычислить бесконечную сумму с заданной точностью ε (ε>0). Считать, что требуемая точность достигается, если вычислена сумма нескольких первых слагаемых и очередное

слагаемое оказалось, по модулю меньше, чем ε, - это и все последующие слагаемые

1

(−2)

можно не учитывать:

 

 

,

 

.

 

2

k!

k=1 k

 

k=0

 

34)Даны действительные числа x, ε (x<>0, ε>0). Вычислить с точностью ε:

k

2(k+1)

(−1) (x / 2)

2 .

k=0

((k +1)!)

35) Вычислить бесконечную сумму с заданной точностью ε (ε>0).Считать, что требуемая точность достигается, если вычислена сумма нескольких первых слагаемых и очередное

слагаемое оказалось по модулю меньше, чем ε, - это и все последующие слагаемые можно не учитывать:

k+1

 

 

1

 

 

(−1)

,

 

 

 

.

 

4

k

+5

k+2

k=1 k(k +1)(k +2)

k=0

 

 

 

36)Даны действительные числа x, ε (x<>0, ε>0). Вычислить с точностью ε:

(−1)k x4k+3 . k=0 (2k +1)! (4k +3)

Тема 4.6. Программирование алгоритмовитеративныхциклическихструктур

Страница 181

4.6.4. Тестовые задания по теме «Программирование алгоритмов итеративных циклических структур»

1.Оператор Dо…Lооp – это

1)оператор итеративного цикла

2)оператор выбора

3)оператор регулярного цикла

4)составной оператор

2.В итеративной циклической структуре число повторений операторов тела цикла

1)может быть известно заранее

2)заранее неизвестно

3)заранее известно или может быть предварительно вычислено

4)нет верного ответа

3.Телом цикла в операторе Do…Loop могут быть

1)только оператор условного перехода или оператор присваивания

2)только арифметические или логические выражения

3)любые операторы

4)нет верного ответа

4.Для досрочного прекращения итеративного цикла используется оператор

1)Exit Do

2)Exit

3)Break

4)нет верного ответа

5.Алгоритмическая структура цикла итеративного типа может быть

1)с предусловием или с постусловием

2)только с предусловием

3)только с постусловием

4)безусловная

6.Если при программировании циклической структуры используется оператор

Do While…Loop, то тело цикла

1)обязательно выполнится хотя бы 1 раз

2)выполняется заданное число раз

3)оператор не относится к средствам программирования итеративного цикла

4)может ни разу не выполниться

7.Если при программировании циклической структуры используется оператор

Do …Loop While, то тело цикла

1)обязательно выполнится хотя бы 1 раз

2)может ни разу не выполниться

3)выполняется заданное число раз

4)оператор не относится к средствам программирования итеративного цикла

Тема 4.6. Программирование алгоритмовитеративныхциклическихструктур

Страница 182

8.Если при программировании циклической структуры используется оператор

Do …Loop Until , то тело цикла

1)обязательно выполнится хотя бы 1 раз

2)может ни разу не выполниться

3)выполняется заданное число раз

4)оператор не относится к средствам программирования итеративного цикла

9.После ключевых слов While или Until в операторе итеративного цикла Do …Loop записывается

1)арифметическое или логическое выражение

2)оператор выбора

3)любой оператор

4)нет верного ответа

10.Результатом работы фрагмента программы

Dim n As Integer n=0

Do While n<5 n=n+1

Loop

TextBox1.Text = CStr(n)

будет

1)вывод на экран 6

2)вывод на экран 0

3)вывод на экран 5

4)сообщения об ошибке

5)«зацикливание»

11.Что будет на экране в результате работы фрагмента программы

Dim n As Integer n=0

Do Until n<5 n=n+1

Loop

TextBox1.Text = CStr(n)

1)6

2)5

3)сообщение об ошибке

4)«зацикливание»

5)0

Тема 4.6. Программирование алгоритмовитеративныхциклическихструктур

Страница 183

12. При каких начальных значениях переменных алгоритм закончит работу без зацикливания

Начало

Ввод А, С

А=А+1 С=С+1

Нет А>0 Да

Да

C>0

Нет

A, C

Конец

1)А=-2 С=-3

2)А=-3 С=-2

3)А=-3 С=-3

4)А=-2 С=-1

5)А=-4 С=-3

13.При каких начальных значениях переменных алгоритм закончит работу без зацикливания

Начало

Ввод А, С

А=А+1 С=С+1

Да А<0 Нет

Да

C>0

Нет

A, C

Конец

1)А=-2 С=-1

2)А=-2 С=-3

3)А=-3С=3

4)А=-3 С=-2

Тема 4.6. Программирование алгоритмовитеративныхциклическихструктур

Страница 184

14. Что будет на экране в результате работы фрагмента программы

Dim n, s As Integer s = 0 : n=123

Do

s = s * 10 + n Mod 10 n = n \ 10

Loop Until n = 0 TextBox1.Text = "s=" & CStr(s) TextBox2.Text = "n=" & CStr(n)

1)s=321 n=0

2)s=123 n=0

3)s=321 n=123

4)s=0 n=0

15.При каких начальных значениях переменных алгоритм закончит работу без зацикливания

Начало

Ввод А, С

А=А-1 С=С-1

Да А>0 Нет

Нет C>0

Да

Вывод

A, C

Конец

1)А= 2 С=2

2)А=-3 С=-2

3)А=-3 С= 0

4)А=-3 С=-1

5)А=4 С= 5

Тема 4.6. Программирование алгоритмовитеративныхциклическихструктур

Страница 185

16. При каких начальных значениях переменных алгоритм закончит работу без зацикливания

Начало

Ввод А, С

А=А-1 С=С+1

Да А>0 Нет

С=С+1

Да C>0

Нет

Вывод

A, C

Конец

1)А= 2 С=-3

2)А= 3 С=-2

3)А=-3 С-1

4)А=-3 С=0

5)А= 4 С=-4

17.Определить выходные значения переменных А и С после выполнения алгоритма

Начало

Ввод А, С

А=А+1 С=С+1

Нет А>0 Да

Да

C<0

Нет

Вывод

A, C

Конец

1)1 7

2)0 -4

3)1 3

4)0 -5

5)зацикливание

Тема 4.6. Программирование алгоритмовитеративныхциклическихструктур

Страница 186

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