Narzędzia informatyczne w językoznawstwie

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

Narzędzia informatyczne w językoznawstwie

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

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

1 Podstawy c++ w pigułce.

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

Podstawy Programowania C++

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

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

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

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

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

1 Podstawy c++ w pigułce.

LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI. Wprowadzenie do środowiska Matlab

Python wprowadzenie. Warszawa, 24 marca PROGRAMOWANIE I SZKOLENIA

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

Pascal typy danych. Typy pascalowe. Zmienna i typ. Podział typów danych:

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

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

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

INSTRUKCJA PUSTA. Nie składa się z żadnych znaków i symboli, niczego nie robi. for i := 1 to 10 do {tu nic nie ma};

TOPIT Załącznik nr 3 Programowanie aplikacji internetowych

Cw.12 JAVAScript w dokumentach HTML

Programowanie obiektowe

METODY KOMPUTEROWE W OBLICZENIACH INŻYNIERSKICH

Podstawy Programowania Podstawowa składnia języka C++

Serwer WWW Apache. Plik konfiguracyjny httpd.conf Definiujemy m.in.: Aktualne wersje 2.4.6, , zakończony projekt

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

Materiał Typy zmiennych Instrukcje warunkowe Pętle Tablice statyczne Wskaźniki Tablice dynamiczne Referencje Funkcje

Podstawy programowania w języku Visual Basic dla Aplikacji (VBA)

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

Programowanie strukturalne i obiektowe : podręcznik do nauki zawodu technik informatyk / Adam Majczak. Gliwice, cop

System operacyjny Linux

Python. Wprowadzenie. Jolanta Bachan

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

PHP: bloki kodu, tablice, obiekty i formularze

Wprowadzenie do języka Java

JAVA?? to proste!! Autor: wojtekb111111

Struktura pliku projektu Console Application

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

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

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

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

lekcja 8a Gry komputerowe MasterMind

Podstawy programowania: Python. Wprowadzenie. Jolanta Bachan

Programowanie w języku Python. Grażyna Koba

Pętle. Dodał Administrator niedziela, 14 marzec :27

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

Narzędzia informatyczne w językoznawstwie

Podstawy programowania

Naukę zaczynamy od poznania interpretera. Interpreter uruchamiamy z konsoli poleceniem

Spis treści WSTĘP CZĘŚĆ I. PASCAL WPROWADZENIE DO PROGRAMOWANIA STRUKTURALNEGO. Rozdział 1. Wybór i instalacja kompilatora języka Pascal

Podstawy programowania. Wykład PASCAL. Zmienne wskaźnikowe i dynamiczne. dr Artur Bartoszewski - Podstawy prograowania, sem.

Środowisko programisty Zestaw 7

Oczywiście plik musi mieć rozszerzenie *.php

Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane

Języki skryptowe w programie Plans

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

1. Zmienne Skalary

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

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

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

ŁAŃCUCHY W JĘZYKU C/C++

Programowanie komputerowe. Zajęcia 4

Informatyka 1. Wyrażenia i instrukcje, złożoność obliczeniowa

Liczby losowe i pętla while w języku Python

Laboratorium Wstawianie skryptu na stroną: 2. Komentarze: 3. Deklaracja zmiennych

Ćwiczenie 1. Wprowadzenie do programu Octave

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

1 Wprowadzenie do algorytmiki

Wykład III PASCAL - iteracja cz, 2, - liczby losowe, - tablice

Wstęp do programowania

Tablice. Monika Wrzosek (IM UG) Podstawy Programowania 96 / 119

PERL. Practical Extraction and Report Language Pathologically Eclectic Rubbish Lister

Wprowadzenie do Scilab: podstawy języka Scilab

Programowanie strukturalne i obiektowe

Microsoft IT Academy kurs programowania

2 Przygotował: mgr inż. Maciej Lasota

KARTA KURSU. Języki skryptowe

