- •Алфавит.
- •Объявления и определения
- •Структура и компоненты простой программы
- •Текст программы и препроцессор.
- •Структура программы.
- •Функция форматированного вывода.
- •Программы печати предельных констант.
- •Применимость вещественных данных.
- •Выделение лексем из текста программы.
- •2.2. Элементарные средства программирования Деление операторов языка Си на группы.
- •Программа оценки машинного нуля.
- •Трассировочная таблица
- •Переключатели
- •Ввод данных.
- •Вычисление объема цилиндра.
- •Операторы цикла
- •Три формы операторов цикла.
- •Приближенное значение экспоненты.
- •Оператор break.
- •Сумма отрезка степенного ряда.
- •Оператор continue.
- •Суммирование положительных чисел.
- •2.4. Массивы и вложение операторов цикла Массивы и переменные с индексами.
- •Вычисление среднего и дисперсии.
- •Упорядочение в одномерных массивах.
- •Инициализация массивов.
- •Моделирование многомерных массивов.
- •Ввод и вывод
- •7.1. Потоковый ввод-вывод
- •7.1.1. Открытие и закрытие потока
- •7.1.2. Стандартные файлы и функции для работы с ними
- •Ввод-вывод отдельных символов.
- •Ввод-вывод строк.
- •Форматный ввод-вывод.
- •Спецификаторы форматной строки для функции форматного вывода
- •Спецификаторы форматной строки для функции форматного ввода
- •Работа с файлами на диске
- •Двоичный (бинарный) режим обмена с файлами.
- •Строковый обмен с файлами.
- •Позиционирование в потоке.
- •Трехъязычный словарь "Цифры
- •7.2. Ввод-вывод нижнего уровня
- •7.2.1. Открытие / закрытие файла
- •7.2.2. Чтение и запись данных
- •7.2.3. Произвольный доступ к файлу
- •Теоретические положения Управление экраном в текстовом режиме в ms dos
- •Основные функции работы в текстовом режиме
- •2.5. Функции Определение функций.
- •Функция для вычисления объема цилиндра.
- •Функция для вычисления скалярного произведения векторов.
- •Обращение к функции и ее прототип.
- •Вычисление объема цилиндра
- •Вычисление площади треугольника.
- •Скалярное произведение векторов.
- •Препроцессорные средства
- •Глава 6. Структуры и объединения
- •6.1. Структурные типы и структуры Производные типы.
- •Структурный тип.
- •Определение структур.
- •Выделение памяти для структур.
- •Инициализация и присваивание структур.
- •Доступ к элементам структур.
- •Модули:
- •Некоторые понятия:
Программа оценки машинного нуля.
Программа оценки машинного нуля. В вычислительных задачах при программировании итерационных алгоритмов, завершающихся при достижении заданной точности, часто нужна оценка "машинного нуля", т.е. числового значения, меньше которого невозможно задавать точность данного алгоритма. Абсолютное значение "машинного нуля" зависит от разрядной сетки применяемой ЭВМ, от принятой в конкретном трансляторе точности представления вещественных чисел и от значений, используемых для оценки точности. Следующая программа оценивает абсолютное значение "машинного нуля" относительно близких (по модулю) к единице переменных типа float:
В строках программы слева помещены порядковые номера, которых нет в исходном тексте. Номера добавлены только для удобства ссылок на операторы. Строка 1 - комментарий с названием программы. Комментарии в строках 4, 5, 6 поясняют назначение переменных. Объяснить работу программы проще всего с помощью трассировочной таблицы (табл. 2.1).
Во втором столбце таблицы указаны номера строк с исполняемыми операторами. Значения переменных даны после выполнения соответствующего оператора. Только что измененное значение переменной в таблице выделено. После подготовительных присваиваний (строки 6, 7) циклически выполняются операторы 8-11 до тех пор, пока истинно отношение el>1.0, проверяемое в условном операторе. При каждой итерации значение переменной е уменьшается вдвое, и наконец, прибавление (в строке 9) к 1.0 значения е не изменит результата, т.е. el станет равно 1.0.
При использовании компилятора Turbo С получен следующий результат:
При использовании в строке 5 для определения переменных е, el типа double, т.е. при использовании двойной точности, получен иной результат:
Оба результата не хуже значений, приведенных в Приложении 2, для предельных констант FLT_EPSILON и DBL_EPSILON.
Таблица 2.1
Трассировочная таблица
Шаг выполнения |
Номер строки |
Значения переменных |
||
|
|
е |
k |
e1 |
1 |
6 |
1.0 |
- |
. |
2 |
7 |
1.0 |
0 |
|
3 |
8 |
м |
0 |
. |
4 |
9 |
0.5 |
0 |
1.5 |
5 |
10 |
0.5 |
i |
1.5 |
6 |
11 |
0.5 |
1 |
1.5 |
7 |
8 |
0.25 |
1 |
1.5 |
8 |
9 |
0.25 |
1 |
1.25 |
9 |
10 |
0.25 |
2 |
1.25 |
10 |
11 |
0.25 |
2 |
1.25 |
11 … |
8 … |
0.125 … |
2 … |
1.25 … |