
- •220300 - Системы автоматизированного проектирования
- •Состав языка и принцип работы компилятора языка высокого уровня
- •Идентификаторы
- •Альтернативный ввод-вывод в стиле с
- •Константы
- •Манипуляторы
- •Преобразования типов
- •Арифметические операции
- •Функции стандартной библиотеки
- •Операции отношения и логические операции
- •Базовые конструкции структурного программирования
- •Цикл с параметром (for)
- •Цикл с предусловием (while)
- •Цикл с постусловием (do while)
- •Рекомендации по программированию циклов
- •Ветвления
- •Условный оператор if
- •Вложенные конструкции
- •Проблемы соответствия if и else во вложенных ветвлениях
- •Условная операция
- •Оператор switch
- •Операторы передачи управления
- •Контрольная работа
- •Массивы
- •Сортировка массива методом выбора
- •Сортировка массива методом пузырька
- •Многомерные массивы
- •Операции со строками
- •Функции
- •Void starline(); // объявление функции (прототип)
- •Передача аргументов в функцию по значению
- •Void charline(char sim, int n); // объявление функции (прототип)
- •Возвращение функцией значения
- •Передача аргументов по ссылке
- •Возвращение значения по ссылке
- •Перегруженные функции
- •Переменные и функции
- •Передача массивов в функции
- •Указатели
- •Указатели и массивы
- •Указатели и функции
- •Указатели и строки
- •Динамический массив и динамическое выделение памяти
- •Ввод/вывод
- •Форматированный ввод/вывод
- •Конструкторы и методы
- •Двоичный ввод/вывод. Бинарные файлы
- •Двунаправленный ввод/вывод
- •Функции стандартной библиотеки для работы с файлами или ввод/вывод в стиле с
Альтернативный ввод-вывод в стиле с
Рассмотренную выше программу можно написать и вторым способом, с использованием функций ввода-вывода, унаследованных из языка С.
#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: определение и инициализация х