37
1 Podstawy informatyki (4) wykład : 15 godz. ćwiczenia : 15 godz. Prowadzący: dr inż. Jacek Piątkowski

Podstawy informatyki (4)

  • Upload
    joshwa

  • View
    43

  • Download
    0

Embed Size (px)

DESCRIPTION

Podstawy informatyki (4). wykład : 15 godz. ćwiczenia : 15 godz. Prowadzący: dr inż. Jacek Piątkowski. Przykład :. *wsk ob1 * ob2. C++. Wyrażenia i operatory. Wyrażenie składa się z jednej lub wielu operacji. Operacje reprezentuje się za pomocą operatorów. - PowerPoint PPT Presentation

Citation preview

Page 1: Podstawy informatyki  (4)

1

Podstawy informatyki (4)

wykład : 15 godz.

ćwiczenia : 15 godz.

Prowadzący: dr inż. Jacek Piątkowski

Page 2: Podstawy informatyki  (4)

Podstawy informatyki 2

Wyrażenia i operatory

Wyrażenie składa się z jednej lub wielu operacji.

C++

Obiekty, na których wykonuje się operacje są argumentami operacji .

Operacje reprezentuje się za pomocą operatorów.

Operatory - jednoargumentowe – działają na jednym argumencie,

- dwuargumentowe – działają na dwóch argumentach.

Przykład :

*wsk

ob1 * ob2

jednoargumentowy operator wyłuskania przekazuje wartość pamiętaną pod adresem przechowywanym przez obiekt wsk

dwuargumentowy operator mnożenia określa iloczyn dwóch argumentów - ob1 oraz ob2.

Page 3: Podstawy informatyki  (4)

Podstawy informatyki 3

Wyrażenia i operatory

Obliczenie wyrażenia polega na wykonaniu jednej lub wielu operacji

i uzyskaniu wyniku tych operacji.

C++

Wyrażenie złożone jest wówczas, gdy występują w nim co najmniej

dwa operatory.

Kolejność wykonywanych operacji określają reguły pierwszeństwa.

Przykład:

2.71,   

"START"

dzielna

Wartością wyrażenia 2.71 jest liczba 2.71 typu double.

Wartością napisu START jest adres pierwszego znaku napisu (typu char* ).

Wartością zmiennej dzielna jest jej p-wartość .

Page 4: Podstawy informatyki  (4)

Podstawy informatyki 4

Wyrażenia i operatory Operator przypisania =

powoduje zapamiętanie nowej wartości w pamięci przyporządkowanej

argumentowi po lewej stronie operatora.

C++

Argument występujący po lewej musi być l-wartością

Typ danych wyniku operacji przypisania jest taki sam, jak typ argumentu

po lewej stronie operatora przypisania.

int i; int* wi; wi = &i;

Operatory przypisania można składać pod warunkiem, że wszystkie

argumenty tych operatorów są tego samego typu.

int i, j;

i = j = 0;

Page 5: Podstawy informatyki  (4)

Podstawy informatyki 5

Wyrażenia i operatoryC++

operator operacja Zastosowanie

* mnożenie wyrażenie * wyrażenie

/ dzielenie wyrażenie / wyrażenie

%dzielenie modulo

( reszta z dzielenia )wyrażenie % wyrażenie

+ dodawanie wyrażenie + wyrażenie

- odejmowanie wyrażenie - wyrażenie

Operatory arytmetyczne

Wynik dzielenia liczb całkowitych jest całkowity.

Operator % może być stosowany wyłącznie do liczb całkowitych.

Page 6: Podstawy informatyki  (4)

Podstawy informatyki 6

Operatory arytmetyczne C++. Wyrażenia i operatory .

Przykład: #include <iostream>using namespace std;int main(){ int i1=3, i2=5; double d1=2.5, d2=7.5; cout << i1/i2 << "\t" << i2/i1 << endl; cout << i1%i2 << "\t" << i2%i1 << endl; cout << d2/d1 << "\t" << d1/d2 << endl; cout << d2/i1 << "\t" << i2/d1 << endl; // d2%d1 ; błąd // d2%i1 ; błąd // i2%d1 ; błąd return 0;}

Wynik:

0 1 3 2

3 0.333333 2.5 2

Page 7: Podstawy informatyki  (4)

