ГлавнаяОГЭ ИнформатикаТеорияОсновы программирования: типы данных, операторы, циклы (ОГЭ)

Основы программирования: типы данных, операторы, циклы (ОГЭ)

Коротко о главном

Задания 6 и 16 ОГЭ проверяют умение читать и анализировать программы (Python, Паскаль, школьный алгоритмический язык). Нужно уверенно понимать:

  • какие бывают типы данных и как они меняются при операциях;
  • как работают операторы присваивания, ветвления и циклов;
  • как "прокрутить" программу в голове (трассировка) и получить результат.

Главный навык — трассировка кода: пошагово выписывать значения переменных после каждой строки.

Определения и правила

Типы данных

Тип Обозначение Примеры значений Особенности
Целый int 5, -3, 0 Деление // даёт целое, / — вещественное
Вещественный float 3.14, -0.5 Появляется при /, при вводе через точку
Строковый str "abc", "5" Объединяется через + (конкатенация)
Логический bool True, False Результат сравнений и условий

Правило смешения типов: int + float → float; str + str → строка (не сложение чисел!); int / int → float (в Python 3).

Основные операторы (Python)

a=a+1— увеличение на 1a = a + 1 \quad\text{— увеличение на 1} a,b=b,a— обмен значенийa, b = b, a \quad\text{— обмен значений}

  • // — целочисленное деление (частное без остатка);
  • % — остаток от деления;
  • ** — возведение в степень.

Пример: 17  //  5=317 \; // \; 5 = 3, 17  %  5=217 \; \% \; 5 = 2.

Условный оператор

if условие:
    действие1
else:
    действие2

Выполняется только одна из веток — та, для которой условие истинно (True) или ложно (False).

Циклы

Цикл с известным числом повторений (for):

for i in range(n):
    действие

Выполняется ровно nn раз, переменная ii пробегает значения 0,1,...,n−10, 1, ..., n-1.

Цикл с условием (while):

while условие:
    действие

Выполняется, пока условие истинно. Если условие никогда не станет ложным — бесконечный цикл (ошибка).

Ключевое правило трассировки: после каждого прохода цикла записывай новые значения всех переменных в таблицу — так легче не потерять шаг.

Как применять

Пример 1. Целочисленное деление

a = 27
b = a // 5
c = a % 5
print(b, c)

Трассировка: a=27a=27, b=27//5=5b = 27 // 5 = 5, c=27%5=2c = 27 \% 5 = 2. Ответ: 5 2.

Пример 2. Цикл с накоплением суммы

s = 0
for i in range(1, 5):
    s = s + i
print(s)

range(1,5) даёт значения 1, 2, 3, 4 (5 не включается!). Трассировка: s=0→1→3→6→10s=0 \to 1 \to 3 \to 6 \to 10. Ответ: 10.

Пример 3. Цикл while с условием

n = 1
while n < 20:
    n = n * 2
print(n)

Шаги: n=1→2→4→8→16→32n=1 \to 2 \to 4 \to 8 \to 16 \to 32. Проверка n<20n<20 проваливается при n=32n=32, цикл останавливается. Ответ: 32.

Типичные ошибки

  • Путают // и /: / всегда даёт вещественный результат, // — целую часть без округления вверх.
  • Неверно определяют границы range(): range(a, b) не включает b — последнее значение b−1b-1.
  • Забывают, что условие цикла проверяется ДО тела: если условие сразу ложно, тело while не выполнится ни разу.
  • Складывают строки как числа: "5" + "3" даёт "53", а не 8.
  • Теряют порядок присваивания при обмене переменных: без временной переменной a = b; b = a не меняет значения местами правильно (нужно a, b = b, a или через временную переменную).
  • Ошибка в приоритете операций: сначала **, потом *, /, //, %, потом +, -.

Где встречается на экзамене

  • Задание 6: анализ короткой программы (5–10 строк) с присваиваниями, циклом for/while и арифметическими операциями — нужно определить итоговое значение переменной.
  • Задание 16: разработка и анализ более сложного алгоритма, часто с вложенными циклами или условиями, обработкой массива/последовательности чисел, требуется написать фрагмент программы или посчитать результат по описанному алгоритму.

Частые вопросы

Чем отличается `/` от `//` в Python?

/ — обычное деление, всегда возвращает вещественное число (float). // — целочисленное деление, возвращает целую часть результата без округления вверх, например 17//5=317 // 5 = 3.

Как понять, сколько раз выполнится цикл for in range(a, b)?

Цикл выполнится b−ab-a раз, значения переменной пробегают от aa до b−1b-1 включительно. Например, range(2, 6) даёт 2, 3, 4, 5 — 4 повторения.

Когда цикл while может стать бесконечным?

Когда условие в заголовке никогда не становится ложным — например, если внутри цикла забыли изменить переменную, от которой зависит условие.

Как проверить приоритет операций при трассировке?

Сначала выполняется возведение в степень **, затем умножение, деление, целочисленное деление и остаток (*, /, //, %) слева направо, затем сложение и вычитание +, -.

Почему "5" + "3" не равно 8?

Потому что обе переменные — строки (str), а не числа. Оператор + для строк выполняет конкатенацию (склеивание), результат — строка "53".

Как правильно поменять значения двух переменных местами?

Через временную переменную: t = a; a = b; b = t, либо одной строкой в Python: a, b = b, a. Простое a = b; b = a не сработает, так как исходное значение a теряется.

Потренироваться: задание 16 · задание 6