Pętle w PERLU postać ogólna



Podobne dokumenty
PERSON Kraków

1. Podstawy budowania wyra e regularnych (Regex)

Temat: Funkcje. Własności ogólne. A n n a R a j f u r a, M a t e m a t y k a s e m e s t r 1, W S Z i M w S o c h a c z e w i e 1

Logowanie do systemu Faktura elektroniczna

G PROGRAMMING. Part #4

Instrukcja obsługi Norton Commander (NC) wersja 4.0. Autor: mgr inż. Tomasz Staniszewski

Narzędzia informatyczne w językoznawstwie

System zarządzania bazą danych (SZBD) Proces przechodzenia od świata rzeczywistego do jego informacyjnej reprezentacji w komputerze nazywać będziemy

Rozwiązywanie nazw w sieci. Identyfikowanie komputerów w sieci

PROE wykład 7 kontenery tablicowe, listy. dr inż. Jacek Naruniec

Formularz Zgłoszeniowy propozycji zadania do Szczecińskiego Budżetu Obywatelskiego na 2016 rok

Instrukcja obsługi.

Promocja i identyfikacja wizualna projektów współfinansowanych ze środków Europejskiego Funduszu Społecznego

Warszawska Giełda Towarowa S.A.

WYMAGANIA EDUKACYJNE I KRYTERIA OCENIANIA Z PRZEDMIOTU PROGRAMOWANIE APLIKACJI INTERNETOWYCH

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

Microsoft Management Console

SZABLONY KOMUNIKATÓW SPIS TREŚCI

Instalacja programu. Omówienie programu. Jesteś tu: Bossa.pl

Elementy typografii. Technologia Informacyjna Lekcja 22

Aplikacje internetowe i rozproszone - laboratorium

API transakcyjne BitMarket.pl

1. Wprowadzenie do C/C++

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

Instalacja. Zawartość. Wyszukiwarka. Instalacja Konfiguracja Uruchomienie i praca z raportem Metody wyszukiwania...

Podstawy Informatyki Gramatyki formalne

EPI: Interfejs Graficzny Wykład nr 2 Wbudowane typy danych Rubiego

WYKŁAD 8. Postacie obrazów na różnych etapach procesu przetwarzania

14.Rozwiązywanie zadań tekstowych wykorzystujących równania i nierówności kwadratowe.

Formularze i ramki w HTML

epuap Ogólna instrukcja organizacyjna kroków dla realizacji integracji

Podstawowe działania w rachunku macierzowym

Zarządzanie Zasobami by CTI. Instrukcja

enova Workflow Obieg faktury kosztowej

CitiDirect EB - Mobile

I. Zakładanie nowego konta użytkownika.

DJCONTROL INSTINCT I DJUCED PIERWSZE KROKI

Podstawy programowania

OptiMore Importer Rejestru VAT. Instrukcja obsługi programu

Surowiec Zużycie surowca Zapas A B C D S 1 0,5 0,4 0,4 0, S 2 0,4 0,2 0 0, Ceny x

Przedmiot: Projektowanie dokumentów WWW. Laboratorium 3: Strona domowa cz. III Formularze. Opracował: Maciej Chyliński

