Narzędzia informatyczne w językoznawstwie

Podobne dokumenty
Dzisiejszy wykład. Narzędzia informatyczne w językoznawstwie. Usuwanie elementów z początku tablicy. Dodawanie elementów do początku tablic

Dzisiejszy wykład. Programowanie w Perlu. Usuwanie elementów z początku tablicy. Dodawanie elementów do początku tablic

Dzisiejszy wykład. Programowanie w Perlu. Co to jest hasz? Inicjalizacja haszów

Programowanie 2. Perl - Tablice asocjacyjne oraz funkcje tablicowe. Marcin Junczys-Dowmunt

Narzędzia informatyczne w językoznawstwie

Dzisiejszy wykład. Narzędzia informatyczne w językoznawstwie Perl- Tablice asocjacyjne oraz funkcje tablicowe. Cotojesthasz? Inicjalizacja haszów

Perl a XML. Narzędzia informatyczne w językoznawstwie. Generowanie danych XML - Przykład. Generowanie danych XML. Perl - Przetwarzanie XML

Wyrażenia regularne w Perlu. Narzędzia informatyczne w językoznawstwie. Przykład bardziej sensowny perlowy minigrep.pl. Pierwsze przykłady

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

INFORMATYKA W SZKOLE. Podyplomowe Studia Pedagogiczne. Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227

Pętle w PERLU postać ogólna

Narzędzia informatyczne w językoznawstwie

KARTA KURSU. Języki skryptowe

Pożyteczne linki: PERL Practical Extraction and Report Language

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

PERL Practical Extraction and Report Language

Struktury. Przykład W8_1

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

Materiał uzupełniający do ćwiczen z przedmiotu: Programowanie w C ++ - ćwiczenia na wskaźnikach

Tworzenie stron internetowych z wykorzystaniem HTM5, JavaScript, CSS3 i jquery. Łukasz Bartczuk

- wszystkie elementy - wszystkie elementy

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

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

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

Python wprowadzenie. Warszawa, 24 marca PROGRAMOWANIE I SZKOLENIA

Test przykładowy 2 PAI WSB Wrocław /06/2018

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

7. Pętle for. Przykłady

System operacyjny Linux

Wykład 4 Delegat (delegate), właściwości indeksowane, zdarzenie (event) Zofia Kruczkiewicz

Programowanie obiektowe

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6

Wykład IV PASCAL - łańcuch znaków, - procedury i funkcje, - sortowanie bąbelkowe

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

Podstawy programowania. Wykład: 7. Funkcje Przekazywanie argumentów do funkcji. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

J ezyk AWK Kurs systemu UNIX

Komputerowe systemy na rynkach finansowych. wykład 5. MQL4 - funkcje operujące na obiektach wykresu

Pętle. for, while, do... while, foreach. Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.

Wstęp do Informatyki dla bioinformatyków

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

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Podstawy VBA cz. 1. Programowanie komputerowe

Obsługa plików. Systemy Operacyjne 2 laboratorium. Mateusz Hołenko. 25 września 2011

lekcja 8a Gry komputerowe MasterMind

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

Elementy języka C. ACprogramislikeafastdanceonanewlywaxeddancefloorbypeople carrying razors.

Język PL/SQL Procedury i funkcje składowane

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

TOPIT Załącznik nr 3 Programowanie aplikacji internetowych

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

Lekcja 1. Składnia języka zmienne i podstawowe instrukcje PHP. Do wyświetlania tekstu służy instrukcja echo echo Hello world ;

Wykresy i interfejsy użytkownika

Szablony klas, zastosowanie szablonów w programach

KOLEJKA (QUEUE) (lista fifo first in, first out)

media Blitz wydajne sytemy szablonów

Podstawy programowania skrót z wykładów:

PERL zarządzanie złożonością. Pavel Pachkouski

Zapis algorytmów: schematy blokowe i pseudokod 1

Struktura programu. Projekty złożone składają się zwykłe z różnych plików. Zawartość każdego pliku programista wyznacza zgodnie z jego przeznaczeniem.

PHP: bloki kodu, tablice, obiekty i formularze


Wskaźniki. nie są konieczne, ale dają językowi siłę i elastyczność są języki w których nie używa się wskaźników typ wskaźnikowy typ pochodny:

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Biblioteka standardowa - operacje wejścia/wyjścia

Metody numeryczne Laboratorium 2

Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach?

1 Podstawy c++ w pigułce.

