Задание 6 ОГЭ по информатике: исполнение алгоритма на языке программирования
материал для подготовки к егэ (гиа) по информатике и икт (9 класс)

Руденко Юлия Владимировна

Статья посвящена методическому разбору задания №6 основного государственного экзамена по информатике. Рассматривается задание базового уровня сложности, проверяющее умение читать и формально исполнять фрагмент программы на языке программирования высокого уровня (Pascal, Python, C++, Алгоритмический язык). В работе последовательно раскрыты: проверяемые элементы содержания согласно спецификации ФИПИ; две основные разновидности задания — анализ серии запусков программы с условным оператором и пошаговое моделирование цикла с вычислением итогового значения переменной; фундаментальные правила, включая приоритет логических операций и методику ведения таблицы трассировки. Для каждой разновидности приведён подробный алгоритм решения с пошаговым заполнением таблицы и наглядной фиксацией промежуточных результатов. Особое внимание уделено типичным ошибкам: неверный приоритет логических связок, путаница между строгими и нестрогими неравенствами, ошибка на единицу при работе цикла, потеря промежуточных значений. Приведены примеры решения задач с условным оператором (and, or) и циклами (while, for) с подробным комментарием.

Скачать:

ВложениеРазмер
Файл zadanie_6_oge_po_informatike.docx28.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) —  мультипарадигменный язык программирования. Поддерживает обьектно-ориентированный,  императивный  и функциональный стили. ...