Przetwarzanie języka naturalnego

Temat: Wprowadzenie do języka Perl, Zadania: Data:

1

wyrażenia regularne

Autor: Paweł Kopeć

1 2 3 4 5 6 7 8 9 10

6 X 2014

Autor: Adrian Makuch

e e e e e e e e e e

17:30-19:45

Zadanie 1. Hello

Zadanie polegało na napisaniu prostego programu wypisującego tekst na ekranie.

#!/usr/bin/perl -w

print "Hello, World!\n";

Wykorzystywana przez nas w pierwszej linijce opcja –w oznacza włączenie ostrzeżeń.

Zadanie 2. Arytmetyka

Program ma na celu pobranie od użytkownika dwóch liczb, następnie wyświetlenie ich sumy.

#!/usr/bin/perl -w

print "podaj pierwsza wartosc\n";

$zmienna1 = <STDIN>;

print "podaj druga wartosc\n";

$zmienna2 = <STDIN>;

$zmienna3 = $zmienna2 + $zmienna1;

print "$zmienna3\n";

Zmienne w perl nie mają swojego typu. Są to po prostu słowa, traktowane tak samo przez kompilator.

Zadanie 3. Znajdź liczbę

Program ma na celu pobieranie od użytkownika maksymalnie 10 liczb i sprawdzeniu czy któraś z nich jest zgodna z wcześniej wylosowaną.

#!/usr/bin/perl -w

$losowa = int(rand(20));

$flaga = 1;

while ($flaga<11) {

print "podaj liczbe od 1-20\n";

$liczba = <STDIN>;

if ($liczba == $losowa ) {

print "Trafiles !\n";

$flaga =11;

}else {

print "pudło !\n";

$flaga++;

}

}

print "wykorzystałes 10 prob \n";

Wbudowana funkcja rand() pozwala nam wylosować liczbę z danego zakresu, natomiast funkcja int() zaokrągla ją do wartości całkowitej.

Zadanie 4. Klawiatura

Program ma za zadanie pobrać od użytkownika temperaturę w stopniach Celsjusza oraz zamienić ją na wartość wyrażoną w stopniach Fahrenheit-a

#!/usr/bin/perl -w

print "podaj wartosc temperatury w Celsjuszach\n"; $celc = <STDIN>;

$far = ($celc*9)/5+32;

print "temperatura w Fahrenheit-ach wynosi $far\n"; Zadanie 5. Temperatura

Program realizuje podobne zadanie co poprzedni, jednak wartość wprowadzana przez użytkownika jest ograniczona poprzez wykorzystanie wyrażeń warunkowych

#!/usr/bin/perl -w

print "podaj wartosc temperatury w Celcjuszach\n"; $celc = <STDIN>;

if($celc =~ /(\d\d)|(\d)/){

if(($celc<50) && ($celc>0)){

$far = ($celc*9)/5+32;

print "temperatura w fahrenheit-ach wynosi $far\n";

}else{

print "podales za wysoka temperature 0<x<50\n";

}

}else{

print "nie podales liczby\n";

}

Zadanie 6. Temperatura_2

Program realizuje to samo zadanie co poprzedni, jednak pozwala na podanie przez użytkownika wartości niecałkowitej. Zmianie uległa tylko zawartość pierwszego wyrażenia warunkowego.

if($celc =~ /\d+.?\d*/){

Zadanie 7. Numer telefonu

Program, dzięki zastosowaniu odpowiedniej kombinacji wyrażeń regularnych pozwala na podanie przez użytkownika swojego nazwiska oraz numeru telefonu. Numer może być podany w formie XXXXXXXXX lub XXX-XXX-XXX lub XXX XXX XXX

#!/usr/bin/perl -w

print "Podaj swoje nazwisko i numer telefonu oddzielone spacją \n"; $ciag = <STDIN>;

if($ciag =~ /^\D+ \d\d\d( |-)?\d\d\d( |-)?\d\d\d\s/) {

print "poprawnie \n";

}else{

print "nazwisko i numer telefonu sa w niepoprawnej formie\n";

}

Zadanie 8. Podmień tekst

Program z podanego ciągu zamienia ze sobą wyrazy psa i kota w ciągu” Ala ma kota, Piotr ma psa”. Aby zamiana została wykonana pomyślnie, ważne jest aby zachować odpowiednią kolejność przy zamianie, ponieważ poszukiwany ciąg jest wyszukiwany od początku tekstu.

#!/usr/bin/perl -w

print "podaj tekst \n";

$ciag = <STDIN>;

$ciag =~ s/psa/kota/;

$ciag =~ s/kota/psa/;

print "tekst po zamianie $ciag \n";

Zadanie 9. Przestaw tekst

Program ma za zadanie pobrać tekst składający się z trzech wyrazów oddzielonych spacją, po czym przesunąć ostatni z nich na początek ciągu dodając do niego kropkę.

#!/usr/bin/perl -w

print "podaj tekst \n";

$ciag = <STDIN>;

$ciag =~ /(\D{1,}\s)(\D{1,}\s)([a-zA-Z]{1,})$/;

print "teksty:\n $1\n$2\n$3 \n";

$nowa = "$3. $1$2";

print "$nowa\n";

W przykładnie do testowania ciąg „Nowak Jan prof” był zamieniany na „prof. Nowak Jan”.

Zadanie 10. Propozycja ćwiczenia

Program jest przykładem na wykorzystanie języka perl. Sprawdza on poprawność adresu email.

#!/usr/bin/perl -w

print "Sprawdzenie poprawnosci adresu email\n"; print "Wpisz email \n";

$email = <STDIN>;

chomp($email);

if($email =~ /(\D)(@)(\D)(.)(\D)/){

print "email poprawny \n";

print $email;

}

else{

print "Błędny email \n";

}