Инструкции C++ презентация

Содержание

Условная инструкция Формат: if (условие) оператор; else оператор; Пример: if (i!=0) { if (j) j++; if(k) k++; else if(p) k--; } else i--; Формат: switch (выражение) { case константа:

Слайд 1Инструкции C++


Слайд 2Условная инструкция
Формат:
if (условие) оператор;
else оператор;
Пример:
if (i!=0) { if (j) j++; if(k) k++; else if(p)

k--; }
else i--;

Формат:
switch (выражение) { case константа: набор операторов; break; … default: набор операторов;
}

Инструкция выбора


Слайд 3Циклы
С предусловием:
while (условие) оператор;
С постусловием:
do оператор; while (условие);
Пересчетного типа:
for(инициализация;условие;приращение)оператор;









Слайд 4Инструкции перехода
break;
Пример:
for(int I=0; I

break; }

continue;
Пример:
for(;;) { cin >>I; if(I>0) continue; goto loop_exit; }
loop_exit: …

Инструкция безусловного перехода

Формат: goto метка;

Используется только в случаях крайней необходимости!

break; }


Слайд 5Функции
Функция до её использования должна быть описана или объявлена в виде

(имена параметров игнорируются):
Прототип_функции;
Функция должна быть описана только один раз в виде:
Прототип_функции { тело_функции }
Формат прототипа:
Тип_возвращаемого_значения имя(список_параметров)
Формат списка параметров:
тип имя_аргумента,…,тип имя_аргумента
Функцию можно определить со спецификатором inline
inline int fac(int n) {return (n<2)?1:n*fac(n-1);}
Программа начинает выполняться с функции main.


Слайд 6Возвращаемое значение
Любая функция, если она не объявлена как void, должна возвращать

значение.
Это значение задается в инструкции return выражение; - инициализации неименованной переменной возвращаемого типа.
Функция может иметь несколько инструкций return.
Если функция не возвращает значения, то выражение в инструкции return может быть пустым или вызовом функции типа void.

Слайд 7Пример.
int fac(int n) { if(n>1) return n*fac(n-1); return 1; }
Ошибка.
int* fp(void) { int& fr(void) { int

local=1; return &local; return local; } }

Возвращается адрес локальной переменной, которая будет уничтожена. Значение, на которое будет указывать этот адрес, будет меняться непредсказуемо!


Слайд 8 Передача аргументов
По значению
void val(int i) { i++; }
void main() {
int

k=0; val(k);
cout << “k=” << k; }

По ссылке
void ref(int& j) { j++; }
void main() {
int k=0; ref(k);
cout << “k=” << k; }

Результат: k=0

Результат: k=1

Функции, которые модифицируют аргументы переданные по ссылке, делают программу трудно читаемой и в большинстве случаев их следует избегать.
В тоже время, большие объекты эффективнее передавать по ссылке, чем по значению.

Выход: void val(const тип&); - указывает на то, что ссылка используется только из соображений эффективности. сonst тип* - говорит, что значение объекта, на который ссылается указатель, не может изменяться в функции.

сout << “k=“ << k; сhar c=‘0’; ref(c); cout << “ c=” << c; } Результат: k=1 c=0 - ?!


Слайд 9Функции с неопределенным числом аргументов
#include #include int average( int first, ...

); void main() { cout << average( 2, 3, 4, -1 ) <<‘ ’; cout << average( 5, 7, 9, 11, -1 ) << ‘ ’; cout << average( -1 ) << ‘\n’; } int average( int first, ... ) { int cnt = 0, sum = 0, i = first; va_list mkr; va_start( mkr, first ); while( i != -1 ) { sum += i; cnt++;i = va_arg(mkr,int); } va_end( mkr ); return( sum ? (sum / cnt) : 0 ); }

Результат: 3 8 0

void* mkr; mkr=&first +sizeof first;

*((int*)mkr)++;

mkr=0;

Файл stdio.h
printf(char*,…)


Слайд 10Аргументы функции main

#include
void main(int n,char* s[])
{ cout

i cout << '\n';
}

Результат: tst.exe a bb ccc

Аргументы по умолчанию

void print(int n,int sys=10) {
if(sys==16) cout << hex;
else if(sys==8) cout << oct;
else cout << dec;
cout << n << '\t'; }

void main() { print(31,8);
print(31); print(31,16); }

37 31 1f


Слайд 11Полиморфизм – один интерфейс, множество методов
void print(long); // печать целого
void print(char*); // печать

символьной строки
void print(float); // печать вещественного
Проблема: print(10);
Не требуется преобразования типа (int и const int).
Существует стандартное преобразование типа с расширением точности (int в long).
Тоже с возможной потерей точности (double в int).
Преобразование типа определено пользователем.
С переменным числом аргументов.

Слайд 12Указатель на функцию
#include
#include
double I(double a,double b,int n,const double (&F)(double)) { double

h=(b-a)/n--,s=(F(a)+F(b))/2; while(n--) s+=F(a+=h); return s*h; }
double f(double x) { return x; }
void main() { cout << "I( x )= " << I(0.,1.,100,f) << endl; cout << "I( Sin(x) )= " << I(0.,3.14159,100,sin) << endl; }
Результат: I( x )= 0.5 I( Sin(x) )= 1.999836

Слайд 13Макросы
Расширение исходного кода

#include
#include ”имя_файла”


Вставить определение

Определить константу

#define имя_макроса список_лексем
#define va_list void*
#define

sqr(x) (x)*(x)


