
- •Государственный технический университет - Обнинский институт атомной энергетики е.А.Виноградова а.Г.Царина Программирование на языках высокого уровня.
- •Содержание
- •Введение. Подготовка и решение задач на компьютере.
- •Алгоритмы.
- •Основные свойства.
- •2.2 Способы представления алгоритмов.
- •2.3 Базовые структуры алгоритмов.
- •2.3.1 Линейная структура.
- •2.3.3.1. Цикл с предусловием:
- •2.3.3.2. Цикл с постусловием:
- •Типы данных.
- •3.1 Базовые типы данных.
- •Целый тип (int)
- •Символьный тип (char)
- •Расширенный символьный тип (wchar_t)
- •Логический тип (bool)
- •Типы с плавающей точкой (float, double и long double)
- •3.2 Переменные.
- •3.3 Ссылки.
- •3.4 Указатели.
- •3.3 Выражения.
- •3.3 .1 Операции.
- •4. Реализация базовых структур алгоритмов в языке с.
- •4.1 Оператор присвавания
- •4.2 Оператор «выражение»
- •4.3 Операторы ветвления
- •4.3.1 Условный оператор .
- •4.3.2. Оператор switch.
- •4.4 Операторы цикла
- •4.4.1 Циклы с предусловием
- •4.4.1.1 Цикл for.
- •4.4.1.2 Цикл с условием (while)
- •4.4.1 .3 Цикл с постусловием (do while)
- •5. Функции. Основные понятия
- •Определение функции
- •Рекурсивные функции.
- •Одномерные массивы.
- •6.1 Статические массивы.
- •6.2 Динамические массивы.
- •6.2.2 Функции преобразования динамических массивов.
- •7. Алгоритмы поиска и сортировки.
- •7.2 Последовательный поиск c барьером.
- •7.3 Дихотомический поиск в упорядоченом массиве.
- •7.4 Cортировка массивов.
- •7.4.1 Обменная сортировка (метод пузырька)
- •7.4.2 Метод "простой выбор".
- •7.4.3 Сортировка "прямое включение"
- •8 . Матрицы
- •8.1 Статические матрицы.
- •8.2 Динамические матрицы.
- •9. Строки в с.
- •1. Длина строки – strlen.
- •3. Копирование строк.
- •4. Объединение строк.
- •5. Поиск в строках
- •10. Cтруктуры.
3.3 Выражения.
Выражения состоят из операндов, знаков операций и скобок. Операнды задают данные для вычислений. Операции задают действия, которые необходимо выполнить. Каждый операнд является, в свою очередь, выражением или одним из его частных случаев, например, константой или переменной. Операции выполняются в соответствии с приоритетами. Для изменения порядка выполнения операций используются круглые скобки.
Рассмотрим составные части выражений и правила их вычисления.
3.3 .1 Операции.
В таблице 2 приведен список основных операций, определенных в языке С++, в соответствии с их приоритетами ( по убыванию приоритетов).
В соответствии с количеством операндов, которые используются в операциях, они делятся на унарные (один операнд), бинарные (два операнда) и тетрарную (три операнда).
Таблица 2. Основные операции языка С++
Операция |
Краткое описание |
|
Унарные операции |
||
++ |
увеличение на 1(инкремент) |
|
-- |
уменьшение на 1(декремент)1 |
|
sizeof |
размер |
|
~ |
поразрядное отрицание |
|
! |
логическое отрицание |
|
- |
арифметическое отрицание (унарный минус) |
|
+ |
унарный плюс |
|
& |
взятие адреса |
|
* |
разадресация |
|
new |
выделение памяти |
|
delete |
освобождение памяти |
|
(type) |
преобразование типа |
|
Бинарные и тернарная операции |
||
* |
умножение |
|
/ |
деление |
|
% |
остаток от деления |
|
+ |
сложение |
|
- |
вычитание |
|
« |
сдвиг влево |
|
» |
сдвиг вправо |
|
< |
меньше |
|
<= |
меньше или равно |
|
> |
больше |
|
>= |
больше или равно |
|
= = |
равно |
|
!= |
не равно |
|
& |
поразрядная конъюнкция (И) |
|
^ |
поразрядное исключающее ИЛИ |
|
| |
поразрядная дизъюнкция (ИЛИ) |
|
&& |
логическое И |
|
|| |
логическое ИЛИ |
|
?: |
условная операция (тернарная) |
|
= |
присваивание |
|
*= |
умножение с присваиванием |
|
/= |
деление с присваиванием |
|
%= |
остаток отделения с присваиванием |
|
+= |
сложение с присваиванием |
|
-= |
вычитание с присваиванием |
|
«= |
сдвиг влево с присваиванием |
|
»= |
сдвиг вправо с присваиванием |
|
&= |
поразрядное И с присваиванием |
|
|= |
поразрядное ИЛИ с присваиванием |
|
^= |
поразрядное исключающее ИЛИ с присваиванием |
|
. |
последовательное вычисление |
Рассмотрим некоторые основные операции подробнее.
Операция инкремент. Эта операция имеют две формы записи - префиксную, когда операция записывается перед операндом(++x), и постфиксную(x++). В префиксной форме сначала выполняется операция ++, а затем выполняется контекстная операция, а в постфиксной -наоборот.
Пример.
#include <iostream.h>
int main(){
int x = 3, y = 3,z=3,a,b;
a=++x*y;
b=y++*z;
cout<<"a= “<<a<<” b=”<<b<<” x=”<<x<<” y=”<<y;
return 0;
}
Результат работы программы:
a= 12 b=9 x=4 y=4
Аналогично для операций- предекремент/постдекремент.
Операция определения размера sizeof предназначена для вычисления размера объекта или типа в байтах, и имеет две формы:
sizeof выражение
sizeof ( тип )
Пример:
#include <iostream.h>
int main ( ){
float х = 1;
cout << "sizeof(float) :" << sizeof(float);
cout << "\nsizeof х :" << sizeof х;
cout << "\nsizeof (х + 1.0) :" << sizeof (х + 1.0);
return 0;
}
Результат работы программы:
sizeof (float) : 4
sizeof х : 4
sizeof (х + 1.0) : 8
Последний результат связан с тем, что вещественные константы по умолчанию имеют тип double, к которому, как к более длинному, приводится тип переменной х и всего выражения. Скобки необходимы для того чтобы выражение, стоящее в них, вычислялось раньше операции приведения типа, имеющей больший приоритет, чем сложение.
Деление (/) и остаток от деления (%). Операция деления применима к операндам арифметического типа. Если оба операнда целочисленные, результат операции округляется до целого числа, в противном случае тип результата определяется правилами преобразования. Операция остатка от деления применяется только к целочисленным операндам. Знак результата зависит от реализации.
#include <iostream.h>
int main{
int х = 5, у = 2,a,b;
float z = 2,t;
a=x/y;
t=x/z;
b=x%y;
cout<<”a=”<<a<<” t=”<<t<<” b=”<<b;
return 0;
}
Результат работы программы:
a=2 t=2.5 b=1
Операции отношения (<, <=, >, >=, = =, ! =) сравнивают первый операнд со вторым. Операнды могут быть арифметического типа или указателями. Результатом операции является значение true или false (любое значение, не равное нулю, интерпретируется как true). Операции сравнения на равенство и неравенство имеют меньший приоритет, чем остальные операции сравнения.
Логические операции (&& и ||). Результатом логической операции является true или false. Результат операции && имеет значение true, только если оба операнда имеют значение true. Результат операции || имеет значение true, если хотя бы один из операндов имеет значение true. Логические операции выполняются слева направо. Если значения первого операнда достаточно, чтобы определить результат операции, второй операнд не вычисляется.
Как уже говорилось выше, выражения состоят из операндов, операций и скобок и используются для вычисления некоторого значения определенного типа. Каждый операнд является, в свою очередь, выражением или одним из его частных случаев - константой или переменной.
Операции выполняются в соответствии с приоритетами. Для изменения порядка выполнения операций используются круглые скобки. Если в одном выражении записано несколько операций одинакового приоритета, унарные операции, условная операция и операции присваивания выполняются справа налево, остальные - слева направо. Например, а = b = с означает а = (b = с), а а + b + с означает (а + b) + с. Допустимы выражения вида
а = b = с: сначала вычисляется выражение b = с, а затем его результат становится правым операндом для операции присваивания переменной а.
В выражение могут входить операнды различных типов. Если операнды имеют одинаковый тип, то результат операции будет иметь тот же тип. Если операнды разного типа, перед вычислениями выполняются преобразования типов по определенным правилам, обеспечивающим преобразование более коротких типов в более длинные для сохранения значимости и точности.
Программист может задать преобразования типа явным образом.