Задание 6 ОГЭ по информатике: исполнение алгоритма на языке программирования
материал для подготовки к егэ (гиа) по информатике и икт (9 класс)
Статья посвящена методическому разбору задания №6 основного государственного экзамена по информатике. Рассматривается задание базового уровня сложности, проверяющее умение читать и формально исполнять фрагмент программы на языке программирования высокого уровня (Pascal, Python, C++, Алгоритмический язык). В работе последовательно раскрыты: проверяемые элементы содержания согласно спецификации ФИПИ; две основные разновидности задания — анализ серии запусков программы с условным оператором и пошаговое моделирование цикла с вычислением итогового значения переменной; фундаментальные правила, включая приоритет логических операций и методику ведения таблицы трассировки. Для каждой разновидности приведён подробный алгоритм решения с пошаговым заполнением таблицы и наглядной фиксацией промежуточных результатов. Особое внимание уделено типичным ошибкам: неверный приоритет логических связок, путаница между строгими и нестрогими неравенствами, ошибка на единицу при работе цикла, потеря промежуточных значений. Приведены примеры решения задач с условным оператором (and, or) и циклами (while, for) с подробным комментарием.
Скачать:
| Вложение | Размер |
|---|---|
| 28.98 КБ |
Предварительный просмотр:
Задание 6 ОГЭ по информатике: исполнение алгоритма на языке программирования
Задание №6 продолжает линию проверки алгоритмической грамотности выпускника, но переводит её на качественно иной уровень. Если в задании №5 экзаменуемый имел дело с алгоритмом, описанным на естественном языке, то здесь предлагается фрагмент программы на одном из разрешённых языков высокого уровня (Pascal, Python, C++, Алгоритмический язык). От ученика требуется мысленно «исполнить» этот фрагмент для заданных входных данных и определить, что будет выведено на экран, либо какое значение примет переменная после завершения цикла.
Задание относится к базовому уровню сложности, однако требует от девятиклассника не только понимания синтаксиса конкретного языка, но и способности прослеживать динамику изменения переменных в теле цикла — навыка, без которого невозможно дальнейшее изучение программирования.
Что проверяет задание
Согласно спецификации контрольных измерительных материалов, задание №6 направлено на проверку следующих предметных результатов:
- Умение читать и понимать фрагмент программы на языке программирования высокого уровня.
- Владение понятиями: переменная, присваивание, арифметическое и логическое выражение.
- Понимание работы циклических конструкций: цикл с предусловием (while), цикл с параметром (for), цикл с постусловием (repeat).
- Знание синтаксиса условного оператора (if-then-else).
- Способность пошагово отслеживать изменение значений переменных на каждой итерации цикла и определять условие его завершения.
ФИПИ гарантирует, что экзаменуемый может выбрать для анализа любую из реализаций, представленных в варианте, — как правило, условие содержит фрагменты на трёх–четырёх языках одновременно, и все они эквивалентны по логике работы. Это позволяет ученику работать с тем синтаксисом, который ему наиболее знаком.
Типовые формулировки задания
В демоверсиях и открытом банке ФИПИ задание №6 формулируется следующим образом:
Ниже приведена программа, записанная на трёх языках программирования. Было проведено 10 запусков программы, при которых в качестве значений переменных s и t вводились следующие пары чисел: (1, 2); (11, 5); (5, 12); (8, –3); (7, 7); (10, 10); (–6, 8); (5, 5); (2, 9); (4, –1). Сколько было запусков, при которых программа напечатала «YES»?
Паскаль:
var s, t: integer;
begin
readln(s);
readln(t);
if (s>5) and (t < 10)
then writeln('YES')
else writeln('NO');
end.
Python:
```
s = int(input())
t = int(input())
if s>5 and t < 10:
print('YES')
else:
print('NO')
```
Возможны модификации:
- Условие в операторе if может быть сложным, содержать несколько логических связок (and, or, not), а также включать арифметические выражения.
- Может требоваться подсчёт количества запусков с выводом «NO», а не «YES».
- Вместо пары переменных может использоваться одна переменная, модифицируемая в цикле, и требоваться определить её значение после завершения цикла.
- Цикл может быть типа while с изменяющимся условием, и тогда задача сводится к пошаговому моделированию итераций.
Фундаментальные правила, обеспечивающие успешное решение
1. Точное понимание синтаксиса выбранного языка. Ученик должен безошибочно распознавать: оператор присваивания (:= в Паскале, = в Python), операторы сравнения (, <, =, <=, ==, !=), логические связки (and, or, not), структуру условного оператора (if-else) и цикла (for, while).
2. Приоритет логических операций. В сложных условиях порядок вычислений таков: сначала арифметические операции, затем сравнения, затем not, затем and, затем or. Скобки, если они есть, изменяют этот порядок. Непонимание приоритета — одна из самых частых причин ошибок.
3. Таблица трассировки. Ключевой инструмент для решения — ведение таблицы на черновике, в которой для каждого запуска (или каждой итерации цикла) фиксируются значения всех переменных и результат проверки условия. Попытка решить задачу «в уме», без письменной фиксации, почти гарантированно ведёт к ошибке при подсчёте.
4. Различие между оператором присваивания и сравнения. В Паскале оператор сравнения «равно» записывается как `=`, а присваивание — как `:=`. В Python оба записываются как `=`, что иногда вызывает путаницу у учеников, изучавших Паскаль. В контексте ОГЭ это различие нужно чётко помнить.
Пошаговый алгоритм решения (разновидность с условным оператором и серией запусков)
Рассмотрим универсальную методику на примере задачи, приведённой выше.
Шаг 1. Понять условие вывода «YES».
Внимательно читаем условный оператор: `if (s >5) and (t < 10)`. Конъюнкция (and) истинна только тогда, когда истинны оба условия одновременно. Следовательно, программа напечатает «YES» для тех пар (s, t), в которых s строго больше 5 и одновременно t строго меньше 10.
Шаг 2. Подготовить таблицу для анализа.
На черновике создаём таблицу с колонками: № запуска, s, t, s > 5, t < 10, оба условия, результат.
Шаг 3. Для каждой пары (s, t) вычислить логические значения и итог.
Последовательно, запуск за запуском, заполняем строки таблицы:
№ | s | t | s > 5 | t < 10 | Оба истинны? | Результат |
1 | 1 | 2 | нет | да | нет | NO |
2 | 11 | 5 | да | да | да | YES |
3 | 5 | 12 | нет | нет | нет | NO |
4 | 8 | –3 | да | да | да | YES |
5 | 7 | 7 | да | да | да | YES |
6 | 10 | 10 | да | нет | нет | NO |
7 | –6 | 8 | нет | да | нет | NO |
8 | 5 | 5 | нет | да | нет | NO |
9 | 2 | 9 | нет | да | нет | NO |
10 | 4 | –1 | нет | да | нет | NO |
Шаг 4. Подсчитать количество строк с результатом «YES».
Просматриваем колонку «Результат» и считаем: YES встречается в запусках №2, №4, №5 — всего 3 раза.
Шаг 5. Записать ответ в бланк.
Ответ — одно целое число: 3. Никаких дополнительных символов, знаков или букв в бланк вносить не нужно.
Пошаговый алгоритм решения (разновидность с циклом while)
Рассмотрим второй тип задачи, требующий пошагового моделирования цикла.
Запишите значение переменной s после выполнения фрагмента программы:
```
s = 0
k = 1
while k < 10:
s = s + k
k = k + 2
```
Шаг 1. Зафиксировать начальные значения.
s = 0, k = 1.
Шаг 2. Составить таблицу итераций.
Колонки: итерация, k (перед проверкой условия), k < 10, s (после выполнения тела цикла), k (после выполнения тела цикла).
Итерация | k на входе | k < 10? | s после | k после |
1 | 1 | да | 0 + 1 = 1 | 1 + 2 = 3 |
2 | 3 | да | 1 + 3 = 4 | 3 + 2 = 5 |
3 | 5 | да | 4 + 5 = 9 | 5 + 2 = 7 |
4 | 7 | да | 9 + 7 = 16 | 7 + 2 = 9 |
5 | 9 | да | 16 + 9 = 25 | 9 + 2 = 11 |
6 | 11 | нет | - | - |
Шаг 3. Зафиксировать значение после выхода из цикла.
Цикл завершился, когда k стало равно 11 и условие k < 10 перестало выполняться. Итоговое значение s = 25.
Шаг 4. Записать ответ.
Ответ: 25.
Критерии оценивания и формат ответа
Задание оценивается в 1 первичный балл. Ответ — одно целое число. Балл выставляется при полном совпадении ответа с эталоном.
Типичные ошибки и стратегии их предотвращения
1. Неверный приоритет логических операций. Выражение `if s>5 and t < 10` некоторые ученики читают как «если s больше, чем 5 and t, и это всё меньше 10». Это грубая синтаксическая ошибка. Необходимо чётко помнить: операторы сравнения выполняются перед логическими связками, поэтому выражение эквивалентно `if (s >5) and (t < 10)`.
2. Путаница между строгими и нестрогими неравенствами. В условии сказано `s >5`, а ученик мысленно читает «s больше или равно 5». В результате для пары (5, 2) он ошибочно ставит YES, хотя s = 5 не больше 5. Важно приучаться к буквальному прочтению знаков.
3. Ошибка на единицу при подсчёте. Заполнив таблицу, ученик сбивается при пересчёте строк с YES. Чтобы избежать этого, полезно помечать строки с YES яркой галочкой на черновике, а затем считать именно галочки, а не строки в таблице.
4. Остановка цикла на границе. В цикле `while k < 10` ученик может решить, что при k = 9 цикл не выполняется. Важно помнить: условие проверяется перед каждой итерацией, и при k = 9 (9 < 10 — истина) тело цикла ещё выполняется.
5. Потеря промежуточных значений. В циклах с параметром for или с усложнённым телом (несколько операторов) ученик может не учесть изменение переменной внутри тела и использовать её старое значение на следующей итерации. Единственная защита — строгая таблица трассировки.
6. Невнимание к начальным значениям. Иногда переменная инициализируется не нулём, а другим числом. Пропуск этой детали ведёт к систематическому сдвигу всех вычислений.
Пример решения с подробным комментарием (условный оператор с or)
Условие: Дана программа:
```
if (s >10) or (t>12):
print('YES')
else:
print('NO')
```
Были проведены запуски со следующими парами (s, t): (1, 13); (14, 5); (15, 10); (8, 15); (11, 12); (10, 14). Сколько было запусков с результатом YES?
Решение:
1. Условие: `(s> 10) or (t >12)`. Дизъюнкция (or) истинна, если истинно хотя бы одно из условий.
2. Составляем таблицу:
№ | s | t | s > 10 | t >12 | Хотя бы одно? | Результат |
1 | 1 | 13 | нет | да | да | YES |
2 | 14 | 5 | да | нет | да | YES |
3 | 15 | 10 | да | нет | да | YES |
4 | 8 | 15 | нет | да | да | YES |
5 | 11 | 12 | да | нет | да | YES |
6 | 10 | 14 | нет | да | да | YES |
Все шесть запусков дали YES.
Ответ: 6.
Пример решения (цикл for)
Условие: Определите, что будет выведено в результате работы фрагмента программы:
```
s = 0
for i in range(1, 6):
if i % 2 == 0:
s = s + i
print(s)
```
Решение:
1. Цикл for i in range(1, 6) пробегает значения i = 1, 2, 3, 4, 5.
2. Условие `i % 2 == 0` истинно для чётных i (2 и 4).
3. Таблица итераций:
i | i % 2 == 0? | s после |
1 | нет | 0 |
2 | да | 0 + 2 = 2 |
3 | нет | 2 |
4 | да | 2 + 4 = 6 |
5 | нет | 6 |
Выводится s = 6.
Ответ: 6.
Заключение
Задание №6 ОГЭ по информатике — это принципиальный рубеж между пользовательским и программистским мышлением. Умение «прокрутить» в голове несложный программный код, отследить изменение переменных и правильно интерпретировать логические условия — навык, без которого невозможно двигаться дальше ни в информатике, ни в смежных дисциплинах, требующих алгоритмического подхода. Для гарантированного получения балла на экзамене достаточно методично прорешать 20–25 типовых задач из открытого банка ФИПИ, обязательно фиксируя все промежуточные значения в таблице трассировки. При таком подходе время выполнения не превышает 3–4 минут, а результат становится абсолютно предсказуемым.
По теме: методические разработки, презентации и конспекты
Краткий сборник задач (с решением) по теме «Организация линейных, разветвляющихся и циклических алгоритмов на языке программирования Паскаль»
Данный сборник пригодится педагогам, которые преподают в осноыной школе программирование на языке Паскаль, а также для увлекающихся начальным программированием учеников....

Циклические алгоритмы на языке программирования работа с ними
Изучение теоретического материала и решение задач по теме: Циклические алгоритмы....

Конспект урока по теме «Запись алгоритмов на языках программирования. Язык программирования Python»
Вся история человечества – это история раздвигания граней неизвестного. Одним из вечно спорных и до сих пор нерешенных вопросов человека к самому себе остается вопрос о возможности создания иску...
Презентация к уроку информатики по теме "Программирование циклических алгоритмов на языке Python"
В презентации дано понятие цикла, описаны виды циклов, программирование циклов и задачи для практической работы на уроке....

Использование языка программирования Python для решения задачи 12 ЕГЭ по информатике (Сложные исполнители и алгоритмы)
В статье приводится пример решения задачи 12 ЕГЭ по информатике (Сложные исполнители и алгоритмы), которое успешно решается с помощью программы на языке программирования Python....

ИНДИВИДУАЛЬНЫЙ ИТОГОВЫЙ ПРОЕКТ по предмету «информатика» на тему: «Изучение языка программирования JavaScript »
JavaScript (аббревиатура. JS) — мультипарадигменный язык программирования. Поддерживает обьектно-ориентированный, императивный и функциональный стили. ...