Ćwiczenie 1. Wprowadzenie do programu Octave

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 26 marca kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40

Metody numeryczne Laboratorium 2

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

I. KARTA PRZEDMIOTU CEL PRZEDMIOTU WYMAGANIA WSTĘPNE W ZAKRESIE WIEDZY, UMIEJĘTNOŚCI I INNYCH KOMPETENCJI EFEKTY KSZTAŁCENIA

Tablice deklaracja, reprezentacja wewnętrzna

Python. Skąd taka nazwa? Kurs systemu UNIX 1

1. Wprowadzenie do języka PHP

Wstęp do programowania. Różne różności

Zmienne, stałe i operatory

LibreOffice Calc VBA

ForPascal Interpreter języka Pascal

Pętla for. Matematyka dla ciekawych świata -19- Scilab. for i=1:10... end. for k=4:-1:1... end. k=3 k=4. k=1. k=2

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

Podstawy programowania. Wykład: 9. Łańcuchy znaków. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Wykład II Tablice (wstęp) Przykłady algorytmów Wstęp do języka C/C++

Tablice mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011

ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2015

Transkrypt:

Narzędzia informatyczne w językoznawstwie Perl - Struktury kontrolne i zmienne Marcin Junczys-Dowmunt junczys@amu.edu.pl Zakład Logiki Stosowanej http://www.logic.amu.edu.pl 28. listopada 2007 Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 1/24

Dzisiejszy wykład Dziś wprowadzimy różne typy danych oraz różne rodzaje zmiennych zawierające takie dane Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 2/24

Dzisiejszy wykład Dziś wprowadzimy różne typy danych oraz różne rodzaje zmiennych zawierające takie dane Omówimy podstawowe struktury kontrolne Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 2/24

Dzisiejszy wykład Dziś wprowadzimy różne typy danych oraz różne rodzaje zmiennych zawierające takie dane Omówimy podstawowe struktury kontrolne Na końcu przejdziemy do małych programików nadających się np. do eksperymentów psycholingwistycznych Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 2/24

Liczby i łańcuchy znaków Na razie będziemy korzystać z dwóch podstawowych typów danych: liczb i łańcuchów znakowych. Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 3/24

Liczby i łańcuchy znaków Na razie będziemy korzystać z dwóch podstawowych typów danych: liczb i łańcuchów znakowych. Liczby Dopuszczalne są wartości całkowite, zmiennoprzecinkowe, ujemne, wykładnicze itp. Perl nie rozróżnia tych rodzajów liczb, jak to się dzieje np. w C Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 3/24

Liczby i łańcuchy znaków Na razie będziemy korzystać z dwóch podstawowych typów danych: liczb i łańcuchów znakowych. Liczby Dopuszczalne są wartości całkowite, zmiennoprzecinkowe, ujemne, wykładnicze itp. Perl nie rozróżnia tych rodzajów liczb, jak to się dzieje np. w C Łańcuchy znakowe Wszystko co jest ujęte w podwójny lub pojedynczy cudzysłów nazywamy łańcuchem znakowym W Perlu nie wszystkie łańcuchy znakowe możemy nazwać stałymi (te w pojedynczym cudzysłowie na pewno) Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 3/24

Liczby i łańcuchy znakowe 1 print (3); print (" "); print (3 + 4); print (" "); 5 print ("3 + 4"); print ("\n"); print (5 * 2); print (" "); print (9/3); 10 print (" "); print (2 ** 8); print ("\n"); Proszę opisać, co się dzieje w każdym wierszu. Jaki działa cudzysłów podwójny a jak cudzysłów pojedynczy? Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 4/24

Operatory Istnieją też operatory dla łańcuchów znakowych oraz operatory mieszane np. 1 print ("-" x 50); print ("\n"); print (" konkatenacja ". " ". " łańcuchów \n"); print ("-" x 50); 5 print ("\n"); Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 5/24

