Инфоурок Информатика Другие методич. материалыПрактическая работа: Оператор While

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

Скачать материал

Урок 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.      

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 полностью.

 

Просмотрено: 0%
Просмотрено: 0%
Скачать материал
Скачать материал "Практическая работа: Оператор While"

Методические разработки к Вашему уроку:

Получите новую специальность за 3 месяца

Клининговый менеджер

Получите профессию

Няня

за 6 месяцев

Пройти курс

Рабочие листы
к вашим урокам

Скачать

Краткое описание документа:

Данный документ является пробным. Но тем не менее в нем есть план-конспект урока практической работы для 8 класса по теме "Оператор цикла с предусловием".

Документ содержит в себе набор задач разной сложности, которые могут быть рассчитаны на два варианта.
Алгоритм решения задач, с использованием оператора цикла с предусловием представлен для языка программирования Паскаль.

Видеоурок по ссылке:


Скачать материал

Найдите материал к любому уроку, указав свой предмет (категорию), класс, учебник и тему:

6 665 291 материал в базе

Скачать материал

Другие материалы

Вам будут интересны эти курсы:

Оставьте свой комментарий

Авторизуйтесь, чтобы задавать вопросы.

  • Скачать материал
    • 14.10.2016 2150
    • DOCX 29.8 кбайт
    • Оцените материал:
  • Настоящий материал опубликован пользователем Иванова Екатерина Сергеевна. Инфоурок является информационным посредником и предоставляет пользователям возможность размещать на сайте методические материалы. Всю ответственность за опубликованные материалы, содержащиеся в них сведения, а также за соблюдение авторских прав несут пользователи, загрузившие материал на сайт

    Если Вы считаете, что материал нарушает авторские права либо по каким-то другим причинам должен быть удален с сайта, Вы можете оставить жалобу на материал.

    Удалить материал
  • Автор материала

    Иванова Екатерина Сергеевна
    Иванова Екатерина Сергеевна
    • На сайте: 7 лет и 6 месяцев
    • Подписчики: 0
    • Всего просмотров: 2216
    • Всего материалов: 1

Ваша скидка на курсы

40%
Скидка для нового слушателя. Войдите на сайт, чтобы применить скидку к любому курсу
Курсы со скидкой

Курс профессиональной переподготовки

Секретарь-администратор

Секретарь-администратор (делопроизводитель)

500/1000 ч.

Подать заявку О курсе

Курс повышения квалификации

Использование компьютерных технологий в процессе обучения информатике в условиях реализации ФГОС

36 ч. — 144 ч.

от 1700 руб. от 850 руб.
Подать заявку О курсе
  • Сейчас обучается 139 человек из 44 регионов
  • Этот курс уже прошли 1 298 человек

Курс профессиональной переподготовки

Управление сервисами информационных технологий

Менеджер по управлению сервисами ИТ

600 ч.

9840 руб. 5600 руб.
Подать заявку О курсе
  • Сейчас обучается 26 человек из 19 регионов
  • Этот курс уже прошли 34 человека

Курс повышения квалификации

Особенности подготовки к сдаче ЕГЭ по информатике и ИКТ в условиях реализации ФГОС СОО

36 ч. — 180 ч.

от 1700 руб. от 850 руб.
Подать заявку О курсе
  • Сейчас обучается 108 человек из 42 регионов
  • Этот курс уже прошли 579 человек

Мини-курс

Стартап: стратегия, развитие, и инвестиции

6 ч.

780 руб. 390 руб.
Подать заявку О курсе

Мини-курс

Современные технологии в образовании (робототехника)

10 ч.

1180 руб. 590 руб.
Подать заявку О курсе
  • Сейчас обучается 20 человек из 12 регионов

Мини-курс

Психология обучения и развития детей: от садика до школы

4 ч.

780 руб. 390 руб.
Подать заявку О курсе
  • Сейчас обучается 27 человек из 18 регионов
  • Этот курс уже прошли 11 человек