7


  • Учителю
  • Практическая работа: Оператор While

Практическая работа: Оператор While

Автор публикации:
Дата публикации:
Краткое описание: Данный документ является пробным. Но тем не менее в нем есть план-конспект урока практической работы для 8 класса по теме "Оператор цикла с предусловием".Документ содержит в себе набор задач разной сложности, которые могут быть рассчитаны на два варианта.Алгоритм решения з
предварительный просмотр материала

8 класс

Урок 7. Практическая работа: «Решение задач с использованием оператора While».



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

Тип урока: проверка и оценка знаний учащихся.

Учащиеся должны знать: оператор цикла с предусловием.

Учащиеся должны уметь: составлять алгоритмы и программы.



ПО: Pascal ABC.



Методический материал:

Для активизации логического мышления предложить учащимся решить логическую задачу: Расставить математические знаки (скобочки и знаки) для истинности выражения: 999999 = 100. Ответ: (999-99)/9=100, (99-9)/9+(99-9)=100.

Повторение:

  1. Назовите оператор цикла с параметром?

  2. Назовите оператор цикла с предусловием?

Чтобы решить все нижеприведенные задачи, вам надо знать материал трех уроков: div, mod, функции; логические выражения;циклы.



Учащимся дается задание на урок, решение задач.

While1°. Даны положительные числа A и B (A > B). На отрезке длины A размещено максимально возможное количество отрезков длины B (без наложений). Не используя операции умножения и деления, найти длину незанятой части отрезка A.

Умножение - это некоторое количество сложений.

Program while_1;



var

A, B: integer;



begin

readln(A,B);

while (A - B) >= 0 do A := A - B; // пока А - В > 0, отнимаем В.

write(A);

end.

While2. Даны положительные числа A и B (A > B). На отрезке длины A размещено максимально возможное количество отрезков длины B (без наложений). Не используя операции умножения и деления, найти количество отрезков B, размещенных на отрезке A.

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

Program while_2;



var

A, B, count: integer;



begin

readln(A, B);

while (A - B) >= 0 do

begin

A := A - B;

count := count + 1; // счетчик

end;

write(count);

end.

While3. Даны целые положительные числа N и K. Используя только операции сложения и вычитания, найти частное от деления нацело N на K, а также остаток от этого деления.

program while_3;



var

N, K, count: integer;



begin

readln(N, K);

while (N - K >= 0) do

begin

N := N - K;

count := count + 1;

end;

writeln('Частное от деления нацело: ', count);

writeln('Остаток: ', N);

end.

While4°. Дано целое число N (> 0). Если оно является степенью числа 3, то вывести True, если не является - вывести False.



Число будет степенью числа, если деля заданное число нацело на 3, получится N = 1.

Program while_4;

var

N: integer;



begin

readln(N);

while N mod 3 = 0 do N := N div 3; // пока остаток от деления на 3 равен нулю, делим на 3.

writeln(N = 1); // Выведет True или False

end.

While5. Дано целое число N (> 0), являющееся некоторой степенью числа 2: N = 2K. Найти целое число K - показатель этой степени.

Используем метод из предыдущей задачи.

Program while_5;



var

n, k: integer;



begin

write('Введите целое число: ');

readln(n);

k := 1;

while n div 2 <> 1 do // в этой задачи, мы знаем, что N станет равным 1.

begin

n := n div 2;

inc (k)

end;

writeln('Показатель степени: ',k);

end.

While6. Дано целое число N (> 0). Найти двойной факториал N: N!! = N·(N-2)·(N-4)·… (последний сомножитель равен 2, если N - четное, и 1, если N - нечетное). Чтобы избежать целочисленного переполнения, вычислять это произведение с помощью вещественной переменной и вывести его как вещественное число.

Program while_6;

var

n: integer;

anva, factorial: real;

begin

write('Введите целое число: ');

readln(n);

factorial := n;

anva := n;

if (n <> 1) and (n <> 2) then

if odd(n) then // проверяем четность и нечетность. odd</ возвращает правду, если нечетно

while anva <> 1 do // пока неравно 1, выполняем цикл подсчета факториала

begin

anva := anva - 2;

factorial := factorial * anva;

end

else while anva <> 2 do // пока неравно 2, выполняем цикл

begin

anva := anva - 2;

factorial := factorial * anva;

end;

writeln('Двойной факториал числа: ',factorial);

end.

