background image

Programowanie komputerów

Prowadzący:

dr hab. inŜ. Kazimierz Worwa, prof. UW MSC

r.a. 2007/2008

UCZELNIA WARSZAWSKA

Kierunek INFORMATYKA I EKONOMETRIA

background image

2

Programowanie komputerów

Lokalizacja plików do wykładów



http://members.lycos.co.uk/pkjw84/kw/



logowanie:



nazwa u

Ŝ

ytkownika  

2007/2008



hasło  

kw

background image

Programowanie komputerów

Wykład 2       



Struktura programu w j

ę

zyku C



Procedury i funkcje



Instrukcje steruj

ą

ce 



Typy danych, zmienne i wyra

Ŝ

enia

background image

4

Programowanie komputerów

Działanie programu: program załadowany do pamięci

22 ...
23 Wczytaj ilość liczb do k(51)
24 Wpisz 0 do k(52)
25 Wpisz 0 do k(54)
26 Jeśli k(51) = k(52), to skocz do 31
27 Wczytaj liczbę do k(53)
28 Dodaj k(53) do k(54)
29 Dodaj 1 do k(52)
30 Skocz do 26
31 Wypisz k(54)
32 ...
33 ...
34 ...

50...  
51...  
52...
53...  
54...

23

Pamięć programu

Pamięć danych

Licznik rozkazów (LR)

spolszczone polecenia

maszynowego języka

procesora

background image

5

Programowanie komputerów

Działanie programu: po rozkazie 23

22 ...
23 Wczytaj ilość liczb do k(51)
24 Wpisz 0 do k(52)
25 Wpisz 0 do k(54)
26 Jeśli k(51) = k(52), to skocz do 31
27 Wczytaj liczbę do k(53)
28 Dodaj k(53) do k(54)
29 Dodaj 1 do k(52)
30 Skocz do 26
31 Wypisz k(54)
32 ...
33 ...
34 ...

50...  
51 

2

52...  
53...  
54...

24

Pamięć programu

Pamięć danych

Licznik rozkazów

background image

6

Programowanie komputerów

Działanie programu: po rozkazie 24

22 ...
23 Wczytaj ilość liczb do k(51)
24 Wpisz 0 do k(52)
25 Wpisz 0 do k(54)
26 Jeśli k(51) = k(52), to skocz do 31
27 Wczytaj liczbę do k(53)
28 Dodaj k(53) do k(54)
29 Dodaj 1 do k(52)
30 Skocz do 26
31 Wypisz k(54)
32 ...
33 ...
34 ...

50...  
51 

2

52 

0

53...  
54...

25

Pamięć programu

Pamięć danych

Licznik rozkazów

background image

7

Programowanie komputerów

Działanie programu: po rozkazie 25

22 ...
23 Wczytaj ilość liczb do k(51)
24 Wpisz 0 do k(52)
25 Wpisz 0 do k(54)
26 Jeśli k(51) = k(52), to skocz do 31
27 Wczytaj liczbę do k(53)
28 Dodaj k(53) do k(54)
29 Dodaj 1 do k(52)
30 Skocz do 26
31 Wypisz k(54)
32 ...
33 ...
34 ...

50...  
51 

2

52 

0

53...  
54 

0

26

Pamięć programu

Pamięć danych

Licznik rozkazów

background image

8

Programowanie komputerów

Działanie programu: po rozkazie 26

22 ...
23 Wczytaj ilość liczb do k(51)
24 Wpisz 0 do k(52)
25 Wpisz 0 do k(54)
26 Jeśli k(51) = k(52), to skocz do 31
27 Wczytaj liczbę do k(53)
28 Dodaj k(53) do k(54)
29 Dodaj 1 do k(52)
30 Skocz do 26
31 Wypisz k(54)
32 ...
33 ...
34 ...

50...  
51 

2

52 

0

53...
54 

0

27

Pamięć programu

Pamięć danych

Licznik rozkazów

background image

9

Programowanie komputerów

Działanie programu: po rozkazie 27

22 ...
23 Wczytaj ilość liczb do k(51)
24 Wpisz 0 do k(52)
25 Wpisz 0 do k(54)
26 Jeśli k(51) = k(52), to skocz do 31
27 Wczytaj liczbę do k(53)
28 Dodaj k(53) do k(54)
29 Dodaj 1 do k(52)
30 Skocz do 26
31 Wypisz k(54)
32 ...
33 ...
34 ...

