jp2 print

background image

J˛ezyki programowania – cz˛e´s´c II

Marcin Szpyrka

Katedra Automatyki

Akademia Górniczo-Hutnicza w Krakowie

2009/10

Marcin Szpyrka

J˛ezyki programowania – cz˛e´s´c II

1/26

Zasady organizacji kodu – programowanie strukturalne

– W trywialnym przypadku program z j˛ezyku C++ mo˙ze składa´c si˛e tylko z

jednego pliku i jednej funkcji.

– Funkcja jest wydzielon ˛

a cz˛e´sci ˛

a programu, realizuj ˛

ac ˛

a pewne zadanie.

Kompletny program musi zawiera´c funkcj˛e o nazwie main od której rozpoczyna
si˛e wykonanie programu.

– Do programu mo˙zna doł ˛

acza´c pliki zawieraj ˛

ace nagłówki (opis) funkcji

zdefiniowanych w innych plikach lub funkcji systemowych (dyrektywa include).

1

#include

<iostream>

2

3

int

main

()

4

{

5

std

::

cout

<<

"C++\n"

;

6

}

1

#include

<iostream>

2

3

int

main

()

4

{

5

std

::

cout

<<

"C++\n"

;

6

return

0;

7

}

Marcin Szpyrka

J˛ezyki programowania – cz˛e´s´c II

2/26

background image

Zasady organizacji kodu w j˛ezyku C++

– Nagłówek funkcji zawiera: typ zwracanego wyniku, nazw˛e funkcji i list˛e

argumentów umieszczon ˛

a w nawiasach okr ˛

agłych (argumenty oddziela si˛e

przecinkiem).

– Instrukcje składaj ˛

ace si˛e na kod funkcji umieszcza si˛e w nawiasach klamrowych

’{’, ’}’. Para nawiasów klamrowych mo˙ze słu˙zy´c do grupowania instrukcji.
Ci ˛

ag instrukcji umieszczony wewn ˛

atrz nawiasów klamrowych okre´slany jest

mianem instrukcji zło˙zonej.

– Ka˙zda instrukcja musi by´c zako´nczona ´srednikiem ’;’. ´Srednika nie umieszcza

si˛e po zamykaj ˛

acym nawiasie klamrowym (s ˛

a wyj ˛

atki). To ´srednik, a nie koniec

linii, decyduje o tym gdzie ko´nczy si˛e instrukcja. Sam ´srednik traktowany jest
jako instrukcja pusta.

– Nie mo˙zna dzieli´c (przenosi´c do nowej linii) nazw zmiennych, funkcji i słów

kluczonych.

– Komentarz w C++, to dowolnej długo´sci tekst ograniczony znakami

/*

i

*/

lub

tekst od znaku

//

do ko´nca linii.

int

main

() {

/* Ten program nic nie robi. */

}

Marcin Szpyrka

J˛ezyki programowania – cz˛e´s´c II

3/26

Kompilacja i uruchomienie programu

GCC (ang. The GNU Compiler Collection) jest zło˙zonym oprogramowaniem, który
zarz ˛

adza cało´sci ˛

a procesu kompilacji i jest w stanie generowa´c programy

wykonywalne dla kodu napisanego we wszystkich powszechnie wykorzystywanych
j˛ezykach, dla praktycznie ka˙zdej u˙zywanej platformy sprz˛etowej i wszystkich
powszechnie u˙zywanych systemów operacyjnych.
Wywołanie kompilatora dla j˛ezyka C++ (posta´c ogólna):

g

++ [

opcje

]

pliki_wej´

sciowe

[-

o plik_wykonywalny

]

Je˙zeli pomini˛eta zostanie nazwa pliku wykonywalnego, to powstanie plik o nazwie

a

.

out

. Aby wł ˛

aczy´c wykrywanie wszystkich istotnych ostrze˙ze´n nale˙zy doł ˛

aczy´c

opcj˛e

-

Wall

. Mo˙zna wymusi´c traktowanie wszystkich ostrze˙ze´n jak sytuacji

bł˛ednych stosuj ˛

ac parametr:

-

Werror

. Aby zapewni´c pełn ˛

a zgodno´s´c ze standardem

ANSI C++ nale˙zy kompilowa´c tak:

g

++ -

Wall

-

ansi plik

.

cpp

-

o plik

Uwaga

Wszystkie przykłady na wykładzie b˛ed ˛

a demonstrowane w oparciu o system Linux!