Podstawy informatyki 7

Najprostsza postać programu w C++ C++. Wyrażenia i operatory . Przykład .

#include <iostream>

using namespace std;

int main()

{

cout << "ABC" ;

return 0;

}

• Każdy program napisany w C++ musi posiadać

funkcję main

• Pomiędzy nawiasami { } jest umieszczana

treść (ciało) tej, jak i każdej innej funkcji.

• Wartość zwracana przez instrukcję return jest

wartością, która zostaje przekazana do systemu

operacyjnego po zakończeniu działania programu.

#include <iostream> - dyrektywa preprocesora powodująca wstawienie do

naszego programu zawartości pliku nagłówkowego iostream

using namespace std; - dyrektywa używania przestrzeni nazw std ,

umożliwia odwoływanie się w programie do wszystkich składowych przestrzeni nazw

bez posługiwania się nazwą kwalifikowaną np. std::cout

cout << "ABC" ; - instrukcja powodująca wyprowadzenie do standardowego

urządzenia wyjściowego (w tym wypadku na ekran monitora) napisu ABC

Page 8: Podstawy informatyki  (4)

Podstawy informatyki 8

Operatory arytmetyczne

Arytmetyczne sytuacje wyjątkowe – sytuacje, w których wartość wyrażenia jest niepoprawna lub niezdefiniowana

(np. dzielenie przez zero, problem przepełnienia).

C++. Wyrażenia i operatory .

#include <iostream>using namespace std; int main(){ unsigned char uc1=225, uc2=32; int i1=1, i2=8; short s1=16384; double d1=512; uc1=uc1+uc2; // przepełnienie uc2=uc2*i2; // przepełnienie s1=s1+s1; // przepełnienie cout << i1*uc1 << endl; cout << i1*uc2 << endl; cout << s1 << endl; cout << d1/uc2 << endl; return 0;}

Wynik:

1 0

-32768 inf

Page 9: Podstawy informatyki  (4)

Podstawy informatyki 9

Wyrażenia i operatory

Operatory porównania relacji oraz logiczne.

C++

operator operacja zastosowanie

== równe wyrażenie == wyrażenie

!= nierówne wyrażenie != wyrażenie

< mniejsze niż wyrażenie < wyrażenie

<= mniejsze lub równe wyrażenie <= wyrażenie

> większe niż wyrażenie > wyrażenie

>= większe lub równe wyrażenie >= wyrażenie

! negacja logiczna !wyrażenie

&& iloczyn logiczny wyrażenie && wyrażenie

|| suma logiczna wyrażenie || wyrażenie

Operatory porównania i relacji służą do obliczania wartości „prawda”

lub „fałsz” ( true - 1, false - 0 ).

Page 10: Podstawy informatyki  (4)

Podstawy informatyki 10

Operatory porównania relacji oraz logiczne C++. Wyrażenia i operatory .

Wynikiem operatora iloczynu logicznego && jest prawda wtedy i tylko

wtedy, gdy oba argumenty są prawdziwe.

Wynikiem operatora sumy logicznej || jest prawda wówczas, gdy którykolwiek z argumentów jest prawdziwy.

Wartości argumentów oblicza się w kolejności od lewej do prawej strony wyrażenia.

Operator negacji logicznej ! daje w wyniku wartość true , jeżeli argument ma wartość 0; w przypadku odwrotnym wynikiem jest false.

while( wsk!=0 && *wsk < wart_graniczna && !koniec )

{

//...

}

Page 11: Podstawy informatyki  (4)

Podstawy informatyki 11

Wyrażenia i operatory Operatory inkrementacji ++ i dekrementacji --

pozwalają na zwarty zapis dodawania i odejmowania liczby 1,

( i++; tj. i=i+1; )

posiadają postać przyrostkową i przedrostkową.

C++

#include <iostream>using namespace std;

int main() { int i = 0; int j = 0; cout << ++i << endl; // inkrementacja przedrostkowa

cout << j++ << endl; // inkrementacja przyrostkowa

cout << --i << endl; // dekrementacja przedrostkowa

cout << j-- << endl; // dekrementacja przyrostkowa

return 0;}

Wynik:

1 0 0 1

Page 12: Podstawy informatyki  (4)

Podstawy informatyki 12

Wyrażenia i operatory Operatory bitowe

