informatikai alkalmazások - levelezőberendg/docs/infalk/infalk2.pdf · 2016. 11. 11. · java...

25
Informatikai alkalmazások - levelező

Upload: others

Post on 10-Mar-2021

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Informatikai alkalmazások - levelezőberendg/docs/infalk/infAlk2.pdf · 2016. 11. 11. · JAVA Korábban a Sun Microsystems, most már az Oracle fejleszti Magas szintű programozási

Informatikai alkalmazások - levelező

Page 2: Informatikai alkalmazások - levelezőberendg/docs/infalk/infAlk2.pdf · 2016. 11. 11. · JAVA Korábban a Sun Microsystems, most már az Oracle fejleszti Magas szintű programozási

Karakterkódolás

• Karakterek mint bájtok

– ASCII (American Standard Code for Information Interchange) karakterkódolás

– 1 karakter ↔ 1 byte (256 féle kód)

– kódtáblában rögzítve

– Alap karakterkészlet (fix): 0 - 127

– Kiegészítő karakterkészlet (cserélhető kódlap) pl. latin 2

– http://picascii.com, http://www.asciimation.co.nz/

Page 3: Informatikai alkalmazások - levelezőberendg/docs/infalk/infAlk2.pdf · 2016. 11. 11. · JAVA Korábban a Sun Microsystems, most már az Oracle fejleszti Magas szintű programozási
Page 4: Informatikai alkalmazások - levelezőberendg/docs/infalk/infAlk2.pdf · 2016. 11. 11. · JAVA Korábban a Sun Microsystems, most már az Oracle fejleszti Magas szintű programozási

Unicode szabvány

• юникодом/یونیکوڈ/યયનનકકડ/ يونيكود

• 1 karakter 1-nél több bájton

• 2 bájt esetén 65536 elemű kódtábla (fix)

• Első 128 elem: ASCII kódtábla első fele

• Többi elem: minden más

• Kódolási változatok

– UTF-32

– UTF-16

– UTF-8

Page 5: Informatikai alkalmazások - levelezőberendg/docs/infalk/infAlk2.pdf · 2016. 11. 11. · JAVA Korábban a Sun Microsystems, most már az Oracle fejleszti Magas szintű programozási

Szövegszerkesztés – MS Word

● Karakter/bekezdés/szakaszformázás● Fejléc/lábléc● Dokumentumsablonok (template)● Stílusok használata (Tartalomjegyzék)● Körlevelek készítése (törzsdokumentum)● Objektumok csatolása vs. beágyazása

– Csatolás: forrásfájlra mutató pointer létesítése

– Beágyazás: „deep copy”

Page 6: Informatikai alkalmazások - levelezőberendg/docs/infalk/infAlk2.pdf · 2016. 11. 11. · JAVA Korábban a Sun Microsystems, most már az Oracle fejleszti Magas szintű programozási

Szövegszerkesztés – (La)Tex

● Tex– Donald Knuth által létrehozott Turing-teljes

szkriptnyelv

● LaTex– A Tex nyelvre épülő makrókollekció a Tex

használatának megkönnyítésére

Page 7: Informatikai alkalmazások - levelezőberendg/docs/infalk/infAlk2.pdf · 2016. 11. 11. · JAVA Korábban a Sun Microsystems, most már az Oracle fejleszti Magas szintű programozási

Donald Knuth: Számítógép-programozás művészete

● 7 kötetes(re tervezett)● Minden hiba után 256 cent (1 hex USD)

jutalmat ajánlott föl● Tex ötlete a könyv meg-

írása ihlette– Tex v3.141592

● Körkörös rekuzió

Page 8: Informatikai alkalmazások - levelezőberendg/docs/infalk/infAlk2.pdf · 2016. 11. 11. · JAVA Korábban a Sun Microsystems, most már az Oracle fejleszti Magas szintű programozási

LaTex alapok és lehetőségek

● (La)Tex környezetek– MikTeX (Windows)

– TeXLive

● Csomagok könnyű integrálhatósága– Keresztrejtvénykészítés (cwpuzzle)

– Online vizualizációs galéria (tikz)

Page 9: Informatikai alkalmazások - levelezőberendg/docs/infalk/infAlk2.pdf · 2016. 11. 11. · JAVA Korábban a Sun Microsystems, most már az Oracle fejleszti Magas szintű programozási

LaTex előnyei

● Verziókövetés megkönnyítése– Sima szöveges fájl → dif és git alkalmazhatósága

● Tartalom és formátum kettéválasztása– Kb. mint HTML és CSS esetén

