Как написать программу в PascalABC Net для выполнения задания 15.2 ОГЭ
статья по информатике и икт (9 класс)
В статье рассматриваются примеры некоторых заданий и доходчивым языком объясняется, как написать программу
Скачать:
Вложение | Размер |
---|---|
![]() | 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;
На этих страницах, конечно, не рассмотрены все возможные варианты формулировок задач. Но с этого можно начинать.
По теме: методические разработки, презентации и конспекты
![](/sites/default/files/pictures/2018/01/07/picture-232297-1515340322.jpg)
программа элективного курса "Русский язык ЕГЭ: успешное выполнение задания С"
Программа элективного курса создана на основе критериев оценивания задания с развернутым ответом Демонстрационного варианта ЕГЭ 2013 г. Русский язык, 11 класс, составленного на основе Федерально...
![](/sites/default/files/pictures/2014/01/21/picture-386471-1390329263.png)
Тема: «Анализ выполнения заданий части С и типичные ошибки, допускаемые обучающимися в процессе выполнения задания С8. Методические рекомендации по их устранению»
Проблема в том, что ЕГЭ по обществознанию выбирают в 10 раз больше, чем например ЕГЭ по физике или ЕГЭ по химии. Обществознание нужно для поступления в большинство гуманитарных вузов, причем и для сам...
Пособие по подготовке к выполнению заданий В3-В14 на ОГЭ и В11-В16 на ЕГЭ по английскому языку - заданий на словообразование
Данное пособие предназначено для подготовки к выполнению заданий В3-В14 на ОГЭ и В11-В16 на ЕГЭ по английскому языку –заданий на словообразование : описание алгоритма выполнения заданий, подгото...
![](/sites/default/files/pictures/2019/01/05/picture-1098663-1546721295.jpg)
Подготовка к ЕГЭ • выполнение заданий высокого уровня сложности, задачи на вывод формул Задачи на вывод формул соединений – это задания С5 из 3 части экзаменационной работы ЕГЭ.
Подготовка к ЕГЭ выполнение заданий высокого уровня сложности, задачи на вывод формул Задачи на выво...
![](/sites/default/files/pictures/2023/05/09/picture-621751-1683616515.jpg)
ПРОГРАММА ЭЛЕКТИВНОГО КУРСА ПО ИСТОРИИ 11 КЛАСС РАБОТА С ИСТОРИЧЕСКИМИ ДОКУМЕНТАМИ: ВЫПОЛНЕНИЕ ЗАДАНИЙ ПОВЫШЕННОГО УРОВНЯ СЛОЖНОСТИ
Рабочая программа элективного курса для учащихся 11 класса составлена на основепрограммы элективного курса «Работа с историческими документами&raq...
Методическая разработка "Решение задания 12 «Выполнение алгоритмов для исполнителя» ЕГЭ-2021 по информатике с помощью программы на PascalABC.Net (версия 3.8)
Для решения задания 12 по теме «Выполнение алгоритмов для исполнителя Редактор» можно использовать математический способ решения, а также написать программу на одном из языков программиров...
![](/sites/default/files/pictures/2023/11/22/picture-1497303-1700670384.jpg)
«Подготовка экспертов региональных предметных комиссий по проверке выполнения заданий с развернутым ответом экзаменационных работ по программам среднего общего образования», г. Ханты – Мансийск, 18 февраля 2019 г. – 25 февраля 2019 г., 36 часов.
laquo;Подготовка экспертов региональных предметных комиссий по проверке выполнения заданий с развернутым ответом экзаменационных работ по программам среднего общего образования», г. Ханты &nda...