- działają na argumentach tak jak na uporządkowanych zbiorach bitów,

- mogą być stosowane wyłącznie wobec argumentów typu całkowitego.

C++

operator operacja zastosowanie

~ negacja bitowa ~wyrażenie

<< przesuwanie w lewo wyrażenie << wyrażenie

>> przesuwanie w prawo wyrażenie >> wyrażenie

& koniunkcja bitowa wyrażenie & wyrażenie

| alternatywa bitowa wyrażenie | wyrażenie

^ różnica symetryczna wyrażenie ^ wyrażenie

W przypadku operatorów bitowych zaleca się stosowanie argumentów

bez wyróżnionego bitu znaku.

Page 13: Podstawy informatyki  (4)

Podstawy informatyki 13

Operatory bitowe C++. Wyrażenia i operatory .

Operator negacji bitowej ~ realizuje operację NOT

unsigned char uc=151; 1 0 0 1 0 1 1 1

0 1 1 0 1 0 0 0uc = ~uc;

unsigned char uc=3; 0 0 0 0 0 0 1 1

Operatory przesuwania << , >> powodują przesunięcie zawartości bitów

lewego argumentu operatora o określoną liczbę pozycji ( w lewo lub prawo ).

uc << 1; 0 0 0 0 0 1 1 0

uc << 2; 0 0 0 1 1 0 0 0

uc >> 3; 0 0 0 0 0 0 1 1

Page 14: Podstawy informatyki  (4)

Podstawy informatyki 14

Operatory bitowe C++. Wyrażenia i operatory .

Operatory: koniunkcji bitowej & , alternatywy bitowej | oraz różnicy syme-

trycznej ^ realizują dla odpowiadających sobie pozycją bitów obydwu

argumentów operacje AND, OR oraz XOR .

unsigned char uc1=101; 0 1 1 0 0 1 0 1

1 0 1 0 1 0 1 0unsigned char uc2=170;

0 0 1 0 0 0 0 0

unsigned char wynik;

wynik = uc1 & uc2;

1 1 1 0 1 1 1 1wynik = uc1 | uc2;

1 1 0 0 1 1 1 1wynik = uc1 ^ uc2;

Page 15: Podstawy informatyki  (4)

Podstawy informatyki 15

Wyrażenia i operatory

Złożone operatory przypisania :

+=, -=, *=, /=, %=, <<=, >>=, &=, ^=, |= .

pozwalają na bardziej zwarty zapis wyrażenia.

C++

x = x + y; x += y;

x = x * y; x *= y;

. . . . . .

Page 16: Podstawy informatyki  (4)

Podstawy informatyki 16

Wyrażenia i operatory

Operator arytmetyczny if.

C++

wyrażenie1 ? wyrażenie2 : wyrażenie3;

Jeżeli wyrażenie 1 daje wartość true

to wyznaczana jest wartość wyrażenia 2 , która staje się zarazem

wartością zwracaną przez cały operator;

w przeciwnym przypadku wyznaczana jest wartość wyrażenia 3

i to ona staje się wartością zwracaną przez operator.

Page 17: Podstawy informatyki  (4)

Podstawy informatyki 17

Operator arytmetyczny if C++. Wyrażenia i operatory .

#include <iostream>using namespace std; int main(){ int i=5, j=10, k=15; cout << "liczbą większą spośród " << i << " oraz " << j << " jest " << ( i > j ? i : j ) << endl;

cout << "liczbą największą spośród " << i << ", " << j << " oraz " << j << " jest " << ( i > j ? ( i > k ? i : k ) : ( j > k ? j : k ) ) << endl;return 0;}

Page 18: Podstawy informatyki  (4)

Podstawy informatyki 18

Wyrażenia i operatory

Operator przecinkowy - jest używany jako operator oddzielający od siebie wyrażenia w ciągu

wyrażeń;

- wynikiem wyrażenia przecinkowego ( obliczanego kolejno od strony

lewej do prawej ) jest wartość ostatniego z wyrażeń.

C++

#include <iostream>

using namespace std;int main() { int a1 = 0, a2 = 0; int b = 1, c = 2, d = 3, e = 4; a1 = (++b, ++c, ++d, ++e); a2 = ++b, ++c, ++d, ++e ; cout << "a1 = " << a1 << endl; cout << "a2 = " << a2 << endl; return 0}

