background image

 

 

AJ

AJ

S

S

Jednostki 

leksykalne C++

 

(służą do budowania instrukcji 

języka)

1.identyfikatory,
2.słowa kluczowe, 
3.stałe,
4.literały 

łańcuchowe,

5.znaki 

przestankowe

6.operatory.

background image

 

 

AJ

AJ

S

S

IDENTYFIKATOR

Y

nazwy

 

Małe i wielkie litery, cyfry, 
znak podkreślenia. 

Uwagi:

pierwszy znak musi być literą lub 
podkreśleniem,

standardowo kompilatory C++ 
biorą pod uwagę pierwsze 32 
znaki

rozróżniane są małe i duże litery

background image

 

 

AJ

AJ

S

S

np. 

nazwa, Andrzej, 

funkcja, funkcja_X, X1, x1 

różne identyfikatory:

ANDRZEJ,   Andrzej,    
AndrzeJ

background image

 

 

AJ

AJ

S

S

SŁOWA 
KLUCZOWE 

Specjalne 

identyfikatory 
(niepodzielny 

ciąg 

znaków) zarezerwowane 
dla  ściśle  określonych 
celów 

mogą 

być 

wykorzystywane 

tylko 

zgodnie 

ich 

przeznaczeniem. 

background image

 

 

AJ

AJ

S

S

asm

auto
break
case

cdeal
_cdeal
__cdeal

char

class

const
continue

_cs
__cs

default
delete

do
double

_ds
__ds

else
enum

_es
_export
__export

extern

far
_far
__far
_fastcall
__fastcall

float
for

friend

goto

huge
_huge
__huge

if

inline

int

interrrupt
_interrupt
__interrup
t
_loadds
__loadds

long

near
_near
__near

new

operator
pascal
_pascal
private
protected
public

register
return

_saveargs
__savearg
s

_seg
__seg

short
signed

sizeof
_ss
__ss

static
struct
switch

template
this
typedef
union

unsigned

virtual

void

volatile

while

background image

 

 

AJ

AJ

S

S

STAŁE 

ich 

ich wartości

 nie ulegają 

 nie ulegają 

zmianie

zmianie

Stałe znakowe

 (literały) – ciąg złożony 

z jednego 

‘x’      ‘R’

lub więcej znaków  ujęty w pojedyncze 
apostrofy

\n      \t     \b        (tzn. sekwencje ucieczki)

cha
r

int

Stałe zmiennopozycyjne

 – należą do podzbioru 

liczb rzeczywistych 

0.0      .26        2.            -84.17             notacja dziesiętna z 
kropką

1.18e12        -5.6789E-3          4e6        notacja 
wykładnicza  

Dokładność wymuszona               -84.17f          .89F        
3.14165e-8L    

float .
..

Stałe całkowite

 – liczba 

całkowita

87    037     0x12    0X7F

int 
...

background image

 

 

AJ

AJ

S

S

STAŁE    -   

deklaracje 

stałych

#define identyfikator 
ciąg_znaków

#define stala 9.81

#define nazwa ``Politechnika``

const typ_stałej 
identyfikator=ciąg_znaków;

const float stala=9.81;

const char *nazwa=``Politechnika``;

background image

 

 

AJ

AJ

S

S

LITERAŁY 

ŁAŃCUCHOWE

Ciąg o długości zero lub więcej znaków 

ujęty w podwójne apostrofy (cudzysłów) 

zakończony znakiem o kodzie zero `\0`

``abcd``    - reprezentacja wewnętrzna to 5 

znaków a b c d 0

background image

 

 

AJ

AJ

S

S

ZNAKI 

PRZESTANKOWE 

[ ]  ( )   { }  ,   ;   :   ...   

*  =   #

Nawiasy kwadratowe 

[ ]

 – do definiowania tablic lub 

wskazywania ich elementów
np. 

char str[20];
double tab[10][20][1];
Tab[1][5][4]=25;
 

Nawiasy okrągłe 

( )

 – m.in. do grupowania wyrażeń, 

wskazywania wywołań funkcji  i listy parametrów

np. 

p=0.5*(a+b)*h;

funkcja(); 

background image

 

 

AJ

AJ

S

S

Nawiasy  klamrowe 

