Obecnie większość użytkowników komputerów przyzwyczajona jest do programów sterowanych za pomocą myszki. Myszka służy im m.in. do uruchamiania i zamykania programów, wybierania opcji w menu głównym lub kontekstowym, obsługi pasków narzędzi, zaznaczania fragmentów tekstu – w zasadzie myszka służy im do wszystkiego z wyjątkiem wprowadzania tekstu. Dlatego programy takie jak Octave, w których wszystkie polecenia wydaje się za pomocą klawiatury, u użytkowników przyzwyczajonych do „okienek” budzą zdziwienie i lęk – lęk przed nieznanym. Po kilku próbach zrobienia czegokolwiek bez myszy w programie niewyświetlającym menu i pasków narzędzi osoby takie zwykle rezygnują i wyłączają program, by nigdy do niego nie wrócić. Niepotrzebnie! Programy obsługiwane za pomocą klawiatury (tzw. programy konsolowe) stosują bowiem pewne standardowe mechanizmy mające na celu uproszczenie ich obsługi. Wystarczy zapoznać się z tymi mechanizmami, by dość pewnie obsługiwać niemal każdy program konsolowy.
Dlaczego jednak w ogóle w XXI wieku wciąż powstają programy konsolowe? Dlaczego cieszą się sporym powodzeniem? Otóż podstawowa zaleta programów konsolowych, decydująca o ich przydatności, polega na łatwości automatyzacji ich obsługi. Octave może być bowiem używany nie tylko jako program interakcyjny, ale także jako program automatycznie wywoływany przez inne programy bez ingerencji człowieka. Tekstowa obsługa programu umożliwia traktowanie Octave jako języka programowania, przy czym tworzenie tych programów jest banalnie proste: składają się one po prostu z ciągu komend, które równie dobrze można by osobiście wydać z konsoli tekstowej.
Czas na zapowiadane „sztuczki”.
Klawisze nawigacyjne (tzw. kursory) „strzałka w górę” (↑) i „strzałka w dół” (↓) to chyba najczęściej używane klawisze sterujące Octave. Służą one do przywoływania na ekranie poprzednich komend. Dzięki temu nie musimy tych samych poleceń wpisywać wielokrotnie. Wystarczy odnaleźć odpowiednie polecenie wśród poleceń wydawanych niedawno i albo zatwierdzić je od razu klawiszem enter, albo wpierw dokonać stosownych zmian.
Drugim nieocenionym pomocnikiem programu jest klawisz Tab. Służy on do włączania mechanizmu autouzupełniania nazw funkcji i plików.
Jak to działa? Przypuśćmy, że chcemy wywołać funkcję roots
służącą do znajdowania pierwiastków wielomianów. W tym celu wystarczy napisać trzy pierwsze
litery tej funkcji (roo
) i przycisnąć klawisz Tab
.
Octave sam uzupełni brakujące litery.
Jeżeli przed przyciśnięciem klawisza Tab
wprowadzimy zbyt mało liter i Octave
nie będzie w stanie jednoznacznie określić, o które polecenie nam chodzi, program nie wykona żadnej czynności. Jeżeli w tej sytuacji ponownie przyciśniemy Tab
, program wyświetli listę wszystkich możliwych uzupełnień naszego wpisu. To bardzo użyteczny sposób "przypominania" sobie nazw poleceń!
Mechanizm autouzupełniania obejmuje nie tylko polecenia programu, ale też
nazwy plików w katalogu bieżącym. Cecha ta znacznie upraszcza wprowadzanie nazw plików i praktycznie
eliminuje literówki. Autouzupełnianie może też być używane podczas wpisywania argumentów
poleceń, np. help
Oprócz klawiszy ↑, ↓ i Tab
, Octave obsługuje kilkadziesiąt (!) innych skrótów klawiaturowych ułatwiających edycję poleceń. Najważniejsze z nich to:
ctrl+r
– ułatwia wyszukiwanie konkretnego wpisu w historii poleceń.
Zamiast przeszukiwać historię poleceń klawiszami ↑ i ↓, wystarczy wpisać kilka pierwszych liter
polecenia i wcisnąć ctrl+r
, po czym ewentualnie można jeszcze dopisać brakujące litery.
←
),
kursor w prawo (→
) – przemieszczają kursor o literę w lewo lub prawo.
ctrl
+ kursor w lewo ,
ctrl
+ kursor w prawo – przemieszczają kursor o słowo w lewo lub prawo.
home
, end
– przemieszczają kursor na początek lub koniec edytowanego polecenia.
help
i doc
Zapamiętywanie nazw i znaczenia setek poleceń typowego programu komputerowego byłoby zajęciem
wyjątkowo nużącym i bezproduktywnym. Dlatego programy posiadają wbudowane mechanizmy pomocy dla użytkownika.
Programy okienkowe standardowo udostępniają ten mechanizm poprzez pozycję „Pomoc” w menu
lub skrót klawiaturowy F1
. Octave, jak większość programów konsolowych, udostępnia
system pomocy poprzez komendę help
:
> help
Czyste polecenie help
wyświetla informacje dotyczące całego programu, a konkretnie –
spis wszystkich poleceń programu rozpoznawanych przez system pomocy.
Zwykle jednak potrzebujemy informacji o konkretnej funkcji programu. W tym wypadku podajemy ją jako
argument polecenia help
. Np. aby uzyskać szczegółowe informacje o znaczeniu i wszystkich
możliwościach instrukcji format
, wydajemy polecenie
> help format
Oczywiście instrukcja help
wyświetla informacje jako tekst, który zwykle zajmuje
więcej niż jeden ekran. Do przemieszczania się po nim służą standardowe klawisze nawigacyjne:
PageDown
,
PageUp
,
Kursor w dół
,
Kursor w górę
,
Home
i
End
Polecenie help
swoje informacje wyświetla w specjalnym trybie, tzw. trybie pomocy,
w którym z ekranu znikają wszystkie informacje niezwiązane z systemem pomocy programu. Aby wrócić
do normalnego trybu edycji, przyciskamy klawisz q
(ang. quit).
System pomocy Octave
zapewnia
także bezpośredni dostęp do całego, wieluset stronicowego podręcznika. Oczywiście
jest on wyświetlany w formie tekstowej. Stosowne polecenie to doc
, np.
> doc operatorswyświetla (oczywiście w trybie tekstowym!) fragment podręcznika dotyczący operatorów.
Polecenie doc
działa w osobnym trybie, tzw. info
, którego nie będę tu
bliżej omawiał. Tryb info
opuszczamy klawiszem q
.
Internetowa (HTML) wersja podręcznika znajduje się tu.
Octave posługuje się kilkoma plikami pomocniczymi:
.octave_hist
to plik przechowujący wprowadzane przez nas komendy. Dzięki niemu mechanizm historii poleceń działa nawet po wyłączeniu i włączeniu programu..octaverc
to plik wczytywany tuż po uruchomieniu programu.
Można w nim umieścić własne polecenia dostosowujące konfigurację programu do naszych upodobań.Pracując z programem Octave często posługujemy się dodatkowymi plikami. Musimy jednak mieć pewność, że program potrafi je (poprawnie) zlokalizować. Do osiągnięcia tego celu służą następujące komendy:
pwd
– wyświetla nazwę bieżącego katalogu.ls
– wyświetla zawartość katalogu bieżącego.cd
– zmienia katalog bieżący Oto przykład ich zastosowania:
> pwd ans = /home/zkoza > cd octave > pwd ans = /home/zkoza/octave > ls programik.m
W powyższym przykładzie: najpierw za pomocą polecenia pwd
sprawdzam, że bieżącym katalogiem programu jest /home/zkoza
; następnie poleceniem cd
zmieniam ten katalog na /home/zkoza/octave
, sprawdzam
wartość bieżącego katalogu (pwd
) i wyświetlam jego zwartość (ls
). W katalogu tym znajduje się tylko jeden, wcześniej umieszczony tam plik o nazwie programik.m
.
Informacja dla zaawansowanych: polecenie ls
przyjmuje praktycznie te same opcje, co
analogiczne polecenie w systemach UNIX-owych, np ls -l
.
Jesteśmy już gotowi zapoznać się z najbardziej użyteczną właściwością programów konsolowych – łatwości rozszerzaniem ich funkcjonalności za pomocą własnych plików tekstowych (tzw. skryptów). Idea jest genialna w swej prostocie: zamiast pisać polecenia bezpośrednio w programie, można je zapisywać w osobnym pliku, a potem wczytywać do programu tak, jakby pochodziły z klawiatury. Podstawowa zaleta tego rozwiązania polega na trwałości skryptów, które możemy spokojnie rozwijać przez wiele dni, a potem używać przez wiele lat. Skrypty rozwiązują więc podstawowy problem programów pisanych bezpośrednio w konsoli Octave – ich ulotność i jednorazowość.
Utworzenie własnego skryptu jest banalnie proste: jest to dowolny plik tekstowy o rozszerzeniu .m
, np. programik.m
. W pliku tym wpisujemy dowolne komendy Octave.
Możemy opisać je za pomocą komentarzy (przypominam, że w Octave komentarzem jest tekst od znaku # do końca wiersza).
Aby wykonać polecenia w tak utworzonym pliku (czyli „uruchomić skrypt”), wystarczy jako komendę wpisać w Octave… nazwę skryptu bez rozszerzenia *.m
.
Załóżmy, że skrypt nazywa się programik.m
, a jego zawartość wygląda następująco:
# W pliku programik.m znajduje się trywialny program testowy Octave 1/7 2/7 3/7
Jeżeli wydamy polecenie programik
:
> programik
Program odpowie następująco:
ans = 0.14286 ans = 0.28571 ans = 0.42857
co świadczy o wykonaniu wszystkich instrukcji z pliku programik.m
.
Teraz możemy dowolnie modyfikować plik i uruchamiać go w Octave za pomocą klawiszy historii (↑, ↓). Prawda, że to niezwykle prosty i użyteczny mechanizm?
Oczywiście aby program mógł wczytać skrypt, plik skryptu musi znajdować się w katalogu bieżącym,
który ustalamy omówionymi powyżej poleceniami pwd
i cd
.
Na koniec mały smaczek. Jeżeli zapytamy się Octave, co wie na temat polecenia programik
:
> help programik
Otrzymamy następującą odpowiedź:
octave:6> help programik programik is the file ./programik.m W pliku programik.m znajduje się trywialny program testowy Octave ...
Widać więc, że w skryptach można w trywialny sposób umieszczać nie tylko kod, ale i jego dokumentację!
info
?sombrero
, tj.
> somi przyciśnij tabulator. Zwróć uwagę na to, że program sam uzupełnił zapis polecenia.
> help sombrero
), do czego służy funkcja sombrero
i jakie znaczenie ma jej (opcjonalny) argument.
sombrero
z niestandardowym argumentem, np. 30
lub 100
.> doc sombrero
), jaka jest rola polecenia sombrero
?
Jakie inne polecenie służy podobnemu celowi? help
sprawdź, w jakim pliku znajduje się definicja funkcji
sombrero
.
sombrero
wyświetlało
wykres funkcji
z(x,y) = exp(-sqrt(x2 + y2))
dla -4 ≤ x,y ≤ 4.help sombrero
.