Задание 15.2 в ОГЭ по информатике на составление программы. Как правило, это программы содержащие и циклы и условия. В этой статье постараемся разобраться как решать такие задачи.
Условный оператор присутствует практически в каждой задаче. В решении задач используют два вида циклов: цикл с параметром и цикл с предусловием.
Паскаль ОГЭ как решать?
Чтобы определить какой цикл следует использовать, необходимо внимательно прочитать задание.
- Если в задаче сказано: программа получает на вход количество чисел, то следует использовать цикл с параметром.
- Если в задаче сказано: количество введённых чисел неизвестно, а последовательность чисел заканчивается 0 , то следует использовать цикл с предусловием.
Разберем несколько вариантов задач, с которыми придется столкнуться на экзамене по информатике в 9 классе.
Пример 1. Напишите программу, которая в последовательности натуральных чисел определяет количество всех чётных чисел, кратных 5. Программа получает на вход натуральные числа, количество введённых чисел неизвестно, последовательность чисел заканчивается числом 0 (0 — признак окончания ввода, не входит в последовательность). Количество чисел не превышает 1000. Введённые числа не превышают 30 000. Программа должна вывести одно число: количество всех чётных чисел, кратных 5.
Решение:
Читая условие задачи, явно видим, что нам необходим цикл с предусловием. А также нам нужно будет отбирать четные числа, да еще и кратные 5. Следовательно, в программе будем записывать два условия:
- определение четности числа: a mod 2 =0
- определение кратности 5: a mod 5 =0
Причём эти условия должны выполняться одновременно. А значит, нужно составить из них одно сложное условие, используя логическую операцию — умножение. Вот так:
(a mod 2 =0) and (a mod 5 =0)
Поясним обозначения переменных:
- k — количество чисел, удовлетворяющих условиям задачи,
- a — число, которое получает программа на входе
Теперь, для большего понимания, сделаем блок-схему
Как это работает?
- Программа получает на вход число а.
- Далее оно проходит через условие окончания цикла a<>0. Если условие не выполняется, то заходим внутрь цикла и проверяем число а по критериям задачи.
- Если критерии выполнены, то число заносится в счетчик (k+1).
- Далее вводится следующее значение числа а (новое число).
- Идем по стрелке на проверку условия цикла. Если оно выполняется, то повторяем предыдущие шаги внутри цикла.
- При невыполнении (a=0) выводим полученное значение k и завершаем программу.
Текст программы на Паскале:
var a, k: integer; begin k:=0; readln(a); while a<>0 do begin if (a mod 5=0) and (a mod 2=0) then k:=k+1; readln(a); end; writeln(k) end.
Пример 2. Напишите программу, которая в последовательности натуральных чисел определяет сумму чисел, оканчивающихся на 3. Программа получает на вход количество чисел в последовательности, а затем сами числа. В последовательности всегда имеется число, оканчивающееся на 3. Количество чисел не превышает 100. Введённые числа не превышают 300. Программа должна вывести одно число — сумму чисел, оканчивающихся на 3.
Решение:
Читая условие задачи, явно видим, что нам необходим цикл с параметром. А также нам нужно будет сумму только тех чисел, которые оканчиваются цифрой 3. Следовательно, в программе будем записывать одно условие: a mod 10 =3
Если все еще не понятно, почему такое условие, советую сначала почитать статью «Операции с целыми числами»
Поясним обозначения переменных:
- n — количество вводимых чисел,
- s — сумма чисел, удовлетворяющих условиям задачи,
- a — число, которое получает программа на входе,
- i — параметр цикла, счетчик выполнений цикла
Теперь, для большего понимания, сделаем блок-схему
Как это работает?
- Программа получает на вход количество чисел n.
- Начинается цикл, который выполнится ровно столько раз сколько указано количество чисел. В качестве счетчика введенных чисел, используется переменная цикла i (параметр цикла).
- На первом шаге цикла программа получает первое число а. Проверяется условие. Если число оканчивается цифрой 3, то сумма s увеличивается на значение введенного числа а (s+a).
- Далее шаги внутри цикла повторяются с каждым новым числом.
- После обработки в цикле последнего числа выводится результат вычисленной суммы.
Текст программы на Паскале:
var a,i,s,n: integer; begin readln(n); s:=0; for i:=1 to n do begin readln(a); if a mod 10=3 then s:=s+a; end; writeln(s); end.
Программа в примере 2 не работает!!!
Проверил, работает!!!