- •1. Среда программирования. Трансляция, компоновка и отладка программ
- •2. Виды и характеристики языков программирования
- •3. Виды программных ошибок.
- •4. Описание языка Си (используемые символы, константы, идентификаторы, ключевые слова, комментарии). Используемые символы
- •Константы
- •Ключевые слова
- •Использование комментариев в тексте программы
- •5. Идентификаторы и ключевые слова языка Си. Идентификаторы и ключевые слова
- •6. Структура программы на языке Си.
- •7. Категории типов данных (символьные, целые, с плавающей точкой).
- •Целый тип данных
- •Данные плавающего типа
- •8. Символьные и целые типы данных. Данные целого типа (integer)
- •Данные символьного типа (char)
- •9. Вещественные типы данных (с плавающей точкой). Данные вещественного типа (float, double)
- •10. Преобразование типов (явное и неявное).
- •11. Использование модификаторов при декларации типов данных.
- •12. Кодовая таблица ascii. Системы счисления. Классификация и преобразование символов. Классификация и преобразование символов
- •13. Константы. Целые константы. Константы с плавающей точкой. Символьные константы. Строки. Null.
- •1 Целые Константы
- •2 Константы с Плавающей Точкой
- •3 Символьные Константы
- •4 Строки
- •14. Условный оператор if.
- •15. Тернарная условная операция ?:.
- •16. Оператор выбора альтернатив switch.
- •17. Составление циклических алгоритмов. Операторы цикла с предусловием и с постусловием. Оператор while
- •Оператор do while
- •18. Оператор цикла с предусловием и коррекцией for. Оператор for
- •19. Операторы перехода (break, continue, return, goto). Оператор break
- •Оператор continue
- •Оператор return
- •Оператор goto
- •20. Унарные операции.
- •21. Аддитивные и мультипликативные операции.
- •22. Операции сдвига.
- •23. Поразрядные операции.
- •24. Операции отношения.
- •25. Логические операции.
- •26. Операция присваивания.
- •27. Сокращенная запись операции присваивания.
- •28. Стандартная библиотека языка Си. Математические функции.
- •29. Стандартная библиотека языка Си. Функции работы со строками.
- •Int strcmp(const char *s1, const char *s2);
- •Integer atoi(const char *nptr);
- •30. Стандартная библиотека языка Си. Ввод данных.
- •31. Стандартная библиотека языка Си. Вывод данных.
- •32. Управляющая строка функций ввода/вывода.
- •33. Препроцессор. Директивы #include, #define.
- •Директивы препроцессора и указания компилятору
- •34. Графический режим. Функции черчения и заполнения.
- •35. Графический режим. Функции вывода текста, функции управления цветом. (outtext, outtextxy, setbkcolor, setcolor, settextjustify, settextstyle, textheight, textwidth)
- •Цвет фона и вычерчивания
- •36. Одномерные массивы. Инициализация одномерных массивов. Ввод и инициализация массива символов.
- •37. Многомерные массивы. Инициализация многомерных массивов.
- •38. Структуры
- •Пример 5
- •39. Объединения.
- •Пример 2
- •40. Перечисления.
- •41. Работа с файлами. Типы открытия файлов (текстовый и бинарный). Дескриптор файла ("указатель на файл"). Режимы работы с файлами.
- •42. Работа с файлами. Открытие файла в различных режимах и закрытие файла.
- •Int feof(file *stream);
- •Int fclose(file *stream);
- •Коды, устанавливающие режимы доступа к открываемым файлам
- •Void rewind(file *stream);
- •Int fsetpos(file *stream, const fpos_t *pos);
- •45. Указатели. Указатели и адреса объектов. Указатели и массивы. Указатели.
- •Указатели и адреса объектов
- •Указатели и массивы
- •46. Операции с указателями: присваивание адреса, определение значения по адресу, присваивание указателей
- •1. Присваивание адреса.
- •3. Сравнение указателей.
- •48. Работа с динамической памятью. Динамические массивы.
- •49. Функции. Определение функции, объявление функции и вызов функции. Возвращаемое значение функции.
- •3. Вызов функции
- •50. Функции. Типы передачи параметров функции (по значению, по адресу).
- •Передача переменных
- •Передача векторных параметров
- •51. Функции. Переменные в качестве параметров функций.
- •52. Функции. Массивы в качестве параметров функций.
- •53. Указатели на функции.
- •1. Среда программирования. Трансляция, компоновка и отладка программ
- •2. Виды и характеристики языков программирования
39. Объединения.
Главной особенностью объединения является то, что для каждого из объявленных элементов выделяется одна и та же область памяти, т.е. они перекрываются. Это значит, что все элементы объединения имеют один и тот же адрес.Хотя доступ к этой области памяти возможен с использованием любого из элементов, элемент для этой цели должен выбираться так, чтобы полученный результат не был бессмысленным.
Пример 1
union {long L;
-
long L
12
34
56
78
31
0
int i1
int i2
ch[3]
ch[2]
ch[1]
ch[0]
int i1,i2;
char c[4];
} UNI;
UNI.L=0x12345678;
printf("%lx \n",UNI.L);
printf("%x \n",UNI.i1);
printf("%x \n",UNI.i2);
printf("%x \n",UNI.c[0]);
printf("%x \n",UNI.c[1]);
printf("%x \n",UNI.c[2]);
printf("%x \n",UNI.c[3]);
Размер участка памяти, выделяемого для объединения, определяется максимальной длиной его элементов.
Объединение применяется для следующих целей:
инициализации используемого объекта памяти, если в каждый момент времени только один объект из многих является активным;
интерпретации основного представления объекта одного типа, как если бы этому объекту был присвоен другой тип.
Основное достоинство объединения – возможность разных трактовок одного и того же содержимого (кода) участка памяти.
Для объединений может быть введен производный тип, определяющий “внутреннее строение» всех объединений, относящихся к этому типу. Будем говорить об объединяющем типе.
Пример 2
union mixture {long L;
int i1,i2;
char c[4];
} UNI
Введя тип объединения, можно определять конкретные объединения, их массивы, а также указатели и ссылки.
Для обращения к элементу объединения можно использовать либо уточненное имя либо конструкцию, включающую указатель.
long L |
|||
12 |
34 |
56 |
78 |
mixture A;
mixture *pmix=&A;
A
long L |
|||
12 |
34 |
12 |
34 |
.L=0x12345678;
pmix->i1=0x1234;
40. Перечисления.
Определение переменной перечислимого типа задает имя переменной и определяет список именованных констант, называемых списком перечисления. Каждому элементу списка перечисления ставится в соответствие целое число. Переменная перечислимого типа может принимать только значения из своего списка перечисления. Элементы списка имеют тип int. Поэтому переменной перечислимого типа выделяется ячейка памяти, необходимая для размещения значения типа int. \
Перечислимый тип данных используется для описания дискретного множества целых значений. Например, вы можете объявить следующее:
enum days { sun, mon, tues, wed, thur, fri, sat };
Имена, перечисленные в days, являются целыми константами: первая (sun) автоматически установлена в ноль, а каждая следующая имеет значение на единицу больше, чем предыдущая (mon = 1, tues=2 и т.д.).
Однако, вы можете присвоить константам и определенные значения. Такие значения не обязательно должны быть различными, возрастающими или положительными.
Например,
enum coins {penny=1, dime=10, nickle=5, quarter=25};
Переменной перечислимого типа может быть присвоено любое значение типа int - проверка типа не производится.
Имя перечисления становится синонимом int, а не новым типом. Описание переменной keyword, а не просто int, может дать как программисту, так и компилятору подсказку о том, что использование преднамеренное.
Например:
enum keyword { ASM, AUTO, BREAK };
keyword key;
switch (key)
{
case ASM:
// что-то делает
break;
case BREAK:
// что-то делает
break;
}
побуждает компилятор выдать предупреждение, поскольку только два значения keyword из трех используются.
