Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Подбельский Фомин_Программирование на языке СИ_...doc
Скачиваний:
356
Добавлен:
10.08.2019
Размер:
53.81 Mб
Скачать

Задание аргументов командной строки.

Задание аргументов командной строки. Так как имя файла, содержащего слова для сортировки, программа tree.exe берет из командной строки, то перед выполнением программы необходимо задать имя файла в окне, появляющемся по команде Run|Arguments (рис. 9.13). В этом случае задано имя файла f

Рис. 9.13. Задание аргументов командной строки

Сохранение параметров настройки интегрированной среды.

Сохранение параметров настройки интегрированной среды. Для того чтобы параметры интегрированной среды, установленные при ее настройке, сохранились и были доступны в следующем сеансе, необходимо выполнить команду Options|Save.

Сборка и выполнение программы.

Сборка и выполнение программы. Перед построением исполняемого модуля программы сортировки на основе бинарного дерева необходимо исправить синтаксические ошибки в функциях программы: tree.c, add_node.c, new_node.c и print.c. Компиляция исходных модулей производится по команде Compile|Compile.

Сборка (компоновка) исполняемого модуля программы сортировки выполняется по команде Compile|Make. При этом используется файл проекта tree.prj. На рис. 9.14 приводится окно построения программы. Сообщение "Success" в строке Status информирует о том, что исполняемый модуль построен без ошибок.

Рис. 9.14. Окно построения программы

Для выполнения программы сортировки необходимо выполнить команду Run|Run, В окне выполнения (окне результатов) можно увидеть отсортированный список слов (рис. 9.15).

Рис. 9.15. Результат выполнения программы сортировки

По завершении просмотра окно результатов следует закрыть (кнопка в левом верхнем углу окна).

Работа в интегрированной среде в последующих сеансах.

Работа в интегрированной среде в последующих сеансах. В последующих сеансах работы в интегрированной среде с уже существующей программой перед построением исполняемого модуля программы необходимо выбрать существующий проект для этой программы. Выбор проекта производится по команде Project|Open project. После выбора проекта можно произвести повторное построение исполняемого модуля, если в исходные тексты программных модулей были внесены изменения.

Информацию об открытых окнах и их расположении на экране можно получить по команде Window. Работа с окнами проводится традиционными для MS Windows приемами.

Раздел 3. Практикум по программированию на языке Си Глава 10. Задачи по программированию

10.1. Ознакомительная работа

Приемы и техника работы с реальными программными средствами могут быть освоены только за экраном компьютера в диалоге с той или иной системой программирования. Знакомство с многочисленными реализациями компиляторов языка Си и интегрированными инструментальными средами разработки программ выходит за рамки нашего пособия. Однако мы считаем, что начинающий программист должен подходить к компьютеру с конкретным, пусть даже очень простым заданием. В качестве такого первоначального ознакомительного задания мы предлагаем решение следующей задачи.

Написать программу, оценивающую значение машинного нуля относительно заданного вещественного числа. Выполнить программу нужно для разных представлений вещественных чисел (float, double, long double) и оформить результаты в виде приведенной ниже таблицы. В качестве основы для построения предлагаемой программы можно использовать приведенную в главе 2 программу для оценки машинного нуля относительно числа 1.0. Усовершенствованный вариант той же программы (но уже позволяющий выполнять оценки относительно разных значений, вводимых пользователем) имеет следующий вид:

Программа позволяет обратить внимание на следующие вопросы программирования:

• точность представления вещественных данных разных типов;

• возможности макросредств (препроцессорные подстановки);

• спецификации преобразований при форматированном обмене (вводе-выводе) вещественных данных разных типов.

Результаты выполнения программы (для типа float):

Изменим директиву препроцессора, определяющую препроцессорный идентификатор REAL:

Заменим спецификации преобразования: %f на %lf, а %е на %lе (см. текст программы).

В результате выполнения программы получим:

Затем определим новое значение для REAL:

и получим решение той же задачи для вещественных данных типа long double (если в дополнение к REAL изменим спецификацию формата в scanf( ) и в printf( ) на %Lf и %Le).

В программе удачно использованы макроподстановки. В зависимости от значения REAL в функции печати printf( ), где стоит макровызов type(REAL), появляется строка "float" либо "double", либо "long double". Последовательность подстановок такая (когда REAL замещается значением float):

type(REAL) -> type(float) -> t(float) -> "float"

Обратите внимание, что если вместо макросов t(z) и type(x) определить, например, один макрос

то последовательность будет неверной:

В этом случае будет печататься не имя типа (например, double), а обозначение REAL.

По результатам выполнения программы заполните следующую табл. 10.1.

Таблица 10.1

Таблица результатов оценок "машинного нуля"

Значения

S

Внутреннее представление

float

double

long double

К

M-zero

К

M-zero

К

M-zero

1

24

5.960464е-08

53

1.110223е-16

64

5.42101 le-20

10

1000

1е-20

1е20

В табл. 10.1: S - начальное значение; К - число итераций; M-zero - оценка машинного нуля относительно значения S.