#define имя константа
#define array_size 128


NB! #define sqr(x) x*x A=sqr(a+b); // A=a+b*a+b;

Условной компиляции

#if #ifdef #ifndef …
#else #elif …
#endif



Слайд 14Библиотечные функции
#include
#define eof (-1)
int getchar(void);
int putchar(int);
int printf(char*,…);
int scanf(char*,…);
#include
double sin(double);
double

cosh(double);
double exp(double);
double sqrt(double);
double pow(double,double);

#include
#define NULL 0
char* strcpy(char*, const char*);
int strcmp(const char*,const char*);
int strlen(const char*);
char* strstr(const char*,const char*);
#include
int getch(void);
int getche(void);
int putch(int);
void gotoxy(int,int);


Слайд 15От проектирования процедур к организации данных
#include struct complex { double re,im;

};
void main(void) { complex a; a.re=1.; a.im=2.; cout << “a=“; cout << ‘(‘ << a.re << ‘,’ << a.im << ‘)’; }

void assign(complex& num, double r, double i) { num.re=r; num.im=i; }
void print(complex num) { cout << ‘(‘ << num.re << ‘,’ << num.im << ‘)’; }
void main(void) { complex a; assign(a,1.,2.); cout << ‘a=“; print(a); }


Слайд 16Инкапсуляция
#include
struct complex { double re,im; void assign(double r,double i) { re=r; im=i;

} void print(void); };
void complex::print(void) { cout << ‘(‘ << re << ‘,’ << im << ‘)’; }
void main(void) { complex a; a.assign(1.,2.); cout << “a=“; a.print(); }

Слайд 17Сокрытие данных
#include
struct complex {
private: double re,im;
public: void assign(doble r,double i) { re=r;

im=i; } void print(void); };
void complex::print(void) { cout << ‘(‘ << re << ‘,’ << im << ‘)’; }
void main(void) { complex a,b; a.assign(1.,2.); b=a; cout << “b=“; b.print(); }

class complex { double re,im;
public: void assign(double r,double i) { re=r; im=i; } void print(void); };
void complex::print(void) { cout << ‘(‘ << re << ‘,’ << im << ‘)’; }
void main(void) { complex a,b; a.assign(1.,2.); b=a; cout << “b=“; b.print();
}


Слайд 18Конструкторы
class complex { double re,im;
public: complex(double r=0.,double i=0.) { re=r; im=i;

} void print(void) const; };
void complex::print(void) const { cout << ‘(‘ << re << ‘,’ << im << ‘)’; }
void main(void) { const complex a,b(1.2,2.3),c=5.; cout << “a=“; a.print(); cout << ‘\t’; cout << “b=”; b.print(); cout << ‘\t’; cout << “c=”; c.print(); cout << endl; }
Результат: a=(0,0) b=(1.2,2.3) c=(5,0)

Слайд 19Преобразование типов
class complex { double re,im;
public: complex(double r=0.,double i=0.) { re=r;

im=i; } operator double() { return sqrt(re*re+im*im); } void print(void) const; };
void complex::print(void) const { cout << ‘(‘ << re << ‘,’ << im << ‘)’; }
void main(void) { complex a(3.,4.); cout << “|a|=” << (double)a << endl; }
Результат: |a|=5

Слайд 20Перегрузка операторов
class complex { double re,im;
public: complex(double r=0.,double i=0.) { re=r;

im=i; } operator double() { return sqrt(re*re+im*im); } complex operator +(double b){ return complex(re+b,im); } complex operator+(complex a) { return complex(a.re+re,a.im+im); } void print() const { cout << ‘(‘ << re << ‘,’ << im << ‘)’; } };
void main(void) {complex a(3.,4.),b=a+5,c=a+b; cout << “c=”; c.print(); cout << endl; }
Результат: c=(11,8)

void main(void) {complex a(3.,4.),b=5+a,c=a+b; cout << “c=”; c.print(); cout << endl; }
Результат: c=(13,4)


Слайд 21Дружественные функции
class complex { double re,im;
public: complex(double r=0.,double i=0.) { re=r;

im=i; } operator double() { return sqrt(re*re+im*im); } friend complex operator+(double,complex); complex operator +(double b){ return complex(re+b,im); } complex operator+(complex a) { return complex(a.re+re,a.im+im); } void print() const { cout << ‘(‘ << re << ‘,’ << im << ‘)’; } };
complex operator+(double a, complex b) { return complex(a+b.re,b.im); }
main() { complex a(3.,4.), b=a+5, c=5+a; b.print(); c.print(); }

Результат: (8,4)(8,4)


Слайд 22Перегрузка оператора

re=r; im=i; } operator double() { return sqrt(re*re+im*im); } complex operator +(double b){ return complex(re+b,im); } complex operator+(complex a) { return complex(re+a.re,im+a.im); } friend ostream& operator<<(ostream&,complex); };
ostream& operator<<(ostream& s,complex& a) { s << ‘(‘ << a.re << ‘,’ <void main(void) { complex a(3.,4.),b=a+5,c=a+b; cout << “c=” << c << endl; }
Результат: c=(11,8)

Слайд 23Пример


Обратная связь

Если не удалось найти и скачать презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое ThePresentation.ru?

Это сайт презентаций, докладов, проектов, шаблонов в формате PowerPoint. Мы помогаем школьникам, студентам, учителям, преподавателям хранить и обмениваться учебными материалами с другими пользователями.


Для правообладателей

Яндекс.Метрика