
- •Часть 1
- •Общие сведения Сведения об эумк
- •Методические рекомендации по изучению дисциплины
- •Рабочая учебная программа
- •Учреждение образования
- •«Белорусский государственный университет
- •Информатики и радиоэлектроники»
- •Часть 2 __184__
- •Содержание дисциплины
- •1. Индивидуальные практические занятия, их характеристика
- •2. Контрольные работы, их характеристика
- •3. Курсовой проект, его характеристика
- •4. Литература
- •4.1. Основная
- •4.2. Дополнительная
- •5. Перечень компьютерных программ, наглядных и других пособий, методических указаний и материалов и технических средств обучения
- •Протокол согласования учЕбной программы по изучаемой учебной дисциплине с другими дисциплинами специальности
- •Теоретический раздел Введение
- •1. Основные типы данных
- •1.1. Общие сведения
- •1.2. Данные типа int
- •1.3. Данные типа char
- •1.4. Модификаторы доступа const и volatile
- •1.5. Данные вещественного типа (с плавающей точкой)
- •1.6. Элементарный ввод-вывод
- •1.7. Структура простой программы на языке Си
- •2. Операции и выражения
- •2.1. Выражение и его интерпретация
- •2.2. Основные операции
- •2.2.1. Арифметические операции
- •2.2.2. Побитовые логические операции
- •2.2.3. Операции сдвига
- •2.2.4. Операция присваивания
- •2.2.5. Операция sizeof
- •2.2.6. Преобразование типов в выражениях
- •2.2.7. Операция преобразования типов
- •2.2.8. Приоритеты в языке Си
- •3. Операторы управления вычислительным процессом
- •3.1. Оператор if
- •3.2. Операции отношения
- •3.3. Логические операции
- •3.4. Операция запятая
- •3.5. Операция условия ?:
- •3.6. Оператор безусловного перехода goto
- •3.7. Оператор switch
- •`` ` `3.8. Операторы цикла
- •3.8.1. Оператор for
- •3.8.2. Оператор while
- •3.8.3. Оператор do...While
- •3.9. Оператор break
- •3.10. Оператор continue
- •4. Массивы и указатели
- •4.1. Одномерные массивы и их инициализация
- •4.2. Многомерные массивы и их инициализация
- •4.3. Объявление указателей
- •4.4. Операции над указателями
- •1) Взятие адреса
- •2) Косвенная адресация или разыменование указателя
- •3) Увеличение или уменьшение значения указателя на целое число
- •4) Разность указателей
- •5) Сравнение указателей
- •6) Присваивание указателей друг другу
- •4.6. Связь между указателями и массивами
- •4.7. Динамическое распределение памяти
- •4.8. Массивы указателей
- •5. Функции
- •5.1. Общие сведения
- •5.2. Область видимости переменных
- •5.2.1. Локальные переменные
- •5.2.2. Глобальные переменные
- •5.3. Передача параметров в функцию
- •5.4. Рекурсивные функции
- •5.5. Использование функций в качестве параметров функций
- •5.6. Указатели на функции
- •5.7. Структура программы на Си
- •5.8. Передача параметров в функцию main()
- •6. Строки
- •7. Классы хранения и видимость переменных
- •7.1. Общие сведения
- •7.2. Автоматический класс хранения (auto)
- •7.3. Регистровый класс хранения (register)
- •7.4. Статический класс хранения (static)
- •7.5. Внешний класс хранения (extern)
- •7.6. Заключение
- •8. Структуры, объединения и перечисления
- •8.1. Общие сведения
- •8.2. Инициализация структурных переменных
- •8.3. Вложенные структуры
- •8.4. Указатели на структуры
- •8.5. Массивы структурных переменных
- •8.6. Передача функциям структурных переменных
- •8.7. Оператор typedef
- •8.8. Поля битов в структурах
- •8.9. Объединения
- •8.10. Перечисления
- •9. Динамические структуры данных
- •9.1. Общие сведения
- •9.2. Связные списки
- •9.2.1. Односвязные списки
- •9.2.2. Двусвязные списки
- •9.2.3. Циклические списки
- •9.3. Стеки
- •9.4. Очереди
- •9.5. Деревья
- •9.5.1. Понятие графа
- •9.5.2. Бинарные деревья
- •10. Файлы
- •10.1. Общие сведения
- •10.2. Открытие и закрытие файлов
- •10.3. Функции ввода-вывода для работы с текстовыми файлами
- •10.4. Произвольный доступ к файлу
- •10.5. Функции ввода-вывода для работы с бинарными файлами
- •11. Директивы препроцессора
- •11.1. Основные понятия
- •11.2. Директива #include
- •11.3. Директивы препроцессора #define и #undef
- •11.3.1. Символические константы
- •11.3.2. Макросы с параметрами
- •11.3.3. Директива #undef
- •11.4. Условная компиляция
- •11.5. Директивы # и ##
- •12. Модульное программирование
- •13. Введение в объектно-ориентированное программирование
- •13.1. Постановка задачи
- •13.2. Решение задачи средствами Си
- •13.5. Наследование
- •13.6. Перегрузка
- •13.7. Ссылочный тип
- •Литература
- •Приложение 1. Рекомендации по оформлению текстов программ
- •Тесты к теоретическому разделу Вопросы к разделу 1. Основные типы данных
- •Вопросы к разделу 2. Операции и выражения
- •Вопросы к разделу 3. Операторы управления вычислительным процессом
- •Вопросы к разделу 4. Массивы и указатели
- •Вопросы к разделу 5. Функции
- •Вопросы к разделу 6. Строки
- •Вопросы к разделу 7. Классы хранения и видимость переменных
- •Вопросы к разделу 8. Структуры, объединения и перечисления
- •Вопросы к разделу 9. Динамические структуры данных
- •Вопросы к разделу 10. Файлы
- •Вопросы к разделу 11. Директивы препроцессора
- •Вопросы к разделу 12. Модульное программирование
- •Вопросы к разделу 13. Введение в ооп
- •Правильные ответы на вопросы тестов к теоретическому разделу
- •Вопросы к теоретическому зачету
- •Варианты индивидуальных заданий
- •Контрольная работа №2
- •Варианты индивидуальных заданий
- •Индивидуальные практические работы Указания к выбору варианта индивидуальных практических работ
- •Индивидуальная практическая работа № 1. Массивы и строки
- •Варианты индивидуальных заданий
- •Индивидуальная практическая работа № 2. Динамические структуры данных
- •Варианты индивидуальных заданий
Вопросы к разделу 3. Операторы управления вычислительным процессом
1. Назовите альтернативу оператору выбора if/else.
а) ?:
б) while
в) goto
2. Выведите целые числа от 1 до 10, используя для этого цикл for и переменную-счетчик x.
а)
for (x = 1; x = 10; x++)
printf (‘%d \n”, x);
б)
for (x = 10; x >= 1; x--)
printf (“%d \n”, 11 - x);
в)
for (x = 1; x < 10; x ++)
printf (‘%d \n”, x);
3. Какой результат даст следующий фрагмент кода программы:
int x = 1;
while (x<=10)
printf (“%d ”, x++);
а) Программа выведет числа: 2 3 4 5 6 7 8 9 10 11;
б) Программа выведет числа: 10 11 12 13 14 15;
в) Программа выведет числа: 1 2 3 4 5 6 7 8 9 10.
4. Какой оператор используется для выполнения некоторого действия в случае истинности условия и для выполнения другого в случае его ложности.
а) if/else
б) for
в) whilе
5. Правильно ли записано следующее выражение? Обоснуйте ответ.
for ( i = 1, i <= 20, i++)
а) Ошибка. Выражения в скобках должны разделяться точкой с запятой.
б) Все правильно.
в) Ошибка. Выражения в скобках должны разделяться пробелами
6. Каков результат вычисления данного выражения
3+4>5&&3+5>4&&4+5>3 ?
а) 0;
б) -10;
в) 1.
7. Что неправильно в следующем фрагменте программы?
if (town <= 10)
printf (“Minsk \n”);
else;
printf (“ London \n”);
а) Помещение точки с запятой после ветви else приводит к логической ошибке, в итоге, второй оператор printf будет выполняться в любом случае.
б) Все правильно.
в) Неправильная запись оператора printf (“ London \n”); приводит к ошибке, так как здесь не нужны кавычки.
8. Какой оператор в цикле или в структуре switch вызывает немедленный выход?
а) Оператор break.
б) Оператор case.
в) Оператор continue .
9. Обязательно ли наличие в операторе switch блока default?
а) Блок default является обязательным в любом случае.
б) Блок default не является обязательным, если в программе нет никакого действия по умолчанию.
в) Блока default не должно быть в программе.
10. Выражение (x > y && a < b) истинно, если истинно либо выражение x > y, либо выражение a < b. Верно ли данное высказывание?
а) Верно.
б) Неверно, т.к. при операции && оба выражения отношений должны быть ложными.
в) Неверно, т.к. должны быть истинными оба выражения отношений.
Вопросы к разделу 4. Массивы и указатели
1. Указатель – это переменная:
а) значением которой является имя другой переменной;
б) адресом которой является адрес другой переменной;
в) значением которой является тип другой переменной;
г) значением которой является адрес другой переменной.
2. При помощи указателей осуществляется:
а) косвенный доступ к переменным;
б) прямой доступ к переменным;
в) доступ с использованием процедур;
г) произвольный доступ.
3. Унарная операция & возвращает:
а) значение своего операнда;
б) тип своего операнда;
в) адрес своего операнда;
г) количество разрядов своего операнда.
4. Унарная операция * возвращает:
а) адрес своего операнда;
б) значение переменной, на которую ссылается указатель;
в) адрес переменной, на которую ссылается указатель;
г) значение своего операнда.
5. Нумерация массива начинается:
а) с нуля;
б) с единицы;
в) с n, где n – размерность массива;
г) с любого числа.
6. Какая из ниже перечисленных инициализаций массива неверная?
а) int a[3] = {0};
б) int a[3] = {1,2};
в) int a[3] = {1,2,3,4};
г) int a [] = {1,2,3,4,5}.
7. Двумерные массивы хранятся в памяти:
а) в порядке возрастания значений массива;
б) по столбцам;
в) в порядке убывания значений массива;
г) по строкам.
8. Результатом разности двух указателей одного и того же типа является:
а) количество байт между ними;
б) разность значений их адресов;
в) разность значений переменных, на которые указатели указывают;
г) эта операция не применима к указателям;
д) Разность 2-х указателей равна разности их значений, поделенной на sizeof (тип).
9. Без явного приведения типа над указателем типа void нельзя выполнить операцию:
а) разыменования указателя (*);
б) взятия адреса;
в) присваивания указателя на void указателю другого типа;
г) присваивания указателю на void значения указателя другого типа.
10. Начальные данные:
int mas[4] = {1,2,3,4};
int *p, a;
p = mas;
В каком из ниже перечисленных вариантов переменной «a» не присваивается значение второго элемента массива mas:
а) a = *(p+1);
б) a = *mas[1];
в) a = p[1];
г) a = *(mas+1).
11. Объявим массив указателей:
char *p[] = {“Иванов”, ”Петров”, “Сидоров”};
Какой из операторов выведет фамилию «Петров»?
а) printf (“%s”, *(p + 1));
б) printf (“%s”, *p);
в) printf (“%s”, *p + 1);
г) printf (“%s”, p[0] + 2).
12. Функция malloc возвращает:
а) количество выделенных байт;
б) единицу – в случае удачного выделения памяти и 0 – в обратном случае;
в) указатель типа void на начало выделенной памяти;
г) адрес начала сегмента данных.
13. Какое из ниже следующих утверждений является неверным:
а) функция realloc изменяет размер объекта, выделенного в результате предыдущего вызова malloc, calloc и realloc;
б) функция malloc не может выделить более 10 Кбайт;
в) функция calloc используется при распределении памяти для массивов;
г) функция free освобождает память и возвращает её системе.