Język C++ Operatory Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła.

Slides:



Advertisements
Podobne prezentacje
Operatory.
Advertisements

Polsko – Japońska Wyższa Szkoła Technik Komputerowych
Podstawy informatyki 2013/2014
Podstawy informatyki (4)
Podstawy informatyki 2013/2014 Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
Podstawy informatyki 2013/2014
Podstawy informatyki 2012/2013
Zadanie Dev C++.
Przekazywanie argumentów
Programowanie strukturalne i obiektowe
Instrukcja for. Instrukcja warunkowa mgr inż. Agata Pacek.
Instrukcja warunkowa i wyboru
Podstawy informatyki 2013/2014
Podstawy informatyki 2013/2014 Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
Programowanie obiektowe 2013/2014 Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
Programowanie obiektowe 2013/2014
Składnia instrukcji warunkowej if…
Podstawy informatyki Tablice Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
Podstawy informatyki Zmienne, stałe Instrukcje sterujące Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu.
Wstęp do programowania Wykład 2 Dane, instrukcje, program.
Podstawy informatyki Preprocesor Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
Podstawy informatyki Funkcje Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
1 Opisy funkcji Adres strony WWW : html (należy odszukać hyperlink Function Index) (
Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego Matuszyka Podstawy.
Podstawy informatyki Struktury Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
Podstawy informatyki Szablony funkcji Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty.
Podstawy informatyki Operatory rzutowania Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały.
Podstawy informatyki Mechanizm obsługi sytuacji wyjątkowych Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu.
Pakiety numeryczne Operatory, instrukcje sterujące, operacje bitowe Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania.
Jak majtek Kowalski wielokąty poznawał Opracowanie: Piotr Niemczyk kl. 1e Katarzyna Romanowska 1e Gimnazjum Nr 2 w Otwocku.
Wyszukiwanie informacji w Internecie. Czym jest wyszukiwarka? INTERNET ZASOBY ZAINDEKSOWANE PRZEZ WYSZUKIWARKI Wyszukiwarka to mechanizm, który za pomocą.
Excel 2007 dla średniozaawansowanych zajęcia z dnia
Wyrażenia Algebraiczne Bibliografia Znak 1Znak 2 Znak 3 Znak 4 Znak 5 Znak 6 Znak 7 Znak 8 Znak 9 Znak 10 Znak 11.
Wprowadzenie Celem naszej prezentacji jest przypomnienie podstawowych informacji na temat bezpiecznego powrotu do domu i nie tylko. A więc zaczynamy…;)
Strat - programy – ELI2.0 DEMO – Laboratoriom Informatyki ELI 2.0 Demo.
Dodawania i odejmowanie sum algebraicznych. Mnożenie sumy algebraicznej przez jednomian. Opracowanie Joanna Szymańska Konsultacja Bożena Hołownia.
Pakiety numeryczne Równania różniczkowe Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania.
Lekcja 17 Budowanie wyrażeń algebraicznych Opracowała Joanna Szymańska Konsultacje Bożena Hołownia.
Menu Jednomiany Wyrażenia algebraiczne -definicja Mnożenie i dzielenie sum algebraicznych przez jednomian Mnożenie sum algebraicznych Wzory skróconego.
Python. Języki Programistyczne Microcode Machine code Assembly Language (symboliczna reprezentacja machine code) Low-level Programming Language (FORTRAN,
 Przedziałem otwartym ( a;b ) nazywamy zbiór liczb rzeczywistych x spełniających układ nierówności x a, co krócej zapisujemy a
O PARADOKSIE BRAESSA Zbigniew Świtalski Paweł Skałecki Wydział Matematyki, Informatyki i Ekonometrii Uniwersytet Zielonogórski Zakopane 2016.
Programowanie Obiektowe – Wykład 1
© Fundacja Dajemy Dzieciom Siłę 2016
Schematy blokowe.
Rachunki zdań Tautologiczność funkcji
Akademia C# - Lab2 Zmienne, instrukcje warunkowe, pętle, debugger,
ALGORYTMY I STRUKTURY DANYCH
Programowanie obiektowe Wykład 10
Programowanie obiektowe
KLASYFIKACJA CZWOROKĄTÓW
Obliczenia w Matlabie Wprowadzenie
Materiały pochodzą z Platformy Edukacyjnej Portalu
Materiały pochodzą z Platformy Edukacyjnej Portalu
Elementy fizyki kwantowej i budowy materii
Obliczenia w Matlabie Operatory, instrukcje sterujące, operacje bitowe
Ogólnie o języku C/C++ Typy danych
Instrukcje wyboru.
Dane, zmienne, instrukcje
Programowanie obiektowe Wykład 11
Zmienne i typy danych w C#
Przedziały liczbowe.
Implementacja rekurencji w języku Haskell
Doskonalenie rachunku pamięciowego u uczniów
Język C++ Typy Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego.
Język C++ Preprocesor Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła.
struktura #include <stdio.h> #include <stdlib.h>
Język C++ Tablice Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego.
Grazyna Mirkowska Matematyka Dyskretna PJWSTK 2001
Python 3 Wprowadzenie.
Zapis prezentacji:

Język C++ Operatory Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego Matuszyka

Jednoargumentowe operatory arytmetyczne 18 17 ++ -- POST 16 ++ -- PRE + - 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 Operatory znaku: + - a=+3; b=-5; Operatory inkrementacji i dekrementacji:++ -- wersja przedrostowa ++a; --b; wersja przyrostkowa a++; b--;

Jednoargumentowe operatory arytmetyczne #include<iostream> using namespace std; int main() { int a=5,b=5,c=5,d=5; cout<<++a<<"\t"<<a<<endl; cout<<b++<<"\t"<<b<<endl; cout<<--c<<"\t"<<c<<endl; cout<<d--<<"\t"<<d<<endl; } 6 6 5 6 4 4 5 4

Dwuargumentowe operatory arytmetyczne 18 17 ++ -- POST 16 ++ -- PRE + - 15 14 * / % 13 + - 12 11 10 9 8 7 6 5 4 3 2 1 Dodawanie + Odejmowanie - Mnożenie * Dzielenie / Reszta z dzielenia % Reszta z dzielenia działa tylko na typach całkowitych!

Operatory przypisania 18 17 ++ -- POST 16 ++ -- PRE + - 15 14 * / % 13 + - 12 11 10 9 8 7 6 5 4 3 = *= /= %= += -= <<= >>= &= |= ^= 2 1 Jest ich 11 = *= /= %= += -= <<= >>= &= |= ^= a+=2; oznacza a=a+2; Nie każdy obiekt może stać po lewej stronie operatora przypisania. Te, które mogą nazywa się l-wartościami. l-wartość = r-wartość; 2=a; - błąd 2 nie jest l-wartością!

= *= /= %= += -= <<= >>= &= |= ^= Operatory logiczne 18 17 ++ -- POST 16 ++ -- PRE + - ! 15 14 * / % 13 + - 12 11 < <= > >= 10 == != 9 8 7 6 && 5 || 4 3 = *= /= %= += -= <<= >>= &= |= ^= 2 1 Zwracają wartości typu bool. Operator: równy == różny != mniejszy < większy > mniejszy lub równy <= większy lub równy >= sumy logicznej || iloczynu logicznego && negacji !

Iloczyn logiczny: && Suma logiczna: || Negacja logiczna: ! Operatory logiczne Iloczyn logiczny: && Suma logiczna: || Negacja logiczna: ! p q p && q false true p q p || q false true p !p false true

Operatory logiczne int a=5; if (a>=4 && a<10 || a==0) { … } bool koniec = false; while (!koniec)

= *= /= %= += -= <<= >>= &= |= ^= Operatory bitowe 18 17 ++ -- POST 16 ++ -- PRE + - ! ~ 15 14 * / % 13 + - 12 << >> 11 < <= > >= 10 == != 9 & 8 ^ 7 | 6 && 5 || 4 3 = *= /= %= += -= <<= >>= &= |= ^= 2 1 iloczyn bitowy & suma bitowa | bitowa różnica symetryczna ^ negacja bitowa ~ przesunięcie bitowe w lewo << przesunięcie bitowe w prawo >> Działają tylko na typach całkowitych!

Operatory bitowe (& | ^ ~) Iloczyn bitowy Suma bitowa Bitowa różnica symetryczna Negacja bitowa … 1 & … 1 | … 1 ^ ~ … 1 32 bity (dla int)

Operatory bitowe 00000000 00000000 00000000 00001010 int main() { int a = 10, b = 6; cout << (a&b) << endl; cout << (a|b) << endl; cout << (a^b) << endl; cout << ~a << endl; system("pause"); return 0; } 00000000 00000000 00000000 00000110 00000000 00000000 00000000 00000010 00000000 00000000 00000000 00001110 00000000 00000000 00000000 00001100 11111111 11111111 11111111 11110101 2 14 12 -11

Operatory bitowe (<< >>) Operator przesunięcia bitowego w lewo zmienna << ile_miejsc bitowego w prawo zmienna >> ile_miejsc 1 … 1 … ? 1 … ? 1 … 32 bity (dla int)

hex – liczba wypisywana jest w systemie szesnastkowym Operatory bitowe #include<iostream> using namespace std; int main() { short int a=0x00ff,b=0xff00,c,d,e,f,g,h; c=~a; d=a>>2; e=a<<2; f=a&b; g=a^b; h=a|b; cout<<hex<<a<<endl; cout<<hex<<b<<endl; cout<<hex<<c<<endl; cout<<hex<<d<<endl; cout<<hex<<e<<endl; cout<<hex<<f<<endl; cout<<hex<<g<<endl; cout<<hex<<h<<endl; } ff ff00 ff00 3f 3fc ffff ffff hex – liczba wypisywana jest w systemie szesnastkowym

Operatory przesunięcia bitowego Operatory << oraz >> zostały przeładowane w ten sposób, że odpowiadają za wstawianie i wyjmowanie ze strumienia. int a; cin>>a; cout<<a; bool a = true, b = false; cout << a && b; cout << (a && b); cout << a && b; jest równoznaczne ((cout << a) && b); cout << (a && b); jest równoznaczne (cout << (a && b)); 1

Operatory logiczne a operatory bitowe int main() { int a=5; if (a>3 && a<7) cout<<"TRUE"<<endl; else cout<<"FALSE"<<endl; } int main() { int a=5; if (a>3 & a<7) cout<<"TRUE"<<endl; else cout<<"FALSE"<<endl; } TO SAMO TRUE TRUE

Operatory logiczne a operatory bitowe int main() { int a=1,b=2; if (a && b) cout<<"TRUE"<<endl; else cout<<"FALSE"<<endl; } int main() { int a=1,b=2; if (a & b) cout<<"TRUE"<<endl; else cout<<"FALSE"<<endl; } b=3 TRUE TRUE FALSE

= *= /= %= += -= <<= >>= &= |= ^= Wyrażenie warunkowe ? : 18 17 ++ -- POST 16 ++ -- PRE + - ! ~ 15 14 * / % 13 + - 12 << >> 11 < <= > >= 10 == != 9 & 8 ^ 7 | 6 && 5 || 4 ? : 3 = *= /= %= += -= <<= >>= &= |= ^= 2 1 Jest to wyrażenie, którego wartość jest zależna od wartości wyrażenia stojącego przed znakiem ? c = w ? a : b; Jeżeli w jest prawdziwe to c = a jeżeli nie to c = b

Równoznaczne instrukcji if Wyrażenie warunkowe #include<iostream> using namespace std; int main() { int a=1, b=2,c,d; if (a>b) c=a; else c=b; d = a > b ? a : b; cout << c << endl << d << endl; } Równoznaczne instrukcji if

= *= /= %= += -= <<= >>= &= |= ^= Operator przecinek 18 17 ++ -- POST 16 ++ -- PRE + - ! ~ 15 14 * / % 13 + - 12 << >> 11 < <= > >= 10 == != 9 & 8 ^ 7 | 6 && 5 || 4 ? : 3 = *= /= %= += -= <<= >>= &= |= ^= 2 1 , Wyrażenie składające się z kilku wyrażeń oddzielonych od siebie operatorem , przyjmuje wartość wyrażenia będącego najbardziej z prawej, np. wyrażenie: a , b; ma wartość równą b.

Operator przecinek Operator , ma najniższy priorytet (niższy od operatorów przypisania). Dlatego: a = (b , c); odpowiada a = c; ale a = b , c; a = b; Stosujemy go np. w sytuacji: for (int i = 0, j = 4; i < 4 && j>0; i++ , j--)

Łączność operatorów Operatory jednoargumentowe są prawostronnie łączne, np.: (!a) Operatory dwuargumentowe są lewostronnie łączne (wyjątek: operatory przypisania), np.: (((a+b)+c)+d) ale (a=(b=(c=d)))

Przykład 1 int i=0, j=3; while(i<3 || j>-1) { cout<<i<<'\t'<<j<<endl; ++i; --j; } 0 3 1 2 2 1 3 0

Przykład 1 c.d. int i=0, j=3, ile_i=0, ile_j=0; while((++ile_i, i<3) || (++ile_j, j>-1)) { cout<<i<<'\t'<<j<<endl; ++i; --j; } cout<<endl<<ile_i<<'\t'<<ile_j<<endl; 0 3 1 2 2 1 3 0 5 2

Przykład 2 int i=0, j=3, ile_i=0, ile_j=0; while((++ile_i, i<3) && (++ile_j, j>-1)) { cout<<i<<'\t'<<j<<endl; ++i; --j; } cout<<endl<<ile_i<<'\t'<<ile_j<<endl; 0 3 1 2 2 1 4 3

a = 6 b = 2 c = 4 Przykład 3 #include<iostream> using namespace std; int main() { int a,b,c; a=2+2*2; b=3%2+1; c=4/2*2; } 14 * / % 13 + - 3 = a = 6 b = 2 c = 4

a = 3 b = 4 c = 5 d = 5 BŁĄD BŁĄD g = 5 h = 5 Przykład 4 #include<iostream> using namespace std; int main(){ int a,b,c,d; a = 1 ? 2,3 : 4,5; b = 0 ? 2,3 : 4,5; c = (1 ? 2,3 : 4,5); d = (0 ? 2,3 : 4,5); int e = 1 ? 2,3 : 4,5; int f = 0 ? 2,3 : 4,5; int g = (1 ? 2,3 : 4,5); int h = (0 ? 2,3 : 4,5); } 4 ? : 3 = 1 , a = 3 b = 4 c = 5 d = 5 BŁĄD BŁĄD g = 5 h = 5

a = 5 b = 9 c = 5 d = 9 e = 5 f = 9 g = 5 h = 9 Przykład 4 c.d. #include<iostream> using namespace std; int main(){ int a,b,c,d; a = 1 ? 2+3 : 4+5; b = 0 ? 2+3 : 4+5; c = (1 ? 2+3 : 4+5); d = (0 ? 2+3 : 4+5); int e = 1 ? 2+3 : 4+5; int f = 0 ? 2+3 : 4+5; int g = (1 ? 2+3 : 4+5); int h = (0 ? 2+3 : 4+5); } 13 + 4 ? : 3 = a = 5 b = 9 c = 5 d = 9 e = 5 f = 9 g = 5 h = 9

= *= /= %= += -= <<= >>= &= |= ^= Przykład 5 #include<iostream> using namespace std; int main() { int a=2,b=1; a*=b+=2; } 3 = *= /= %= += -= <<= >>= &= |= ^= a = 6 b = 3

#include<iostream> using namespace std; int main() { Przykład 6 #include<iostream> using namespace std; int main() { short int a=0x1234, b, c; b=!a; c=~a; } a = 1234 b = 0 c = edcb

Przykład 7 #include<iostream> using namespace std; int main() { char z; if (1==4>=3) z='T'; else z='F'; } 11 < <= > >= 10 == != z = 'T'

Przykład 8 #include<iostream> using namespace std; int main() { int cout=2; std::cout<<cout<<cout<<endl; std::cout<<(cout<<cout)<<endl; } 22 8

Prezentacja udostępniona na licencji Creative Commons: Uznanie autorstwa, Na tych samych warunkach 3.0. Pewne prawa zastrzeżone na rzecz autorów. Zezwala się na dowolne wykorzystywanie treści pod warunkiem wskazania autorów jako właścicieli praw do prezentacji oraz zachowania niniejszej informacji licencyjnej tak długo, jak tylko na utwory zależne będzie udzielana taka sama licencja. Tekst licencji dostępny jest na stronie: http://creativecommons.org/licenses/by-sa/3.0/deed.pl