С++ // язык программирования

Содержание

Слайд 2

СТРУКТУРА ПРОГРАММЫ С++ Каждая подпрограмма имеет структуру, подобную функции main(); Каждая

СТРУКТУРА ПРОГРАММЫ С++

Каждая подпрограмма имеет структуру, подобную функции main();
Каждая программа содержит

одну или несколько функций;
Каждая функция содержит 4 основных элемента:
1. тип возвращаемого значения; Int
2. имя функции; main()
3. список параметров, {return 0;} -
заключённый в круглые скобки
4. тело функции
- эта строка значит "вернуть операционной системе в качестве сигнала об успешном завершении программы значение 0".
Слайд 3

ОРГАНИЗАЦИЯ КОНСОЛЬНОГО – ВВОДА/ВЫВОДА ДАННЫХ (Т.Е. В РЕЖИМЕ ЧЁРНОГО ЭКРАНА) #include

ОРГАНИЗАЦИЯ КОНСОЛЬНОГО – ВВОДА/ВЫВОДА ДАННЫХ (Т.Е. В РЕЖИМЕ ЧЁРНОГО ЭКРАНА)


#include ; //директива процессора, предназначена для включения в исходный текст содержимое заголовочного файла, имя которого< iostream>, содержащий описания функций стандартной библиотеки ввода/вывода для работы с клавиатурой и экраном.
using namespace stg; //директива означ.что все определённые ниже имена будут отн-ся к пространству имён std
Int main() //имя функции,кот.не содержит параметров и должна возвращать значение типа Int
{Int a,b; //объявление двух переменных типа Int - целый тип
cout <<”введите два целых числа”< << - операция помещения данных в выходной поток;
endl - манипулятор, переводит сообщение на новую сточку.
cin >>a >>b; //оператор ввода данных с клавиатуры,
>> - операция для извлечения данных из выходного потока, читает значения из cin и сохр. их в переменных.
cout >>”их сумма равна”< return 0;} //оператор вывода
Слайд 4

СТАНДАРТНЫЕ ТИПЫ ДАННЫХ Целые типы данных – short, int, long и

СТАНДАРТНЫЕ ТИПЫ ДАННЫХ

Целые типы данных – short, int, long и спецификаторы

(signed,unsigned);
Вещественные типы – float, double, long double;
Cсимвольные типы – char, wchar_t;
Логический тип – bool, принимающий значения (true-истина, false-ложь);
Константы (const)
a=b+2,5 //неименованная константа;
‘1L’ - целочисленный литерал (тип long);
“8” – целочисл.литерал (тип Int);
‘f’, – символьный литерал, ‘\n’-конец строки
Формат описания именованной константы:
[<класс памяти>]const <тип> <имя именован-ой константы>=<выражение>;
const int l= - 124;
const floak k1=2,345, k=1/k1
Класс памяти- это спецификатор, определяющий время жизни и область видимости данного объекта.
Выражение, определяет значение именованной константы, т.е инициализирует её.
Слайд 5

ПЕРЕМЕННЫЕ Формат описания переменных: [ ] [= | ( )]; Пример:

ПЕРЕМЕННЫЕ

Формат описания переменных:
[<класс памяти>]<тип><имя>[=<выражение> | (<выражение>)];
Пример:
int I,j;
double x;
Значение

переменных должно быть определено с помощью:
1. оператора присваивания: int a; //описание переменной
int= a; //опред.значения.переменной
2. оператора ввода: int a; //описание переменной
cin>>a; //опред.знач.переменной
3. инициализация – опред.значения переменной на этом этапе описания.
int i=100 //инициализация копией
int i (100); // прямая инициализация
Слайд 6

УПРАВЛЕНИЕ ФОРМАТОМ ВЕЩЕСТВЕННЫХ ТИПОВ ДАННЫХ Сущ.три аспекта оформления значения с плавающей

УПРАВЛЕНИЕ ФОРМАТОМ ВЕЩЕСТВЕННЫХ ТИПОВ ДАННЫХ

