Programowanie w Ruby

Podobne dokumenty
Programowanie w Ruby

Programowanie obiektowe

Programowanie w Ruby

Programowanie w Ruby

Programowanie w Ruby

Programowanie w Ruby

Kurs programowania. Wykład 7. Wojciech Macyna. 25 kwietnia 2017

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 2. Karol Tarnowski A-1 p.

Podstawy programowania skrót z wykładów:

Programowanie w Ruby

Programowanie w Ruby

Programowanie w Ruby

DIAGRAMY SYNTAKTYCZNE JĘZYKA TURBO PASCAL 6.0

Tablice (jedno i wielowymiarowe), łańcuchy znaków

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

Programowanie w Ruby

Programowanie w języku C++ Grażyna Koba

1. Pierwszy program. Kompilator ignoruje komentarze; zadaniem komentarza jest bowiem wyjaśnienie programu człowiekowi.

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

29. Poprawność składniowa i strukturalna dokumentu XML

Metaprogramowanie w Ruby

Wprowadzenie do języka Ruby

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Wstęp do programowania. Wykład 1

JAVAScript w dokumentach HTML (1)

media Blitz wydajne sytemy szablonów

L E X. Generator analizatorów leksykalnych

Podstawy programowania w języku C++

Katedra Elektrotechniki Teoretycznej i Informatyki. wykład 12 - sem.iii. M. Czyżak

Podstawy programowania w języku C++

Wstęp do ruby dla programistów javy

Ruby. Leksykon kieszonkowy

JAVA W SUPER EXPRESOWEJ PIGUŁCE

1 Podstawy c++ w pigułce.

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

Języki programowania obiektowego Nieobiektowe elementy języka C++

JAVAScript w dokumentach HTML (1) JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania.

EPI: Interfejs Graczny 2009/2010 Podstawy Rubiego

Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni. Wykład 6. Karol Tarnowski A-1 p.

Podstawy programowania - 1

Wstęp do programowania

Programowanie w Sieci Internet Blok 2 - PHP. Kraków, 09 listopada 2012 mgr Piotr Rytko Wydział Matematyki i Informatyki

Zaawansowany kurs języka Python

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Analiza leksykalna 1. Języki formalne i automaty. Dr inż. Janusz Majewski Katedra Informatyki

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

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 12. Karol Tarnowski A-1 p.

JAVAScript w dokumentach HTML - przypomnienie

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Podstawy VBA cz. 1. Programowanie komputerowe

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.

Zmienne i stałe w PHP

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 6. Karol Tarnowski A-1 p.

Programowanie w Ruby

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

JavaScript funkcyjność

Elementy języków programowania

Programowanie Obiektowe i C++

Funkcje są prawdopodobnie najważniejszą częścią każdego poważnego programu (w każdym języku programowania).

Kurs rozszerzony języka Python

MATERIAŁY DO ZAJĘĆ II

Microsoft IT Academy kurs programowania

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

Programowanie strukturalne i obiektowe

Kurs WWW. Paweł Rajba.

Języki programowania. Przetwarzanie tablic znaków. Część druga. Autorzy Tomasz Xięski Roman Simiński

XML extensible Markup Language. część 5

Funkcje wbudowane PHP

Python wprowadzenie. Warszawa, 24 marca PROGRAMOWANIE I SZKOLENIA

Podstawy programowania

Podstawy programowania w Pythonie

1 Przygotował: mgr inż. Maciej Lasota

Skrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać

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

Python wstęp. Michał Bereta

Redis, skrypty w języku Lua

Być może jesteś doświadczonym programistą, biegle programujesz w Javie,

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

Test przykładowy 2 PAI WSB Wrocław /06/2018

do MATLABa programowanie WYKŁAD Piotr Ciskowski

Programowanie w Ruby

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

ZMIENNE. Podstawy PHP

Język C++ zajęcia nr 2

Algorytmika i Programowanie VBA 1 - podstawy

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

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

Programowanie w języku Python. Grażyna Koba

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6

Podstawy programowania. Wykład: 5. Instrukcje sterujące c.d. Stałe, Typy zmiennych c.d. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Laboratorium Wstawianie skryptu na stroną: 2. Komentarze: 3. Deklaracja zmiennych

Przedmiot : Programowanie w języku wewnętrznym. Ćwiczenie nr 4

Programowanie w Internecie. Java

1 Podstawy c++ w pigułce.

Podstawy programowania C. dr. Krystyna Łapin

Programowanie I. O czym będziemy mówili. Plan wykładu nieco dokładniej. Plan wykładu z lotu ptaka. Podstawy programowania w językach. Uwaga!

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