● Open source– Masszív online közösség (pl. Tex Stack Exchange)

– Könnyen beszerezhető modulok

● Biztonság

Page 10: Informatikai alkalmazások - levelezőberendg/docs/infalk/infAlk2.pdf · 2016. 11. 11. · JAVA Korábban a Sun Microsystems, most már az Oracle fejleszti Magas szintű programozási

LaTex alapok

● Nyitó és záró „tag”-ek használata– pl. \begin{table}...\end{table}

– A záró tag bizonyos esetekben nem kötelező (HTML-hez hasonlóan)

Page 11: Informatikai alkalmazások - levelezőberendg/docs/infalk/infAlk2.pdf · 2016. 11. 11. · JAVA Korábban a Sun Microsystems, most már az Oracle fejleszti Magas szintű programozási

LaTex alapok

● Utasítások általános felépítése– \utasítás[opcionális argumentumok]{kötelező

argumentumok}● pl. \usepackage[utf8]{inputenc}

● Dokumentumok általános felépítése– Fejléc

– Törzs

Page 12: Informatikai alkalmazások - levelezőberendg/docs/infalk/infAlk2.pdf · 2016. 11. 11. · JAVA Korábban a Sun Microsystems, most már az Oracle fejleszti Magas szintű programozási

LaTex fejléc

● \documentclass{X}... \begin{document} utasítások közötti rész– A „beimportálni” kívánt csomagok felsorolását

tartalmazza

– Egyéb metaadatok (pl. szerző neve/létrehozás dátuma/...) kerülhet ide

– Saját utasításokat definiálhatunk (\newcommand{} utasítás)

Page 13: Informatikai alkalmazások - levelezőberendg/docs/infalk/infAlk2.pdf · 2016. 11. 11. · JAVA Korábban a Sun Microsystems, most már az Oracle fejleszti Magas szintű programozási

LaTex törzs

● Az érdemi tartalmat generáló rész● Struktúra könnyed kezelése

– Fejezet: \section{}, alfejezet: \subsection{}

● Hivatkozások létrehozása/használata– \label{} illetve \ref{} utasítások

● Tartalomjegyzékek automatikus kezelése– \tableofcontents

Page 14: Informatikai alkalmazások - levelezőberendg/docs/infalk/infAlk2.pdf · 2016. 11. 11. · JAVA Korábban a Sun Microsystems, most már az Oracle fejleszti Magas szintű programozási

Programozási nyelvek csoportosítása

• Magas vs. alacsony szintű nyelvek

– Interpretálhatóság kontra gépi utasításokból álló kód (Assembly)

• Programozási paradigma szerint

– Objektumorientált programozás

– Funkcionális programozás

– Logikai programozás

– Párhuzamos programozás

Page 15: Informatikai alkalmazások - levelezőberendg/docs/infalk/infAlk2.pdf · 2016. 11. 11. · JAVA Korábban a Sun Microsystems, most már az Oracle fejleszti Magas szintű programozási

Funkcionális programozás

• A program nem más mint egy függvény kiértékelése

• Támaszkodhat más függvények definíciójára (vagy önmagára)

• Pl. Haskell, Scala (hibrid megoldás)

factorial :: Int -> Int

factorial n | n == 0 = 1

| n > 0 = n * (factorial (n-1))

Page 16: Informatikai alkalmazások - levelezőberendg/docs/infalk/infAlk2.pdf · 2016. 11. 11. · JAVA Korábban a Sun Microsystems, most már az Oracle fejleszti Magas szintű programozási

Logikai és párhuzamos programozás

• Logikai programozás

– Adott premisszák esetén indukciós lépések sorozatának végrehajtása; pl. Prolog

– Pl. a program számára ismert tények: szülő-gyerek relációk listája → unoka-nagyszülő relációk feltérképezése

• Párhuzamos programozás

– Többmagos processzor esetében a program párhuzamos végrehajtása biztosított

– Egymagos gépeknél időszeletekkel imitált a párhuzamosság

Page 17: Informatikai alkalmazások - levelezőberendg/docs/infalk/infAlk2.pdf · 2016. 11. 11. · JAVA Korábban a Sun Microsystems, most már az Oracle fejleszti Magas szintű programozási

Objektumorientált (OO) paradigma

• Elemi változókból (egész, logikai, String) és összetett objektumokból tetszőleges komplexitású objektumokat képzünk

• Kulcsjellemzők: egységbe zárás, öröklődés, polimorfizmus (többalakúság)

• Osztály: absztrakt adattípus

• Objektum: az osztályból képzett példány

• Pl. Smalltalk, Java, C++

