
- •Часть 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. Динамические структуры данных
- •Варианты индивидуальных заданий
Вопросы к разделу 10. Файлы
1. Для какого типа файлов характерно следующее представление строки «f c e a r t y н u d н у a» в файле?
f c e a r t y н u d н у a |
a) для текстового;
б) для бинарного;
в) и для текстового и для бинарного.
2. Можно ли текстовый файл открыть в двоичном формате и прочитать строку функцией fscanf() ?
а) можно открыть файл и прочитать функцией;
б) нельзя открыть файл;
в) можно открыть файл, но прочитать строку нельзя.
3. Что выполняет данный участок программы
...
char s[25];
FILE *out;
if ((out = fopen("d:\\Ex2.txt", "wb")))
for (int i = 0; i < 3; i++)
{
gets(s);
fprintf(out, "%s \r\n", s);
}
getch();
fclose(out);
...
а) считывает одну строку и заносит ее в файл;
б) считывает три строки и выводит их на экран;
в) считывает три строки и записывает в файл;
г) программа имеет ошибки и работать не будет.
4. В каком файле можно управлять позиционированием?
а) текстовом;
б) в текстовом и двоичном;
в) двоичном.
5. Что будет находиться в строке s после выполнения программы
#include<stdio.h>
#include<conio.h>
void main()
{
FILE *f;
char s[20] = "1";
clrscr();
f = fopen("e:\\tmp.txt", "rb");
if (f)
{
fseek(f, –4, 2);
fscanf(f, "%s", s);
printf("%s", s);
}
}
если в файле содержится следующая информация
fc136902fsw |
а) c136902fsw;
б) 2fsw;
в) 02fsw;
г) sw;
д) s.
6. Относительно какого положения можно изменять указатель на текущую позицию в файле?
а) Относительно начала файла.
б) Относительно конца файла.
в) Относительно текущей позиции.
г) Относительно всех вышеперечисленных положений.
7. Что будет находиться в строке s после выполнения программы,
#include<stdio.h>
#include<conio.h>
void main()
{
FILE *f;
char s[20] = "1";
clrscr();
f = fopen("e:\\tmp.txt","rb");
if (f)
{
fseek(f, 1, SEEK_SET);
fscanf(f,"%s", s);
printf("%s", s);
}
}
если в файле содержится следующая информация
fc136902fsw |
а) c136902fsw;
б) fc136902fsw;
в) 136902fsw;
г) sw;
д) c.
8. Какое число соответствует EOF?
а) 0;
б) 1;
в) -1;
г) 65534.
9. Для чего используется функция fread()?
а) Без изменений копирует блок данных из файла в память.
б) Без изменений копирует блок данных из памяти в файл.
в) Считывает строку из файла.
г) Записывает строку в файл.
Вопросы к разделу 11. Директивы препроцессора
1. Что такое препроцессор?
а) Это составная часть языка Си, которая обрабатывает исходный текст программы до того, как он пройдет через компилятор.
б) Это составная часть операционной системы, которая запускает программу.
в) Это составная часть языка Си, которая обрабатывает исходный текст, после того, как она прошла компилятор.
2. Для чего предназначена директива #include ?
а) Для включения копии указанного в директиве файла в том месте, где находится эта директива.
б) Для определения символических констант.
в) Для условной компиляции.
3. На что заменяется идентификатор константы или идентификатор макроса, определенный директивой #define ?
а) Заменяются на значение, определенное в стандартном библиотечном файле.
б) Заменяются на функцию с таким же именем, описанную ниже в программе.
в) Автоматически заменяются на указанный в директиве заменяющий текст, расположенный непосредственно справа от него.
4. В чем преимущества использования макроса, определенного директивой #define перед функцией?
а) Уменьшение времени выполнения программы.
б) Экономия памяти.
в) Уменьшение объема программного кода.
5. Для чего используется директива #undef ?
а) Для аннулирования символических констант и макросов, определенных ранее директивой #define.
б) Для переопределения констант и макросов на новые значения.
в) Для условной компиляции.
6. Какие переменные могут использоваться при условной компиляции?
а) Любые переменные, объявленные ранее.
б) Символические константы, определенные директивой #define.
в) Зарезервированные библиотечные константы.
7. В каком случае компилируется условное выражение?
а) Если выражение, расположенное справа от директивы #if, возвращает не 0.
б) Если выражение возвращает 0.
в) Если выражение является строковой константой.
8. В чем отличие директивы #ifdef от #ifndef ?
а) При использовании директивы #ifdef выражение возвращает истинное знчение, если ранее использовалась директива #define, a #ifndef – если не использовалась.
б) При использовании директивы #ifdef выражение возвращает истинно, если ранее не использовалась директива #define, a #ifndef – если использовалась.
в) #ifndef аннулирует #ifdef.
9. Для чего используется директива #error ?
а) Для выдачи ошибок, которые обрабатываются пользователем, после чего компиляция продолжается.
б) Для остановки программы.
в) Для остановки программы и выдачи ошибок, после чего компиляция прекращается.
10. В чем предназначение директивы #pragma ?
а) Вызов действия, зависящие от опции, указанной непосредственно справа от директивы.
б) Выдача сообщения об ошибках.
в) Вызов других директив препроцессора.
11. В чём отличие операции # от операции ## ?
а) Операция # выполняет конкатенацию двух лексем. Операция ## преобразует лексему в строку символов, взятую в кавычки.
б) Операция # преобразует лексему в строку символов, взятую в кавычки. Операция ## выполняет конкатенацию (сцепление, склеивание) двух лексем.
в) Операция # выполняет конкатенацию двух символов, а операция ## – двух строк.
12. Найдите ошибки и скажите, что будет выведено на экран:
#define MAX 10;
void main()
{
int array[MAX];
printf(“Массив: ”);
for(int i = 1; i < MAX; i++)
printf(“%d”, array[MAX]);
}
а) Ошибка: точка с запятой после определения константы.
б) Ошибка: точка с запятой после определения константы. На экран будут выведены значения 1, 2, 3, …, MAX.
в) Ошибок нет. На экран будут выведены неопределённые значения.