Programowanie w Ruby

Podobne dokumenty
Programowanie w Ruby

Programowanie obiektowe

Programowanie w Ruby

Wprowadzenie do języka Ruby

Kurs rozszerzony języka Python

int tab[5]; tab[1]; ciągły obszar pamięci, w którym umieszczone są elementy tego samego typu macierz [ ] - dwuargumentowy operator indeksowania

System operacyjny Linux

Laboratorium 3: Tablice, tablice znaków i funkcje operujące na ciągach znaków. dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski

Programowanie w Ruby

Programowanie w Ruby

Programowanie w Ruby

MATERIAŁY DO ZAJĘĆ II

Programowanie I C / C++ laboratorium 03 arytmetyka, operatory

Microsoft IT Academy kurs programowania

Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 WYKŁAD 7 WSTĘP DO INFORMATYKI

EPI: Interfejs Graficzny Wykład nr 2 Wbudowane typy danych Rubiego

Programowanie w Ruby

Programowanie w Ruby

Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane

Wstęp do programowania. Różne różności

typ zakres sposob zapamietania shortint integer bajty (z bitem znaku) longint byte word

Typy danych, cd. Łańcuchy znaków

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Typy złożone. Struktury, pola bitowe i unie. Programowanie Proceduralne 1

Serwer WWW Apache. Plik konfiguracyjny httpd.conf Definiujemy m.in.: Aktualne wersje 2.4.6, , zakończony projekt

Wstęp do programowania 2

Stałe i zmienne znakowe. Stała znakowa: znak

Komentarze w PHP (niewykonywane fragmenty tekstowe, będące informacją dla programisty)

dr inż. Jarosław Forenc

Tablice deklaracja, reprezentacja wewnętrzna

Laboratorium 6: Ciągi znaków. mgr inż. Leszek Ciopiński dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski

Programowanie w Ruby

Podstawowe części projektu w Javie

Programowanie w Ruby

Operatory cd. Relacyjne: ==!= < > <= >= bool b; int i =10, j =20; dzielenie całkowitych wynik jest całkowity! Łączenie tekstu: + string s = "Ala ma ";

Java Podstawy. Michał Bereta

Wskaźniki. Przemysław Gawroński D-10, p marca Wykład 2. (Wykład 2) Wskaźniki 8 marca / 17

Kurs języka Python Wykład 6. Pliki tekstowe Pliki rekordów Pliki CSV Strumienie

Podstawy programowania. Wykład Pętle. Tablice. Krzysztof Banaś Podstawy programowania 1

Programowanie w C++ Wykład 6. Katarzyna Grzelak. 1 kwietnia K.Grzelak (Wykład 6) Programowanie w C++ 1 / 43

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 5 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41

Wykład 2 Składnia języka C# (cz. 1)

Wskaźniki. nie są konieczne, ale dają językowi siłę i elastyczność są języki w których nie używa się wskaźników typ wskaźnikowy typ pochodny:

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

PARADYGMATY PROGRAMOWANIA Wykład 4

Podstawy programowania w języku C++

Wstęp do ruby dla programistów javy

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 26 marca kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40

Podstawy programowania w Pythonie

lekcja 8a Gry komputerowe MasterMind

Programowanie w Ruby

DIAGRAMY SYNTAKTYCZNE JĘZYKA TURBO PASCAL 6.0

Podstawy Programowania

Programowanie komputerowe. Zajęcia 5

Kurs WWW. Paweł Rajba.

PARADYGMATY PROGRAMOWANIA Wykład 3

Wykład IV PASCAL - łańcuch znaków, - procedury i funkcje, - sortowanie bąbelkowe

Podstawy programowania

Programowanie w Ruby

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44

DANE TEKSTOWE W JĘZYKU C/C++ - TABLICE ZNAKOWE

Programowanie w Ruby

Podstawy programowania C. dr. Krystyna Łapin

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

Informatyka 1. Przetwarzanie tekstów

INSTRUKCJA PUSTA. Nie składa się z żadnych znaków i symboli, niczego nie robi. for i := 1 to 10 do {tu nic nie ma};

PL/SQL. Funkcje wbudowane

Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja, - liczby losowe

Podstawy programowania. Python wykład 6

Programowanie Obiektowe i C++

