[[oktatas:programozás:ruby|< Ruby]] ====== A Ruby nyelv ====== * **Szerző:** Sallai András * Copyright (c) Sallai András, 2015, 2020 * Licenc: GNU Free Documentation License 1.3 * Web: http://szit.hu ===== A Ruby nyelvről ===== A Ruby nyelvet **Macumoto Jukihiro** fejlesztette a 90 évek közepére. Első kiadása 1995-ben volt. Általános célú, objektum-orientált programozási nyelv. ===== Helló Világ ===== Készítsük el a következő állományt: #!/usr/bin/ruby # encoding: utf-8 print "Helló Világ\n" Az állomány kiterjesztése: .rb Futtatás: ruby hello.rb Unix alapú rendszeren még: ./hello.rb ===== Megjegyzések ===== # egysoros megjegyzés print "egy" =begin Ez egy több soros megjegyzés. =end ===== Kiíratás ===== #!/usr/bin/ruby print 40 puts 'Helló' Kifejezések kiértékelése: print (3 * 4).to_s + "\n" puts 3 * 4 ===== Különleges karakterek ===== puts "egy\n" ^ Jelölés ^ Jelölt karakter ^ | \n | új sor (0x0a) | | \r | kocsi vissza (0x0d) | | \f | lapdobás (0x0c) | | \b | visszaperjel (0x08) | | \a | csengőhang (0x07) | | \e | escape (0x1b) | | \s | szóköz (0x20) | | \nnn | oktális jelölés (n 0-7 közötti szám) | | \cx, \C-x | Control-x | | \M-x | Alt-x (c|0x80) | | \M-\C-x | Alt-Control-x | | \x | Karakter x | ===== Változók és állandók===== * globális - A globális változókat "$" karakterrel kezdjük. * helyi * példányváltozó * osztályváltozó * álváltozók * állandók szam = 30 #!/usr/bin/ruby szam = 30 eredmeny = szam * 2 puts eredmeny ==== Állandók ==== Az állandó attól állandó, hogy nagybetűvel kezdjük a nevét. A fordító azonban, csak figyelmeztetést ad. A = 10 A = 20 Lehetséges kimenet: ./hello.rb:4: warning: already initialized constant A ./hello.rb:3: warning: previous definition of A was here ===== Formázott kimenet ===== #!/usr/bin/ruby szam = 5 puts "Szám: %d" % szam #!/usr/bin/ruby szam = 54.12345 formatum = "Szám: %010.2f" % szam puts formatum #!/usr/bin/ruby szam = 5 printf "Szám: %d\n", szam #!/usr/bin/ruby szam = 54.12345 printf "Szám: %010.2f\n", szam ===== Bekérés ===== #!/usr/bin/ruby # encoding: utf-8 print 'Szám: ' szam = gets eredmeny = szam.to_i * 2 print "eredmeny: ", eredmeny, "\n" Szöveg bekérése: #!/usr/bin/ruby # encoding: utf-8 print 'Név: ' nev = gets.chomp ===== Konvertálás ===== * to_s konvertálás karaktersorozattá * to_i konvertálás egész számmá * to_a konvertálás tömbbé szamStr = "25" szam = szamStr.to_i szam = 35 szamStr = szam.to_s ===== Szelekció ===== #!/usr/bin/ruby # encoding: utf-8 print 'Szám: ' nev = gets.chomp if nev.to_i > 100 print "Hu, ez nagy szám\n" end #!/usr/bin/ruby # encoding: utf-8 print 'Szám: ' nev = gets.chomp.to_i if nev > 100 print "Hu, ez nagy szám\n" end #!/usr/bin/ruby # encoding: utf-8 print 'Név: ' nev = gets.chomp if nev == "János" print 'Üdv újra János' else print 'Üdv! Ki vagy?' end #!/usr/bin/ruby # encoding: utf-8 print 'Szám: ' nev = gets.chomp.to_i if nev > 0 print "Pozitív\n" elsif nev < 0 print "Negatív\n" else print "Nulla\n" end ===== Iteráció ===== #!/usr/bin/ruby # encoding: utf-8 tomb = [1,2,3,4,5] tomb.each do |i| puts i end ==== while ciklus ==== #!/usr/bin/ruby # encoding: utf-8 i = 5 while i < 10 do puts i i = i + 1 end ===== Tömb ===== #!/usr/bin/ruby # encoding: utf-8 szamok = Array.new(5) { |a| a = a * 2} puts "#{szamok}" A kimenet: [0, 2, 4, 6, 8] szamok = Array.[](1, 2, 3, 4,5) puts "#{szamok}" szamok = Array[1, 2, 3, 4, 5] puts "#{szamok}" #!/usr/bin/ruby # encoding: utf-8 szamok = Array(5..10) puts "#{szamok}" Kollekció bejárása: #!/usr/bin/ruby # encoding: utf-8 tomb = [5, 6, 7, 8, 9, 10] b = Array.new b = tomb.collect{|a| a} puts b #!/usr/bin/ruby # encoding: utf-8 tomb = [5, 6, 7, 8, 9, 10] b = Array.new b = tomb.collect{|a| 2 * a} puts b ==== Hash ==== ertekek = { "nev" => "János", "kor" => 35 } puts ertekek["nev"] ===== Karaktersorozatok ===== ==== Konkatenálás ==== #!/usr/bin/ruby szoveg = 'alma' szoveg << 'körte' puts szoveg #!/usr/bin/ruby szoveg = 'alma' szoveg += 'körte' puts szoveg #!/usr/bin/ruby szoveg = 'alma' szoveg.concat('körte') puts szoveg ==== Visszafele ==== "szilva".reverse 405.to_s.reverse ==== Méret ==== Karaktersorozatok mérete: #!/usr/bin/ruby szoveg = "alma" meret = szoveg.size puts meret puts "körte".size ==== Nagybetű ==== Nagybetűs: puts "körte".upcase ==== Szöveg cseréje ==== #!/usr/bin/ruby szoveg = "körte" puts szoveg.gsub("rte", "dös") ===== Fájlkezelés ===== ==== Módok ==== ^ Jel ^ Jelentés ^ | r | Csak olvasható mód. A fájlmutató a fájl elején | | r+ | Olvasás-írás mód. A fájlmutató a fájl elején | | w | Csak írás mód. Felülírja a fájlt, ha létezik. | | w+ | Olvasás írás. Felülírja a létező fájlt. | | a | Csak írás mód. A fájlmutató a fáj végén. \\ Hozzáfűzés | | a+ | Olvasás-írás mód. A fájlmutató a fájl végén | ==== Olvasás ==== Egész fájl beolvasása file_content = File.open("adat.txt", "r:UTF-8", &:read) puts file_content open("adat.txt", "r:UTF-8") do |f| while line = f.gets puts line end end File.open("adat.txt", "r:UTF-8") do |f| while line = f.gets puts line end end ==== Írás ==== open("adat.txt", "w:UTF-8") do |f| f.write "1:Pelikán János:Orosháza:8700000" end File.open("adat.txt", "w:UTF-8") do |f| f.write "1:Pelikán János:Orosháza:8700000" end