Главная страница

Программирование C++. Пензенский государственный университет введение в программирование на языке с лабораторный практикум пенза 2010 г 2


Скачать 1.47 Mb.
НазваниеПензенский государственный университет введение в программирование на языке с лабораторный практикум пенза 2010 г 2
Дата06.10.2022
Размер1.47 Mb.
Формат файлаpdf
Имя файлаПрограммирование C++.pdf
ТипПрактикум
#718990
страница2 из 10
1   2   3   4   5   6   7   8   9   10

C++ Операция Краткое описание Унарные операции
++ увеличение на 1
-- уменьшение на 1
sizeof размер

поразрядное отрицание
! логическое отрицание
- арифметическое отрицание (унарный минус)
+ унарный плюс
& взятие адреса
* разыменование
new выделение памяти
delete освобождение памяти
(type) преобразование типа

8 Операция Краткое описание Бинарные операции

*
/
% умножение деление остаток отделения- сложение вычитание
<<
>> сдвиг влево сдвиг вправо
<
<=
>
>= меньше меньше или равно больше больше или равно
==
!= равно неравно поразрядная конъюнкция (И)
^ поразрядное исключающее ИЛИ
| поразрядная дизъюнкция (ИЛИ)
&& логическое И
|| логическое ИЛИ
=
*=
/=
%=
+=
-=
<<=
>>=
&=
|=
^=
, присваивание умножение с присваиванием деление с присваиванием остаток отделения с присваиванием сложение с присваиванием вычитание с присваиванием сдвиг влево с присваиванием сдвиг вправо с присваиванием поразрядное И с присваиванием поразрядное ИЛИ с присваиванием поразрядное исключающее ИЛИ с присваиванием последовательное вычисление Тернарная операция
? : условная операция Операции выполняются в соответствии с приоритетами. Если водном выражении записано несколько операций одинакового приоритета, унарные операции, условная операция и операции присваивания выполняются справа налево, остальные – слева направо. Операции увеличения и уменьшения на 1
(
++
и
--)
называются также инкрементом и декрементом. Они имеют две формы записи – префиксную, когда операция записывается перед операндом, например,
++i
, и постфиксную –
i++
. В префиксной форме сначала изменяется операнда затем его значение становится результирующим значением выражения, а в постфиксной форме значением выражения является исходное значение операнда, после чего он изменяется. Операция определения размера sizeof

предназначена для вычисления размера объекта или типа в байтах.

