СДЕЛАЙТЕ СВОИ УРОКИ ЕЩЁ ЭФФЕКТИВНЕЕ, А ЖИЗНЬ СВОБОДНЕЕ

Благодаря готовым учебным материалам для работы в классе и дистанционно

Скидки до 50 % на комплекты
только до 12.07.2025

Готовые ключевые этапы урока всегда будут у вас под рукой

Организационный момент

Проверка знаний

Объяснение материала

Закрепление изученного

Итоги урока

Подготовка к ОГЭ, задание 15.2 (Pascal), часть 2. Программирование циклов с заданным условием продолжения работы (цикл-ПОКА)

Категория: Информатика

Нажмите, чтобы узнать подробности

Данный урок предназначен тем, кто еще не умеет программировать циклы на языке Pascal, но хочет разобраться в вариантах задач, решаемых в задании 15.2.  Часть 1 урока посвящена циклу с заданным числом повторений, а здесь - в части 2 разбираются задачи с использованием цикла с заданным условием продолжения работы.

Просмотр содержимого документа
«Подготовка к ОГЭ, задание 15.2 (Pascal), часть 2. Программирование циклов с заданным условием продолжения работы (цикл-ПОКА)»

Подготовка к ОГЭ, задание 15.2 (Pascal), часть 2

Программирование циклов с заданным условием продолжения работы (цикл-ПОКА)

Ключевые слова:


• оператор цикла

• while (цикл-ПОКА)


Цикл с заданным условием продолжения работы (цикл-ПОКА)  программируется в языке Паскаль с помощью оператора while


Общий вид оператора цикла:


   while  do

   begin

     

   end


Здесь:

условие — логическое выражение; пока оно истинно, выполняется тело цикла;

тело цикла — один или несколько операторов, описывающих последовательность действий, выполняемых многократно.


Каждый оператор в программе заканчивается знаком "точка с запятой" (;)Но при этом нужно помнить, что знак "точка с запятой" закрывает не только последний оператор, а все открытые перед ней операторы 



Поэтому если внутри одного оператора (в теле цикла) нужно выполнить два или более других операторов, то их заключают в операторные скобки, которые обозначаются словами begin и end


Решаемые на данном уроке задачи похожи на задачи, рассмотренные на уроке 8.4.5, главное, что меняется здесь - условие цикла и (соответственно этому) порядок обработки данных.


Для упрощения ввода исходных данных можно вводить их двумя способами, которые приведут к одному результату:

  • отдельно в каждой строке, как дано в примере. Для этого используется оператор readln();

  • все числа в одной строке через пробел, используя оператор read().

Второй из приведенных способов ввода чисел:

  •  более удобен в случае необходимости запускать решение задачи несколько раз, так как после копирования заданной последовательности чисел и вставки их в окно ввода достаточно эту строку скопировать в буфер, и при повторных запусках программы тогда будет достаточно вставить эту строку в окно ввода;

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

Для вывода результатов в отдельных строках используем операторы println() :


         println (kol);

         println (sr/kol);

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

Для вывода результатов в отдельные строки, как это показано в примерах, следует использовать операторы println (), количество которых будет зависеть от условия задачи, где перечислены получаемые в примере результаты.



Задача 5. Вычисление суммы всех чисел, кратных заданному числу и оканчивающегося на указанную цифру 

Напишите программу, которая в последовательности натуральных чисел определяет сумму всех чисел, кратных 6 и оканчивающихся на 4. Программа получает на вход натуральные числа, количество введённых чисел неизвестнопоследовательность чисел заканчивается числом 0 (— признак окончания ввода, не входит в последовательность). Количество чисел не превышает 1 000. Введённые числа не превышают 30 000. Программа должна вывести одно число: сумму всех чисел, кратных 6 и оканчивающихся на 4.

   Пример работы программы:

Решение

В данной задаче нужно найти сумму всех чисел в последовательности, кратных (то есть остаток от деления этих чисел на 6 равен 0) и оканчивающихся на (то есть остаток от деления этих чисел на 10 равен 4). Условия "Количество чисел не превышает 10 000"  и "Введённые числа не превышают 30 000" не влияют на решение задачи, так как данные ограничения в условии не рассматриваются. 

За начальное значение искомой суммы принимаем ноль, так как он не повлияет на ее значение в процессе суммирования. 

Для ввода чисел используем оператор read(), а не readln() (см. описание урока).

В данной программе выполняем оператор read(a) дважды: читаем первое значение  числа а перед началом цикла, иначе цикл не выполнится ни разу, и второй раз - внутри цикла для чтения остальных чисел последовательности.

Исходный текст программы:

   var a, sum, kol: integer;

   begin

     sum := 0;   

     kol := 0; 

     read(a);

     while a 0 do 

       begin

          if (a mod 6 = 0) and (a mod 10 = 4) then 

            sum += a;  

          read(a);

       end;

     print(sum); 

   end.

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



Задача 6. Определение количества чётных (нечетных) чисел, кратных указанному числу

Напишите программу, которая в последовательности целых чисел определяет их количество нечётных чисел, кратных 3. Программа получает на вход целые числа, количество введённых чисел неизвестно, последовательность чисел заканчивается числом 0 (0 — признак окончания ввода, не входит в последовательность). Количество чисел не превышает 1 000. Введённые числа по модулю не превышают 30 000. Программа должна вывести два числа: длину последовательности (завершающий 0 не учитывается) и количество нечётных чисел, кратных 3.