1. Rozwiązać układ równań { x 2 = 2y 1

1. Wprowadzenie do C/C++

Tekst ozdobny i akapitowy

CYFROWY MIERNIK REZYSTANCJI UZIEMIENIA KRT 1520 INSTRUKCJA OBSŁUGI

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

Specyfikacja techniczna banerów Flash

Elementy cyfrowe i układy logiczne

G PROGRAMMING. Part #6

Skitch for Android Instrukcja obsługi 2012 Evernote Corporation Wszelkie prawa zastrzeżone Opublikowano: Jun 19, 2012

WYŚCIG ORTOGRAFICZNY INSTRUKCJA. gra edukacyjna dla 2-3 osób rekomendowany wiek: od lat 7

Użytkowanie elektronicznego dziennika UONET PLUS.

Uniwersytet Rzeszowski

Instrukcja instalacji oraz wykorzystania podpisu cyfrowego

Zaznaczając checkbox zapamiętaj program zapamięta twoje dane logowania. Wybierz cmentarz z dostępnych na rozwijalnej liście.

1. Warunki. 2. Zakładanie konta. 3. Logowanie. 4. Korzystanie z portalu partnera serwisowego 5. Subkonta 5.1Zakładanie subkonta. 5.

Zad.1 Pokazać pierwszeństwo trybu odmów przed zezwalaj.

Pracownia internetowa w ka dej szkole (edycja 2004/2005)

Ćwiczenia IV - Kontenery (pojemniki)

ZESTAWIENIE INFORMACJI O WARUNKACH SPŁATY KREDYTÓW HIPOTECZNYCH WYRAŻONYCH W CHF ( )

Egzamin na tłumacza przysięgłego: kryteria oceny

Architektura komputerów

Zasady wizualizacji PROW

Spis treści. Dokument pochodzi ze strony LICZBY NATURALNE I UŁAMKI

Projekt z dnia 2 listopada 2015 r. z dnia r.

Akademickie Centrum Informatyki PS. Wydział Informatyki PS

Rozliczenia z NFZ. Ogólne założenia. Spis treści

Strategia rozwoju kariery zawodowej - Twój scenariusz (program nagrania).

Projekt. Projekt opracował Inż. Roman Polski

Posiadane punkty lojalnościowe można również wykorzystać na opłacenie kosztów przesyłki.

PowerShell. Sławomir Wawrzyniak

Procedura weryfikacji badania czasu przebiegu 1 paczek pocztowych

Mnożenie macierzy. Systemy z pamięcią współdzieloną Systemy z pamięcią rozproszoną Efektywność

Charakterystyka systemów plików

Zmienne, instrukcje warunkowe

Archiwum Prac Dyplomowych

Obowiązek wystawienia faktury zaliczkowej wynika z przepisów o VAT i z faktu udokumentowania tego podatku.

INSTRUKCJA KORZYSTANIA Z ELEKTRONICZNEJ ŚCIEŻKI WYKAZÓW

Bazy danych. Andrzej Łachwa, UJ, /15

Środowisko programisty

Warsztat naukowca a problem formatu informacji bibliograficznej generowanej przez systemy informacyjne. Remigiusz Sapa IINiB UJ

Opis programu do wizualizacji algorytmów z zakresu arytmetyki komputerowej

KLAUZULE ARBITRAŻOWE

UCHWAŁA NR LXXXVIII/1314/13 RADY MIASTA KRAKOWA. z dnia 6 listopada 2013 r.

Wtedy wystarczy wybrać właściwego Taga z listy.

Jak usprawnić procesy controllingowe w Firmie? Jak nadać im szerszy kontekst? Nowe zastosowania naszych rozwiązań na przykładach.

Oprogramowanie klawiatury matrycowej i alfanumerycznego wyświetlacza LCD

JMMS Instrukcja użytkowania kont Autor oraz Recenzent

Harmonogramowanie projektów Zarządzanie czasem

System operacyjny Linux

raceboard-s Szybki start

INSTRUKCJA DO INTERNETOWEGO ROZKŁADU JAZDY

2.Prawo zachowania masy

Statystyczna analiza danych w programie STATISTICA. Dariusz Gozdowski. Katedra Doświadczalnictwa i Bioinformatyki Wydział Rolnictwa i Biologii SGGW

Bazy danych II. Andrzej Grzybowski. Instytut Fizyki, Uniwersytet Śląski

Wizualizacja logotypu

WNIOSEK O UDZIELENIE WSPARCIA DLA KREDYTOBIORCY 1) ZNAJDUJĄCEGO SIĘ W TRUDNEJ SYTUACJI FINANSOWEJ, KTÓRY ZACIĄGNĄŁ KREDYT MIESZKANIOWY 2)

Komunikacja w sieci Industrial Ethernet z wykorzystaniem Protokołu S7 oraz funkcji PUT/GET

Kompozycja i dziedziczenie klas

Transkrypt:

Pętle w PERLU postać ogólna ETYK: while(wyrażenie) BLOK; ETYK: while(wyrażenie) BLOK continue BLOK; ETYK: for(wyr1;wyr2;wyr3) BLOK; ETYK: for(wyr1;wyr2;wyr3) BLOK continue BLOK; ETYK: foreach ZM(LISTA) BLOK; ETYK: foreach ZM(LIST) BLOK continue BLOK;

Blok continue Blok continue (jeśli istnieje) jest wykonywany zawsze po zakończeniu każdego obiegu pętli, nawet jeśli wykonanie pętli zostało przerwane w sposób gwałtowny. for(wyr1; wyr2; wyr3) { } wyr1; while(wyr2) { } continue { wyr3; }

Instrukcja next z etykietą PETLA: foreach $ten1(@lista1) { foreach $ten2(@lista2) { $f = ($ten1 == $ten2); next PETLA if $f; } }

Instrukcja next bez etykiety foreach $ten1(@lista1) { $f = ($ten == 100); next if $f; $ten = 0; } continue { $licz++ if $f; }

Instrukcja redo PETLA: while($linia = getline()) { if(kontynuacja($linia)) { $linia.= <STDIN>; redo; } wykonaj($linia); }

Gołe bloki (ang. bare blocks) BLOK: { : last if $f; : redo unless $f; : }

Instrukcja switch? W PERLU nie istnieje instrukcja switch, ale można próbować ją podrabiać z użyciem gołego bloku. SWITCH: { if($i>0) { $dodatnie++;last SWITCH; } if($i<0) { $ujemna++; last SWITCH; } $zera++; }

