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