- •Структура программы на языке Си. Этапы выполнения программы
- •1.1. Алфавит языка Си
- •1.3. Идентификаторы и ключевые слова
- •1.4. Знаки операций
- •2. Переменные и константы. Типы данных
- •2.1. Основные типы данных
- •2.2. Декларация (объявление) объектов
- •2.4. Целочисленные константы
- •2.5. Константы вещественного типа
- •2.6. Символьные константы
- •2.7. Строковые константы
- •3. Обзор операций
- •3.2. Арифметические операции
- •3.3. Операции сравнения
- •3.4. Логические операции
- •4.1. Операция присваивания
- •Примеры недопустимых выражений:
- •4.2. Сокращенная запись операции присваивания
- •4.3. Преобразование типов операндов бинарных операций
- •4.4. Преобразование типов при присваивании.
- •4.5. Операция явного приведения типа
- •4.6. Операция «,» (запятая)
- •5.3. Консольные функции вывода данных на экран
- •5.4. Консольные функции ввода информации
- •6. Операторы языка с.
- •7.1. Условные операторы
- •If (выражение) оператор;
- •If (выражение) оператор 1 ;
- •If (выражение 1) оператор 1;
- •If (выражение 2) оператор 2;
- •If (выражение 3) оператор 3;
- •7.2. Оператор выбора альтернатив (переключатель)
- •7.3. Условная операция «? :»
- •8. Составление циклических алгоритмов
- •8.1. Оператор с предусловием while
- •8.2. Оператор цикла с постусловием do – while
- •8.3. Оператор цикла с предусловием и коррекцией for
- •9. Операторы передачи управления.
- •9.1. Оператор безусловного перехода goto
- •9.2. Операторы continue, break и return
- •10. Массивы
- •10.1. Одномерные массивы
- •10.2. Примеры алгоритмов, использующих одномерные массивы.
- •10.3. Многомерные массивы
- •11.5. Операция sizeof
- •11.6. Побитовые логические операции. Операции над битами
- •12.1. Строки как нуль-терминированные массивы char.
- •12.4. Преобразования строковых типов.
- •13. Функции пользователя и классы памяти.
- •13.1. Сущность и предназначение функций.
- •13.2. Определение и вызов функции.
- •13.3. Прототип функции.
- •13.4. Область видимости.
- •13.5. Классы памяти объектов в языке Cи.
- •13.6. Разбиение программы на модули.
- •14. Структуры и объединения
- •14.1. Понятие структуры
- •14.2. Декларация структурного типа данных
- •14.3. Объявление структурных переменных
- •14.4. Обращение к полям структуры
- •14.5. Операции со структурой как единым целым
- •14.6. Вложенные структуры
- •14.7. Массивы структур
- •14.8. Размещение структурных переменных в памяти
- •14.10. Объединения
- •16. Файлы в языке с
- •16.1. Типы файлов.
- •16.2. Открытие файла
- •16.3. Закрытие файла
- •16.4. Запись - чтение информации
- •А) Посимвольный ввод-вывод
- •Б) Построчный и форматированный ввод-вывод
- •В) Блоковый ввод-вывод
- •Int fflush(file *stream);
- •16.5. Текстовые файлы
- •16.6. Перенаправление стандартного ввода-вывода
- •16.7. Бинарные файлы
- •16.8. Дополнительные полезные функции
- •16.9. Простейший пример создания собственной базы данных
- •17. Указатели
- •17.1. Определение указателей
- •17.2. Связь указателей и массивов.
- •17.3. Операции над указателями (косвенная адресация)
- •17.4. Операции над указателями (косвенная адресация)
- •17.5. Массивы указателей.
- •17.6. Указатели на указатели.
- •17.7 . Указатели как параметры функций.
- •Void f1(int, const double *);
- •17.8 . Указатели на структуры
- •17.10. Указатели на функции
- •Id_функции(список аргументов);
- •18.1. Динамическое выделение и освобождение памяти.
2. Переменные и константы. Типы данных
Для программиста на языке Си память компьютера представляется как набор ячеек, каждая из которых называется переменной, или константой, в зависимости от того, меняется ее значение в процессе работы или нет. Каждая переменная имеет имя (идентификатор, ID). Константа может иметь или не иметь имени.
Род информации, которую способна хранить ячейка, определяется ее типом.
2.1. Основные типы данных
Данные в языке Си разделяются на две категории: простые (скалярные), будем их называть базовыми, и сложные (составные) типы данных.
Тип данных определяет:
внутреннее представление данных в оперативной памяти;
совокупность значений (диапазон), которые могут принимать данные этого типа;
набор операций, которые допустимы над такими данными.
Основные типы базовых данных: целый – int, вещественный с одинарной точностью – float и символьный – char.
В свою очередь, данные целого типа могут быть короткими – short, а также длинными – long . Кроме того, при любой длине данные целых и символьного типов могут быть знаковыми - signed либо беззнаковыми – unsigned (по умолчанию они считаются знаковыми, поэтому слово signed необязательно и обычно опускается). Вещественные же данные могут иметь удвоенную точность – double.
Сложные типы данных – массивы, структуры – struct, объединения или смеси – union.
Данные целых и вещественных типов находятся в определенных диапазонах, т.к. занимают разный объем оперативной памяти. Вещественные типы при этом обладают еще конечной точностью хранения данных, т.е. верно хранят лишь первые несколько цифр числа; для хранения остальных (чье количество бывает даже бесконечным - например, у числа π , или у числа ⅓ ) не хватает места. В Табл. 1. приведены свойства различных типов для системы программирования C++ Builder. В других системах программирования, поддерживающих язык Си, может отличаться размер того или иного конкретного типа, например int, и соответственно будет отличаться его допустимый диапазон значений (например, тип long int может превосходить по размеру тип int). Однако последовательность возрастания размеров и точности для каждой группы типов всегда одинакова:
char ≤ short int ≤ int ≤ long int ≤ long long int
float ≤ double ≤ long double
Таблица 1.
Тип данных |
Размер (байт) |
Диапазон значений |
Точность, десятичных знаков |
сhar |
1 |
-128 … 127 |
|
unsigned сhar |
1 |
0 … 255 |
|
short int |
2 |
-215… 215–1 (-32768…32767) |
|
int |
4 |
-231…231–1 (-2147483648…2147483647) |
|
long int |
4 |
-231…231–1 (-2147483648…2147483647) |
|
long long int |
8 |
–263... 263–1 (примерно ) |
|
unsigned short int |
2 |
0…216–1 (0…65535) |
|
unsigned int |
4 |
0…232–1 (0…4294967295) |
|
unsigned long int |
4 |
0…232–1 (0…4294967295) |
|
float |
4 |
±3,14*10-38…±3,14*1038 |
7-8 |
double |
8 |
±1,7 *10-308… ±1,7 *10308 |
15-16 |
long double |
10 |
± 1,1 * 10-4932… ± 1,1 * 104932 |
19-20 |
Заметим, что для целочисленных типов данных, чье название содержит слово int и еще какое-либо слово перед ним, слово int можно не писать, и обычно оно опускается (в Табл.1 необязательное int указано мелким шрифтом).