1

g

++ -

Wall

-

ansi powitanie

.

cpp

-

o powitanie

2

./

powitanie

Marcin Szpyrka

J˛ezyki programowania – cz˛e´s´c II

4/26

background image

Przestrzenie nazw

Przestrzenie nazw

Ka˙zdy zbiór definicji w bibliotece jest umieszczony w tzw. przestrzeni nazw. Dzi˛eki
temu w ró˙znych przestrzeniach nazw mog ˛

a istnie´c identyczne nazwy bez wywołania

kolizji. Odwołanie si˛e do konkretnego elementu (obiektu, funkcji) przestrzeni nazw
konieczne jest podanie jego nazwy poprzedzonej nazw ˛

a przestrzeni i operatorem

zakresu, np.: std::cout.
Aby unikn ˛

a´c konieczno´sci korzystania z pełnych nazw mo˙zna doł ˛

aczy´c jej nazw˛e

korzystaj ˛

ac z instrukcji using (nie jest to zalecane przy wi˛ekszych programach).

Standardowe biblioteki C++ umieszczone s ˛

a w przestrzeni nazw std.

1

#include

<iostream>

2

using namespace

std

;

Pliki nagłówkowe

Wraz z rozwojem j˛ezyka C++ uległ zmianie styl doł ˛

aczania plików nagłówkowych

do programu. Biblioteki, które zostały „w spadku” z j˛ezyka C s ˛

a ci ˛

agle dost˛epne z

rozszerzeniem „.h”. Nowy styl (C++) doł ˛

aczania tych bibliotek odrzuca rozszerzenie

i jednocze´snie dodana zostaje litera „c” na pocz ˛

atku nazwy biblioteki.

1

#include

<iostream.h>

#include<stdlib.h>

//stara wersja

2

#include

<iostream>

#include<cstdlib>

//nowa wersja

Marcin Szpyrka

J˛ezyki programowania – cz˛e´s´c II

5/26

Zmienne

– Zmienn ˛

a w j˛ezyku programowania nazywamy wielko´s´c, która mo˙ze

przechowywa´c warto´s´c nale˙z ˛

ac ˛

a do pewnego zbioru nazywanego typem

zmiennej. Zmienna jest jednoznacznie identyfikowana przez swoj ˛

a nazw˛e.

Ka˙zda zmienna, która jest u˙zywana w programie musi zosta´c wcze´sniej
zadeklarowana, tzn. nale˙zy okre´sli´c jej nazw˛e i typ warto´sci.

– Identyfikatorem (nazw ˛

a) nazywamy ci ˛

ag liter, cyfr i znaków podkre´slenia,

rozpoczynaj ˛

acy si˛e od litery lub znaku podkre´slenia. Nazwami nie mog ˛

a by´c

słowa kluczowe, tj. słowa zastrze˙zone u˙zywane w konstrukcjach j˛ezyka.

– Warto´s´c zmiennej jest tym, co przechowujemy w obszarze pami˛eci okre´slanym

przez nazw˛e. W momencie deklaracji warto´s´c zmiennej lokalnej jest
nieokre´slona, zmienne globalne s ˛

a inicjalizowane na zero.

– Typ zmiennej okre´sla jak ˛

a warto´s´c mo˙zna wpisa´c do obszaru wskazywanego

przez nazw˛e. W zale˙zno´sci od typu zmiennej, inny jest rozmiar pami˛eci
potrzebny do jej zapami˛etania. Kompilator na podstawie typu okre´sla jak ˛

a ilo´s´c

pami˛eci nale˙zy przydzieli´c zmiennej i jakie operacje s ˛

a na niej dopuszczalne.

– Do nadawania warto´sci zmiennej słu˙zy instrukcja przypisania. W instrukcji tej

po lewej stronie operatora przypisania znajduje si˛e identyfikator zmiennej, za´s
po prawej stronie warto´s´c lub wyra˙zenie daj ˛

ace w wyniku warto´s´c

odpowiedniego typu (zgodnego z zadeklarowanym typem zmiennej).

Marcin Szpyrka

J˛ezyki programowania – cz˛e´s´c II

6/26

background image

Przykłady deklaracji zmiennych

1

int

i

;

2

int

j

= 3;

3

int

a

,

b

;

4

float

x

,

y

;

5

6

i

= 2;

7

x

=

y

= 7.51;

Uwagi

– W j˛ezyku C++ rozró˙zniane s ˛