Zmienne skalarne Zmienne zawierające liczby, znaki łańcuchowe i referencje 1 nazywamy zmiennymi skalarnymi. 1 o referencjach więcej innym razem Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 6/24

Zmienne skalarne Zmienne zawierające liczby, znaki łańcuchowe i referencje 1 nazywamy zmiennymi skalarnymi. Struktura nazwy zmiennej skalarnej w Perlu: Pierwszy znak to przedrostek $ (podobny do s jak scalar) 1 o referencjach więcej innym razem Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 6/24

Zmienne skalarne Zmienne zawierające liczby, znaki łańcuchowe i referencje 1 nazywamy zmiennymi skalarnymi. Struktura nazwy zmiennej skalarnej w Perlu: Pierwszy znak to przedrostek $ (podobny do s jak scalar) Drugi znak to dowolna litera lub znak podkreślenia 1 o referencjach więcej innym razem Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 6/24

Zmienne skalarne Zmienne zawierające liczby, znaki łańcuchowe i referencje 1 nazywamy zmiennymi skalarnymi. Struktura nazwy zmiennej skalarnej w Perlu: Pierwszy znak to przedrostek $ (podobny do s jak scalar) Drugi znak to dowolna litera lub znak podkreślenia Kolejne znaki to dowolne litery lub liczby lub znak podkreślenia 1 o referencjach więcej innym razem Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 6/24

Zmienne skalarne Zmienne zawierające liczby, znaki łańcuchowe i referencje 1 nazywamy zmiennymi skalarnymi. Struktura nazwy zmiennej skalarnej w Perlu: Pierwszy znak to przedrostek $ (podobny do s jak scalar) Drugi znak to dowolna litera lub znak podkreślenia Kolejne znaki to dowolne litery lub liczby lub znak podkreślenia Przykłady: $, $a, $abc, $a12, $to jest zmienna, $a to zmienna o numerze 2 1 o referencjach więcej innym razem Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 6/24

Zmienne skalarne Na zmiennych możemy wykonywać takie same operacje jak na stałych plus operację przypisania (=): 1 $one = 2; $two = 3; $three = $one + $two ; print ( $three. "\n"); Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 7/24

Zmienne skalarne Na zmiennych możemy wykonywać takie same operacje jak na stałych plus operację przypisania (=): 1 $one = 2; $two = 3; $three = $one + $two ; print ( $three. "\n"); 1 $hat = " chair "; $chair = " hat "; print ( $chair. " ". $hat. "\n"); Jak widać, nazwa i treść zmiennej nie muszą być ze sobą powiązane. Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 7/24

Interpolacja zmiennych Zamiast łączyć kilka zmiennych w większy łańcuch znakowy za pomocą operatora konkatenacji, możemy wykorzystać możliwości Perla w zakresie interpolacji zmiennych. Interpolacja to operacja, która zamienia nazwę zmiennej w łańcuchu znakowym na jej wartość. 2 2 To przez interpolacje zmiennych nie możemy mówić, że wszystkie łańcuchy znakowe to stałe. Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 8/24

Interpolacja zmiennych Zamiast łączyć kilka zmiennych w większy łańcuch znakowy za pomocą operatora konkatenacji, możemy wykorzystać możliwości Perla w zakresie interpolacji zmiennych. Interpolacja to operacja, która zamienia nazwę zmiennej w łańcuchu znakowym na jej wartość. 2 1 $hat = " chair "; $chair = " hat "; print (" $chair $hat \n"); Pytanie: Co stanie się, gdy zastąpimy podwójny cudzysłów pojedynczym cudzysłowem? 2 To przez interpolacje zmiennych nie możemy mówić, że wszystkie łańcuchy znakowe to stałe. Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 8/24

Zmienne tablicowe Zmienne tablicowe to zmienne złożone Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 9/24

Zmienne tablicowe Zmienne tablicowe to zmienne złożone Dokładniej: to listy zmiennych skalarnych Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 9/24