{  }

  –  nawiasy  logiczne 

podobnie jak BEGIN END, wskazują tzw. instrukcję 
złożoną.
np.

if (x!=y)
{

p=x;
q=x*y;

}

Przecinek 

,

    -  służy  m.in.  do  oddzielenia 

argumentów wywołania funkcji
np. 

funkcja(x,y,z);
funkcja1(a,b,cd,x1);
 

Średnik 

;

  - oznacza zakończenie instrukcji.

np. 

a=c/y;
d=a*c;

background image

 

 

AJ

AJ

S

S

ZNAKI 

PRZESTANKOWE 

cd

 

Dwukropek 

:

  -  wskazuje,  że  poprzedzający  go  ciąg 

znaków powinien zostać potraktowany jako etykieta.
np. 

start:

y=x++;
z=y++;

Wielokropek 

...

  –  znajduje  zastosowanie  przy 

deklarowaniu funkcji o zmiennej liczbie parametrów.
np. 

funkcja(int x, ...);
funkcja1(int y, char z, ...);
 

Znak  gwiazdki 

*

  -  mnożenie,  do  deklarowania 

zmiennych wskaźnikowych.
np. 

int *wl;
char **wznaki;
 

background image

 

 

AJ

AJ

S

S

Znak  równości 

-  do  oddzielania  deklaracji 

zmiennej od części inicjującej tę zmienną.
np. 

int tab[3]={1,2,3}; 

Znak 

#

  - oznacza dyrektywę preprocesora.

np. 

#include <math.h>

background image

 

 

AJ

AJ

S

S

OPERATORY

 OPERATORY ARYTMETYCZNE 

  (addytywne, multiplikatywne, in- i dekrementacji),

 OPERATORY LOGICZNE,
 OPERATORY BITOWE,
 OPERATORY RELACYJNE,
 OPERATORY PRZYPISANIA,
 OPERATOR WARUNKOWY, 

(a++)+b)--;

(a++)+b)--;

c=(a, b+a, b*b)%(a>>4, 

c=(a, b+a, b*b)%(a>>4, 

b<<2);

b<<2);

++c*=(a!=0)?a:b++;

++c*=(a!=0)?a:b++;

background image

 

 

AJ

AJ

S

S

OPERATOR WYLICZENIOWY,
 OPERATORY WYBORU SKŁADOWYCH,
 OPERATORY POBRANIA ADRESU ZMIENNEJ 

  ORAZ DOSTĘPU DO ZMIENNEJ WSKAZYWANEJ,

 OPERATOR POBRANIA ROZMIARU,
 OPERATORY DOSTĘPU DO SKŁADOWYCH KLASY,
 OPERATORY DYNAMICZNEGO PRZYDZIAŁU PAMIĘCI,
 OPERATORY INDEKSOWANIA I WYWOŁANIA FUNKCJA,
 OPERATOR KONWERSJI.

OPERATORY 

cd

background image

 

 

AJ

AJ

S

S

OPERATORY ARYTMETYCZNE

OPERATOR ZNACZENIE

Operatory 

addytywne

+

Dodawanie 

-

Odejmowanie

Operatory

multiplikatywn

e

*

Mnożenie

/

Dzielenie

%

Reszta z 
dzielenia

background image

 

 

AJ

AJ

S

S

Np.

 

c=a

*

b;

d=a

/

b;

e=a

+

b;

f=a

-

b;

g=a

%

b;    // (13%2   

wynik 1)

background image

 

 

AJ

AJ

S

S

OPERATORY ARYTMETYCZNE  

cd

Operatory zwiększania 
(inkrementacji) i zmniejszania 
(dekrementacji) 

Dekrement

acja

Inkrementa

cja

Przedrostk

owy

--

x

++

x

Przyrostko

wy

x

--

x

++

Operatory przedrostkowe najpierw 
zwiększają (++) lub zmniejszają 
(--) wartość zmiennej o 1 a 
następnie następuje przypisanie. 

background image

 

 

AJ

AJ

S

S

Np.

 

int m=3, n=1,r;
r=(m

++

)+(

++

n);   // zmienna r 

=5
//dla
 r=(

++

m)+(

++

n);  // zmienna r 

=6

background image

 

 

AJ

