- •Основы алгоритмизации и программирования, язык Си
- •Введение
- •Блок-схема алгоритма Общие требования к блок-схеме алгоритма
- •Линейные и разветвляющиеся процессы
- •Циклические процессы
- •Итерационные процессы
- •Комментарии
- •Типы данных
- •Данные целого типа
- •Данные вещественного типа
- •Модификатор const
- •Переменные перечисляемого типа
- •Константы
- •Описание переменных
- •Локальные переменные
- •Операции и выражения
- •Операция присваивания
- •Арифметические операции
- •Операции поразрядной арифметики
- •Логические операции
- •Операции отношения
- •Инкрементные и декрементные операции
- •Операция sizeof
- •Порядок выполнения операций
- •Приоритет операций
- •Преобразование типов
- •Операция приведения
- •Операция запятая
- •Ввод и вывод информации
- •Директивы препроцессора Директива #include
- •Директива #define
- •Понятие пустого и составного операторов
- •Условные операторы
- •Операторы организации цикла
- •Оператор цикла for
- •Оператор цикла while
- •Оператор цикла do … while
- •Вложенные циклы
- •Операторы перехода (break, continue, return, goto)
- •Примеры программ
- •Массивы Одномерные массивы
- •Примеры программ
- •Многомерные массивы (матрицы)
- •Примеры программ
- •Указатели Понятие указателя
- •Описание указателей
- •Операции с указателями
- •Связь между указателями и массивами
- •Массивы указателей
- •Многоуровневые указатели
- •Примеры программ
- •Символьные строки
- •Ввод/вывод строк.
- •Функции работы со строками.
- •Примеры программ
- •Функции
- •Прототип функции.
- •Определение функции.
- •Параметры функции
- •Параметры по умолчанию
- •Передача массива в функцию
- •Inline функции
- •Класс памяти
- •Автоматические переменные
- •Статические переменные
- •Регистровые переменные
- •Блочная структура
- •Примеры программ
- •Указатели на функции
- •Примеры программ
- •Рекурсия
- •Примеры программ
- •Аргументы в командной строке
- •Функции с переменным числом параметров
- •Примеры программ
- •Сортировка
- •Пузырьковая сортировка.
- •Шейкер сортировка
- •Сортировка вставкой
- •Сортировка выбором
- •Метод Шелла
- •Метод Хора
- •Структуры
- •Доступ к элементам структуры
- •Инициализация структур
- •Указатели на структуры.
- •Структуры и функции
- •Примеры программ
- •Поля бит
- •Объединения
- •Переменные с изменяемой структурой
- •Примеры программ
- •Организация списков и их обработка
- •Операции со списками при связном хранении
- •Построение обратной польской записи
- •Односвязный линейный список, очередь
- •Двусвязный линейный список
- •Циклический список, кольцо
- •Двусвязный циклический список
- •Примеры программ
- •Деревья
- •Потоки и файлы
- •Файлы Основные сведения о файловой системе
- •Организация посимвольного ввода и вывода
- •Определение конца файла feof()
- •Организация ввода и вывода строк
- •Удаление файлов
- •Дозапись потока
- •Позиционирование в файле
- •Текстовые и двоичные файлы
- •Функции fread() и fwrite()
- •Примеры программ
- •Хеширование
- •Схемы хеширования
- •Метод открытой адресации с линейным опробыванием
- •Метод цепочек
- •Машинное представление графов
- •Примеры программ
- •Литература
Данные вещественного типа
Числа с плавающей точкой представляются в соответствии с IEEE стандартом, в виде двух частей – мантиссы M и порядка P числа в двоичной системе счисления:
А=M*2P
Величины типа float занимают 4 байта. Из них 1 бит отводится для знака, 8 бит для избыточной экспоненты и 23 бита для мантиссы. Мантисса - это число между 1.0 и 2.0. Так как старший бит мантиссы всегда 1, он не запоминается в памяти. Такое представление даёт диапазон значений приблизительно от 1.17E-38 до 3.37E+38. Величины типа double занимают 8 байт памяти. Их формат аналогичен формату float. Биты памяти распределяются следующим образом: 1 бит для знака, 11 бит для экспоненты и 52 бита для мантиссы. С учётом опущенного старшего бита мантиссы, диапазон значений получается приблизительно от 2.23Е-308 до 1.67Е+308.
Таблица 2
Тип |
Байты |
Диапазон |
Точность |
float |
4 |
1.17E-38…3.37E+38 |
7 |
double |
8 |
2.23E-308…1.67E+308 |
15 |
long double |
10 |
3.37E-4932…1.2E+4932 |
19 |
Признаком константы с плавающей точкой является наличие в её записи точки, символа E или e.
Модификатор const
В С(С++) имеется модификатор const используемый для контроля за способом доступа или модификации переменных. Переменные, используемые с модификатором const, не могут изменять своего значения в процессе работы программы, например:
const int i=24;
создает целочисленную переменную i которой присваивается значение 24 и это значение не может быть модифицировано далее в программе. При объявлении переменных с модификатором const они должны быть обязательно инициализированы.
Число байт для хранения переменной с модификатором аналогично числу байт без него.
Обычно модификатор const используют при передаче адресов параметров структурного типа в функции для запрещения изменения значений находящихся по этим адресам.
Ниже приведен пример определения и инициализации данных стандартного типа.
#include<stdio.h> // подсоединение библиотеки с функциями
// ввода/вывода
void main() // определение головного модуля
{ int i1, i2, i3; // три переменные целого типа со знаком
int ix= 5, iy= -7; // определение и инициализация переменных
// целого типа
long l1, l2; // длинные целые знаковые переменные
long unsigned lu1= 125, lu2= 1234567; // длинные целые беззнаковые
// переменные
float f1= -1.57, f2= 3.14; // переменные вещественного типа
char let, symb= ‘z’, n_str= ‘\n’; // символьные переменные ,
short s1= 100,s2= 50; // короткие целые знаковые переменные
const unsigned u= 113; // беззнаковая целочисленная константа
const k= 17; // целочисленная константа
}