Zmienne tablicowe Zmienne tablicowe to zmienne złożone Dokładniej: to listy zmiennych skalarnych Każda z tych zmiennych skalarnych w tablicy ma jednoznacznie przyporządkowany indeks (numer) Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 9/24

Zmienne tablicowe Zmienne tablicowe to zmienne złożone Dokładniej: to listy zmiennych skalarnych Każda z tych zmiennych skalarnych w tablicy ma jednoznacznie przyporządkowany indeks (numer) Tablica zawierająca n elementów jest indeksowana liczbami od 0 do n 1 Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 9/24

Zmienne tablicowe Zmienne tablicowe to zmienne złożone Dokładniej: to listy zmiennych skalarnych Każda z tych zmiennych skalarnych w tablicy ma jednoznacznie przyporządkowany indeks (numer) Tablica zawierająca n elementów jest indeksowana liczbami od 0 do n 1 Przedrostek tablicy w Perlu to @ (podobne do a jak array), np. @tablica Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 9/24

Zmienne tablicowe Zmienne tablicowe to zmienne złożone Dokładniej: to listy zmiennych skalarnych Każda z tych zmiennych skalarnych w tablicy ma jednoznacznie przyporządkowany indeks (numer) Tablica zawierająca n elementów jest indeksowana liczbami od 0 do n 1 Przedrostek tablicy w Perlu to @ (podobne do a jak array), np. @tablica Nie ma górnego ograniczenia liczby elementów tablicy (tylko pamięć danego komputera) Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 9/24

Zmienne tablicowe Zmienne tablicowe to zmienne złożone Dokładniej: to listy zmiennych skalarnych Każda z tych zmiennych skalarnych w tablicy ma jednoznacznie przyporządkowany indeks (numer) Tablica zawierająca n elementów jest indeksowana liczbami od 0 do n 1 Przedrostek tablicy w Perlu to @ (podobne do a jak array), np. @tablica Nie ma górnego ograniczenia liczby elementów tablicy (tylko pamięć danego komputera) Tablice są strukturami dynamicznymi (długość nie jest stała) Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 9/24

Ustawianie zmiennych tablicowych 1 @rok = (" styczen ", " luty ", " marzec "); print " Trzeci miesiac roku : ". $rok [2]. "\n"; print " Pierwszy miesiac roku : $rok [0]\ n"; Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 10/24

Ustawianie zmiennych tablicowych 1 @rok = (" styczen ", " luty ", " marzec "); print " Trzeci miesiac roku : ". $rok [2]. "\n"; print " Pierwszy miesiac roku : $rok [0]\ n"; Kanoniczny sposób zapisywania wartości do tablicy Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 10/24

Ustawianie zmiennych tablicowych 1 @rok = (" styczen ", " luty ", " marzec "); print " Trzeci miesiac roku : ". $rok [2]. "\n"; print " Pierwszy miesiac roku : $rok [0]\ n"; Kanoniczny sposób zapisywania wartości do tablicy Elementy zostaną ponumerowane od 0 do 2 Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 10/24

Ustawianie zmiennych tablicowych 1 @rok = (" styczen ", " luty ", " marzec "); print " Trzeci miesiac roku : ". $rok [2]. "\n"; print " Pierwszy miesiac roku : $rok [0]\ n"; Kanoniczny sposób zapisywania wartości do tablicy Elementy zostaną ponumerowane od 0 do 2 Odwołując się do wartości elementów tablicy korzystamy z $, ponieważ wartości tablicy to skalary! Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 10/24

Ustawianie zmiennych tablicowych 1 @rok = (" styczen ", " luty ", " marzec "); print " Trzeci miesiac roku : ". $rok [2]. "\n"; print " Pierwszy miesiac roku : $rok [0]\ n"; Kanoniczny sposób zapisywania wartości do tablicy Elementy zostaną ponumerowane od 0 do 2 Odwołując się do wartości elementów tablicy korzystamy z $, ponieważ wartości tablicy to skalary! Wartości tablicy też podlegają interpolacji zmiennych Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 10/24