Dygresja Gołe bloki nie są jedynymi gołymi elementami PERLA istnieją również gołe słowa (ang. bare words) while(x) { } jest rozumiane jak while("x") { }

Funkcje w PERLU wstrząsający fakt #1: funkcje w PERLU nie mają nazwanych parametrów, co jest ich WIELKĄ zaletą

Funkcje w PERLU wstrząsający fakt #2: w PERLU wszystkie zmienne są globalne, no chyba, że zostały zadeklarowane jako nie będące globalnymi

Funkcje w PERLU wstrząsający fakt #3: w PERLU funkcja może się dowiedzieć, czy została wywołana w kontekście skalarnym, tablicowym czy pustym oraz z iloma argumentami została wywołana; funkcja może się też dowiedzieć, jak nazywa się funkcja, która ją wywołała oraz jak nazywa się funkcja, która wywołała funkcję, która ją wywołała oraz

Funkcje w PERLU wstrząsający fakt #4: w PERLU przesłanie do funkcji więcej niż jednej tablicy (hasza) sprawia, że tracą one swoją tożsamość i stają się JEDNĄ tablicą

Pierwsza funkcja w PERLU sub funkcja { print "kto tam?\n"; return 1; } Instrukcja return nie jest niezbędna. Jeśli jej nie będzie, funkcja zwróci jako wynik wartość tego wyrażenia, które zostało obliczone jako ostatnie

Prototyp sub funkcja($$) { print "kto tam?\n"; return 1; } Prototyp służy tylko i wyłącznie do sprawdzenia poprawności wywołania; nie jest w żaden sposób używany do odzyskiwania wartości parametrów

Prototyp sub funkcja($;$) { print "kto tam?\n"; return 1; } Prototyp może również specyfikować parametry obowiązkowe (przed średnikiem) i opcjonalne (po średniku)

Przekazywanie parametrów Przedstawiamy tablicę @_

Przekazywanie parametrów sub delta($$$) { return $_[1]**2-4 * $_[0] * $_[2]; } $d = delta (1,-2,3);

Przekazywanie parametrów #uwaga! @_ jest tablicą synonimów parametrów sub SQR { $_[0] **= 2; return $_[0]; } $a=2; print SQR($a),SQR(2); Błąd wykonania!

Przekazywanie parametrów #uwaga na tablice! sub dump { foreach $elem (@_) { print "$elem "; } @a = (1,2); @b = (3,4); dump(@a,@b);

Przekazywanie parametrów #kopiowanie @_ do zmiennych sub fun { $a = shift @_; # albo krócej: shift $b = shift; return $a**2 + $b**2; }

Lokalność w sensie PERLA # lokalność statyczna sub fun { my $a; my ($b,$c); my ($p1,$p2) = @_; }

Lokalność w sensie PERLA # lokalność dynamiczna sub fun { local $a; local ($b,$c); local ($p1,$p2) = @_; }

Lokalność w sensie PERLA # lokalność pakietowa sub fun1 { our $a; : } sub fun2 { our $a; : }

Lokalność statyczna vs. dynamiczna sub prn { print "$ZMIENNA\n"; } sub f1 { my $ZMIENNA = 111; prn(); } sub f2 { local $ZMIENNA = 222; prn();} # zaczynamy $ZMIENNA = 0; prn(); f1(); prn(); f2(); prn();

Symbole specjalne FILE LINE

Funkcja caller ($package, $filename, $line, Liczba ramek stosu, o które chcemy się cofnąć. $subr, $has_args, $wantarray) = caller($i); Uwaga! Opisano tylko część tablicy zwracanej jako wynik!

Funkcja caller #! /usr/bin/perl # call.pl sub f1 { f2(); } sub f2 { f3(); } sub f3 { print join(',',(caller(0))[0,1,2,3]). "\n"; print join(',',(caller(1))[0,1,2,3]). "\n"; print join(',',(caller(2))[0,1,2,3]). "\n"; print join(',',(caller(3))[0,1,2,3]). "\n"; } f1();

Funkcja caller main,./call.pl,4,main::f3 main,./call.pl,3,main::f2 main,./call.pl,12,main::f1

Zwracanie wartości return; return (wantarray? () : undef ); sub MAX_HANDLES { 20; }

Wyrażenia regularne w PERLU Operatory dopasowania wzorca: m/wzorzec/gimosx /wzorzec/gimosx s/wzorzec/substytut/egimosx tr/wzorzec/koder/cds

Operator m m/wzorzec/gimosx jeśli użyto m, to zamiast / można użyć dowolnego znaku nie-alfanumerycznego m#wzorzec#gimosx wyjątek: m(wzorzec)gimosx