a małe i wielkie litery, ewa i Ewa, to dwa ró˙zne

identyfikatory.

– W j˛ezyku C++ operator przypisania to znak

=

, a operator porównania ma posta´c

==

.

Marcin Szpyrka

J˛ezyki programowania – cz˛e´s´c II

7/26

Przykład 4

1

#include

<iostream>

2

using namespace

std

;

3

4

int

main

()

5

{

6

float

a

,

b

,

pole

;

7

cout

<<

"Podaj długo´

sci boków prostok ˛

ata:\n"

;

8

cout

<<

"a = "

;

9

cin

>>

a

;

10

cout

<<

"b = "

;

11

cin

>>

b

;

12

pole

=

a

*

b

;

13

cout

<<

"pole = "

<<

pole

<<

"\n"

;

14

}

Marcin Szpyrka

J˛ezyki programowania – cz˛e´s´c II

8/26

background image

Proste typy danych

– Typ logiczny – typ bool (warto´sci true i false).

– Typy znakowe – typ char słu˙zy do przechowywania znaków w kodzie ASCII

lub innym stosowanym na danej maszynie, jest on na ogół jednobajtowy. Do
przechowywania znaków z wi˛ekszego zbioru (np. Unikod) słu˙zy typ wchar_t.
Jego rozmiar zale˙zy od implementacji.

– Typy całkowite – typ całkowity wyst˛epuje w trzech postaciach int, signed int i

unsigned int oraz w trzech rozmiarach: short int (short), int i long int (long).

– Typy zmiennoprzecinkowe – typ float (pojedyncza precyzja), double (podwójna

precyzja), long double. Dokładne znaczenie tych terminów zale˙zy od
implementacji.

– Typ void – typ pusty void oznacza brak warto´sci. ˙

Zadna zmienna nie mo˙ze by´c

typu void. Je˙zeli wynik funkcji jest typu void, to oznacza to, ˙ze funkcja nic nie
zwraca.

Marcin Szpyrka

J˛ezyki programowania – cz˛e´s´c II

9/26

Stałe numeryczne

Stałe numeryczne całkowite

Liczba całkowita składa si˛e z dowolnej liczby cyfr. Na pocz ˛

atku mo˙ze znajdowa´c si˛e

znak ’−’ lub ’+’. Je´sli stała całkowita mie´sci si˛e w zakresie int jest traktowana jako
int, je´sli nie mie´sci si˛e w zakresie int (lub na ko´ncu znajduje si˛e litera ’l’), a mie´sci
si˛e w zakresie long jest traktowana jako long. W innym przypadku jest traktowana
jako double.
Stałe bez znaku definiuje si˛e dopisuj ˛

ac na ko´ncu liter˛e ’u’: 12lu, 123u.

Stała ósemkowa zaczyna si˛e od znaku ’0’: 012, 0777
Stała szesnastkowa zaczyna si˛e od znaków ’0x’: 0xffff, 0x12fe. Cyfry 11-15 s ˛

a

zast˛epowane literami ’a’-’f’.

Stałe numeryczne zmiennoprzecinkowe

Stała zmiennoprzecinkowa składa si˛e z opcjonalnej cz˛e´sci całkowitej, znaku ’.’,
cz˛e´sci ułamkowej oraz opcjonalnej definicji wykładnika.
Cz˛e´s´c ułamkowa jest stał ˛

a całkowit ˛

a nie zawieraj ˛

aca znaków ’+’ ani ’−’.

Cz˛e´s´c okre´slaj ˛

aca wykładnik jest poprzedzona znakiem ’e’, po którym wyst˛epuje

liczba całkowita.
1.23, .23, 0.23, 1., 1.0, 1.2e10, .23e−15

Marcin Szpyrka

J˛ezyki programowania – cz˛e´s´c II

10/26

background image

Stałe znakowe i tekstowe

Stałe znakowe w j˛ezyku C++ składaj ˛

a si˛e z pojedynczych znaków zamkni˛etych w

apostrofy; np.: ’a’, ’0’. Stałe znakowe s ˛

a w rzeczywisto´sci stałymi całkowitymi. Ich

warto´s´c jest równa kodowi znaku na maszynie, na której kompilowany jest program.

Znak znajduj ˛

acy si˛e po znaku ’\’ jest traktowany w sposób specjalny, np.: \n (nowa

linia), \t (tabulator), \"(cudzysłów).

