Készítette: Száraz Richárd. - Yukihiro Matsumoto tervezte meg 1995-ben - Célja egy emberközpontú OOP programozási nyelv megalkotása volt, amely egyszerű.

Slides:



Advertisements
Hasonló előadás
C# nyelvi áttekintő A „Programozás C# nyelven (Illés Zoltán)”
Advertisements

Tananyag: konzultáció
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
C++ programozási nyelv Gyakorlat hét
Jt Java Feltételek, logikai kifejezések. jt 2 Logikai operátorok Logikai kifejezésekre alkalmazhatók a következő műveletek: 1. nem! 2. és&ill.&& 3. kizáró.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Benczúr Zsolt VBA gyorstalpaló Benczúr Zsolt
JavaScript.
© Kozsik Tamás Beágyazott osztályok A blokkstrukturáltság támogatása –Eddig: egymásba ágyazható blokk utasítások Osztálydefiníciók is egymásba.
Szabó Tamás Károly G6HT12 A Ruby programozási nyelv.
Bevezetés a Java programozásba
Bevezetés a Java programozásba
Fájlkezelés, IO Kivételkezelés Belső osztályok
Osztályok Garbage collection.  általában minden osztálynak vannak adattagjai és/vagy metódusai ◦ adattagok megadása:  [láthatóság] [static] [final]
Abstract osztályok és interface-ek Beolvasás és kiíratás 7. gyakorlat.
Programozás II. 3. Gyakorlat C++ alapok.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 6. Gyakorlat const, static, dinamikus 2D.
Tömbök ismétlés Osztályok Java-ban Garbage collection
A CLIPS keretrendszer CLIPS "C" Language Integration Production System.
C A C nyelv utasításai.
Ruby nyelv. Története Yukihiro Matsumoto (szül ápr. 4.) alkotta meg, az ideális script nyelv hosszú eredménytelen keresése után. A lehetséges jelöltek.
A Java programozási nyelvSoós Sándor 1/17 Java programozási nyelv 4. rész – Osztályok II. Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai.
Java programozási nyelv 3. rész – Osztályok I.
WEB Technológiák Dr. Pance Miklós – Kolcza Gábor Miskolci Egyetem.
C# tagfüggvények.
PHP Webprogramozás alapjai
Web-grafika (VRML) 10. gyakorlat Kereszty Gábor. Script típusok Elemi típusok: szám: egész vagy lebegőpontos – int / float – 1 / 1.1 string: ‘Hello World!’
C++ Alapok, első óra Elemi típusok Vezérlési szerkezetek
© Kozsik Tamás Csomagok. © Kozsik Tamás A program tagolása Típusdefiníciók (osztályok, interfészek) Metódusok Blokk utasítások Csomagok.
Vizuális és web programozás II.
A JAVA TECHNOLÓGIA LÉNYEGE Többlépcsős fordítás A JAVA TECHNOLÓGIA LÉNYEGE Platformfüggetlenség.
Ficsor Lajos Template-ek CPP8/ 1 Template-ek. Ficsor Lajos Template-ek CPP8/ 2 A template fogalma Kiindulási probléma: tetszőleges típusokon kellene ugyanolyan.
Kivételkezelés a C++ nyelvben Bevezetés
PHP I. Alapok. Mi a PHP? PHP Hypertext Preprocessor Szkriptnyelv –Egyszerű, gyors fejlesztés –Nincs fordítás (csak értelmező) Alkalmazási lehetőségek:
P ROGRAMOZÁS C# - BAN Kivételkezelés. P ÉLDA I. Nullával való osztás miatt kapjuk a hibaüzenetet.
Típusok Kiegészítések és megjegyzések Nyékyné G. Judit: Programozási nyelvek c. könyvének hasonló címû fejezetéhez.
Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz tárgy honlap:
Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz tárgy honlap:
PHP nyelv. PHP Interpreteres nyelv → parancsértelmező szükséges hozzá Rasmus Lerdorf 1995 → személyes felhasználás (internetes önéletrajzának megtekintésének.
Készítette: Csíki Gyula
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Hernyák Zoltán Programozási Nyelvek II.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Hernyák Zoltán Programozási Nyelvek II.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Készítette: Lipp Marcell
A D programozási nyelv Angeli Dávid. Nagy vonalakban  C++  
Javascript Microsoft által készített kiegészítése Statikus típusosság Nagy projektek Windows 8 fejlesztésénél WinRT egy részét ebben írták Nyílt forráskódú,
PHP nyelv Mari Dániel.
Készítette Enyedi Tamás
Java programozási nyelv Metódusok
1 Objektum orientált programozás Öröklődés: többszörös öröklődés, konstruktorok, destruktorok, overloading Nagy Szilvia.
Objektum orientált programozás
Power Lutár Patrícia Pellek Krisztián.  -ltLess than  -leLess than or equal to  -gtGreater than  -geGreater than or equal to  -eqEqual to  -neNot.
C Programozási alapok.
Excel programozás (makró)
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás I. 3. gyakorlat.
TÁMOP /1-2F JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam Osztályok, objektumok definiálása és alkalmazása. Saját.
TÁMOP /1-2F JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam Utasítás és blokk. Elágazás típusai, alkalmazása Kovács.
Script nyelvek előadás
Script nyelvek előadás
Script nyelvek előadás
Script nyelvek előadás
Programozás C# -ban Elágazások.
A CLIPS keretrendszer
Hernyák Zoltán Magasszintű Programozási Nyelvek I.
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Függvénysablonok használata
Előadás másolata:

Készítette: Száraz Richárd

- Yukihiro Matsumoto tervezte meg 1995-ben - Célja egy emberközpontú OOP programozási nyelv megalkotása volt, amely egyszerű és gyorsan tanulható - Alapja a Perl, de annál sokkal letisztultabb, rugalmasabb ben terjedt el világszinten - A legfrissebb verziója:

A Perl programozási nyelv kiejtve érthető „pearl”- nek, ami gyöngyöt jelent, ez pedig a június jelképe, míg a ruby, azaz a rubint, a július jelképe. Ez tehát arra utal, hogy a Ruby a Perl továbbfejlesztett változata.

- Objektumorientált - Script nyelv - Teljesen nyílt forráskódú - Gyengén típusos nyelv - Garbage Collector-t használ - Interpretált (a programot futás közben fordítja a gép saját nyelvére) - TIOBE – index 10. hely

- Teljesen emberközpontú, mivel nem a fordító, hanem a programozók igényeit szem előtt tartva lett megtervezve - Intuitív, mivel a kód önmagért beszél, ezért a legjobb dokumentáció maga a forráskód, ezért a dokumentációk sok helyen hiányosak - Teljesen objektumorientált

- Sorok végére nem szükséges a ; - Ha több utasítást írunk egy sorba, akkor kell közéjük a ; - Ha a sor végére \ jelet rakunk, akkor a következő sor is az utasítás része lesz - Case sensitive

- Egy soros kommentet a # után írhatunk - Több soros komment: =begin Ez egy több soros komment lesz az =end ellenére, mivel nem a sor elején szerepel =end

- Bármilyen hosszú lehet - Betűvel vagy _ jellel kell kezdődniük - Tartalmazhatják az angol abc kis-és nagybetűit, számokat és speciális karaktereket: !, ?, _ - A nagy kezdőbetűs azonosítók konstansokat vagy osztályokat jelölnek

- Nem szükséges deklaráció, az első értékadáskor jönnek létre - Referenciákat tartalmaznak - Van szimultán értékadás: Pl.: a,b = b,a - Első karakter alapján: - $: globális változók - statikus változók osztályok adattagjai - A nagybetűvel kezdődő változó pedig konstans

- Minden számot reprezentáló osztály a Numeric osztályból származik - Az egész számok kezeléséhez használjuk - 2 leszármazott osztálya van: - Fixnum - Bignum - A konverzió automatikus - A tagolásra használt _ jelet figyelmen kívül hagyja

- Példa: num = 111_111 num.class -> Fixnum num = num.class -> Bignum

- Minden lebegőpontos szám Float típusú - Megadhatjuk ponttal vagy kitevővel, Pl.: num = num.class -> Float num = 4E2 -> 400.0

- 2 módon adhatjuk meg: ’ ’ vagy ” ” között - Ha az ” ” között van #{kifejezés}, akkor az kiértékelődik - Példák: - ”egy kettő három”.split => [”egy”, ”kettő”, ”három”] - ”szavak”.slice!(2) => ”a” - ”hello”.include? ”lo” => true - ”hello”.upcase => ”HELLO”

- Példák: ”Hello ” + ”world!” => ”Hello world!” ”szo” * 3 => ”szoszoszo” szam = 2 ”szam értéke: #{szam}” => ”szam értéke: 2”

- Az elemeket a [] operátorral érhetjük el - 0-tól indexel a tömb elejétől - -1-gyel indexel a tömb végétől csökkenve haladva - Intervallum is megadható - Tartalmazhat különböző típusú elemeket, pl.: tomb = [23, ”szo”, 42.42]

- Műveletek: - Unió: [1,2] | [2,3] => [1,2,3] - Metszet: [1,2,3] & [3,4] => [3] - Konkatenáció: [1,2,3] + [3,4] => [1,2,3,3,4] - Különbség: [1,2,3] – [3] => [1,2] - Shift: kivesz egy/több elemet a tömb elejéről - Unshift: betesz egy/több elemet a tömb elejére - Push: betesz egy/több elemet a tömb végére - Pop: kivesz egy/több elemet a tömb végéről

- Kulcs–érték párokat tartalmaz - A kulcsnak egyedinek kell lennie - A létrehozás a {} operátorral történik, ahol meg kell adni a kulcsot és hozzá tartozó értéket is - Az indexelés a [] operátorral történik - ember = { ’nev’ => ’István’, ’szulev’ => ’1991’ } - ember[’nev’] => István - ember.keys => [”nev”, ”szulev”] - ember.length => 2

- A true a TrueClass, a false a FalseClass osztály Singleton példánya (az adott osztályból egyetlen példány jön létre az alkalmazás futása során) - minden igaz, ami nem nil, vagy false - && és ||: lusta kiértékelés, azaz az egyik alkifejezés sem értékelődik ki mindaddig, amíg nincs szükség az értékére - =, ==,, not : szokásos értelemben - eql? : ha az elemek értéke és típusa is megegyezik, csak akkor lesz igaz

- Általános alak: if [then] [elsif [then]] [else …] end - Létezik a Perl-ből ismert alak is: - kifejezés if feltétel - ?: (Elvis) operátor is használható - Negált if(akkor lép az első ágba, ha a feltétel hamis): unless [then] [else …] end

- Elöl tesztelős ciklus(addig fut, amíg a feltétel igaz): while … end - Van egy negált változata is(addig fut, amíg a feltétel igazzá nem válik): Until … end

- times: megadott számszor fut le 4.times do |i| print i end - step: megadott lépésközzel 0.step(10,2) do … end - upto: step- 1-es lépéssel - downto: upto, csak csökkenő

- A Ruby kivételkezelése: - A try és catch helyett begin-end és rescue - Finally helyett ensure, ez a rész mindig lefut - raise-el válthatunk ki kivételt - A rescue blokkon belül retry paranccsal a kivételt kiváltó blokk újra futtatható

begin do_something_dangerous rescue SomeError => e fix_some_error(e) rescue SomeOtherError => e fix_some_other_error(e) rescue => e fix_unknown_standard_error(e) else something_dangerous_finished ensure whether_or_not_an_error_was_raised end

- Minden osztály őse az Object osztály - Minden objektum, még az osztályok is (ők a Class osztály példányai) - Nagy betűvel kell kezdeni őket - Objektum létrehozása a new statikus metódussal történik: - ujosztaly = Osztalynev.new(paraméterek) - Konstruktor: initialize metódus - Nincs túlterhelés

- Egy osztály sosem zárt, bármikor lehet változtatni: plusz metódusok, láthatóságok változtatása, metódusok átdefiniálása, pl.: obj = SomeObject.new #Új metódus csak ennek az objektumnak def obj.new_method ”do some things” end

- Getter, setter: - attr_reader :x, gettert generál: def end - attr_writer :x, settert generál: def x = = val end - attr_accessor :x, mindkettőt legenerálja

- Alapesetben minden attribútum private - Alapesetben minden metódus public (kivéve az initialize) - A szokásos 3 féle láthatóság: - Public - Protected - Private

- Minden osztály őse az Object - Egyszeres öröklődést támogat - Többszörös öröklődés mixinek segítségével történhet - Az ősre a super kulcsszóval lehet hivatkozni - Az öröklődést a < operátorral jelöljük class ChildClass < ParentClass #... end

- Példa öröklődésre: class Ember def end class Dolgozo< Ember def initialize(nev,fizetes) end

- def kulcsszóval lehet definiálni - Elnevezési konvenciók: - ?-re végződő: lekérdező művelet - =-re végződő: változó értékét beállító művelet - !-re végződő: megváltoztathatják a hívó objektumok - Mindig az utoljára kiértékelt kifejezés értékét adja vissza, nem kell return

- Hívásnál meg kell adni a hívó objektumot - Private metódusok csak self-re hívhatóak meg - Paramétereket a név után lehet felsorolni - Zárójel megadása nem kötelező - Megadható alapértelmezett paraméter - Több érték is visszaadható

- Példa: def returnTwo(a, b) if (1.0*b) < return 0.0, false else return (1.0 * a / b), true end

- Blokkokat {...} vagy do...end között adhatunk meg - A blokk elején || jelek között adhatunk meg változókat, ezeket paraméterként használhatjuk fel a blokkon belül - Blokkokat magukban is használhatunk, mint névtelen függvényeket, de függvényekkel összhangban is használhatóak

- Néhány hasznos blokkot alkalmazó függvény: - X.times: egy egyszerű számlálós ciklus 0-tól X-1-ig 5.times { |i| print i } # each: listákra vagy hash-ekre alkalmazható, minden elemen végigmegy [1,2,3].each { |x| print x+5 } # select: listákra vagy hash-ekre alkalmazható, kiválasztja azon elemeket, melyekre a megadott blokk igazat ad [1,2,3,4].select { |x| x%2==0 } # [2,4]

Köszönöm a figyelmet!