- Преподавателю
- Информатика
- Статья Анализ задачного материала по теме «Циклы с постусловием», представленного в учебнике под редакцией И. Г. Семакина, Е. К. Хеннера
Статья Анализ задачного материала по теме «Циклы с постусловием», представленного в учебнике под редакцией И. Г. Семакина, Е. К. Хеннера
Раздел | Информатика |
Класс | - |
Тип | Другие методич. материалы |
Автор | Шапошникова М.А. |
Дата | 19.11.2014 |
Формат | doc |
Изображения | Есть |
Автор: учитель информатики МБОУ СОШ №4 г. Брянска Шапошникова Марина Александровна
Классификация задачного материала по теме «Циклы с постусловием», представленного в учебнике под редакцией И.Г. Семакина, Е.К. Хеннера.
В учебнике представлена большая подборка задач по теме «Программирование циклических алгоритмов» (142 задачи). Большую часть из них можно решать с помощью любой циклической конструкции, в том числе и с помощью цикла с постусловием. Представленные задачи разнообразны как по содержанию, так и по уровню сложности. Задачник ориентирован на изучения языка Турбо Паскаль. Однако, при желании учитель может использовать эти задачи при изучении любого языка программирования высокого уровня.
Представленные в учебнике задачи можно разделить на 3 большие группы:
-
Фабульные задачи.
-
Задачи на работу с рядами, последовательностями, функциями.
-
Задачи на работу с целыми числами.
Внутри каждой из групп задачи можно классифицировать, выбирая в качестве основания классификации требование задачи.
-
Фабульные задачи.
Важным этапом при решении задач этого типа является этап формализации, построения математической модели.
-
Задачи, в которых необходимо организовать ввод данных (№№ 1, 19).
Для решения задач этого типа целесообразно использовать именно цикл с постусловием, так как количество повторений заранее определить невозможно, а тело цикла всегда будет выполнено хотя бы один раз. Одну из этих задач (например, №19) можно использовать при введении алгоритмической конструкции «цикл с постусловием». Организация корректного ввода данных необходима и во многих других задачах, относящихся не только к теме «Программирование циклических программ».
Задача №19. Составить программу, которая запрашивает пароль (например, четырехзначное число) до тех пор, пока он не будет правильно введен.
Var p:longint;
Begin
repeat
writeln('Введите пароль ( четырехзначное число):');
readln(p);
until (p<10000) and (p>999);
writeln(p);
End.
-
Задачи, в которых требуется проверить правильность некоторого утверждения путем перебора возможных значений (№№ 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, 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.
-
Задачи, в которых необходимо подсчитать сумму членов некоторой последовательности (№№ 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.
-
Задачи на работу с рядами, последовательностями, функциями.
Задачи этого типа удобно использовать для организации практических, контрольных работ по вариантам, так как авторы предлагают целые блоки задач с одинаковой формулировкой условия, отличающиеся только заданными функциями, рядами, последовательностями. Кроме того, это позволяет реализовать дифференцированный подход к обучению: все ученики получают одинаковые по формулировке задания, а уровень сложности варьируется за счет различных исходных данных.
-
Задачи на вычисление значения выражения: суммы или произведения 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.
-
Задачи на вычисление суммы ряда с заданной точностью (№№ 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.
-
Задачи на нахождение наименьшего номер члена последовательности, удовлетворяющего заданному условию(№№ 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.
-
Задачи на вычисление значений функции на отрезке с заданным шагом (№№ 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
x:=a;
repeat
fx:=sin(x)+cos(x);
writeln('F(',x,')=',fx);
x:=x+h;
until x>b;
readln;
end.
-
Задачи на работу с целыми числами.
Задачи этого типа авторы разбивают на 3 группы по уровню сложности, что позволяет учителю выбирать задачи, ориентируясь на потребности и возможности учеников. Кроме того, авторы в отдельную группу выделяют задачи на работу с числами-палиндромами.
Для решения задач на работу с целыми числами учащиеся должны иметь представление о десятичной записи числа, об операциях целочисленного деления и остатка от деления, о таких математических понятиях, как простые числа, делители числа и т.п.
-
Задачи, в которых необходимо найти число (числа, сумму чисел, максимальное из чисел) из заданного диапазона, удовлетворяющее некоторому условию.
Условия, которым должно удовлетворять данное число, можно разбить на группы:
-
число делится (не делится) на некоторое число (№№ 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.
-
Задачи, в которых необходимо определенным образом переставить цифры в десятичной записи числа. (№№ 98, 101, 111, 133, 134, 142).
-
Задачи, в которых требуется определить, удовлетворяет ли число некоторому условию.
Условия, которым должно удовлетворять данное число, можно разбить на группы:
-
наличие одинаковых (различных) цифр в записи числа (№№ 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.
-
Задачи на перевод числа из одой системы счисления в другую (№№131, 132, 135).
-
Задачи, в которых требуется найти делители числа.
В задачах этого типа требуется либо найти все делители заданного числа (№№ 110, 112), либо делители, удовлетворяющие некоторому условию (№ 121).
-
Задачи, в которых необходимо путем перебора всевозможных комбинаций цифр и арифметических операций получить заданное число (№№ 136, 137).
-
Задачи, в которых требуется найти некоторый член последовательности цифр, составленной по заданному правилу(№№ 129, 130).
Классификация задачного материала по теме «Циклы с постусловием» из задачника под редакцией И.Г. Семакина, Е.К. Хеннера представлена на рисунке 1.
Рисунок 1. Классификация задачного материала, представленного в задачнике под ред. И.Г. Семакина, Е.К. Хеннера.