50...  
51 

2

52 

0

53 

118

54 

0

28

Pamięć programu

Pamięć danych

Licznik rozkazów

background image

10

Programowanie komputerów

Działanie programu: po rozkazie 28

22 ...
23 Wczytaj ilość liczb do k(51)
24 Wpisz 0 do k(52)
25 Wpisz 0 do k(54)
26 Jeśli k(51) = k(52), to skocz do 31
27 Wczytaj liczbę do k(53)
28 Dodaj k(53) do k(54)
29 Dodaj 1 do k(52)
30 Skocz do 26
31 Wypisz k(54)
32 ...
33 ...
34 ...

50...  
51 

2

52 

0

53 

118

54 

118

29

Pamięć programu

Pamięć danych

Licznik rozkazów

background image

11

Programowanie komputerów

Działanie programu: po rozkazie 29

22 ...
23 Wczytaj ilość liczb do k(51)
24 Wpisz 0 do k(52)
25 Wpisz 0 do k(54)
26 Jeśli k(51) = k(52), to skocz do 31
27 Wczytaj liczbę do k(53)
28 Dodaj k(53) do k(54)
29 Dodaj 1 do k(52)
30 Skocz do 26
31 Wypisz k(54)
32 ...
33 ...
34 ...

50...  
51 

2

52 

1

53 

118

54 

118

30

Pamięć programu

Pamięć danych

Licznik rozkazów

background image

12

Programowanie komputerów

Działanie programu: po rozkazie 30

22 ...
23 Wczytaj ilość liczb do k(51)
24 Wpisz 0 do k(52)
25 Wpisz 0 do k(54)
26 Jeśli k(51) = k(52), to skocz do 31
27 Wczytaj liczbę do k(53)
28 Dodaj k(53) do k(54)
29 Dodaj 1 do k(52)
30 Skocz do 26
31 Wypisz k(54)
32 ...
33 ...
34 ...

50...  
51 

2

52 

1

53 

118

54 

118

26

Pamięć programu

Pamięć danych

Licznik rozkazów

background image

13

Programowanie komputerów

Działanie programu: po rozkazie 26 (2)

22 ...
23 Wczytaj ilość liczb do k(51)
24 Wpisz 0 do k(52)
25 Wpisz 0 do k(54)
26 Jeśli k(51) = k(52), to skocz do 31
27 Wczytaj liczbę do k(53)
28 Dodaj k(53) do k(54)
29 Dodaj 1 do k(52)
30 Skocz do 26
31 Wypisz k(54)
32 ...
33 ...
34 ...

50...  
51 

2

52 

1

53 

118

54 

118

27

Pamięć programu

Pamięć danych

Licznik rozkazów

background image

14

Programowanie komputerów

Działanie programu: po rozkazie 27 (2)

22 ...
23 Wczytaj ilość liczb do k(51)
24 Wpisz 0 do k(52)
25 Wpisz 0 do k(54)
26 Jeśli k(51) = k(52), to skocz do 31
27 Wczytaj liczbę do k(53)
28 Dodaj k(53) do k(54)
29 Dodaj 1 do k(52)
30 Skocz do 26
31 Wypisz k(54)
32 ...
33 ...
34 ...

50...  
51 

52 

1

53 

17

54 

118

28

Pamięć programu

Pamięć danych

Licznik rozkazów

background image

15

Programowanie komputerów

Działanie programu: po rozkazie 28 (2)

22 ...
23 Wczytaj ilość liczb do k(51)
24 Wpisz 0 do k(52)
25 Wpisz 0 do k(54)
26 Jeśli k(51) = k(52), to skocz do 31
27 Wczytaj liczbę do k(53)
28 Dodaj k(53) do k(54)
29 Dodaj 1 do k(52)
30 Skocz do 26
31 Wypisz k(54)
32 ...
33 ...
34 ...

50...  
51 

2

52 

1

53 

17

54 

135

29

Pamięć programu

Pamięć danych

Licznik rozkazów

background image

16

Programowanie komputerów

Działanie programu: po rozkazie 29 (2)

22 ...
23 Wczytaj ilość liczb do k(51)
24 Wpisz 0 do k(52)
25 Wpisz 0 do k(54)
26 Jeśli k(51) = k(52), to skocz do 31
27 Wczytaj liczbę do k(53)
28 Dodaj k(53) do k(54)
29 Dodaj 1 do k(52)
30 Skocz do 26
31 Wypisz k(54)
32 ...
33 ...
34 ...

