Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
мищишин електронка.doc
Скачиваний:
1
Добавлен:
08.12.2018
Размер:
1.04 Mб
Скачать

Void main(void)

{

cout << "Назва книги: " << TITLE << endl;

cout << "Урок: " << LESSON << endl;

cout << "Ціна: $" << PRICE << endl;

}

Якщо відкомпілювати і виконати цю програму, на монітор буде виведено:

С:\> BOOKINFO <ENTER>

Назва книги: Вчимося програмувати мовою C++

Урок: 37

Ціна: $22.95

Використовування іменованих констант для спрощення зміни тексту програми

Крім того, що іменовані константи роблять програму легшою для сприйняття, вони ще і полегшують її модифікацію. Наприклад, у наступному фрагменті тексту програми кілька разів зустрічається число 50 (кількість студентів в класі):

Void main(void)

{

Int test_scores[50];

char grades[50];

Int student;

for (student = 0; student < 50; student++)

get_test_score(student);

for (student = 0; student < 50; student++)

calculate_grade(student);

for (student = 0; student < 50; student++)

print_grade(student);

}

Припустимо, наприклад, що кількість студентів в класі збільшилася до 55. В цьому випадку ви повинні відредагувати попередню програму, щоб замінити кожне значення 50 значенням 55.

У наступній програмі застосовано інший підхід, вона використовує іменовану константу CLASS_SIZE:

#define CIASS_SIZE 50

Void main(void)

{

Int test_scores[class_size];

char grades[CLASS_SIZE];

Int student;

for (student = 0; student < CLASS_SIZE; student++)

get_test_score(student);

for (student = 0; student < CLASS_SIZE; student++)

calculate_grade(student);

for (student = 0; student < CLASS_SIZE; student++)

print_grade (student) ;

}

В цьому випадку для зміни кількості студентів у всій програмі необхідно змінити тільки один рядок, що містить директиву #define, яка визначає константу:

#define CLASS_SIZE 55

Заміна виразів макрокомандами

Якщо програми виконують реальні обчислення, то в загальному випадку текст програми міститиме складні вирази типу:

result = (х*у-3) * (х*у-3) * (х*у-3);

Тут програма обчислює куб виразу (х*у-3). Щоб зробити її текст більш зрозумілішим при читанні та зменшити вірогідність внесення помилок, можна створити макрокоманду з ім'ям CUBE, яку програма зможе використовувати таким чином:

result = CUBE(x*y-3);

І знову загальноприйнятим серед програмістів вважається використовування великих букв для імен макрокоманд, щоб відрізнити їх від функцій.

Для створення макрокоманди потрібно використовувати директиву препроцесора #define. Наприклад, наступний оператор задає макрокоманду CUBE:

#define CUBE(х) ((х)*(х)*(х))

Як видно, програма задає макрокоманду CUBE для множення параметра х тричі на самого себе. Наступна програма SHOWCUBE.CPP використовує макрокоманду CUBE для обчислення кубів чисел від 1 до 10:

#define CUBE(x) ((х)*(х)*(х))

Void main(void)

{

for (int i = 1; i <= 10; i++)

cout << "Для" << i << "куб рівний " << CUBE(i) << endl;

}

При компіляції цієї програми препроцесор C++ замінить кожну макрокоманду CUBE відповідним виразом, що приведе до наступного тексту програми:

#define CUBE(x) ((х)*(х)*(х))