Stała tekstowa jest ci ˛

agiem znaków zamkni˛etych w cudzysłowy, np: ”To jest stała

tekstowa”. Stała tekstowa ko´nczy si˛e znakiem o kodzie 0 (zawiera zawsze o jeden
znak wi˛ecej). Stała tekstowa jest tablic ˛

a znaków zawieraj ˛

ac ˛

a odpowiedni ˛

a liczb˛e

elementów. Np. ”abcd” jest typu const char[5].
Biblioteka standardowa dostarcza typ string, udost˛epniaj ˛

acy wiele u˙zytecznych

operacji na napisach.

Marcin Szpyrka

J˛ezyki programowania – cz˛e´s´c II

11/26

Operatory

Symbol operatora

Działanie

+, −, ∗, /

operatory arytmetyczne

%

reszta z dzielenia

++, −−

inkrementacja i dekrementacja

!, &&, ||

operatory logiczne (not, and, or)

<, <=, >, >=, ==, ! =

operatory relacyjne

=, + =, − =, ∗ =, / =

przypisanie

Przy konstruowaniu wyra˙ze´n mo˙zna u˙zywa´c nawiasów okr ˛

agłych. Mog ˛

a one by´c

zagnie˙zd˙zone.

1

n

= 72 % 6;

2

x

= 67/12 + (32-

y

)/(2+11*

y

);

3

i

=

i

+ 1;

/* to samo co i++; */

4

(110 > 78) && !(

’a’

<

’b’

)

Marcin Szpyrka

J˛ezyki programowania – cz˛e´s´c II

12/26

background image

Instrukcja wyboru if

Instrukcja warunkowa umo˙zliwia wykonanie pewnej instrukcji w zale˙zno´sci od
warto´sci wyra˙zenia. Wszystkie warto´sci ró˙zne od 0 s ˛

a w j˛ezyku C traktowane jako

prawda, równe 0 jako fałsz. Wyra˙zenia logiczne s ˛

a liczone tylko do momentu, w

którym mo˙zna okre´sli´c jego warto´s´c.

1

if

(

wyra˙

zenie

)

instrukcja

;

2

if

(

wyra˙

zenie

)

instrukcja1

else

instrukcja2

;

W obu rozkazach instrukcja mo˙ze by´c instrukcj ˛

a zło˙zon ˛

a. W pierwszym przypadku

instrukcja wykonuje si˛e, je´sli warto´s´c wyra˙zenia jest ró˙zna od 0. W drugim
wykonuje si˛e jedna z dwóch podanych instrukcji (nigdy obie), pierwsza – gdy
warto´s´c wyra˙zenia jest ró˙zna od 0, druga – gdy warto´s´c wyra˙zenia jest równa 0.

Marcin Szpyrka

J˛ezyki programowania – cz˛e´s´c II

13/26

Wyznaczanie minimum trzech liczb

b < c

Start

Read(a,b,c)

a < b

Stop

Write(min)

a < c

min := a

min := c

min := b

min := c

yes

yes

yes

no

no

no

1

#include

<iostream>

2

using namespace

std

;

3

4

int

main

()

// minimum3liczb.cpp

5

{

6

float

a

,

b

,

c

,

min

;

7

cout

<<

"Podaj 3 liczby:\n"

;

8

cout

<<

"a = "

;

9

cin

>>

a

;

10

cout

<<

"b = "

;

11

cin

>>

b

;

12

cout

<<

"c = "

;

13

cin

>>

c

;

14

15

if

(

a

<

b

)

16

if

(

a

<

c

)

min

=

a

;

17

else

min

=

c

;

18

else

19

if

(

b

<

c

)

min

=

b

;

20

else

min

=

c

;

21

22

cout

<<

"Minimum: "

23

<<

min

<<

endl

;

24

}

Marcin Szpyrka

J˛ezyki programowania – cz˛e´s´c II

14/26

background image

Rozwi ˛

azywanie równania kwadratowego

1

#include

<iostream>

2

#include

<cmath>

3

using namespace

std

;

4

5

int

main

()

// trojmian.cpp (trojmian2.cpp)

6