Wynik:

a1 = 5 a2 = 3

Page 19: Podstawy informatyki  (4)

Podstawy informatyki 19

Wyrażenia i operatory

Operator sizeof - przekazuje liczbę bajtów będącą rozmiarem specyfikatora typu lub wyrażenia; - może występować w jednej z dwóch postaci:

sizeof (specyfikator_typu);

sizeof wyrażenie;

C++

#include <iostream>

using namespace std;

int main() {

cout << "short : " << sizeof(short) << endl;

cout << "int : " << sizeof(int) << endl;

cout << "double: " << sizeof(double) << endl;

cout << " 'z' : " << sizeof 'z' << endl;

cout << " 3.14 : " << sizeof 3.14 << endl;

cout << "\"ALA\" : " << sizeof "ALA" << endl;

return 0;

}

Wynik:

short : 2

int : 4

double : 8

‘z’ : 1

3.14 : 8

”ALA” : 4

Page 20: Podstawy informatyki  (4)

Podstawy informatyki 20

Wyrażenia i operatory C++

Poziom Operator Operacja

14L ->* , .* Wskaźnikowe selektory składowych

13L * , / , % Operacje mnożenia i dzielenia

12L + , - Dodawanie odejmowanie

11L << , >> Przesuwanie bitów

10L < , <= , > , >= Operacje relacji

9L == , != Równość , nierówność

8L & Koniunkcja bitowa

7L ^ Różnica symetryczna

6L | Alternatywa bitowa

5L && Iloczyn logiczny

4L || Suma logiczna

3L ?: If arytmetyczne

2P= , *= , /= , %= , += , -=

<<= , >>= , &= , |= , ^=Operacje przypisania

1L , Przecinek

Pierwszeństwo i łączność operatorów

2P – poziom 2 , łączność od prawej do lewej ( x = a=b=c=0; )

13L – poziom 13, łączność lewej do prawej ( x = a*b*c*d; )

Page 21: Podstawy informatyki  (4)

Podstawy informatyki 21

Wyrażenia i operatory C++

Poziom Operator Operacja

17P

17L

::

::

Zasięg globalny (jednoargumentowy)

Zasięg klasy (dwuargumentowy)

16L

-> , .

[]

()

()

Selektory składowych

Indeksowanie tablicy

Wywołanie funkcji

Konstrukcja typu

15P

sizeof

++ , --

~

!

+ , -

* , &

()

new delete

Rozmiar w bajtach

Inkrementacja , dekrementacja

Negacja bitowa

Negacja logiczna

Plus, minus (jednoargumentowe)

Wyłuskanie, pobranie adresu

Przekształcenie typu (rzutowanie)

Zarządzanie pamięcią przydzielaną dynamicznie

Pierwszeństwo i łączność operatorów

Page 22: Podstawy informatyki  (4)

Podstawy informatyki 22

Pierwszeństwo i łączność operatorów C++. Wyrażenia i operatory .

Im wyższy poziom tym większe pierwszeństwo danego operatora.

Operatory na tym samym poziomie pierwszeństwa wykonywane są od lewej do prawej strony wyrażenia.

Reguły pierwszeństwa można pominąć stosując nawiasy wyodrębniające podwyrażenia.

Obliczanie podwyrażeń zaczyna się od tych, które zawarte są w naj-

bardziej wewnętrznych parach nawiasów .

Każde podwyrażenie zastępowane jest jego wynikiem, po czym

wykonywane są dalsze obliczenia. //...

cout << 4 * 5 + 7 * 2 << endl;

cout << 4 * ( 5 + 7 * 2 ) << endl;

cout << 4 * ( ( 5 + 7 ) * 2 ) << endl;

34

76

96

Page 23: Podstawy informatyki  (4)

Podstawy informatyki 23

Instrukcje C++

Instrukcje – są najmniejszymi wykonywalnymi jednostkami programu w języku C++ ;

każda instrukcja jest zakończona średnikiem.

int i ; // instrukcja deklaracji – jedyna, która może być // określona na zewnątrz funkcji i = 10 ; // instrukcja wyrażenia

; // instrukcja pusta float f ;; // dwie instrukcje

Instrukcja złożona – ciąg instrukcji ujęty w parę nawiasów klamrowych. { b += i; x = x % b; }

