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

Автор публикации:

Дата публикации:

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


8 класс

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


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

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

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

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


ПО: Pascal ABC.


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

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

Повторение:

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

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

Чтобы решить все нижеприведенные задачи, вам надо знать материал трех уроков:  [link] возвращает правду, если нечетно

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.  

  3. var

  4. summ: real;

  5. A, k: integer;

  6.  

  7. begin

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

  9. readln(A);

  10. k := 1;

  11. summ := 1;

  12. while summ <= A do

  13. begin

  14. inc(k);

  15. summ := summ + 1 / k;

  16. end;

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

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

  19. end.

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

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

  1. program while_14;

  2.  

  3. var

  4. summ: real;

  5. A, k, min_k: integer;

  6.  

  7. begin

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

  9. readln(A);

  10. k := 1;

  11. summ := 1;

  12. while summ <= A do

  13. begin

  14. min_k := k;

  15. inc(k);

  16. summ := summ + 1 / k;

  17. end;

  18. summ := summ - 1 / k;

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

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

  21. end.



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