{

7

float

a

,

b

,

c

,

delta

,

x1

,

x2

;

8

9

cout

<<

"Podaj współczynniki trójmianu\n"

;

10

cout

<<

"a = "

;

11

cin

>>

a

;

12

cout

<<

"b = "

;

13

cin

>>

b

;

14

cout

<<

"c = "

;

15

cin

>>

c

;

16

delta

=

b

*

b

- 4.0 *

a

*

c

;

17

if

(

delta

>= 0.0)

18

{

19

x1

= (-

b

-

sqrt

(

delta

))/(2.0 *

a

);

20

x2

= (-

b

+

sqrt

(

delta

))/(2.0 *

a

);

21

cout

<<

"Pierwiastkami s ˛

a liczby "

<<

x1

<<

", "

<<

x2

<<

endl

;

22

}

23

else

24

{

25

cout

<<

"Trójmian nie ma pierwiastków rzeczywistych\n"

;

26

}

27

}

Marcin Szpyrka

J˛ezyki programowania – cz˛e´s´c II

15/26

Instrukcje wyboru switch

Instrukcja switch słu˙zy do wybierania jednego przypadku z wielu. Instrukcja case
okre´sla punkt wej´scia do ci ˛

agu nast˛epnych instrukcji. Program wykonuje si˛e od

instrukcji po tym case, dla którego warto´s´c wyra˙zenia stałego jest równa warto´sci
wyra˙zenia w instrukcji switch. (Wyra˙zenie stałe to takie, którego warto´s´c mo˙ze by´c
obliczona w momencie kompilacji.) Chc ˛

ac wyj´s´c z instrukcji switch nale˙zy u˙zy´c

rozkazu break. Instrukcja default okre´sla punkt wej´scia w przypadku, gdy wyra˙zenie
nie zostało dopasowane do ˙zadnego wyra˙zenia stałego.

switch

(

wyra˙

zenie

)

{ case

przypadek1

:

instrukcje1

;

case

przypadek2

:

instrukcje2

;

...
default

:

instrukcje

; }

1

switch

(

punkty

)

// int punkty, wynik;

2

{

3

case

10 : ;

4

case

9

:

wynik

= 5; break;

5

case

8

: ;

6

case

7

:

wynik

= 4; break;

7

case

6

:

wynik

= 3; break;

8

default

:

wynik

= 2;

9

}

Marcin Szpyrka

J˛ezyki programowania – cz˛e´s´c II

16/26

background image

Wyra˙zenie warunkowe

W j˛ezyku C++ u˙zycie instrukcji wyboru

if

mo˙zna w wielu przypadkach zast ˛

api´c

wyra˙zeniem warunkowym.

if

(

a

>

b

)

z

=

a

;

else

z

=

b

;

z

= (

a

>

b

) ?

a

:

b

Wyra˙zenie warunkowe jest zapisywane za pomoc ˛

a trzyargumentowego operatora

?:

i ma ogóln ˛

a posta´c:

(

w1

) ?

w2

:

w3

W wyra˙zeniu warunkowym najpierw jest obliczana warto´s´c wyra˙zenia

w1

. Je´sli jego

warto´s´c jest ró˙zna od zera (prawda), to zostanie obliczona warto´s´c wyra˙zenia

w2

i

stanie si˛e ona warto´sci ˛

a całego wyra˙zenia warunkowego. W przeciwnym przypadku

warto´sci ˛

a wynikow ˛

a b˛edzie warto´s´c wyra˙zenia

w3

.

Marcin Szpyrka

J˛ezyki programowania – cz˛e´s´c II

17/26

P˛etle while i do while

Instrukcja while

Rozkaz umieszczony w p˛etli while (mo˙ze to by´c instrukcja zło˙zona!) jest powtarzany
do momentu, gdy warto´s´c wyra˙zenia b˛edzie równa 0. W przypadku, gdy warto´s´c
wyra˙zenia od razu jest równa 0, instrukcja nie wykona si˛e ani raz. Je´sli wyra˙zenie nie
przyjmie warto´sci 0, instrukcja b˛edzie si˛e wykonywa´c niesko´nczon ˛

a ilo´s´c razy.

while

(

wyra˙

zenie

)

instrukcja

;

Instrukcja do while

P˛etla do while jest podobna do p˛etli while, z t ˛

a ró˙znic ˛

a, ˙ze warunek kontynuacji

(wyra˙zenie) jest sprawdzany po wykonaniu instrukcji, tzn., ˙ze zawarto´s´c p˛etli
wykona si˛e co najmniej raz.

do

instrukcja

while

(

wyra˙

zenie

);

Marcin Szpyrka

J˛ezyki programowania – cz˛e´s´c II

18/26

background image

Wyznaczanie silni

