Išplė&mas. Esamo funkcionalumo papildymas naujomis galimybėmis
|
|
- Ralf Fletcher
- 6 years ago
- Views:
Transcription
1
2 Išplė&mas Esamo funkcionalumo papildymas naujomis galimybėmis
3 Kam to reikia? Realizuoti naujus įtaisytuosius (built- in) objektų tipus Iškviesti C bibliotekų funkcijas ir sisteminius kvietimus
4 Ko reikia? Reikalingas Python API: Funkcijos Makrokomandos Kintamieji Python.h
5 Paprastas pavyzdys >>> import spam >>> status = spam.system("ls - l")
6 #include <Python.h> // Čia turėtų būti norima C funkcija //Funkcijos API static PyObject * spam_system(pyobject *self, PyObject *args){ const char *command; int sts; if (!PyArg_ParseTuple(args, "s", &command)) return NULL; sts = system(command); if (sts < 0) { //PyErr_SetString(spamError, "System command failed"); return NULL; } return Py_BuildValue("i", sts); }
7 Paaiškinimai (I) Vyksta tiesioginis reikšmių iš Python o į C vertimas. C funkcija visada turi du kintamuosius self ir args self naudojamas realizuojant įtaisytuosius metodus, bet ne funkcijas args yra rodyklė į Python o kortežą (tuple), saugantį argumentus, kur kiekvienas elementas atitinka argumentą vertimo funkcijos argumentų sąrašę. Vertimą atlieka funkcija PyArg_ParseTuple()
8 Paaiškinimai (II) PyArg_ParseTuple grąžina True, jei visi argumentai turi atitinkamą tipą ir būna išsaugoti kintamųjų, kurių adresai perduoti grąžina False, jei perduotas neteisingas argumentų sąrašas Grąžinamas NULL yra klaidos požymis!!! sts yra funkcijos kvietimo rezultatas, bet jį reikia paversti Python o objektų
9 Paaiškinimai (III) Py_BuildValue(tipas, reikšmė) funkcija, verčianti rezultatą į objektą. Reikia nurodyti kokio tipo reikšmė bus verčiama. Jeigu funkcija yra void tipo, tuomet ji vistiek turi grąžinti Python o atitikmenį None Py_None
10 Metodų lentelė static PyMethodDef spammethods[] = { {"system", spam_system, METH_VARARGS, "Execute a shell command."}, {NULL, NULL, 0, NULL} /* Sentinel */ };
11 Paaiškinimai 1 parametras vardas 2 parametras funkcijos API vardas 3 parametras požymis (flag); visada turėtų būti METH_VARARGS [ METH_KEYWORDS]; 0 reiškia pasenusios (obsolete) funkcijos PyArg_ParseTuple naudojimą Jei naudojami vardiniai argumentai, tuomet reikalingas METH_KEYWORDS požymis ir PyArg_ParseTupleAndKeywords() funkcija
12 Inicializavimas Python 2 Python 3 PyMODINIT_FUNC initspam (void){ (void) Py_InitModule ("spam", spammethods); } static struct PyModuleDef spammodule = { PyModuleDef_HEAD_INIT, "spam", // name of module NULL, // module documentation - 1, // size of per- interpreter state spammethods }; PyMODINIT_FUNC PyInit_spam (void){ return PyModule_Create (&spammodule); }
13 Paaiškinimai Python 2 atveju initname() yra inicializuojanti funkcija, kur name yra modulio vardas Py_InitModule(modulio_vardas, metodų_lentelė) Python 3 atveju reikia apsirašyti modulio struktūrą ir tik tada inicializuojamas modulis PyInit_name, kur name yra modulio vardas PyModule_Create(modulio_struktūra)
14 Kompiliavimas distutils paprastas įrankis, trūksta funkcionalumo setuptools iš esmės išplečia distutils apribojimus distribute sujungtas su setuptools distutils2 apleistas projektas distlib - vystomas? bento turėtų pakeisti ankstesnius įrankius. Vystomas?
15 setup.py from distutils.core import setup, Extension module1 = Extension( demo, sources = [ demo.c ]) setup (name = PackageName, version = 1.0, description = This is a demo package, ext_modules = [module1])
16 Pavyzdys from distutils.core import setup from distutils.core import Extension MOD = "spam" module = Extension(MOD, sources = ["spammodule.c"]) setup(name = MOD, ext_modules = [module])
17 Baigiant python3 setup.py build python3 setup.py install python3 setup.py install - - user
18 Reikšmių ver&mas į C Reikšmės verčiamos į C dviejų funkcijų pagalba: PyArg_ParseTuple(PyObject *arg, char *format,...) PyArg_ParseTupleAndKeywords(PyObject *arg, PyObject *kwdict, char *format, char *kwlist[],...)
19 PyArg_ParseTuple(PyObject *arg, char *format,...) Kadangi verčiamas objektas, tai jo struktūra gali būti sudėtinga, bet ją galima apsirašyti *format pagalba s simbolių eilutė (ii)s# dviejų sveikųjų skaičių kortežas ir simbolių eilutė su jos ilgiu s si simbolių eilutė ir galimi papildomai antra simbolių eilutė ir sveikasis skaičius
20 PyArg_ParseTupleAndKeywords(PyObject *arg, PyObject *kwdict, char *format, char *kwlist[],...) arg argumentai kwdict vardiniai argumentai format formatavimas kwlist vardinių argumentų vardų sąrašas int voltage; char *state; static char *kwlist[] = { voltage, state, NULL} PyArg_ParseTupleAndKeywords(args, keywds, i s, kwlist, &voltage, &state)
21 Reikšmių ver&mas į Python ą PyObject *Py_BuildValue(char *format,...) None i sveikas skaičius (ii) dviejų sveikųjų skaičių kortežas s# simbolių eilutė ir ją sudarančių simbolių skaičius [i,i] dviejų sveikųjų skaičių sąrašas {s:i, s:i} - žodynas
22 Rodyklių skaičiavimas (reference count) Metodika skirta atminties nutekėjimo (memory leak) valdymui Kiekvienas objektas turi skaitliuką, kuris padidinamas, kai yra išsaugoma rodyklė į objektą, ir sumažinamas, kai rodyklė ištrinama.
23 Py_INCREF, Py_DECREF Makrosai, atsakingi už objekto rodyklių skaitliukų valdymą Egzistuoja analogiški makrosai Py_XINCREF ir Py_XDECREF Patikrina NULL rodyklių egzistavimą
24 NULL problema Funkcijų argumentai neturėtų būti NULL Funkcijos rezultatas neturėtų būti NULL NULL suprantamas kaip įvykusi klaida Priešingu atveju reikėtų rašyti daug perteklinio kodo NULL rodyklėms suvaldyti
25 Klaidos ir išimtys Išimtys saugomos statinio globalaus kintamojo interpretatoriaus viduje, jei jis yra NULL, išimtis neįvykusi Antrasis globalus kintamasis saugo išimties susijusią reikšmę Trečiasis kintamasis saugo steko pėdsaką (stack traceback) Šie trys kintamieji yra C kalbos ekvivalentas Python o kintamiesiems sys.exc_type, sys.exc_value, sys.exc_traceback
26 Klaidų funkcijos PyErr_SetString(exception_object, string) Išimties objektas paprastai būna iš anksto apibrėžtas objektas kaip PyExc_ZeroDivisionError Simbolių eilutė aprašo klaidos priežastį PyErr_SetFromErrno(exception_argument) PyErr_SetObject(exception, value) bendriausia funkcija PyErr_Occured() leidžia patikrintiar įvyko klaida klaidos objektas arba NULL
27 Klaidų mechanizmas Jei funkcija f kviečia funkciją g ir pastaroji grąžino klaidą, funkcija f taip pat turėtų grąžinti klaidos reikšmę (NULL arba - 1) PyErr_* funkcijų tokiu atveju kviesti papildomai nebereikia Gali pasitaikyti atvejų, kuomet tai vis dėlto daroma tam, kad tiksliau aprašyti klaidą PyErr_Clear() išvalo klaidą jos neperduodant interpretatoriui
28 Nauja klaida Galima sukurti naują klaidą (Python 2 kodas): static PyObject *spamerror; initspam(void){ PyObject *m; spamerror = PyErr_NewException("spam.error", NULL, NULL); Py_INCREF(spamError); PyModule_AddObject(m, "error", spamerror); }
29 Nauja klaida Galima sukurti naują klaidą (Python 3 kodas): static PyObject *spamerror; PyMODINIT_FUNC PyInit_spam(void){ PyObject *m=pymodule_create(&spammodule); spamerror = PyErr_NewException("spam.error", NULL, NULL); Py_INCREF(spamError); PyModule_AddObject(m, "error", spamerror); }
30 Naujo &po apibrėžimas Python o interpretatorius mato visus objektus kaip PyObject PyObject saugo rodyklės skaitliuką ir rodyklę į objekto tipą ( type object ) Tipas apibrėžia kokios funkcijos (dar vadinamos tipo metodais) yra kviečiamos
31 Tipas typedef struct{ PyObject_HEAD /* Type-specific fields go here. */ } noddy_noddyobjec t; PyObject_HEAD makrosas, kuris užtikrina rodyklės skaitliuko ir rodyklės įtraukimą Kabliataškis nededamas!
32 Objektas static PyTypeObject noddy_noddytype ={ PyVarObject_HEAD_INIT(NULL, 0) "noddy.noddy", /*tp_name*/ sizeof(noddy_noddyobject), / *tp_basicsize*/ 0, /*tp_itemsize*/ 0, /*tp_dealloc*/ 0, /*tp_print*/ 0, /*tp_getattr*/ 0, /*tp_setattr*/ 0, /*tp_reserved*/ 0, /*tp_repr*/ 0, /*tp_as_number*/ 0, /*tp_as_sequence*/ 0, /*tp_as_mapping*/ 0, /*tp_hash */ 0, /*tp_call*/ 0, /*tp_str*/ 0, /*tp_getattro*/ 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT, /*tp_flags*/ "Noddy objects", /* tp_doc */ }; PyTypeObject C įrašo tipas, aprašantis įtaisytuosius tipus Laukų yra daugiau, tačiau paprastai jie paliekami užpildyti kompiliatoriui Kiekvienas iš šiuo metu neaprašytų laukų turi savo paskirtį, pavyzdžiui, tp_itemsize reikalingas kintamo dydžio objektams
33 Modulis static struct PyModuleDef noddymodule ={ PyModuleDef_HEAD_INIT, "noddy", // name of module "Example of new type", // module documentation, may be NULL -1, // size of perinterpreter state of the module, or -1 if the module keeps state in global variables. NULL, NULL, NULL, NULL, NULL}; Modulio aprašymas
34 PyType_GenericNew PyMODINIT_FUNC PyInit_noddy(void) { PyObject* m; noddy_noddytype.tp _new = PyType_GenericNew; if (PyType_Ready (&noddy_noddytype) < 0) return NULL; PyType_GenericNew bendroji funkcija (generic handler), sukurianti naują objektą (atminties išskyrimas) PyType_Ready() inicializuoja tipą
35 Užbaigiant modulį m = PyModule_Create (&noddymodule); if (m == NULL) return NULL; Py_INCREF (&noddy_noddytype); PyModule_AddObject (m, "Noddy", (PyObject *)&noddy_noddytype); return m;} PyModule_AddObject() įtraukia tipą į modulio žodyną
36 Suteikiant funkcionalumo Įrašo tipą galima papildyti norimais laukais Aprašomos funkcijos objektui sukurti (pvz. new, init ir t.t.) ar sunaikinti ir valdyti (pvz. set, get), taip pat metodai Užpildoma laukų lentelė PyMemberDef Užpildoma valdymo funkcijų lentelė PyGetSetDef Užpildoma metodų lentelė PyMethodDef Aprašomas objektas PyTypeObject, nurodant metodus ir lenteles Užpildomas modulio aprašas ir aprašoma modulio inicializavimo funkcija
37 Įterpimas Duomenų konvertavimas iš C į Python ą Kviečiama Python o sąsaja Duomenų konvertavimas iš Python o į C
38 #include <Python.h>! int main(int argc, char *argv[]){! Py_Initialize();! PyRun_SimpleString("from time import time,ctime\n"! "print('today is', ctime(time()))\n");! Py_Finalize();! return 0;! } Pats paprasčiausias būdas įterpti Python o kodą: Inicializuojame Python o interpretatorių Įvykdome kodą Užbaigiame darbą su interpretatorium
39 Sudė&ngesnis pavyzdys #include <Python.h>! int main(int argc, char *argv[]){! PyObject *pname, *pmodule, *pdict, *pfunc;! PyObject *pargs, *pvalue;! int i;! if (argc < 3) {! fprintf(stderr,"usage: call pythonfile funcname [args]\n");! return 1;! }! Standartinė pradžia. Patikriname ar pakaks parametrų.
40 Pradedame darbą Py_Initialize(); pname = PyString_FromString(argv[1]); PyRun_SimpleString("import sys"); PyRun_SimpleString("sys.path.insert(0, '')"); pmodule = PyImport_Import(pName); Py_DECREF(pName); Pirmasis programos parametras paverčiamas objektu, tai bus Python o failo (modulio) vardas Nustatome, kad darbinis Python o katalogas būtų dabartinis katalogas, kuriame yra failas Importuojame failą kaip modulį
41 Judame toliau if (pmodule!= NULL) { pfunc = PyObject_GetAttrString (pmodule, argv[2]); /* pfunc is a new reference */ if (pfunc && PyCallable_Check (pfunc)) { pargs = PyTuple_New(argc - 3); Jei su moduliu viskas gerai, iš jo pasiimame funkciją, kurios vardas yra antrasis programos parametras Jei su funkcija viskas gerai, konstruojame kortežą parametrams
42 Parametrai, parametrai... for (i = 0; i < argc - 3; ++i) { pvalue = PyInt_FromLong(atoi(argv[i + 3])); if (!pvalue) { Py_DECREF(pArgs); Py_DECREF(pModule); fprintf(stderr, "Cannot convert argument\n"); return 1; } /* pvalue reference stolen here: */ PyTuple_SetItem(pArgs, i, pvalue); } Nuskaitome funkcijos parametrus iš programos parametrų ir juos konvertuojame į Python o tipus Jei konvertavimas pavyko, įdedame reikšmę į kortežą
43 Funkcijos kvie&mas pvalue = PyObject_CallObject(pFunc, pargs); Py_DECREF(pArgs); if (pvalue!= NULL) { printf("result of call: %ld\n, PyInt_AsLong(pValue)); Py_DECREF(pValue); } else { Py_DECREF(pFunc); Py_DECREF(pModule); PyErr_Print(); fprintf(stderr,"call failed\n"); return 1; } } Kviečiame funkciją jai perduodami paramtrus Jei funkcija sėkmingai įvykdyta, rezultatą spausdiname kaip C reikšmę (long) Jei blogai spausdinamas klaidos pranešimas
44 Pabaiga else { if (PyErr_Occurred()) PyErr_Print(); fprintf(stderr, "Cannot find function \"%s\"\n", argv[2]); } Py_XDECREF(pFunc); Py_DECREF(pModule); } else { PyErr_Print(); fprintf(stderr, "Failed to load \"%s \"\n", argv[1]); return 1; } Py_Finalize(); return 0; } Sutvarkome likusias klaidas
45 Failas Dešinėje matoma reikalinga funkcija Funkcija turėtų būti patalpinta faile multiply.py, nors tiktų bet koks pavadinimas Šis failas ir programos c kodas turėtų btūi viename kataloge def multiply(a, b): print ("Will compute", a, "times", b) c = 0 for i in range(0, a): c = c + b return c
46 Kompiliavimas Norint sukompiliuoti įterptinį kodą, reikia kompiliatoriui nurodyti papildomas instrukcijas Kokias žymes naudoti compiliuojant, galima sužinoti komandos python3- config cflags pagalba Kokias žymes naudojant susiejant (linking), galima sužinoti komandos python3- config ldflags pagalba Pavyzdys (MIF linux klasėse): gcc - I/usr/include/python3.4m embed.c - lpython3.4m
47 Pagaliau! $./a.out multiply multiply 3 2 Will compute 3 times 2 Result of call: 6 Kviečiame sukompiliuotą programą Vykdymo rezultatas
Extending and Embedding Python
Extending and Embedding Python Release 2.7.6 Guido van Rossum Fred L. Drake, Jr., editor November 10, 2013 Python Software Foundation Email: docs@python.org CONTENTS 1 Extending Python with C or C++ 3
More informationExtending and Embedding the Python Interpreter
Extending and Embedding the Python Interpreter Release 2.5.2 Guido van Rossum Fred L. Drake, Jr., editor 21st February, 2008 Python Software Foundation Email: docs@python.org Copyright c 2001-2008 Python
More informationExtending and Embedding Python
Extending and Embedding Python Release 3.4.3 Guido van Rossum and the Python development team February 25, 2015 Python Software Foundation Email: docs@python.org CONTENTS 1 Recommended third party tools
More informationC programavimo kalba. 3 paskaita (Sąlygos ir ciklo operatoriai, funkcija scanf() )
C programavimo kalba 3 paskaita (Sąlygos ir ciklo operatoriai, funkcija scanf() ) Sąlygos operatorius if - else Sąlygos operatoriai skirti perduoti programos vykdymą vienai ar kitai programos šakai. Operatorius
More informationSCRIPTING I/III EXTENDING PYTHON. References:
SCRIPTING I/III EXTENDING PYTHON References: https://docs.python.org/3.4/c-api/ https://docs.python.org/3.4/extending/index.html#extending-index GOALS Part I: Create a module (a C dll), callable from python
More informationJAVA pagrindai Lek. Liudas Drejeris
JAVA pagrindai Lek. Liudas Drejeris Programa (1) Programa, tai eilė instrukcijų (vadinamų programiniais sakiniais), kurie vykdomi paeiliui, kol gaunamas norimas rezultatas. Programa (2) Programa (2) /*
More informationKas yra masyvas? Skaičių masyvo A reikšmės: Elementų indeksai (numeriai): Užrašymas Turbo Paskaliu: A[1] A[2] A[3] A[4] A[5]
Masyvas 2013 1 Vienmatis masyvas Veiksmai su masyvo elementais: reikšmių priskyrimas ir išvedimas, paieška, rikiavimas. Masyvų perdavimas procedūros (funkcijos) parametrais. 2 Kas yra masyvas? Masyvu vadinamas
More informationC programavimo kalba. 5 paskaita (Funkcijos, masyvai)
C programavimo kalba 5 paskaita (Funkcijos, masyvai) Funkcijų pavyzdys // Skaičių lyginimo programa #include void pmax(int, int); /* prototipas */ int main() {int i, j; for (i = -10; i
More informationStruktūrų sintaksė Struktūra tai vienodo arba skirtingo tipo kintamųjų rinkinys. Sintaksė: struct vardas { ; type1 var1; type2 var2;... typen varn; //
C programavimo kalba 10 paskaita (Struktūros) Struktūrų sintaksė Struktūra tai vienodo arba skirtingo tipo kintamųjų rinkinys. Sintaksė: struct vardas { ; type1 var1; type2 var2;... typen varn; // Gale
More informationParengė ITMM Artūras Šakalys 1
2014.02.02 Parengė ITMM Artūras Šakalys 1 2014.02.02 Parengė ITMM Artūras Šakalys 2 Kaip suprantame masyvą? Pavyzdys: Peteliškių šeima; Gėlių laukas; 2014.02.02 Parengė ITMM Artūras Šakalys 3 Kaip suprasti
More informationC++ programavimo kalba. Konstruktorius, destruktorius, klasių metodų modifikatoriai, objektų masyvai (4 paskaita)
C++ programavimo kalba Konstruktorius, destruktorius, klasių metodų modifikatoriai, objektų masyvai (4 paskaita) Konstruktorius Sukuriant objektą, jo duomenims paprastai turi būti priskiriamos pradinės
More informationKodėl programą sudaro daug failų? Sukurtos tipinės funkcijų galėtų būti panaudojamos dar kartą; Sudaroma aiškesnė programos struktūra; Sudaroma galimy
C programavimo kalba 12 paskaita (Daugiafailinės programos, laiko ir datos funkcijos) Kodėl programą sudaro daug failų? Sukurtos tipinės funkcijų galėtų būti panaudojamos dar kartą; Sudaroma aiškesnė programos
More informationBuferio perpildymo klaida Įvadas, techniniai klausimai
Buferio perpildymo klaida Įvadas, techniniai klausimai Rolandas Griškevičius rolandas.griskevicius@fm.vgtu.lt MSN: rgrisha@hotmail.com http://fmf.vgtu.lt/~rgriskevicius 2009-10-16 R. Griškevičius, Saugus
More informationPHP PROGRAMOS EIGOS VYKDYMO VALDYMAS
PHP PROGRAMOS EIGOS VYKDYMO VALDYMAS Sąlygos sakiniai PHP skriptų vykdymo eigą galite valdyti naudodami sąlygos sakinius. Sąlygos sakiniai tai loginės struktūros, kuriose saugomas kodas, įvykdomas įgyvendinus
More informationCome to the TypeScript
Come to the TypeScript we have type hinting! Sergej Kurakin Sergej Kurakin Amžius: 36 Dirbu: NFQ Technologies Pareigos: Programuotojas Programuoti pradėjau mokytis 1996 metais. Programuotoju dirbu nuo
More informationGijos. Gijų modelis Javoje. R.Vaicekauskas, OP, 2017
Gijos Gijų modelis Javoje R.Vaicekauskas, OP, 2017 1 Turinys Motyvacija Sukūrimas Valdymas Sinchronizacija Susijusios klasės 2 Motyvacija Gijos reikalingos tam, kad išreikšti lygiagretumą vieno proceso
More informationPYTHON IS SLOW. Make it faster with C. Ben Shaw
PYTHON IS SLOW Make it faster with C Ben Shaw It s OK that Python isn t fast, you can write your slow functions in C! Everyone TABLE OF CONTENTS C Module vs C Types TABLE OF CONTENTS C Module vs C Types
More informationC - extensions. only a small part of application benefits from compiled code
C - EXTENSIONS C - extensions Some times there are time critical parts of code which would benefit from compiled language 90/10 rule: 90 % of time is spent in 10 % of code only a small part of application
More informationC++ programavimo kalba
C++ programavimo kalba Šablonai (10 paskaita) Kodėl šablonai (templates)? Programuojant egzistuoja situacijos, kai reikia atlikti tuos pačius veiksmus su skirtingais duomenų tipais (pvz. modulio radimas,
More informationExtending and Embedding the Python Interpreter
Extending and Embedding the Python Interpreter Release 2.1.1 Guido van Rossum Fred L. Drake, Jr., editor July 20, 2001 PythonLabs E-mail: python-docs@python.org Copyright c 2001 Python Software Foundation.
More informationC++ programavimo kalba
C++ programavimo kalba Operatorių perkrovimas (7 paskaita) Operatorių perdengimas Programavimo kalbose naudojami operatoriai pasižymi polimorfizmu (daugiavariantiškumu). Kaip pavyzdys gali būti operatorius
More informationElektroninis.lt šakninių sertifikatų diegimas
Elektroninis.lt šakninių sertifikatų diegimas Ši instrukcija aprašo, kaip į kompiuterį įdiegti šakninius elektroninis.lt sertifikatus. Diegimo darbus galima atlikti turint kompiuterio administratoriaus
More informationEl. pašto konfigūravimas
El. pašto konfigūravimas Outlook Express (integruota Windows XP) elektroninio pašto klientas Žemiau pateikta instrukcija, kaip sukonfigūruoti savo elektroninį paštą vartotojams, turintiems elektroninio
More informationApletai (įskiepiai) Lekt. dr. Pijus Kasparaitis m. m. pavasario semestras.
Apletai (įskiepiai) Lekt. dr. Pijus Kasparaitis pkasparaitis@yahoo.com 2008-2009 m. m. pavasario semestras Java grafinės bibliotekos AWT (Abstract Window Toolkit) Swing 2009.04.09 P.Kasparaitis. Objektinis
More informationPolimorfizmas. Lekt. dr. Pijus Kasparaitis m. m. pavasario semestras.
Polimorfizmas Lekt. dr. Pijus Kasparaitis pkasparaitis@yahoo.com 2009-2010 m. m. pavasario semestras Dar apie paveldėjimą Java kalboje kiekvienas paveldėtos klasės objektas gali būti naudojamas ten, kur
More informationPython Optimization and Integration
[Software Development] Python Optimization and Integration Davide Balzarotti Eurecom Sophia Antipolis, France 1 When Python is not Enough Python is great for rapid application development Many famous examples...
More information2017 m. pagrindinės sesijos informacinių technologijų valstybinio brandos egzamino programavimo užduoties galimi sprendimai
Pavyzdys A 2017 m. pagrindinės sesijos informacinių technologijų valstybinio brandos egzamino programavimo užduoties galimi sprendimai int konvertuojamas(int skaic, int id); char konvertuojamas2(int dal);
More informationInformacijos apsaugos standartai serija
Informacijos apsaugos standartai 27000 serija Pareng : Marius Celskis www.isec.lt 2007 m. balandis 12 d. ISO 27000 serija 2 iš 9 Tarptautin standartizacijos organizacija ISO informacijos apsaugos standartizavimui
More informationProjektas. .h failai Header failai (interface) .m failai Pačios programos failai ( .xib /.storyboard Vartotojo sąsajos failai
ios Projektas.h failai Header failai (interface).m failai Pačios programos failai (.xib /.storyboard Vartotojo sąsajos failai AppDelegate.h / AppDelegate.m aplikacijos pradiniai startavimo prpograminiai
More informationPaskirstytos atminties lygiagretusis programavimas Įvadas į MPI
Paskirstytos atminties lygiagretusis programavimas Įvadas į MPI Distributed memory parallel programming Paskirstytos atminties lygiagretieji kompiuteriai Kiekvienas procesorius turi tik savo nuosavą atmintį
More informationWeb servisai WSDL. Osvaldas Grigas
Web servisai WSDL Osvaldas Grigas Web servisų aprašymas Kiekvienas web servisas yra unikalus Jis turi adresą(arba kelis adresus), kuriuo į jį galima kreiptis. Jis supranta tik tam tikros struktūros įeinančius
More informationC++ programavimo kalba
C++ programavimo kalba Rodyklė this, C++ string klasė (9 paskaita) Rodyklėthis Visos objekto funkcijos gali naudotis rodykle this, kuri rodo į patį objektą. Tokiu būdu kiekviena funkcija gali rasti objekto,
More informationC++ programavimo kalba
C++ programavimo kalba Klasės, klasių savybės, vardų erdvės (3 paskaita) OOP Struktūrinio programavimo modelio problema: Didelės programos tampa labai sudėtingos t.y. egzistuoja tūkstančiai kintamųjų ir
More informationAmadeus On-Line Helpdesk
Amadeus On-Line Helpdesk Vartotojo instrukcija Skirta kelionių agentūroms Turinys Įžanga... 3 Jungimasis prie Amadeus Helpdesk... 3 Patarimai ir pastabos... 7 Dokumento valdymas 2007 Apsauga Viešas Įmon
More informationK R I S T I N A L A P I N. I dalis. Matematikos ir statistikos studijų krypčių pirmo kurso studentams
V I L N I A U S U N I V E R S I T E T AS M A T E M A T I K O S I R I N F O R M A T I K O S F A K U L T E T A S P R O G R A M Ų S I S T E M Ų K A T E D R A K R I S T I N A L A P I N Programavimas C I dalis
More informationKRISTINA LAPIN PROGRAMAVIMAS PASKALIU IR C. II dalis MATEMATIKOS IR STATISTIKOS STUDIJŲ KRYPČIŲ PIRMO KURSO STUDENTAMS
VILNIAUS UNIVERSITETAS MATEMATIKOS IR INFORMATIKOS FAKULTETAS PROGRAMŲ SISTEMŲ KATEDRA KRISTINA LAPIN PROGRAMAVIMAS PASKALIU IR II dalis MATEMATIKOS IR STATISTIKOS STUDIJŲ KRYPČIŲ PIRMO KURSO STUDENTAMS
More informationSimboliai ir simbolių eilutės 2 val. Standartinės procedūros ir funkcijos darbui su simbolių eilutėmis
T8 Simboliai ir simbolių eilutės 2 val. Standartinės procedūros ir funkcijos darbui su simbolių eilutėmis 1 Kintamasis, kurio tipas nurodomas žodžiu char, skirtas simboliui saugoti. var a, b : char; Su
More informationPython/C API Reference Manual
Python/C API Reference Manual Release 2.5.2 Guido van Rossum Fred L. Drake, Jr., editor 21st February, 2008 Python Software Foundation Email: docs@python.org Copyright c 2001-2008 Python Software Foundation.
More informationThe Python/C API. Release Guido van Rossum Fred L. Drake, Jr., editor. January 04, Python Software Foundation
The Python/C API Release 2.6.4 Guido van Rossum Fred L. Drake, Jr., editor January 04, 2010 Python Software Foundation Email: docs@python.org CONTENTS 1 Introduction 3 1.1 Include Files.............................................
More informationPHP Lietuviškai. Turinys
PHP Lietuviškai Informacija iš interneto pakampių surinko, visa savaitgalį prie Easy PDF sėdėjo ir kankinosi Justinas L. aka scooox. Taigi, kad visi girdėtų, sakau: šitas dokumentas yra surinktas iš visų
More informationC++ programavimo kalba
C++ programavimo kalba Santrauka doc.dr. Dalius Mažeika Dalius.Mazeika@fm.vtu.lt VGTU SC L318 Programavimo kalbos Procedūrinės (Assembler, ankstyvos, Fortran versijos) Pagrindą sudaro procedūros. Kiekvienas
More informationPažintis su C++ Builder
Pažintis su C++ Builder Turinys C++ Builder aplinka... 2 Komponentai, jų savybės ir metodai, įvykiai... 2 Programos objektų savybių keitimas... 4 Vartotojo programos kūrimas, saugojimas ir vykdymas...
More informationProgramavimas C kalba
Programavimas C kalba Mokomoji priemonė Elektronikos specialybės studentams Vytautas Vyšniauskas 2008.01.28 09:26 Šiaulių Universitetas, 2007 Turinys Įvadas... 4 1 Simbolių kodavimas ir ASCII kodų lentelė...
More informationC programos struktūra ir funkcijos
C programos struktūra ir funkcijos 1. C programą sudaro 1 arba daugiau failų (arba kompiliavimo vienetų). programa ::= { failas 1+ 2. C programos failas tai vienas paskui kitą einantys kintamųjų, funkcijų
More informationAn Introduction to Programming in Python. Stephen White
An Introduction to Programming in Python Stephen White What is Python? Portable open source interpreted programming language Object Oriented (by design) Named after Monty Python's Flying
More informationios Uždara operacinė sistema skirta tik Apple įrenginiams: iphone ipad ipod touch Apple TV
ios Uždara operacinė sistema skirta tik Apple įrenginiams: iphone ipad ipod touch Apple TV Pagrindas OS X, skirtas ARM įrenginiams Programavimo aplinka: XCode ir Objective-C Programavimo kompiuteris -
More informationVilniaus universitetas Fizikos fakultetas Radiofizikos katedra R. Grigalaitis Programavimas (Programavimo C++ kalba paskaitų konspektas)
Vilniaus universitetas Fizikos fakultetas Radiofizikos katedra R. Grigalaitis Programavimas (Programavimo C++ kalba paskaitų konspektas) Vilnius 2010 - 2 - Turinys PROGRAMAVIMO SAMPRATA... - 4 - KINTAMIEJI
More informationĮVADAS JVM Java Virtual Machine Java virtualios mašinos (JVM) JVM write once, run everywhere
ĮVADAS The Java programming language was introduced in 1995 by Sun Microsystems which has since merged into Oracle Corporation. Derived from languages such as C and C++. Pradžioje Java buvo skirta programuoti
More informationdouble *pdouble1, *pdouble2, *pdouble3, double4;
11. RODYKLĖS Rodyklė (angl. pointer) kintamasis, saugantis kito konkretaus tipo kintamojo adresą. Rodyklės taikomos: - Netiesioginei prieičiai prie kintamojo - Prieičiai prie masyvo elementų - Argumentų
More informationPaveikslėliai. Lekt. dr. Pijus Kasparaitis m. m. pavasario semestras.
Paveikslėliai Lekt. dr. Pijus Kasparaitis pkasparaitis@yahoo.com 2008-2009 m. m. pavasario semestras Klasė Image Priklauso paketui java.awt Abstrakti klasė paveldėta iš Object Tai visų grafinių paveikslėlių
More informationEmbedding Python in Your C Programs
1 of 7 6/18/2006 9:05 PM Embedding Python in Your C Programs William Nagel Abstract C, meet Python. Python, this is C. With surprisingly little effort, the Python interpreter can be integrated into your
More informationTrumpai-ilga istorija
Įvadas į Web Services Kas yra Web Service? Kas ką žino??? 70-ieji: Mainframe Trumpai-ilga istorija 80-ieji: Client-Server Istorijos 90-ieji: Web 2000: SOA 2010: Cloud Computing Šaltinis: Sergejus Barinovas,
More informationII SEKCIJA. Duomenų bazės ir modeliai
II SEKCIJA Duomenų bazės ir modeliai VEIKLOS TAISYKLIŲ SAUGYKLA, INTEGRUOTA SU VEIKLOS TAISYKLIŲ IŠKVIETIMO MECHANIZMU 1 Rimantas Butleris, Liudas Motiejūnas Kauno technologijos universitetas Straipsnyje
More informationPrograminio kodo saugumas
Programinio kodo saugumas Rolandas Griškevičius rolandas.griskevicius@fm.vgtu.lt MSN: rgrisha@hotmail.com http://fmf.vgtu.lt/~rgriskevicius 2009-12-18 R. Griškevičius, Saugus programavimas, VGTU, 2009
More informationInteraktyviame režime: visi 5 etapai vykdomi nuosekliai; DBVS SQL sakinius interpretuoja. Programose: dalis etap gali bti atlikti kompiliuojant.
8. SQL sakiniai taikomosiose programose SQL gali bti vartojama dviem režimais: interaktyviai taikomosiose programose Dvilypumo privalumai: interaktyvaus režimo prieinamos ir programose; SQL derinamas interaktyviai
More informationWeather Visualizing Cloud Lamp
Weather Visualizing Cloud Lamp Elizabeth Poss and Cordelia Stiff E155 Final Project Report December 8, 2017 Abstract: String lights of various shapes and sizes have become a staple of whimsical interior
More informationRegister your product and get support at SHB9100. LT Vartotojo vadovas
Register your product and get support at www.philips.com/welcome SHB9100 Vartotojo vadovas Turinys 1 Svarbu 4 Klausos sauga 4 4 Bendroji informacija 4 5 5 5 5 Kai garsas iš mobiliojo telefono perduodamas
More informationHTML dokumentai. Praktinės užduotys
HTML dokumentai Praktinės užduotys 1. DzSoft PHP Editor šablonai Pakeiskite HTML šabloną į: ... Programos
More information16. ŠABLONAI. int abs( int ); float fabs( float ); double dabs( double ),...
16. ŠABLONAI Šablonas (angl. template) lakoniškas mechanizmas užrašyti funkcijų ar klasių, besiskiriančių tik argumentų ar laukų formatais, šeimą. Pavyzdžiui, absoliutinis dydis C kalboje (joje nėra šablonų)
More informationKAUNO TECHNOLOGIJOS UNIVERSITETAS
KAUNO TECHNOLOGIJOS UNIVERSITETAS INFORMATIKOS FAKULTETAS VALDIKLIŲ PROGRAMAVIMAS STANDARTO IEC 61131-3 KALBOMIS Referatas Atliko: Kęstutis Valinčius Kaunas 2011 Turinys 1 Įvadas... 3 2 Struktūriniai elementai...
More informationNaujos galimybės su Lotus Notes 8.5.1: naudotojams ir programuotojams
Naujos galimybės su Lotus Notes 8.5.1: naudotojams ir programuotojams IBM Programinės įrangos diena 2009 m. spalio 21 d. Andrejus Chaliapinas, IĮ Infosana vadovas http://www.infosana.com Prezentacijos
More informationInterneto technologijų taikymai
Interneto technologijų taikymai Mantas Puida (mantasp@gmail.com) VI paskaita Entity pirminis raktas Kiekviena Entity klasė privalo turėti pirminį raktą (Primary Key). Jei turima Entity objektų hierarchija,
More information1. AJAX įvadas. AJAX principai:
1. AJAX įvadas AJAX principai: Naršyklė talpina programą (application), ne turinį. Serveris siunčia duomenis ne turinį. Asinchroniškumas - asinchroninio request/response siuntimo pagrindinis principas
More information6-7-8 PASKAITOS. Bendros žinios
6-7-8 PASKAITOS Turinys: Paveldimumas Bendros žinios. Išvestinės klasės konstruktoriai. Paveldimumas ir metodų perkrovimas. Įvadas į abstrakčias klases. Bendrasis ir dalinis paveldimumas. Daugybinis paveldimumas.
More information2-3 PASKAITOS. Paprasčiausia programa:
2-3 PASKAITOS Turinys: Paprasčiausios programos pavyzdys. Darbas su programavimo terpėmis. Duomenys. Duomenų tipai ir charakteristikos. Paprasčiausia įvestis/išvestis. Paprasčiausia programa: /* Pirmoji
More informationObjektiškai Orientuotas Programavimas su C++
Vilniaus Universitetas Matematikos ir Informatikos fakultetas Kompiuterijos katedra Saulius Narkevičius Objektiškai Orientuotas Programavimas su C++ paskaitų konspektai pavasaris 2005 Turinys Pratarmė...
More informationA Lithuanian Verbalization Template for ORM conceptual models and rules
A Lithuanian Verbalization Template for ORM conceptual models and rules Mustafa Jarrar, Vrije Universiteit Brussel, Belgium. (Contact Author) Maria Keet, Free University of Bozen-Bolzano, Italy. Juozas
More informationC++ programavimo kalba
C++ programavimo kalba I/O biblioteka (2 paskaita) I/O operatoriai Išvedimo > #include using namespace std; void main() { float A = 18.236; cout
More informationThe Python/C API Release Guido van Rossum and the Python development team
The Python/C API Release 3.4.3 Guido van Rossum and the Python development team February 25, 2015 Python Software Foundation Email: docs@python.org CONTENTS 1 Introduction 3 1.1 Include Files.............................................
More informationA.Kynienė. С, C++ kalbų ABC. Metodinė priemonė
A.Kynienė С, C++ kalbų ABC Metodinė priemonė Vilnius 2004 TURINYS C KALBOS PRIVALUMAI...4 PROGRAMAVIMO PROCESAS...5 OPERACIJOS...6 PAPRASTOS PROGRAMOS STRUKTŪRA...8 DUOMENŲ IR KINTAMŲJŲ TIPAI...9 SIMBOLINĖS
More informationDTD aprašas gali būti XML failo viduje. Šiuo atveju jis įterpiamas į žymę DOCTYPE naudojant tokią sintaksę:
XML DTD paskirtis DTD (angl. Document Type Definition) paskirtis nusakyti, iš kokių blokų gali būti sudarytas XML (o taip pat ir HTML) dokumentas. Taigi DTD apibrėžia dokumento struktūrą išvardindama leistinus
More informationŠIAULIŲ UNIVERSITETAS MATEMATIKOS IR INFORMATIKOS FAKULTETAS INFORMATIKOS KATEDRA. Mindaugas Gapšys BAKALAURO DARBAS
ŠIAULIŲ UNIVERSITETAS MATEMATIKOS IR INFORMATIKOS FAKULTETAS INFORMATIKOS KATEDRA Mindaugas Gapšys Informatikos specialybės IV kurso dieninio skyriaus studentas Bash skriptų panaudojimas Unix/Linux operacinių
More informationPaprastų lentelių kūrimas
HTML lentelės Lentelės Informacijos pateikimas HTML-dokumentuose lentelių pagalba yra vienas iš dažniausiai naudojamų. HTML kalboje lentelės yra naudojamos ne tik tradiciškai, kaip duomenų pateikimo metodas,
More informationC++ programavimo kalba
C++ programavimo kalba Standartinė šablonų biblioteka (STL) Duomenų struktūros (11paskaita) Šablonai Programuojant egzistuoja situacijos, kai reikia atlikti tuos pačius veiksmus su skirtingais duomenų
More informationMasyvai Javoje. Masyvai. Objektų talpyklos. Masyvo tipas. Deklaravimo pavyzdžiai. Deklaracija ir sukūrimas. Masyvo superklas - Object
Masyvai Javoje Masyvai. Objektų talpyklos (Arrays, collections) Dinamiškai sukuriami java objektai iš anksto apibr žtam komponenčių skaičiui saugoti. Komponent s g.b. primityvaus tipo arba nuorodos tipo
More informationCollections (Java) Collections Framework
Collections (Java) https://docs.oracle.com/javase/tutorial/collections/index.html Collection an object that groups multiple elements into a single unit. o store o retrieve o manipulate o communicate o
More informationAlien GOO a Lightweight C Embedding Facility. Jonathan Bachrach MIT CSAIL. Alien MIT 1 19DEC03
Alien GOO a Lightweight C Embedding Facility Jonathan Bachrach MIT CSAIL Alien GOO @ MIT 1 Quick Goo Intro! Dynamic type-based object-oriented language! Interpreter semantics! Classes, multiple inheritance,
More informationhttp://tinyurl.com/cq-advanced-python-20151029 1 2 ##: ********** ## csuser## @[S## ********** guillimin.hpc.mcgill.ca class## ********** qsub interactive.pbs 3 cp -a /software/workshop/cq-formation-advanced-python
More informationUždavinių sprendimas MATLAB aplinkoje
Operacijų tyrimas. Įvadas. Laboratoriniai darbai 1 Uždavinių sprimas MATLAB aplinkoje Matlab tai interaktyvi sistema, skirta atlikti inžinerinius bei mokslinius skaičiavimus. Sistemos aplinkoje galima
More information4 SKYRIUS. Programuojamieji loginiai valdikliai. Įvadas
4 SKYRIUS Programuojamieji loginiai valdikliai Įvadas Programuojamieji loginiai valdikliai tai esminis pramonės automatizavimo veiksnys. Juos naudojant galima lanksčiai prisitaikyti prie besikeičiančių
More informationRedis Ma as, greitas, galingas. Specialiai VilniusPHP
Redis Ma as, greitas, galingas Specialiai VilniusPHP 2013.06.06 Sergej Kurakin Na, Jūs mane jau nekarta matėte, tai nieko nesakysiu apie save. Kaip aš susipa inau! Tai buvo prieš keletą metų! Projektas
More informationWWW aplikacijų saugumas 2
WWW aplikacijų saugumas 2 Rolandas Griškevičius rolandas.griskevicius@fm.vgtu.lt MSN: rgrisha@hotmail.com http://fmf.vgtu.lt/~rgriskevicius 2010-11-26 R. Griškevičius, Saugus programavimas, VGTU, 2009
More informationDuomenų vietisumo užtikrinimas
Duomenų vietisumo užtikrinimas Reikalavimai duomenų vientisumui Duomenų vientisumas siejamas su informacijos, esančios DB-je, teisingumu ir išsamumu. RDBVS užtikrina šiuos reikalavimus: Reikšmių būtinumas
More informationWeb technologijos. Hostingas JavaScript PHP
jquery & PHP Web technologijos Hostingas JavaScript PHP Kelios hostingo kompanijos serveriai.lt hostex.lt hostinger.lt Nemokamas hostingas su PHP/mysql http://mindaugas.zz.mu/jm1.html Hostingo paslaugų
More informationTautvydas Dagys Microsoft Lietuva
Tautvydas Dagys Microsoft Lietuva Programos akademinėms institucijoms ir studentams Studentų partnerių programa Akademinės institucijoms Studentams MSDN AA Tai efektyvus būdas aprūpinti savo laboratorijas/klases
More informationTIES VMI duomenų mainų posistemis. Duomenų teikimo sąsajos aprašas
VALSTYBINĖ MOKESČIŲ INSPEKCIJA PRIE LIETUVOS RESPUBLIKOS FINANSŲ MINISTERIJOS TIES VMI duomenų mainų posistemis Duomenų teikimo sąsajos aprašas Versija: 2.12 VILNIUS 2018-01-30 KEITIMŲ CHRONOLOGIJA Versija
More informationT u r b o P a s k a l i s 7.0
Vilniaus universitetas Matematikos ir informatikos fakultetas Programų sistemų katedra I N F O R M A T I K A T u r b o P a s k a l i s 7.0 Doc. V. Undzėno paskaitų konspektai (skaitoma Fizikos fakulteto
More informationCS 3113 Introduction to Operating Systems Midterm October 11, 2018
General instructions: CS 3113 Introduction to Operating Systems Midterm October 11, 2018 Please wait to open this exam booklet until you are told to do so. This examination booklet has 10 pages. You also
More informationCS 3113 Introduction to Operating Systems Midterm October 11, 2018
General instructions: CS 3113 Introduction to Operating Systems Midterm October 11, 2018 Please wait to open this exam booklet until you are told to do so. This examination booklet has 10 pages. You also
More informationObjektinis programavimas su C++ naudojant Qt 4
Vilniaus Universitetas Matematikos ir Informatikos fakultetas Kompiuterijos katedra Saulius Narkevičius Objektinis programavimas su C++ naudojant Qt 4 mokomoji priemon ruduo 2007 Turinys Pratarm...5 Literatūra...7
More informationCython. April 2008 Brian Blais
Cython O p t i m i z a t i o n i n P y t h o n April 2008 Brian Blais Rule #1 of Optimization Premature optimization is the root of all evil - Donald Knuth What is Cython/Pyrex? Python to C/Python-API
More informationLOGINĖS DB SCHEMOS ATSTATYMAS NAUDOJANT JDBC
LOGINĖS DB SCHEMOS ATSTATYMAS NAUDOJANT JDBC Bronius Paradauskas, Aurimas Laurikaitis, Sigitas Paulavičius, Anna Truncaitė Kauno technologijos universitetas, Informacijos sistemų katedra, Studentų g. 50,
More informationKLIENTŲ DUOMENŲ BAZĖS IR SANTYKIO SU KLIENTAIS VALDYMO PROGRAMA
KTU INFORMATIKOS FAKULTETAS HENRIKAS SINICKAS KLIENTŲ DUOMENŲ BAZĖS IR SANTYKIO SU KLIENTAIS VALDYMO PROGRAMA MAGISTRO DARBAS Darbo vadovas doc. dr. Ojaras Purvinis KAUNAS 2004 TURINYS 2 1. ĮVADAS... 3
More informationHTML dokumentai aprašo tinklalapius. HTML dokumentus sudaro HTML gairės ir grynas tekstas. HTML dokumentai vadinami tinklalapiais.
1 P u s l a p i s HTML dokumentai HTML kalba HTML yra kalba, naudojama tinklalapių aprašymui. HTML kilo iš HyperText Markup Language. HTML nėra programavimo kalba, ji yra žymėjimo kalba. Žymėjimo kalba
More informationStep-by step guide for MRU students to uploading Master s Thesis to elaba repository
Step-by step guide for MRU students to uploading Master s Thesis to elaba repository www.elaba.lt Log in the repository Go to www.elaba.lt Select Submit to repository Select your institutional affiliation
More informationVienlusčių įtaisų projektavimas. 1 paskaita
Vienlusčių įtaisų projektavimas 1 paskaita HDL įvadas Tradicinės programavimo kalbos (C, Pascal, Python) yra nuoseklios: jomis parašytos programos yra kompiliuojamos į universalaus procesoriaus instrukcijų
More informationWindows saugumo požiūriu
Windows saugumo požiūriu Rolandas Griškevičius rolandas.griskevicius@fm.vgtu.lt MSN: rgrisha@hotmail.com http://fmf.vgtu.lt/~rgriskevicius 2009-09-25 R. Griškevičius, Saugus programavimas, VGTU, 2009 1
More informationELEKTRONINIŲ PROJEKTŲ RENGIMO IR VALDYMO SISTEMA
ŠIAULIŲ UNIVERSITETAS MATEMATIKOS IR INFORMATIKOS FAKULTETAS INFORMATIKOS KATEDRA Asta Drukteinien ELEKTRONINIŲ PROJEKTŲ RENGIMO IR VALDYMO SISTEMA MAGISTRO DARBAS Darbo vadov : Doc. S. Turskien Recenzentas:
More informationAsta Čitavičienė LIBRARY
elaba REPOSITORY USER GUIDE FOR A STUDENT Asta Čitavičienė LIBRARY 2016-09-10 Login Go to elaba website at www.elaba.lt Select a reference Deposit to elaba Login 1. 2. Select your institution: Kauno technologijos
More informationKOMPIUTERIŲ TINKLAI. 5 paskaita Tinklo lygmuo, IP protokolas
KOMPIUTERIŲ TINKLAI 5 paskaita Tinklo lygmuo, IP protokolas Lokalus tinklas (kartojimas) Lokalaus tinklo technologijos: Kokius žinote prieigos prie terpės metodus? Kas yra Ethernet, kokie jo skiriamieji
More information