Скачать презентацию Операции в С Проф Куссуль Н М 1 Скачать презентацию Операции в С Проф Куссуль Н М 1

Lecture3-CPP.ppt

  • Количество слайдов: 32

Операции в С++ Проф. Куссуль Н. М. 1 Операции в С++ Проф. Куссуль Н. М. 1

Введение В языке C++ доступ к объектам и функциям обеспечивается выражениями Выражения состоят из Введение В языке C++ доступ к объектам и функциям обеспечивается выражениями Выражения состоят из операций и операторов 2

Операции арифметические логические отношения 3 Операции арифметические логические отношения 3

Арифметические операции применимы к любым комбинациям простых типов (bool, int, char, double): n n Арифметические операции применимы к любым комбинациям простых типов (bool, int, char, double): n n n + (плюс, унарный и бинарный) (минус, унарный и бинарный) * (умножение) / (деление) % (остаток от деления) 4

Пример арифметических операций cout cout << << << Пример арифметических операций cout cout << << << "1 "5 "4 "8 "7 + 2 = " << 1 + 2 << endl; 3 = " << 5 3 << endl; * 6 = " << 4 * 6 << endl; / 4 = " << 8 / 4 << endl; % 4 = " << 7 / 4 << endl; 5

Операции отношения применимы к любым комбинациям простых типов: n n n == != > Операции отношения применимы к любым комбинациям простых типов: n n n == != > < <= >= (равно) (неравно) (больше) (меньше или равно) (больше или равно) 6

Пример операций отношения (a == 10) // Если два значения равны (a != b) Пример операций отношения (a == 10) // Если два значения равны (a != b) // Если два значения не равны (a > 5) // Если первое значение больше второго (b <= 30) // Если первое значение меньше или равно второму 7

Логические операции применимы к любым выражениям: n n n ! (отрицание) && (логическое И) Логические операции применимы к любым выражениям: n n n ! (отрицание) && (логическое И) || (логическое ИЛИ) 8

