Экзамен по блоку 1

Как устроен экзамен по блоку 1 «Язык C и базовые алгоритмы» и как к нему подготовиться

Прогресс курса Блок 1 из 4 пройден
Экзамен — в конце блока 1, после раздела 13: тест по разделам 1–13 и практическая задача по билету. Оценка за экзамен — оценка за блок. Тест и билеты — на портале; раздел открывает преподаватель после проверки допуска.
01

Допуск и состав экзамена

ЧтоУсловие
Допускпрактические работы №1–11 сданы не ниже «удовлетворительно» (50 баллов из 100)
Тест20 вопросов из банка по разделам 1–13, 30 минут, 40 % оценки
Практическая задачаодна задача по билету на материале практических работ №2–11, 45 минут, 60 % оценки; после сдачи — короткое устное объяснение
Оценка за блоктест (0–100) · 0,4 + задача (0–100) · 0,6
ИтогОценка
85–100«отлично»
70–84«хорошо»
50–69«удовлетворительно»
менее 50«неудовлетворительно»

Та же шкала 85 / 70 / 50, что у каждой практической работы. Так же устроены экзамены по блокам 2 и 3; в конце курса — дифференцированный зачёт по всему курсу.

02

Тест: что повторить

Вопросы — такие же, как в тестах разделов: «что выведет фрагмент», выбор верного утверждения, соответствие. Лучшая подготовка — пройти ещё раз тесты разделов 1–13 и разобрать свои ошибки.

РазделыГлавное для теста
1–3этапы сборки и сообщения на каждом, error и warning, модель задачи и тесты, типы и их диапазоны, переполнение, погрешность double, беззнаковые
4, 5целое деление и остаток, приоритеты, i++ и неопределённое поведение, форматы printf и scanf, результат scanf, сокращённое вычисление, цепочка else if, switch и break
6, 7число итераций и проверок, while и do while, конечность цикла, начальные значения накопителей, параметры по значению, прототип, ошибки компоновщика
8, 9индексы и границы, массив в функции, двоичный поиск, O-нотация, число сравнений и инверсии в сортировках, устойчивость, диагонали и транспонирование
10–13адрес и разыменование, разность указателей, '\0' и размер под строку, fgets и переполнение буфера, strcmp, маски и множества, ->, режимы fopen, ошибка while (!feof)
03

Практическая задача: 30 билетов

По три билета на каждую практическую работу №2–11 — задачи разного типа на одном материале. Студенты одной подгруппы получают билеты по разным работам.

МатериалБилеты и темы
ПЗ №2, линейные программы1 — время в пути; 11 — платёж по кредиту (pow, округление до копеек); 12 — секунды в дни и часы (выбор типа)
ПЗ №3, ветвления2 — вид треугольника (допуск для вещественных); 13 — следующая дата (високосный год, switch); 14 — стоимость доставки (switch, округление веса вверх)
ПЗ №4, цикл с предусловием3 — цифровой корень; 15 — последовательность Коллатца (тип для максимума); 16 — несократимая дробь (алгоритм Евклида, знак)
ПЗ №5, цикл с постусловием4 — двоичная запись с повтором ввода; 17 — «угадай число»; 18 — меню-накопитель
ПЗ №6, цикл с параметром5 — таблица функции с целым счётчиком; 19 — совершенные числа (делители до √n); 20 — ромб из символов (вложенные циклы)
ПЗ №7, одномерные массивы6 — циклический сдвиг за O(n); 21 — удаление повторов на месте; 22 — самый длинный возрастающий участок за один проход
ПЗ №8, двумерные массивы7 — побочная диагональ и транспонирование; 23 — седловые точки; 24 — обход по спирали
ПЗ №9, строки8 — палиндром; 25 — число слов и самое длинное слово; 26 — шифр Цезаря
ПЗ №10, множества9 — общие буквы двух слов; 27 — решето Эратосфена на битах; 28 — подмножество с заданной суммой перебором масок
ПЗ №11, текстовые файлы10 — ниже среднего балла; 29 — частоты букв в файле; 30 — слияние двух упорядоченных файлов

Полные условия, примеры и критерии — на портале. Задача — одна программа, решаемая за 45 минут; разрешено пользоваться страницами курса и своими практическими работами. Поэтому главная подготовка — иметь под рукой свои работы в порядке и помнить, где что лежит: read_int (раздел 7), read_line (раздел 11), сортировки и поиск (раздел 8), parse_student (раздел 13).

Как распределить 45 минут. 5 минут — прочитать билет, выписать входные данные, результат и ограничения (раздел 2), составить 3–4 теста: пример из билета и граничные. 25 минут — написать программу из готовых функций своих работ. 10 минут — собрать без предупреждений и прогнать тесты. 5 минут — перечитать: границы циклов, проверки ввода, закрытые файлы. Работающая простая программа лучше незаконченной «красивой».
04

Разбор билета 3

Билет: ввести n (0…109); заменять число суммой его цифр, пока оно не станет однозначным; вывести результат и число замен. Пример: 9875 → 9 + 8 + 7 + 5 = 29 → 2 + 9 = 11 → 1 + 1 = 2, ответ 2, шагов 3.

    int value = n, steps = 0;
    while (value >= 10) {            /* конечен: сумма цифр числа >= 10 меньше самого числа */
        int sum = 0;
        while (value > 0) {
            sum += value % 10;
            value /= 10;
        }
        value = sum;
        steps++;
    }
ТестОжидаетсяЧто проверяет
9875Root 2, steps 3пример билета
7, 0Root 7, steps 0; Root 0, steps 0внешний цикл не выполняется ни разу
1000000000Root 1, steps 1верхняя граница
−5, abcсообщение об ошибке, код 1проверка ввода

Устный вопрос преподавателя может быть таким: «Что изменится, если внешний цикл написать как do while?» — для однозначного n появится лишний шаг, ответ «steps 1» будет неверным (раздел 6, пункт 04).

Что вы умеете после блока 1

Итоги блока 1

  • Составлять модель задачи и тесты до программы
  • Писать на C программы из функций: ветвления, циклы, массивы, строки, структуры, текстовые файлы
  • Проверять ввод, не выходить за границы, собирать без предупреждений и искать ошибки отладчиком
  • Искать и сортировать, оценивать алгоритм числом операций и O-нотацией
  • Работать с битами, масками и множествами
Экзаменационный тест и билеты — на учебном портале. Раздел открывает преподаватель после проверки допуска — в курсе на portal.nevabit.ru.
Раздел 13: Структуры и текстовые файлы Программа курса