While7°. Дано целое число N (> 0). Найти наименьшее целое положительное число K, квадрат которого превосходит N: K2 > N. Функцию извлечения квадратного корня не использовать.

Program while_7;

var

n,k: integer;

begin

write('Введите число: ');

readln(n);

k := 1;

while sqr(k) <= n do

inc(k); // увеличиваем k на один, пока квадрат к, не превзойдет n.

writeln(k);

end.

While8. Дано целое число N (> 0). Найти наибольшее целое число K, квадрат которого не превосходит N: K2 ≤ N. Функцию извлечения квадратного корня не использовать.

Program while_8;



var

n, k: integer;



begin

write('Введите число: ');

readln(n);

while sqr(k) <= n do

inc(k); //используем цикл для нахождения наименьшего целого положительного числа K, квадрат которого превосходит N

dec(k); //из найденного наименьшего числа вычитаем 1. полученное число наибольшое число, которое не превосходит квадрат числа.

writeln(k);

end.

While9. Дано целое число N (> 1). Найти наименьшее целое число K, при котором выполняется неравенство 3K > N.

Аналагично while 7.

Program while_9;



var

n, k: integer;



begin

write('Введите число: ');

readln(n);

k := 1;

while 3 * k <= n do

inc(k);

writeln(k);

end.

While10. Дано целое число N (> 1). Найти наибольшее целое число K, при котором выполняется неравенство 3K < N.

Program while_10;



var

n, k: integer;



begin

write('Введите число: ');

readln(n);

k := 1;

while 3 * k < n do

inc(k); //действуем по схеме, описанной ранее в задаче while_8

dec(k);

writeln(k);

end.

While11°. Дано целое число N (> 1). Вывести наименьшее из целых чисел K, для которых сумма 1 + 2 + … + K будет больше или равна N, и саму эту сумму.

Действуем аналогично предыдущим задачам.

Program while_11;



var

n, k, summ: integer;



begin

write('Введите число: ');

readln(n);

k := 1;

summ := 1;

while summ < n do

begin

inc(k); // увеличиваем к

summ := summ + k; // прибавляем его к сумме

end;

writeln('Число: ', k);

writeln('Сумма: ', summ);

end.

While12°. Дано целое число N (> 1). Вывести наибольшее из целых чисел K, для которых сумма 1 + 2 + … + K будет меньше или равна N, и саму эту сумму.

Program while_12;



var

n, k, summ: integer;



begin

write('Введите число: ');

readln(n);

k := 1;

summ := 1;

while summ <= n do // после окончания цикла значение summ > n.

begin

inc(k);

summ := summ + k;

end;

summ := summ - k; // Возвращаем предыдущие значение

dec(k); // Возвращаем предыдущие значения

writeln('Число: ', k);

writeln('Сумма: ', summ);

end.

While13. Дано число A (> 1). Вывести наименьшее из целых чисел K, для которых сумма 1 + 1/2 + … + 1/K будет больше A, и саму эту сумму.

Такая же как while11.

  1. Program while_13;

  2. var

  3. summ: real;

  4. A, k: integer;

  5. begin

  6. write('Введите число: ');

  7. readln(A);

  8. k := 1;

  9. summ := 1;

  10. while summ <= A do

  11. begin

  12. inc(k);

  13. summ := summ + 1 / k;

  14. end;

  15. writeln('Число: ', (1 / k):2:10);

  16. writeln('Сумма: ', summ:2:10);

  17. end.

While14. Дано число A (> 1). Вывести наибольшее из целых чисел K, для которых сумма 1 + 1/2 + … + 1/K будет меньше A, и саму эту сумму.

Такая же как while12.

  1. program while_14;

  2. var

  3. summ: real;

  4. A, k, min_k: integer;

  5. begin

  6. write('Введите число: ');

  7. readln(A);

  8. k := 1;

  9. summ := 1;

  10. while summ <= A do

  11. begin

  12. min_k := k;

  13. inc(k);

  14. summ := summ + 1 / k;

  15. end;

  16. summ := summ - 1 / k;

  17. writeln('Число: ', (1 / min_k):2:10);

  18. writeln('Сумма: ', summ:2:10);

  19. end.





Домашнее задание: Повторение пройденного материала. Параграф 3 полностью.







 
 
X

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

После этого кнопка ЗАГРУЗКИ станет активной!

Кнопки рекомендации:

загрузить материал