Parte IX. Luiz Eduardo Borges

Documentos relacionados
Fundament n os s da platafo f rm r a. NE N T André Menegassi

DESENVOLVIMENTO DE SOFTWARE AULA 1

Java. Marcio de Carvalho Victorino

Objetivos do mini curso. Conhecer a linguagem. Noção de programação utilizando Python. Aprender o báscio.

Luiz Eduardo Borges. Novatec

Ambiente de Programação Visual. Framework.NET. Prof. Mauro Lopes. Ambiente de Programação Visual Prof. Mauro Lopes

Uma Introdução à Arquitetura CORBA. O Object Request Broker (ORB)

Framework.NET, Microsoft Visual C# 2010 Express e Elementos da Linguagem C#

PADI 2015/16. Aula 1 Introdução à Plataforma.NET

Introdução à linguagem Python. Slides extras

Programando em C# Orientado a Objetos. By: Maromo

cast poderia ser usado também para transformar um real (float) em inteiro. A sintaxe C (float)i pode ser substituída em C++ por float(i).

Protótipo de ferramenta para monitoração de computadores utilizando o padrão de gerência WMI da Microsoft e a plataforma de desenvolvimento.

Ambiente de Programação Visual. Framework.NET. Prof. Mauro Lopes. Ambiente de Programação Visual Prof. Mauro Lopes

Esta dissertação apresentou duas abordagens para integração entre a linguagem Lua e o Common Language Runtime. O objetivo principal da integração foi

Seminário - C# DSO II. Desenvolvimento de Sistemas Orientados a Objetos 2. Equipe: Diorges, Leonardo, Luís Fernando, Ronaldo

A interface do Microsoft Visual Studio 2005

Parte I Princípios básicos do Microsoft.NET Framework

Introdução ao C# . Visão geral do.net Framework

Algoritmos e Estrutura de Dados. Introdução a Linguagem Python (Parte I) Prof. Tiago A. E. Ferreira

Convertendo Algoritmos para a Linguagem C

Treinar - Cursos e Treinamentos C# Módulo I. Carga horária: 32 Horas

Ferramentas: jar e javadoc

Como acompanhar a evolução dos aplicativos? Console >> Desktop >> Web >> Mobile >> Cloud. Como aproveitar o melhor de cada programador?

Aula 09 Introdução à Java. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes

Projeto de Software Orientado a Objeto

Um pouco do Java. Prof. Eduardo

Linguagem de Programação Procedural (VB) Prof. MSc Eng Marcelo Bianchi AULA 01 - INTRODUÇÃO AO VB

Carga horária : 4 aulas semanais (laboratório) Professores: Custódio, Daniel, Julio foco: introdução a uma linguagem de programação Linguagem Java

Manual do Usuário - JIDOSHA

Componentes da linguagem C++

Linguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery

Plugins TerraView. Versão TerraLib/TerraView: 3.2.0RC2. Código fonte completo da TerraLib na estrutura de diretórios sugerida no site da TerraLib 1.

Linguagem de Programação Orientada a Objeto. Introdução a Orientação a Objetos Professora Sheila Cáceres

Tutorial de Computação Programação em Python para MEC1100 v

INTERFACE PARA ECF SWEDA

Desenvolvimento OO com Java Orientação a objetos básica

LINGUAGEM C UMA INTRODUÇÃO

Fundamentos de programação em Python. Introdução a Linguagem Python. Dino Magri

Manual de Compilación

Capítulo 12. SUB-ROTINAS

Configurando e Instalando o TRAC

Redes de Computadores

Introdução à Programação Aula 2 Introdução à linguagem Python

Programação com Posix Threads

Linguagens de programação

Um objeto é uma instância de uma 'classe'. Você define uma classe utilizando o trecho de código abaixo;

Linguagens de. Aula 02. Profa Cristiane Koehler

Algoritmo e Técnica de Programação - Linguagem C

insfcanceof new public switch transient while byte continue extends for int null

ASP.NET. Guia do Desenvolvedor. Felipe Cembranelli. Novatec Editora.

Capítulo 7 Nível da Linguagem Assembly

Linguagem C. TGSI Lógica de Programação / Linguagem C Prof. Marcos Roberto

Programação de Computadores Primeiros Passos Práticos em C++

Algoritmos e programação

Aula 05 Ferramentas de desenvolvimento

5 Apresentando a linguagem C

Luís Cláudio OLIVEIRA-LOPES

Programação para Dispositivos Móveis Aula 1. Prof. William Yamamoto

Laboratório de Computação VI JAVA IDL. Fabricio Aparecido Breve

É uma das linguagens de programação que fazem parte da Plataforma.NET (em inglês: dotnet) criada pela Microsoft (Microsoft.NET).

Java Laboratório Aula 1. Divisões da Plataforma. Introdução a Plataforma Java. Visão geral da arquitetura da

