Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
Informatikai alkalmazások - levelező
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/
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
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”
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
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ó
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)
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
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)
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
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)
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
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
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))
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
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++
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
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
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
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
• ++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.
• Ezoterikus programozási nyelvek
Hello World
• ++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.
• Ezoterikus programozási nyelvek
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
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.