Шаг 15.
Microsoft Visual C++ 2010. Язык С/С++.
Консольное приложение. Символические константы

    На этом шаге мы рассмотрим задание констант директивой #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, то не придется разбираться в тексте программы, а достаточно будет посмотреть на ее начало, быстро найти изменяемые величины и выполнить их модификацию.

    Со следующего шага мы начнем знакомиться с программами, обработывающими символьные данные.




Предыдущий шаг Содержание Следующий шаг