Классификация задачного материала по теме
«Циклы с постусловием», представленного в учебнике под редакцией
И.Г. Семакина, Е.К. Хеннера.
В учебнике представлена
большая подборка задач по теме «Программирование циклических алгоритмов» (142
задачи). Большую часть из них можно решать с помощью любой циклической
конструкции, в том числе и с помощью цикла с постусловием. Представленные
задачи разнообразны как по содержанию, так и по уровню сложности. Задачник
ориентирован на изучения языка Турбо Паскаль. Однако, при желании учитель может
использовать эти задачи при изучении любого языка программирования высокого
уровня.
Представленные в
учебнике задачи можно разделить на 3 большие группы:
I.
Фабульные
задачи.
II.
Задачи
на работу с рядами, последовательностями, функциями.
III.
Задачи
на работу с целыми числами.
Внутри каждой из
групп задачи можно классифицировать, выбирая в качестве основания классификации
требование задачи.
I.
Фабульные
задачи.
Важным этапом при
решении задач этого типа является этап формализации, построения математической
модели.
1.
Задачи,
в которых необходимо организовать ввод данных (№№ 1, 19).
Для решения задач
этого типа целесообразно использовать именно цикл с постусловием, так как
количество повторений заранее определить невозможно, а тело цикла всегда будет
выполнено хотя бы один раз. Одну из этих задач (например, №19) можно
использовать при введении алгоритмической конструкции «цикл с постусловием».
Организация корректного ввода данных необходима и во многих других задачах,
относящихся не только к теме «Программирование циклических программ».
Задача №19. Составить программу,
которая запрашивает пароль (например, четырехзначное число) до тех пор, пока он
не будет правильно введен.
Var p:longint;
Begin
repeat
writeln('Введите
пароль ( четырехзначное число):');
readln(p);
until
(p<10000) and (p>999);
writeln(p);
End.
2.
Задачи,
в которых требуется проверить правильность некоторого утверждения путем
перебора возможных значений (№№ 7-9, 17, 18).
В задачах этого
типа нужно использовать вложенные циклы и условную конструкцию. При этом
конструкцию «цикл с постусловием» можно использовать либо для организации
одного из циклов (вложенного или внешнего), либо для организации обоих циклов.
Задача №8. Составить программу для
проверки утверждения: «Результатами вычисления по формуле х2+х+17
при являются простые числа». Все результаты вывести на экран.
var x,c,i:integer;
b,f:boolean;
begin
b:=true;{считаем
что утверждение верное}
for x:=0 to
15 do
begin
c:=x*x+x+17;
f:=true;
i:=2;
repeat
{проверяем на делимость от 2 до с/2}
if c mod
i=0 then f:=false else i:=i+1;{если делится, не простое}
if
not f then b:=false;{если есть не простые, утв. не верное}
until
i>=round(c/2);
writeln(x, ' ', c);
end;
writeln;
if b then write('Утверждение верно')
else
write('Утверждение не верно');
end.
При решении этой
задачи цикл с постусловием использован для проверки, является ли очередное
полученное число простым. Перебор чисел осуществляется с помощью цикла с
параметром.
3.
Задачи,
в которых необходимо сгенерировать последовательность по заданному
правилу.(№№ 3, 4, 10, 13, 14).
Задача №3. Одноклеточная амеба каждые 3
часа делится на клетки. Определить, сколько амеб будет через 3, 6, 9, 12, …, 24
часа.
Var
n,i:integer;
Begin
i:=0;
n:=1;
repeat
i:=i+3;
n:=n*2;
writeln('Через
',i,'часов
будет ',n,'амеб.');
until
i>=24;
End.
4.
Задачи,
в которых необходимо подсчитать сумму членов некоторой последовательности
(№№ 2, 15, 16).
Задача №2. Начав тренировки, спортсмен
в первый день пробежал 10 км. Каждый день он увеличивал дневную норму на 10%
нормы предыдущего дня. Какой суммарный путь пробежит спортсмен за 7 дней?
Var i:integer;
S,d:real;{S – суммарный
путь; d – путь,
который Begin проходит спортсмен за 1 день}
i:=1;
S:=0;
d:=10;
repeat
S:=S+d;
d:=1.1*d;
i:=i+1;
until
i>2;
writeln(S);
End.
II.
Задачи
на работу с рядами, последовательностями, функциями.
Задачи этого типа
удобно использовать для организации практических, контрольных работ по
вариантам, так как авторы предлагают целые блоки задач с одинаковой
формулировкой условия, отличающиеся только заданными функциями, рядами,
последовательностями. Кроме того, это позволяет реализовать дифференцированный
подход к обучению: все ученики получают одинаковые по формулировке задания, а
уровень сложности варьируется за счет различных исходных данных.
1.
Задачи
на вычисление значения выражения: суммы или произведения n первых членов ряда( №№ 20-43).
Задачи этого типа
авторы предлагают решить двумя способами: с использованием цикла с параметром и
одного из двух других типов цикла. В приведенном примере для решения задачи
использован цикл с постуловием.
Задача № 30. Вычислить: (1+sin0,1) (1+sin0,2)×…×(1+sin10).
Var
i,S: real;
Begin
S:=1;
i:=0.1;
repeat
S:=S*sin(1+i);
i:=i+0.1;
until
i>10;
writeln('Значение выражения равно ',S);
End.
2.
Задачи
на вычисление суммы ряда с заданной точностью (№№ 44-55).
Задача № 53. Дан числовой ряд и малая
величина ε. Найти сумму ряда с точностью ε, общий член которой задан формулой .
var x,i,m,n:integer;
e,sum,an:real;
begin
repeat {Ввод данных}
writeln('e:');readln(e);
until (e<0.1)and(e>0.00001);
sum:=0;
n:=1;
repeat {Вычисление суммы с точностью е)
x:=1;
for i:=1 to n do {Вычисление числителя}
x:=x*i;
m:=1;
for i:=1
to n do {Вычисления знаменателя}
m:=m*3*n;
аn:=x/m;{Вычисление
n-го
члена ряда}
n:=n+1;
sum:=an+sum;
until an>e;
writeln(sum);
end.
3.
Задачи
на нахождение наименьшего номер члена последовательности, удовлетворяющего
заданному условию(№№ 56-69).
Задача № 69. Найти наименьший номер
последовательности, для которого выполняется условие М. Вывести на экран
этот номер и все элементы ai, где i=1,2, …, n.
var i,n:integer;
e,an:real;
begin
repeat
writeln('e:');readln(e);
until
(e<0.1)and(e>0.00001);
n:=1;
repeat
an:=1/(1+n)/(1+n);
writeln(an:3);
n:=n+1;
until
an>e;
writeln(an);
readln;
end.
4.
Задачи
на вычисление значений функции на отрезке с заданным шагом (№№ 71-96).
Задача № 76. Составить программу вычисления значений
функции F(x)=sinx+cosx на отрезке [a, b] с шагом h. Результат представить в
виде таблицы, первый столбец которой – значения аргумента, второй – соответствующие
значения функции.
var
i,n:integer;
a,b,h,x,fx:real;
begin
repeat
writeln('a,b,c:');readln(a,b,h);
until
(a<h)and(h<b);
x:=a;
repeat
fx:=sin(x)+cos(x);
writeln('F(',x,')=',fx);
x:=x+h;
until
x>b;
readln;
end.
III.
Задачи
на работу с целыми числами.
Задачи этого типа
авторы разбивают на 3 группы по уровню сложности, что позволяет учителю
выбирать задачи, ориентируясь на потребности и возможности учеников. Кроме
того, авторы в отдельную группу выделяют задачи на работу с
числами-палиндромами.
Для решения задач
на работу с целыми числами учащиеся должны иметь представление о десятичной
записи числа, об операциях целочисленного деления и остатка от деления, о таких
математических понятиях, как простые числа, делители числа и т.п.
1.
Задачи,
в которых необходимо найти число (числа, сумму чисел, максимальное из чисел) из
заданного диапазона, удовлетворяющее некоторому условию.
Условия, которым
должно удовлетворять данное число, можно разбить на группы:
а)
число
делится (не делится) на некоторое число (№№ 124,125,127);
б)
число
является палиндромом (№№ 139-141);
в)
условие
накладывается на цифры в записи числа (№№ 119, 123);
г)
другие
условия: совершенные числа, пифагоровы числа и т.п. (№№ 107, 113-115, 118,
120).
Задача № 123. Найти все двузначные числа,
сумма квадратов цифр которых кратна М.
Var
i,j: integer; { i - десятки, j - единицы }
Begin
i:=1;
j:=0;
repeat
if((j*j+i*i)mod M)=0 then writeln(i,j);
j:=j+1;
if(j=10) then
begin
j:=0;
j:=i+1;
end;
until(10*i+j<100);
End.
2.
Задачи,
в которых необходимо определенным образом переставить цифры в десятичной записи
числа. (№№ 98, 101, 111, 133, 134, 142).
3.
Задачи,
в которых требуется определить, удовлетворяет ли число некоторому условию.
Условия, которым
должно удовлетворять данное число, можно разбить на группы:
а)
наличие
одинаковых (различных) цифр в записи числа (№№ 99, 100, 109);
б)
наличие
в записи числа определенной цифры (№ 102);
в)
равенство
числа заданному выражению (№ 122, 126);
г) число является палиндромом
(№ 138).
Задача № 102. Даны натуральные числа n, k. Проверить, есть ли в записи числа nk цифра m.
Var
i,n,m,s,k,l,a:integer;
Begin
write('введите n='); read
(n);
write('введите k=');readln(k);
write('введите цифру m='); readln(m);
i:=0;l:=0;s:=1;
repeat
s:=s*n;
i:=i+1
until i=k;
repeat
a:=s
mod 10;
if
a=m then l:=l+1;
s:=s
div 10
until s=0;
if l=0 then
writeln('В записи числа нет цифры',' ',m)
else
writeln('В записи числа цифра ',m,' есть')
End.
4.
Задачи
на перевод числа из одой системы счисления в другую (№№131, 132, 135).
5.
Задачи,
в которых требуется найти делители числа.
В задачах этого
типа требуется либо найти все делители заданного числа (№№ 110, 112), либо
делители, удовлетворяющие некоторому условию (№ 121).
6.
Задачи,
в которых необходимо путем перебора всевозможных комбинаций цифр и
арифметических операций получить заданное число (№№ 136, 137).
7.
Задачи,
в которых требуется найти некоторый член последовательности цифр, составленной
по заданному правилу(№№ 129, 130).
Классификация задачного материала по
теме «Циклы с постусловием» из задачника под редакцией И.Г. Семакина,
Е.К. Хеннера представлена на рисунке 1.
Рисунок 1. Классификация задачного материала,
представленного в задачнике под ред. И.Г. Семакина, Е.К. Хеннера.
Оставьте свой комментарий
Авторизуйтесь, чтобы задавать вопросы.