AJ

S

S

OPERATORY RELACYJNE

OPERATO

R

ZNACZENIE

<

Mniejszy

<=

Mniejszy lub równy

>

Większy

>=

Większy lub równy

==

Równy

!=

Nierówny

background image

 

 

AJ

AJ

S

S

Np.

 

int a,b,xx;
a=10;
b=3;
xx=a

>=

b; // xx zostanie przypisana 

wartość 1 (prawda) 

background image

 

 

AJ

AJ

S

S

OPERATORY LOGICZNE

OPERATO

R

ZNACZENIE

!

Negacja

&&

Koniunkcja

||

Alternatywa

background image

 

 

AJ

AJ

S

S

Np.

int a,b,c,d;
a=1;
b=0;
c=a

&&

b; // c zostanie przypisana 

wartość 0
d=a

||

b;     // d zostanie przypisana 

wartość 1

background image

 

 

AJ

AJ

S

S

OPERATORY BITOWE

OPERATO

R

ZNACZENIE

&

Bitowa koniunkcja

|

Bitowa alternatywa

^

Bitowa różnica 

symetryczna

~

Bitowa negacja

<<

Przesunięcie w lewo

>>

Przesuniecie w prawo

Działają na uporządkowanym ciągu bitów, które 
jak wiadomo przyjmują wartości 1 lub 0

Operator

Operator

przesunię

przesunię

cia

cia

background image

 

 

AJ

AJ

S

S

OPERATORY PRZYPISANIA

OPERATOR

ZASTOSOWANI

E

ZNACZENIE

=

a=b

a=b

+=

a+=b

a=a+b

-=

a-=b

a=a-b

*=

a*=b

a=a*b

/=

a/=b

a=a/b

%=

a%=b

a=a%b

<<=

a<<=b

a=a<<b

>>=

a>>=b

a=a>>b

&=

a&=b

a=a&b

|=

a|=b

a=a|b

^=

a^=b

a=a^b

background image

 

 

AJ

AJ

S

S

Np.

int a=5,b=10, c=2;

a+=b) // zmienna 
a=15;
c*=b // zmienna 
c=20;

background image

 

 

AJ

AJ

S

S

OPERATORY WYLICZENIOWY

PRZECINKOWY

Operator 

wyliczeniowy 

(przecinkowy) 

– 

służy 

do 

utworzenia wyrażenia  złożonego z 
ciągu 

wyrażeń 

składowych 

oddzielonych 

przecinkami 

(wyrażenia  składowe  oblicza  się 
od  lewej  do  prawej).  Wyrażenie 
złożone 

użyte 

instrukcji 

przypisania  musi  być  ujęte  w 
nawiasy.

background image

 

 

AJ

AJ

S

S

Np.

int a=1, b;
a+=10;
b=(a++,a+=10,a/2) // 
zmienna b=11;

Np.

int n=10, i=2, k=4, wynik;
wynik=(n-=i, k+=2, i*=5, i++) // 
zmienne n=8, k=6 i=10, wynik=11;

background image

 

 

AJ

AJ

S

S

Typy danych w 
C++ 

Typ danych

 definiuje 

zakres lub zbiór 
dopuszczalnych wartości 
dla stałej, zmiennej, 
wyrażenia, funkcji oraz 
zbiór dopuszczalnych 
operacji wykonywanych na 
tych wartościach. Określa 
też format zapisu w 
pamięci.

background image

 

 

AJ

AJ

S

S

1. 

Typy proste

 (skalary)

              - 

arytmetyczne  (całkowite  i     

rzeczywiste)

       - wskaźnikowe,

       - referencyjne.

 

Typy danych w 
C++

 

2. 

Typy 

strukturalne

 

(złożone)

        

- tablice

,

        - struktury,

        - unie,

        - klasy. 

     

typ wyliczeniowy

,

      - 

typ void

,

background image

 

 

AJ

AJ

S

S

Typy całkowite

 

(skończone , przeliczalne podzbiory zbioru liczb 

całkowitych)

 

Słowa kluczowe określające typy całkowite

char       

typ znakowy

    

int           

typ całkowity

long        

typ tzw.długich liczb 

całkowitych

signed    

liczby ze znakiem

short       

typ tzw.krótkich 