Приоритеты и порядок выполнения операций Пріорит ет Знаки операцій Назви операцій Порядок Виконання 1. Приоритеты и порядок выполнения операций Пріорит ет Знаки операцій Назви операцій Порядок Виконання 1. . -> [] () ++ -- вибір елемента за іменем вибір елемента за вказівником вибір елемента за індексом виклик функції або конструювання значення постфіксний інкремент постфіксний декремент зліва-направо 2. sizeof ++ -~ ! + & new delete (ім'я_типу) розмір операнда в байтах префіксний інкремент префіксний декремент інверсія (порозрядне заперечення) логічне заперечення унарний плюс унарний мінус адреса виділення пам'яті або створення звільнення пам'яті або знищення перетворення типу справа-наліво вибір елемента по імені через вказівник вибір елементу по вказівнику через вказівник зліва-направо 3. . * ->* 9

Приоритеты и порядок выполнения операций 4. * / % 5. + - додавання віднімання Приоритеты и порядок выполнения операций 4. * / % 5. + - додавання віднімання зліва-направо 6. << >> зсув вліво зсув вправо зліва-направо 7. 8. < > <= >= == !== множення ділення остача від ділення цілих (ділення по модулю) менше більше менше або дорівнює більше або дорівнює не рівне зліва-направо 10

Приоритеты и порядок выполнения операций 9. & порозрядне І зліва-направо 10. ^ порозрядне виключаюче Приоритеты и порядок выполнения операций 9. & порозрядне І зліва-направо 10. ^ порозрядне виключаюче АБО зліва-направо 11. | порозрядне АБО зліва-направо 12. && логічне І зліва-направо 13. || логічне АБО зліва-направо 14. ? : умовна операція справа-наліво присвоювання (просте і складене) справа-наліво 15. = *=, /=, %=, +=, -=, &=, ^=, |= 16. throw генерація виключення справа-наліво 17. , послідовність виразів зліва-направо 11

Выражение с приоритетом операций a =(1+2)*(2+3); C++ вычисляет данное выражение в следующем порядке: n Выражение с приоритетом операций a =(1+2)*(2+3); C++ вычисляет данное выражение в следующем порядке: n a = (1 + 2) * (2 + 3)= (3) * (2 + 3)= = 3 * (5)= 3*5 = 15; 12

Другие операции Операции сдвига: n n << (сдвиг влево на 1 разряд (перегружен для Другие операции Операции сдвига: n n << (сдвиг влево на 1 разряд (перегружен для вывода)) >> (сдвиг вправо на 1 разряд (перегружен для ввода)) Поразрядные операции: n n n & (поразрядная конъюнкция битовых представлений значений целочисленных операндов) | (поразрядная дизъюнкция битовых представлений значений целочисленных операндов) ^ (поразрядная исключающая дизъюнкция битовых представлений значений целочисленных операндов) Побитовые операции: n n ~ (операция инвертирования или побитового отрицания) ! (операция логического отрицания) 13

Другие операции Для увеличения (уменьшения) значения переменной в С++ используют следующие операции: Операции автоинкрементирования: Другие операции Для увеличения (уменьшения) значения переменной в С++ используют следующие операции: Операции автоинкрементирования: n n a++; ++a; Операции автодекрементирования: n n a ; a; Пример. Операции автоинкрементирования и автодекрементирования n n j =++i; //равносильно i =i+1; j=i; (префиксная форма) j =i++; //равносильно j =i; i= i+1; (постпрефиксная форма) 14

Другие операции Операция с тремя операндами: n n выражение 1 ? выражение 2 : Другие операции Операция с тремя операндами: n n выражение 1 ? выражение 2 : выражение 3 1) Вычислить выражение 1. 2) Если выражение 1 = true, тогда вычисляется значение выражения 2, которое и становится значением выражения. 3) Если выражение 1 = false, тогда вычисляется выражение 3. Его результат является результатом всего выражения. Пример. Операция с тремя операндами n х =(y

Операторы в С++ Операторы (присваивания, передачи управления): Выражение присваивания включает в себя оператор присваивания Операторы в С++ Операторы (присваивания, передачи управления): Выражение присваивания включает в себя оператор присваивания “=”. Пример. Выражение с оператором присваивания n n n а = b + 1; y = z = 3. 5; a = b + (c=3); //равносильно c=3 и a = b + c, Операторы присваивания могут объединяться с другими операторами n n a+=b; // a=a+b a*=a+b; // a=a*(a+b); 16

Умовний оператор забезпечує виконання або невиконання деякого оператора або групи операторів в залежності від Умовний оператор забезпечує виконання або невиконання деякого оператора або групи операторів в залежності від заданої умови if (умовний вираз) оператор1; else оператор2; Приклад. Знайти мінімум з двох чисел x та y n if (x

Оператори switch і break Зручним засобом вибору з множини варіантів є оператор switch, який Оператори switch і break Зручним засобом вибору з множини варіантів є оператор switch, який має наступну форму запису: switch (вираз) { case константа 1: оператор1; break; … case константа. N: оператор. N; break; default : оператор; break; } 18

Пример оператора switch (rez) { case 5: соut<< Пример оператора switch (rez) { case 5: соut<<"Оцінка — відмінно. "; break; case 4: cout<<"Oцінкa — добре. "; break; case 3: cout<<"Oцінкa — задовільно. "; break; case 2: соut<<"Оцінка — незадовільно. "; break; default: cout << "Hевірнe значення rez. "; } 19

Типи операторів циклів При виконанні програми часто виникає необхідність неодноразового повторення однотипних обчислень над Типи операторів циклів При виконанні програми часто виникає необхідність неодноразового повторення однотипних обчислень над різними даними. Для цих цілей використовують так звані цикли. Цикл представляє собою частину програми, у якій одні й ті самі обчислення реалізуються неодноразово над різними значеннями одних й тих самих змінних (об’єктів). Для організації циклів в С++ використовуються наступні три оператора: while, for і do-while 20

Цикл типу while є циклом з передумовою. Він використовується у випадку, коли n n Цикл типу while є циклом з передумовою. Він використовується у випадку, коли n n по перше, не відома точна кількість повторів по друге, при цьому немає необхідності, щоб цикл неодмінно був виконаний хоча б один раз. Синтаксис while (вираз) оператор; В якості виразу зазвичай використовуються умовні вирази. В загальному випадку можна використовувати вирази довільного типу. На місці оператора може стояти простий оператор або сукупність операторів, об’єднаних у блок дужками {}. Якщо вираз істинний (не рівний нулю), то тіло циклу виконується один раз, далі вираз перевіряється знову. Ітерації (перевірка умови та тіло циклу) виконуються до тих пір, поки вираз не стане хибним (рівним нулю). 21

Цикл типу while В якості виразу зазвичай використовуються умовні вирази. В загальному випадку можна Цикл типу while В якості виразу зазвичай використовуються умовні вирази. В загальному випадку можна використовувати вирази довільного типу. На місці оператора може стояти простий оператор або сукупність операторів, об’єднаних у блок дужками {}. Якщо вираз істинний (не рівний нулю), то тіло циклу виконується один раз, далі вираз перевіряється знову. Ітерації (перевірка умови та тіло циклу) виконуються до тих пір, поки вираз не стане хибним (рівним нулю). 22

Приклад. Цикл while int i=1, rez=1; while (i++<=10&&rez!=25) { cout << Приклад. Цикл while int i=1, rez=1; while (i++<=10&&rez!=25) { cout << "n Введіть число: "; cin >> rez; } if (i==10) cout<<"n. Bи не вгадали. "; else cout<<"n. Вітаю! Ви вгадали число. "; 23

Цикл типу for є циклом з параметрами і зазвичай використовується у випадку, коли відома Цикл типу for є циклом з параметрами і зазвичай використовується у випадку, коли відома точна кількість повторів обчислень. При цьому виконуються три операції: n n n ініціалізація лічильників циклів порівняння його значення з деяким граничним значенням зміна значення лічильника при кожному проходженні тіла циклу. Цикл for має наступну форму запису: for (вираз 1; вираз 2; вираз 3) оператор; 24

Приклад. Цикл for (i=1, rez=1; i<=Т; i++) rez=rez*y; cout<< Приклад. Цикл for (i=1, rez=1; i<=Т; i++) rez=rez*y; cout<<"rez="<

Цикл типу do-while є циклом з постумовою і використовується у тих випадках, коли n Цикл типу do-while є циклом з постумовою і використовується у тих випадках, коли n n невідома точна кількість повторів, але водночас цикл необхідно виконати не менше одного разу Цикл типу do-while дуже схожий на цикл типу while Різниця тільки в тому, що перевірка істинності виразу в циклі do-while має місце після виконання тіла циклу Цей цикл має наступну форму запису: n do { оператор; }while (вираз); 26

Цикл типу do-while do cin >> r; while (r!=13); cout << Цикл типу do-while do cin >> r; while (r!=13); cout << "Bи вгадали число. "; 27

Вкладені цикли Вкладеним циклом називають конструкцію, в якій один цикл виконується всередині другого. Внутрішній Вкладені цикли Вкладеним циклом називають конструкцію, в якій один цикл виконується всередині другого. Внутрішній цикл виконується повністю під час кожної ітерації зовнішнього циклу. Приклад. Вкладені цикли Треба заповнити екран символами '#'. Можливий варіант розв’язання має вигляд: n for ( i=1; i<=25; i++ ) for ( k=1; k<=80; k++ ) cout<<'#'; 28

Керуючі оператори в циклах Виконання оператора break призводить до виходу з циклу, в якому Керуючі оператори в циклах Виконання оператора break призводить до виходу з циклу, в якому він знаходиться, і переходу до наступного за циклом оператора. Якщо оператор break знаходиться всередині вкладених циклів, то його дія поширюється тільки на той цикл, в якому він безпосередньо знаходиться. Приклад. Використання оператора break n n Треба вгадати число з 10 спроб i=1; while( i++<=10 ) { cin>>rez; if (rez==15) break; cout << "n. Пощастить наступного разу. "; } if ( i!=10 ) cout<<"n. Bи вгадали!. "; 29

Керуючі оператори в циклах Оператор continue може використовуватися тільки серед операторів тіла циклу. Цей Керуючі оператори в циклах Оператор continue може використовуватися тільки серед операторів тіла циклу. Цей оператор призводить до переходу до наступної ітерації без завершення поточної. Приклад. Використання оператора continue. Вводяться числа місяця для обробки. Необхідно здійснити перевірку коректності вводу. Число 31 буде кінцем обробки. while (den!=31) { cin >> den; if (den<1 || den>31) continue; // Обробка числа den } 30

Операторы new и delete — управление свободной памятью Выделяют память из кучи (heap) и Операторы new и delete — управление свободной памятью Выделяют память из кучи (heap) и освобождают ее. Куча (heap) — область памяти для объектов, чей срок службы управляется программой. Они более удобны и заменяют библиотечные функции malloc(), calloc() и free(). 3 способа использования оператора new: n new type_name w float* r= new float; n new(type_name) w float* r= new(float); n new type_name[expression] — распределение памяти для массива. w float*r=new float[20]; 31

Примеры Оператор new n n n r=new float(5); // r=5 r=new float[5]; //r — Примеры Оператор new n n n r=new float(5); // r=5 r=new float[5]; //r — массив из 5 элементов new возвращает базовый адрес объекта; если память недоступна — ‘ 0’ Оператор delete n n n delete r; // удаляет скаляр delete []r; // удаляет массив тип возвращаемого значения — void. 32