Napisy - Atinea

Transkrypt

Napisy - Atinea
Napisy, czyli ciągi znaków
Prowadzący: Łukasz Dunaj, strona kółka: 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 console::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.
Na napisach można wykonywać następujące funkcje:
console::readln() pyta użytkownika o napis lub liczbę i zwraca w wyniku wprowadzoną wartość
'Ala ' . 'ma kota' łączy napisy i zwróci 'Ala ma kota'
'Ala' eq 'Ola' sprawdza czy wyrazy są takie same i zwróci fałsz
string::length('Ala') zwraca długość napisu i zwróci 3
string::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.
string::get_char('Ala ma kota', 7) zwraca znak znajdujący się na siódmej pozycji (znaki
numerowane są od 0), czyli 'k'.
string::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 string::ord('A') zwróci liczbę 65.
string::chr(65) zwraca znak, który ma podany kod Unicode. string::chr(65) zwróci napis
składający się z jednego znaku 'A'.
Uruchom poniższy program i zobacz jak wykonuje kolejne instrukcje i wypisuje kolejne wyniki na
konsolę.
use console;
use string;
def test::main() {
var x = 'Ala';
var y = ' ma kota';
if (x eq y) {
console::print('Wyrazy są takie same.');
} else {
console::print('Wyrazy są różne.');
}
console::println();
console::print(string::length(x));
console::println();
console::print(string::get_char(x, 1));
console::println();
x = x . y;
console::print(x);
console::println();
console::print(string::substr(x, 1, 8));
console::println();
console::print(string::ord('Z'));
console::println();
console::print(string::chr(90));
}
Dodatkowe informacje. Operatory w NL według kolejności działań:
!
(negacja)
* / %
(mnożenie, dzielenie, reszta z dzielenia)
+ -
(dodawanie, odejmowanie)
.
(konkatenacja – łączenie dwóch napisów w jeden)
< > <= >= (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)
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 string::get_char)
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 string::length, żeby sprawdzić długość imienia i string::get_char, ż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
Zadanie 6
Napisz program, który zapyta użytkownika o napis, a następnie wypisze kody znaków z tego
napisu. Użyj pętli oraz funkcji string::chr i string::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 dużymi literami.
Twój program powinien działać dla liter alfabetu angielskiego (tych z klawiatury). Użyj konstrukcji
if oraz funkcji string::ord do sprawdzenia czy litera jest mała. W takim przypadku musisz odjąć
odpowiednią liczbę od kodu znaku, żeby uzyskać kod litery dużej. Użyj string::chr, żeby z kod
litery zamienić na literę.
Wprowadź napis: aBc
Dużymi 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 string::ord do pobierania kodów znaków. (Ciekawostka - jakie imię
odbiega od tej reguły?)
Jak masz na imię: Andrzej
Sądzę, że jesteś chłopakiem
Jak masz na imię: Ala
Sądzę, że jesteś dziewczyną
Zadanie 9
Napisz program, który wypisuje litery od A do Z, każdą w osobnym wierszu. W twoim programie
możesz skorzystać tylko jeden raz z instrukcji console::print. Twój program powinien wypisać:
A
B
C
...
Y
Z
Zadanie 10
Napisz program, który zapyta użytkownika o liczbę w systemie dziesiętnym i napisze jej
reprezentację w systemie binarnym. Twój program powinien działać poprawnie dla liczb
nieujemnych. Przykład:
Podaj liczbę: 78245
Dwójkowo: 10011000110100101
Zadanie 11
Napisz program, który zapyta użytkownika o liczbę w systemie dwójkowym i napisze jej
reprezentację w systemie dziesiętnym. Twój program powinien działać poprawnie dla liczb
nieujemnych. Przykład:
Podaj liczbę w systemie dwójkowym: 10011000110100101
Dziesiętnie: 78245

Podobne dokumenty