System operacyjny Linux

5.4. Tworzymy formularze

Język Python (2) Język Python (2) 1/36

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

Obliczenia na stosie. Wykład 9. Obliczenia na stosie. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 266 / 303

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

Być może jesteś doświadczonym programistą, biegle programujesz w Javie,

Wstęp do programowania

Magia Ruby : programowanie na wesoło / Eric Weinstein. Warszawa, Spis treści

5 Przygotował: mgr inż. Maciej Lasota

Programowanie w VB Proste algorytmy sortowania

Metody Metody, parametry, zwracanie wartości

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

Programowanie Niskopoziomowe

3 Delegacje. 3.1 Tworzenie delegacji. 3.2 Skojarzenie delegacji z procedurą czy funkcją

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

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

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

Programowanie Niskopoziomowe

Pobieranie argumentów wiersza polecenia

Należy ściągnąć oprogramowanie Apache na platformę

Podstawy programowania. Wykład: 4. Instrukcje sterujące, operatory. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

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

Systemy operacyjne. Laboratorium 8. Perl find

Wskaźniki. Programowanie Proceduralne 1

Tworzenie nowej tablicy

Programowanie komputerowe. Zajęcia 1

Funkcje są prawdopodobnie najważniejszą częścią każdego poważnego programu (w każdym języku programowania).

Podstawy JavaScript ćwiczenia

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 16 kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 27

Wykład 9 Kolekcje, pliki tekstowe, Przykład: Notatnik

Transkrypt:

Narzędzia informatyczne w językoznawstwie Perl - Manipulowanie tablic, zmienne lokalne, funkcje Marcin Junczys-Dowmunt junczys@amu.edu.pl Zakład Logiki Stosowanej http://www.logic.amu.edu.pl 12. grudnia 2007 Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 1/22

Dzisiejszy wykład Wrócimy do tablic i omówimy: wydajne dodawanie i usuwanie elementów z tablic Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 2/22

Dzisiejszy wykład Wrócimy do tablic i omówimy: wydajne dodawanie i usuwanie elementów z tablic Omówimy zmienne lokalne oraz zakresy ważności zmiennych Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 2/22

Dzisiejszy wykład Wrócimy do tablic i omówimy: wydajne dodawanie i usuwanie elementów z tablic Omówimy zmienne lokalne oraz zakresy ważności zmiennych Wprowadzimy pojęcie funkcji i omówimy: wykonywanie funkcji zwracanie argumentów przez funkcje przekazywanie argumentów do funkcji Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 2/22

