background image

C/C++

nazwy, 

słowa kluczowe,

zmienne,

typy proste,

stałe,

operatory, 

wyraŜenia,

instrukcja przypisania.

background image

C/C++ -

nazwy

, słowa kluczowe, zmienne, typy proste, 

stałe, operatory, wyraŜenia, instrukcja przypisania.

Nazwa 

Nazwa inaczej identyfikator jest oznaczeniem zmiennej, funkcji, etykiety 

(innych obiektów zdefiniowanych przez uŜytkownika).

Zasady nadawania nazw:

1.

W języku C nazwa moŜe składać się z: liter, cyfr i znaku podkreślenia, 
przy czym nie moŜe zaczynać się od cyfry. RozróŜnianych jest 
pierwszych 31 znaków. W C++ nie ma ograniczeń na długość.

2.

W języku C/C++ rozróŜniane są małe i wielkie litery.

3.

Nazwa nie moŜe być identyczna ze słowem kluczowym (słowa kluczowe 
stanowią alfabet języka programowania (w C nie moŜe takŜe być 
identyczna z nazwą funkcji własnej  uŜytkownika lub znajdującej się w 
bibliotece).

background image

Słowa kluczowe

Słowa kluczowe są ciągami znaków których znaczenie w języku jest dokładnie 

określone i nie wolno ich wykorzystywać w charakterze nazw.

Język C

auto, break, case,  char, const, continue, default, do, double, else, 
enum, extern, float, for, goto, if, int, long, register, return, short, 
signed, sizeof, static, struct, switch, typedef, union, unsigned, void, 
volatile, while.

(32)

Język C++ (dodatkowo)

asm, bool, catch, class, const_cast, delete, dynamic_cast, explicit, 
false, friend, inline,  mutable, namespace, new, operator, private, 
protected, public, reinterpret_cast, static_cast, template,  this, throw, 
true, try, typeid, typename, using, virtual, wchar_t. 

(30)

C/C++ - nazwy, 

słowa kluczowe

, zmienne, typy proste, 

stałe, operatory, wyraŜenia, instrukcja przypisania.

background image

Zmienne

Zmienną nazywamy komórkę (lub komórki) pamięci mogącą przechowywać 

daną określonego typu. Zmienna posiada nazwę. Nazwa i typ zmiennej 
określane są w procesie deklaracji zmiennej.

Nazwy zmiennym nadaje się zgodnie z ogólnymi zasadami tworzenia nazw. 
Typ zmiennej określa, jaki rodzaj danych w zmiennej moŜe być 

przechowywany (liczby całkowite, liczby rzeczywiste, znaki, wartości 
logiczne, macierze, struktury określone przez uŜytkownika). Typy danych 
moŜna podzielić na typy proste i złoŜone.

Do zmiennej moŜna zapisywać dane oraz moŜna z niej dane odczytywać.
Zmienne dzieli się na lokalne – deklarowane wewnątrz funkcji, oraz globalne 

– deklarowane poza funkcjami.

W procesie deklaracji zmiennej określa się takŜe tzw. specyfikator klasy 

pamięci.

C/C++ - nazwy, słowa kluczowe, 

zmienne

, typy proste, 

stałe, operatory, wyraŜenia, instrukcja przypisania.

background image

Zmienne c.d.

Przykład deklaracji zmiennej

register  int   liczba_calkowita;

specyfikator klasy 

pamięci

nazwa typu

nazwa zmiennej

W powyŜszym przykładzie została zadeklarowana zmienna o nazwie 
liczba_calkowita, typu całkowitego (int) i o ile jest to moŜliwe, to będzie 
zapamiętana w rejestrze procesora (specyfikator register). JeŜeli w czasie 
deklaracji  zmiennej nie zostanie określony specyfikator klasy pamięci to 
jest on ustalany domyślnie w zaleŜności od miejsca deklaracji zmiennej.

C/C++ - nazwy, słowa kluczowe, 

zmienne

, typy proste, 

stałe, operatory, wyraŜenia, instrukcja przypisania.

background image

Klasy pamięci

register - jest wykorzystywany do deklaracji zmiennych do których 
dostęp powinien być szybki. O ile jest to  moŜliwe to kompilator
zapamiętuje te zmienne w rejestrze. Z klasą register powinny być 
deklarowane zmienne do których następują częste odwołania. NaleŜy 
równieŜ pamiętać, Ŝe nie wszystkie zmienne mogą być zapamiętane 
w rejestrach ze względu na ograniczoną ich liczbę.

C/C++ - nazwy, słowa kluczowe, 

zmienne

, typy proste, 

stałe, operatory, wyraŜenia, instrukcja przypisania.

W języku C++ występują 4 klasy pamięci:

register 
extern 
static
auto

Specyfikator klasy pamięci w linii deklaracji zmiennej informuje
kompilator o tym, w jaki sposób ma być zapamiętana zmienna

background image

Klasy pamięci

extern - jest wykorzystywany do oznaczenia zmiennej zadeklarowanej 
na zewnątrz pliku źródłowego (lub funkcji). Jest to informacja dla 
konsolidatora którego zadaniem jest połączenie osobno skompilowanych 
plików. UŜycie specyfikatora extern skutkuje tym, Ŝe kompilator nie 
rezerwuje pamięci dla tak zadeklarowanej zmiennej.

C/C++ - nazwy, słowa kluczowe, 

zmienne

, typy proste, 

stałe, operatory, wyraŜenia, instrukcja przypisania.

static – zastosowanie tego specyfikatora do zmiennej  lokalnej powoduje 
przypisanie jej trwałego miejsca w pamięci (jak zmiennej globalnej). 
Statyczna zmienna lokalna zachowuje więc swoją wartość pomiędzy 
kolejnymi wywołaniami funkcji. 

auto – zmienna jest usuwana z pamięci w chwili zakończenia bloku 
w którym została zadeklarowana. Jest to domyślna klasa dla zmiennych 
deklarowanych w funkcjach (blokach).

background image

Typy danych – typy proste

W języku C++ wyróŜniamy 7 podstawowych (atomowych), 

wbudowanych  typów. Są to:

char –

typ znakowy

int –

typ całkowity

float –

typ zmiennoprzecinkowy

double –

typ zmiennoprzecinkowy podwójnej precyzji

void –

typ bez wartości

bool –

typ logiczny

wchar_t –

typ szerokich znaków

C++

C

W C++,  dzięki zaimplementowaniu klasy string moŜliwe jest uŜywanie 

typu łańcuchowego. Nie jest to jednak typ wbudowany.

C/C++ - nazwy, słowa kluczowe, zmienne, 

typy proste

stałe, operatory, wyraŜenia, instrukcja przypisania.

background image

Typy danych – typy proste: void bool

Typ void jest wykorzystywany w 3 przypadkach:

- deklarowanie funkcji nie zwracających wartości,

- deklarowanie funkcji nie pobierających Ŝadnych argumentów,

- tworzenie wskaźników ogólnych.

Typ logiczny bool słuŜy do przechowywania wartości logicznych 

true

lub

false

.  Wartość 

false

– fałszu odpowiada liczbie 0, a wartość

true

prawdy,  liczbie całkowitej róŜnej od zera.

C/C++ - nazwy, słowa kluczowe, zmienne, 

typy proste

stałe, operatory, wyraŜenia, instrukcja przypisania.

background image

Typy danych – typy proste (atomowe), przykłady deklaracji

background image

Typy danych – typy proste – modyfikatory typów

W języku C++ typy: charintdouble mogą zostać zmodyfikowane przy 

pomocy tzw. modyfikatorów typów. Występuje 4 modyfikatory:

signed (ze znakiem)
unsigned (bez znaku)  
long (format długi) 
short  (format krótki)

Postać deklaracji z wykorzystaniem modyfikatora typu:

modyfikator typu

nazwa typu

nazwa zmiennej

unsigned  char       znak;

C/C++ - nazwy, słowa kluczowe, zmienne, 

typy proste

stałe, operatory, wyraŜenia, instrukcja przypisania.

background image

Typy danych – typy proste – modyfikatory typów

W uzasadnionych przypadkach moŜna uŜyć modyfikatora w stosunku do 

juŜ zmodyfikowanego typu. Modyfikatory naleŜy interpretować 
parami : (signedunsigned) i (longshort) i trzymać się zasady, Ŝe 
w jednej deklaracji nie występują dwa modyfikatory z tej samej pary.

Postać deklaracji z wykorzystaniem modyfikatora typu zmodyfikowanego 

unsigned  short int   krotka_liczba_bez_znaku;

modyfikator typu

nazwa typu

nazwa zmiennej

C/C++ - nazwy, słowa kluczowe, zmienne, 

typy proste

stałe, operatory, wyraŜenia, instrukcja przypisania.

background image

Typy danych – uŜyteczne połączenia typów prostych z modyfikatorami 

w systemach 32 bitowych ich charakterystyka

C/C++ - nazwy, słowa kluczowe, zmienne, 

typy proste

stałe, operatory, wyraŜenia, instrukcja przypisania.

3,4 *10

-4932  

do 1,1*10

+4932

10

long double

1,7*10

-308  

do 1,7*10

308

8

double

3,4*10

-38  

do 3,4*10

38 

4

float

0 do 65535

2

unsigned short int

-32 768 do 32767

2

short int

0 do 4 294 967 295

4

unsigned int

-2 147 483 648 do 2 147 483 647

int

0 do 255

1

unsigned char

-128 do 127

1

char

Zakres

Liczba bajtów

Typ

przykład

background image

Typy danych – typy proste – modyfikatory dostępu do zmiennych

W języku C++ występują dwa modyfikatory typu określające dostęp do 

zmiennej. Są to modyfikatory:

const

volatile

Zmiennych zadeklarowanych z modyfikatorem const nie moŜna zmieniać w 

trakcie działania programu. Nadanie wartości odbywa się w linii deklaracji

Przykład deklaracji:

const int stala=7;

Modyfikator volatile jest wykorzystywany w celu poinformowania kompilatora 

o tym, Ŝe wartość zmiennej moŜe ulec w sposób nieokreślony w programie.

Modyfikatory const volatile moŜna stosować łącznie.

C/C++ - nazwy, słowa kluczowe, zmienne, 

typy proste

stałe, operatory, wyraŜenia, instrukcja przypisania.

background image

Stałe (literały)

W języku C++ stałe reprezentują ustalone wartości, które nie mogą być 

zmieniane w trakcie działania programu. Stałe mogą być dowolnego
typu prostego oraz dodatkowo, stała moŜe być łańcuchem znaków 
(ciągiem znaków umieszczonych w cudzysłowie).

C/C++ - nazwy, słowa kluczowe, zmienne, typy proste, 

stałe

, operatory, wyraŜenia, instrukcja przypisania.

”łańcuch znaków”

false   true

bool

134.45    5.32

double

134.45F  5.32e  -4F

float

985U  30000U

unsigned int

3  67   -567 

int

‘s’ ‘6’ ‘\n’

char

Przykłady stałych

Typ

background image

Stałe  - wybrane znaki z ukośnikiem wstecznym 

(sterujące, specjalne)

C/C++ - nazwy, słowa kluczowe, zmienne, typy proste, 

stałe

, operatory, wyraŜenia, instrukcja przypisania.

\b

znak cofania o jedno pole znakowe

\n

znak przejścia do nowego wiersza

\r

znak powrotu karetki

\0

znak zerowy (ang. Null)

\\

ukośnik wsteczny

\a

sygnał dźwiękowy

\”

cudzysłów

\’

apostrof

background image

Operatory

W języku C++ występują następujące grupy operatorów:

arytmetyczne,
relacji,
logiczne,
bitowe,
specjalne
skróty

C/C++ - nazwy, słowa kluczowe, zmienne, typy proste, 

stałe, 

operatory

, wyraŜenia, instrukcja przypisania.

background image

Operatory arytmetyczne

+

dodawanie,

-

odejmowanie,

*

mnoŜenie,

/

dzielenie,

%

dzielenie modulo (reszta z dzielenia),

++ inkrementacja (zwiększenie wartości o 1),

--

dekrementacja (zmniejszenie wartości o 1)
operatory inkrementacji i dekrementacji mogą  być uŜywane 
przedrostkowo lub przyrostkowo, w instrukcjach przypisania nie 
jest obojętne z jakiej postaci się korzysta.

C/C++ - nazwy, słowa kluczowe, zmienne, typy proste, 

stałe, 

operatory

, wyraŜenia, instrukcja przypisania.

priorytety (od najwyŜszego):

+  

-

++  

--

(jednoargumentowe)

*  /  %

+  

-

(dwuargumentowe)

Uwaga: dzielenie operandów typu  int daje wynik typu int (następuje odrzucenie 

ułamka) 

background image

Operatory c.d.

Operatory relacji 

>

większy

<

mniejszy

>=

większy równy

<=

mniejszy równy

== 

równy

!=

róŜny

Operatory logiczne

&&

iloczyn logiczny, AND

||

suma logiczna, OR

!

negacja logiczna, NOT

C/C++ - nazwy, słowa kluczowe, zmienne, typy proste, 

stałe, 

operatory

, wyraŜenia, instrukcja przypisania.

Priorytety (od najwyŜszego) ,operatory 

relacji i logiczne łącznie :

!

>  >=  <  <=

== !=

&&

||

background image

Operatory bitowe

&

iloczyn bitowy, AND

|

suma bitowa, OR

^

róŜnica symetryczna, XOR (1 kiedy róŜne)

~

negacja bitowa, NOT

>>

przesunięcie w prawo 

<<

przesunięcie w lewo

C/C++ - nazwy, słowa kluczowe, zmienne, typy proste, 

stałe, 

operatory

, wyraŜenia, instrukcja przypisania.

background image

Operatory bitowe  c.d.

Operatory bitowe stosowane są w języku C do zmiennych typu char int.

Zastosowanie typowe:
&

zerowanie bitów

|

ustawianie bitów (na 1)

<< szybkie mnoŜenie 2

liczba_pozycji_przesunięcia

>> szybkie dzielenie (analogicznie)

Operacje przesunięcia <<, >> nie są operacjami przesunięcia cyklicznego
Usunięte bity są tracone a wchodzące posiadają wartość 0.
Wyjątek stanowi przesunięcie w prawo liczby ujemnej, kiedy 
uzupełnienie odbywa się jedynkami.

C/C++ - nazwy, słowa kluczowe, zmienne, typy proste, 

stałe,

operatory

, wyraŜenia, instrukcja przypisania.

background image

Operatory - operatory specjalne 

=

przypisanie (prawej strony do lewej)

()

zwiększenie priorytetu

[]

dostęp do elementu tablicy

dostęp do pola struktury, unii, zmiennej lub metody obiektu,

-

> dostęp do pól struktury przez wskaźnik

&

udostępnienie adresu zmiennej

*

udostępnienie wartości spod adresu

C/C++ - nazwy, słowa kluczowe, zmienne, typy proste, 

stałe,

operatory

, wyraŜenia, instrukcja przypisania.

background image

Operatory specjalne c.d.

,

wiązanie wyraŜeń np. 

x=(y=4,y+1);

oznacza, Ŝe zanim zostanie wykonana instrukcja

x=y+1, 

zostanie wykonana instrukcja

y=4;

sizeof

udostępnienie długości zmiennej lub specyfikatora typu (w 
bajtach) np.

float x;

dlugosc1 = sizeof x; 

dlugosc2 = sizeof(int); // tu koniecznie 

// w nawiasach

(typ)

rzutowanie typów (określenie typu wartości wyraŜenia)

int

x=5,y=2;

float  z;

z=(float)x/y; //je

ś

li wynik ma by

ć

 rzeczywisty!

C/C++ - nazwy, słowa kluczowe, zmienne, typy proste, 

stałe, 

operatory

, wyraŜenia, instrukcja przypisania.

przykład

background image

Operatory specjalne c.d.

?:

wyraŜenie warunkowe, postaci 

z=x>y?x:y;

(jeŜeli 

x

jest większe od 

y

to 

z

przypisz wartość 

x

w przeciwnym 

wypadku 

z

przypisz wartość 

y

).

Operatory złoŜone (skróty)

+= *=   /=   %=  <<=  >>=  &=   ^=    |=

Operatory powyŜsze stosuje się w celu skrócenia zapisu operacji i tak np.

x+=2;

// oznacza wykonanie operacji  

x=x+2;

x%=2;

// oznacza wykonanie operacji  

x=x%2;

C/C++ - nazwy, słowa kluczowe, zmienne, typy proste, 

stałe, 

operatory

, wyraŜenia, instrukcja przypisania.

background image

Operatory - priorytety

najwyŜszy

() [] 

-

> .

!  ~  +  

-

++  

-- & * 

sizeof (typ)

*  /  %

-

(dwuargumentowe)

<< >>

<  <=  >  >=

==  !=

&

^

|

&&

||

?:

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

najniŜszy

,

x=4>>2/3;

x=????

x=8>>1+1;

x=???

background image

WyraŜenia

WyraŜenie jest kombinacją stałych, zmiennych, wywołań funkcji oraz 

operatorów. WyraŜenia są konstruowane zgodnie z zasadami algebry.

Przykład

c/(i+f)*d-sin(x)+0.5 

C/C++ - nazwy, słowa kluczowe, zmienne, typy proste, 

stałe, operatory, 

wyraŜenia

, instrukcja przypisania.

zmienne

funkcja

stała

background image

WyraŜenia c.d.

C/C++ - nazwy, słowa kluczowe, zmienne, typy proste, 

stałe, operatory, 

wyraŜenia

, instrukcja przypisania.

Podczas obliczania wartości wyraŜeń, w trakcie wykonywania działań, 

następuje  automatyczna konwersja typów jednego z operandów tak, aby 

były jednakowego typu – bez utraty informacji.   

char ch;int i; float f;double d;

ch/i + f*d – f+i;

int

double

float

double

double

background image

C/C++ - nazwy, słowa kluczowe, zmienne, typy proste, 

stałe, operatory, wyraŜenia, 

instrukcja przypisania

.

Instrukcja przypisania

W instrukcji przypisania następuje przypisanie wartości wyraŜenia 
zmiennej postaci:

wynik=c/(i+f)*d-sin(x)+0.5; 

MoŜliwe jest przypisanie wielokrotne postaci:

a=b=c=0;

wykorzystywane np. do zerowania zmiennych względnie ich 
inicjalizacji tą samą wartością.

background image

C/C++ - nazwy, słowa kluczowe, zmienne, typy proste, 

stałe, operatory, wyraŜenia, 

instrukcja przypisania

.

Instrukcja przypisania –

skutki automatycznej konwersji typów

3 bajty (od najstarszego)

int (32 bity)

char 

2 bajty (od najstarszego)

int (32 bity)

short int 

zaokrąglenie (mniejsza precyzja)

long double

double

zaokrąglenie (mniejsza precyzja)

double

float

starszy bajt

short int

char

wynik jest ujemny, jeśli wartość >127

unsigned char

signed char

Utrata informacji

Typ wyraŜenia

Typ docelowy

przykład