1
Informatyka 1
Informatyka 1
zaj
zaj
ę
ę
cia nr 6
cia nr 6
Elektrotechnika, semestr II
Elektrotechnika, semestr II
rok akademicki 2008/2009
rok akademicki 2008/2009
mgr in
mgr in
ż
ż
. Pawe
. Pawe
ł
ł
Myszkowski
Myszkowski
Plan dzisiejszych zaj
Plan dzisiejszych zaj
ęć
ęć
1.
1.
Instrukcja wyboru
Instrukcja wyboru
2.
2.
Funkcje matematyczne z biblioteki <
Funkcje matematyczne z biblioteki <
math.h
math.h
>
>
3.
3.
Generowanie liczb losowych
Generowanie liczb losowych
2
Instrukcja wyboru
Instrukcja wyboru
switch
switch
:
:
-
-
realizuje to samo, co zagnie
realizuje to samo, co zagnie
ż
ż
d
d
ż
ż
ona
ona
instrukcja warunkowa
instrukcja warunkowa
if
if
.
.
Zastosowanie instrukcji
Zastosowanie instrukcji
switch
switch
jest
jest
znacznie bardziej czytelne ni
znacznie bardziej czytelne ni
ż
ż
u
u
ż
ż
ycie
ycie
zagnie
zagnie
ż
ż
d
d
ż
ż
onej instrukcji
onej instrukcji
if
if
.
.
1. Instrukcja wyboru
1. Instrukcja wyboru
Schemat instrukcji wyboru:
Schemat instrukcji wyboru:
switch
switch
(wyra
(wyra
ż
ż
enie ca
enie ca
ł
ł
kowite)
kowite)
{
{
case
case
wariant_1:
wariant_1:
instrukcja;
instrukcja;
…
…
lub blok instrukcji
lub blok instrukcji
break
break
;
;
//koniecznie na ko
//koniecznie na ko
ń
ń
cu wariantu
cu wariantu
case
case
wariant_2:
wariant_2:
instrukcja;
instrukcja;
…
…
lub blok instrukcji
lub blok instrukcji
break
break
;
;
//koniecznie na ko
//koniecznie na ko
ń
ń
cu wariantu
cu wariantu
……………………………………………
……………………………………………
.
.
//wariant
//wariant
ó
ó
w mo
w mo
ż
ż
e by
e by
ć
ć
wi
wi
ę
ę
cej
cej
default
default
:
:
instrukcja;
instrukcja;
…
…
lub blok instrukcji
lub blok instrukcji
break
break
;
;
//koniecznie na ko
//koniecznie na ko
ń
ń
cu wariantu
cu wariantu
}
}
1. Instrukcja wyboru
1. Instrukcja wyboru
3
Wyra
Wyra
ż
ż
enie ca
enie ca
ł
ł
kowite
kowite
jest zazwyczaj pojedyncz
jest zazwyczaj pojedyncz
ą
ą
zmienn
zmienn
ą
ą
typu
typu
char
char
lub
lub
int
int
. To nie jest warunek! Nie jest to
. To nie jest warunek! Nie jest to
wyra
wyra
ż
ż
enie relacyjne ani logiczne!
enie relacyjne ani logiczne!
Po s
Po s
ł
ł
owie kluczowym
owie kluczowym
case
case
wyst
wyst
ę
ę
puj
puj
ą
ą
warto
warto
ś
ś
ci, kt
ci, kt
ó
ó
rych
rych
si
si
ę
ę
spodziewamy i kt
spodziewamy i kt
ó
ó
rych wyst
rych wyst
ą
ą
pienie w programie
pienie w programie
chcemy obs
chcemy obs
ł
ł
u
u
ż
ż
y
y
ć
ć
. Komenda
. Komenda
break
break
oznacza wyj
oznacza wyj
ś
ś
cie z
cie z
instrukcji wyboru.
instrukcji wyboru.
Sekcja
Sekcja
default
default
obs
obs
ł
ł
uguje sytuacj
uguje sytuacj
ę
ę
, gdy wyra
, gdy wyra
ż
ż
enie nie
enie nie
przyjmie
przyjmie
ż
ż
adnej ze spodziewanych warto
adnej ze spodziewanych warto
ś
ś
ci
ci
(
(
default
default
/ang./ = domy
/ang./ = domy
ś
ś
lnie).
lnie).
1. Instrukcja wyboru
1. Instrukcja wyboru
Przyk
Przyk
ł
ł
ad:
ad:
Program komentuj
Program komentuj
ą
ą
cy wpisan
cy wpisan
ą
ą
liczb
liczb
ę
ę
.
.
#
#
include
include
<
<
stdio.h
stdio.h
>
>
int
int
main
main
()
()
{
{
int
int
liczba;
liczba;
printf("Podaj
printf("Podaj
liczb
liczb
ę
ę
ca
ca
ł
ł
kowit
kowit
ą
ą
A = ");
A = ");
scanf("%d
scanf("%d
", &liczba);
", &liczba);
switch
switch
(liczba
(liczba
)
)
{
{
case
case
0:
0:
printf("Wpisa
printf("Wpisa
ł
ł
e
e
ś
ś
zero");
zero");
break
break
;
;
case
case
-
-
5:
5:
printf("Wpisa
printf("Wpisa
ł
ł
e
e
ś
ś
minus
minus
pi
pi
ęć
ęć
");
");
break
break
;
;
case
case
7:
7:
printf("Poda
printf("Poda
ł
ł
e
e
ś
ś
liczb
liczb
ę
ę
siedem");
siedem");
break
break
;
;
default
default
:
:
printf("Poda
printf("Poda
ł
ł
e
e
ś
ś
inn
inn
ą
ą
liczb
liczb
ę
ę
ni
ni
ż
ż
si
si
ę
ę
spodziewa
spodziewa
ł
ł
em");
em");
break
break
;
;
}
}
}
}
1. Instrukcja wyboru
1. Instrukcja wyboru
4
Ten sam efekt za pomoc
Ten sam efekt za pomoc
ą
ą
zagnie
zagnie
ż
ż
d
d
ż
ż
onej instrukcji
onej instrukcji
if
if
:
:
//pomijam wprowadzenie, wczytywanie danych, itp.
//pomijam wprowadzenie, wczytywanie danych, itp.
if
if
(liczba==0)
(liczba==0)
printf("Wpisa
printf("Wpisa
ł
ł
e
e
ś
ś
zero");
zero");
else
else
if
if
(liczba==
(liczba==
-
-
5)
5)
printf("Wpisa
printf("Wpisa
ł
ł
e
e
ś
ś
minus pi
minus pi
ęć
ęć
");
");
else
else
if
if
(liczba==7)
(liczba==7)
printf("Poda
printf("Poda
ł
ł
e
e
ś
ś
liczb
liczb
ę
ę
siedem");
siedem");
else
else
printf("Poda
printf("Poda
ł
ł
e
e
ś
ś
inn
inn
ą
ą
liczb
liczb
ę
ę
ni
ni
ż
ż
si
si
ę
ę
spodziewa
spodziewa
ł
ł
em");
em");
Kt
Kt
ó
ó
ra posta
ra posta
ć
ć
jest bardziej czytelna?
jest bardziej czytelna?
1. Instrukcja wyboru
1. Instrukcja wyboru
Przyk
Przyk
ł
ł
ady do zrobienia z wykorzystaniem
ady do zrobienia z wykorzystaniem
switch
switch
:
:
1)
1)
Do programu badaj
Do programu badaj
ą
ą
cego przest
cego przest
ę
ę
pno
pno
ść
ść
roku
roku
(z poprzednich zaj
(z poprzednich zaj
ęć
ęć
) dodaj menu:
) dodaj menu:
1
1
–
–
wy
wy
ś
ś
wietl ponownie ekran powitalny,
wietl ponownie ekran powitalny,
2
2
–
–
zbadaj, czy rok jest przest
zbadaj, czy rok jest przest
ę
ę
pny,
pny,
3
3
–
–
wy
wy
ś
ś
wietl plansz
wietl plansz
ę
ę
ko
ko
ń
ń
cow
cow
ą
ą
.
.
Program ma by
Program ma by
ć
ć
oparty na funkcjach!
oparty na funkcjach!
2)
2)
Napisz prosty kalkulator, pobieraj
Napisz prosty kalkulator, pobieraj
ą
ą
cy z klawiatury
cy z klawiatury
dwie liczby oraz znak dzia
dwie liczby oraz znak dzia
ł
ł
ania i realizuj
ania i realizuj
ą
ą
cy
cy
dodawanie, odejmowanie, mno
dodawanie, odejmowanie, mno
ż
ż
enie i dzielenie.
enie i dzielenie.
1. Instrukcja wyboru
1. Instrukcja wyboru
5
sin(x
sin(x
)
)
–
–
sinus z
sinus z
x
x
cos(x
cos(x
)
)
–
–
cosinus z
cosinus z
x
x
tan(x
tan(x
)
)
–
–
tangens z
tangens z
x
x
asin(x
asin(x
)
)
–
–
arcus
arcus
sinus z
sinus z
x
x
acos(x
acos(x
)
)
–
–
arcus
arcus
cosinus z
cosinus z
x
x
atan(x
atan(x
)
)
–
–
arcus
arcus
tangens z
tangens z
x
x
exp(x
exp(x
)
)
–
–
eksponent z
eksponent z
x
x
(funkcja wyk
(funkcja wyk
ł
ł
adnicza)
adnicza)
log(x
log(x
)
)
–
–
logarytm naturalny z
logarytm naturalny z
x
x
log10(x)
log10(x)
–
–
logarytm dziesi
logarytm dziesi
ę
ę
tny z
tny z
x
x
pow(x,y
pow(x,y
)
)
–
–
x
x
do pot
do pot
ę
ę
gi
gi
y
y
sqrt(x
sqrt(x
)
)
–
–
pierwiastek kwadratowy z
pierwiastek kwadratowy z
x
x
abs(x
abs(x
)
)
,
,
fabs(x
fabs(x
)
)
–
–
warto
warto
ść
ść
bezwzgl
bezwzgl
ę
ę
dna z
dna z
x
x
2. Funkcje matematyczne z <
2. Funkcje matematyczne z <
math.h
math.h
>
>
Przyk
Przyk
ł
ł
ad do zrobienia:
ad do zrobienia:
Do kalkulatora dodaj pot
Do kalkulatora dodaj pot
ę
ę
gowanie
gowanie
(znak '^').
(znak '^').
2. Funkcje matematyczne z <
2. Funkcje matematyczne z <
math.h
math.h
>
>
6
srand(unsigned
srand(unsigned
int
int
starter
starter
)
)
–
–
funkcja
funkcja
inicjuj
inicjuj
ą
ą
ca generator liczb pseudolosowych
ca generator liczb pseudolosowych
dan
dan
ą
ą
warto
warto
ś
ś
ci
ci
ą
ą
pocz
pocz
ą
ą
tkow
tkow
ą
ą
srand(time(0))
srand(time(0))
–
–
w ten spos
w ten spos
ó
ó
b otrzymamy za
b otrzymamy za
ka
ka
ż
ż
dym razem inn
dym razem inn
ą
ą
liczb
liczb
ę
ę
rand()
rand()
–
–
losuje liczb
losuje liczb
ę
ę
z zakresu
z zakresu
unsigned
unsigned
int
int
,
,
czyli [0,65535]
czyli [0,65535]
rand() %
rand() %
n
n
–
–
zaw
zaw
ęż
ęż
a przedzia
a przedzia
ł
ł
losowanych liczb
losowanych liczb
do [0,
do [0,
n
n
-
-
1]
1]
3. Generowanie liczb losowych
3. Generowanie liczb losowych
Przyk
Przyk
ł
ł
ad zastosowania funkcji losuj
ad zastosowania funkcji losuj
ą
ą
cych:
cych:
int
int
main
main
()
()
{
{
int
int
i;
i;
srand(time(0));
srand(time(0));
//"wymieszaj" liczby
//"wymieszaj" liczby
i = rand() % 20;
i = rand() % 20;
//losuj z przedzia
//losuj z przedzia
ł
ł
u [0,19]
u [0,19]
printf("Wylosowana
printf("Wylosowana
liczba: %
liczba: %
d",i
d",i
);
);
system("PAUSE
system("PAUSE
");
");
return 0;
return 0;
}
}
3. Generowanie liczb losowych
3. Generowanie liczb losowych
7
Dzi
Dzi
ę
ę
kuj
kuj
ę
ę
za uwag
za uwag
ę
ę