- •Конспект лекций Часть 1 Оглавление
- •Часть 1 1
- •Введение
- •1. Этапы и проблемы решения задач с использованием компьютера
- •Алфавит языка
- •Ключевые слова
- •Идентификаторы
- •Знаки операций
- •Константы
- •Комментарии
- •2.3. Структура и основные элементы программы
- •2.4. Трансляция программ и их выполнение
- •3. Стандартные (базовые) типы данных, операции и выражения
- •3.1. Типы данных, переменные и константы Понятие типов данных
- •Классификация простых предопределенных типов данных
- •Переменные, константы
- •3.2. Целочисленные типы данных
- •3.3. Вещественные типы данных
- •3.4. Логический тип данных
- •3.5. Символьный тип данных
- •3.6. Операции и выражения
- •Преобразования типов данных
- •Операция присваивания
- •Арифметические операции
- •Операции отношения
- •Логические операции
- •Поразрядные (битовые) операции
- •Операции составного присваивания
- •Условная операция
- •Операция sizeof
- •Приоритеты рассмотренных операций
- •3.7. Ввод и вывод простых типов данных
- •Вывод текстовых строк
- •Ввод/вывод арифметических типов данных
- •Форматирование ввода / вывода
- •4.1. Идеи структурного программирования
- •Условная инструкция (if)
- •Инструкция множественного выбора (switch)
- •Цикл с предусловием (while)
- •Цикл с постусловием (do while)
- •Итерационный цикл (for)
- •Инструкции перехода
- •5. Приемы программирования циклов
- •5.1. Рекуррентные вычисления
- •5.2. Инвариант цикла
- •6. Массивы
- •6.1. Понятие массива
- •6.2. Объявление массивов Объявление одномерных массивов
- •Объявление многомерных массивов
- •6.3. Ввод-вывод массивов
- •Вывод массивов
- •Ввод массивов
- •6.4. Текстовые строки как массивы символов
- •Определение текстовой строки
- •Ввод текстовых строк с клавиатуры
- •Обработка текстовых строк
- •Массивы текстовых строк
- •7. Разработка программ при работе с массивами
- •Не успел дописать. Некоторые примеры по этому разделу в Приложениях
Приоритеты рассмотренных операций
Результат вычисления выражений зависит от приоритета операций и от порядка выполнения операций с одинаковым приоритетом.
Для правильной записи выражений очень важно знать, в каком порядке выполняются операции внутри выражения. Например:
5 + 4 * 3 / 2 + 3
Если выполнить операции слева направо, то результат будет равен 16:
5 + 4 = 9
9 * 3 = 27
27 / 2 = 13
13 + 3 = 16
Но, поскольку, операции умножения и деления имеют одинаковый приоритет, и он выше, чем у операции сложения, на самом деле результат будет равен 14:
4 * 3 = 12
12 / 6 = 6
5 + 6 = 11
11 + 3 = 14
В арифметических и логических выражениях операции с одинаковым приоритетом выполняются слева направо. А вот выражения с операторами присваивания выполняются справа налево.
В следующей таблице приведен перечень рассмотренных выше операций в порядке уменьшения приоритетов. Операции, имеющий одинаковый приоритет, сгруппированы по секциям.
Операция |
Действие |
++ |
Постфиксный оператор инкремента |
-- |
Постфиксный оператор декремента |
++ |
Префиксный оператор инкремента |
-- |
Префиксный оператор декремента |
! |
Логическое «НЕ» |
- |
Унарный минус |
+ |
Унарный плюс |
тип |
Явное преобразование типа |
sizeof |
Получение размерности операнда в байтах |
* |
Умножение |
/ |
Деление |
% |
Остаток (деление по модулю) |
+ |
Сложение |
- |
Вычитание |
<< |
Сдвиг влево |
>> |
Сдвиг вправо |
< |
Меньше |
<= |
Меньше или равно |
> |
Больше |
>= |
Больше или равно |
== |
Равно |
!= |
Не равно |
& |
Побитовое «И» |
^ |
Побитовое исключающее «ИЛИ» |
| |
Побитовое «ИЛИ» |
&& |
Логическое «И» |
|| |
Логическое «ИЛИ» |
? : |
Условная операция |
=, +=, -=, *=, /=, %=, <<=, >>=, &=, |=, ^= |
Простое и составные присваивания |
Изменить порядок выполнения операций внутри выражения можно с помощью круглых скобок. В любом случае, когда возникают сомнения в определении приоритета выполнения операций лучше использовать круглые скобки (на первых порах это особенно рекомендуется).
3.7. Ввод и вывод простых типов данных
Ввод/вывод данных является неотъемлемой составляющей любой программы - без ввода исходных данных для обработки и без вывода результатов не обходится ни одна программа.
В этом разделе будут рассмотрены только некоторые аспекты организации ввода/вывода в языке C++, относящиеся к консольному вводу/выводу простых типов данных.
В языке C++ нет встроенных средств ввода/вывода — он осуществляется с помощью функций и объектов, содержащихся в стандартных библиотеках.
В C++ можно использовать два различных способа реализации ввода-вывода.
Первый способ (унаследованный от языка C) основан на использовании ряда библиотечных функций, наиболее употребимыми из которых являются функции printf и scanf. Они выполняют форматированный ввод и вывод произвольного количества величин в соответствии со строкой формата. Строка формата содержит символы, которые при выводе копируются в поток (на экран) или запрашиваются из потока (с клавиатуры) при вводе, и спецификации преобразования, начинающиеся со знака %, которые при вводе и выводе заменяются конкретными величинами. Например:
#include <iostream>
using namespace std;
int main ()
{
setlocale (0, "");
int a;
printf ("Введите целое число:\t");
scanf ("%d", &a);
printf ("Вы ввели значение:\t%d\n\n", a);
system ("Pause");
return 0;
}
Второй способ, характерный для C++, основан на использовании стандартных потоков ввода (cin) и вывода (cout). Та же самая программа в стиле C++ будет выглядеть так:
#include <iostream>
using namespace std;
int main ()
{
setlocale (0, "");
int a;
cout << "Введите целое число:\t";
cin >> a;
cout << "Вы ввели значение:\t" << a << "\n\n";
// cout << "Вы ввели значение:\t" << a << endl << endl;
system ("Pause");
return 0;
}
В одной и той же программе совмещать эти два способа не рекомендуется.
В дальнейшем будем использовать именно второй способ организации ввода/вывода.
При использовании потоков для вывода данных на экран используется операция <<, которая так и называется: операция вывода или операция вставки (данные "вставляются" в поток вывода).
Ввод данных с клавиатуры осуществляется с помощью операции ввода >> (операция извлечения данных из потока ввода).
Обе эти операции "знают" как осуществлять ввод и вывод стандартных простых типов данных. Более того эти операции можно "научить", как осуществлять ввод/вывод нестандартных пользовательских типов данных (перегрузка операций, которая будет рассмотрена позднее).
А сейчас перейдем к изучению приемов ввода/вывода простых стандартных типов данных.