Apresentação. Rio de Janeiro, 19 de fevereiro de 2002 Waldemar Celes

Capítulo 8. CICLOS. Tabela 8.1 Programa8a.f90.

Aula 12: Funções. Pré-requisitos: Todas as aulas anteriores deste módulo. 1. Aproveitando Códigos no Programa

Ruby. Simplicidade e produtividade

Orientação a Objetos. Conceitos Iniciais Introdução a Linguagem Java. Gil Eduardo de Andrade

SCE-557. Técnicas de Programação para WEB. Rodrigo Fernandes de Mello

5 - Vetores e Matrizes Linguagem C CAPÍTULO 5 VETORES E MATRIZES

Allisson Barros 12/ Daniel Luz 13/ Leandro Bergmann 14/ Luiz Fernando Vieira 13/ Uriel Silva 12/

Anexo IV PLANILHA DESCRITIVA DE ESPECIFICAÇÕES TÉCNICAS

CONCEITOS DE LINGUAGEM DE PROGRAMAÇÃO CARACTERÍSTICAS. João Gabriel Ganem Barbosa

PROGRAMAÇÃODE COMPUTADORES I:C# LuizHenriqueC.Corêa

Exercícios de Revisão Java Básico

Capítulo 2. VARIÁVEIS DO TIPO INTEIRO

Acesso a Banco. Conexão em Java. Conexão em Java. Programação Orientada a Objetos Profa. Cristiane e Prof. Daniel

Microsoft.NET. Desenvolvimento Baseado em Componentes

Uso do Action₀NET com o PI System da OsiSoft

15 a Aula Subprogramação /Subalgoritmos Função e Procedimento

ESTUDO SOBRE AS LINGUAGENS DE PROGRAMAÇÃO HOSPEDEIRAS SUPORTADAS PELA FERRAMENTA HTML. Aluno: Rodrigo Ristow Orientador: Wilson Pedro Carli

Linguagens de. Aula 01. Profa Cristiane Koehler

A Linguagem Java. Apresentação. Java. A Linguagem da Internet

Prof. Esp. Adriano Carvalho

Conceitos básicos da linguagem C

Principais características

Introdução. Capítulo Breve sinopse

BC0505 Processamento da Informação

Programação online em Java

2. O gerador de código estende DepthFirstAdapter implementando a interpretação que gerará código Jasmin a partir de Smallpascal.

Comparando Java e C#

Integração de aplicações em. Luiz Eduardo Borges

Algoritmos I Aula 13 Java: Tipos básicos, variáveis, atribuições e expressões

GABARITO COMENTADO SISTEMAS OPERACIONAIS. PROF. Cláudio de C. Monteiro, Evanderson S. de Almeida, Vinícius de M. Rios

Algoritmos e Programação Estruturada

Introdução sobre Scilab

Transcrição:

Parte IX Luiz Eduardo Borges

Sumário (parte VIII) Empacotamento. Integração com Fortran. Integração com linguagem C. Integração com.net.

Empacotamento Compilação Empacotamento Fontes (*.py) Bytecode (*.pyc / *.pyo) Binários Interpretador e dependências Binários Instalador

Empacotamento (observações) Mais prático para distribuir e atualizar aplicações e suas dependências. Pode ser combinado com instaladores, como o InnoSetup. Não melhora a performance. Facilmente automatizável. Alternativas mais utilizadas: Py2exe (apenas para MS Windows). cx_freeze (portável).

Py2exe (exemplo) # -*- coding: latin1 -*- from distutils.core import setup import py2exe setup(name = 'SIM - Sistema Interativo de Música', service = ['simservice'], console = ['sim.py', 'simimport.py'], windows = ['simgtk.py'], options = {'py2exe': { 'optimize': 2, 'includes': ['atk', 'gobject', 'gtk','gtk.glade', 'pango', 'cairo', 'pangocairo']}}, data_files=[('',['janela.glade', 'sim.ico'])], description = 'Primeira Versão...', version = '1.0')

Integração com Fortran (I) Rotina feita em Fortran.

O script f2py faz parte do pacote numpy. Integração com Fortran (II)

Integração com Fortran (III) A rotina em Fortran é compilada em C para uma biblioteca dependente da plataforma.

Integração com Fortran (IV) A biblioteca é importada como um módulo e a rotina é utilizada como função pelo interpretador.

Integração com linguagem C É possível integrar Python e C nos dois sentidos: Python => C (Python faz chamadas a um módulo compilado em C) O módulo escrito em C deve utilizar as estruturas do Python (que estão definidas na API de interface) para se comunicar com o interpretador. C => Python (C evoca o interpretador Python em modo embedded) Um programa escrito em C pode evocar o interpretador Python e passar instruções.

Python => C (exemplo / I) // Arquivo: mymodule.c // Python.h define as estruturas do Python em C #include <Python.h> // No Python, mesmo os erros sao objetos static PyObject *MyModuleError; // Chamando a funcao "system" em C static PyObject * mymodule_system(pyobject *self, PyObject *args) { const char *command; int sts; Continua...