Сущ.три аспекта оформления значения с плавающей

запятой которыми можно управлять:
- точность( кол-во отображаемых цифр), изменяется с помощью манипулятора setprecision;
- форма записи (десятичная или экспонец-ая);
- указание десятичной точки для значения с пл.запятой, являющихся целыми числами .
#include Результат работы программы:
#include 1.23e+004
using namespace std; 12345.7
int main() 12345.6789
{ double i=12345,6789;
cout << setprecision(3)< cout << setprecision(6)< cout << setprecision(9)<refurn 0;}
(для использования манипуляторов endl с аргументами требуется подключить заголовочный файл iomanip)
Слайд 7

УПРАВЛЕНИЕ РАЗМЕЩЕНИЕ ДАННЫХ НА ЭКРАНЕ Используются манипуляторы: 1. lief – выравнивает

УПРАВЛЕНИЕ РАЗМЕЩЕНИЕ ДАННЫХ НА ЭКРАНЕ

Используются манипуляторы:
1. lief – выравнивает вывод по

левому краю;
2. right – выравнивает вывод по правому краю;
3. internal – контролирует размещение отрицательного значения: выравнивает знак по левому краю, а значение по правому, заполняя пространство между ними пробелами;
4. setprecision(int w) – устанавливает max кол-во цифр в дробной части для вещественных чисел;
5. setw(int w) – устанавливает max ширину поля вывода;
Пример: Получим:
#include 1. Ivanov;
#include 2.Ivanov;
using nanespace std; 3. Ivanov;
int main()
{ cout <<“1” < cout <<“2” < cout <<“3” < return 0;}
Слайд 8

ЗАДАНИЕ С помощью данных манипуляторов запишите программу, где выравнивание отриц-го числа

ЗАДАНИЕ

С помощью данных манипуляторов запишите программу, где выравнивание отриц-го числа -23,4567

будет только по правому краю.
Должно получиться: 1. -23,4567
2. -23,5
3. - 23,5
Слайд 9

ОПЕРАЦИИ. УНАРНЫЕ ОПЕРАЦИИ Операции увеличения (декремента) и уменьшения (инкремента) на 1(++

ОПЕРАЦИИ. УНАРНЫЕ ОПЕРАЦИИ

Операции увеличения (декремента) и уменьшения (инкремента)
на 1(++ и

--); записываются в двух формах:
Префиксия – операция записывается перед операндом и увеличивает свой операнд на 1 и возвращает изменённоё значений как результат
Постфиксия – операция записывается после операндом, уменьшает свой операнд на 1 и возвр.изменённое знач.как результат.

Пример:
#include
int main()
using nanespace std;
{ int x=3, y=4;
cout <<++x<<“\t”<<--y< cout < cout < return 0;}

Слайд 10

Операции отрицания (-,!) (-) - унарный минус – изменяет знак операнда

Операции отрицания (-,!)
(-) - унарный минус – изменяет знак операнда целого

или вещественного типа на противоположный;
(!) – логическое отрицание, даёт в результате значение 0(ложь), если операнд отличен от 0(истина),если равен операнд 0 (ложь);
тип опeранда может быть любой.
Пример:
#include
int main()
using nanespace std;
{ int x=3, y=0;
bool f=false, v=true;
cout <<-x<<“\t”< cout <<-y<<“\t”< cout < return 0;}
Слайд 11

БИНАРНЫЕ ОПЕРАЦИИ Арифметические операции: умножение.(*), деление.(/), остаток от деления.(%); слож.(+), вычит.(-)

БИНАРНЫЕ ОПЕРАЦИИ

Арифметические операции: умножение.(*), деление.(/), остаток от деления.(%); слож.(+), вычит.(-)
Рассмотрим операции

деления и остаток от деления:
#include
using nanespace std;
int main()
{ cout <<100/24<<“\t”<<100/24< cout <<100/21<<“\t”<<100,0/24< cout <<21%3<<“\t”<<21%6<<“-21%8”< return 0;}
- Операции отрицания (-,!) унарный минус – изменяет знак операнда целого или вещест-го типа на противоположный.
- Операции отношения: (<, <=, >, >=, == !=), меньше, меньше или равно, больше, больше или равно, равно, не равно, не равно соответственно).
Результатом операций являются значения true, false.
Слайд 12