Usuwanie elementów z początku tablicy 1 @ kolejka = qw( Marysia Janek Hania Kuba ) while ( @kolejka ) { print " Osoby w kolejce : ". join ( @kolejka )."\n"; print " Kasjerka obsługuje : ". shift ( @kolejka )."\n"; 5 Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 3/22

Usuwanie elementów z początku tablicy 1 @ kolejka = qw( Marysia Janek Hania Kuba ) while ( @kolejka ) { print " Osoby w kolejce : ". join ( @kolejka )."\n"; print " Kasjerka obsługuje : ". shift ( @kolejka )."\n"; 5 Funkcja shift usuwa pierwszy element tablicy i zwraca go Indeksy przesuwają się, stąd nazwa shift Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 3/22

Dodawanie elementów do początku tablic 1 @ kolejka = qw( Marysia Janek Hania Kuba ) while ( @kolejka ) { print " Osoby w kolejce : ". join ( @kolejka )."\n"; $aktualna = shift ( @ kolejka ); 5 print " Kasjerka obsługuje : $aktualna \ n"; if( rand () < 0.5) { print " Zly bilet, $aktualna wraca do okna \ n"; unshift ( @kolejka, $aktualna ); 10 Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 4/22

Dodawanie elementów do początku tablic 1 @ kolejka = qw( Marysia Janek Hania Kuba ) while ( @kolejka ) { print " Osoby w kolejce : ". join ( @kolejka )."\n"; $aktualna = shift ( @ kolejka ); 5 print " Kasjerka obsługuje : $aktualna \ n"; if( rand () < 0.5) { print " Zly bilet, $aktualna wraca do okna \ n"; unshift ( @kolejka, $aktualna ); 10 Funkcja unshift wstawia element na początek tablicy Wstawia kilka elementów, gdy drugim elementem jest lista Przesunięcie indeksów następuje w drugą stronę Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 4/22

Dodawanie elementów do końca tablicy 1 @ kolejka = qw( Marysia Janek Hania Kuba ) while ( @kolejka ) { print " Osoby w kolejce : ". join ( @kolejka )."\n"; $aktualna = shift ( @ kolejka ); 5 print " Kasjerka obsługuje : $aktualna \ n"; if( rand () < 0.5) { print " Zly bilet, $aktualna wraca na koniec \ n"; push ( @kolejka, $aktualna ); 10 Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 5/22

Dodawanie elementów do końca tablicy 1 @ kolejka = qw( Marysia Janek Hania Kuba ) while ( @kolejka ) { print " Osoby w kolejce : ". join ( @kolejka )."\n"; $aktualna = shift ( @ kolejka ); 5 print " Kasjerka obsługuje : $aktualna \ n"; if( rand () < 0.5) { print " Zly bilet, $aktualna wraca na koniec \ n"; push ( @kolejka, $aktualna ); 10 Funkcja push wstawia element na koniec tablicy Wstawia kilka elementów, gdy drugim elementem jest lista Dodawanie elementów na końcu nie przesuwa indeksów Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 5/22

Usuwanie elementów z końca tablica 1 @ kolejka = qw( Marysia Janek Hania Kuba ) while ( @kolejka ) { print " Osoby w kolejce : ". join ( @kolejka )."\n"; $aktualna = shift ( @ kolejka ); 5 print " Kasjerka obsługuje : $aktualna \ n"; if( rand () < 0.5) { print " Zly bilet, $aktualna wraca na koniec \ n"; push ( @kolejka, $aktualna ); 10 if( rand () < 0.5) { print pop ( @kolejka )." ma dosyć czekania \n"; Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 6/22

Usuwanie elementów z końca tablica 1 @ kolejka = qw( Marysia Janek Hania Kuba ) while ( @kolejka ) { print " Osoby w kolejce : ". join ( @kolejka )."\n"; $aktualna = shift ( @ kolejka ); 5 print " Kasjerka obsługuje : $aktualna \ n"; if( rand () < 0.5) { print " Zly bilet, $aktualna wraca na koniec \ n"; push ( @kolejka, $aktualna ); 10 if( rand () < 0.5) { print pop ( @kolejka )." ma dosyć czekania \n"; Funkcję pop poznaliśmy już wcześniej Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 6/22

Wstawianie i usuwanie dowolnych elementów tablicy I 1 splice TABLICA, PRZESUNIĘCIE, DŁUGOŚĆ, LISTA splice TABLICA, PRZESUNIĘCIE, DŁUGOŚĆ splice TABLICA, PRZESUNIĘCIE splice TABLICA Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 7/22

Wstawianie i usuwanie dowolnych elementów tablicy I 1 splice TABLICA, PRZESUNIĘCIE, DŁUGOŚĆ, LISTA splice TABLICA, PRZESUNIĘCIE, DŁUGOŚĆ splice TABLICA, PRZESUNIĘCIE splice TABLICA Funkcja splice jest bardziej uniwersalna od poprzednich Potrafi usuwać i dodawać elementy w dowolnym miejscu Zwraca wszystkie usunięte elementy w kontekście listowym Zwraca ostatni usunięty element w kontekście skalarnym Liczba indeksów jest odpowiednio zmniejszana lub zwiększana Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 7/22

Wstawianie i usuwanie dowolnych elementów tablicy II splice może zastąpić każdą z poprzednich funkcji 1 push (@a,$x,$y) splice (@a,@a,0,$x,$y) pop (@a) splice (@a, -1) shift (@a) splice (@a,0,1) unshift (@a,$x,$y) splice (@a,0,0,$x,$y) 5 $a[$i] = $y splice (@a,$i,1, $y) Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 8/22

Wstawianie i usuwanie dowolnych elementów tablicy II splice może zastąpić każdą z poprzednich funkcji 1 push (@a,$x,$y) splice (@a,@a,0,$x,$y) pop (@a) splice (@a, -1) shift (@a) splice (@a,0,1) unshift (@a,$x,$y) splice (@a,0,0,$x,$y) 5 $a[$i] = $y splice (@a,$i,1, $y) i nie tylko 1 splice (@a,3,3) # usuń 3 elementy od 3 splice (@a,3,3,$x,$y) # zastąp 3 elementy od 3 # elementami $x i $y splice (@a,3) # usuń wszystkie elementy od 3 5 splice (@a) # usuń wszystkie elementy splice (@a,3,0, $x) # wstaw $x na 3, przesuń resztę Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 8/22

Kontekst listowy a zmienne skalarne Jakie będą odpowiednio wartości zmiennych $test, $test2 oraz @tablica2 w poniższych przykładach i dlaczego? 1 @ tablica = qw( aa ab ba bb ); 5 $test = @ tablica ; print " Test 1: $test \n"; ( $test ) = @tablica ; print " Test 2: $test \n"; ( $test, $test2 ) = @tablica ; 10 print " Test 3: $test, $test2 \n"; ( @tablica2, $test ) = @tablica ; print " Test 4: $test \n"; Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 9/22

Zmienne lokalne i zmienne globalne I Jak dotąd korzystaliśmy tylko ze zmiennych globalnych Ogólnie uznaję sie to za zły styl programowania Dlaczego? Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 10/22

Zmienne lokalne i zmienne globalne I Jak dotąd korzystaliśmy tylko ze zmiennych globalnych Ogólnie uznaję sie to za zły styl programowania Dlaczego? Czym rózni się zmienna lokalna od globalnej? Zmienna globalna jest dostępna w każdym miejscu naszego programu Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 10/22

Zmienne lokalne i zmienne globalne I Jak dotąd korzystaliśmy tylko ze zmiennych globalnych Ogólnie uznaję sie to za zły styl programowania Dlaczego? Czym rózni się zmienna lokalna od globalnej? Zmienna globalna jest dostępna w każdym miejscu naszego programu Zmienna lokalna jest dostępna tylko wewnątrz bloku, w którym została stworzona Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 10/22

Zmienne lokalne i zmienne globalne I Jak dotąd korzystaliśmy tylko ze zmiennych globalnych Ogólnie uznaję sie to za zły styl programowania Dlaczego? Czym rózni się zmienna lokalna od globalnej? Zmienna globalna jest dostępna w każdym miejscu naszego programu Zmienna lokalna jest dostępna tylko wewnątrz bloku, w którym została stworzona Zmienna globalna przestaje istnieć, gdy zakończy się program Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 10/22

Zmienne lokalne i zmienne globalne I Jak dotąd korzystaliśmy tylko ze zmiennych globalnych Ogólnie uznaję sie to za zły styl programowania Dlaczego? Czym rózni się zmienna lokalna od globalnej? Zmienna globalna jest dostępna w każdym miejscu naszego programu Zmienna lokalna jest dostępna tylko wewnątrz bloku, w którym została stworzona Zmienna globalna przestaje istnieć, gdy zakończy się program Zmienne lokalna przestaje istnieć, gdy opuszczamy blok, w którym zostałą stworzona Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 10/22

Zmienne lokalne i zmienne globalne I Jak dotąd korzystaliśmy tylko ze zmiennych globalnych Ogólnie uznaję sie to za zły styl programowania Dlaczego? Czym rózni się zmienna lokalna od globalnej? Zmienna globalna jest dostępna w każdym miejscu naszego programu Zmienna lokalna jest dostępna tylko wewnątrz bloku, w którym została stworzona Zmienna globalna przestaje istnieć, gdy zakończy się program Zmienne lokalna przestaje istnieć, gdy opuszczamy blok, w którym zostałą stworzona Uwaga: Zmienna $ jest zmienną globalną! Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 10/22

Zmienne lokalne i zmienne globalne II 1 $globalna = 4; print " Globalna : $globalna \n"; { 5 my $lokalna = 5; print " Lokalna : $lokalna \n"; print " Globalna : $globalna \n"; 10 print " Lokalna : $lokalna \n"; Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 11/22

Zmienne lokalne i zmienne globalne II 1 $globalna = 4; print " Globalna : $globalna \n"; { 5 my $lokalna = 5; print " Lokalna : $lokalna \n"; print " Globalna : $globalna \n"; 10 print " Lokalna : $lokalna \n"; Zmienna lokalna jest tworzona wewnątrz bloku za pomocą słowa kluczowego my Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 11/22

Zmienne lokalne i zmienne globalne II 1 $globalna = 4; print " Globalna : $globalna \n"; { 5 my $lokalna = 5; print " Lokalna : $lokalna \n"; print " Globalna : $globalna \n"; 10 print " Lokalna : $lokalna \n"; Zmienna lokalna jest tworzona wewnątrz bloku za pomocą słowa kluczowego my Bez słowa kluczowego my stworzylibyśmy kolejną zmienną globalną Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 11/22

Zmienne lokalne i zmienne globalne III 1 my $x = 4; print " Blok 1: x = $x\n"; { my $x = 5; 5 my $y = 3; print " Blok 2: x = $x, y = $y\n"; { my $x; print " Blok 3: x = $x, y = $y\n"; 10 print " Blok 1: x = $x, y = $y\n"; Zmienna lokalna stworzona poza jakimkolwiek blokiem jest zmienną globalną Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 12/22

Zmienne lokalne i zmienne globalne III 1 my $x = 4; print " Blok 1: x = $x\n"; { my $x = 5; 5 my $y = 3; print " Blok 2: x = $x, y = $y\n"; { my $x; print " Blok 3: x = $x, y = $y\n"; 10 print " Blok 1: x = $x, y = $y\n"; Zmienna lokalna stworzona poza jakimkolwiek blokiem jest zmienną globalną my tworzy zupełnie nową zmienną, która przykrywa inne zmienne (z otaczających bloków) o tej samej nazwie Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 12/22

Funkcje w Perlu Nasze programy zaczynają się rozrastać Byłoby lepiej, gdybyśmy znali sposób na uporządkowanie naszego kodu Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 13/22

Funkcje w Perlu Nasze programy zaczynają się rozrastać Byłoby lepiej, gdybyśmy znali sposób na uporządkowanie naszego kodu Takim sposobem są funkcje Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 13/22

Funkcje w Perlu Nasze programy zaczynają się rozrastać Byłoby lepiej, gdybyśmy znali sposób na uporządkowanie naszego kodu Takim sposobem są funkcje Funkcje to małe podprogramy, z których możemy korzystać wiele razy w naszym programie Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 13/22

Funkcje - przykład programu bez funkcji 1 print " Podaj imie : "; while ( my $name = < STDIN >) { chomp ( $name ); exit if( $name eq ); 5 print " Witaj, $name!\n"; print " Podaj imie : "; Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 14/22

Funkcje - przykład programu bez funkcji 1 print " Podaj imie : "; while ( my $name = < STDIN >) { chomp ( $name ); exit if( $name eq ); 5 print " Witaj, $name!\n"; print " Podaj imie : "; Podobny program widzieliśmy na ostatnim wykładzie Co się stanie, gdy podamy pustę imię? Dlaczego pojawia się dwa razy ciąg Podaj imię? Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 14/22

Funkcje - pierwszy przykład z funkcjami 1 while ( my $name = pobierz_ imie ()) { print " Witaj, $name!\n"; 5 sub pobierz_ imie { print " Podaj imie : "; my $name = < STDIN >; chomp ( $name ); return $name ; 10 Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 15/22

Struktura funkcji Funkcje to bloki programu, które są zapisywane poza właściwym programem (za lub przed) Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 16/22

Struktura funkcji Funkcje to bloki programu, które są zapisywane poza właściwym programem (za lub przed) Wykonują się one dopiero, gdy jawnie użyjemy nazwy funkcji we właściwym programie Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 16/22

Struktura funkcji Funkcje to bloki programu, które są zapisywane poza właściwym programem (za lub przed) Wykonują się one dopiero, gdy jawnie użyjemy nazwy funkcji we właściwym programie Słowo kluczowe sub poprzedza nazwę funkcji, którą ustalamy sami; nazwy powinny kojarzyć się działaniem tworzonej funkcji Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 16/22

Struktura funkcji Funkcje to bloki programu, które są zapisywane poza właściwym programem (za lub przed) Wykonują się one dopiero, gdy jawnie użyjemy nazwy funkcji we właściwym programie Słowo kluczowe sub poprzedza nazwę funkcji, którą ustalamy sami; nazwy powinny kojarzyć się działaniem tworzonej funkcji Polecenie return wewnętrz funkcji, natychmiast kończy działanie funkcji Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 16/22

Struktura funkcji Funkcje to bloki programu, które są zapisywane poza właściwym programem (za lub przed) Wykonują się one dopiero, gdy jawnie użyjemy nazwy funkcji we właściwym programie Słowo kluczowe sub poprzedza nazwę funkcji, którą ustalamy sami; nazwy powinny kojarzyć się działaniem tworzonej funkcji Polecenie return wewnętrz funkcji, natychmiast kończy działanie funkcji Jeśli przy return zostało podane jakieś wyrażenie, to zostanie one przez funkcję zwrócone Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 16/22

Struktura funkcji Funkcje to bloki programu, które są zapisywane poza właściwym programem (za lub przed) Wykonują się one dopiero, gdy jawnie użyjemy nazwy funkcji we właściwym programie Słowo kluczowe sub poprzedza nazwę funkcji, którą ustalamy sami; nazwy powinny kojarzyć się działaniem tworzonej funkcji Polecenie return wewnętrz funkcji, natychmiast kończy działanie funkcji Jeśli przy return zostało podane jakieś wyrażenie, to zostanie one przez funkcję zwrócone Możemy zwracać wartości skalarne i tablicowe Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 16/22

Przykład - przekazywanie argumentów do funkcji 1 while ( my $name = pobierz_ imie ()) { witaj ( $name ); 5 sub pobierz_ imie { print " Podaj imie : "; my $name = < STDIN >; chomp ( $name ); return $name ; 10 sub witaj { my $name = shift ; print " Witaj, $name!"; 15 Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 17/22

Przekazywanie argumentów do funkcji Możemy również przekazywać zmienne i wartości do funkcji Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 18/22

Przekazywanie argumentów do funkcji Możemy również przekazywać zmienne i wartości do funkcji Odbywa się to za pomocą specjalnej tablicy @ Tablica @ jest tablicową wersją zmiennej domyślnej $ Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 18/22

Przekazywanie argumentów do funkcji Możemy również przekazywać zmienne i wartości do funkcji Odbywa się to za pomocą specjalnej tablicy @ Tablica @ jest tablicową wersją zmiennej domyślnej $ Wszystkie argumenty funkcji są zapisywane do tablicy @ w takiej kolejności w jakiej zostały podane przy wywołaniu funkcji Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 18/22

Przekazywanie argumentów do funkcji Możemy również przekazywać zmienne i wartości do funkcji Odbywa się to za pomocą specjalnej tablicy @ Tablica @ jest tablicową wersją zmiennej domyślnej $ Wszystkie argumenty funkcji są zapisywane do tablicy @ w takiej kolejności w jakiej zostały podane przy wywołaniu funkcji Wewnątrz funkcji powinniśmy (ale nie musimy) skopiować wartości z tablicy @ do odpowiednio nazwanych zmiennych lokalnych Do kopiowania mogą nam służyć dowolne metody poznane dzisiaj w pierwszej części wykładu. Poprzedni i następny sposób uznaje się za kanoniczne. Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 18/22

Przykład - wersja wieloargumentowa (kanoniczny) 10 1 while ( my ( $f_name, $s_ name ) = pobierz_ nazwisko ()) { witaj ( $f_name, $s_name ); 5 sub pobierz_ nazwisko { print " Podaj imie : "; my $f_ name = < STDIN >; print " Podaj nazwisko : "; my $s_ name = < STDIN >; chomp ( $f_name, $s_name ); return ( $f_name, $s_name ); 15 sub witaj { my ( $f_name, $s_name ) = @_; print " Witaj, $f_name $s_name!"; Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 19/22

Przykład - wersja wieloargumentowa (niekanoniczny) 1 while ( my @ names = pobierz_ nazwisko ()) { witaj ( @names ); 5 sub pobierz_ nazwisko { my @names ; print " Podaj imie : "; $names [0] = < STDIN >; print " Podaj nazwisko : "; 10 $names [1] = < STDIN >; 15 chomp ( @names ); return @ names ; sub witaj { print " Witaj, $_ [0] $_ [1]! "; Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 20/22

Program zliczający znaki w pliku - bez funkcji 1 my $total_ count ; foreach my $filename ( @ ARGV ) { open (IN, "<$filename ") or die " Plik nie istnieje "; my $count ; 5 while (<IN >) { $count += length ($_ ); close (IN ); print " Plik $filename zawiera $count znakow \ n"; 10 $total_ count += $count ; print " W sumie było $total_ count znakow \ n"; Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 21/22

Program zliczający znaki w pliku - z funkcjami 1 my $total_ count ; foreach my $filename ( @ ARGV ) { my $count = zlicz ( $filename ); print " Plik $filename zawiera $count znakow \ n"; 5 $total_ count += $count ; print " W sumie było $total_ count znakow \ n"; sub zlicz { 10 my $filename = shift ; open (IN, "<$filename ") or die " Plik nie istnieje "; my $count ; while (<IN >) { $count += length ($_ ); 15 close (IN ); return $count ; Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 22/22