Ustawianie zmiennych tablicowych 4 $rok [3] = " kwiecien "; 5 $rok [4] = " maj "; $rok [5] = " czerwiec "; Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 11/24

Ustawianie zmiennych tablicowych 4 $rok [3] = " kwiecien "; 5 $rok [4] = " maj "; $rok [5] = " czerwiec "; Możemy zapisywać wartości bezpośrednio do elementów skalarnych tablicy Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 11/24

Ustawianie zmiennych tablicowych 4 $rok [3] = " kwiecien "; 5 $rok [4] = " maj "; $rok [5] = " czerwiec "; Możemy zapisywać wartości bezpośrednio do elementów skalarnych tablicy Elementy tablicy nie różnią się niczym od normalnych zmiennych Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 11/24

Ustawianie zmiennych tablicowych 4 $rok [3] = " kwiecien "; 5 $rok [4] = " maj "; $rok [5] = " czerwiec "; Możemy zapisywać wartości bezpośrednio do elementów skalarnych tablicy Elementy tablicy nie różnią się niczym od normalnych zmiennych Jeśli taki indeks wcześniej nie istniał, zostanie stworzony Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 11/24

Ustawianie zmiennych tablicowych 4 $rok [3] = " kwiecien "; 5 $rok [4] = " maj "; $rok [5] = " czerwiec "; Możemy zapisywać wartości bezpośrednio do elementów skalarnych tablicy Elementy tablicy nie różnią się niczym od normalnych zmiennych Jeśli taki indeks wcześniej nie istniał, zostanie stworzony Ewentualne wartości pośrednie zostaną wypełnione wartością undef (niezdefiniowana) Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 11/24

Ustawianie zmiennych tablicowych 7 @ kwartal3 = qw( lipiec sierpien wrzesien ); @ rok [6.. 8] = @ kwartal3 ; print join (" - ",@rok [6.. 8]). "\n"; Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 12/24

Ustawianie zmiennych tablicowych 7 @ kwartal3 = qw( lipiec sierpien wrzesien ); @ rok [6.. 8] = @ kwartal3 ; print join (" - ",@rok [6.. 8]). "\n"; Skrótowy sposób inicjalizacji tablicy (dla listy łańcuchów znakowych) Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 12/24

Ustawianie zmiennych tablicowych 7 @ kwartal3 = qw( lipiec sierpien wrzesien ); @ rok [6.. 8] = @ kwartal3 ; print join (" - ",@rok [6.. 8]). "\n"; Skrótowy sposób inicjalizacji tablicy (dla listy łańcuchów znakowych) Białe znaki funkcjonują jak separatory Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 12/24

Ustawianie zmiennych tablicowych 7 @ kwartal3 = qw( lipiec sierpien wrzesien ); @ rok [6.. 8] = @ kwartal3 ; print join (" - ",@rok [6.. 8]). "\n"; Skrótowy sposób inicjalizacji tablicy (dla listy łańcuchów znakowych) Białe znaki funkcjonują jak separatory Możemy też zapisywać do podprzedziału tablicy Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 12/24

Ustawianie zmiennych tablicowych 7 @ kwartal3 = qw( lipiec sierpien wrzesien ); @ rok [6.. 8] = @ kwartal3 ; print join (" - ",@rok [6.. 8]). "\n"; Skrótowy sposób inicjalizacji tablicy (dla listy łańcuchów znakowych) Białe znaki funkcjonują jak separatory Możemy też zapisywać do podprzedziału tablicy Wycinek tablicy jest tablicą, stąd przedrostek @ Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 12/24

Ustawianie zmiennych tablicowych 7 @ kwartal3 = qw( lipiec sierpien wrzesien ); @ rok [6.. 8] = @ kwartal3 ; print join (" - ",@rok [6.. 8]). "\n"; Skrótowy sposób inicjalizacji tablicy (dla listy łańcuchów znakowych) Białe znaki funkcjonują jak separatory Możemy też zapisywać do podprzedziału tablicy Wycinek tablicy jest tablicą, stąd przedrostek @ Funkcja join łączy daną tablicę w łańcuch znakowy z podanym separatorem wstawionym między elementami Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 12/24