50...  
51 

2

52 

2

53 

17

54 

135

30

Pamięć programu

Pamięć danych

Licznik rozkazów

background image

17

Programowanie komputerów

Działanie programu: po rozkazie 30 (2)

22 ...
23 Wczytaj ilość liczb do k(51)
24 Wpisz 0 do k(52)
25 Wpisz 0 do k(54)
26 Jeśli k(51) = k(52), to skocz do 31
27 Wczytaj liczbę do k(53)
28 Dodaj k(53) do k(54)
29 Dodaj 1 do k(52)
30 Skocz do 26
31 Wypisz k(54)
32 ...
33 ...
34 ...

50...  
51 

2

52 

2

53 

17

54 

135

26

Pamięć programu

Pamięć danych

Licznik rozkazów

background image

18

Programowanie komputerów

Działanie programu: po rozkazie 31

22 ...
23 Wczytaj ilość liczb do k(51)
24 Wpisz 0 do k(52)
25 Wpisz 0 do k(54)
26 Jeśli k(51) = k(52), to skocz do 31
27 Wczytaj liczbę do k(53)
28 Dodaj k(53) do k(54)
29 Dodaj 1 do k(52)
30 Skocz do 26
31 Wypisz k(54)
32 ...
33 ...
34 ...

50...  
51 

2

52 

2

53 

17

54 

135

Pamięć programu

Pamięć danych

135

background image

19

Programowanie komputerów

Historia języka C/C++



koniec lat 60-tych poprzedniego stulecia – Martin Richards i jego 
j

ę

zyk o nazwie BCPL,



1969 - powstanie w oparciu o j

ę

zyk BCPL pierwszej wersji systemu 

UNIX na maszyn

ę

 DEC PDP-11 w Bell Laboratories w USA.

Prace te prowadził Ken Thompson, do którego pó

ź

niej doł

ą

czył 

Dennis Ritchie,  



1970 – Ken Tompson i jego j

ę

zyk B, powstały na skutek rozwoju 

j

ę

zyka BCPL,



1972 – Dennis Ritchie i jego j

ę

zyk b

ę

d

ą

cy wynikiem rozwoju 

j

ę

zyka B,



1978 – pierwszy opis standardu j

ę

zyka – Dennis Ritchie i Brian

Kernighan w ksi

ąŜ

ce pt. „The C Programming Language” wyd. 

Prentice-Hall (polskie wydanie w 1988r. pt. „J

ę

zyk C” wydawnictwo 

WNT)



1989 – standard ANSI j

ę

zyka C

background image

20

Programowanie komputerów

Historia języka C/C++



1983 – oddanie do u

Ŝ

ytku pierwszej implementacji j

ę

zyka C++

(Bjarne Stroustrup)



1985 – powstanie pierwszej wersji j

ę

zyka C++ do u

Ŝ

ytku 

zewn

ę

trznego



1994 – przyj

ę

cie standardu ANSI/ISO j

ę

zyka C++

background image

21

Programowanie komputerów

Jaki dokładnie jest język C ?                      



Jego kod jest niezwykle szybki, ale składnia j

ę

zyka mo

Ŝ

przysparza

ć

 wielu kłopotów niewprawnym programistom,



C ma ugruntowan

ą

 pozycj

ę

 na rynku – przetrwał prób

ę

 czasu, 

czego nie mo

Ŝ

na powiedzie

ć

 o wielu innych j

ę

zykach 

programowania,



UNIX został prawie w 100% zaimplementowany w j

ę

zyku C 

i cały czas jest podstawowym j

ę

zykiem programowania dla 

systemów operacyjnych z grupy systemów UNIX, np. Solaris, 
AIX, Linux, jest on równie

Ŝ

 wa

Ŝ

ny dla systemu DEC VMS,



C jest równie

Ŝ

 bardzo wa

Ŝ

nym j

ę

zykiem programowania dla 

systemów z rodziny Windows i systemów sieciowych z rodziny 
NetWare 

background image

22

Programowanie komputerów

Jakie jest odniesienie języka C  do  języków C++ i Java



J

ę

zyk C++ jest obiektowo zorientowanym rozszerzeniem 

j

ę

zyka C



J

ę

zyk Java został zbudowany bezpo

ś

rednio na podstawie 

j

ę

zyka C++



Wobec powy

Ŝ

szego: aby dobrze porusza