ISO/ANSI C - funkcje. Funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje

PODEJŚCIE OBIEKTOWE. Przykład 1 metody i atrybuty statyczne

Programowanie Równoległe wykład, CUDA, przykłady praktyczne 1. Maciej Matyka Instytut Fizyki Teoretycznej

Transkrypt:

Programowanie w Ruby Wykład 3 Marcin Młotkowski 22 października 2018

Plan wykładu 1 2 3 4 5 Marcin Młotkowski Programowanie w Ruby 70 / 432

Z poprzedniego wykładu String to ciąg bajtów zwykle reprezentujących znaki. Marcin Młotkowski Programowanie w Ruby 71 / 432

Z poprzedniego wykładu String to ciąg bajtów zwykle reprezentujących znaki. Na jednym z forów String to kolekcja zakodowanych danych, tj. surowe dane + kodowanie. Marcin Młotkowski Programowanie w Ruby 71 / 432

Badanie kodowania napisu Ruby (co najmnniej 1.9.*) ENCODING.name => UTF-8 Ala ma kota.encoding => UTF-8 Marcin Młotkowski Programowanie w Ruby 72 / 432

Plik źródłowy # encoding: utf-8 alias :λ :lambda π = Math::PI hello world = λ{ subject Hello, #{subject}! π is #{π} } Marcin Młotkowski Programowanie w Ruby 73 / 432

Plik źródłowy # encoding: utf-8 alias :λ :lambda π = Math::PI hello world = λ{ subject Hello, #{subject}! π is #{π} } Kodowanie z Emacs a # -*- encoding: utf-8 -*- Marcin Młotkowski Programowanie w Ruby 73 / 432

Plan wykładu 1 2 3 4 5 Marcin Młotkowski Programowanie w Ruby 74 / 432

Rodzaje zmiennych Lokalne instancyjne (obiektu) globalne Stałe Marcin Młotkowski Programowanie w Ruby 75 / 432

lokalne Nazwa zmiennej lokalnej Nazwa zmiennej lokalnej zaczyna się od małej litery lub znaku podkreślenia. Marcin Młotkowski Programowanie w Ruby 76 / 432

lokalne Nazwa zmiennej lokalnej Nazwa zmiennej lokalnej zaczyna się od małej litery lub znaku podkreślenia. Zasięg zmiennej Zmienna jest dostępna tylko w kontekście (w funkcji, w pętli, etc.) w którym została utworzona Marcin Młotkowski Programowanie w Ruby 76 / 432

lokalne Nazwa zmiennej lokalnej Nazwa zmiennej lokalnej zaczyna się od małej litery lub znaku podkreślenia. Zasięg zmiennej Zmienna jest dostępna tylko w kontekście (w funkcji, w pętli, etc.) w którym została utworzona Zmienna poza zasięgiem zmienna = zmienna def f puts zmienna end f Marcin Młotkowski Programowanie w Ruby 76 / 432

globalne globalne zaczynają się od znaku $. Marcin Młotkowski Programowanie w Ruby 77 / 432

globalne globalne zaczynają się od znaku $. Przykład zmiennej globalnej $zmienna = zmienna def f puts $zmienna end f Marcin Młotkowski Programowanie w Ruby 77 / 432

Stałe Nazwa stałej Nazwa stałej zaczyna się wielką literą. Marcin Młotkowski Programowanie w Ruby 78 / 432

Stałe Nazwa stałej Nazwa stałej zaczyna się wielką literą. Const = stała # można, ale będzie ostrzeżenie: Const = zmienna? Marcin Młotkowski Programowanie w Ruby 78 / 432

klasy i zmienne instancyjne @zmienna instancyjna @@zmienna klasy Marcin Młotkowski Programowanie w Ruby 79 / 432

Plan wykładu 1 2 3 4 5 Marcin Młotkowski Programowanie w Ruby 80 / 432

Przypomnienie { z1, z2 instrukcje } do z1, z2 instrukcje end Marcin Młotkowski Programowanie w Ruby 81 / 432

Wykonanie bloku yield Marcin Młotkowski Programowanie w Ruby 82 / 432

Przykład def run yield end Marcin Młotkowski Programowanie w Ruby 83 / 432

Przykład def run yield end run { puts 2+2 } Marcin Młotkowski Programowanie w Ruby 83 / 432

Bardziej skomplikowany przykład def run yield 2, 2 yield 3, 4 end Marcin Młotkowski Programowanie w Ruby 84 / 432

