- •1. Краткие теоретические сведения
- •1.1. Операции сравнения и логические операции
- •1.1.1. Операции сравнения
- •1.1.2. Логические операции
- •1.1.3. Логические выражения
- •1.2. Приоритет операций
- •1.3. Разветвляющийся вычислительный процесс
- •1.5. Оператор перехода
- •1.6. Пустой оператор
- •1.7.1. Короткая форма условного оператора
- •1.7.2. Полная форма условного оператора
- •1.9. Понятие составного оператора (группы операторов)
- •1.10.1. Проверка двух или более условий
- •1.10.5. Обработка нескольких условий
- •1.10.6. Вложенный условный оператор
- •1.11. Рекомендации по заданию исходных значений переменным
- •1.11.1. Операторы присваивания
- •1.11.2. Операторы ввода
- •1.11.3. Инициализация переменных
- •1.11.4. Именованные константы
- •1.12. Оператор множественного выбора switch
- •1.13. Использование отступов для улучшения удобочитаемости вашей программы
- •2. Задание
- •2.4. Задания для выполнения на занятиях
- •2.4.1. Задание 1
- •2.4.1.1. Условие задания
- •2.4.2. Задание 2
- •2.4.3. Задание 3
- •2.4.4. Задание 4
- •2.5. Задания для выполнения дома
- •2.5.1. Задание 1
- •2.5.2. Задание 2
- •3.6. Пример программы
- •3.7. Типичные ошибки при выполнении работы
- •2.5.3. Задание 3
- •3. Выводы
- •4. Требование к отчету
- •4. Краткие теоретические сведения.
- •5. Вопросы для самоконтроля
- •Литература
- •1. Краткие теоретические сведения 2
- •1.1. Операции сравнения и логические операции 2
- •1.1.1. Операции сравнения 2
1.11. Рекомендации по заданию исходных значений переменным
В языке С++ имеется возможность задавать исходные значения переменным несколькими способами:
с помощью операторов присваивания;
с помощью операторов ввода;
с помощью инициализации переменных;
с помощью именованных констант.
Первые три способа задания исходных значения переменным подробно рассмотрены в предыдущих лабораторных работах с 1-ой по 5-ю включительно. Поэтому в данном разделе на конкретных примерах напомним вид указанных операций.
1.11.1. Операторы присваивания
В качестве примера приведем несколько операторов присваивания:
a = 5;
b = 3;
х = y = z = 10;
pi = 3.14159265;
1=0;
к = n = т = 1;
sim = 'а';
eps = 1Е-6;
Напомним, что каждая переменная должна быть объявлена в тексте программы перед первым ее использованием. Начинающим рекомендуется объявлять переменные в начале тела программы перед первым исполнимым оператором. При объявлении переменной указывается ее тип и имя:
имя_типа имя_переменной;
Например,
int a, b, 1, к, n, t;
float pi, eps, х, y, z;
char sim;
1.11.2. Операторы ввода
Для консольного ввода данных в языке С++ используют формат записи:
cin >> переменная;
Следующая программа LR6-28.cpp в примере 6.28 запрашивает у вас два числа. Программа присваивает числа переменным first и second. Затем программа выводит числа, используя cout.
Пример 6.28.
/*Программа LR6-Primer28*/
#include <iostream.h>
#include<conio.h>
int main()
{
int first, second; // Числа, введенные с клавиатуры
cout << "Введите два числа и нажмите Enter: ";
cin >> first >> second;
cout << "Были введены числа " << first << " и " << second << endl;
getch();
return 0;
}
1.11.3. Инициализация переменных
Переменные, объявленные в программе, не имеют значения, точнее, имеют неопределенные значения. Так как память, выделенная под запись переменных, не очищается, то значением переменной будет "мусор" из того, что находилось в этой памяти ранее. Инициализация – это прием, применяя который можно присвоить значения переменным при их объявлении. Синтаксически инициализация выглядит так:
имя_типа имя_переменной = начальное значение;
Пример 6.29.
int n = 1;
В результате выполнения этого оператора переменной n будет присвоено значение числа 1.
Пример 6.30
Оператор
float s = 0;
заменяет два оператора
float s;
s = 0;
Инициализация расширяет возможности программисту по заданию значений переменным. Она позволяет одновременно с объявлением переменной задать и ее начальное значение, вместо того, чтобы отдельно в программе писать оператор присваивания.
Пример 6.31
float pi = 3.1415, eps = 1Е-6;
unsigned Year = 2012;
int 1=0, к, n, t =1;
char sim = 'а';
1.11.4. Именованные константы
Этот метод задания исходных значений переменным рассмотрим подробнее, поскольку с ним встречаемся впервые. В последствии к этому методу вернемся еще раз в теме функции.
В C++, кроме переменных, можно использовать именованные константы, то есть константы, имеющие фиксированные названия (имена). Имена могут быть произвольными идентификаторами, не совпадающими с другими именами объектов. Принято использовать имена из больших букв и знаков подчеркивания, что визуально отличает имена переменных от имен констант. Способов определения именованных констант три.
Первый способ – это константы перечисляемого типа, имеющие синтаксис:
enum тип_перечисления {список_именованных_констант};
Здесь тип_перечисления – это его название, необязательный произвольный идентификатор; список_именованных_констант – это разделенная запятыми последовательность вида: имя_константы = значение_константы или просто значение константы.
Примеры:
enum BOOL {FALSE, TRUE };
enum DAY {SUNDAY, MONDAY, TUESDAY, WEDNESDAY,
THURSDAY, FRIDAY, SATURDAY};
enum {ONE = 1, TWO, THREE, FOUR, FIVE};
Если в списке нет элементов со знаком "=", то значения констант начинаются с 0 и увеличиваются на 1 слева направо, так, FALSE равно 0, TRUE равно 1. SUNDAY равно 0, и так далее, SATURDAY равно 6. Если в списке есть элементы со знаком "=", то каждый такой элемент получает соответствующее значение, а следующие за ним увеличиваются на 1 слева направо, так значение ONE = 1, TWO = 2, THREE = 3, FOUR = 4, FIVE = 5.
Второй способ – это именованные константы, заданные с ключевым словом const в объявлении вида:
const имя_типа имя_константы = значение_константы;
Модификатор const предназначен для объявления объектов как неизменяемых. Объекту, который объявлен с данным модификатором, можно присвоить только одно значение.
Пример
const double pi = 3.14159265;
Ключевое слово const имеет более широкий смысл, и используется также в других целях, но здесь его суть в том, что значение константы не может быть изменено.
Примеры:
const float Pi = 3.1415926;
const long M = 999999999;
const float Eps = 0.1e–6;
const unsigned God = 2012;
Попытка присвоить значение любой из констант Pi, M, Eps будет неудачной.
Обратите внимание, что здесь визуализация имен констант c использованием больших букв не является необходимой.
Если программист попытается изменить значение pi, то компьютер выдаст ошибку.
Третий способ ввести именованную константу дает препроцессорная директива #define. Директива #define используется для задания именованных констант и для задания строк подстановки. Синтаксис:
#define имя выражение
Механизм действия директивы – макроподстановки, то есть препроцессор сканирует весь текст программы, и выполняет замены в тексте программы, везде вместо "имя" подставляя "выражение".
Замечание: имена define – определенных констант записываются большими буквами, чтобы визуально отличить их от имен переменных и других объектов.
Примеры:
#define N 10 // По всему тексту вместо N число10,
#define PI 3.1416926 // Вместо PI его числовое значение,
#define STR "Строковая константа, подставляется в текст\n".
Директива #define может определить не только именованную константу, но и выполнить макроподстановки.
Примеры:
#define N1 N+1 // Вместо N1 текст 10 + 1,
#define int long // В тексте все описания int заменятся
// на long.
Удобно использовать эту директиву, чтобы, например, ввести в употребление логические константы:
#define TRUE 1
#define FALSE 0
Кроме того, если в замещаемом имени есть скобки, следующие за именем без пробела, то это макроопределение с параметрами, синтаксис которого:
#define имя (список_параметров) выражение
Например,
#define Cube(x) x*x*x
Имя здесь играет роль имени макроопределения, а параметров может быть несколько, тогда они отделяются запятыми. Между именем и списком параметров не должно быть пробела. Такое макроопределение может использоваться как функция, хотя макроподстановки не заменяют функции, и иногда могут привести к ошибкам.
Пример:
#define Cube(x) x*x*x // макроопределение возведения в степень
#include <stdio.h>
int main()
{
int а = 2;
printf("%d %d ", a, Cube(a));
getch();
return 0;
}
Студенты обычно испытывают определенные затруднения при выборе способа задания исходных значений переменным. Приведем некоторые рекомендации по выбору способа задания исходных значений переменным.
Во-первых, всегда следует помнить, что задание значений переменным с помощью операторов ввода обладает более широкими возможностями (является более универсальным).
Во-вторых, если по программе предполагается расчет нескольких вариантов, то есть одним и тем же переменным будут задаваться несколько вариантов исходных значений, то этим переменным начальные значения обязательно следует задавать вводом.
В-третьих, если по программе проводится всего один вариант расчета, то начальные значения переменным следует задавать с помощью операторов присваивания или непосредственно при инициализации переменных.
В-четвертых, если значение переменной является постоянным (не меняется при переходе от одного варианта расчета к другому) то этим переменным начальные значения следует задать с помощью именованных констант.