
Лекции / Л№11.Константы .ИС / Константы
.odtЛекция№4.Константы.
Содержание лекции.
-
Понятие константы.
-
Свойства константы.
-
Примеры констант и переменных.
-
Декларация и инициализация констант.
-
Задание констант с помощью директивы препроцессора.
-
Использование констант.
-
Ввод вывод констант.
-
Вопросы для самопроверки.
1. Понятие константы
Константа — это составная часть программы; объект, имеющий значение.
Понятие "константа" в программе аналогично тому же понятию, используемому в математических уравнениях. Это — неизменная величина. Для более полного описания сущности константы, используемой в алгоритмическом языке, обратимся к известным физическим и математическим константам.
Человечеством открыты такие константы, значение которых от нас не зависит. К ним в физике относится, например, ускорение свободного падения, равное 9,8 м/с/с, а в математике - число пи = 3,14. Константы такого рода не могут быть признаны аналогией константы в алгоритмическом языке.
В математических уравнениях также используется понятие константы. Например, в уравнении Y = 3 * X + 7 числа 3 и 7 являются константами. Значение таких констант в полной мере зависит от воли человека, составившего уравнение. Это - ближайшая аналогия констант, используемых в программах Константа (в виде значения) заносится программистом в код на этапе его создания. Константа характеризуется только своим значением, поэтому термины "константа" и "значение константы" являются полными синонимами.
Примеры констант:
37, 3.14, true, "Kazan"
Рис.
4. Константа в памяти компьютера.
2. Свойства констант
Свойством константы является её способность удерживать значение, заданное программистом, в течение времени работы программы и сообщать это значение программе при запросах программы (рис. 5). Для каждой константы, содержащейся в программе, компьютер отводит часть памяти необходимого размера. Значение константы не может быть изменено во время исполнения программы ни программистом, ни компьютером (рис. 6).
-
Значение константы всегда остаётся неизменным.
Рис.
5. Состояние ячейки памяти константы
при сообщении значения программе.
-
Значение константы не может быть изменено в процессе работы программы.
Рис.
6. Изменение значения константы во время
работы программы невозможно.
3. Примеры констант и переменных в программе
В программе константы и переменные встречаются в операторах. В данном тексте программы А и В являются переменными, а 7 и 3 - константами:
A = 7; // Строка 1
B = A + 3; // Строка 2
Проследим, как программа работает с константами и переменными. Исполняя эти строки, программа выполнит следующие шаги:
Первая строка:
-
Константа 7 сообщает своё значение программе.
-
Переменная А получает значение 7 от программы.
Вторая строка:
-
Программа обнаружила выражение справа от знака равенства и стремится его вычислить.
-
Константа 3 сообщает своё значение программе.
-
Программа обращается к переменной А по имени.
-
Переменная А сообщает своё значение (7) программе.
-
Программа производит вычисления (7 + 3).
-
Переменная В получает значение 10 от программы.
В процессе работы программы значение переменной может быть изменено. Например, в программе может встретиться строка, в которой написано следующее:
В = 33; // Строка 3
В этом случае при исполнении программы будет выполнено следующее:
-
Константа 33 сообщает своё значение программе.
-
Переменная В получает (новое) значение 33 от программы.
Легко заметить, что на некотором этапе выполнения программы переменная В получает значение 10, а в ходе дальнейших вычислений - значение 33. В результате этих событий название переменной В остаётся неизменным, а значение переменной изменяется.
На рис. 10 показаны константы и переменные в тексте программы:
Рис.
10. Константа и переменная в программе.
4. Декларация и инициализация констант.
Константы - величины, которые не меняются на всем протяжении работы программы. Константы могут быть того же типа, что и переменные. Для объявления константы, используется следующий формат записи:
const <тип данных> <идентификатор> = <константное выражение для иннициализации>
Например, следующий фрагмент кода позволяет создать целочисленную константу с идентификатором theConst и значением 25.
const int theConst = 25;
В выражениях для иннициализации констант не допускается использовать переменные. Помимо явного объявления, константы могут фигурировать и в выражениях, как правило, для иннициализации или вычисления значений переменных. В этом случае, компилятор пытается автоматически определить тип данных, но программист может помочь компилятору, указав тип явно.
5. Задание констант с помощью директивы препроцессора. Константа может быть определена до главной функции main. В этом случае можно использовать директиву #define. Например, для определения константы можно перед фунцией main вставить строку
#define PI 3.141592653589793
Если в тексте программы будет встречаться имя PI, оно автоматически будет заменяяться значением 3.141592653589793. С использованием этой константы программа для решения задачи 1.1 может быть переписана так.
#include <stdio.h> #include <math.h> #define PI 3.141592653589793 int main() { float a,b,c, alf,bet,s; printf("A="); scanf("%f",&a); printf("B="); scanf("%f",&b); s=a*b/2; c=pow(a*a+b*b,0.5); alf=atan(a/b); bet=PI/2-alf; printf("\n A=%5.2f \t B=%5.2f \t C=%5.2f \n",a,b,c); printf("\nS=%5.2f \t alf=%3.0f \t bet=%3.0f\n", s,alf*180/PI,bet*180/PI); }
Мы совсем забыли про константы, а они играют отнюдь не последнюю роль. В языке Си константы принято писать полностью с заглавных букв:
#define SIZE 15
Использование этих условий в разы облегчит вам понимание собственного кода, позволит другим программистам легко сориентироваться в вашем коде. Так же проблема придумывания имен функциям, классам и переменным отпадет само с собой. Причем если слабо знаете английский язык, то можете писать английскими буквами русские слова, что б было понятно, что будет делать тот или иной объект.
И соответственно, чем больше размер вашей программы, тем актуальность стиля имен переменных в си возрастает. Не зря стиль программирования знает каждый профессиональный программист.
6. Использование констант
Константы есть и в Си, но их никто не использует, ибо они были кривые. Числовые константы в C делают с помощью #define, и это неплохо работает, хотя и имеет свои минусы. Константы всех остальных типов в Cи используют редко.
…А главное отличие — их теперь можно использовать! Например, можно написать так:
const int N = 10;
int A [N];
А раз константы можно использовать, отчего же этого не делать? Они многим лучше, чем #define:
они имеют тип, а значит, позволяют найти ошибки в вашей программе;
они могут быть не просто числом или строкой, но и какой-нибудь сложной структурой;
их имена можно использовать при отладке (хотя с современными средствами это почти не актуально);
они не имеют побочных эффектов и других классических проблем с макросами (отсылаю вас к предостережениям о директиве #define,написанных в любой хорошей книге по Си или Си++).
Константы обязательно инициализировать, например:
const int foo = 10; /* можно */
const int bar; /* нельзя */
Это логично, поскольку если мы не инициализируем её сразу, то вообще никогда не сможем ничего ей присвоить, поэтому в таком случае она окажется бесполезной.
7. Ввод-вывод констант
//Ввод вывод констант.
#include <stdio.h>
#include <stdlib.h>
#define pi 3.141592 //Задание констант с помощью директивы препроцессора.
int main()
{
const int i=10; //Декларация и инициализация констант.
printf("i= %i pi= %f\n",i,pi);
printf("konst= %i\n",5);
system("pause");
return 0;
}
// i=10 i=10
//konst=5
Резюме.
Декларация и инициализация констант.
int i=7;
Задание констант с помощью директивы препроцессора
#define pi 3.141492
Ввод констант не предусмотрен.
Вывод констант
printf(“konst= %i i= %i pi= %f\n”,5,i,pi);
konst=5 i=7 pi=3.141592
8. Вопроы для самопроверки.
-
Понятие константы.
-
Свойства констант.
-
Задание констант.
-
Ввод вывод констант.