игра брюс 2048
Главная / Программирование / Основы программирования - обучения основам / Тест 11

Основы программирования - обучения основам - тест 11

Упражнение 1:
Номер 1
Какая структура данных обычно используется
для сохранения состояния прерванного задания?

Ответ:

 (1) Стек.  

 (2) Очередь.  


Номер 2
Какая структура данных обычно используется
при передаче параметров подпрограммам и функциям?

Ответ:

 (1) Стек.  

 (2) Очередь.  


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

Ответ:

 (1) Стек.  

 (2) Очередь.  


Упражнение 2:
Номер 1
Обозначим через push и pop команды добавления
элемента в стек и извлечения элемента из стека.
Рассмотрим фрагмент программы на псевдокоде:

    push x;
    push y;
    pop x;
    pop y;

Что происходит с переменными x и y в результате
его выполнения?

Ответ:

 (1) Значения переменных не изменяются.  

 (2) Переменные x и y обмениваются своими значениями.  


Номер 2
Пусть даны очередь и стек.
Рассмотрим фрагмент программы на псевдокоде:

    сделать стек пустым;
    цикл пока очередь непуста
    | x := взять элемент из начала очереди;
    | добавить (вход: x) в стек;
    конец цикла
    цикл пока стек непуст
    | x := взять элемент из стека;
    | добавить (вход: x) в конец очереди;
    конец цикла

Что произойдет с очередью в результате
его выполнения?

Ответ:

 (1) Очередь не изменится.  

 (2) Порядок элементов очереди изменится на противоположный.  


Номер 3
Даны очередь и стек элементов одного и того же типа. Можно ли
написать программу, которая удаляет из очереди предпоследний
элемент и не меняет порядка остальных элементов? При этом
разрешается использовать стек как вспомогательную структуру данных;
другими структурами (за исключением простых переменных)
пользоваться запрещено.

Ответ:

 (1) Можно.  

 (2) Нельзя.  


Упражнение 3:
Номер 1
Выражение записано с использованием обратной польской
записи:

    1, 2, 3, +, *, 4, 5, *, -

Чему равняется его значение?

Ответ:

 (1) Значение выражения равно -15.  

 (2) Значение выражения равно -11.  

 (3) Значение выражения равно 15.  

 (4) Значение выражения равно 29.  


Номер 2
Выражение записано с использованием обратной польской
записи:

    0, 1, *, 2, -, 3, 4, *, 5, +, 6, *, +

Чему равняется его значение?

Ответ:

 (1) Значение выражения равно 25.  

 (2) Значение выражения равно 100.  

 (3) Значение выражения равно 104.  

 (4) Значение выражения равно 136.  


Номер 3
Выражение записано с использованием обратной польской
записи:

    1, 2, 3, +, *, 4, *, 5, *

Чему равняется его значение?

Ответ:

 (1) Значение выражения равно 100.  

 (2) Значение выражения равно 140.  

 (3) Значение выражения равно 160.  

 (4) Значение выражения равно 180.  


Упражнение 4:
Номер 1
Рассмотрим фрагмент программы на языке PostScript:

    10 10 moveto
    20 30 lineto
    30 10 lineto
    15 20 moveto
    25 20 lineto
    stroke

Что будет нарисовано в результате его выполнения?

Ответ:

 (1) Буква K.  

 (2) Буква A.  

 (3) Трапеция.  


Номер 2
Рассмотрим фрагмент программы на языке PostScript:

    10 10 moveto
    20 30 lineto
    10 50 lineto
    30 50 moveto
    20 30 lineto
    30 10 lineto
    stroke

Что будет нарисовано в результате его выполнения?

Ответ:

 (1) Буква A.  

 (2) Буква M.  

 (3) Буква X.  


Номер 3
Рассмотрим фрагмент программы на языке PostScript:

    10 10 moveto
    10 40 lineto
    10 20 moveto
    30 40 lineto
    15 25 moveto
    30 10 lineto
    stroke

Что будет нарисовано в результате его выполнения?

Ответ:

 (1) Буква A.  

 (2) Буква K.  

 (3) Буква X.  


Упражнение 5:
Номер 1
Рассмотрим следующую реализацию функции onDiv,
которая исполняет команду деления в проекте
«Стековый калькулятор»:

static void onDiv() {
    double y, x;
    if (st_size() < 2) {
        printf("Stack depth < 2.\n");
        return;
    }
    y = st_pop();
    x = st_pop();
    assert(y != 0.0); // утв: y отлично от нуля
    st_push(x / y);
    display();
}