ć

 si

ę

 w obszarze 

j

ę

zyków C++ i Java wskazana jest znajomo

ść

 j

ę

zyka C



Aby nazywa

ć

 siebie profesjonalist

ą

, nale

Ŝ

y zna

ć

 j

ę

zyk C

background image

23

Programowanie komputerów

Jaki dokładnie jest język C ?                      



C jest j

ę

zykiem tzw.  

ś

redniego poziomu:

Niski poziom – języki  maszynowe,

assemblery

Ś

redni poziom – język C

Wysoki poziom – języki pochodzące

od Algola: Pascal, Modula2, ADA, Basic,

jak równieŜ C++, Java

wydajność kodu
wynikowego C 
zbliŜona do wydajności
języka maszynowego

składnia kodu
ź

ródłowego C 

zbliŜona do składni
języka wysokiego poziomu

background image

24

Programowanie komputerów

Kształt programu w języku C                      



Podstaw

ą

 programu jest tzw. MODUŁ GŁÓWNY, który jest 

zapisywany w postaci kodu 

ź

ródłowego zapisanego w pliku 

ASCII z rozszerzeniem „ .C ”



Struktura modułu głównego w j

ę

zyku C:

..  /* klauzule importu bibliotek */
..  /* deklaracje stałych, zmiennych, typów */
..  /* prototypy lub deklaracje funkcji lub procedur */

..
main( )      /* słowo domy

ś

lne i zastrze

Ŝ

one */

{                 /* klamra otwieraj

ą

ca program*/

..           /* polecenia  wykonywane przez program */
.. 

}                 /* klamra zamykaj

ą

ca program*/

część
deklaracyjna
modułu

część
wykonywalna
modułu

background image

25

Programowanie komputerów

Kształt programu w języku C                      



Przykład:

/* klauzula importu biblioteki */

#include <stdio.h>

main( )   

/* int main(void)  */

{                

/* wypisanie tekstu na ekranie */

printf(„Witaj C”);

return 0;     

/* wyj

ś

cie z programu */

}                 

background image

26

Programowanie komputerów

Podział programu na procedury i funkcje



w j

ę

zykach programowania mamy do czynienia z dwoma 

rodzajami podprogramów:



funkcje wykonuj

ą

ce czynno

ś

ci i zwracaj

ą

ce warto

ść

 



procedury wykonuj

ą

ce jakie

ś

 czynno

ś

ci



deklaracje procedur i funkcji s

ą

 umieszczane w cz

ęś

ci 

deklaracyjnej modułu



w cz

ęś

ci wykonywalnej programu zdefiniowane procedury i 

funkcje s

ą

 wywoływane



wykorzystuj

ą

c procedury i funkcje w tek

ś

cie programu 

realizujemy tzw. programowanie proceduralne, którego 
najwy

Ŝ

sz

ą

 form

ą

 jest programowanie strukturalne, 

wykorzystuj

ą

ce technik

ę

 dekompozycji („dziel i rz

ą

d

ź

”)

background image

27

Programowanie komputerów

Deklarowanie procedur i funkcji



Funkcje w j

ę

zyku C deklarujemy według schematu:



zwracany_typ nazwa_funkcji (typzmienna1,..., typzmiennan);



Procedury w j

ę

zyku C:



void nazwa_procedury (typzmienna1,..., typzmiennan);

Parametry formalne funkcji (procedury).
W czasie wywołania funkcji (procedury)
w ich miejsce wstawiane są parametry 
aktualne
, które przekazują wartości do 
podprogramu, na których on operuje

procedura nie zwraca wartości,

co oznaczamy słowem  void

funkcja zwraca wartość,

obliczoną w czasie jej 

wykonania

background image

28

Programowanie komputerów

Deklarowanie procedur i funkcji

/* deklaracje importu bibliotek*/

.......................

/*deklaracje procedur i funkcji, np.:*/

int moja_fun1(int par1); 

/*funkcja z jednym parametrem*/

{

/*tre

ść

 funkcji*/

return warto

ść

  

/*wymagana deklaracja zwrotu warto

ś

ci funkcji*/

}
void moja_proc1(void);  

/*procedura bezparametrowa*/

{

/*tre

ść

 procedury*/

}

/* moduł główny */

main( )
{

/*tre

ść

 programu*/

zmienna = moja_fun1(21);  

/*przykład wywołania funkcji*/

moja_proc1( );                     

/*przykład wywołania procedury*/

return 0;

}