Start

i < n

Stop

Read(n)

i := 1;
s := 1;

Write(s)

no

yes

i := i + 1;
s := s * i;

1

#include

<iostream>

2

using namespace

std

;

3

4

int

main

()

// silnia.cpp

5

{

6

int

s

,

n

,

i

;

7

8

cout

<<

"Prosz˛

e poda´

c l. nat.: "

;

9

cin

>>

n

;

10

i

= 1;

11

s

= 1;

12

13

while

(

i

<

n

)

14

{

15

i

++;

16

s

*=

i

;

17

}

18

19

cout

<<

"Silnia: "

<<

s

<<

endl

;

20

}

Marcin Szpyrka

J˛ezyki programowania – cz˛e´s´c II

19/26

Wyznaczanie maximum ci ˛

agu liczb dodatnich

1

#include

<iostream>

2

using namespace

std

;

3

4

int

main

()

// maximum.cpp

5

{

6

float

max

,

a

;

7

cout

<<

"Podaj liczby, 0 - koniec!\n"

;

8

max

= 0.0;

9

10

do

11

{

12

cout

<<

"a = "

;

13

cin

>>

a

;

14

if

(

a

>

max

)

max

=

a

;

15

}

16

while

(

a

);

17

18

cout

<<

"Maximum: "

<<

max

<<

endl

;

19

return

0;

20

}

Marcin Szpyrka

J˛ezyki programowania – cz˛e´s´c II

20/26

background image

Wyznaczanie ´sredniej ci ˛

agu liczb ró˙znych od zera

1

#include

<iostream>

2

using namespace

std

;

3

4

int

main

()

// srednia.cpp

5

{

6

float

suma

,

a

;

7

int

i

;

8

cout

<<

"Podaj liczby, 0 - koniec!\n"

;

9

suma

= 0.0;

10

i

= 0;

11

12

do

13

{

14

cout

<<

"a = "

;

15

cin

>>

a

;

16

if

(

a

)

17

{

18

suma

+=

a

;

19

i

++;

20

}

21

}

22

while

(

a

);

23

24

cout

<<

Srednia: "

<<

suma

/

i

<<

endl

;

25

}

Marcin Szpyrka

J˛ezyki programowania – cz˛e´s´c II

21/26

Instrukcja for

Instrukcja for

for

(

instr_ini

;

warunek

;

instr_krok

)

instrukcja

;

Wszystkie wyra˙zenia s ˛

a opcjonalne. instr_ini jest wykonana przed wej´sciem do p˛etli

(tylko raz!). Nast˛epnie oblicza si˛e warunek i sprawdza czy jest on ró˙zny od 0. Je´sli
tak, wykonywana jest instrukcja i instrukcja instr_krok. Nast˛epnie sprawdzana jest
warto´s´c warunku itd. P˛etla jest wykonywana do momentu, gdy warunek b˛edzie
równy 0. Je´sli wszystkie trzy wyra˙zenia w p˛etli for s ˛

a puste – p˛etla postaci: for(;;)

instrukcja;, to jest to bezwarunkowa p˛etla niesko´nczona. Instrukcja w p˛etli for mo˙ze
nie wykona´c si˛e ani razu, je´sli warunek b˛edzie od razu równy 0. P˛etla for mo˙ze by´c
p˛etl ˛

a niesko´nczon ˛

a, je´sli warunek nigdy nie przyjmie warto´sci 0.

1

int

main

()

// silnia-for.cpp (silnia-for2.cpp)

2

{

3

int

s

,

n

,

i

;

4

cout

<<

"Podaj liczb˛

e naturaln ˛

a, n = "

;

5

cin

>>

n

;

6

s

= 1;

7

for

(

i

= 2;

i

<=

n

;

i

++)

s

*=

i

;

8

cout

<<

"Silnia n: "

<<

s

<<

endl

;

9

}

Marcin Szpyrka

J˛ezyki programowania – cz˛e´s´c II

22/26

background image

Algorytm Euklidesa (NWD)

Start

Stop

a < b

yes

no

yes

no

Read(a,b)

Write(a)

a = b

a := a − b

b := b − a

1

#include

<iostream>

2

using namespace

std

;

3

4

int

main

()

// nwd.cpp

5