Логические операции (&& и ||) И (&&) - возвращает значение истина

Логические операции (&& и ||)
И (&&) - возвращает значение истина тогда

и только тогда, когда оба операнда принимают значение истина, в противном случае операция возращ.знач.ложь.
ИЛИ || - возвращает знач.истина тогда и.т.тогда, когда хотя бы один операнд принимает значение истина, в противном случае –ложь
логические операции выполняются слева направо;
приоритет операции && выше ||.
Пример:
#include
using namespace std;
int main()
{ cout <<‘x\t y\t &&\t||’endl;
cout <<“0\t 1\t”<<(0 && 1)<<‘\t’<<(0||1)endl;
cout <<‘0\t 1\t’<<(0 && 1)<<\t’<< (0||1)endl;
cout <<‘1\t 0\t’<<(1 && 0)<<‘\t’<<(1||0)endl;
cout <<‘1\t 1\t’<<(1 && 1)<<‘\t’<<(1||1)endl;
return 0;}
Слайд 13

ОПЕРАЦИИ ПРИСВАИВАНИЯ формат операция простого присваивания (=): опреанд_1 = операнд_2 пример:

ОПЕРАЦИИ ПРИСВАИВАНИЯ

формат операция простого присваивания (=):
опреанд_1 = операнд_2
пример: a=b=c=100, это

выражение выполняется справа налево, результатом выполнения с=100, является число 100, которое затем присвоиться переменной b, потом а.
Сложные операции присваивания:
(*=) – умножение с присв-ем,
( /=) - деление с присв-ем
(%= )- остаток от деления с присв-ем,
(+=) –сложение с присв.,
(-=) - вычит.с присв.
пример: к операнду _1 прибавляется операнд_2 и результат записывается в операнд_2
т.е. с = с + а, тогда компактная запись с += а
Слайд 14

ТЕРНАРНАЯ ОПЕРАЦИЯ Условная операция (? : ) Формат условной операции: операнд_1

ТЕРНАРНАЯ ОПЕРАЦИЯ

Условная операция (? : )
Формат условной операции: операнд_1 ? операнд_2

? : операнд_3
Операнд_1 это логическое или арифметич-ое выражение;
Оценивается с точки зрения эквивалентности константам true и false;
Если результат вычисления операнда_1 равен true,то результат условной операции будет значение операнда_2, иначе операнда_3;
Тип может различаться;
Условная операция является сокращ. формой услов-го оператора if;
Пример: Результат:
#include для х=11 и y=9
int main() 11
using nanespace std; 11
{ int x, y,max;
cin >>x>>y;
(x>y)? cout < max=(x>y)? x:y; //2 чения для двух целых чисел;
cout< return 0;}
Слайд 15

ВЫРАЖЕНИЯ ПРЕОБРАЗОВАНИЯ ТИПОВ Примеры: (a+0,12)/6; x && y || !z; (t*sin(x)-1,05e4)/((2*k+2)*(2*k+3))4;

ВЫРАЖЕНИЯ ПРЕОБРАЗОВАНИЯ ТИПОВ

Примеры:
(a+0,12)/6; x && y || !z;
(t*sin(x)-1,05e4)/((2*k+2)*(2*k+3))4;
операции

выполняются в соответствии с приоритетом;
если в одном выражении имеются неск.операций одинаково приоритета, то унарные операции выполняются- справа
налево, остальные –слева направо
Т.е : a= b+c значит a=(b=c),
а + b+c значит (a +b) +c
в выражения могут входить операнды различных типов;
при одинаковом типе операндов, результат будет им.тот же тип;
если разного типа операнды, то операнд с более «низким» типом будет преобразован к более «высокому» типу для сохранения значимости и точности:
Слайд 16