Python => C (exemplo / II) // "PyArg_ParseTuple" desempacota a tupla de parametros // "s" significa que ele deve identificar uma string if (!PyArg_ParseTuple(args, "s", &command)) // retornando NULL gera uma excessao // caso falte parametros return NULL; // chamando "system": sts = system(command); } // "Py_BuildValue" gera objetos que o Python conhece // "i" significa inteiro return Py_BuildValue("i", sts); Continua...

Python => C (exemplo / III) // Tabela que o Python consulta para resolver // os metodos do modulo e pode ser usado // tambem para gerar a documentacao // por instrospeccao: dir(), help(),... static PyMethodDef MyModuleMethods[] = { {"system", mymodule_system, METH_VARARGS, "Executa comandos externos."}, // Fim da tabela: {NULL, NULL, 0, NULL} }; // inicializacao do modulo: PyMODINIT_FUNC initmymodule(void) Continua...

Python => C (exemplo / IV) { } // O modulo tambem e' um objeto PyObject *m; // "Py_InitModule" precisa do nome do modulo e da // tabela de metodos m = Py_InitModule("mymodule", MyModuleMethods); // Erros... MyModuleError = PyErr_NewException("mymodule.error", NULL, NULL); // "Py_INCREF" incrementa o numero de referencias do objeto Py_INCREF(MyModuleError); // "PyModule_AddObject" adiciona um objeto ao modulo PyModule_AddObject(m, "error", MyModuleError); Continua...

Python => C :: setup.py (exemplo) # Arquivo: setup.py from distutils.core import setup, Extension Para compilar: python setup.py build mymodule = Extension('mymodule', sources = ['mymodule.c']) setup(name = 'MyPackage', version = '1.0', description = 'My Package', ext_modules = [mymodule])

C => Python (exemplo) // Arquivo: py_call.c Para compilar: #include <Python.h> gcc -I/usr/include/python2.5 \ int main() -L/usr/lib/python2.5/config \ { -lpython2.5 -opy_call py_call.c // Inicializa interpretador Python Py_Initialize(); // Executando codigo Python PyRun_SimpleString("import os\n" "for f in os.listdir('.'):\n" " if os.path.isfile(f):\n" " print f, ':', os.path.getsize(f)\n"); // Finaliza interpretador Python Py_Finalize(); return 0; }

.NET O.NET é uma infraestrutura de software criada pela Microsoft para a criação e execução de aplicações. A parte principal do.net é o Common Language Runtime (CLR), que provê uma série recursos aos programas, como gerenciamento de memória para as aplicações. Além disso, há um vasto conjunto de bibliotecas de componentes. As instruções das linguagens de programação são traduzidas para intermediate language (IL), permitindo que várias linguagens sejam usadas.

Integração com.net IronPython é a implementação do interpretador Python na linguagem C# (na qual o framework foi desenvolvido) Embora o IronPython tenha como objetivo a compatibilidade com CPython, existem algumas diferenças entre elas. A principal vantagem do IronPython em relação ao CPython é a integração com componentes baseados no framework.net.

De Python para.net Compilação Fontes Python Símbolos Árvore sintática Gerador IL CLR Objetos IronPython

Integração com.net (exemplo A) import sys # Usando a biblioteca do CPython sys.path.append(r'c:\python25\lib') import os print os.listdir('.') import sys Usa o CPython instalado. # Usando um componente.net from System.Diagnostics import Process Process.Start('http://www.w3c.org/') Abre o browser com a URL.

Integração com.net (exemplo B) import System from System.Collections import Hashtable hash = Hashtable() hash['baixo'] = '4 cordas' hash['guitarra'] = '6 cordas' for item in hash: print item.key, '=>', item.value Saída: baixo => 4 cordas guitarra => 6 cordas

Integração com.net (exemplo C / I) # -*- coding: utf-8 -*- import clr clr.addreference('system.windows.forms') clr.addreference('system.drawing') from System.Windows.Forms import * from System.Drawing import * frm = Form(Width=200, Height=200) frm.text = 'Mini calculadora Python' lbl = Label(Text='Entre com a expressão:', Left=20, Top=20, Width=140) frm.controls.add(lbl) Continua...

Integração com.net (exemplo C / II) txt = TextBox(Left=20, Top=60, Width=140) frm.controls.add(txt) def on_btn_click(*args): try: r = repr(eval(txt.text)) MessageBox.Show(txt.Text + '=' + r, 'Resultado') except: MessageBox.Show('Não foi possível avaliar: ' + \ txt.text, 'Erro') Continua...

Integração com.net (exemplo C / III) btn = Button(Text='Calcular!', Left=20, Top=100, Width=60) btn.click += on_btn_click frm.controls.add(btn) frm.show() Saída: Application.Run(frm)

Fim da parte IX