На этом шаге мы рассмотрим задание констант директивой #define.
Задание конкретных чисел в теле программы - не очень хороший стиль программирования, т. к. такой подход затрудняет дальнейшую модификацию программы и ее понимание. При создании программы надо стремиться задавать все конкретные данные в начале программы, используя специальную директиву препроцессора #define, которая позволяет соотнести с каждым конкретным числом или выражением набор символов - символических (не символьных! символьные - это другое) констант. В этом случае на местах конкретных чисел в программе будут находиться символические константы, которые в момент компиляции программы будут заменены на соответствующие им числа, но это уже невидимо для программиста. Отсюда и название "символические константы" - это не переменные, имеющие свой адрес и меняющие свое значение по мере работы программы, а постоянные, которые один раз получают свое значение и не меняют его. С учетом сказанного наша программа примет следующий вид:
#include <conio.h> //для функции _getch() #include <stdio.h> //для функции printf() using namespace System; #define lower 0 #define upper 300 #define step 20 void main() { int fahr; for(fahr = lower; fahr <= upper; fahr = fahr + step) printf("%4d %6.1f\n",fahr,(5.0/9.0)*(fahr-32.0)); _getch(); }
Рис.1. Текст приложения
Теперь, когда начнется компиляция, компилятор просмотрит текст программы и заменит в нем все символические константы (в данном случае это - lower, upper, step) на их значения, заданные директивой #define. Заметим, что после нее никаких точек с запятой не ставится, т. к. это директива не языка C/C++, а компилятора. И если нам понадобится изменить значения констант lower, upper, step, то не придется разбираться в тексте программы, а достаточно будет посмотреть на ее начало, быстро найти изменяемые величины и выполнить их модификацию.
Со следующего шага мы начнем знакомиться с программами, обработывающими символьные данные.