PK W2

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

2

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 C b

ę

d

ą

cy wynikiem rozwoju

j

ę

zyka B,

1978 – pierwszy opis standardu j

ę

zyka C – 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

ż

e

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 (typ1 zmienna1,..., typn zmiennan);

Procedury w j

ę

zyku C:

void nazwa_procedury (typ1 zmienna1,..., typn zmiennan);

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

i

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

ą

c

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.

W

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

ż

y

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

ą

ź

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

ą

ż

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


Wyszukiwarka

Podobne podstrony:
PK W2 id 359503 Nieznany
Wstep W2 PK
W2 Świadectwo Dopuszczenia Sygnalizatora SAOZ Pk
W2 Certyfikat Stałości Właściwosci Użytkowych SAOZ Pk
Psycholgia wychowawcza W2
SP dzienni w2
w2 klasy(1)
W2 Chemiczne skladniki komorki
OK W2 System informacyjny i informatyczny
W2 6
Algebra w2
W2 Uproszczone formy rachunkowości
W2 i W3
ulog w2
UC W2

więcej podobnych podstron