Podstawy programowania. Wykład 6 Wskaźniki. Krzysztof Banaś Podstawy programowania 1

// Liczy srednie w wierszach i kolumnach tablicy "dwuwymiarowej" // Elementy tablicy są generowane losowo #include <stdio.h> #include <stdlib.

Laboratorium 10: Maszyna stanów

Podstawy programowania w języku C++

ŁAŃCUCHY W JĘZYKU C/C++

Python. Wprowadzenie. Jolanta Bachan

2. Klasy cz. 2 - Konstruktor kopiujący. Pola tworzone statycznie i dynamicznie - Funkcje zaprzyjaźnione - Składowe statyczne

Tablice, funkcje - wprowadzenie

KURS C/C++ WYKŁAD 2. char znak; znak = a ; Program 2 #include<stdio.h> void main() { char znak; while( (znak = getchar() )!= t ) putchar(znak); }

Tworzenie aplikacji w języku Java

DYNAMICZNE PRZYDZIELANIE PAMIECI

Język Python. Język Python 1/35

Wykład nr 1 Język Ruby i framework Rails


Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

Programowanie w języku C++

Tworzenie stron internetowych z wykorzystaniem HTM5, JavaScript, CSS3 i jquery. Łukasz Bartczuk

Podstawy programowania w języku C++

Kurs rozszerzony języka Python

Operacje na łańcuchach znaków

Lekcja 6: Pascal. Procedura i funkcja

Programowanie w języku C++

Wyrażenie include(sciezka_do_pliku) pozwala na załadowanie (wnętrza) pliku do skryptu php. Plik ten może zawierać wszystko, co może się znaleźć w

wykład II uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - funkcje, tablice i wskaźniki wykład II dr Jarosław Mederski Spis

Temat 1: Podstawowe pojęcia: program, kompilacja, kod

Wykład VII. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

Tablice i struktury. czyli złożone typy danych. Programowanie Proceduralne 1

Języki C i C++ Wykład: 2. Wstęp Instrukcje sterujące. dr Artur Bartoszewski - Języki C i C++, sem. 1I- WYKŁAD

Transkrypt:

Programowanie w Ruby Wykład 2 Marcin Młotkowski 14 października 2016

Plan wykładu 1 2 3 Marcin Młotkowski Programowanie w Ruby 2 / 33

Liczby całkowite Fixnum Zakres: [ 2 30... 2 30 1] Przykłady: 119, 0xFFFF, 0b1101001 Konwencja: 8 388 608 Bignum Dowolnie wielkie liczby Automatyczna konwersja, jeśli wynik działania lub stała przekracza Fixnum Marcin Młotkowski Programowanie w Ruby 3 / 33

Operacje na typie Fixnum wyrażenie wynik x <=> y porównuje liczby, zwraca -1, 0, 1 123[2] zwraca 2 bit (licząc od 0) 5.size liczba bitów 5.to f przekształca na liczbę klasy Float 3.to s przekształcenie do String 15.to s(2) przekształcenie do String, ale przy podstawie 2 x.zero? sprawdzenie, czy liczba jest równa zero Marcin Młotkowski Programowanie w Ruby 4 / 33

Liczby typu Float Zakres: [Float::MIN..FLOAT::MAX] Standardowe operatory, oraz operator <=> 3.14.to s w.finite? Marcin Młotkowski Programowanie w Ruby 5 / 33

Ciekawostka $ puts ( 1.0/0.0) nie zwraca błędu Marcin Młotkowski Programowanie w Ruby 6 / 33

Ciekawostka $ puts ( 1.0/0.0) nie zwraca błędu tylko -Infinity Marcin Młotkowski Programowanie w Ruby 6 / 33

Plan wykładu 1 2 3 Marcin Młotkowski Programowanie w Ruby 7 / 33

(typ: String) Przykłady: string, string alfabet Morse\ a to jest \ cytat\ Marcin Młotkowski Programowanie w Ruby 8 / 33

Notacja Q %q/ciągłe cytowanie jest bardzo żmudne/ %Q!Ale w Ruby m bardzo łatwe! Marcin Młotkowski Programowanie w Ruby 9 / 33

here documents napis = <<END OF STRING Ogary poszły w las. Echo ich grania słabło coraz bardziej, aż wreszcie utonęło w milczeniu leśnym. END OF STRING Marcin Młotkowski Programowanie w Ruby 10 / 33