Ustawianie zmiennych tablicowych 10 @ rok [9,10,11] = qw( pazdziernik listopad grudzien ); print " Następujące miesiące mają 31 dni : \ n"; print join ("\n",@rok [0,2,4,6,7,9,11]). "\n"; print " Następujące miesiące mają 30 dni : \ n"; 15 @m30 = (3,5,8,10); print join ("\n",@rok [ @m30 ]). "\n"; print "A $rok [1] ma 28 dni \n"; Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 13/24

Ustawianie zmiennych tablicowych 10 @ rok [9,10,11] = qw( pazdziernik listopad grudzien ); print " Następujące miesiące mają 31 dni : \ n"; print join ("\n",@rok [0,2,4,6,7,9,11]). "\n"; print " Następujące miesiące mają 30 dni : \ n"; 15 @m30 = (3,5,8,10); print join ("\n",@rok [ @m30 ]). "\n"; print "A $rok [1] ma 28 dni \n"; Wycinki tablic to nie tylko przedziały liczb. Możemy korzystać z list dowolnych liczb Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 13/24

Ustawianie zmiennych tablicowych 10 @ rok [9,10,11] = qw( pazdziernik listopad grudzien ); print " Następujące miesiące mają 31 dni : \ n"; print join ("\n",@rok [0,2,4,6,7,9,11]). "\n"; print " Następujące miesiące mają 30 dni : \ n"; 15 @m30 = (3,5,8,10); print join ("\n",@rok [ @m30 ]). "\n"; print "A $rok [1] ma 28 dni \n"; Wycinki tablic to nie tylko przedziały liczb. Możemy korzystać z list dowolnych liczb Lub nawet z innych tablic Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 13/24

Struktury kontrolne - warunki 1 if ( wyrażenie ) { blok } else { blok } unless ( wyrażnie ) { blok } else { blok } 5 if ( wyrażenie1 ) { blok } elsif ( wyrażenie2 ) { blok }... elsif ( ostatniewyrażenie ) { blok } else { blok } Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 14/24

Struktury kontrolne - warunki 1 if ( wyrażenie ) { blok } else { blok } unless ( wyrażnie ) { blok } else { blok } 5 if ( wyrażenie1 ) { blok } elsif ( wyrażenie2 ) { blok }... elsif ( ostatniewyrażenie ) { blok } else { blok } W Perlu nie ma typów logicznych jako takich, fałszywe są: liczba zero, łańcuch zerowy, wartość undef, puste tablice (zywkłe i asocjacyjne). Pozostałe są prawdziwe Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 14/24

Struktury kontrolne - warunki 1 if ( wyrażenie ) { blok } else { blok } unless ( wyrażnie ) { blok } else { blok } 5 if ( wyrażenie1 ) { blok } elsif ( wyrażenie2 ) { blok }... elsif ( ostatniewyrażenie ) { blok } else { blok } W Perlu nie ma typów logicznych jako takich, fałszywe są: liczba zero, łańcuch zerowy, wartość undef, puste tablice (zywkłe i asocjacyjne). Pozostałe są prawdziwe W blokach możemy umieścić dowolną liczbę instrukcji Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 14/24

Operatory porównania Numeryczne Łańcuchowe Znaczenie == eq jest równe!= ne nie jest równe <=> cmp porównanie ze znakiem Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 15/24

Operatory porównania Numeryczne Łańcuchowe Znaczenie == eq jest równe!= ne nie jest równe <=> cmp porównanie ze znakiem Numeryczne Łańcuchowe Znaczenie > gt większe niż >= ge większe-równe niż < lt mniejsze niż <= le mniejsze-równe niż Porównując liczby korzystamy z operatorów numerycznych. Porównując łańcuchy korzystamy z operatorów łańcuchowych. Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 15/24

