Bash i algorytmy Elwira Wachowicz elwira@ifd.uni.wroc.pl 20 lutego 2012 Elwira Wachowicz (elwira@ifd.uni.wroc.pl) Bash i algorytmy 20 lutego 2012 1 / 16
Inne przydatne polecenia Polecenie Dziaªanie Przykªad echo Wy±wietla na standardowym wyj±ciu echo $zmienna more Wy±wietla plik dziel c go na ekrany more plik head Wy±wietla pocz tek pliku head -n 5 plik tail Wy±wietla koniec pliku tail -n 5 plik cut Wybieranie kolumn cut -f2,4 plik diff Wy±wietla ró»nic mi dzy plikami diff plik1 plik2 grep Szuka ci gu znaków w pliku grep tekst plik uniq Wybiera unikatowe wiersze uniq plik wc Zlicza liczb znaków, sªów lub wierszy wc -l plik sort Sortowanie plików sort plik paste Š czy pliki kolumnami paste plik1 plik2 Elwira Wachowicz (elwira@ifd.uni.wroc.pl) Bash i algorytmy 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 (elwira@ifd.uni.wroc.pl) 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 (elwira@ifd.uni.wroc.pl) 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 (elwira@ifd.uni.wroc.pl) Bash i algorytmy 20 lutego 2012 5 / 16
Kiedy pisa skrypt/program? Częstotliwość Raz Wiele razy Czynność Prosta Złożona Program Praca interaktywana Program Program Elwira Wachowicz (elwira@ifd.uni.wroc.pl) Bash i algorytmy 20 lutego 2012 6 / 16
Polecenie test Warunek Zwraca -r plik Prawda, je±li plik istnieje i ma prawa do czytania -w plik Prawda, je±li plik istnieje i ma prawa do zapisu. -x plik Prawda, je±li plik istnieje i ma prawa do wykonywania. -f plik Prawda, je±li plik istnieje i jest zwykªym plikiem. -d plik Prawda, je±li plik istnieje i jest katalogiem. -s plik Prawda, je±li plik istnieje i ma rozmiar wi kszy od zera. s1 Prawda, je±li napis s1 nie jest pusty. n1 -eq n2 Prawda, je±li 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 lub równa). Elwira Wachowicz (elwira@ifd.uni.wroc.pl) Bash i algorytmy 20 lutego 2012 7 / 16
Konstrukcja if-then-else Przykªad: if czynność 1 czynność 2 if [ warunek testu ] then czynno± 1 else czynno± 2 fi if [ -r plik1 ] then cat plik1 else echo Wprowad¹ tekst do plik1 cat > plik1 fi Elwira Wachowicz (elwira@ifd.uni.wroc.pl) 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 (elwira@ifd.uni.wroc.pl) Bash i algorytmy 20 lutego 2012 9 / 16
Konstrukcja while Przykªad: czynność 1 while while lista polece«do czynno± 1 done zm="" while [ "$zm"!= koniec ]; do echo -n "Wpisz co± (sªowo 'koniec' aby zako«czy ): " read zm echo "Wpisaªe± '$zm'" done Elwira Wachowicz (elwira@ifd.uni.wroc.pl) 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 (elwira@ifd.uni.wroc.pl) 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 (elwira@ifd.uni.wroc.pl) 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 m i n (m > 0 i m n): Czynno± 1: sprawd¹, czy n = 0; je±li tak, to zako«cz szukanym NWD jest m; je±li nie, przejd¹ do czynno±ci 2. Czynno± 2: oblicz reszt z dzielenia m przez n, oznacz j przez r i przejd¹ do czynno±ci 1, ale z innymi liczbami: n teraz równym r i m równym poprzedniej warto±ci n. Elwira Wachowicz (elwira@ifd.uni.wroc.pl) 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 a, b i c jest najwi ksza? 1 We¹ liczby a i b. 2 a > b? Tak pkt. 3. Nie pkt. 4. 3 We¹ liczby a i c. a > c? Tak pkt. 5. Nie pkt. 7. 4 We¹ liczby b i c. b > c? Tak pkt. 6. Nie pkt. 7. 5 Najwi ksz liczb jest a. 6 Najwi ksz liczb jest b. 7 Najwi ksz liczb jest c. 1 a > b i a > c? Tak a najwi ksze. Nie pkt. 2. 2 b > c? Tak b najwi ksze. Nie c najwi ksze. Elwira Wachowicz (elwira@ifd.uni.wroc.pl) Bash i algorytmy 20 lutego 2012 14 / 16
Jak zapisywa algorytmy Pierwiastki równania kwadratowego: 1 Czy a = 0? TAK pkt. 2. NIE pkt. 3. 2 Czy b = 0? TAK pkt. 2a. NIE pkt. 2b (a) Czy c = 0? TAK speªnione dla ka»dego x. STOP. NIE Niespeªnione dla»adnego x. STOP. (b) Oblicz x = c/b. STOP 3 Oblicz = b 2 4ac 4 Czy > 0? TAK pkt 4a. NIE pkt. 4b. (a) (b) Oblicz x 1 = ( b )/2a, x 2 = ( b + )/2a. STOP. Czy = 0? TAK Oblicz x = b/2a. STOP. NIE Równanie niespeªnione dla»adnego x. STOP. Elwira Wachowicz (elwira@ifd.uni.wroc.pl) Bash i algorytmy 20 lutego 2012 15 / 16
Start Dane a,b,c TAK TAK TAK a=0 b=0 c=0 NIE NIE NIE Δ=b 2-4ac x=-c/b NIE NIE Δ>0 Δ=0 TAK TAK x 1 =(-b- Δ)/2a x=-b/2a Niespełnione dla żadnego x. Spełnione dla dowolnego x. x 2 =(-b+ Δ)/2a Stop Elwira Wachowicz (elwira@ifd.uni.wroc.pl) Bash i algorytmy 20 lutego 2012 16 / 16