Bash i algorytmy

Transkrypt

Bash i algorytmy
Bash i algorytmy
Elwira Wachowicz
[email protected]
20 lutego 2012
Elwira Wachowicz ([email protected])
Bash i algorytmy
20 lutego 2012
1 / 16
Inne przydatne polecenia
Polecenie
echo
more
head
tail
cut
diff
grep
uniq
wc
sort
paste
Dziaªanie
Przykªad
Wy±wietla na standardowym wyj±ciu
Wy±wietla plik dziel¡c go na ekrany
Wy±wietla pocz¡tek pliku
Wy±wietla koniec pliku
Wybieranie kolumn
Wy±wietla ró»nic¦ mi¦dzy plikami
Szuka ci¡gu znaków w pliku
Wybiera unikatowe wiersze
Zlicza liczb¦ znaków, sªów lub wierszy
Sortowanie plików
Š¡czy pliki kolumnami
Elwira Wachowicz ([email protected])
Bash i algorytmy
echo $zmienna
more plik
head -n 5 plik
tail -n 5 plik
cut -f2,4 plik
diff plik1 plik2
grep tekst plik
uniq plik
wc -l plik
sort plik
paste plik1 plik2
20 lutego 2012
2 / 16
Wyra»enia arytmetyczne
Pi¦¢ operacji arytmetycznych:
dodawanie (+),
odejmowanie (-),
mno»enie (*),
dzielenie (/),
modulo reszta z dzielenia (%).
$
$
$
$
$
$
expr 2 \* 3
expr 2 \* \( 7 - 1 \)
a=5
a=`expr $a + 1`
echo $a
b=`expr $a % 3`
Elwira Wachowicz ([email protected])
Bash i algorytmy
20 lutego 2012
3 / 16
Uruchamianie plików
Aby uruchomi¢ skrypt:
Sposób 1:
$ bash plik argumenty
Sposób 2:
1. Zmieniamy prawa dost¦pu do pliku:
2. Uruchamiamy plik:
$ ./plik argumenty
Elwira Wachowicz ([email protected])
Bash i algorytmy
20 lutego 2012
4 / 16
Zmienne specjalne
Zmienna
Dziaªanie
$#
Liczba argumentów
$0
Nazwa programu skryptowego
$1,$2,...
Argumenty przekazane do skryptu
$*
Rozwijane do $1 $2 ...
$@
Rozwijane do $1 $2 ...
$?
Kod powrotu ostatniego polecenia
Elwira Wachowicz ([email protected])
Bash i algorytmy
20 lutego 2012
5 / 16
Kiedy pisa¢ skrypt/program?
Złożona
Prosta
Czynność
Częstotliwość
Elwira Wachowicz ([email protected])
Raz
Wiele razy
Program
Program
Praca
interaktywana
Bash i algorytmy
Program
20 lutego 2012
6 / 16
Polecenie test
Warunek
-r
-w
-x
-f
-d
-s
plik
plik
plik
plik
plik
plik
s1
n1 -eq n2
Zwraca
plik istnieje i ma prawa do czytania
Prawda, je±li plik istnieje i ma prawa do zapisu.
Prawda, je±li plik istnieje i ma prawa do wykonywania.
Prawda, je±li plik istnieje i jest zwykªym plikiem.
Prawda, je±li plik istnieje i jest katalogiem.
Prawda, je±li plik istnieje i ma rozmiar wi¦kszy od
Prawda, je±li
zera.
s1 nie jest pusty.
n1 i n2 s¡ sobie równe. Zamiast równe,
mo»e by¢: -ne (nie równe), -gt (wi¦ksza ni»), -ge
(wi¦ksza lub równa), -lt (mniejsza), -le (mniejsza
Prawda, je±li napis
Prawda, je±li
lub równa).
Elwira Wachowicz ([email protected])
Bash i algorytmy
20 lutego 2012
7 / 16
Konstrukcja if-then-else
if [ warunek testu ]
then
czynno±¢ 1
else
czynno±¢ 2
fi
czynność 1
if
czynność 2
Przykªad:
if [ -r plik1 ]
then
cat plik1
else
echo Wprowad¹ tekst do plik1
cat > plik1
fi
Elwira Wachowicz ([email protected])
Bash i algorytmy
20 lutego 2012
8 / 16
Konstrukcja for
czynność 1
for
for zmien in wart1, wart2,...
do
czynno±¢ 1
done
Przykªad:
for f in *; do
# * rozwija si¦ do listy wszystkich plików/katalogów
# znajduj¡cych si¦ w bie»¡cym katalogu
if [ -d "$f" ]; then
echo "Katalog '$f'"
elif [ -f "$f" ]; then
echo "Plik '$f'"
else
echo "Inny typ '$f'"
fi
done
Elwira Wachowicz ([email protected])
Bash i algorytmy
20 lutego 2012
9 / 16
Konstrukcja while
czynność 1
while
while lista polece«
do
czynno±¢ 1
done
Przykªad:
zm=""
while [ "$zm" != koniec ]; do
echo -n "Wpisz co± (sªowo 'koniec' aby zako«czy¢): "
read zm
echo "Wpisaªe± '$zm'"
done
Elwira Wachowicz ([email protected])
Bash i algorytmy
20 lutego 2012
10 / 16
Algorytm (arab.):
przepis na rozwi¡zanie danego zagadnienia matematycznego (np. algorytm
obliczania pierwiastka równania kwadratowego); metoda post¦powania
zawieraj¡ca wszystkie formuªy obliczeniowe, okre±laj¡ca kolejno±¢ ich
stosowania, warunki, przy których stosuje si¦ t¦ lub inn¡ formuª¦, zasady
przechodzenia od jednego etapu procesu obliczeniowego do nast¦pnego
oraz informacje o rodzajach i wªasno±ciach odpowiednich obiektów
matematycznych: liczb, wektorów, macierzy, a tak»e tablic, które s¡
danymi pocz¡tkowymi zadania lub pojawiaj¡ si¦ podczas oblicze«;
algorytmy s¡ podstaw¡ programów dla maszyn matematycznych.
Encyklopedia PWN, 1973 r
Elwira Wachowicz ([email protected])
Bash i algorytmy
20 lutego 2012
11 / 16
Cechy algorytmu
Algorytm:
Szczegóªowy
Jednoznaczny
Powinien mie¢ pocz¡tek i koniec
Posiada zbiór danych wej±ciowych, dla których ko«czy si¦ sukcesem.
Efektywno±¢: proste operacje i realizacja w rozs¡dnym czasie.
Daje oczekiwane rezultaty dla ró»nych danych wej±ciowych.
Elwira Wachowicz ([email protected])
Bash i algorytmy
20 lutego 2012
12 / 16
Obliczanie najwi¦kszego wspólnego dzielnika dwóch liczb
Algorytm Euklidesa (IV w. p.n.e..) do obliczania najwi¦kszego wspólnego
dzielnika (NWD) dwóch liczb naturalnych
Czynno±¢ 1:
jest
m;
sprawd¹, czy
n = 0;
m i n (m > 0 i m ≥ n):
je±li tak, to zako«cz szukanym NWD
je±li nie, przejd¹ do czynno±ci 2.
Czynno±¢ 2:
oblicz reszt¦ z dzielenia
m
równym poprzedniej warto±ci
Elwira Wachowicz ([email protected])
n, oznacz j¡ przez r i
n teraz równym r i m
przez
przejd¹ do czynno±ci 1, ale z innymi liczbami:
n.
Bash i algorytmy
20 lutego 2012
13 / 16
Jak budowa¢ algorytmy
Wyznaczenie osi¡galnego i jednoznacznego celu.
Podanie sposobu rozwi¡zania.
Która z 3 liczb
1
We¹ liczby a i b.
2
a > b ? Tak
3
pkt. 3. Nie
→
We¹ liczby a i c. a > c ? Tak
Nie
4
→
→
→
jest najwi¦ksza?
pkt. 4.
→
pkt. 5.
pkt. 7.
We¹ liczby b i c. b > c ? Tak
Nie
a, b i c
→
1
a > b i a > c? Tak
najwi¦ksze. Nie
pkt. 6.
pkt. 7.
2
b > c ? Tak
Nie
5
Najwi¦ksz¡ liczb¡ jest a.
6
Najwi¦ksz¡ liczb¡ jest b.
7
Najwi¦ksz¡ liczb¡ jest c.
Elwira Wachowicz ([email protected])
Bash i algorytmy
→
→
→
→
a
pkt. 2.
b najwi¦ksze.
c najwi¦ksze.
20 lutego 2012
14 / 16
Jak zapisywa¢ algorytmy
Pierwiastki równania kwadratowego:
1
Czy
2
Czy
(a)
a = 0?
b = 0?
Czy
TAK
TAK
c = 0?
→ pkt.
→ pkt.
TAK
→
2a.
speªnione dla ka»dego
Niespeªnione dla »adnego
(b)
Oblicz
∆=
∆ > 0?
3
Oblicz
4
Czy
(a)
(b)
x = −c/b.
→ pkt. 3.
NIE → pkt. 2b
2. NIE
x.
x.
STOP. NIE
→
STOP.
STOP
b2
− 4ac
TAK →
pkt 4a. NIE
→
pkt. 4b.
√
x1 = (−b − ∆)/2a, x2 = (−b + ∆)/2a. STOP.
Czy ∆ = 0? TAK → Oblicz x = −b/2a. STOP. NIE → Równanie
niespeªnione dla »adnego x. STOP.
Oblicz
Elwira Wachowicz ([email protected])
√
Bash i algorytmy
20 lutego 2012
15 / 16
Start
Dane a,b,c
TAK
a=0
NIE
Δ=b2-4ac
Δ>0
TAK
b=0
c=0
NIE
x=-c/b
NIE
TAK
x1=(-b-√Δ)/2a
Δ=0
TAK
NIE
Spełnione dla
dowolnego x.
NIE
TAK
x=-b/2a
Niespełnione
dla żadnego x.
x2=(-b+√Δ)/2a
Stop
Elwira Wachowicz ([email protected])
Bash i algorytmy
20 lutego 2012
16 / 16

Podobne dokumenty