Bardziej skomplikowany przykład def run yield 2, 2 yield 3, 4 end run { x, y puts x + y } Marcin Młotkowski Programowanie w Ruby 84 / 432

Jeszcze jeden przykład def run yield 2, 2 end z=2 run { x, y puts x + y + z } Marcin Młotkowski Programowanie w Ruby 85 / 432

Bloki to obiekty! blok = proc { x, y puts x + y } blok.call 2, 3 Marcin Młotkowski Programowanie w Ruby 86 / 432

Lepiej: lambda blok = lambda { puts 2+2 } blok.call Marcin Młotkowski Programowanie w Ruby 87 / 432

Można też tak: def fun (&block) block.call end fun { puts Cześć!!! } Marcin Młotkowski Programowanie w Ruby 88 / 432

Uwagi Bloki to obiekty klasy Proc Można tworzyć bloki w stylu obiektowym bl = Proc.new { puts A kuku } ale to czasem jest zły pomysł! Również & czasem powoduje kłopoty Marcin Młotkowski Programowanie w Ruby 89 / 432

Różnice między proc a lambda wrażliwość na liczbę argumentów i parametrów Obiekty proc zwracają wyjątek jeśli liczba argumentów wywołania nie zgadza się z liczbą parametrów, blokom lambda to wszystko jedno. Brakujące argumenty to nil. Marcin Młotkowski Programowanie w Ruby 90 / 432

Bloki a instrukcja return Źle def boo Proc.new { return } end x = boo x.call Marcin Młotkowski Programowanie w Ruby 91 / 432

Bloki a instrukcja return Źle def boo Proc.new { return } end x = boo x.call Dobrze def boo lambda { return } end x = boo x.call Marcin Młotkowski Programowanie w Ruby 91 / 432

Plan wykładu 1 2 3 4 5 Marcin Młotkowski Programowanie w Ruby 92 / 432

Przykład moduly.rb module Matematyka def Matematyka.dodawanie(x, y) x+y end Pi = 3.1415 end Marcin Młotkowski Programowanie w Ruby 93 / 432

Przykład moduly.rb module Matematyka def Matematyka.dodawanie(x, y) x+y end Pi = 3.1415 end plik.rb require moduly puts Matematyka.dodaj(2, 2) puts Matematyka::Pi Marcin Młotkowski Programowanie w Ruby 93 / 432

Dołączanie kodu require ładuje plik tylko raz, za pierwszym razem gdy jest wywoływana load ładuje pliki za każdym razem, gdy wykonanie programu dojdzie do tej instrukcji Marcin Młotkowski Programowanie w Ruby 94 / 432

Uwagi o modułach Nazwa modułu musi być pisana wielką literą W jednym pliku może być wiele modułów można zagnieżdżać W module można umieszczać instrukcje, które są wykonywane podczas włączania modułu Marcin Młotkowski Programowanie w Ruby 95 / 432

Bloki kodu składnia BEGIN { ciąg instrukcji } END { ciąg instrukcji } Marcin Młotkowski Programowanie w Ruby 96 / 432

Semantyka bloków kodu Bloki BEGIN i END można umieszczać w każdym pliku z kodem źródłowym Bloki BEGIN są wykonywane podczas ładowania pliku; natomiast END przy zakończeniu programu Marcin Młotkowski Programowanie w Ruby 97 / 432

Plan wykładu 1 2 3 4 5 Marcin Młotkowski Programowanie w Ruby 98 / 432

Przykłady komentarzy Komentarz jednowierszowy # to jest zwykły komentarz Komentarz wielowierszowy =begin A to jest bardzo obszerny, wielowierszowy komentarz =end Marcin Młotkowski Programowanie w Ruby 99 / 432

Dokumentowanie modułów RDoc Analizowany jest komentarz # na początku pliku oraz przed deklaracjami funkcji i modułów Generowanie dokumentacji: $ rdoc plik.rb Wynik jest w katalogu doc/ Marcin Młotkowski Programowanie w Ruby 100 / 432

Formatowanie w RDoc #-- powoduje pomijanie komentarza aż do #++ #= generuje nagłówek, np. #= USAGE #== również generuje nagłówek Można używać html-a Wiele innych znaczników Marcin Młotkowski Programowanie w Ruby 101 / 432

Jeszcze inny komentarz =begin rdoc =end Marcin Młotkowski Programowanie w Ruby 102 / 432

Doc dla RDoc http://rdoc.sourceforge.net/doc/files/readme.html Marcin Młotkowski Programowanie w Ruby 103 / 432