jest traktowana jak instrukcja pojedyncza.

Instrukcja złożona zawierająca instrukcje deklaracji jest blokiem .

Page 24: Podstawy informatyki  (4)

Podstawy informatyki 24

Instrukcje C++

Instrukcje iteracyjne ( while , do-while, for ) – pozwalają na cykliczne wykonywanie pewnej

części kodu programu (sterują pętlami).

Pętla kończy się z chwilą gdy warunek sterowania pętlą okaże się

fałszywy ( wyrażenie kontrolne zwróci wartość false ).

Instrukcje warunkowe ( if , swith ) – pozwalają na sterowanie wykonywaniem programu, poprzez

sprawdzanie określonego warunku. Gdy warunek ten jest spełniony

wykonywana jest pewna czynność lub ciąg czynności. W przeciwnym

wypadku czynności te są omijane.

Page 25: Podstawy informatyki  (4)

Podstawy informatyki 25

Instrukcje C++

Instrukcja iteracyjna while .

while ( wyrażenie )

instrukcja ;

– dopóki wyrażenie warunku sterowania pętlą ma wartość różną od zera

wykonywana jest odpowiednia instrukcja .

#include <iostream>

using namespace std;

int main() {

char znak;

cout << " wprowadź znak : " ;

while(cin >> znak && znak!='@' )

cout << "( " << znak << " )\n wprowadź znak : " ;

cout << "( " << znak << " ) \n bye bye\n" ;

return 0;

}

Page 26: Podstawy informatyki  (4)

Podstawy informatyki 26

Instrukcje C++

Instrukcja iteracyjna do-while . do instrukcja ; while ( wyrażenie )

– wartość wyrażenia warunku sterowania pętlą jest sprawdzana po

wykonaniu instrukcji . #include <iostream>using namespace std;int main() { char znak; do { cout << " wprowadź znak : " ; cin >> znak ; cout << "( " << znak << " )\n"; } while (znak!='@'); cout << " bye bye\n" ; return 0;

}

Page 27: Podstawy informatyki  (4)

Podstawy informatyki 27

Instrukcje C++

Instrukcja iteracyjna for . for (instrukcja_ini ; wyrażenie_s ; wyrażenie_z ) instrukcja_w ;

• instrukcja_ini – służy do inicjowania lub przypisywania wartości jednej lub wielu zmiennym, – może być instrukcją pustą. – jest wykonywana tylko jeden raz przed rozpoczęciem pętli.

• wyrażenie_s – steruje wykonywaniem pętli; instrukcja_w oraz wyrażenie_z będą wykonywane tyle razy, ile prawdziwym będzie wynik obliczenia wyrażenia_s.

• wyrażenie_z – służy głównie do zmieniania wartości zmiennych, którym instrukcja_ini nadała wartości początkowe – może być ( podobnie jak instrukcja_ini ) instrukcją złożoną .

jeden cykl pętli to : wyrażenie_s - instrukcja_w - wyrażenie_z

Page 28: Podstawy informatyki  (4)

Podstawy informatyki 28

Instrukcja for C++. Instrukcje .

#include <iostream>using namespace std;int main() { for (int i=0; i < 128 ; ++i ) cout << i<< " : " << char(i) << endl; return 0;}

#include <iostream>using namespace std;int main() { int i=0; for ( ; i < 128 ; ++i ) cout << i<< " : " << char(i) << endl; return 0;}

Page 29: Podstawy informatyki  (4)

Podstawy informatyki 29

Instrukcje C++

Instrukcja warunkowa if.

if ( wyrażenie )

instrukcja ;

– wynik wyrażenia różny od zera oznacza, że warunek jest spełniony ,

a instrukcja będzie wykonywana.

if ( wyrażenie )

instrukcja1 ;

else

instrukcja2 ;

– jeżeli wyrażenie ma wartość różną od zera, to wykonywana będzie

instrukcja 1, w przeciwnym zaś wypadku instrukcja 2.

Page 30: Podstawy informatyki  (4)

Podstawy informatyki 30

Instrukcja warunkowa if C++. Instrukcje .

//...