Неявное преобразование: include using nanespace std; int main() { int a=100,

Неявное преобразование:
include
using nanespace std;
int main()
{ int a=100, b;

float c=4,5, d;
d=a/c; //1- без потери точности
cout << “d=” < b=a/c; //2- с потерей точности
cout <<“b=”<

Задания:
1.Составить программу, которая для заданного значения х вычисляет значения выражения:
Х2+sin (x+1)/25, c учётом приоритета операций в с++:
(pow(x,2)+sin(x+1)/25;
2.Написать программу, подсчитывающую площадь квадрата, периметр которого равен p.
Пусть дан квадрат со стороны а, тогда: p = 4a, а =p/4……
s=a2 ………………………………..S=

Слайд 17

ОПЕРАТОРЫ С++ Программа на языке С++ состоит из последовательности операторов, каждый

ОПЕРАТОРЫ С++

Программа на языке С++ состоит из последовательности операторов, каждый из

них определяет значение некоторого действия;
Все операторы разделены на 4 группы:
- операторы следования;
- операторы ветвления;
- операторы цикла;
- операторы передачи управления.
Слайд 18

ОПЕРАТОРЫ СЛЕДОВАНИЯ К ним отн-ся : оператор выражение и составной оператор.

ОПЕРАТОРЫ СЛЕДОВАНИЯ

К ним отн-ся : оператор выражение и составной оператор.
Выражение,

завершающееся точкой с запятой, рассматривается как оператор (вычислении значения выражения или выполнении законченного действия);
++i; //оператор инкремента
х+=у; //оператор сложение с присваиванием
f(a, b) //вызов функции
x= max (a, b) + a*b; //вычисление сложного выражения
Частным случаем оператора выражения является пустой оператор ;
(используется, когда по синтаксису оператор требуется, а по смыслу — нет)
Составной оператор или блок представляет собой последоват-ть операторов, заключенных в фигурные скобки.
Блок обладает собственной областью видимости: объявленные внутри блока имена доступны только внутри блока;
Составные операторы применяются в случае, когда правила языка предусматривают наличие только одного оператора, а логика программы требует нескольких операторов.
Слайд 19

ОПЕРАТОРЫ ВЕТВЛЕНИЯ К ним отн-ся : условный оператор if и оператор

ОПЕРАТОРЫ ВЕТВЛЕНИЯ

К ним отн-ся : условный оператор if и оператор выбора

switch,
они позволяют изменить порядок выполнения операторов в программе;
Условный оператор if
if используется для разветвления процесса обработки данных на два направления.
if имеет формы: сокращенную или полную.
Формат сокращенного оператора if: if (В) S;
В –логич. или арифметич. выражение, истинность которого проверяет­ся; S - один оператор: простой или составной.
При выполнении сокращенной формы оператора if сначала вычисляется выражение В, затем проводится анализ его результата: если В истинно, то выполняется оператор S; если В ложно, то оператор S пропускается.
C помощью сокращенной формы оператора If можно либо выполнить оператор S, либо пропустить его.
Формат полного оператора if: if (B) S1 ; else S2;
SI, S2- один оператор: простой или составной.
При выполнении полной формы оператора if сначала вычисляется выражение В, затем анализируется его результат: если В истинно, то выполняется оператор S1 а оператор S2 пропускается; если В ложно, то выполняется оператор S2, a S1 - пропускается.
C помощью полной формы оператора if можно выбрать одно из двух альтернативных действий процесса обработки данных.
Слайд 20

Примеры записи условного оператора if. if (a > 0) х=у; //

Примеры записи условного оператора if.
if (a > 0) х=у; // сокращенная

форма с простым оператором
if (++i) {x=y; y=2*z;} // сокращенная форма с составным оператором
if (а > 0 |'| b<0) x=y; eise x=z; //полная форма с простым оператором
if (i+j-1) { х= 0; у= 1;} else {x=1; у:=0;} //полная форма с составными операт
Операторы S1 и S2 могут являться операторами if, такие операторы наз. вложенные;
Ключевое слово else связывается с ближайшим предыдущим словом if, которое еще не связано ни с одним else.
Примеры алгоритмов с использованием вложенных условных операторов:
Пример1 Уровни вложенности If Пример 2 Уровни вложенности if
if(A if (С < D) if (C if(Eelse X = R; 3 2 1 else 1
else X=Z; if (E else X = Y; else X=Q; 2
Слайд 21

Оператор выбора switch предназначен для разветвления процесса вычислений на несколько направлений.

Оператор выбора switch
предназначен для разветвления процесса вычислений на несколько направлений.


Формат оператора:
switch (<выражение>)
{case <константное_выражение_1>: [<оператор 1>]
case <константное_выражение_2>: [<оператор 2>]
…………………………..
case <константное_выражение_n>: [<оператор n>]
[default: <оператор> ]}
Выражение, стоящее за ключевым словом switch, должно иметь арифметич. тип или тип указатель.
Все константные выражения должны иметь разные значения, но совпадать с типом выражения, стоящим после switch.
Ключевое слово case и расположенное после него константное выражение называют также меткой case.
Слайд 22

Выполнение оператора начинается с вычисления выражения, расположенного за ключевым словом switch.

Выполнение оператора начинается с вычисления выражения, расположенного за ключевым словом switch.


Полученный результат сравнивается с меткой case.
Если результат выражения соответствует метке case, то выполняется оператор, стоящий после этой метки.
Затем последовательно выполняются все операторы до конца оператора switch , если только их выполнение не будет прервано с помощью оператора передачи управления break
При использование оператора break происходит выход из switch и управление переходит к первому после него оператору.
Если совпадения выражения ни с одной меткой case не произошло, то выполняется оператор, стоящий после слова default, а при его отсутствии управление передается следующему за switch оператору.

Пример. Известен порядковый номер дня недели. Вывести на экран его название.
#include
using namespace std;
int main()
{int x; cin >>x;
switch (x)
{ case 1: cout <<"понедельник"; break;
case 2: cout <<"вторник"; break;
case 3: cout <<"среда"; break;
case 4: cout <<"четверг"; break;
case 5: cout <<"пятница"; break;
case 6: cout <<"суббота"; break;
case7: cout <<"воскресенье";break;
default: cout <<"вы ошиблись";}
return 0;}

Слайд 23

ИСПОЛЬЗОВАНИЕ ОПЕРАТОРОВ ВЕТВЛЕНИЯ: Дана точка на плоскости с координатами (х, у).

ИСПОЛЬЗОВАНИЕ ОПЕРАТОРОВ ВЕТВЛЕНИЯ:

Дана точка на плоскости с координатами (х, у).
Составим

программу, которая выдает одно из сообщений «Да», «Нет», «На границе» (в зависимости от того, лежит ли точка внутри заштрихованной области, вне заштрихованной области или на ее границе)
Заданная область разбивает всю плоскость на 3 непересекающихся множества точек. y
I1 -множество точек, лежащих внутри области;
I2 - множество точек, лежащих вне области;
I3 - множество точек, образующих границу области. 10 x
-10
Точка с координатами (х, у) может принадлежать только одному из них;
Множества I1 , I2, I3 значительно труднее описать математич-ки, чем интервалы в примере 2,поэтому для проверки выбираются те два множества, которые наиболее просто описать математич-ки.(труднее всего описать точки границы области).
Для рис. 1 множества задаются следующим образом; I1:х2 + у2<102; I2:х2 + у2>102;
I3: х2 +у2 = 102.
Слайд 24

Множества I1:х2 + у2 102; I3: х2 +у2 = 102. рис.1

Множества
I1:х2 + у2<102; I2:х2 + у2>102;
I3: х2 +у2 = 102.

рис.1
х
#include < iosfream>
#include 10 y
using namespace std;
int main() -10
{ float x,y;
cout << "x="; cin >>x;
cout << “y”; cin >>y;
if (x*x+y*y< 100) //точки внутри области ?
cout <<"Да";
else if (x*x+y*y>100) //точки вне области?
cout<<"HЕT“;
else cout << "на границе";
return 0;}


Результат программы:
Координаты точек ответ
0 да
10 на границе
-12 нет

Слайд 25

Множества задаются (для рисунка 2) : I1: |х| 10 или |y|>5;

Множества задаются (для рисунка 2) :
I1: |х|<10 и |y|<5; I2: |x| >10

или |y|>5;
I3:( |х|<=10и у = 5) или( |х|<=10и у = -5) или ( |y|<5и x = 10) или( |у|<5и х = -10).
рис.2
#include y Результат:
#include 5 координаты точек ответ
int main() x 0 0 да
cout <<“x=“; cin>>x; 10 10 5 на границе
cout <<"y="; cin>>y; -12 13 нет
If (fabs(x)<10 && fabs(y)<5) //точки внутри области?
cout <<"Да";
else if (fabs(x)>101 || fabs(y)>5) //точки вне области?
cout<<"HeT";
else cout <<"на границе";
return 0;}
Слайд 26

Дан номер фигуры (1- квадрат, 2 - треугольник); по номеру фигуры

Дан номер фигуры (1- квадрат, 2 - треугольник);
по номеру фигуры

запросить необходимые данные для вычисления площади;
произвести вычисление площади фигуры и вывести получ-ые данные на экран.
#include
#include
using namespace std;
int main()
{ int x;
cout << “Программа подсчитывает площадь:\n1. квадрата;\n2. треугольника.\nЗ. выход из программы’’;
cout <<“Укажите номер фигуры или завершите работу с программой.\n”;
cin >> x;
switch (x)
{case 1 :{cout <<"введите длину стороны квадрата\n";
float a; cin >>a;
if (a>0) cout«"Площадь квадрата со стороной" <<а <<"равна\t <<а*а;
else cout «"Квадрат не существует\n";
break;}
case 2: {cout« "введите длины сторон треугольника\n";
float a,b,c,p, s; cin >>a >>b >>c;
if (a+b>c && a+c>b && b+c>a)
{p=(a+b+c)/2; s= sqrt(p*(p-a)*(p-b)*(p-c));
cout <<"Площадь треугольника со сторонами" < else cout<<"Tpeyгольник не существуетет\n";
break;}
case 3:break;
default: cout <<"Номер фигуры указан не верно\n";}
return 0;}

ОПЕРАТОРЫ ЦИКЛА Операторы цикла используются для организации многократно повторяющихся вычислений. -

ЦИКЛ С ПАРАМЕТРОМ FOR Цикл с параметром имеет следующую структуру: for

Указатель может быть переменной или константой, указывать на переменную или константу,

Перед использованием указателя надо выполнить его инициализацию, т.е. присвоение нач.значения. Существуют

следующие способы инициализации указателя:
1) присваивание указателю адреса существующего объекта:
с помощью операции получения адреса:
int а=50; //целая переменная
int *x=&a; //указателю присваивается адрес целой переменной а
int *y (&а); // указателю присваивается адрес целой переменной а
с помощью значения другого инициализированного указателя
int *z=x; //указателю присваивается адрес, хранящийся в х:
с помощью имени массива или функции (рассмотрим позже).
2) присваивание указателю адреса области памяти в явном виде:
int *p=(int *) 0xB8000000;
где 0хВ8000000 - шестнадцатеричная константа, (int *) - операция явного приве­дения типа к типу указатель на целочисленное значение.
3) присваивание пустого значения:
int *x=NULL; int *y=0;
где NULL стандартная константа, определенная как указатель равный О
4) выделение участка динамической памяти и присваивание ее адреса указателю:
int *a = new int; //1
int *b = new int (50); //2

Дан массив из n целых чисел (n #include using namespace std;

В двумерном массиве, элементами которого являются целые числа, подсчитать среднее арифметическое