Пример работы программы:

 

Решение

В данной задаче нужно найти в последовательности  количество нечётных чисел, кратных 3т.е. чисел, которые делятся на 3 с остатком, равным 0, и на с остатком, не равным 0 (или с остатком, равным единице.). 

Исходный текст программы:

   var a, dl, kol: integer;

      begin

        dl := 0;   

        kol := 0; 

        read ( a );

        while a 0 do 

          begin

            dl += 1;

            if (a mod 3 = 0) and (a mod 2 = 1)  then 

              kol += 1;  

              read ( a );

          end;

        println ( dl ); 

        println ( kol ); 

      end.

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



Задача 7. Определение суммы чисел и разности количества положительных и отрицательных чисел

Напишите программу, которая в последовательности целых чисел определяет их сумму и подсчитывает разность количества положительных и отрицательных чисел последовательности. Программа получает на вход целые числа, количество введённых чисел неизвестно, последовательность чисел заканчивается числом 0 (0 — признак окончания ввода, не входит в последовательность).

     Количество чисел не превышает 1 000. Введённые числа по модулю не превышают 30 000.  

     Программа должна вывести  два числа: сумму всех чисел последовательности и разность количества положительных и отрицательных чисел.

Пример работы программы:

  

Решение

Подсчет суммы всех чисел не вызывает вопросов, но для получения  разности количества положительных и отрицательных чисел нужно объявить две суммы - kolp для накопления количества положительных чисел и kolo - аналогично для отрицательных чисел. Проверку на а = 0 не делаем, так как 0 - это конец ввода чисел и в подсчете не участвует, и при входе в цикл задаем условие  a 0 (a не равно нулю).

Для определения знака числа здесь необходимо применить оператор условного перехода if.

Подсчет разности  количества положительных и отрицательных чисел выполним непосредственно в операторе вывода результата на экран.

   

Исходный текст программы:


   var a, sum, kolp, kolo: integer;

      begin

        sum := 0;   

        kolp := 0;

        kolo := 0;

        read(a);

        while a 0 do 

          begin

            sum += a;

            if (a 0) then 

              kolp += 1

            else

              kolo += 1;

            read(a);

          end;

        print(sum, kolp-kolo); 

      end.

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

Для вывода результатов в отдельных строках используем операторы println() :


         println (sum);

         println (kolp-kolo);

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



Задача 8. Определение среднего арифметического n-значных чисел, кратных заданному числу и не превосходящих его

Напишите программу, которая в последовательности натуральных чисел определяет среднее арифметическое значение трёхзначных чисел, кратных 4 и не превосходящих число 256. Программа получает на вход натуральные числа, количество которых неизвестно, последовательность чисел заканчивается числом 0 (– признак окончания ввода, не входит в последовательность). Количество чисел не превышает 1 000. Введённые числа не превышают 30 000. Программа должна вывести одно число - среднее арифметическое значение трехзначных чисел, кратных 4 и меньших числа 256.

Пример работы программы:

Решение

Данная задача содержит три явных условия, которые должны выполняться одновременно. Заметим, что описание интервала трехзначных чисел содержит две проверки, поэтому всего условий стало четыре:

                          (a99) and (a

При этом из двух одновременно выполняемых проверок   (aи    (aможно   оставить одну, тогда получаем условие чуть короче: 

                             (a99) and (a

Чтобы посчитать среднее арифметическое значение, нужно найти сумму и количество чисел, соответствующих условиям отбора. При этом, так как  значение суммы выводить не нужно, то можно это значение в переменной не сохранять, а использовать сразу для вычисления среднего арифметического значения. Назовем эту переменную sr

Поскольку среднее арифметическое значение получается путем обычного деления, в результате которого в программе на языке Паскаль получается всегда вещественное число, объявляем переменную sr как real. Это не помешает нам использовать ее сначала для подсчета суммы, а затем и для получения результата.

Исходный текст программы, вариант 1:

   var a, kol: integer;

         sr: real;

     begin  

       kol := 0;

       sr := 0;

       read  ( a );

       while a 0 do 

        begin

          if (a 99) and (a and (a mod 4 = 0) then

          begin

             kol += 1;

             sr += a;

          end;

          read(a);

        end;

        sr := sr / kol;

        print(kol, sr ); 

     end.



Можно выполнить задачу и без использования вещественной переменной. Для этого достаточно не сохранять результат деления в переменную, а выполнить операцию деления непосредственно в операторе вывода результатов на экран. Тогда программа будет проще в написании и быстрее выполняться.

Исходный текст программы, вариант 2:

   var a, kol, sr: integer;

     begin  

       kol := 0;

       sr := 0;

       read  ( a );

       while a 0 do 

        begin

          if (a 99) and (a and (a mod 4 = 0) then

          begin

             kol += 1;

             sr += a;

          end;

          read(a);

        end;

        print (kol, / kol ); 

     end.

Для вывода результатов в отдельных строках используем операторы println() :


         println(kol);

         println(sr/kol);

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


Скачать

Рекомендуем курсы ПК и ППК для учителей

Вебинар для учителей

Свидетельство об участии БЕСПЛАТНО!

Поделитесь с друзьями
ВКонтактеОдноклассникиTwitterМой МирLiveJournalGoogle PlusЯндекс