27
Proponowany program wykładu monograficznego 1. Elementy programowania w językach skryptów w systemie UNIX. 2. Posługiwanie się językiem awk i edytorem strumieniowym sed 3. Praca na klastrach i superkomputerach w centrach obliczeniowych; systemy kolejkowania. 4. Obliczenia równoległe. 5. Baza danych PDB i inne bazy danych cząsteczek. 6. Wizualizacja cząsteczek i wielkości z nimi związanych. 7. Programy obliczeniowe używane w chemii kwantowej oraz obliczeniach dynamiki dużych układów molekularnych.

Proponowany program wykładu monograficznego

  • Upload
    mandell

  • View
    49

  • Download
    0

Embed Size (px)

DESCRIPTION

Proponowany program wykładu monograficznego. Elementy programowania w językach skryptów w systemie UNIX. Posługiwanie się językiem awk i edytorem strumieniowym sed Praca na klastrach i superkomputerach w centrach obliczeniowych; systemy kolejkowania. Obliczenia równoległe. - PowerPoint PPT Presentation

Citation preview

Page 1: Proponowany program wykładu monograficznego

Proponowany program wykładu monograficznego

1. Elementy programowania w językach skryptów w systemie UNIX.

2. Posługiwanie się językiem awk i edytorem strumieniowym sed

3. Praca na klastrach i superkomputerach w centrach obliczeniowych; systemy kolejkowania.

4. Obliczenia równoległe.

5. Baza danych PDB i inne bazy danych cząsteczek.

6. Wizualizacja cząsteczek i wielkości z nimi związanych.

7. Programy obliczeniowe używane w chemii kwantowej oraz obliczeniach dynamiki dużych układów molekularnych.

Page 2: Proponowany program wykładu monograficznego

Języki skryptów

Powłoka - Interpreter poleceń wydawanych przez użytkownika.

Powłoki w systemie UNIX:

Nazwa Autor Pliki konfiguracyjne

Zastosowania

sh Ken Thompson

Steven Bourne

Nieinteraktywne

(skrypty)

bash Steven Bourne .bashrc wszystkie

ksh David Korn .profile wszystkie

csh Bill Joy .cshrc .login wszystkie

tcsh .tcshrc .login wszystkie

Page 3: Proponowany program wykładu monograficznego

Jakie powłoki są dostępne w systemie:

etoh:~> ls -l /bin/*sh*lrwxrwxrwx 1 root root 4 Oct 6 2005 /bin/ash -> dash-rwxr-xr-x 1 root root 625228 Dec 19 2004 /bin/bashlrwxrwxrwx 1 root root 21 Oct 6 2005 /bin/csh -> /etc/alternatives/csh-rwxr-xr-x 1 root root 83960 May 11 2005 /bin/dashlrwxrwxrwx 1 root root 4 Oct 6 2005 /bin/rbash -> bashlrwxrwxrwx 1 root root 4 Oct 6 2005 /bin/sh -> bash-rwxr-xr-x 1 root root 302476 May 19 2004 /bin/tcsh

Sprawdzanie powłoki

etoh:~> env | grep SHELLSHELL=/bin/tcsh

Page 4: Proponowany program wykładu monograficznego

Zmienne powłoki

csh shUstawianie zmiennych lokalnych

set zmienna = wartość

np.

set zm = “ala”

zmienna = wartość

np.

zm = “ala”

Ustawianie zmiennych środowiskowych (przekazywanych do procesów wywoływanych przez skrypt)

setenv zmienna = wartość

np.

setenv zm = “ala”

zmienna = wartość

export zmienna

albo:

export zmienna=wartość

np.

export zm=“ala”

Page 5: Proponowany program wykładu monograficznego

Skrypt: zbiór poleceń w języku powłoki zapisanych w pliku i wykonywanych zgodnie z sekwencją zapisu

Składnia (ogólnie):

#!powłoka opcjepolecenie1…#komentarz…polecenien

Przykład (csh)

#!/bin/csh -fecho “Prosty skrypt”echo –n “dzisiaj jest ”date#Podawanie aktualnego kataloguecho “Jestesmy w katalogu ”$cwdecho “Mamy tu nastepujace pliki”#Listowanie plikowls -l

Page 6: Proponowany program wykładu monograficznego

Parametry (argumenty) skryptu

Skrypt można wywoływać jak każde polecenie unixowe, np:

./skrypt.sh ala ma kota

Każdy parametr stojący za nazwą skryptu jest argumentem, który jest widziany we wnętrzu skryptu. Wewnątrz skryptu odwołujemy się do argumentów poprzez $1, $2, …, itd.

Argument zerowy ($0) jest nazwą skryptu

Liczba argumentów jest zakodowana w zmiennej $#argv

Page 7: Proponowany program wykładu monograficznego

Podstawienie efektu wykonania polecenia pod zmienną

set zmienna = `polecenie`

np. set a = `echo Ala ma kota`

Arytmetyka

expr wyrażenie1 operator wyrażenie2

np.

expr 2 + 3

Podstawienie: jak przy podstawieniu efektu wykonania polecenia

set zmienna = `expr wyrażenie1 operator wyrażenie2`

np.

set x = `expr 2 ‘*’ 3`

Page 8: Proponowany program wykładu monograficznego

Operatory w poleceniu expr

+ dodawanie

- odejmowanie

‘*’ albo \* mnożenie

‘/’ albo \/ dzielenie całkowite

% reszta z dzielenia

Uwaga! Polecenie expr umożliwia tylko arytmetykę całkowitą. Do arytmetyki rzeczywistej należy użyć języka awk albo kalkulatora bc wywoływanego z opcją –l.

Page 9: Proponowany program wykładu monograficznego

Do grupowania poszczególnych części wyrażenia w poleceniu expr służą nawiasy – tak jak w zwykłej arytmetyce. Nawias należy poprzedzić odwróconym ukośnikiem (backslashem)

Przykłady:

expr \( $a + $b \) \* $c

(wymuszanie dodawania przed mnożeniem)

set i = `expr $i - \( $i / 2 \) \* 2 `

(zmienna i będzie miała po tej operacji wartość równą reszcie z dzielenia całkowitego i przez 2)

Page 10: Proponowany program wykładu monograficznego

Instrukcje, które są bardzo użyteczne w skryptach (można je wykonywać również “z ręki”)

Prosta instrukcja if

csh sh

if (warunek) polecenie

if (warunek) then

polecenie1

polecenien

endif

if [ warunek ]

then

polecenie1

polecenien

fi

Page 11: Proponowany program wykładu monograficznego

Złożona instrukcja if

csh sh

if (warunek1) then

blok_poleceń

else if (warunek2) then

blok_poleceń

else

blok_poleceń

endif

if [ warunek1 ]

then

blok_poleceń

elif [ warunek2 ]

then

blok_poleceń

else

blok_poleceń

fi

Page 12: Proponowany program wykładu monograficznego

Wyrażenia warunkowe:

Wyrażenia proste:

0 – fałsz; 1 – prawda.

Wyrażenia warunkowe dotyczące plików

-d plik : plik jest katalogiem -e plik : plik istnieje

-f plik : zwykły plik -g plik : plik należy do okr. grupy

-r plik : plik daje się czytać -s plik : plik zawiera jakieś dane

-w plik : plik jest dostęny do zapisu -z plik : plik jest pusty

-x plik jest wykonywalny

-L plik : plik jest linkiem (dowiązaniem) symbolicznym

Page 13: Proponowany program wykładu monograficznego

Porównywanie (w przypadku csh wyrażeń numerycznych i tekstowych w przypadku sh tylko numerycznych)

csh sh znaczenie

W1 = = W2

W2 < W2

W1 > W2

W1 <= W2

W1 >= W2

W1 != W2

W1 –eq W2

W1 –lt W2

W1 –gt W2

W1 –le W2

W1 –gt W2

W1 –ne W2

Równe

Mniejsze

Większe

Mniejsze lub równe

Większe lub równe

Różne

Page 14: Proponowany program wykładu monograficznego

Porównywanie tekstów w sh: polecenie test

test W1=W2 teksty są równe

test W1!=W2 teksty są różne

test –z W tekst ma długość zerową lub jest niezdefiniowany

test –n W tekst ma długość niezerową

Page 15: Proponowany program wykładu monograficznego

Wyrażenia złożone

csh sh znaczenie

!W Przeczenie

W1 || W2 Alternatywa

W1 && W2 Koniunkcja

(W1) op W2 [ W1 ] op [W2 ]

grupowanie(op oznacza operator koniunkcji lub alternatywy)

Page 16: Proponowany program wykładu monograficznego

Instrukcja wyboru case

csh sh

switch zmienna

case ‘wartość1’

blok_poleceń

breaksw

case ‘wartość2’

blok_poleceń

breaksw

case default

blok_poleceń

endsw

case zmienna in

wartość1)

blok_poleceń

wartość2)

blok_poleceń

*)

blok_poleceń

esac

Page 17: Proponowany program wykładu monograficznego

Przykład skryptu csh z instrukcją case

Przykład skryptu bash z instrukcją case

Page 18: Proponowany program wykładu monograficznego

Instrukcje pętli foreach i for

csh sh

foreach (lista)

polecenie1

polecenien

end

for zmienna in lista

do

polecenie1

polecenien

done

Page 19: Proponowany program wykładu monograficznego

Instrukcja pętli while

csh sh

while (warunek)

polecenie1

polecenien

end

while [ warunek ]

do

polecenie1

polecenien

done

Page 20: Proponowany program wykładu monograficznego

Język awk

awk ‘{polecenia}END{polecenia}’ plik_albo_dane_z_STDIN

awk –f plik_z_poleceniami plik_albo_dane_z_STDIN

Polecenia przed słowem END dotyczą przetwarzania strumienia wejściowego linia po linii a polecenia po słowie END są wykonywane po wyczerpaniu strumienia wejściowego.

Przykład polecenia “z ręki” (sumowanie liczb kolejno wprowadzanych z klawiatury).

awk ‘{sum=sum+$1}END{print sum}’

Page 21: Proponowany program wykładu monograficznego

Edytor strumieniowy sed

sed [opcje] –e ‘polecenia’ plik(i)

sed [opcje] –f plik_z_poleceniami plik(i)

Page 22: Proponowany program wykładu monograficznego

Przykład zawartości pliku z poleceniami (różniczkowanie numeryczne funkcji):

{ x[NR]=$1 f[NR]=$2}END{ n=NR for (i=1;i<n;i++) p[i]=(f[i+1]-f[i])/(x[i+1]-x[i]) for (i=1;i<n-1;i++) b[i]=(p[i+1]-p[i])/(x[i+1]-x[i]) for (i=1;i<n-1;i++) print x[i],f[i],p[i],b[i]}

Page 23: Proponowany program wykładu monograficznego

Podstawowe pojęcia języka awk:

Pole: kolejny element linii strumienia danych. Pola są oddzielone odstępami jak w zwykłym tekście chyba, że zaspecyfikowano inny separator opcją –F. Pola są identyfikowane przez $1,

$2,.... Symbol $0 oznacza całą linię.

NF: liczba pól w bieżącej linii strumienia danych

NR: liczba linii strumieni danych przeczytana dotychczas.

Zmienna: cokolwiek co się pojawia i zaczyna od litery oprócz słów kluczowych.

Słowo kluczowe: służy do konstrukcji poleceń awk

Składnia poleceń języka awk bardzo przypomina składnię języka C.

Page 24: Proponowany program wykładu monograficznego

Instrukcje:

Podstawienie:

a=wyrażenie

Instrukcja warunkowa:

if (warunek1) {blok_instrukcji} else if (warunek2) {blok instrukcji} ... else {blok instrukcji}

Instrukcja pętli określonej:

for (zmienna=start;warunek zakończenia; zmienna++) {blok_instrukcji}

Instrukcja pętli z warunkiem:

while (warunek) {blok instrukcji}

Page 25: Proponowany program wykładu monograficznego

Funkcje arytmetyczne w awk:

cos(x)exp(x)int(x) część całkowitalog(x) logarytm naturalnysin(x)sqrt(x)atan2(y,x) arctan(y/x)rand() liczba losowa z przedziału <0,1)srand(x) ustawianie ziarna liczby generatora liczb losowych

Page 26: Proponowany program wykładu monograficznego

Funkcje łańcuchowe w awk:

gsub(r,s,t) zamienia wszystkie podlańcuchy odpowiadające wyrażeniu regularnemu r łańcucha t na wyrażenie s.

index(s,t) podaje położenie podłańcucha t w łańcuchu s.length(s) długość łańcucha smatch(s,r) podaje położenie wyrażenia regularnego r w łańcuhu s.split(s,a,sep) dzieli łańcuch s na elementy przechowywane w tablicy

a używając separatora sep.sprintf(‘fmt’,expr) drukuje expr do łańcucha używając printfsub(r,s,t) zamienia pierwszy podlańcuch odpowiadający

wyrażeniu regularnemu r łańcucha t na wyrażenie s.substr(s,p,n) wycina z łańcucha s podłańcuch o maksymalnej

długości p, poczynając od pozycji n.tolower(s) zmienia duże litery na małetoupper(s) zmienia małe litery na duże

Page 27: Proponowany program wykładu monograficznego

Literatura:

Unix i skrypty:

1. J.C.Armstrong, D. Taylor „Unix dla każdego”, Helion, Gliwice 2000

2. A.Southerton, E.C. Perkins, Jr. „Słownik poleceń systemu Unix i X”, WNT, Warszawa 1995

sed i awk:

1. D. Dougerty, A. Robbins „sed i awk”, O’Reilly & Associates, 1997