Przykład if 1 @ tab1 = qw( Antek Bartek ); @tab2 = (" Edek ", " Dudek "); if( @tab1 == @tab2 ) { 5 if( $tab1 [0] lt $tab2 [0]) { print " $tab1 [0] poprzedza $tab2 [0]\ n"; } elsif ( $tab1 [0] gt $tab [0]) { print " $tab2 [0] poprzedza $tab1 [0]\ n"; 10 } else { print " $tab1 [0] jest równe $tab2 [0]\ n"; } } Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 16/24

Pętle W Perlu mamy trzy główne rodzaje pętli: Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 17/24

Pętle W Perlu mamy trzy główne rodzaje pętli: pętlę typu while znamy z innych programów (np. Pascal) 1 while ( wyrażenie ) { block } Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 17/24

Pętle W Perlu mamy trzy główne rodzaje pętli: pętlę typu while znamy z innych programów (np. Pascal) 1 while ( wyrażenie ) { block } pętla typu for w takiej postaci jest znana z języków podobnych do C 1 for ( pierwsza i.; warunek ; i. iterowana ) { block } Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 17/24

Pętle W Perlu mamy trzy główne rodzaje pętli: pętlę typu while znamy z innych programów (np. Pascal) 1 while ( wyrażenie ) { block } pętla typu for w takiej postaci jest znana z języków podobnych do C 1 for ( pierwsza i.; warunek ; i. iterowana ) { block } pętla typu foreach jest konstrukcją typową dla Perla 1 foreach $element ( lista ) { block } Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 17/24

Pętla while - przykład 1 @ pokoj = qw( krzeslo stol lozko szafa ); print " Pokoj zawiera nast. meble : ". join (", ", @pokoj ) 5 while ( @pokoj > 2) { $mebel = pop @ pokoj ; print " Wyrzucilem przez okno : $mebel \ n"; print " Pokoj zawiera nast. meble : "; 10 print join (", ", @pokoj )."\n"; } Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 18/24

Pętla while - przykład 1 @ pokoj = qw( krzeslo stol lozko szafa ); print " Pokoj zawiera nast. meble : ". join (", ", @pokoj ) 5 while ( @pokoj > 2) { $mebel = pop @ pokoj ; print " Wyrzucilem przez okno : $mebel \ n"; print " Pokoj zawiera nast. meble : "; 10 print join (", ", @pokoj )."\n"; } Zmienna @pokoj użyta w kontekscie numerycznym jest interpretowana jako liczba elementów Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 18/24

Pętla while - przykład 1 @ pokoj = qw( krzeslo stol lozko szafa ); print " Pokoj zawiera nast. meble : ". join (", ", @pokoj ) 5 while ( @pokoj > 2) { $mebel = pop @ pokoj ; print " Wyrzucilem przez okno : $mebel \ n"; print " Pokoj zawiera nast. meble : "; 10 print join (", ", @pokoj )."\n"; } Zmienna @pokoj użyta w kontekscie numerycznym jest interpretowana jako liczba elementów funkcja pop usuwa ostatni element z podanej tablicy i zwraca ten element Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 18/24

Pętla while - przykład 1 @ pokoj = qw( krzeslo stol lozko szafa ); print " Pokoj zawiera nast. meble : ". join (", ", @pokoj ) 5 while ( @pokoj > 2) { $mebel = pop @ pokoj ; print " Wyrzucilem przez okno : $mebel \ n"; print " Pokoj zawiera nast. meble : "; 10 print join (", ", @pokoj )."\n"; } Zmienna @pokoj użyta w kontekscie numerycznym jest interpretowana jako liczba elementów funkcja pop usuwa ostatni element z podanej tablicy i zwraca ten element Pętla while działa dopóki warunek jest prawdziwy, tzn. póki tablica @pokoj zawiera więcej niż dwa elementy Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 18/24