Tworzenie napisów "Ho! " * 3 nowy napis "Ho! Ho! Ho! " "A " << "kuku!" modyfikuje napis do postaci "A kuku!" Marcin Młotkowski Programowanie w Ruby 11 / 33

Wyrażenia wewnątrz napisów 2+2=#{2 + 2} Hip hip #{ Hura! * 3} pi = 3.1415 puts pi = #{pi} Marcin Młotkowski Programowanie w Ruby 12 / 33

Operacje na napisach irb(main):001:0> abc + def => "abcdef" Marcin Młotkowski Programowanie w Ruby 13 / 33

Operacje na napisach irb(main):001:0> abc + def => "abcdef" irb(main):001:0> x = abc => "abc" irb(main):002:0> x << def => "abcdef" Marcin Młotkowski Programowanie w Ruby 13 / 33

Odwołania do elementów wyrażenie wynik abcdef [3] 100 abcdef [3,1] d abcdef [3..4] de abcdef [-3..-1] def abcdef [/(d.f)/] def Marcin Młotkowski Programowanie w Ruby 14 / 33

Modyfikacja napisów Operacja x = skówka x[2] = u x[/w/] = f x[0..1]= zas wartość zmiennej x x = skówka x = skuwka x = skufka x = zasufka Marcin Młotkowski Programowanie w Ruby 15 / 33

Modyfikowanie a tworzenie Modyfikowany jest napis operacje modyfikowania [ ]=, << Napis nie jest modyfikowany, za to tworzony jest nowy, który jest wynikiem operacje tworzenia +, * Marcin Młotkowski Programowanie w Ruby 16 / 33

Pary metod Zwraca kopię modyfikuje napis opis aaa.capitalize aaa.capitalize! zamienia litery na wielkie str\n.chomp str\n.chomp! usuwa białe znaki z końców napisu Marcin Młotkowski Programowanie w Ruby 17 / 33

Formatowanie tekstu Pi = %.2f % 3.1415 Imię %s nazw %s % [ Jan, Kowalski ] Marcin Młotkowski Programowanie w Ruby 18 / 33

Porównywanie napisów eql?, ==, ===, equal? str1 = ala ma kota str2 = ala ma kota str1 == str2 str1 === str2 str1.eql?(str2) Marcin Młotkowski Programowanie w Ruby 19 / 33

Inne operacje na stringach Całe mnóstwo ;-) Marcin Młotkowski Programowanie w Ruby 20 / 33

Inne operacje na stringach Całe mnóstwo ;-) http://ruby-doc.org/core/ String Marcin Młotkowski Programowanie w Ruby 20 / 33

Dygresja: dokumentacja wbudowana RDoc $ ri String $ ri String.chomp $ ri chomp Marcin Młotkowski Programowanie w Ruby 21 / 33

Znaki narodowe Z dokumentacji klasy String String to ciąg bajtów zwykle reprezentujących znaki. Marcin Młotkowski Programowanie w Ruby 22 / 33

Znaki narodowe Z dokumentacji klasy String String to ciąg bajtów zwykle reprezentujących znaki. Konsekwencje metody capitalize, upcase, length etc. działają tylko dla ASCII; puts i print drukują poprawnie UTF-8 Marcin Młotkowski Programowanie w Ruby 22 / 33

Znaki narodowe Z dokumentacji klasy String String to ciąg bajtów zwykle reprezentujących znaki. Konsekwencje metody capitalize, upcase, length etc. działają tylko dla ASCII; puts i print drukują poprawnie UTF-8 Korzystanie z utf-8 $KCODE = UTF 8 Marcin Młotkowski Programowanie w Ruby 22 / 33

Przykłady tablic Tworzenie tablic [1, dwa, 3.0] %w{ poniedziałek wtorek środa } daje: [ poniedziałek, wtorek, środa ] Marcin Młotkowski Programowanie w Ruby 23 / 33

Przykłady tablic Tworzenie tablic [1, dwa, 3.0] %w{ poniedziałek wtorek środa } daje: [ poniedziałek, wtorek, środa ] Parę uwag o tablicach indeksowanie jest od zera dołączanie elementów na koniec [1, 2, 3] << 4 << 5 Usuwanie ostatniego elementu arr.delete(arr.length - 1) Marcin Młotkowski Programowanie w Ruby 23 / 33