int main() { int wrt; unsigned char a; cout << "Podaj liczbę dodatnią mniejszą od 256:\n a = " ; cin >> wrt; if( wrt>0 && wrt<256 ) { // treść instrukcji złożonej } else { cout << "Liczba spoza przedziału"; if(wrt<0) cout << " i do tego jeszcze ujemna !!" << endl; else cout << ", o " << wrt - 255 << " za duża !" << endl; } return 0;

}

Page 31: Podstawy informatyki  (4)

Podstawy informatyki 31

Instrukcja warunkowa if C++. Instrukcje .

{ // treść instrukcji złożonej a=wrt; cout << "a binarnie to :"; for(int i = 7; i >= 0; i--) if(a & (1 << i)) cout << '1' ; else cout << '0'; cout << endl;}//...

Page 32: Podstawy informatyki  (4)

Podstawy informatyki 32

Instrukcje C++

Instrukcja switch wybiera jeden z fragmentów kodu na podstawie wartości wyrażenia

całkowitego.switch(selector)

{

case całkowita1 : instrukcja; break; case całkowita2 : instrukcja; break; case całkowita3 : instrukcja; break; case całkowita4 : instrukcja; break; (...) default : instrukcja;}

Page 33: Podstawy informatyki  (4)

Podstawy informatyki 33

Instrukcja switch C++. Instrukcje .

• Selektor musi być wyrażeniem dającym wartość całkowitą .

• Wartość selektora jest porównywana z każdą

z wartości całkowitych za słowem case .

• Jeżeli znaleziona zostanie odpowie dnia wartość,

to wykonywana jest właściwa instrukcja .

• Jeżeli żadna wartość całkowita nie odpowiada war-

tości selektora, to wykonywana jest instrukcja po słowie

kluczowym default. Słowo to, oraz odpowiadająca mu instrukcja ( alternatywna

do pozostałych ) nie jest konstrukcją obowiązkową dla instrukcji switch.

switch(selector) {

case całk_1 : instr1; break;

case całk_2 : instr2; break;

case całk_3 : instr3; break; (...) default : instrukcja;

}

• Instrukcja break, wykonywana w następstwie wybranej instrukcji kończy

wykonywanie instrukcji switch.

Użycie instrukcji break jest jednak opcjonalne. Jeśli nie występuje,

to po wykonaniu właściwej instrukcji kolejne instrukcje też będą wykonane .

Page 34: Podstawy informatyki  (4)

Podstawy informatyki 34

Instrukcja switch C++. Instrukcje .

#include <iostream>using namespace std;int main() { char znak; bool koniec = false; while(koniec == false) { cout << "t - tak , n - nie, k - koniec: "; cin >> znak; switch(znak) { case 't' : cout << " wybrano TAK " << endl; break; case 'n' : cout << " wybrano NIE " << endl; break; case 'k' : cout << " koniec " << endl; koniec = true; break; default : cout << "Użyj proszę t, n, lub k !„ << endl; } } return 0;}

Page 35: Podstawy informatyki  (4)

Podstawy informatyki 35

Instrukcja switch C++. Instrukcje .

//... switch(znak) { case 'T' : case 't' : cout << " wybrano TAK " << endl; break; case 'N' : case 'n' : cout << " wybrano NIE " << endl; break; case 'K' : case 'k' : cout << " koniec " << endl; koniec = true; break; default : cout << "Uzyj prosze t, n, lub k !" << endl; }//...

Page 36: Podstawy informatyki  (4)

Podstawy informatyki 36

Instrukcje C++

Instrukcja break powoduje zakończenie wykonywania zawierającej ją pętli while,

do-while, lub for. Wykonywanie programu rozpoczyna się od

instrukcji znajdującej się bezpośrednio po zakończonej instrukcji.

Instrukcja continue powoduje zakończenie bieżącej iteracji pętli while, do-while,

lub for , nie przerywa jednak wykonywania pętli jak ma to miejsce

w przypadku instrukcji break.

Page 37: Podstawy informatyki  (4)

Podstawy informatyki 37

Instrukcje break , continue C++. Instrukcje .

#include <iostream>

using namespace std;

int main() {

char znak;

do {

cout << " wprowadź znak : " ;

cin >> znak ;

if (znak =='Q') break;

if (znak =='q') continue;

cout << "( " << znak << " )\n";

} while (znak!='@');

cout << " bye bye\n" ;

return 0;

}