Page 18: Informatikai alkalmazások - levelezőberendg/docs/infalk/infAlk2.pdf · 2016. 11. 11. · JAVA Korábban a Sun Microsystems, most már az Oracle fejleszti Magas szintű programozási

JAVA● Korábban a Sun Microsystems, most már az Oracle

fejleszti● Magas szintű programozási nyelv● A legelterjedtebb OO nyelvek egyike● Egyik fő erénye a platformfüggetlenség

– Módosítás nélkül futtatható ugyanaz a kód bármely architektúrán

– A kód virtuális gépen (JVM) való végrahajtása

● Egy időben nagy népszerűségnek örvendett az ún. Java appletek weboldalakba ágyazása → nagyfokú biztonsági kocázat

Page 19: Informatikai alkalmazások - levelezőberendg/docs/infalk/infAlk2.pdf · 2016. 11. 11. · JAVA Korábban a Sun Microsystems, most már az Oracle fejleszti Magas szintű programozási

JDK>JRE>JVM

● JDK: Java Development Kit– javac program végzi a fordítást

(compilation)

● JRE: Java Runtime Environment– java program hajtja végre a lefordított

programokat (bináris class állományok)

– Csak az ún. 'fő' main metódussal rendelkező, lefordított osztály futtatható

● JVM: Java Virtual Machine

Page 20: Informatikai alkalmazások - levelezőberendg/docs/infalk/infAlk2.pdf · 2016. 11. 11. · JAVA Korábban a Sun Microsystems, most már az Oracle fejleszti Magas szintű programozási

MS Office dokumentumok felépítése

● A 2007-es MS Office-szal kezdődően az elkészített dokumentumok (docx, pptx, ...) gyakorlatilag csomagolt állományok (zip)

● A csomagolt állományok egy könyvtárhierarchiát rejtenek– Bennük Open XML szabvány szerint van a

dokumentumok tartalma és metaadatai tárolva

Page 21: Informatikai alkalmazások - levelezőberendg/docs/infalk/infAlk2.pdf · 2016. 11. 11. · JAVA Korábban a Sun Microsystems, most már az Oracle fejleszti Magas szintű programozási

Apache POI API

● Egy Java nyelven elérhető programozói interfészt biztosít Open XML szabványú dokumentumok készítésére és manipulálására

● API: Application Programming Interface– Szabványos protokoll alkalmazások

készítéséhez/használatához

Page 22: Informatikai alkalmazások - levelezőberendg/docs/infalk/infAlk2.pdf · 2016. 11. 11. · JAVA Korábban a Sun Microsystems, most már az Oracle fejleszti Magas szintű programozási

• ++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.

• Ezoterikus programozási nyelvek

Page 23: Informatikai alkalmazások - levelezőberendg/docs/infalk/infAlk2.pdf · 2016. 11. 11. · JAVA Korábban a Sun Microsystems, most már az Oracle fejleszti Magas szintű programozási

Hello World

• ++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.

• Ezoterikus programozási nyelvek

Page 24: Informatikai alkalmazások - levelezőberendg/docs/infalk/infAlk2.pdf · 2016. 11. 11. · JAVA Korábban a Sun Microsystems, most már az Oracle fejleszti Magas szintű programozási

Hello World+++++ +++++ initialize counter (cell #0) to 10

[ use loop to set the next four cells to 70/100/30/10

> +++++ ++ add 7 to cell #1

> +++++ +++++ add 10 to cell #2

> +++ add 3 to cell #3

> + add 1 to cell #4

<<<< - decrement counter (cell #0)

]

> ++ . print 'H'

> + . print 'e'

+++++ ++ . print 'l'

. print 'l'

+++ . print 'o'

> ++ . print ' '

<< +++++ +++++ +++++ . print 'W'

> . print 'o'

+++ . print 'r'

----- - . print 'l'

----- --- . print 'd'

> + . print '!'

> . print '\n'

nyelvenbrainf*ck

Page 25: Informatikai alkalmazások - levelezőberendg/docs/infalk/infAlk2.pdf · 2016. 11. 11. · JAVA Korábban a Sun Microsystems, most már az Oracle fejleszti Magas szintű programozási

brainfuck parancsok

>   A pointer növelése eggyel

< A pointer csökkentése eggyel

+A pointernél levő byte növelése eggyel

-A pointernél levő byte csökkentése eggyel

. A pointernél levő byte kiírása

,Byte bekérése és a pointernél tárolása

[Ugrás a következő, megfelelő ] jel utánig, ha a pointer alatti byte nulla.

] Ugrás az előző, megfelelő [ jelig.