Bardzo krótki kurs Perla



Podobne dokumenty
Programowanie w języku Python. Grażyna Koba

Powłoka bash. Kurs systemu Unix 1

Wstęp do Informatyki i Programowania Laboratorium: Lista 0 Środowisko programowania

System operacyjny Linux

Automatyzacja kompilacji. Automatyzacja kompilacji 1/28

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Sposoby wykrywania i usuwania błędów. Tomasz Borzyszkowski

J ezyk AWK Kurs systemu UNIX

Programowanie Proceduralne

Make jest programem komputerowym automatyzującym proces kompilacji programów, na które składa się wiele zależnych od siebie plików.

Komentarze w PHP (niewykonywane fragmenty tekstowe, będące informacją dla programisty)

Wstęp do Informatyki dla bioinformatyków

Skrypty powłoki w systemie Linux

1 Podstawy c++ w pigułce.

Temat zajęć: Tworzenie skryptów powłoki systemu operacyjnego.

1 Podstawy c++ w pigułce.

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

Administracja sieciowymi systemami operacyjnymi III Klasa - Linux

Wstęp do informatyki. stęp do informatyki Polecenia (cz.2)

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 6. Karol Tarnowski A-1 p.

Programowanie obiektowe

Skrypty powłoki Skrypty Najcz ciej u ywane polecenia w skryptach:

Wskaźniki. Przemysław Gawroński D-10, p marca Wykład 2. (Wykład 2) Wskaźniki 8 marca / 17

Wstęp do Programowania, laboratorium 02

Laboratorium 3: Preprocesor i funkcje ze zmienną liczbą argumentów. mgr inż. Arkadiusz Chrobot

Tablice i struktury. czyli złożone typy danych. Programowanie Proceduralne 1

Wskaźniki. Programowanie Proceduralne 1

Cwiczenie nr 1 Pierwszy program w języku C na mikrokontroler AVR

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe

Tablice (jedno i wielowymiarowe), łańcuchy znaków

Wykład 3 Składnia języka C# (cz. 2)

public: // interfejs private: // implementacja // składowe klasy protected: // póki nie będziemy dziedziczyć, // to pole nas nie interesuje

- wszystkie elementy - wszystkie elementy

Systemy operacyjne. Laboratorium 7. Perl podstawy. Jarosław Rudy Politechnika Wrocławska 27 kwietnia 2017

Stałe i zmienne znakowe. Stała znakowa: znak

Wprowadzenie do języka Java

Podstawy programowania w języku C++

Katedra Elektrotechniki Teoretycznej i Informatyki. wykład 12 - sem.iii. M. Czyżak

Jerzy Nawrocki, Wprowadzenie do informatyki

Programowanie I. O czym będziemy mówili. Plan wykładu nieco dokładniej. Plan wykładu z lotu ptaka. Podstawy programowania w językach. Uwaga!

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 3. Karol Tarnowski A-1 p.

Tablice deklaracja, reprezentacja wewnętrzna

Bash - wprowadzenie. Bash - wprowadzenie 1/39

Tworzenie oprogramowania

Instrukcja do ćwiczenia P4 Analiza semantyczna i generowanie kodu Język: Ada

Języki programowania obiektowego Nieobiektowe elementy języka C++

Wyrażenia regularne. Wyrażenia regularne 1/41

Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek].

Języki programowania zasady ich tworzenia

część 8 wskaźniki - podstawy Jarosław Gramacki Instytut Informatyki i Elektroniki Podstawowe pojęcia

Automatyzacja kompilacji. Automatyzacja kompilacji 1/40

Python wprowadzenie. Warszawa, 24 marca PROGRAMOWANIE I SZKOLENIA

Wyrażenie include(sciezka_do_pliku) pozwala na załadowanie (wnętrza) pliku do skryptu php. Plik ten może zawierać wszystko, co może się znaleźć w

Systemy operacyjne. Laboratorium 5. Awk podstawy. Jarosław Rudy Politechnika Wrocławska 28 lutego 2017

Język C, tablice i funkcje (laboratorium, EE1-DI)

Dynamiczne przetwarzanie stron. dr Beata Kuźmińska-Sołśnia

Skrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać

Tablice, funkcje - wprowadzenie

Zmienne, stałe i operatory

System operacyjny Linux

Systemy operacyjne. Laboratorium 9. Perl wyrażenia regularne. Jarosław Rudy Politechnika Wrocławska 28 lutego 2017

