Рассмотренную выше программу можно написать и вторым способом, с использованием функций ввода-вывода, унаследованных из языка С.
#include <stdio.h> // 0) директива препроцессора
#include <conio.h>
using namespace std;
//---------------------------------------------------------------------------
int main() { // 1) заголовок главной функции
float ce, fa; // 2) описание переменных
printf("Vvedite temp. po Fahrengeitu:"); // 3) оператор вывода на экран
scanf("%f", &fa); // 4) оператор ввода и присвоения значения переменной fa
ce = 5. * (fa - 32) / 9 ; // 5) оператор-выражение
printf("Temp. po Celsiu ravna %6.2f\n", ce); // 6)
printf("\nPress any key to exit:");
getch();
return 0; // 7)
}
В данной версии программы спецификация %f соответствует типу float. Существуют следующие наиболее употребительные спецификации: %d – для величин целого типа в десятичной системе счисления; %i – для вывода целых со знаком; %u – для вывода беззнаковых целых; %n.mf – для вывода дробных в формате с фиксированной точкой, где n – количество цифр целой части, m – дробной; %lf – для величин типа double; %s – для строк; %с – для символов.
При использовании ввода-вывода в стиле С++, для округления вещественного числа необходимо использовать следующие манипуляторы:
cout.setf(ios::fixed); //округление вещ. числа до 2-ух знаков после запятой:
cout.precision(2);
Д/З
| Напишите программу вычисления площади прямоугольника. Ниже приведён рекомендуемый вид экрана во время выполнения программы.
* Вычисление площади прямоугольника *
Введите длину (см): 9
Введите ширину (см): 7.5
Площадь прямоугольника равна: 67.5 (кв.см)
|
Ответ
| int main() {
float l, w, s;
cout << "* Vychislenie S prjamougolnika *";
cout << "\n Vedite dlinu (cm): "; cin >> l;
cout << " Vedite shirinu (cm): "; cin >> w;
s = l * w;
cout << "\n S = " << s << " (kv.cm)";
cout << "\nPress any key to exit: "; getch();
return 0;
}
|
Лекция 2(8,5 стр.)
Переменные в С++
Переменная – это именованная область памяти, в которой хранятся данные определённого типа. Во время выполнения программы значение переменной можно изменять. Переменные хранятся в определённых участках памяти компьютера. Когда переменной присваивается значение, оно записывается в ячейку памяти, связанную с данной переменной. Перед использованием любая переменная должна быть описана. Приведём общий вид описания переменных:
[класс памяти] [const] тип имя [= значение];
Здесь, квадратными скобками обозначены необязательные составные части.
Рассмотрим правила задания составных частей:
- Класс памяти может принимать одно из значений auto, extern, static и register.
- Модификатор const показывает, что значение переменной изменять нельзя. Такую переменную называют константой. Константа должна быть инициализирована при объявлении.
- При описании можно присвоить переменной начальное значение, это называется инициализацией. Инициализатор можно записывать в двух формах: = значение или (значение).
Примеры:
int a=1, b;
const char Kl = 'C';
float d = 0.22, x(3.0), summa;
Описание переменной, кроме типа и класса памяти, явно или по умолчанию задаёт её область действия. Область действия идентификатора - это часть программы, в которой его можно использовать для доступа к связанной с ним области памяти. В зависимости от области действия переменная может быть локальной или глобальной.
Если переменная определена внутри блока, т.е. части программы, ограниченной фигурными скобками, она называется локальной. Область действия локальной переменной – от точки описания до конца блока, включая все вложенные блоки. Если переменная определена вне любого блока, она называется глобальной и областью её действия считается файл, в котором она определена, от точки описания до его конца.
Областью видимости идентификатора называется часть текста программы, из которой допустим обычный доступ к связанной с идентификатором областью памяти. Чаще всего область видимости совпадает с областью действия. Исключением является ситуация, когда во вложенном блоке описана переменная с таким же именем. В этом случае внешняя переменная во вложенном блоке невидима.
Класс памяти определяет время жизни и область видимости программного объекта. Если класс памяти не указан явным образом, он определяется компилятором исходя из контекста объявления. Для задания класса памяти переменной используются следующие спецификаторы:
auto – автоматическая переменная. Память под неё выделяется в стеке и при необходимости инициализируется каждый раз при выполнении оператора, содержащего её определение. Время жизни автоматической переменной – с момента описания и до конца блока. Этот спецификатор применяется компилятором по умолчанию, поэтому задавать его явным образом не имеет смысла.
extern – означает, что переменная определяется в другом месте программы или в другом файле. Используется для создания переменных, доступных во всех модулях программы, в которых они объявлены.
static – статическая переменная. Время жизни – постоянное. Инициализируется один раз при первом выполнении оператора, содержащего определение переменной. В зависимости от расположения оператора описания статические переменные могут быть глобальными и локальными. Глобальные статические переменные видны только в том модуле, в котором они описаны.
register – аналогично auto, но память выделяется по возможности в регистрах процессора. Если такой возможности у компилятора нет, переменные обрабатываются как auto. Пример:
int a; // 1: глобальная пер. а -> область действия – вся прогр.; область видимости – вся прогр., кроме строк 6 и 7.
void main (void) {
int b; // 2: локальная пер. b, память под кот. выделяется при входе в блок и освобождается при выходе из него
extern int x; // 3: переменная х определена в другом месте
static int c; // 4: локальная статическая пер. с располагается в сегменте данных и существует всё время
a=1; // 5: присваивание значения глобальной переменной
int a; // 6: локальная переменная а
a=2; // 7: присваивание значения локальной переменной а
}
int x=4; // 8: определение и инициализация х