9 Операции отрицания Арифметическое отрицание (унарный минус
-
) изменяет знак операнда целого или вещественного типа на противоположный. Логическое отрицание (
!
) дает в результате значение 0, если операнд есть истина (не нуль, и значение 1. если операнд равен нулю. Операнд должен быть целого или вещественного типа, а может иметь также тип указатель. Поразрядно отрицание (

) инвертирует каждый разряд в двоичном представлении целочисленного операнда. Операции сдвига (
<<
и
>>
) применяются к целочисленным операндам. Они сдвигают двоичное представление первого операнда влево или вправо на количество двоичных разрядов, заданное вторым операндом. При сдвиге влево (
<<
) освободившиеся разряды обнуляются. При сдвиге вправо (
>>
) освободившиеся биты заполняются нулями, если первый операнд беззнакового типа, и знаковым разрядом в противном случае. Операции отношения (
<, <=, >, >=, = = !=) сравнивают первый операнд со вторым. Операнды могут быть арифметического типа или указателями. Логические операции (
&&
и
||
) выполняют логическое И и ИЛИ. Поразрядные операции (
&, |, ^
) применяются только к целочисленным операндами работают сих двоичными представлениями. При выполнении операций сопоставляются биты операндов. Операции присваивания ( =, + = , - = , * = , / =
и т.д.) могут использоваться в программе как законченные операторы. Сложные операции присваивания обычно используются для сокращения записи, например, операция
a += b; эквивалентна операции
a = Условная операция (?:)
имеет три операнда. Ее формат логическое выражение ? операнд : операнд Если результат вычисления условного выражения равен
true
(не 0

),
то результатом условной операции будет значение операнда, иначе – операнда. Условная операция является сокращенной формой условного оператора
if. Например
i = (i < n) ? i + 1 : 0;
grade >= 60 ? Зачет" : cout<<"Незачет\n"; Вводи вывод В языке С нет встроенных средств ввода-вывода. Ввод-вывод данных осуществляется с помощью функций, типов и объектов, содержащихся в стандартных библиотеках. Используется два способа функции, унаследованные из языка Си объекты языка
С++.
Основные функции ввода-вывода в стиле С
int scanf(const char* format, …); ввод printf(const char* format, …);
//вывод
Описание этих функций содержится в заголовочном файле
stdio.h
. Они выполняют форматированный вводи вывод произвольного количества величин в соответствии со строкой формата
format
. Строка формата содержит символы, которые при выводе копируются в поток (на экран) или запрашиваются из потока (с клавиатуры) при вводе, и спецификации преобразования, начинающиеся со знака
%
, которые при вводе и выводе заменяются конкретными значениями.

10 Например
#include
int i; Введите целое число вывод символов "Введите целое число"
и переход на новую строку (
\n
)
scanf("%d", &i); ввод значения переменной Вы ввели число %d\n", i); вывод значения переменной
i
и переход на новую строку Описание классов
C++
для управления вводом-выводом содержит заголовочный файл
iostream
. В нем определены стандартные объекты-потоки для ввода с клавиатуры и
cout
– для вывода на экрана также операции
<<
– помещения в поток вывода и
>>
– чтения из потока ввода. Для подключения
cin, cout
в программе следует использовать либо оператор доступа к области видимости
std::
,
либо оператор В
C++
предыдущие действия ввода-вывода будут выглядеть следующим образом
#include
int i;
std::cout << "Введите целое число
std::cin >> i;
std::cout << "Вы ввели число " << i<< std::endl; // endl
– переход на новую строку или
#include
using std::cout;
using std::cin;
using std::endl;
int i;
cout << "Введите целое число
cin >> i;
cout << "Вы ввели число " << i<#include
using namespace std; // подключение всего пространства имен std
, сообщество программистов
C++
осудит Вас за такое слишком расточительное и
//
неоптимальное использование ресурсов i;

cout << "Введите целое число
cin >> i;
cout << "Вы ввели число " << i<C
и
C++
не рекомендуется.

11 Управляющие структуры Каким образом в программе можно указать порядок выполнения действий по обработке данных Для этого в программе используются три основных категории управляющих структур последовательность следование ветвление порядок выполнения определяется значением условия цикл (повторение. Эти структуры дают нам конструктор, комбинируя элементами которого, можно реализовать процесс вычислений произвольной сложности, сохраняя отчетливое видение общей структуры процесса. Для графического представления управляющих структур будем использовать следующие узлы
A
P
Да
Нет
Функциональный Предикатный условный) Слияния Определяет изменение данных
Определяет последовательность выполнения
Объединяет ветви выполнения
В се управляющие структуры имеют один входи один выход. Базовыми структурами являются Последовательность, «Если_То_Иначе» и

«Цикл_Пока». Все современные языки программирования имеют операторы, которые однозначно реализуют управляющие структуры. Рассмотрим управляющие структуры и операторы языка
C++
, которые их реализуют (таблица Таблица 1.3 Управляющие структуры Управляющая структура Оператор языка Пример Последовательность

A; B; Сначала выполняется
A
, затем
A, B
– операторы
sum = int1 + int2;
cout << "Сумма равна "
<< sum << endl;
Если_То_Иначе
if (P)
A;
else
B; Если значение логического выражения
P истинно не ноль, то выполняется
A
, иначе –
B
If( x>0)
y++;
else
y--;
int num, div;
if (!(num%div)) делится
else не делится

12 Управляющая структура Оператор языка Пример

Если_То
if (P ) A; Если значение логического выражения
P истинно(
не ноль, то выполняется
A
if (x>0) y++; Выбор
switch (K) {
case 1: A; break;
case 2: B; break;
case 3: C; break;
default:
D; break;
};
K
– переключатель- выражение, значение которого определяет выполнение операторов если
K = 1
, то
A
; если
K = 2
, то
B
; если
K = 3
, то иначе
– D
;
char op;
bool f=true;
int a, b, res;
cin >>a>>b>>op;
switch (op) {
case '+': res=a+b; break;
case '-' : res=a-b; break;
default: cout<< Неизвестная операция"
<< endl; f=false; break;
}
If (f) cout<
– тогда последовательно выполняются все остальные ветви

Цикл_Пока цикл с предусловием (P)
A; Пока значение логического выражения
P
истинно(
не ноль, оператор выполняется (N>0)
N--;

13 Управляющая структура Оператор языка Пример

Цикл_со_счетчиком цикл с предусловием (инициализация выражение модификация)
A; Инициализация применяется для объявления и задания начальных значений величинам, используемым в цикле. Выражение определяет условие продолжения цикла. Модификация выполняется после каждой итерации цикла (int i = 1, s = 0;
i <=100; ++i)
s += i;
//Последоательность
вычислений
//i=1, s=0+1=1
//i=2, s=1+2
//i=3, s=1+2+3
//…
//i=100, s=1+2+…+100
//i=101
– выход из цикла
Цикл_До цикл с постусловием
A;
while Оператор выполняется до тех пор, пока логическое выражение
P
истиннo(
не ноль
N--;
while N>0; Рекомендации по выбору оператора цикла в программе оператор
do while
обычно используют, когда цикл требуется обязательно выполнить хотя бы один раз оператор
for
предпочтительнее в случае, если число повторений операторов цикла известно, и однозначно – для организации циклов со счетчиками оператором
while
удобнее пользоваться в случаях, когда число итераций заранее неизвестно, очевидных параметров цикла нет или модификацию параметров удобнее выполнять не в конце тела цикла. Реализация циклических алгоритмов требует в некоторых случаях прекращения шага цикла или всего цикла до выполнения условия его завершения. Для этих целей в языке С предусмотрены специальные операторы (НЕ управляющие структуры
continue
– оператор завершения шага цикла. Поэтому оператору прекращается выполнение текущего шага цикла, и управление передается наследующий шаг
break
– оператор выхода из цикла. Прекращается выполнение цикла и управление передается оператору, следующему за последним оператором цикла.
return
– оператор выхода из функции (программы. Поэтому оператору выполнение программы завершается. Управляющие структуры ветвления и цикла в каждой своей ветви содержат не более одного оператора обработки информации (в таблице 1.3
A, B
). Во многих программах

14 этого недостаточно даже для реализации простого алгоритма. Для того чтобы распространить область действия значения условия или цикла на несколько операторов, необходимо объединить их в составной оператор
Составной оператор – это последовательность операторов, заключенная в операторные скобки
{ Например
if(x>0) {
y= 1; k++; здесь составной оператор – это операторы y=1 и k++
} // которые заключены в фигурные скобки и выполняются при
x > 0 На практике использование составного оператора означает, что мы просто заменяем функциональный узел внутри управляющей структуры такой управляющей структурой, которая необходима для реализации алгоритма. В приведенном примере функциональный узел в структуре «
Если_То
» был заменен структурой Последовательность Это способ построения программы дает нам возможность, используя всего несколько базовых структур, построить программу любой сложности. При этом разработка программы осуществляется сверху вниз от общей структуры программы, как одного функционального узла, к ее конкретному уточненному представлению в виде совокупности вложенных управляющих структур. Структура простой программы Программа на языке
C++
в самом простом случае состоит из одного файла с расширением Исходный файл (
*.cpp
) в свою очередь состоит из директив препроцессора, например
#include
для подключения заголовочных файлов объявлений переменных глобальных, доступа к пространствам имен, пользовательских типов данных, атак же прототипов функций;
функций, одна из которых
main
– главная программа.

15 Примеры программ Пример 1_8_1. Программа вычисляет сумму двух чисел

using
std::endl;
using
std::cin;
using
std::cout;
int
main() функция main начинает выполнение программы
int
int1; первое число, вводимое пользователем
int
int2; второе число, вводимое пользователем
int
sum; переменная для сохранения суммы
cout << Введите первое число endl;
cin >> int1; ввод значения первого числа
cout << Введите второе число endl;
cin >> int2;
// ввод значения второго числа
sum = int1 + int2; вычисление суммы
cout << Сумма равна "
<< sum << endl; вывод значения суммы
return
функция main возвращает ноль, это показывает, что программа успешно завершена Пример 1_8_2. Программа вычисляет максимальное из трех целых чисел a, b, Вариант 1
#include

using
std::cin;
using
std::cout;
using
std::endl;
int
main()
{
int
a, b, c;
cout << Введите целые числа a, b, c:"
;
cin>> a >> b >> c;
if
(a>b)
if
(a>c) cout<<
"max= "
<< a << endl;
else
cout<<
"max= "
<< c << endl;
else
if
(b>c) cout<<
"max= "
<< b << endl;
else
cout<<
"max= "
<< c << endl;
system(
"pause"
);
return
0;
}

16 Вариант 2
#include

using
std::cin;
using
std::cout;
using
std::endl;
int
main()
{
int
a, b, c;
int
max;
cout << Введите целые числа a, b, c:"
;
cin>> a >> b >> c;
max = (a>b) ? a : b;
if
(c>max) max = c;
cout<<
"max= "
<< max << endl;
system(
"pause"
);
return
0;
} Пример 1_8_3. Программа вычисляет количество цифр 5 ив целом положительном числе Вариант 1.
#include

using
std::cin;
using
std::cout;
using
std::endl;
int
main()
{
int
num, k=0;
cout << Введите целое число :"
; cin>>num;
while
(num>0) {
if
((num%10==5)||(num%10==8)) k++;
num/=10;
}
cout<
system(
"pause"
);
return
0;
} Вариант 2.
#include

using
std::cin;
using
std::cout;
using
std::endl;
int
main()
{
int
num, k=0;
cout << Введите целое число :"
;
cin>>num;
for
(; num>0; num/=10)
if
((num%10==5)||(num%10==8)) k++;
cout<
system(
"pause"
);
return
0;
}

17 Пример 1_8_4. Программа находит все делители целого положительного числа

Вариант 1.
#include

using
std::cin;
using
std::cout;
using
std::endl;
int
main()
{
int
num;
cout << Введите целое число :"
; cin>>num;
int
half = num/2;
int
div=2;
while
(div<=half) {
if
(!(num%div)) cout <
div++;
system(
"pause"
);
1   2   3   4   5   6   7   8   9   10


написать администратору сайта