Как написать программу в PascalABC Net для выполнения задания 15.2 ОГЭ
статья по информатике и икт (9 класс)

Ревченко Людмила Павловна

В статье рассматриваются примеры некоторых заданий и доходчивым языком объясняется, как написать программу

Скачать:

ВложениеРазмер
Microsoft Office document icon Разбор некоторых заданий 15.2 ОГЭ59.5 КБ

Предварительный просмотр:

Как написать программу
в системе программирования PascalABC Net  
для  выполнения задания 15.2 ОГЭ

Уважаемый 9-классник, сдающий в 2020 г. ОГЭ по информатике,  если ты решил для себя, что программирование прошло мимо тебя и не планируешь даже пытаться написать программу, то еще не всё  потеряно.

Смею надеяться, что прочитав  последующее и потренировавшись как следует, ты научишься  и напишешь  программу, и получишь свои 2 балла за неё.

1. Рассмотрим одну из задач.

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

Из условия понятно, что каждое число последовательности (обозначим его а) должно быть введено. Для этого в программе должен быть оператор ввода а:  Readln(a); Как вариант, организовать ввод а в программе можно и так: Write ('Введите число:   ');  Readln(a);

Далее нужно проверить, удовлетворяет ли введенное число необходимым условиям (число двузначное и оканчивается на цифру 4).  Если условия выполняются, то такое число добавляем к сумме (обозначим сумму S) с помощью оператора S := S + a. Проверку выполнения условий осуществляет условный оператор IF следующим образом:  

IF ( a >9)  AND  ( a<100)  AND  ( a  mod 10 = 4 )  THEN  S := S + a;

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

Пояснение к условию a  mod 10 = 4: с помощью операции mod определяется целый остаток от деления а на 10. Аналогично можно проверить, оканчивается ли число а на 1, 2, 3, ..., 9.

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

Write ('Введите число:   ');  Readln(a);

IF ( a >9)  AND  ( a<100)  AND  ( a  mod 10 = 4 )  THEN  S := S + a;

С помощью оператора цикла с заданным числом повторений  (оператор FOR) можно организовать ввод и обработку всех чисел последовательности, количество которых программа получает на вход. Это означает, что количество чисел (обозначим N) должно быть введено с помощью оператора ввода Readln( N ); Как вариант, организовать ввод N в программе можно и так:  Write ('Введите количество чисел:   ');  Readln(N);  Это нужно сделать в самом начале программы (после слова BEGIN).

Оператор цикла FOR организует повторение фрагмента программы (ввод и обработка одного числа) с помощью переменной цикла (обозначим её i).  Первоначально i  принимает значение 1 и фрагмент выполняется первый раз, затем значение i увеличивается на 1 и для i=2 фрагмент выполняется второй раз, и т.д. Когда i примет значение N фрагмент выполнится последний раз.

FOR  i := 1   to  N   do

   begin  

        Write ('Введите число:   ');  Readln(a);

        IF ( a >9)  AND  ( a<100)  AND  ( a  mod 10 = 4 )  THEN  S := S + a;

    end;

Осталось добавить, что для определения правильного результата суммы "подходящих" чисел, начальное значение переменной S должно быть обнулено: S := 0; Этот оператор должен находиться в программе перед оператором цикла.

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

Program P15_2;

Var  N, a, S, i : integer;

BEGIN

   Write ('Введите количество чисел:   ');     Readln(N);  

   S := 0;

   FOR  i := 1   to  N   do

      begin  

          Write ('Введите число:   ');  Readln(a);

           IF ( a >9)  AND  ( a<100)  AND  ( a  mod 10 = 4 )  THEN  S := S + a;

      end;

   Writeln ('Сумма чисел, двузначных и оканчивающихся на 4, =  ', S);

END.

   

В условие задачи есть еще некоторые данные, а именно:  "Количество чисел не превышает 1000. Введённые числа (натуральные) не превышают 30 000". Это означает, что в программе можно выполнять проверку на допустимость вводимых данных: N <= 1000  и 0 < a <= 30000.  Но можно и не выполнять, так как критерии оценивания программ не предполагают снижения баллов за отсутствие таковой проверки.

2. Вот еще похожая задача из Демо-версии 2020г.

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

Составление алгоритма для решения этой задачи мало чем отличается от предыдущей. Обратите внимание на различия: они подчеркнуты.

Program PP15_2;

Var  N, a, K, i : integer;      

BEGIN

   Write ('Введите количество чисел:   ');     Readln(N);  

   K := 0;

   FOR  i := 1   to  N   do

      begin  

          Write ('Введите число:   ');  Readln(a);

           IF  ( a  mod 4 = 0 )  AND  ( a  mod 7 <> 0 )  THEN  K := K + 1;

      end;

   Writeln ('Количество чисел, кратных 4,  но не кратных 7=  ', K);

END.

3. Рассмотрим еще одну задачу, в которой количество введенных чисел неизвестно. В этом случае надо использовать оператор цикла с условием (например, REPEAT ... UNTIL <условие>).

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