background image

29

Programowanie komputerów

Komentarze



Komentarz jest fragmentem programu ignorowanym w procesie kompilacji



WyróŜnia się komentarze 

blokowe

liniowe



Komentarz blokowy umieszcza się między sekwencją znaków "

/*

" a "

*/

", 

a komentarz liniowy rozpoczyna się sekwencją "

//

" a kończy znakiem 

końca linii. 



Przykłady

/* To jest komentarz blokowy. MoŜe zajmować kilka wierszy */

// To jest komentarz liniowy



Uwaga na  nierozwa

Ŝ

ne umieszczenie w zakresie komentarza 

linii kodu 

ź

ródłowego, np.

int a;

/*Komentarz w stylu

int b;

j

ę

zyka C */

background image

30

Programowanie komputerów

Identyfikator  (nazwa)  słu

Ŝ

y  do  nazywania  obiektów  wchodz

ą

cych  w  skład  programu 

napisanego w j

ę

zyku C (zmiennych, typów, funkcji itp).  

 

 

 
Przykładowe identyfikatory:  
i, liczba, j1, J1, data_urodzenia, _koniec 
Przykłady niepoprawnych identyfikatorów:  
2rok, 1_kwietnia, ab$, czary!mar, a-b 
Nie nale

Ŝ

y u

Ŝ

ywa

ć

 identyfikatorów maj

ą

cych dwa znaki podkre

ś

lenie obok siebie (s

ą

 

one  poprawne  z  punktu  widzenia  składni  j

ę

zyka  C),  poniewa

Ŝ

  mog

ą

  by

ć

  one 

u

Ŝ

ywane przez twórców kompilatora do tworzenia bibliotek, makr itp. 

Identyfikatory

background image

31

Programowanie komputerów

Stałe i zmienne w programie



stałe nie zmieniaj

ą

 swojej warto

ś

ci w czasie działania programu



zmienne mog

ą

 zmienia

ć

 swoj

ą

 warto

ść

 dowolnie wiele razy



je

Ŝ

eli chodzi o zakres widoczno

ś

ci mo

Ŝ

emy wyró

Ŝ

ni

ć

 w programie 

dwa rodzaje stałych i zmiennych:



zmienne i stałe globalne



deklarowane w cz

ęś

ci deklaracyjnej modułu, widoczne w 

całym programie, a wi

ę

c we wszystkich jego procedurach, 

funkcjach i funkcji main( )



zmienne i stałe lokalne



deklarowane wewn

ą

trz procedur, funkcji i widoczne wył

ą

cznie 

w tych procedurach, funkcjach, w których zostały one 
zadeklarowane



ka

Ŝ

da stała lub zmienna musi mie

ć

 okre

ś

lony typ danych



na obecnym etapie wykładu b

ę

dziemy wykorzystywa

ć

 wył

ą

cznie 

predefiniowane typy danych

background image

32

Programowanie komputerów

Słowa kluczowe

Niektóre  identyfikatory  zostały  zastrze

Ŝ

one  przez  twórców  j

ę

zyka.  Słu

Ŝą

  one  do 

zapisu konstrukcji jakie s

ą

 dopuszczalne w j

ę

zyku C. Dlatego nazywa si

ę

 je słowami 

kluczowymi.  Słowa  kluczowe  nie  mog

ą

  by

ć

  u

Ŝ

yte  jako  nazwy  zmiennych,  typów  lub 

funkcji i nie s

ą

 poprawnymi identyfikatorami w sensie składni j

ę

zyka C. W j

ę

zyku 

ANSI C wyst

ę

puj

ą

 nast

ę

puj

ą

ce słowa kluczowe:  

 

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  

 

background image

33

Programowanie komputerów

Deklarowanie stałych



stałe literalne (literal constant):



nazwa_stałej = warto

ść

, np.:



dzie

ń

 = 24;



godzina = 60;



PI = 3.1416;



stałe symboliczne (symbolic constant):



#define nazwa_stałej warto

ść

, np.:



#define  dzie

ń

  24



#define  godzina  60



# define  PI  3.1416



const typ_stałej nazwa_stałej warto

ść

_stałej, np.:



const  int dzie

ń

  24;



const  int godzina  60;



const  float PI  3.1416;

background image

34

Programowanie komputerów

Zmienne



Zmienn

ą

okre

ś

lany  jest  pewien  obszar  w  pami

ę

