ZA
A
JĘCI
1
1
1
WPROWADZENIE DO INFORMATYKI II
ZASADY TWORZENIA ALGORYTMÓW
Z
Z
A
A
S
S
A
A
D
D
Y
Y
T
T
W
W
O
O
R
R
Z
Z
E
E
N
N
I
I
A
A
A
A
L
L
G
G
O
O
R
R
Y
Y
T
T
M
M
Ó
Ó
W
W
I PO
O
DSTAWY OBSŁUGI MAT
T
LAB
I
I
P
P
OD
D
S
S
T
T
A
A
W
W
Y
Y
O
O
B
B
S
S
Ł
Ł
U
U
G
G
I
I
M
M
A
A
TL
L
A
A
B
B
ALGORYTMY
algorytm
=z def. przepis prowadzący do rozwiązania zadania, problemu. W przepisie
tym podaje się opis czynności, które trzeba wykonać, oraz dane, dla których algorytm
będzie określony.
Rodzaje algorytmów:
a.
Iteracyjne - rodzaj algorytmu i programu, w których wielokrotnie wykonuje się
pewne instrukcje, dopóki nie zostanie spełniony określony warunek,
b.
Rekurencyjne - takie procedury, które w swojej definicji posiadają wywołanie
samej siebie,
c.
Sekwencyjne - instrukcje wykonywane są w porządku, w jakim zostały wprowa-
dzone.
Skrzynki START i STOP wskazują początek i koniec
każdego algorytmu. Ze skrzynki START wychodzi
tylko jedna droga, do skrzynki STOP wchodzi, co
najmniej jedno połączenie.
W skrzynce instrukcyjnej umieszcza się polecenia do
wykonania - instrukcje - podstawienie, obliczenie,
wprowadzenie wartości.
W skrzynce warunkowej umieszcza się warunek, któ-
ry decyduje o wyborze dalszej drogi postępowania.
Ze skrzynki wychodzą dwa połączenia: TAK (wybie-
rane, gdy warunek jest spełniony), NIE, (gdy waru-
nek nie jest spełniony).
W skrzynce wejścia / wyjścia umieszcza się wprowa-
dzane dane lub wyprowadzane wyniki. Ze skrzynki
wychodzi tylko jedno połączenie.
W algorytmie tym wykorzystujemy skrzynkę wa-
runkową, ponieważ mamy do czynienia z sytu-
acją, gdy tok dalszego postępowania zależy od
dokonanego wyboru (dokładnie: zależy od pogo-
dy).
Piotr Misiura Przykłady algorytmów w fizyce
1
Schemat blokowy algorytmy sekwencyjnego
Schemat blokowy algorytmu warunkowego
Piotr Misiura
Przykłady algorytmów w fizyce
2
Schemat blokowy algorytmu osiągnięcia zamierzonego celu
Schemat blokowy:
Piotr Misiura
Przykłady algorytmów w fizyce
3
Zbuduj algorytm, za pomocą, którego można obliczyć drugą i trzecią potęgę danej
liczby.
BUDOWA ALGORYTMU:
START
- podaj liczbę a,
- oblicz kwadrat liczby a,
- oblicz sześcian liczby a,
- podaj wartość kwadratu
liczby a,
- podaj sześcian liczby a.
STOP
Piotr Misiura
Przykłady algorytmów w fizyce
2. Zbuduj algorytm służący do rozwiązania równania typu ax + b = 0
BUDOWA ALGORYTMU:
START
- podaj wartość współczyn-
nika a,
- podaj wartość współczyn-
nika b,
- jeżeli a = 0, to sprawdź b,
- jeżeli b = 0, to napisz, że
jest to równanie tożsamo-
ściowe
(nieskończenie wiele roz-
wiązań),
- jeżeli b<>0, to napisz, że
jest to
równanie sprzeczne
(nie ma rozwiązań),
- jeżeli a<>0, to oblicz x
- napisz rozwiązanie równa-
nia x:=
STOP
Piotr Misiura
Przykłady algorytmów w fizyce
4
BUDOWA ALGORYTMU:
START
1. Zmierz masę ciała stałego m=
2. Zmierz za pomocą menzurki obję-
tość ciałaV=
3. Oblicz gęstość ciała
4. Podaj gęstość ciała (g/cm3) r:=
STOP
Piotr Misiura
Przykłady algorytmów w fizyce
ZADANIA DO WYKONANIA
1. Zapisz
algorytm
rozwiązywania równania typu ax + b = c
2. Dane
są długości trzech odcinków. Zbadaj, czy można zbudować z nich trój-
kąt.
3. Sprawdź, czy trójkąt o bokach a, b, c jest trójkątem prostokątnym.
4. Podaj algorytm obliczania pola figur płaskich.
5. Podaj algorytm obliczający pole powierzchni całkowitej i objętość brył.
6. Przedstaw
za
pomocą algorytmu sposób na obliczanie gęstości ciała stałego.
7. Zapisz za pomocą algorytmu sposób na rozpoznawanie rodzaju ruchu ciała ze
względu na zmianę prędkości. i zapisz powyższy algorytm za pomocą sche-
matu blokowego.
8. Zapisz za pomocą algorytmu sposób obliczania ciężaru ciała na Ziemi, Księ-
życu, Marsie i Wenus.
9. Zapisz za pomocą algorytmu sposób obliczania przyspieszenia ciała, gdy
znamy przyrost prędkości ciała oraz czas, w którym ten przyrost nastąpił.
10. Zapisz algorytm obliczania drogi w ruchu:
a) jednostajnym po linii prostej,
b) jednostajnym po okręgu,
c) jednostajnie przyspieszonym.
11.
Zapisz za pomocą algorytmu sposób obliczania przyspieszenia ciała, gdy
znamy wartość siły wypadkowej działającej na ciało oraz masę tego ciała. (II
zasada dynamiki).
12.
Zapisz algorytm obliczania pracy, mocy, energii potencjalnej i energii kine-
tycznej ciała.
Przygotowano na podstawie: Piotr Misiura Przykłady algorytmów w fizyce
5
PODSTAWY OBSŁUGI PROGRAMU MATLAB
Uwagi:
• Znak (=) jest oznaczeniem przypisania, a nie jest znakiem równości. Pro-
gram ma, więc cechy sekwencyjności instrukcji (przypisanie innego wyra-
żenia tej samej zmiennej zastępuje przypisanie poprzednie).
• Średnik (;) na końcu wyrażenia oznacza, że wynik nie będzie wyświetlany
na ekranie, ale polecenie jest wykonane. Po średniku w tej samej linii moż-
na umieszczać następne instrukcje.
• Kontynuacja instrukcji w następnej linii zachodzi, jeżeli dana linia instruk-
cji jest zakończona wielokropkiem (...).
• Komentarz umieszcza się po znaku procentu (%) w osobnej linii lub za i
strukcją.
n-
• Litery duże i małe są standardowo rozróżniane w nazwach zmiennych, np.
Alpha i alpha to dwie różne zmienne. Rozróżnianie dużych i małych liter
można przełączać stosując polecenia:
» casesen off -
wstrzymanie rozróżniania,
» casesen on -
wznowienie rozróżniania,
»casesen -
przełączanie statusu
Reedycji tekstu w linii dokonuje się za pomocą klawiszy strzałek oraz klawiszy
specjalnych:
↑, Ctrl-P -
przywołanie poprzedniej linii,
↑, Ctrl-N -
przywołanie następnej linii,
← , Ctrl-B -
przesunięcie w lewo,
→, Ctrl-F -
przesunięcie w prawo,
Ctrl-,
←, →
przesunięcie o jeden wyraz w lewo lub w prawo,
Home. Ctrl-A - przesunięcie do początku linii,
End. Ctrl-E -
przesunięcie na koniec linii,
Esc -
czyszczenie linii,
Del. Ctrl-D -
usunięcie znaku nad kursorem,
6
Backspace -
usunięcie znaku na lewo od kursora,
Ctrl-K -
zmazanie do końca linii od pozycji kursora.
Grupę wartości specjalnych, do których należy ans stanowią:
eps -
dystans pomiędzy dwiema kolejnymi liczbami zmiennoprze-
cinkowymi; dla komputerów osobistych i stacji roboczych wy-
nosi w przybliżeniu eps=2,22.10
-16
. Tej zmiennej może być
przypisana przez użytkownika inna wartość, włączając zero.
pi -
π
= 3,1415926…
inf -
∞ (wartość nieskończona),
NaN -
wartość nieokreślona (ang. Not a Number) pojawiająca się np.
w wyniku dzielenia przez zero,
date
-
bieżąca data podana tekstowo.
clock -
bieżąca data i czas podane cyfrowo,
flops -
licznik operacji zmiennopozycyjnych (pojawia się na końcu
obliczeń), podanie tej komendy powoduje wyświetlenie liczby
tych operacji, co pozwala zorientować się o jakości algorytmu
numerycznego (przed uruchomieniem algorytmu należy jednak
wyzerować licznik: » flops(0)),
nargin -
liczba argumentów wejściowych funkcji (używa się jej zwykle
w plikach funkcyjnych w instrukcjach warunkowych, głównie
w celu stworzenia molliwości podawania nie wszystkich argu-
mentów wejściowych funkcji - argumenty opcjonalne).
nargout -
liczba argumentów wyjściowych funkcji (używana w instruk-
cjach warunkowych wewnątrz plików funkcyjnych głównie w
celu stworzenia możliwości zwracania przez funkcję nie
wszystkich wartości
Elementy macierzy wprowadza się wierszami oddzielonymi średnikami pomiędzy
dwoma nawiasami kwadratowymi []. Zamiast średnika na końcu wiersza można
użyć klawisza <Enter>, który w tym przypadku działa jako separator, gdyż kon-
7
strukcja pełnego wyrażenia nie jest zakończona (zakończeniem jest nawias] ).
Elementy w wierszu można oddzielać spacją lub przecinkiem.
» A = [10 sin(alpha) cos(alpha)
<Enter>
1 20 4; 4, 6, 30]
<Enter>
A =
10.0000 0.8660 0.5000 1.0000 20.0000 4.0000 4.0000 6.0000 30.0000
Zdefiniowano macierz B i pomnożono ją przez poprzednio zdefiniowaną macierz
A , otrzymując macierz C. Liczba kolumn macierzy B jest równa liczbie wierszy
macierzy A.
» B = [2 4 6];
% Wektor wierszowy
» C = B*A
C=
48.0000 117.7321 197.0000
Wykonanie mnożenia odwrotnego daje komunikat o błędzie:
» A*B
Error using = * Inner matrix dimensions must agree.
Na macierzach można wykonywać różne operacje, np. wyznaczenie diagonalnej z
macierzy A:
» diag(A)
ans =
10 20 30
Podczas sesji można zawsze przywołać rozbudowane instrukcje pomocy
oferowane przez MATLAB. Można wywołać pomoc ogólną w postaci menu wy-
boru poleceniem:
» help
albo zażądać pomocy odnoszącej się do konkretnej instrukcji, funkcji lub komen-
dy podając jej nazwę
» help nazwa .
Przy zrozumieniu działania niektórych instrukcji może być pomocne wywołanie
» demo
8
Użyteczna jest możliwość wyświetlania informacji co jeden ekran
» more on - włączenie,
» more off - wyłączenie.
Instrukcją tą można poprzedzić help dla zbyt "długich" informacji.
Wstrzymanie pracy MATLAB-a na n sekund może być dokonane instrukcją:
» pause(n)
lub na czas nieokreślony, aż do naciśnięcia dowolnego klawisza, podając:
» pause
Liczby zespolone
Użycie liczb zespolonych nie wymaga deklaracji typu zmiennych, a wprowadza
się je według wzorca:
» z = a + b*i
lub
» z = a + b*j
gdzie i oraz j oznaczają standardowo predefiniowaną w programie jednostkę
urojoną. Jeżeli litery te zostaną przyporządkowane innym zmiennym, to nową
jednostkę urojoną można zdefiniować jako:
» ii = sqrt(-1)
Do wykonywania operacji na liczbach zespolonych służą funkcje standardowe
podane poniżej dla liczby zespolonej oznaczonej przez z :
» real (z) - część rzeczywista liczby z,
» imag (z) - część urojona,
» conj (z) - liczba zespolona sprzężona do z,
» angle(z) - argument liczby zespolonej,
» abs (z) - moduł liczby zespolonej.
W poniższj sesji podano kilka przykładów użycia liczb zespolonych.
» a = 1 + 6*i
a =
1.0000+6.0000i
9
» cos(a)
ans =
1.0899e+002-1.6974e+002i
» b = 10 - 2*j
b =
10.0000-2.0000*j
» c = a*b
C =
22.0000+58.0000i
» real(c)
ans =
22
» angle(c)
ans =
1.20833
Łańcuchy tekstowe
W MATLAB-ie możliwe są operacje na zmiennych będących łańcuchami teksto-
wymi (ang. string). Łańcuch tekstu umieszcza się pomiędzy dwoma apostrofami,
np:
» a = 'napis danej tekstowej'
Format wyświetlanych liczb
Instrukcja format określa sposób wyświetlania wyników.
format short
4 miejsca dziesiętne (liczba stałopozycyjna) 3.1416
format long
14 miejsc, reprezentacja stałopozycyjna 3.14159265358979
format short e
4 miejsca, reprezentacja zmiennopozycyjna 3.1416e+00
format long e
15 miejsc, reprezentacja zmiennopozycyjna 3.
141592653589793e+ 00
format hex
reprezentacja heksadecymalna 400921fb54442d18
10
format bank
format finansowy (USA) 3.14
format compact zwarty zapis z pominięciem pustych linii (dla dużych macierzy)
format loose
wprowadzanie pustych linii przy wyświetlaniu
format +
wyświetla +, - i spacje dla dodatnich, ujemnych i zerowych
elementów
Standardowo MATlAB rozpoczyna pracę z formatem short.
Współpraca z systemem operacyjnym
W MATLAB-ie dostępne są elementarne komendy operacji na plikach dysko-
wych:
path -
wyświetla ścieżki dostępu do katalogów MATLAB-a,
dir -
wyświetlanie zawartości bieżącego katalogu,
pwd -
wyświetla nazwę bieżącego katalogu (od wersji MATlAB 4.1),
type -
wyświetlanie zawartości pliku,
delete -
usuwanie pliku,
cd -
zmiana bieżącego katalogu, do którego MATLAB zapisuje.
Dla większości komend należy określić ścieżkę dostępu. Przy instrukcji ty-
pe należy podać rozszerzenie pliku, w przeciwnym razie MATLAB przyjmie do-
myślnie rozszerzenie .m.
Zapisywanie przestrzeni roboczej w pliku dyskowym (zapisywanie
zmiennych) - diary, save
Zapisania danych oraz całej sesji z MATLAB-em można dokonać na kilka sposo-
bów.
Przy niezbyt dużych macierzach występujących w trakcie sesji i niezbyt dużej ilo-
ści danych całą sesję wraz z pojawiającymi się komunikatami można zapisać po-
leceniem diary w pliku ASCII:
» diary filename inicjacja zapisu w pliku filename.
Cała sesja zostanie zapisana po komendzie wyjścia
» quit
11
Jeśli plik filename istnieje, to następny zapis zostanie dodany do poprzedniego.
Oprócz powyższej stosuje się komendy:
» diary off
zawieszenie (przerwanie) statusu zapisywania do określonego
pliku,
» diary on
wznowienie zapisywania do pliku [dename lub do standardo-
wego pliku o nazwie diory,
» diary
zapisywanie do pliku dyskowego o standardowej nazwie diary
lub przełączenie statusu zapisu z on na off lub odwrotnie.
Wartości wybranych zmiennych lub wszystkie można zapisać w pliku d
kowym poleceniem save w postaci:
ys-
» save
» save filename
» save filename zmienn1 zmienna2 ...
W pierwszym przypadku zapisywane są wszystkie zmienne (bez komenta-
rza tak jak w diary) w binarnym pliku dyskowym o standardowej nazwie mat lab.
mat (rozszerzenie. mat). W drugim przypadku zapis jest do pliku binarnego file-
name.mat, natomiast w przypadku trzecim do tego zbioru są zapisywane tylko
wybrane zmienne.
Zapisu w formacie tekstowym dokonuje się, podając opcje -ascii w poleceniu
save:
» save filename zmienna1 zmienna2 -ascii
zapis z pojedynczą precyzją (8
cyfr)
» save filename zmienna1 zmienna2 -ascii
-double podwójna precyzja (16
cyfr)
» save filename zmienna1 zmienna2 -ascii -tabs oddzielenie kolumn tabulatora-
mi
Odtwarzanie zmiennych i przestrzeni roboczej - load
12
Odtworzenie pliku binarnego filename.mat, zapisanego poleceniem save, doko-
nywane jest poleceniem:
» load filename
Polecenie to można również stosować do wprowadzania plików tekstowych
ASCII pod warunkiem, że plik zawiera przynajmniej jedną tablicę prostokątną lub
kwadratową. Można wczytać do przestrzeni roboczej MATLAB-a dane z pliku,
umieszczone w kolumnach oddzielonych spacjami. Mogą to być wyniki pomiaru
lub wyniki obliczeń z innego programu zapisane np. w pliku wynik.dat.
Wydanie polecenia
» load wynik.dat
spowoduje utworzenie w MATLAB-ie zmiennej o nazwie wynik (bez rozszerze-
nia). Przykładowo, jeżeli w pliku ASCII wynik.dat mamy ciąg liczb
1
11 21
2
12 22
3
13 23
4
14 24
5
15 25
to po wczytaniu tego pliku utworzona zostanie zmienna wynik będąca macierzą o
pięciu wierszach i trzech kolumnach. Dalej, ta zmienna może być poddana działa-
niom MATlAB-a.
Informacje o przestrzeni roboczej - who, exist, what, which
Kolejne polecenia wydawane w trakcie zapisywania M-pliku skryptowego zapeł-
niają, początkowo pustą, przestrzeń roboczą poszczególnymi zmiennymi.
Listę zmiennych mozna wyprowadzić jednym z poleceń:
» who
» whos
» who global
» whos global
13
Pierwsze polecenie (who) wyświetla listę zmiennych zainstalowanych bieżąco w
pamięci operacyjnej. Whos listuje bieżące zmienne, ich wymiary i wszystkie nie-
zerowe części urojone. Te instrukcje z parametrem global listują wszystkie zmien-
ne z globalnej przestrzeni pracy. Oprócz tego wyświetlana jest informacja o ilości
dostępnej pamięci operacyjnej.
Podobne działanie ma polecenie:
» exist
wyświetla informację czy istnieje zmienna lub plik o podanej
nazwie:
e=exist('nazwa').
Poniższe polecenia dotyczą zawartości katalogów:
» what
podaje informację o wszystkich M-plikach maj dujących się w
bieżącym katalogu dyskowym.
» what dirname podaje informację o wyszczególnionym katalogu dimame
określonym w ścieżce dostępu MA TUB-a.
Informację o konkretnym pliku funkcyjnym o nazwie funname wraz z podaniem
ścieżki dostępu (funkcja MATlAB-a lub SIMULINK-a) i typu (M-plik, Mex-plik,
wbudowana funkcja) otrzymuje się po wydaniu polecenia
»which funname
Czyszczenie przestrzeni roboczej, macierze puste - clear,
Całą przestrzeń roboczą można wyczyścić lub usunąć konkretne zmienne za po-
mocą poleceń:
» clear
» clear zmienna1 zmienna2
Chcąc wyzerować zmienną (macierz łącznie z liczbą wierszy i kolumn), można
zdefiniować ją jako tzw. macierz pustą
»A = []
Informacja o wymiarach macierzy - size
14
Znajomość wymiarów macierzy (liczba wierszy m i liczba kolumn n) jest często
niezbędna, gdyż można odwołać się do tych wartości przy budowaniu innych ma-
cierzy związanych wymiarami z daną.
Dla pewnej macierzy A wydanie polecenia
» d = size(A)
powoduje utworzenie wektora wierszowego o dwóch wartościach d = [ m, n ], po
czym moma wyświetlić
» d
otrzymując w odpowiedzi dwie konkretne liczby określające liczbę wierszy i ko-
lumn.
Instrukcję tę można wydać również inaczej
» [m, n] = size(A)
po czym zażądać wyświetlenia:
» m lub
» n
Liczby wierszy i kolumn można osiągnąć również bezpośrednio
» m=size(A,1)
» n = size(A,2)
ZADANIA DO WYKONANIA 2
1. Oblicz ułamek
π/3, a następnie cosinus z π/3
2. Zdefiniuj macierz 4x5 i wyznacz jej diagonalną
3. Przemnóż dwie dowolne macierze przez siebie jakie warunek muszą speł-
niać?
4. Jaką funkcję spełnia znak %.
5. Utwórz wektor o wartości początkowej 2, końcowej 38 ze skokiem 4.
6. Jaki jest ustawiony format wyświetlania liczb.
7. Przedstaw liczbę 2,5 w rożnej postaci używając funkcji format.
8. Wyznacz wartość sumy:
8
1
3
1
2
1
1
+
−
+
15
9. Proszę podać przykład użycia średnika. Jaką pełni funkcję na końcu wier-
sza?
10. Proszę zapisać poniższe wyrażenia w notacji MATLAB-a:
a.
⋅
ε
⋅
−
ε
⋅
+
+
+
⋅
ε
⋅
+
ε
⋅
+
−
⋅
ε
⋅
+
⋅
⋅
+
+
−
+
+
+
+
=
ε
⋅
−
ε
⋅
+
ε
⋅
+
=
+
∑
)
/
(
.
.
.
.
.
.
.
.
.
4
1
3
c
25
0
2
c
25
1
1
c
4
1
c
w
c
2
2
w
c
1
1
w
c
0
0
V
V
75
0
3
25
0
1
V
V
25
0
2
25
0
23
3
V
V
25
1
1
23
2
1
V
V
1
V
V
w
a
V
V
w
a
V
V
w
a
2
1
0
T
T
A
k
a
U
c
T
Kv
k
k
Vk
cb
b.
( )
×
+
+
+
=
∂
∂
−
∂
∂
∂
∂
−
−
∂
∂
−
2
1
0
2
2
1
1
0
0
2
1
0
1
2
r
1
2
2
c
V
2
r
0
2
1
r
1
2
c
c
V
r
0
c
Hr
0
a
a
a
)
w
1
(
w
)
w
1
(
w
)
w
1
(
w
w
w
w
1
1
1
V
E
RT
1
V
Z
V
E
RT
1
Z
V
Z
Z
V
Z
Hr
Hr
c.
(
)
(
)
(
)
(
)
+
−
⋅
⋅
−
⋅
−
⋅
−
⋅
+
=
*
*
L
*
L
*
*
*
L
*
*
L
*
ha
pa
Π
B
1
B
Π
1
1
B
1
Π
B
Π
m
m
α
Π
α
d.
e.
( )
1
k
C
C
C
vk
vk
e
B
B
1
B
1
m
m
f
−
⋅
−
−
⋅
=
α
α
β
α
16