Operacje na tablicach Odwołania do elementów [ zero, jeden, dwa, trzy, cztery ][1,3] daje [ jeden, dwa, trzy ] [ zero, jeden, dwa, trzy, cztery ][1..3] daje [ jeden, dwa, trzy ] Marcin Młotkowski Programowanie w Ruby 24 / 33

Operacje na tablicach Odwołania do elementów [ zero, jeden, dwa, trzy, cztery ][1,3] daje [ jeden, dwa, trzy ] [ zero, jeden, dwa, trzy, cztery ][1..3] daje [ jeden, dwa, trzy ] Modyfikacje y = [1,1,2,3,5,8] y[3..5] = [1,1,2] daje [1, 1, 2, 1, 1, 2] Marcin Młotkowski Programowanie w Ruby 24 / 33

Operacje na tablicach Odwołania do elementów [ zero, jeden, dwa, trzy, cztery ][1,3] daje [ jeden, dwa, trzy ] [ zero, jeden, dwa, trzy, cztery ][1..3] daje [ jeden, dwa, trzy ] Modyfikacje y = [1,1,2,3,5,8] y[3..5] = [1,1,2] daje [1, 1, 2, 1, 1, 2] Więcej operacji na tablicach $ ri Array Marcin Młotkowski Programowanie w Ruby 24 / 33

Przykłady przedziałów 1..7 0...256 a.. z Konwersja przedziału na tablicę (1..5).to_a ==> [1,2,3,4,5] ( aac.. aaf ).to_a ==> ["aac", "aad", "aae", "aaf"] Marcin Młotkowski Programowanie w Ruby 25 / 33

Zastosowanie przedziałów epoka = case rok when 476..1453: średniowiecze when 1454..1918: nowożytność when 1918..2016: współczesność end Marcin Młotkowski Programowanie w Ruby 26 / 33

Deklaracja słownika slownik = { one => 1, two => 2, three => 3 } Marcin Młotkowski Programowanie w Ruby 27 / 33

Deklaracja słownika slownik = { one => 1, two => 2, three => 3 } Pusty słownik slownik = { } slownik = Hash.new(0) Marcin Młotkowski Programowanie w Ruby 27 / 33

Przetwarzanie słowników slownik = { 1=> jeden, 2 => dwa } for k in slownik.keys puts [ + k.to s + ]= + slownik[k].to s end Marcin Młotkowski Programowanie w Ruby 28 / 33

Plan wykładu 1 2 3 Marcin Młotkowski Programowanie w Ruby 29 / 33

Składnia { } instrukcje do instrukcje end Marcin Młotkowski Programowanie w Ruby 30 / 33

z parametrem (parametrami) { z1, z2 instrukcje } Marcin Młotkowski Programowanie w Ruby 31 / 33

Zastosowania bloków Przetwarzanie tablic arr = [ czerwony, biały, zielony ] arr.each { item printf( Kolor %s\n, item) } Marcin Młotkowski Programowanie w Ruby 32 / 33

Zastosowania bloków Przetwarzanie tablic arr = [ czerwony, biały, zielony ] arr.each { item printf( Kolor %s\n, item) } Przetwarzanie słowników slownik.each { k, v puts #{k} => #{v} } Marcin Młotkowski Programowanie w Ruby 32 / 33

Zastosowania bloków Przetwarzanie tablic arr = [ czerwony, biały, zielony ] arr.each { item printf( Kolor %s\n, item) } Przetwarzanie słowników slownik.each { k, v puts #{k} => #{v} } Inne przykłady 15.downto(0) { i printf( %04b\n, i) } xxx.upto( xyz ) { i puts i } Marcin Młotkowski Programowanie w Ruby 32 / 33

Ostatnie przykłady [1,2,3,4].collect! { i 2**i } [2, 4, 8, 16] Marcin Młotkowski Programowanie w Ruby 33 / 33

Ostatnie przykłady [1,2,3,4].collect! { i 2**i } [2, 4, 8, 16] [1,2,3,4].delete if { i i % 2 == 0 } [1, 3] Marcin Młotkowski Programowanie w Ruby 33 / 33