ci  komputera, 

w którym mog

ą

by

ć

przechowywane dane. Z punktu widzenia 

osoby pisz

ą

cej program, zmienna posiada  nast

ę

puj

ą

ce  cechy 

podstawowe: 



nazwa (identyfikator) 



typ 



warto

ść



Nazwa  zmiennej  pozwala  wskaza

ć

w  programie,  o  który 

fragment  pami

ę

ci  nam  chodzi.  Łatwiej  jest  posługiwa

ć

si

ę

nazw

ą

ni

Ŝ

adresem  liczbowym  (łatwiej  zrozumie

ć

napis

printf(imi

ę

); ni

Ŝ

np. printf(*0x12342);)  Kompilator  dokonuj

ą

tłumaczenia napisanego  programu  zamienia  wszystkie  nazwy 
zmiennych na odpowiednie adresy w pami

ę

ci komputera



Wszystkie  nazwy  zmiennych  przed  u

Ŝ

yciem  musz

ą

by

ć

zadeklarowane.

background image

35

Programowanie komputerów

Zmienne



Warto

ść

zmiennej  jest  tym,  co  przechowujemy  w  obszarze  pami

ę

ci 

okre

ś

lanym przez nazw

ę



Warto

ść

mo

Ŝ

e  si

ę

zmienia

ć

w  dowolnym  momencie  w  czasie 

wykonania programu. 



Warto

ś

ci

ą

mo

Ŝ

e  by

ć

liczba  całkowita,  zmiennoprzecinkowa  (ułamek 

dziesi

ę

tny), adres w pami

ę

ci komputera (tzw. wska

ź

nik), tekst itp. 



momencie 

deklaracji 

warto

ść

zmiennej 

lokalnej 

(zadeklarowanej  wewn

ą

trz  funkcji)  jest  nieokre

ś

lona  tzn.  jej 

warto

ść

jest przypadkowa; zmienne globalne (deklarowane poza 

funkcjami) s

ą

inicjowane na zero.



Typ  zmiennej  okre

ś

la  jak

ą

warto

ść

mo

Ŝ

na  wpisa

ć

do  obszaru 

wskazywanego  przez  nazw

ę

(czy  b

ę

dzie  to  liczba  całkowita, 

zmienno-przecinkowa ... , czy te

Ŝ

inny rodzaj danej).



W  zale

Ŝ

no

ś

ci  od  rodzaju  warto

ś

ci  (typu  zmiennej),  inny  b

ę

dzie 

rozmiar pami

ę

ci potrzebny do jej zapami

ę

tania. 



Kompilator  na  podstawie  typu  okre

ś

la  jak

ą

ilo

ść

pami

ę

ci  nale

Ŝ

przydzieli

ć

zmiennej i jakie operacje s

ą

na niej dopuszczalne. 

background image

36

Programowanie komputerów

Deklarowanie i ustawianie wartości zmiennych



schemat deklaracji zmiennej (globalnej, lokalnej):



typ_zmiennej nazwa_zmiennej;



przykłady deklaracji zmiennych:



int długo

ść

, odległo

ść

;    /*zmienne całkowitoliczbowa*/



float powierzchnia;  /*liczba rzeczywista*/



char znak;   /*zmienna znakowa*/



schemat nadawania warto

ś

ci zmiennej:



nazwa_zmiennej = warto

ść

_zmiennej;



przykłady nadawania warto

ś

ci zmiennym:



długo

ść

 = 20;   /*nadanie warto

ś

ci wprost*/



powierzchnia = 15.20; /*przecinek jest obowi

ą

zkowy*/



znak = ‘A’;  /*znaki wpisujemy w apostrofach*/



odległo

ść

 = długo

ść

; /*wpisanie warto

ś

ci jednej zmiennej do drugiej*/

background image

37

Programowanie komputerów

Proste typy danych

liczba zmiennoprzecinkowa

2.2E-308 do 
1.8E308

8

double

liczba zmiennoprzecinkowa

1.2E-38 do 3.4E38

4

float

liczba naturalna

0 do 4294967295

4

unsignet
long

liczba naturalna

0 do 65535

2

unsignet
short

liczba naturalna

0 do 65535

2 lub 4

unsignet int

long int – długa liczba 
całkowita

-2147483648 do 
2147483647

4

long

liczba całkowita

-32768 do 32767

2

short

pojedynczy znak ASCII 

-127 do 127

1

char

liczba całkowita