Laboratorium 3: Tablice, tablice znaków i funkcje operujące na ciągach znaków. dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski

Wykład VI. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

PROGRAMOWANIE w C prolog

Laboratorium 1. I. Zainstaluj program Eclipse (wersja C/C++ w odpowiednim systemie operacyjnym

Język C, tablice i funkcje (laboratorium)

Programowanie w C++ Wykład 8. Katarzyna Grzelak. 15 kwietnia K.Grzelak (Wykład 8) Programowanie w C++ 1 / 33

wykład III uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - zarządzanie pamięcią, struktury,

ISO/ANSI C - funkcje. Funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje

GNU GProf i GCov. przygotował: Krzysztof Jurczuk Politechnika Białostocka Wydział Informatyki Katedra Oprogramowania ul. Wiejska 45A Białystok

Języki programowania. Przetwarzanie tablic znaków. Część druga. Autorzy Tomasz Xięski Roman Simiński

Lab 9 Podstawy Programowania

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 12. Karol Tarnowski A-1 p.

int tab[5]; tab[1]; ciągły obszar pamięci, w którym umieszczone są elementy tego samego typu macierz [ ] - dwuargumentowy operator indeksowania

C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów

Podstawy programowania

PODSTAWY INFORMATYKI

Wstęp do informatyki- wykład 11 Funkcje

1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami

Wstęp do programowania

JĘZYK SHELL JEST PEŁNYM JĘZYKIEM PROGRAMOWANIA

Tworzenie oprogramowania

Narzędzia informatyczne w językoznawstwie

ISO/ANSI C - funkcje. Funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje

Metody numeryczne Laboratorium 2

Podstawy programowania. Wykład Pętle. Tablice. Krzysztof Banaś Podstawy programowania 1

Wstęp do informatyki- wykład 9 Funkcje

wykład II uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - funkcje, tablice i wskaźniki wykład II dr Jarosław Mederski Spis

Jerzy Nawrocki, Wprowadzenie do informatyki

Języki C i C++ Wykład: 2. Wstęp Instrukcje sterujące. dr Artur Bartoszewski - Języki C i C++, sem. 1I- WYKŁAD

Podstawy Kompilatorów

Instrukcje. Operatory. Operatory. Instrukcje sterujące. wyrażenie1 && wyrażenie2 ;

Smarty PHP. Leksykon kieszonkowy

Ćwiczenie 7 z Podstaw programowania. Język C++, programy pisane w nieobiektowym stylu programowania. Zofia Kruczkiewicz

Zajęcia nr 1 Podstawy programowania. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

Laboratorium 1. Programowanie II - Kierunek Informatyka. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej

Myśl w języku Python! : nauka programowania / Allen B. Downey. Gliwice, cop Spis treści

Transkrypt:

Bardzo krótki kurs Perla... i trochę trobiazgów, między innymi make urs systemu Unix 1

Perl Practical Extraction and Report Language Opracowany w 1986 (Larry Wall) Następca (?) AWK i sed, poprzednik (?) Pythona, od którego jest szybszy i brzydszy. Składniowo nawiązujący trochę do AWK, C, powłoki (od której wziął na przykład odwrotne apostrofy). urs systemu Unix 2

Perlowe struktury danych Skalary (nazwa od $) $val = "napis" $val = 10.1 Tablice (wektory, nazwa od @) @studenci=("ala","ola","zbyś") print $studentci[0] # ala studenci[3] = "beata" # nowy element @studenci=() # zerowanie tablicy Tablice asocjacyjne (nazwa od %): %emp =("Julie", "President", print $emp {"Julie}; #wypisze "Mary", "VP"); president urs systemu Unix 3

$emp{"john"} = "controller"; %emp =(); # empty hash urs systemu Unix 4

Operatory dla napisów Konkatenacja: znak. print "hello"."world" daje helloworld. Operator powtarzania str x num wielokrotna konkatenacja napisu. urs systemu Unix 5

Operator porównania wartości skalarnych operacja liczba napis równe == eq różne!= ne mniejsze < lt większe > gt mniejsze równe <= le większe równe >= ge urs systemu Unix 6

Wzorce Dopasowanie wzorców: if ($var =~ m/pattern/) {...} if ($var!~ m/pattern/) {...} Podstawienie: $var1 =~ s/pattern/replacement/; urs systemu Unix 7

Funkcje Definicja funkcji uźytkownik: sub subname { Statement_1; Statement_2; Statement_3; } Jak w bash-u: funkcja zwraca wartość zwracana przez ostatnia jej instrukcje. urs systemu Unix 8

Wywoływanie funkcji $var = myroutine( paramters); @array = myroutine( parameters); urs systemu Unix 9

Argumenty Po wywołaniu podprogramu podprogramu nast epuje lista argumentów w nawiasach. Automatycznie przypisuja sie one do zmiennej @_ Zatem kolejne argumenty to : $_[0], $_[1],... Zmienna @_ jest lokalna w procedurze Przekazywanie tablic (rownieź asocjacyjnych) to przekazywanie referencji do tablic. urs systemu Unix 10

Jak łatwo opanować Perla? Wiemy jak działa awk, sed, find? Jeżeli tak, to programy w każdym z tych trzech języków można przetłumaczyć automatycznie na Perla (i poczytać). Służą do tego programy a2p, s2p oraz find2perl. urs systemu Unix 11

Przykładowy program w awk BEGIN {x=0} {Tab[Nr] = $0} END { for (i=nr; i>0; i--) print Tab[i]; } urs systemu Unix 12

Wynik translacji do Perla $, = ; # set output field separator $\ = "\n"; # set output record separator $X = 0; while (<>) { chomp; # strip record separator $Tab{$Nr} = $_; } for ($i = $.; $i > 0; $i--) { print $Tab{$i}; } urs systemu Unix 13

Inny prosty przykład Program w awk {print $2 " --- " $1} Translacja do Perla #... while (<>) { ($Fld1,$Fld2) = split(, $_, 9999); print $Fld2. ---. $Fld1; } urs systemu Unix 14

Narzędzia wspomagające uruchamianie programów kompilator Opcje kompilatora (dla gcc to opcje -Wall, -pedantic, -ansi). Makrodefinicje przydatne w debugowaniu: LINE, FILE, DATE, TIME. Makrodefinicja assert pozwala na testowanie warunków. Gdy zdefiniowana jest stała NDEBUG wówczas assert kompiluje się do pustego kodu. Stałą tę (i wszystkie inne) możemy zdefiniować w programi (#define NDEBUG) lub wywołując kompilator z opcją -DNDEBUG. urs systemu Unix 15

Debuger gdb Aby zeń korzystać, trzeba kompilować program z opcją -g. Uruchamiamy pisząc gdb <nazwa-pliku-wykonywalnego>. Polecenie help spowoduje wyświetlenie listy dostępnych poleceń. urs systemu Unix 16

Korzystanie z gdb Uruchamiamy program poleceniem run. Badanie zmiennych realizujemy za pomocą polecenia print <nazwa zmiennej> Polecenie list wyświetla fragment programu. Do wstawiania punktów przerwania służy polecenie breakpoint (można napisać help breakpoint). urs systemu Unix 17

Punkty przerwania Przerwanie w pewnej linii programu: break 20. Wznawiamy wykonywanie za pomocą polecenia cont. Za pomocą condition można uzyskiwać punkty przerwania warunkowe tj. działające jedynie przy spełnionym warunku. Polecenie ignore pozwala zignorować pewną ilość przerwań w danym punkcie. urs systemu Unix 18

Narzędzia analizujące kod Program ctags tworzy indeks funkcji (i innych obiektów) podając miejsca, w których dana funkcja jest definiowana. Program cxref analogicznie, ale dla wszystkich symboli w programie. Program cflow drukuje drzewo wywołań funkcji. urs systemu Unix 19

Działanie programu cflow Ponumerowane wiersze w raporcie, dla każdej funkcji wypisane funkcje w niej wywołane. Pierwsze wystąpienie funkcji w raporcie wraz z dokładnym opisem, dalsze wystąpienia tylko numer linii. Przykładowy wydruk: 1 main: int(), <licznik.c 8> 2 fopen: <> 3 printf: <> 4 CzytajSlowo: int(), <licznik.c 150> 5 getc: <> 6 ungetc: <> 7 AnalizujSlowo: void(), <licznik.c 195> 8 DodajSlowo: void(), <licznik.c 50> 9 TworzSlowo: struct*(), <licznik.c 70> 10 malloc: <> urs systemu Unix 20

11 ZapiszNazwe: char*(), <licznik.c 136> 12 malloc: <> 13 strlen: <> 14 strcpy: <> 15 CzyKluczowe: int(), <licznik.c 263> 16 tolower: <> 17 strcmp: <> 18 AnalizujSlowo: 7 19 DodajSlowo: 8 (...) urs systemu Unix 21

Program ctags Wytwarza dane w formacie akceptowalnym przez różne edytory (vi, emacs, joe,...) lub do czytanie przez człowieka (opcja -x) Potem w vim można pisać: :tag <nazwa-funkcji> i przenosimy się do jej definicji. Umożliwia znajdywanie miejsc, w których dany obiekt jest definiowany (inteligentniejsze niż wyszukiwanie) Domyślnie tworzy plik tags, dla wielu plików wejściowych. Działa dla wielu języków, między innymi dla C, C++, Pascal, Perl, AWK, Python, PHP, Java, Tcl, język powłoki,... (jest ich w sumie ponad 26) urs systemu Unix 22

Wynik progamu ctags -x AnalizujSlowo function 195 licznik.c void AnalizujSlowo(char *slowo) { CzyKluczowe function 263 licznik.c int CzyKluczowe(char *slowo) { CzytajSlowo function 150 licznik.c int CzytajSlowo(char *tab) { DodajSlowo function 50 licznik.c void DodajSlowo(int typ, char *slowo) DodajZmienna function 31 licznik.c void DodajZmienna(char *nazwa, int war MAX macro 6 zadanie5.c #define MAX 200 // Maksymalna dl urs systemu Unix 23

Program crefs Podaje linie (i plik) w której jest definicja, jak również inne wystąpienia danej nazwy. Linie z definicją oznaczane są znakiem *, znak = oznacza, że zmienna jest modyfikowana. Przykładowy wynik: wart licznik.c TworzZmienna 85* 90 wartosc licznik.c DodajZmienna 31* 36 40 znak licznik.c CzytajSlowo 153* 155= 157 157 157 158= 158 158 160 164 165= 166= 166 168 173 176 176 176 176 176 177 178= 181 184 urs systemu Unix 24

Profilowanie kodu Do profilowania kodu może służyć polecenie prof lub gprof Wykonuje on pewien program i następnie generuje raport mówiący o tym, ile i gdzie czasu program spędza. Nie zaszkodzi skompilować z opcją -p lub -gp. urs systemu Unix 25

Program make Pozwala określać zależności pomiędzy plikami i uaktualniać te pliki, które naprawdę tego wymagają. Danymi do programu make jest plik tekstowy zawierający zadania do wykonania (nazywane regułami). Polecenia zapisane są w języku powłoki. Domyślną nazwą pliku z zadaniami jest makefile (lub Makefile). urs systemu Unix 26

Format pliku makefile Plik jest ciągiem wpisów o następującej postaci: plik docelowy: pliki potrzebne do jego utworzenia <TAB> lista poleceń Pliki oddzielane spacjami, polecenia średnikiem Możma pisać polecenia w różnych linijkach używając ;\. urs systemu Unix 27

Znaczenie pliku makefile Za pomocą reguł określamy co należy robić, aby otrzymać plik (lista poleceń)...... i kiedy to robić: a) wtedy, gdy tworzony plik nie istnieje lub b) któryś z plików nań wpływających po wykonaniu make ma datę późniejszą niż tworzony plik. Wywołanie programu: make plik-do-utworzenia. Plik-do-utworzenia powinien występować po lewej stronie : w jakiejś regule. make bez parametrów oznacza polecenie wykonania pliku z pierwszej reguły. urs systemu Unix 28

Przykład # Plik makefile lub Makefile newfile: main.o p1.o p2.o /usr/lib/ll.a cc -o newfile main.o p1.o p2.o /usr/lib/bibl.a main.o: main.c cc -c main.c p1.o: p1.c cc -c p1.c p2.o: p2.s as -o p2.o p2.s clear: rm *.o maybe: yes.h no.h cp yes.h no.h /usr/dd urs systemu Unix 29

Komentarz Nie jest konieczne by nazwa-pliku rzeczywiście oznaczała jakiś plik (make clear) Za pomocą znaku # piszemy komentarze Możliwe nietypowe wykorzystania (linia z maybe) Program make można wykorzystywać do tworzenia kilku wersji programu. urs systemu Unix 30

Inne często spotykane obiekty fikcyjne clean usuwa utworzone pliki clobber usuwa pliki i katalogi (odinstalowywanie) install tworzy programy, kopiuje strony man-a, kopiuje program do odpowiedniego katalogu, etc. all jak jest wiele obiektów, to tworzy je wszystkie. urs systemu Unix 31