Program PPP15_2;

Var  a, K : integer;

BEGIN

    K := 0;

   REPEAT

          Write ('Введите число:   ');  Readln(a);

           IF  ( a  mod 2 = 0 )  AND  ( a  mod  9 =  0 )  THEN  K := K + 1;

   UNTIL  a = 0;  

   Writeln ('Количество четных чисел, кратных 9, =  ', K - 1);

END.

Здесь есть «подводный камень»: когда мы вводим для а значение 0. Ноль удовлетворяет условиям  (0 mod 2 = 0 и 0 mod 9 =0), и количество чисел К увеличивается лишний раз на 1. Решить эту проблему можно, если, например, вывести в результате К – 1.

4. Может встретиться задача определения максимального (MAX) или минимального (MIN) значения а, удовлетворяющего некоторым условиям. Например.

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

До обработки каждого из чисел в цикле (REPEAT в данном случае) переменной  MAX необходимо присвоить начальное значение. Оно должно быть таким, чтобы первое же вводимое число а оказалось больше MAX. Например, MAX := 0; Натуральные числа начинаются с 1, и первое же наше а окажется >MAX. Можно также использовать MAX := -10;  или MAX := - 1;

Если число а окажется >MAX  и для него выполняются необходимые условия, такое а нужно сохранить в переменной МАХ, т.е. MAX := a; 
 IF (a > MAX) and (a mod 3 = 0) and (a mod 10 = 7)  THEN MAX := a;

Program PPPP15_2;

Var  a, MAX : integer;

BEGIN

    MAX := 0;

   REPEAT

          Write ('Введите число:   ');  Readln(a);

           IF (a > MAX) and (a mod 3 = 0) and (a mod 10 = 7)  THEN MAX := a;

   UNTIL  a = 0;  

   Writeln ('Максимальное число, кратное 3 и  оканчивающееся на 7, =  ',  МАХ);

END.

При поиске минимального числа а, удовлетворяющего условиям задачи 4, начальное значение MIN должно быть, наоборот, таким, чтобы первое же а оказалось меньше. Например, MIN := 30001;  Оператор IF будет следующим:

           IF (a < MIN) and (a mod 3 = 0) and (a mod 10 = 7)  THEN MIN := a;

На этих страницах, конечно, не рассмотрены все возможные варианты формулировок задач. Но с этого можно начинать.

        


По теме: методические разработки, презентации и конспекты

программа элективного курса "Русский язык ЕГЭ: успешное выполнение задания С"

Программа элективного курса создана на основе критериев оценивания задания с развернутым ответом Демонстрационного варианта ЕГЭ 2013 г. Русский язык, 11 класс, составленного на основе Федерально...

Тема: «Анализ выполнения заданий части С и типичные ошибки, допускаемые обучающимися в процессе выполнения задания С8. Методические рекомендации по их устранению»

Проблема в том, что ЕГЭ по обществознанию выбирают в 10 раз больше, чем например ЕГЭ по физике или ЕГЭ по химии. Обществознание нужно для поступления в большинство гуманитарных вузов, причем и для сам...

Пособие по подготовке к выполнению заданий В3-В14 на ОГЭ и В11-В16 на ЕГЭ по английскому языку - заданий на словообразование

Данное  пособие предназначено для подготовки к выполнению заданий В3-В14 на ОГЭ и В11-В16 на ЕГЭ по английскому языку –заданий на словообразование : описание алгоритма выполнения заданий, подгото...

Подготовка к ЕГЭ • выполнение заданий высокого уровня сложности, задачи на вывод формул Задачи на вывод формул соединений – это задания С5 из 3 части экзаменационной работы ЕГЭ.

                       Подготовка к ЕГЭ выполнение заданий высокого уровня сложности, задачи на вывод формул Задачи на выво...

ПРОГРАММА ЭЛЕКТИВНОГО КУРСА ПО ИСТОРИИ 11 КЛАСС РАБОТА С ИСТОРИЧЕСКИМИ ДОКУМЕНТАМИ: ВЫПОЛНЕНИЕ ЗАДАНИЙ ПОВЫШЕННОГО УРОВНЯ СЛОЖНОСТИ

           Рабочая программа элективного курса для учащихся 11 класса составлена на основепрограммы элективного курса «Работа с историческими документами&raq...

Методическая разработка "Решение задания 12 «Выполнение алгоритмов для исполнителя» ЕГЭ-2021 по информатике с помощью программы на PascalABC.Net (версия 3.8)

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

«Подготовка экспертов региональных предметных комиссий по проверке выполнения заданий с развернутым ответом экзаменационных работ по программам среднего общего образования», г. Ханты – Мансийск, 18 февраля 2019 г. – 25 февраля 2019 г., 36 часов.

laquo;Подготовка экспертов региональных предметных комиссий по проверке выполнения заданий с развернутым ответом экзаменационных работ по программам среднего общего образования», г. Ханты &nda...