{

6

int

a

,

b

;

7

cout

<<

"Podaj 2 l. naturalne: "

;

8

cin

>>

a

>>

b

;

9

10

while

(

a

!=

b

)

11

{

12

if

(

a

<

b

)

b

-=

a

;

13

else

a

-=

b

;

14

}

15

16

cout

<<

"NWD: "

<<

a

<<

endl

;

17

}

Marcin Szpyrka

J˛ezyki programowania – cz˛e´s´c II

23/26

Instrukcja break

Instrukcja break umieszczona wewn ˛

atrz p˛etli (for, while, do..while) powoduje

przerwanie wykonywania i wyj´scie na zewn ˛

atrz p˛etli, w której została wywołana. W

przypadku p˛etli zagnie˙zd˙zonych, nast˛epuje wyj´scie do p˛etli o jeden poziom wy˙zej.

1

#include

<iostream>

2

using namespace

std

;

3

4

int

main

()

5

{

6

int

n

,

i

;

7

8

cout

<<

"Podaj liczb˛

e naturaln ˛

a, n = "

;

9

cin

>>

n

;

10

11

for

(

i

= 2;

i

<

n

;

i

++)

12

{

13

if

(

n

%

i

== 0) break;

14

}

15

16

if

(

i

<

n

)

cout

<<

"Znaleziono podzielnik "

<<

i

<<

endl

;

17

else

cout

<<

n

<<

" jest liczb ˛

a pierwsz ˛

a\n"

;

18

}

Marcin Szpyrka

J˛ezyki programowania – cz˛e´s´c II

24/26

background image

Instrukcja continue

Instrukcja continue umieszczona wewn ˛

atrz p˛etli (for, while, do..while) powoduje

przerwanie wykonywania danego obiegu p˛etli i rozpocz˛ecie kolejnego (sama p˛etla
nie jest przerywana).

1

int

main

()

2

{

3

int

n

,

i

,

j

;

4

cout

<<

"Podaj liczb˛

e naturaln ˛

a, n = "

;

5

cin

>>

n

;

6

i

=

n

+ 1;

7

while

(1)

8

{

9

for

(

j

= 2;

j

<

i

;

j

++) if (

i

%

j

== 0) break;

10

if

(

j

<

i

)

/* tzn. je´

sli znaleziono podzielnik, */

11

{

12

i

++;

13

continue

;

/* zaczynamy kolejny przebieg p˛

etli while */

14

}

15

else break

;

16

}

17

cout

<<

"Najmniejsza liczba pierwsza wi˛

eksza od "

18

<<

n

<<

" to "

<<

i

<<

endl

;

19

}

Marcin Szpyrka

J˛ezyki programowania – cz˛e´s´c II

25/26

Wyznaczanie pierwiastka kwadratowego

Kolejne przybli˙zenia wyznaczamy ze wzoru: x

i

+1

=

1
2

(x

i

+

a

x

i

). Mo˙zna przyj ˛

a´c

x

1

= a. Ko´nczymy obliczenia, gdy |x

i

+1

− x

i

| 6 ε, gdzie ε oznacza zadan ˛a

dokładno´s´c.

1

#include

<iostream>

2

#include

<math.h>

3

using namespace

std

;

4

5

int

main

()

6

{

7

const float

EPS

= 0.01;

8

float

x1

,

x2

,

a

;

9

cout

<<

"Podaj liczb˛

e rzeczywist ˛

a: "

;

10

cin

>>

a

;

11

x1

=

a

;

12

x2

= 0.5 * (

x1

+

a

/

x1

);

13

14

while

(

fabs

(

x2

-

x1

) >

EPS

)

15

{

16

x1

=

x2

;

17

x2

= 0.5 * (

x1

+

a

/

x1

);

18

}

19

cout

<<

"Pierwiastek: "

<<

x2

<<

endl

;

20

}

Marcin Szpyrka

J˛ezyki programowania – cz˛e´s´c II

26/26


Wyszukiwarka

Podobne podstrony:
IWP JP2 Lab2 Struktury
Multilayer Composite Print 2
5 Maerchen PRINT
jp5 print
jp2
Multilayer Composite Print (3)
pcb pdf, Top Paste Mask Print
Multilayer Composite Print
Multilayer Composite Print
l16 print
Print your own organs[1]
tpd print screeny
2012 AMI wyklad print cz1
6023 print at home original id Nieznany
print (10)
Litania JP2 Dziwactw ciąg?lszy
Jasenovac – katolicki Oswiecim a JP2, ஜஜCiemna strona historii chrześcijaństwa

więcej podobnych podstron