8. Арифметическая прогрессия
1. Определите, что будет напечатано в результате работы следующего фрагмента программы:
var k, s: integer;
begin
s:=0;
k:=1;
while s < 66 do begin
k:=k+3;
s:=s+k;
end;
write(k);
end.
Решение.
Цикл while выполняется до тех пор, пока истинно условие s < 66, т. е. переменная s определяет, сколько раз выполнится цикл.
Значение s есть сумма
первых n членов арифметической прогрессии.
,
—
сумма первых n членов прогрессии,
—
разность прогрессии,
—
количество членов.
Цикл прервется,
когда
.
Найдем
:
,
,
(т.
к. k:=k+3). Чтобы решить это неравенство, нам необходимо решить квадратное
уравнение
,
среди его корней нас интересуют только положительные, следовательно, ![]()
Воспользовавшись методом
интервалов, находим, что первое натуральное n, при котором нарушается
условие, есть
.
Подставив известные
параметры в
получаем,
что ![]()
2. Определите, что будет напечатано в результате работы следующего фрагмента программы:
var k, s: integer;
begin
s:=0;
k:=0;
while k < 30 do begin
k:=k+3;
s:=s+k;
end;
write(s);
end.
Решение.
Цикл while выполняется до тех пор, пока истинно условие k < 30, т. е. переменная k определяет, сколько раз выполнится цикл.
Так как последовательность k представляет собой арифметическую прогрессию, найдем n из неравенства:
(т.
к. k:=k+3). Воспользовавшись методом интервалов, находим первое натуральное
n, при котором нарушается условие: ![]()
Значение s есть сумма
первых n членов арифметической прогрессии.
—
сумма первых n членов прогрессии,
—
разность прогрессии,
—
количество членов.
![]()
3. Определите, что будет напечатано в результате работы следующего фрагмента программы:
var k, s: integer;
begin
s:=1;
k:=0;
while k < 13 do begin
s:=s+2*k;
k:=k+4;
end;
write(s+k);
end.
Решение.
Цикл while выполняется до тех пор, пока истинно условие k < 13, т. е. переменная k определяет, сколько раз выполнится цикл.
Так как числа небольшие, можно аккуратно выписать все s и k:
s 1 1 9 25 49
k 0 4 8 12 16
(Помните, что условие k < 13 проверяется сразу после k:=k+4, следовательно, действие s:=s+2*k для k=16 выполняться не будет)
Следовательно, ответ 49+16=65.
4. Определите, что будет напечатано в результате работы следующего фрагмента программы:
var n, s: integer;
begin
n := 1;
s := 0;
while n <= 101 do begin
s := s + 7;
n := n + 1
end;
write(s)
end.
Решение.
Цикл while выполняется до тех пор, пока истинно условие n <= 101, т. е. переменная n определяет, сколько раз выполнится цикл. Следовательно, формульно s можно задать как функцию n так:
,
где
а ![]()
,
так как последняя операция, выполненная в цикле: n := 101 + 1.
Следовательно ![]()
5. Определите, что будет напечатано в результате работы следующего фрагмента программы:
var n, s: integer;
begin
n := 24;
s := 0;
while n <= 28 do begin
s := s + 20;
n := n + 2
end;
write(s)
end.
Решение.
Цикл while выполняется до тех пор, пока истинно условие n <= 28, т. е. переменная n определяет, сколько раз выполнится цикл.
Аккуратно посчитаем, сколько раз выполниться цикл (k):
Значения n: 24 26 28 30.
Следовательно, цикл выполнится три раза (так как действие n := n + 2 стоит в конце цикла, следовательно, для n=30 действие s := s + 20 не будет выполняться).
Посчитаем значение
s:
.
6. Определите, что будет напечатано в результате выполнения программы (записанной ниже на разных языках программирования):
|
Бэйсик |
Паскаль |
|
DIM N, S AS INTEGER N = 3 S = 0 WHILE N <= 7 S = S + N N = N + 1 WEND PRINT S |
var n, s: integer; begin n := 3; s := 0; while n <= 7 do begin s := s + n; n := n + 1 end; write(s) end. |
|
Си |
Алгоритмический |
|
#include void main() { int n, s; n = 3; s = 0; while (n <= 7) { s = s + n; n = n + 1; } printf("%d", s); } |
алг нач цел n, s n := 3 s := 0 нц пока n <= 7 s := s + n n := n + 1 кц вывод s кон |
Решение.
Цикл while выполняется до тех пор, пока истинно условие n <= 7, т. е. переменная n определяет, сколько раз выполнится цикл.
Цикл выполнится
раз
( "+1" потому, что в дроби мы не учитываем то, что при 7 он тоже
выполнится).
Заметим, что в s накапливается
сумма арифметической прогрессии из 5 членов с разностью 1. Следовательно,
.
7. Определите, что будет напечатано в результате выполнения программы (записанной ниже на разных языках программирования):
|
Бэйсик |
Паскаль |
|
Dim s, k As Integer s = 0 k = 1 While k < 11 s = s + k k = k + 1 End While Console.Write(s) |
Var s, k : integer; BEGIN s:=0; k:=1; while k<11 do begin s:=s+k; k:=k+1; end; write(s); END. |
|
Си |
Алгоритмический |
|
{ int s, k; s = 0; k = 1; while (k<11) { s = s+k; k = k+1; } printf("%d", s); } |
нач цел s, k s:=0 k:=1 нц пока k < 11 s:=s+k; k:=k+1 кц вывод s кон |
Решение.
Цикл while выполняется до тех пор, пока истинно условие k < 11, т. е. переменная k определяет, сколько раз выполнится цикл.
Цикл выполнится
раз.
Заметим, что в s накапливается сумма арифметической прогрессии, содержащей
11 членов, с разностью 1. Следовательно,
.
8. Определите, что будет напечатано
в результате выполнения программы
(записанной ниже на разных языках программирования):
|
Бейсик |
Паскаль |
|
DIM N, S AS INTEGER N = 0 S = 512 WHILE S >= 0 S = S - 20 N = N + 1 WEND PRINT N |
var n, s: integer; begin n := 0; s := 512; while s >= 0 do begin s := s - 20; n := n + 1 end; write(n) end. |
|
Си |
Алгоритмический |
|
#include<stdio.h> void main() { int n, s; n = 0; s = 512; while (s >= 0) { s = s - 20; n = n + 1; } printf("%d", n); } |
алг нач цел n, s n := 0 s := 512 нцпока s >= 0 s := s - 20 n := n + 1 кц вывод n кон |
Решение.
В переменной n записывается сколько раз произошел цикл. Следовательно,
![]()
Тот факт, что при n = 25, s будет > 0 означает, что у=цикл выполниться 26 раз.
Пример: При решение задач на циклы нужны формулы математики.
Определите, что будет напечатано в результате работы следующего фрагмента программы:
var k, s: integer;
begin
s:=0;
k:=1;
while s < 66 do begin
k:=k+3;
s:=s+k;
end;
write(k);
end.
Решение.
Цикл while выполняется до тех пор, пока истинно условие s < 66, т. е. переменная s определяет, сколько раз выполнится цикл.
Для решения задачи используем формулы арифметической прогрессии.
Ответ: 19.
Профессия: Менеджер по управлению сервисами ИТ
Профессия: Учитель информатики в начальной школе
Профессия: Преподаватель информационных технологий
В каталоге 6 866 курсов по разным направлениям
Учебник: «Информатика (базовый уровень)», Семакин И.Г., Хеннер Е.К., Шеина Т.Ю.
Тема: § 6. Проектирование многотабличной базы данных
Учебник: «Информатика», Босова Л.Л., Босова А.Ю.
Тема: 1.2.1. Представление целых чисел
Учебник: «Информатика (в 2 частях)», Матвеева Н.В., Челак Е.Н., Конопатова Н.К., Панкратова Л.П., Нурова Н.А.
Тема: 5. Компьютер как система
Учебник: «Информатика. Учебное пособие для общеобразовательных учреждений с русским языком обучения», Г. А. Заборовский, А. Е. Пупцев
Тема: § 16. Информационные системы
Учебник: «Информатика. Углубленный уровень (в2 частях)», Поляков К.Ю., Еремин Е.А.
Тема: § 28. Мультимедиа