-32768 do 32767

2 lub 4

int

Opis

Zakres

Liczba 
bajtów

Oznaczenie

background image

38

Programowanie komputerów

Zasada widzialności zmiennych i stałych



Zmienne i stałe zdefiniowane na poziomie całego modułu 
głównego „main” obowi

ą

zuj

ą

 we wszystkich miejscach tego 

modułu, tzn.:



w jego cz

ęś

ci wykonywalnej



we wszystkich procedurach i funkcjach zawartych w 
module,



Zmienne i stałe zdefiniowane w funkcji (procedurze) 
obowi

ą

zuj

ą

 tylko w zakresie tej funkcji (procedury) 

background image

39

Programowanie komputerów

Podział programu na moduły



Program mo

Ŝ

e by

ć

 zbudowany z wielu modułów, np.:

import

biblioteki standardowe

<stdio.h>, ......, <stdlib.h>

biblioteki własne

„moja_bib1.h”, ..., „moja_bib2.h”

moduł główny

z funkcją main( )

kompilator, linker

program wykonywalny

background image

40

Programowanie komputerów

Standardowe moduły biblioteczne języka C



Na pocz

ą

tku tekstu programu u

Ŝ

ywamy sentencji:

#include <nazwa_biblioteki_1.h>
#include <nazwa_biblioteki_2.h>
................
#include <nazwa_biblioteki_N.h>



Jest to tzw. klauzula importu standardowych bibliotek

ś

rodowiska j

ę

zyka C



Nazwy bibliotek standardowych piszemy w otoczeniu nawiasów 
trójk

ą

tnych



Biblioteki s

ą

 dodatkowymi modułami j

ę

zyka C, w których zostały 

zgromadzone przygotowane wcze

ś

niej funkcje przydatne dla 

programisty



Dzi

ę

ki takiemu rozwi

ą

zaniu nie trzeba ich implementowa

ć

 

samodzielnie 

background image

41

Programowanie komputerów

Biblioteka standardowa stdio.h - #include <stdio.h>



Z tej biblioteki b

ę

dziemy czerpa

ć

 funkcje umo

Ŝ

liwiaj

ą

ce 

obsług

ę

 konsoli wyj

ś

cia :



int printf(char *ci

ą

g_znaków, ...); 



wypisanie jednego lub wielu ci

ą

gów znaków b

ę

d

ą

cych np.. 

tekstami, liczbami itd... 



int puts(char *napis);



wypisanie pojedynczego napisu b

ę

d

ą

cego tekstem z 

dodaniem znaku ko

ń

ca linii i wysuni

ę

cia. Działa szybciej ni

Ŝ

 

printf, ale obsługuje tylko teksty



int putchar (int ch);



wypisanie na akrean pojedynczego znaku, np.:

putchar(‘K’);
putchar(‘O’);
putchar(‘T’);



utworzy na ekranie napis: „KOT”

background image

42

Programowanie komputerów

Biblioteka standardowa stdio.h - #include <stdio.h>



Przykład 1.2. Wypisanie na ekranie dwóch tekstów:



„Ala ma kota. „



„A kot ma Al

ę

.”



Przy pomocy funkcji printf:

printf („Ala ma kota.”, „A kot ma Al

ę

.”);



Przy pomocy funkcji puts:

puts(„Ala ma kota.”);

puts(„A kot ma Al

ę

.”);

Czy w obu przypadkach tekst zostanie wypisany identycznie?

background image

43

Programowanie komputerów

Biblioteka standardowa stdio.h - #include <stdio.h>



Odpowied

ź

 do przykładu 1.2:



po wykonaniu polecenia printf:



po wykonaniu dwóch polece

ń

 puts:

Ala ma kota. A kot ma Alę

Ala ma kota. 

A kot ma Alę

background image

44

Programowanie komputerów

Biblioteka standardowa stdio.h - #include <stdio.h>



Z tej biblioteki b

ę

dziemy czerpa

ć

 funkcje umo

Ŝ

liwiaj

ą

ce obsług

ę

 

konsoli wej

ś

cia (przykłady ich wykorzystania b

ę

d

ą

 pó

ź

niej):



int scanf(char *ci

ą

g znaków, ...);



Wczytywanie z klawiatury ci

ą

gów znaków, które mog

ą

 by

ć

 

tekstami, liczbami itp. Wczytywanie ka

Ŝ

dego ci

ą

gu znaków 

automatycznie ko

