C Wykład III 2005 2006 s

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

i

mogą

być

wykorzystywane

tylko

zgodnie

z

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

y

y

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

w

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

i

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

w

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


Wyszukiwarka

Podobne podstrony:
C Wykład IV 2005 2006 s
C Wykład II 2005 2006 s
C++ Wykład III 2006 2007 M Ch
TBL WYKŁAD III Freud
wykład III Ubezpieczenia na życie2011

więcej podobnych podstron