Правильно ли здесь используется конструкция «утверждение»,
которая в Си реализуется функцией assert?

Ответ:

 (1) Правильно, поскольку деление на ноль невозможно, следовательно, выполнение программы должно быть прекращено.  

 (2) Неправильно, поскольку прекращение выполнения программы при невыполнении утверждения должно происходить в результате ошибки в программе, а не из-за некорректных входных данных.  


Номер 2
Рассмотрим следующую реализацию функции onMul,
которая исполняет команду умножения в проекте
«Стековый калькулятор»:

static void onMul() {
    double y, x;
    assert(st_size() >= 2); // утв: глубина стека
                            //      не меньше двух
    y = st_pop();
    x = st_pop();
    st_push(x * y);
    display();
}

Правильно ли здесь используется конструкция «утверждение»,
которая в Си реализуется функцией assert?

Ответ:

 (1) Правильно, поскольку выполнение любой бинарной операции, в частности, умножения, возможно лишь, когда в стеке не меньше двух элементов. Следовательно, выполнение программы должно быть прекращено.  

 (2) Неправильно, поскольку прекращение выполнения программы при невыполнении утверждения должно происходить в результате ошибки в программе, а не из-за некорректных входных данных.  


Номер 3
Рассмотрим следующую реализацию функции onSqrt,
которая исполняет команду извлечения квадратного корня в проекте
«Стековый калькулятор»:

static void onSqrt() {
    double x;
    if (st_empty()) {
        printf("Stack empty.\n");
        return;
    }
    x = st_pop();
    assert(x >= 0.0); // утв: x неотрицательно
    st_push(sqrt(x));
    display();
}

Правильно ли здесь используется конструкция «утверждение»,
которая в Си реализуется функцией assert?

Ответ:

 (1) Правильно, поскольку невозможно извлечь квадратный корень из отрицательного числа. Следовательно, если x < 0, то выполнение программы должно быть прекращено.  

 (2) Неправильно, поскольку прекращение выполнения программы при невыполнении утверждения должно происходить в результате ошибки в программе, а не из-за некорректных входных данных.  


Упражнение 6:
Номер 1
Выражение содержит числа, переменные, круглые скобки и знаки
четырех арифметических операций. Его можно
преобразовывать, пользуясь известными свойствами
арифметических операций. Значения переменных сообщаются
только после того, как выражение преобразовано в удобную для
вычисления форму. Какой максимальной глубины стека достаточно,
чтобы вычислить значение любого такого выражения с помощью
стекового калькулятора (записывать промежуточные результаты
на бумаге запрещено)?

Ответ:

 (1) Достаточно стека максимальной глубины 3.  

 (2) Достаточно стека максимальной глубины 4.  

 (3) Достаточно стека максимальной глубины 5.  

 (4) Достаточно стека максимальной глубины 6.  


Номер 2
Выражение содержит числа, переменную x и знаки трех
арифметических операций +, -, × (нет операции деления);
переменная x может использоваться многократно.
Выражение можно преобразовывать, пользуясь известными
свойствами арифметических операций. Значение переменной x
сообщается только после того, как выражение преобразовано в
удобную для вычисления форму. Какой максимальной глубины
стека достаточно, чтобы вычислить значение любого такого
выражения с помощью стекового калькулятора (записывать
промежуточные результаты на бумаге запрещено)?

Ответ:

 (1) Достаточно стека максимальной глубины 2.  

 (2) Достаточно стека максимальной глубины 3.  

 (3) Достаточно стека максимальной глубины 4.  

 (4) Достаточно стека максимальной глубины 5.  


Номер 3
Выражение содержит числа, переменную x и знаки четырех
арифметических операций (переменная x может
использоваться многократно). Выражение можно преобразовывать,
пользуясь известными свойствами арифметических операций.
Значение переменной x сообщается только после того,
как выражение преобразовано в удобную для вычисления форму.
Какой максимальной глубины стека достаточно, чтобы вычислить
значение любого такого выражения с помощью стекового
калькулятора (записывать промежуточные результаты на бумаге
запрещено)?

Ответ:

 (1) Достаточно стека максимальной глубины 2.  

 (2) Достаточно стека максимальной глубины 3.  

 (3) Достаточно стека максимальной глубины 4.  

 (4) Достаточно стека максимальной глубины 5.  




Главная / Программирование / Основы программирования - обучения основам / Тест 11