Zadania nr 7 NL - napisy, czyli ciągi znaków
Transkrypt
Zadania nr 7 NL - napisy, czyli ciągi znaków
Zadania nr 7 NL - napisy, czyli ciągi znaków
Prowadzący: Andrzej Gąsienica-Samek, strona kółka www.atinea.pl/kolko
Zmienne w NL mogą przechowywać nie tylko liczby, ale również napisy. Napisy składają się ze
znaków, dlatego są zwane ciągami znaków. Dotychczas stosowaliśmy już napisy jako parametry
funkcji print, gdy chcieliśmy wypisać na ekranie słowo, a nie wartość zmiennej. Aby stworzyć
napis w NL należy umieścić go pomiędzy apostrofami. Poniższy program korzysta z napisów:
print('Cześć');
można go zapisać w inny sposób:
var napis;
napis = 'Cześć';
print(napis);
Wykonaj powyższy program krok po kroku. Zobacz, że w instrukcji print nie wypisujemy słowa
"napis", ale zawartość zmiennej napis. O napisy i liczby możemy również pytać użytkownika.
Służy do tego funkcja readln(). Wpisz poniższy program:
var imie;
print('Jak masz na imię? ');
imie = readln();
print('Cześć ');
print(imie);
Na napisach można wykonywać następujące funkcje:
readln() pyta użytkownika o napis lub liczbę i zwraca w wyniku wprowadzoną wartość
cat('Ala ', 'ma kota') łączy napisy i zwróci 'Ala ma kota'
len('Ala') zwraca długość napisu i zwróci 3.
substr('Ala ma kota', 2, 6) zwraca część napisu o długości 6 znaków zaczynając od znaku nr 2
(znaki numerowane są od 0). Funkcja ta zwróci 'a ma k', gdyż znak numer 0 to A, znak
numer 1 to l, a znak numer 2 to a, znak numer 3 to odstęp, a znak numer 4 to m, itd.
ord('A') oczekuje napisu składającego się z dokładnie jednego znaku i zwraca kod Unicode znaku.
Kod znaku 'A' to 65, więc ord('A') zwróci liczbę 65.
chr(65) zwraca znak, który ma podany kod Unicode. chr(65) zwróci napis składający się z jednego
znaku 'A'.
Uruchom poniższy program:
print(cat('Ala ', 'ma kota'));
println();
print(len('Ala'));
println();
print(substr('Ala ma kota', 2, 6));
println();
print(ord('A'));
println();
print(chr(65));
println();
AGS 2012-10-13 Zajęcia nr 3 NL
1/3
Operatory w NL według kolejności działań:
1.
2.
3.
4.
5.
6.
7.
8.
!
*
+
<
==
&&
||
=
/ %
> <= >=
!=
(negacja)
(mnożenie, dzielenie, reszta z dzielenia)
(dodawanie, odejmowanie)
(mniejsze, większe, mniejsze równe, większe równe)
(równe, nierówne)
(i w warunkach)
(lub w warunkach)
(przypisanie wartości do zmiennej)
Funckje w NL:
print('Ala')
pisze na ekran 'Ala'
print(x)
pisze na ekran zawartość zmiennej x
println()
przechodzi do kolejnego wiersza
readln()
zwraca napis wprowadzony przez użytkownika
cat('Ala ', 'ma kota')
łączy napisy i zwróci 'Ala ma kota'
len('Ala')
zwraca długość napisu i zwróci 3.
substr('Ala ma kota', 2, 6) zwraca część napisu od znaku 2 o długości 6
ord('A')
zwraca kod znaku, zwróci liczbę 65.
chr(65)
zwraca znak o danym kodzie i zwróci 'A'
Zadania
Zadanie 1. Napisz program, który zapyta użytkownika o imię i napisze ile liter ma jego imię:
Jak masz na imię? Andrzej
Twoje imię ma 7 liter
Zadanie 2. Napisz program, który zapyta użytkownika o imię i napisze na jaką literę zaczyna się
jego imię (użyj funkcji substr):
Jak masz na imię? Andrzej
Twoje imię zaczyna się na literę A
Zadanie 3. Napisz program, który zapyta użytkownika o imię i napisze na jaką literę kończy się
jego imię (musisz użyć funkcji len, żeby sprawdzić długość imienia i substr, żeby pobrać ostatnią
literę):
Jak masz na imię? Andrzej
Ostatnia litera twojego imienia to j
Zadanie 4. Napisz program, który zapyta użytkownika o imię i wypisze je z gwiazdkami (użyj pętli
do wyciągania kolejnych liter):
Jak masz na imię? Andrzej
Cześć *A*n*d*r*z*e*j*
Zadanie 5. Napisz program, który zapyta użytkownika o imię i przekręci powitanie:
Jak masz na imię? Andrzej
jezrdnA ćśezC
AGS 2012-10-13 Zajęcia nr 3 NL
2/3
Zadanie 6. Napisz program, który zapyta użytkownika o napis, a następnie wypisze kody znaków z
tego napis. Użyj pętli oraz funkcji substr i ord do pobierania kodów znaków. Następnie sprawdź:
jakie kody mają małe litery?
jakie kody mają litery wielkie?
jakie kody mają cyfry?
jakie kody mają polskie znaki?
Przykład działania programu:
Wprowadź napis? ABC
ABC to 65 66 67
Zadanie 7. Napisz program, który zapyta użytkownika o napis, a następnie wypisze ten napis
wielkimi literami. Twój program powinien działać dla liter alfabetu angielskiego (tych z
klawiatury). Użyj konstrukcji if oraz funkcji ord do sprawdzenia czy litera jest mała. W takim
przypadku musisz odjąć odpowiednią liczbę od kodu znaku, żeby uzyskać kod litery wielkie. Użyj
chr, żeby z kod litery zamienić na literę.
Wprowadź napis? aBc
Wielkimi literami: ABC
Zadanie 8. Napisz program, który zapyta użytkownika o imię i sprawdzi czy osoba jest chłopakiem
czy dziewczyną. Żeby to sprawdzić użyj instrukcji if i porównaj kod ostatniej litery z kodem litery
'a'. Użyj konstrukcji if i funkcji ord do pobierania kodów znaków. Jakie imię odbiega od tej reguły?
Zrób specjalny warunek w if dla tego imienia:
Jak masz na imię? Andrzej
Sądzę, że jesteś chłopakiem
Jak masz na imię? Ala
Sądzę, że jesteś dziewczyną
Rozwiązania zadań domowych zgłoś w systemie obsługi kółka na stronie: www.atinea.pl/kolko
AGS 2012-10-13 Zajęcia nr 3 NL
3/3