ń

czy si

ę

 wprowadzeniem spacji lub dowolnego 

znaku steruj

ą

cego np. tabulatora, Entera itp.)



char *gets (char *napis);



wczytanie pojedynczego napisu b

ę

d

ą

cego tekstem. Mo

Ŝ

na 

wprowadza

ć

 spacje. Wpisywanie ko

ń

czy si

ę

 po naci

ś

ni

ę

ciu 

znaku Enter. Działa szybciej ni

Ŝ

 scanf, ale obsługuje tylko teksty



int getchar(void);



wczytanie pojedynczego znaku alfanumerycznego z klawiatury

background image

45

Programowanie komputerów

Inne biblioteki standardowe języka C



<conio.h>



dodatkowe funkcje obsługi konsoli we/wy



<ctype.h>



obsługa typów znakowych



<string.h>



obsługa ła

ń

cuchów znaków



<math.h>



funkcje matematyczne



<time.h>



funkcje daty i czasu



<stdlib.h>



dynamiczna alokacja pami

ę

ci i inne funkcje systemowe

background image

46

Programowanie komputerów

Operatory języka C



Operatory umo

Ŝ

liwiaj

ą

 zapisywanie ró

Ŝ

nego rodzaju operacji 

w kodzie 

ź

ródłowym programu



Pokrótce omówimy nast

ę

puj

ą

ce rodzaje operatorów j

ę

zyka C:



operator unarny



operatory arytmetyczne



operatory logiczne



operatory relacyjne



operatory przyrostowe

background image

47

Programowanie komputerów

Operator unarny



Operator unarny jest zapisywany w postaci znaku „minusa”



Umo

Ŝ

liwia on ustawienie dowolnej liczby na jej warto

ść

 przeciwn

ą



Przykład



a = 5;



b = – a;

czyli: b = – 5;

minus oznaczający
operator unarny

rezultat zadziałania
operatora unarnego

background image

48

Programowanie komputerów

Operatory arytmetyczne



Umo

Ŝ

liwiaj

ą

 one zapis operacji arytmetycznych:



*    (gwiazdka) - mno

Ŝ

enie,



%  (procent) - reszta z dzielenia całkowitoliczbowego,



/    (uko

ś

nik) - dzielenie,



+   (plus) - dodawanie



– (minus) – odejmowanie



W zapisie bardziej zło

Ŝ

onych działa

ń

 zaleca si

ę

 stosowanie 

nawiasów okr

ą

głych, aby unikn

ąć

 nieporozumie

ń

 zwi

ą

zanych z 

priorytetami operatorów



Przykłady:



8 – 2 * 4

// 0



(8 – 2) * 4 

// 24



5 / 2

// 2,   



5.0 / 2.0 

// 2.5



5 % 2 

//1

background image

49

Programowanie komputerów

Operatory logiczne



Wykorzystywane w wyra

Ŝ

eniach logicznych



Lista operatorów logicznych:



&& - iloczyn logiczny AND



|| - suma logiczna OR



– negacja logiczna NOT



Przykłady:



zdanie: a AND b zapisujemy: a && b,



zdanie: a OR b zapisujemy: a || b,



zdanie NOT b zapisujemy: !b,



zdanie a OR NOT(b AND c) zapisujemy: a || !(b && c) 

background image

50

Programowanie komputerów

Operatory relacyjne



Umo

Ŝ

liwiaj

ą

 one wykonywanie ró

Ŝ

nych porówna

ń

 w zdaniach 

logicznych



Lista operatorów relacyjnych:

>

wi

ę

ksze ni

Ŝ

,

>= wi

ę

ksze lub równe ni

Ŝ

,

<

mniejsze ni

Ŝ

,

<= mniejsze lub równe ni

Ŝ

,

== równe

!= 

Ŝ

ne

UWAGA: Nale

Ŝ

y zwróci

ć

 uwag

ę

 na istotn

ą

 ró

Ŝ

nic

ę

 pomi

ę

dzy 

operatorem przypisania =, a operatorem relacyjnym 
porównania ==.

background image

51

Programowanie komputerów

Priorytety operatorów porównania i relacyjnych



Najwy

Ŝ

szy priorytet

!

>, >=, <, <=

==, !=

&&



Najni

Ŝ

szy priorytet

||



W zapisie zda

ń

 logicznych wykorzystujemy ponadto nawiasy 

okr

ą

głe.

background image

52

Programowanie komputerów