Opcje operatora m opcja g i m o s x znaczenie dopasuj globalnie ignoruj różnice wielkości liter traktuj napis jako wiele wierszy kompiluj wzorzec tylko raz traktuj napis jako pojedynczy wiersz użyj rozszerzonej składni

Operatory dopasowania operator dopasowania pozytywnego $skalar =~ /wzorzec/ operator dopasowania negatywnego $skalar!~ /wzorzec/

$_ - skalar domyślny obie poniższe formy są równoważne: $_ =~ /wzorzec/ /wzorzec/

Operator m - przykłady #sprawdzanie odpowiedzi użytkownika $answer =~ /^y/i and do_something(); #wyłuskiwanie podnapisu if($s =~ /Version: *([0-9.]+)/){ $ver = $1; } #unikanie konfliktu wykałaczek next if $l =~ m#/var/spool/mail#;

Operator s s/wzorzec/substytut/egimosx zamiast / można użyć dowolnego znaku nie-alfanumerycznego s#wzorzec#gimosx# wyjątek: s(wzorzec)(substytut)

Opcje operatora s opcja e g i m o s x znaczenie traktuj substytut jako wyrażenie dopasuj globalnie ignoruj różnice wielkości liter traktuj napis jako wiele wierszy kompiluj wzorzec tylko raz traktuj napis jako pojedynczy wiersz użyj rozszerzonej składni

Operator s - przykłady # zamień lotki na skrzydła, ale nie podlotki $samolot =~ s/\blotki/skrzydła/g; # wystrzegaj się wykałaczek $path =~ s(/usr/bin)(usr/local/bin)

Operator s - przykłady # wzorzec i substytut interpolowane $user = 'guest'; $nuser = 'root'; $login =~ s/login: $user/login: $nuser/; # modyfikowanie w locie $cola = 'to jest to'; ($polococta = $cola) =~ s/to/tamto/;

Operator s - przykłady # policz zmiany $ilesz = ($tekst =~ s/szanowny/szanowna/g); #substytut z wyrażeniem $org = 'abc123xyz'; $org =~ s/(\d+)/$1 * 2/e; $org =~ s/(\d+)/$1 x 2/e;

Operator s - przykłady #usuń komentarze z programu w języku C $program =~ s(/\*.*?\*/)()g; #odwróć dwa pierwsze pola $linia =~ s/([^ ]*) *([^ ]*)/$2 $1/;

Operator tr tr/wzorzec/koder/cdx np. tr/a-z/a-z/; można użyć innych ograniczników jak w operatorze s

Opcje operatora tr opcja c d s znaczenie szukaj znaków, których nie ma we wzorcu usuń znaki, które nie zostały zamienione eliminuj znaki zamienione i powtórzone

Operator tr - przykłady # zamień na małe litery $ARGV[1] =~ tr/a-z/a-z/; #policz gwiazdki na niebie $stars = ($sky =~ tr/*/*/); #policz cyfry $digits = ($line =~ tr/0-9//;

Operator tr - przykłady #eliminuj powtórzenia $name = 'violletta'; $name =~ tr/a-z//s; #zamiana w locie ($HOST = $host) =~ tr/a-z/a-z/

Podstawowe operacje we/wy #funkcja open open UCHWYT, WYRAŻENIE # UCHWYT reprezentuje otwarty plik # WYRAŻENIE łańcuch zawierający nazwę pliku # zwraca undef w razie niepowodzenia # UCHWYT może być skalarem

Podstawowe operacje we/wy # otwarcie pliku do odczytu (READ) open $f, <file.txt # lub open $f, file.txt

Podstawowe operacje we/wy # otwarcie pliku do zapisu (WRITE) open $f, >file.txt # otwarcie pliku do dopisywania (APPEND) open $f, >>file.txt

Podstawowe operacje we/wy #funkcja close close UCHWYT # UCHWYT reprezentuje otwarty plik # zwraca undef w razie niepowodzenia

Podstawowe operacje we/wy # uchwyty wstępnie otwarte STDIN STDOUT STDERR

Podstawowe operacje we/wy # operator odczytu tekstowego - <> # zwraca undef w razie niepowodzenia <UCHWYT> $scalar = <F>; @array = <F>;

Podstawowe operacje we/wy # sprawdzanie końca pliku # źle! while($line=<f>){...} # dobrze while(defined($line=<f>)){...}

Podstawowe operacje we/wy # dwie przydatne funkcje: chop $string # chop usuwa z łańcucha ostatni znak i # zwraca ten znak jako wynik chomp $string # chomp usuwa z łańcucha kończące go znaki # końca linii i zwraca liczbę usuniętych # znaków jako wynik

Podstawowe operacje we/wy # pisanie do uchwytu print UCHWYT LISTA; # uwaga! # pomiędzy UCHWYT a LISTA nie ma przecinka!