Podstawy języka Zmienne Wyniki obliczeń można przypisywać do zmiennych Nazwy zmiennych powinny zaczynać się od liter nie mogą zaczynać się od cyfr mogą od niektórych innych znaków Przypisanie wyniku do zmiennej a ID: 598225
Download Presentation The PPT/PDF document "Programowanie w Octave" is the property of its rightful owner. Permission is granted to download and print the materials on this web site for personal, non-commercial use only, and to display it on your personal computer provided you do not modify the materials and that you retain all copyright notices contained in the materials. By downloading content from our website, you accept the terms of this agreement.
Slide1
Programowanie w OctaveSlide2
Podstawy języka
Zmienne
Wyniki obliczeń można przypisywać do zmiennych. Nazwy zmiennych powinny zaczynać się od liter (nie mogą zaczynać się od cyfr, mogą od niektórych innych znaków). Przypisanie wyniku do zmiennej „a”:
octave3.2:1 > a=2+2
a = 4Slide3
Wpisanie nazwy zmiennej spowoduje
wyświetlenie
jej
wartości
(mozna to
potraktowa
ć
jak działanie
0-argumentowe
o nazwie takiej, jak nazwa zmiennej). Nazwy zmiennych
są wrażliwe
na
wielkość
liter – zmienna „a” to nie to
samo co
zmienna „A”.
octave3.2:4
> a
a = 4
octave3.2:5
> A
error:
‘A’ undefined near
line
5 column 1
W tej sytuacji Octave
wyświetlił
komunikat o
błędzie.Slide4
Można też nada
ć
zmiennej
wartość
wprost, aby potem
użyć
jej w obliczeniach.
octave3.2:2
>
k=7
k
= 7
oc t ave
3.2:3
> k^2
ans
= 49
ans
też
jest
zmienną,
tyle, ż
e tworzoną
automatycznie przez program.Slide5
Na niej
również można wykonywa
ć
obliczenia, co
bywa przydatne, zwłaszcza z
użyciem
historii
poleceń:
octave3.2:17
> 3
ans
= 3
octave3.2:1
8 >
ans
^2
ans
= 9
octave3.2:1
9 >
ans
^2
ans
= 81
octave3.2:20
>
ans
^2
ans
= 6561Slide6
Nazwy zmiennym
można nadawa
ć
bardzo dowolnie.
Można
nawet
nada
ć
zmiennej
nazwę istniejącej
funkcji:
octave3.2:5
> cos=7
cos = 7
octave3.2:6
> i =5
i = 5Slide7
W takiej sytuacji, aby znów
mie
ć
mozliwość
skorzystania z
funkcji
cos czy jednostki urojonej,
należy wyczyścić zmienne
poleceniem
clear
:
octave3.2:9
>
clear i cos
octave3.2:1
0 > i
ans
=0+1
i
Zmienne do wyczyszczenia
należy wpisywa
ć
po
słowie
clear
, oddzielone spacjami. Aby
wyczyścić
wszystkie zmienne,
należy wpisać
clear
all
.Slide8
Wydanie polecenia ze znakiem ś
rednika
na
końcu
spowoduje,
że
wynik nie zostanie
wyświetlony
.
Można też wydać
kilka
komend na raz, w jednej linii, oddzielonych przecinkami (wynik widoczny) lub ś
rednikami
(wynik niewidoczny):
octave3.2:18
>
a=2
;
b=a+2
,
c=b*2
;
b=4
octave3.2:19
> c
c=8Slide9
Polecenia
Oprócz wspomnianych
exit
i
clear
, Octave zawiera jeszcze kilka
poleceń niedotyczących bezpośrednio obliczeń. Są
to m. in.
quit
(to samo, co
exit
),
close
– do zamykania okien z wykresami (
używa się
tak samo,
jak
clear
– „all” zamyka wszystkie),
clc
–
czyści
ekran programu,
who
–
wyświetla listę
wszystkich zmiennych,
whos
–
wyświetla szczegółową listę
wszystkich zmiennych,
what
–
wyświetla listę
plików .m w
bieżącym
katalogu, oraz trzy dla
nas najważniejsze:
diary
– uruchamia „
pamiętnik
”,
format
– zmiana sposobu
wyświetlania
wyników i
help
– pomoc programu.Slide10
„
Pamiętnik
” to plik, w którym Octave zapisuje wszystko to, co
wida
ć
w jego oknie – zarówno polecenia, jak i odpowiedzi. Wpisanie
diary on
włącza
, a
diary off
wyłącza
zapis.
Domyślnie
, plikiem
pamiętnika
jest plik
diary
w katalogu roboczym Octave’a.
Można też nakaza
ć
zapis w innym pliku,
wpisując
np.
„diary
pamietnik.txt”.
Należy pamiętać,
ż
e
plik
pamiętnika
jest zapisywany na dysku dopiero w momencie wydania polecenia o
zakończeniu zapisu
(lub
zamknięciu
programu), oraz
że
przy ponownym
włączeniu
zapisu w tym samym pliku, nowa
zawartość zostanie
zapisana na
końcu
starej. Slide11
W przypadku
rozwiązywania zadań
z algebry liniowej przydatne bywa, aby wyniki były
przybliżane
za
pomocą
liczb wymiernych. W tym celu
należy wyda
ć
komendę „
format
rat
”. Innym przydatnym formatem jest format optymalnie
dopasowujący wyświetlanie każdej
liczby z osobna: „
format
short g”. Dla macierzy liczb zespolonych przydatny
może by
ć
także
„
format
free”
wyświetlający
liczby w postaci par (x, y), gdzie z =
x+i·y
. Wpisanie samego polecenia
format
powoduje powrót do
domyślnego
formatowania wyników: Slide12
octave3.2:3
>
pi
ans
=
3.1416
octave 3.2:4
>
format
rat
octave3.2:5
>
pi
ans
= 355/113
octave3.2:6
>
format
octave3.2:7
>
pi
ans
=
3.1416Slide13
Więcej
informacji na temat polecenia
format
znajduje
się
w pomocy. Wykonanie polecenia
help
powoduje
wyświetlenie
ogólnego tekstu pomocy, „
help
komenda”
wyświetla
natomiast pomoc do danej komendy, czyli np.
help format
wyświetli
opis wszystkich
możliwych
formatów. Zazwyczaj w pomocy do danej komendy wymienione
są polecenia o
podobnym działaniu, albo
działające
odwrotnie. Aby
zamknąć
pomoc (jak równiez zmienne
niemieszczące się na ekranie
oraz okna wykresów),
należy nacisnąć
przycisk „Q” na klawiaturze.Slide14
Aby
wykona
ć
wybrane polecenie lub działanie,
należy wpisa
ć
odpowiednią komendę
i
nacisnąć ENTER
. Polecenia
są zapamiętywane
–
wciśnięcie
strzałki w
gór
ę
na klawiaturze powoduje pokazanie ostatnio wpisanego polecenia, strzałkami góra/dół
można przeglądać całą zapisaną historię poleceń.
Wpisanie
ciągu
znaków i
naciśnięcie strzałki w gór
ę
spowoduje
przeglądanie
tylko tych
zapamiętanych
komend, które zaczynały
się
od tego wpisanego
ciągu
znaków, np. wpisanie „ex” i
naciśnięcie
strzałki w
gór
ę
pokaże
tylko komendy
zaczynające się
od „ex”,
np.
exit
i
exp
(2). Octave obsługuje
też
autouzupełnianie
poleceń.
Wpisanie „ex” i dwukrotne
naciśnięcie klawisza TAB wyświetli listę
wszystkich
poleceń zaczynających się
od „ex”.
Jeśli
wpisany zostanie taki
ciąg
znaków, który jest prefiksem tylko jednego polecenia, to autouzupełnianie po prostu uzupełni
tę nazwę. Slide15
Polecenia systemowe
Kilka
poleceń służy
do porozumienia
się
z systemem
operacyjnym.
pwd
pokazuje katalog roboczy Octave’a, czyli katalog, w którym
będzie
on szukał plików (przede wszystkim skryptów i funkcji
użytkownika),
ls
pokazuje
zawartość
tego folderu, a
cd
pozwala
zmieni
ć
katalog roboczy na inny. Takie same polecenia
funkcjonują
w systemach linuksowych. Działanie
poleceń
widoczne jest w
poniższym
przykładzie. Slide16
octave3.2:39
>
pwd
ans
=
/home/
q
octave3.2:40
>
ls
apro.m document.tex man .m octave
czasy.m Dokumenty mojaFunkcja.m obrazki
.m
diary
Lab12.
P
df Obrazy Pulpit
diary
.txt
octave3.2:41
>
cd
Dokumenty
octave3.2:42
>
pwd
ans
=
/home/
q/Dokumenty
octave3.2:43
>
cd
. .
octave3.2:44
>
pwd
ans
=
/home/
qSlide17
Tablice
GNU
Octave
daj dużą swobodę jeżeli chodzi o operowanie na wektorach i macierzach. Do ich reprezentacji służy podstawowa w tym programie struktura danych czyli tablica. Najprostszym sposobem utworzenia nowego wektora jest wymienienie wszystkich jego elementów
octave:5> v1 = [
1,0,0]
v1 =1
0 0
Otrzymujemy w ten sposób wektor wierszowy
v1 = [1, 0, 0]Slide18
Aby otrzymać wektor kolumnowy
konieczne
jest wykonanie operacji transponowania. Jest ona reprezentowana za pomocą apostrofu
’.
octave:6
> v1’
ans
=
1
0
0
Slide19
Podobnie możemy zdefiniować nową macierz oddzielając kolejne wiersze średnikami.
octave:7> Id = [1,0,0;0,1,0;0,0,1]
Id =
1
0
0
0
1
0
0
0
1 Slide20
Niektóre macierze mogą być zbudowane poprzez wywołanie funkcji GNU
Octave
. Przykładem są macierze złożone z samych zer lub z samych jedynek. Aby uzyskać macierz o wymiarach 3 na 3 wypełnioną zerami wystarczy napisać
octave:8>
zeros
(3,3)
ans =
0
0 0
0
0 0
0
0 0
Analogicznie funkcja
ones
wypełnia macierz o zadanych rozmiarach jedynkami. Funkcje ta są przydatna w sytuacji gdy chcemy najpierw zbudować macierz o zadanym kształcie, którą w kolejnych krokach wypełniamy w określony sposób. Slide21
Instrukcja warunkowa
if
Instrukcja warunkowa
if
pozwala na wykonanie bloku kodu jeżeli spełniony zostanie zadany warunek. Konstrukcja ta ma składnię przypominającą składnię języka programowania C. W poniższym przykładzie wybierany jest jeden z dwóch warunków (x > 5 bądź x
≤5).
octave:1
> x = pow2 (2
);
octave:2
> if (x > 5
)
>
x = x - 10
;
> else
> x = x + 10
;
>
endifSlide22
Znaki > oznaczają tu kontynuację wpisywanej komendy po naciśnięciu klawisze ENTER . Pogram
sygnalizuje w ten sposób oczekiwanie na
zakończenie
rozpoczętej konstrukcji, takiej jak instrukcja
if
, bądź zamknięcie nawiasów. Jeżeli chcemy rozróżnić pomiędzy większą ilością możliwości, to możemy zastosować konstrukcję
if-elseif
tak jak w poniższym przykładzie
octave:3> x = pow2 (4
);
octave:4
> y = sin (pow2(10
));
octave:5
> if (y > 0
)
>
y = pow2(sin(5
))
>
elseif (y < 0 && x < 10
)
>
y = cos(5
)
> endif
Komenda
endif
oznacza zamknięcie konstrukcji. Slide23
Instrukcja
switch
Drugim sposobem warunkowego wykonywania komend jest instrukcja
switch
. Pozwala ona na wyszczególnienie co ma być wykonane w zależności od tego do jakiego zbioru należy zmienna. W poniższym przykładzie zmienna
test
ma wartość 2, wykonane zostanie przypisanie x =
0.Slide24
octave:29> test =
2
octave:30
> switch
test
>
case { 1 2 3 7 8 9
}
>
x =
0
>
case { 4 5 6
}
>
x =
1
> otherwise
>
x = -
1
>
endswitchSlide25
Pętla for
Do poruszania się po tablicach służy pętla for. Do wypisania kwadratów liczb od 1 do 10 służy polecenie
octave:1> for
i=1:10
> i^2
>
endfor
znaki > oznaczają, iż program czeka na wprowadzenie komendy
endfor
, który oznacza zamknięcie pętli for. Slide26
Pętla
while
Jeżeli chcemy wykonywać jakiś zestaw poleceń tylko dla danych spełniających określony warunek,
octave:25>
i=1
i
=
1
octave:26
>
while
(i^2<1000
)
> i^2
> i=i+1
>
endwhileSlide27
Funkcje
W
Octavie
, podobnie jak w innych
j
ę
zykach
programowania jest
możliwość
definiowania swoich
własnych
funkcji. Własne funkcje piszemy gdy chcemy aby program składał
si
ę
z bloków funkcjonalnych o
ściśle określonym
działaniu, co czyni program lepiej zrozumiałym i jest szczególnie zalecane w
przypadku
długich programów. Dodatkowo raz zapisana funkcja w
zewnętrznym
pliku funkcyjnym
może być
wielokrotnie wywoływana przez
różne programy. Zmienne występujące
w funkcjach
mają
charakter lokalny. Oznacza to
że
zmienne
występujące
w
danej funkcji
nie
będ
ą
widziane w innej funkcji. Komunikacja
pomi
ę
dzy funkcją,
a programem
ją wywołującym
odbywa
się
poprzez
parametry_wejscia
i
parametry_wyjscia
(parametry formalne). Funkcja
może być
wywoływana przez inne funkcje.
Funkcj
ę
zapisujemy w plikach tekstowych o nazwie
nazwa_funkcji.m
. Definicja funkcji posiada
następującą strukturę: Slide28
function
parametry
_
wyjscia
=
nazwa_funkcji
(
parametry_wejscia
)
instrukcje
;
.
.
.
endfunctionSlide29
Przykłady
Funkcja
obliczająca sum
ę
dwóch
liczb:
% Funkcja
suma_liczb
wyznacza
sume
dwóch liczb ’a +
b’
function
wynik =
suma_liczb
(
a,b
)
wynik
= a +
b;
endfunctionSlide30
Następnie
w środowisku
Octave
zdefiniuj zmienne a, b i wywołaj funkcję
suma_liczb
:
octave:1>
a=1
a
=
1
octave:2
>
b=2
b
=
2
octave:3
>
suma_liczb
(
a,b
)
ans
=
3
W linii nr 3
nast
ę
puje
wywołanie funkcji
suma_liczb
, jako parametry przekazujemy dwie zmienne, których suma ma
zostać
policzona, jako parametry
można podać również
konkretne liczby
np.
suma_liczb
(3
, 4). Slide31
Funkcja
obliczająca wartość
n
!:
% Funkcja silnia wyznacza
watość
n!
function
[wynik]=
silnia(n)
wynik=1;
for i=1:n
wynik=wynik*i;
end
endfunctionSlide32
N
astępnie
w
środowisku
Octave
wywołaj
funkcj
ę
silnia z
różnymi wartościami
:
octave:2
>
silnia(2)
ans
=
2
octave:3
>
silnia(4)
ans
=
24
octave:4
>
silnia(5)
ans
= 120Slide33
Dodatkowe pakiety w OctaveSlide34
Pakiet przed użyciem trzeba :
1
. zainstalować
2. załadowaćSlide35
Instalacja
Najpierw ściągamy
z
http://octave.sourceforge.net/packages.php
plik z pakietem. Zapisujemy go w katalogu
roboczym.
Instalujemy
poleceniam
:
pkg
install
package_file_name.tar.gz
Pakiet
jest kopiowany do odpowiedniego
katalogu.Slide36
Ładowanie
Ładowanie zainstalowanych pakietów
:
pkg
load
package_nameSlide37
Sprawdzanie
Lista
zainstalowanych
pakietów uzyskamy za pomocą
pkg
listSlide38
Przykładowe pakiety:Slide39
Pakiet bim
Pakiet do rozwiązywania równań różniczkowych
cząstkowych.Slide40
Pakiet communications
Komunikacja cyfrowa, korekta błędów w kodzie (kod kanału), funkcje kodu źródłowego, modulacja oraz ciało
skończone.Slide41
Pakiet Control
Komputerowe wspomaganie Control System Design (CACSD) Narzędzia GNU Octave, oparte na sprawdzonej Bibliotece
SLICOT.Slide42
Pakiet database
Interfejs do baz danych SQL, obecnie tylko przy użyciu postgreSQL
libpq.Slide43
Pakiet dicom
Komunikacja cyfrowa w medycynie (DICOM) plików
Wyjścia/Wejścia.Slide44
Pakiet general
Ogólne narzędzia do
Octave.Slide45
Pakiet financial
Symulacja Monte Carlo, opcje cenowe rutyny, manipulacje finansowe, funkcje kreślenia.Slide46
Wykonali:
Ambroziak Robert, Bartkowski Radosław, Gałus Michał,
Popławski Konrad, Telakowiec Robert, Zychowicz SebastianSlide47
KONIEC
Dziękujemy za uwagę.