Pętla for - przykład 1 for ( $i = 0; $i < 10; $i ++) { print " Wartość \$i to: $i\n"; } Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 19/24

Pętla for - przykład 1 for ( $i = 0; $i < 10; $i ++) { print " Wartość \$i to: $i\n"; } Program podobny do while.pl : 1 @ pokoj = qw( krzeslo stol lozko szafa ); print " Pokoj zawiera nast. meble : "; print join (", ", @pokoj )."\n"; 5 for ( $i = pop @ pokoj ; @ pokoj > 1; $i = pop @ pokoj ) { print " Wyrzucilem przez okno : $i\ n"; 10 } print " Pokoj zawiera nast. meble : "; print join (", ", @pokoj )."\n"; Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 19/24

Pętla foreach - eksperymenty psycholingwistyczne Dla przykładu pętli foreach posłużymy się pewnym eksperymentem psycholingwistycznym. Napiszemy program generujący wszystkie sylaby pewnego polinezyjskiego języka o nazwie Tulu W tym języku wszystkie sylaby mają postać CV z ograniczonego zestawu spółgłosek i samogłosek: {a, e, i, k, l, m, o, p, t, u} Sylaby będą wyglądały np. tak: po, ta, ku, me Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 20/24

Pętla foreach - eksperymenty psycholingwistyczne 1 @consonants = qw(k l m p t); @vowels = qw(a e i o u); 5 foreach $c ( @ consonants ) { foreach $v ( @vowels ) { print (" $c$v \n"); } } Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 21/24

Pętla foreach - eksperymenty psycholingwistyczne Teraz napiszemy program, który generuje wszystkie wyrazy Tulu. Każdy wyraz ma postać CVCV. Jak tego dokonać? Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 22/24

Pętla foreach - eksperymenty psycholingwistyczne Teraz napiszemy program, który generuje wszystkie wyrazy Tulu. Każdy wyraz ma postać CVCV. Jak tego dokonać? 1 @consonants = qw(k l m p t); @vowels = qw(a e i o u); 5 foreach $c1 ( @ consonants ) { foreach $v1 ( @vowels ) { foreach $c2 ( @ consonants ) { foreach $v2 ( @vowels ) { print (" $c1$v1$c2$v2 \n"); 10 } } } } Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 22/24

Pętla foreach - eksperymenty psycholingwistyczne Zasady morfofonologiczne Tulu narzucają nam dodatkowe ograniczenie. Wszystkie samogłoski danego wyrazu muszą być takie same, np. paka, tulu Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 23/24

Pętla foreach - eksperymenty psycholingwistyczne Zasady morfofonologiczne Tulu narzucają nam dodatkowe ograniczenie. Wszystkie samogłoski danego wyrazu muszą być takie same, np. paka, tulu 1 @consonants = qw(k l m p t); @vowels = qw(a e i o u); 5 foreach $c1 ( @ consonants ) { foreach $v ( @vowels ) { foreach $c2 ( @ consonants ) { print (" $c1$v$c2$v \n"); } 10 } } Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 23/24

Pętla foreach - eksperymenty psycholingwistyczne Kolejna reguła morfofonologiczna jęzka Tulu mówi, że spółgłoski muszą być różne. Tzn. ciągi typu tutu, papa itd. nie są poprawnymi słowami języka Tulu Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 24/24

Pętla foreach - eksperymenty psycholingwistyczne Kolejna reguła morfofonologiczna jęzka Tulu mówi, że spółgłoski muszą być różne. Tzn. ciągi typu tutu, papa itd. nie są poprawnymi słowami języka Tulu 1 @consonants = qw(k l m p t); @vowels = qw(a e i o u); 5 foreach $c1 ( @ consonants ) { foreach $v ( @vowels ) { foreach $c2 ( @ consonants ) { print (" $c1$v$c2$v \n") if($c1 ne $c2 ); } 10 } } Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 24/24