[[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