liczb całkowitych

unsigned 

liczby bez znaku

background image

 

 

AJ

AJ

S

S

Typy całkowite

 

(skończone , przeliczalne podzbiory zbioru liczb 
całkowitych)

 

Typ

Rozmiar 

w bitach

min

max

unsigned 
char

8, jeden 

znak

0

255

char, 
signed 
char

8, jeden 

znak

-128

127

int, signed 
int

16

-32768

32767

unsigned 
int

16

0

65535

long 
unsigned 
int

32

0

4294967

295

long 
signed int

32

-

2147483

648

2147483

647

background image

 

 

AJ

AJ

S

S

char a, b=‘F’;

int x, y=2;

       long k;

                                         

inicjowanie

składnia

typ całkowity identyfikator[=wartość zainicjowana

Deklaracje 

inicjacja 

zmiennych całkowitych

background image

 

 

AJ

AJ

S

S

Typy rzeczywiste

 

(skończone , przeliczalne 
podzbiory zbioru liczb 
rzeczywistych)

 

Typ

Rozmi

ar w 

bitach

min

max

Liczba 

znaczący

ch cyfr

float

32

3.4E-38 3.4E38

6

double

64

1.7E-

308

1.7E30

8

15

long 

double

80

3.4E-

4932

1.1E49

32

18

background image

 

 

AJ

AJ

S

S

Typy rzeczywiste

 

(skończone , przeliczalne podzbiory zbioru liczb 
rzeczywistych) 

Pojęcie znaczących cyfr

Pojęcie znaczących cyfr

Liczbę rzeczywistą w pamięci komputera 

Liczbę rzeczywistą w pamięci komputera 

zapisuje się w postaci dwóch liczb (mantysa, 

zapisuje się w postaci dwóch liczb (mantysa, 

cecha)

cecha)

L=mantysa*10

L=mantysa*10

cecha

cecha

Dla 

Dla float

float

 liczba 1254986719873674.678 

 liczba 1254986719873674.678 

zostanie zapisana w  0.125498 E16

zostanie zapisana w  0.125498 E16

A więc zostanie zaokrąglona do 

A więc zostanie zaokrąglona do 

wartości: 1254980000000000

wartości: 1254980000000000

background image

 

 

AJ

AJ

S

S

float a, b=123.16e10;

double x, y=-145.67;

         long double k;

                                                                                                    
         

inicjowanie

składnia

typ rzeczywisty identyfikator[=wartość 
zainicjowana

Deklaracje  i  inicjacja  zmiennych 
rzeczywistych

background image

 

 

AJ

AJ

S

S

Typy strukturalne

 

to uporządkowane, 
wspólne  zbiory 
obiektów tego 
samego lub różnego 
typu. 

2. 

Typy 

strukturalne

 

(złożone)

        - 

tablice

,

        - struktury,

        - unie,

        - klasy. 

Zmienne zdolne do przechowywania 
więcej niż jednej wartości 
jednocześnie nazwano zmiennymi 
strukturalnymi (agregatami danych)

background image

 

 

AJ

AJ

S

S

Typy tablicowe

 

Struktura danych zawierająca 
uporządkowany zbiór obiektów tego 
samego typu i odpowiada 
matematycznemu pojęciu wektora, 
macierzy itd. 

Zasady tworzenia tablic:

- każdy element tablicy ma 

przydzieloną swoją „skrzynkę” pamięci o 

unikalnym numerze (indeksie) od 

0 - n

,

- wszystkie elementy tablicy muszą być 

tego samego typu,

- tablica ma jedną wspólną dla 

wszystkich elementów nazwę, 

background image

 

 

AJ

AJ

S

S

Tablica jednowymiarowa - 
wektor

1

2

3

4

5

6

7

23

4

25

1

67

8

5

34

0

1

2

3

4

5

6

Numer elementu 
tablicy

Wartości 
poszczególnych 
elementów tablicy

Indeks elementu 
tablicy

1

2

3

4

5

6

7

D

o

r

o

t

k

a

0

1

2

3

4

5

6

1

2

3

4

5

12.1 0.78

2.3

2.0

12.7

8

0

1

2

3

4

background image

 

 

AJ

AJ

S

S

Indeks

 

elementu tablicy określa jak daleko, 
licząc od początku tablicy jest 
przesunięty dany element.

Zasady indeksowania elementów tablic

-elementy tablicy wskazujemy za pomocą 
indeksów,

-indeksy numerujemy od 0,

-numer elementu tablicy nie odpowiada 
jego indeksowi

C++ 
domyślnie 
liczy 
zaczynając 
od 0

background image

 

 

AJ

AJ

S

S

Deklaracja tablic 
jednowymiarowych 

float tablica1 
[5]; 

Nazwa – 

identyfikator 

tablicy

Typ danych 

każdego 

elementu 

tablicy

Rozmiar tablicy– 

liczba elementów 

tablicy

1

2

3

4

5

12.1 0.78

2.3

2.0

12.7

8

0

1

2

3

4

background image

 

 

AJ

AJ

S

S

Dostęp, wprowadzanie i 

wyprowadzanie elementów 

tablicy jednowymiarowej

for (int i=0; i<10; i++)

{       

cout<<„podaj kolejny element 
tablicy”;

cin>>tab1[i]; 

}

Wprowadzenie 
elementów 

tablicy tab1

for (int i=0; i<10; i++)

{       

cout<<„tab1[„<<i<<„]=”<<tab1[i
]<<endl;

}

Wyprowadzenie 
elementów 

tablicy tab1

tab1[2]; 

Dostęp do 3 elementu  tablicy 
tab1

background image

 

 

AJ

AJ

S

S

0

23 34 45

5

4

0

4

0

6

34

4

45

1

34 45

0

56

8

8

2

34

6

7

0

0

8

3

23

4

25

1

67

8

5

4

0

1

2

3

4

5

Tablica dwuwymiarowa - 
macierz

Indeks wiersza 
tablicy

Wartości 
poszczególnych 
elementów tablicy

Indeks  kolumny 
tablicy

background image

 

 

AJ

AJ

S

S

Deklaracja tablic 
dwuwymiarowych 

float tab2 [5]
[6]; 

Nazwa – 

identyfikator 

tablicy

Typ danych 

każdego 

elementu 

tablicy

Ilość kolumn 

tablicy

Ilość wierszy 

tablicy

background image

 

 

AJ

AJ

S

S

Dostęp, wprowadzanie i 

wyprowadzanie elementów 

tablicy dwuwymiarowej

for (int i=0; i<5; i++)

for (int j=0; j<6, j+

+) 

cin>>tab2[i]

[j];

 

Wprowadzenie 
elementów 

tablicy tab2

for (int i=0; i<10; i++)   

for (int j=0; j<6, j++)

cout<<tab2[i]

[j]<<endl;

Wyprowadzenie 
elementów 

tablicy tab2

tab2[0]
[0]; 

Dostęp do 1 elementu  tablicy 

tab2 
o indeksie 00

background image

 

 

AJ

AJ

S

S

Inicjowanie wartości 

początkowych  elementów 

tablic

int 
tab[4]={45,56,5,8};

lub

int tab[]={45,56,5,8};

int tabela[2][4]={

      {45,56,5,8}

      {4,6,78,6}

    };

lub

int tabela[2]
[4]={45,56,5,8,4,6,78,6};

background image

 

 

AJ

AJ

S

S

// 

Wyprowadzenie liczb w odwrotnej kolejności

#include <iostream.h>
#define nmax 10
 
main()
{

int tab[nmax], n,i;
cout<<”podaj 

liczbe 

elementow 

tablicy”<<endl;

cin>>n;
cout<<”Podaj liczby”<<endl;
for (i=0; i<n; i++)

cin>>tab[i];

cout<<”Liczby 

odwrotnej 

kolejnosci”<<endl;

for (i=n-1; i>=0; i--)

cout<<tab[i]<<endl;

return(0);

}

background image

 

 

AJ

AJ

S

S

Świat jest trójwymiarowy albo 

n-

wymiarowy

0

23 34 45

5

4

0

4

0

6

34

4

45

1

34 45

0

56

8

8

2

34

6

7

0

0

8

3

23

4

25

1

67

8

5

4

0

1

2

3

4

5

2

45

3

4

40

0

4

0

4

0

6

34

4

45

1

34 45

0

56

8

8

2

34

6

7

0

0

8

3

23

4

25

1

67

8

5

4

0

1

2

3

4

5

1

0

23 34 45

5

4

0

4

0

6

34

4

45

1

34 45

0

56

8

8

2

34

6

7

0

0

8

3

23

4

25

1

67

8

5

4

0

1

2

3

4

5

0

int lib[5][6][3]
[10];

int book[5]
[6][3];

background image

 

 

AJ

AJ

S

S

Tablice znakowe

w C++ teksty (łańcuchy znaków) 

przechowuje się w tablicach typu char

char tekst 
[101];

char *tekst="Dowolny";

zadeklarowano wskaźnik 

tekst 

wskazujący na początek 

podanego tekstu

Deklaracja tablicy na tekst  
składający się z maksymalnie 
100 znaków

char tekst [ ]
="Dowolny";

char tekst [8]="Dowolny";

Inicjowanie tablic znaków

char tekst [ ]
={'D','o','w','o','l','n','y','\0'};

background image

 

 

AJ

AJ

S

S

Warto zapamiętać

  Tablica składa się z elementów tego 

samego typu,

  Tablica dwuwymiarowa ma wiersze i 

kolumny,

  Tablica trójwymiarowa ma wiersze 

(wysokość), kolumny (szerokość) i  

stronice (głębokość),

  Tablice deklarujemy jak zwykłe 

zmienne proste  (long tablica[3][5][4];),

  Wymiary tablicy powinny być 

zdefiniowane jako stałe,

  Do elementu tablicy odwołujemy się 

za pomocą współrzędnych (indeksów),

background image

 

 

AJ

AJ

S

S

Warto zapamiętać

Można inicjować elementy tablicy 

podczas deklaracji tej tablicy (int 

t[2]={4,6};),

  Przy wprowadzaniu (cin) i 

wyprowadzaniu (cout) elementów tablic 

wykorzystujemy tyle pętli „for”  ile 

wymiarów posiada dana tablica,

  W C++ tablica znakowa jest 

interpretowana jako łańcuch znaków, 

czyli string,

  Teoretycznie możemy tworzyć tablice 

o dowolnie dużej ilości niezależnych 

(ortogonalnych) wymiarów. Dla każdego 

dodatkowego wymiaru musimy 

zastosować kolejną współrzędną.

background image

 

 

AJ

AJ

S

S

1. 

Typy proste

 (skalary)

              - 

arytmetyczne  (całkowite  i     

rzeczywiste), 

       - wskaźnikowe,

       - referencyjne.

 

Typy danych w 
C++

 

2. 

Typy 

strukturalne

 

(złożone)

        

- tablice,

        - struktury,

        - unie,

        - klasy. 

     

typ wyliczeniowy

,

      - 

typ void

,

background image

 

 

AJ

AJ

S

S

- typ 
wyliczeniowy

Służy 

do 

zadeklarowania 

grupy 

stałych 

całkowitych w zwarty sposób. 

Stałe  otrzymują  domyślnie  kolejne  wartości 
całkowite poczynając od 0.

Składnia

enum {stała1, stała2, stała3, ..., stałan};

wartość=

  0

     1                 2                  

       n

np.   enum {ford, fiat, opel, mercedes};

enum {stała1=10, stała2, stała3, ..., 

stałan};

Kolejne przyjmą wartości    11                   12            itd.  

background image

 

 

AJ

AJ

S

S

- typ wyliczeniowy i 
zmienne

Składnia (definicja nowego typu i jego zmiennych)

enum  nowy_typ  {stała1,  stała2,  ...,  stałan}  zm_1, 
zm_2=stała2;

nazwa  nowego  typu lista  stałych  wyliczeniowych

zmienne 

nowego typu z inicjacją

 

Np.  

enum miesiac {styczen, luty, marzec, kwiecień, maj, czerwiec, 

lipiec};

miesiac x=luty;

enum boolean {falsz, prawda} nie=fałsz, tak=prawda; 

    

background image

 

 

AJ

AJ

S

S

- typ void

Typ który posiada pusty zbiór wartości

Użyteczny  szczególnie  w  zastosowaniu  do 
funkcji, które nie zwracają żadnej wartości.


Document Outline