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
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";
}