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