Trabalho de Pesquisa_Bruno

March 27, 2018 | Author: Bruno | Category: Sql, Html, Scripting Language, Databases, Information Technology Management


Comments



Description

Trabalho dePesquisa Por Bruno Martins Costa Estudante de Engenharia de Telecomunicações - Uff Índice 1. Introdução................................................................................................................................................................................1 2. Pesquisa Inicial.......................................................................................................................................................................2 2.1. Ferramentas de desenvolvimento Web..............................................................................................................2 2.1.1. HTML......................................................................................................................................................................2 2.1.2. PHP..........................................................................................................................................................................3 2.1.3. Form.......................................................................................................................................................................4 2.2. Banco de Dados.............................................................................................................................................................4 2.2.1. Definição...............................................................................................................................................................4 2.2.2. Sistema de Gerenciamento de Banco de Dados...................................................................................4 2.2.2.1. Definição............................................................................................................................................5 2.2.2.2. Modelos de Dados..........................................................................................................................5 2.2.2.3. A linguagem......................................................................................................................................5 2.2.2.4. A linguagem SQL............................................................................................................................5 2.2.2.5. MySQL.................................................................................................................................................6 2.3. Linguagem de programação Lua............................................................................................................................7 2.3.1.Definição e Aplicações......................................................................................................................................7 3. Pesquisa Final.........................................................................................................................................................................7 3.1. Uma introdução a Lua.................................................................................................................................................7 3.2. Características Básicas...............................................................................................................................................8 3.2.1. Linguagem de Scripting..................................................................................................................................8 3.2.2. Linguagem dinâmica........................................................................................................................................8 3.2.2.1. Interpretação dinâmica...............................................................................................................8 3.2.2.2. Tipagem dinâmica forte..............................................................................................................8 3.2.2.3. Gerência automática de memória dinâmica.......................................................................8 3.2.3.Comentários..........................................................................................................................................................8 3.3. Diferenciais de Lua.......................................................................................................................................................9 3.3.1. Portabilidade.......................................................................................................................................................9 3.3.2. Simplicidade........................................................................................................................................................9 3.3.3. Pequeno Tamanho............................................................................................................................................9 3.3.4. Acoplabilidade....................................................................................................................................................9 3.4. Variáveis e Tipos...........................................................................................................................................................9 3.4.1.Variáveis.................................................................................................................................................................9 3.4.1.1. variáveis locais.................................................................................................................................9 3.4.1.2. variáveis globais..............................................................................................................................9 3.4.2.Tipo de dados.......................................................................................................................................................9 3.4.2.1. Nil...........................................................................................................................................................9 3.4.2.2. Booleano............................................................................................................................................10 3.4.2.3. Number..............................................................................................................................................10 3.4.2.4. String...................................................................................................................................................10 3.4.2.5. Tabela.................................................................................................................................................10 3.4.2.6. Function.............................................................................................................................................10 3.4.2.7. Userdata.............................................................................................................................................10 3.4.2.8. Thread.................................................................................................................................................10 3.5. Operadores......................................................................................................................................................................11 3.5.1.Aritméticos...........................................................................................................................................................11 3.5.2.Operadores Relacionais..................................................................................................................................11 3.5.3. Operadores Lógicos.........................................................................................................................................11 3.5.4.Operador de Concatenação............................................................................................................................11 3.5.5. Precedência de operadores..........................................................................................................................12 3.6. Estrutura de controle de fluxo................................................................................................................................12 3.6.1.if.................................................................................................................................................................................12 3.6.2. While.......................................................................................................................................................................12 3.6.3. Repeat.....................................................................................................................................................................12 3.6.4. For............................................................................................................................................................................13 3.7. Tabelas...............................................................................................................................................................................13 3.7.1.Definição.................................................................................................................................................................13 3.7.2. Construtores........................................................................................................................................................14 3.7.3.Iteradores ipairs e pairs...................................................................................................................................15 3.8. Funções..............................................................................................................................................................................16 3.8.1.Definição.................................................................................................................................................................16 3.8.2. Trabalhando com um número variável de argumentos....................................................................16 3.8.3. Passagem de parâmetros por referência.................................................................................................17 3.8.4. Retorno...................................................................................................................................................................17 3.8.5.Chamada..................................................................................................................................................................18 3.9. Metatabelas......................................................................................................................................................................18 3.9.1. Definição................................................................................................................................................................18 3.10. Programação Orientada a Objetos em Lua......................................................................................................19 3.10.1. Objetos.................................................................................................................................................................19 3.11. Co-rotinas........................................................................................................................................................................21 3.11.1. Definição..............................................................................................................................................................21 4. Projeto.........................................................................................................................................................................................22 5. Conclusão...................................................................................................................................................................................27 6. Bibliografia................................................................................................................................................................................28 características e diferenciais que fizeram desta linguagem (desenvolvida no Brasil) a mais usada atualmente para scripting em jogos. Os três temas foram resumidos no tópico que se segue. Inicialmente foi realizada uma pesquisa de forma que eu pudesse conhecer melhor a respeito dos três temas propostos: Ferramentas de desenvolvimento Web. No terceiro tópico foi realizada uma abordagem mais detalhada da linguagem de programação Lua. 1 . praticidade. o Jogo escrito na linguagem de programação Lua. Introdução O presente trabalho se propõe a apresentar o resultado das pesquisas realizadas por mim visando o cumprimento da atividade solicitada pelo grupo PET-TELE como ultima etapa do processo de seleção para o ingresso no mesmo. É importante destacar que a linguagem participa do padrão Ginga para o Sistema Brasileiro de TV Digital. No tópico quatro eu apresento resultados do projeto realizado. Linguagem de programação Lua. suas aplicações. Banco de Dados.1. Devido a sua leveza. e outras características. Lua é muito utilizada em plataformas pouco convencionais. Apresento também aqui os resultados obtidos no desenvolvimento de um dos projetos propostos pelo grupo aos candidatos. pois me responsabilizei por este tema. Foi apresentado o histórico da linguagem. i) Hyper É o oposto de linear. uma linguagem.1 Definição Resumindo uma longa história.3 Estrutura Básica 2 . iii) Mark-up Significa marcação e é o texto que você escreve.1 Ferramentas de desenvolvimento de aplicativos para a web.2 Significado de HTML: HTML é a abreviatura de "HyperText Mark-up Language". 2. Ao inventar o HTML ele lançou as fundações da Internet tal como a conhecemos atualmente.1.1.2. 2.1.você pode ir de onde estiver para onde quiser. A linguagem HTML usa muitas palavras do inglês. entre cientistas de diferentes universidades.1. Com HTML as coisas são diferentes .1. iv) Language Significa linguagem e é exatamente o que HTML é. O projeto inicial tornou-se um sucesso jamais imaginado por Tim Berners-Lee. Pesquisa Inicial Nesta seção apresento a pesquisa que inicialmente foi realizada para a definição de qual tema proposto seria escolhido. 2. ii) Text É textual. etc. marcadores. negrito.1. Nos tempos antigos os programas de computadores rodavam linearmente: quando o programa executava uma ação tinha que esperar a próxima linha de comando para executar a próxima ação e assim por diante de linha em linha. HTML foi inventado em 1990 por um cientista chamado Tim Berners-Lee. 2. A finalidade inicial era a de tornar possível o acesso e a troca de informações e de documentação de pesquisas. Você cria a marcação da mesma forma que escreve em um editor seus cabeçalhos.1.1 HTML 2. . e outras formatações 2. que traz informações sobre o documento que está sendo aberto <body>: define o conteúdo principal.2.A estrutura de um documento HTML apresenta os seguintes componentes: Onde cada <comando> é definido como uma etiqueta ou tag. margens.. Basta rodar o servidor web conectado a um PHP instalado. gerar páginas com conteúdo dinâmico ou enviar e receber cookies. Esta é a parte do documento HTML que é exibida no navegador. mas não saberia como é o código fonte. Mas o PHP tem diversas outras utilidades. como: coletar dados de formulários. que é especialmente interessante para desenvolvimento para a Web e pode ser mesclada dentro do código HTML. interpretada.1.1 Etiquetas As etiquetas básicas de HTML são: <html>: define o início de um documento HTML e indica ao navegador que todo conteúdo posterior deve ser tratado como uma série de códigos HTML <head>: define o cabeçalho de um documento HTML.2 PHP 1. Você pode acessar os resultados de seu programa PHP com um browser visualizando a página PHP através do servidor web. A maioria das etiquetas tem sua correspondente de fechamento: <etiqueta>. você pode fazer qualquer coisa que outro programa CGI (Common Gateway Interface) possa fazer. gerando HTML que é então enviado para o cliente. O PHP é uma linguagem de programação de ampla utilização.1 Definição PHP é uma sigla recursiva que significa PHP HyperText Preprocessor.1. No corpo podem-se definir propriedades comuns a toda a página. Esses são os maiores campos onde os scripts PHP podem se utilizados: i) Script no lado do servidor (server-side). 1.</etiqueta> 2. portanto. O cliente receberia os resultados da execução desse script.1. É necessário três coisas para o trabalho.1. O interpretador do PHP (como CGI ou módulo). Este é o mais tradicional e principal campo de atuação do PHP.1. um servidor web e um browser.2.2 Aplicações O PHP é focado para ser uma linguagem de script do lado do servidor. e tem como objetivo indicar uma ação que deve ser realizada. 3 . O que distingui o PHP de algo como Javascript no lado do cliente é que o código é executado no servidor. como cor de fundo. o corpo do documento. 1. por sua vez.2 Banco de Dados 2. 2. permitindo ao programador criar tabelas específicas de acordo com suas necessidades. menus.1. Juntos. formam um registro (record). etc. marcação.2 Sistema de Gerenciamento de Bancos de Dados (SGBD) 4 . conhecidos por tipos de dados (datatypes). Esse tipo de uso é ideal para script executados usando o cron* ou o Agendador de Tarefas (no Windows).). iii) Escrevendo aplicações GUI (Graphical User Interface) no lado do cliente (client-side).1. elementos especiais chamados de controls (botões de rádio. e os rótulos sobre os controls. para um servidor Web. 2. são constituídos de objetos menores que podem ser manipulados pelos usuários. e se é desejável usar alguns recursos avançados do PHP em aplicações no lado do cliente pode-se utilizar o PHP-GTK para escrever esses programas. *O "cron" é um programa de "agendamento de tarefas".2 Controles Os usuários interagem com um form por meio da chamada de controls. O PHP não é (provavelmente) a melhor linguagem para produção de aplicações com interfaces em janelas.3 FORM 1.). um form.3. etc.entradas de texto -seleção de arquivo -controles ocultos -controles de objetos 2. selecionar itens do menu. Na maioria dos bancos de dados.2. mas o PHP faz isso muito bem. A única coisa necessária é o interpretador.1 Definição Um banco de dados nada mais é do que uma hierarquia de estruturas de dados complexas. antes que o form seja apresentado a um agente que executará o processamento (por exemplo. modificando tais controls (digitar o texto.botões -checkbox -botões de rádio -menus .1. um ou mais datatypes. Uma hierarquia de banco de dados pode ser considerada como: Banco de dados > Tabela > Registro > Tipo de dados. Cron permite aos usuários agendar tarefas (comandos ou scripts shell) para serem executados periodicamente em determinados momentos ou datas. etc. Os tipos de dados possuem diversas formas e tamanhos. E programas escritos desta forma ainda serão independentes de plataforma.). Usuários em geral "completam".ii) Script de linha de comando. o conceito da estrutura que mantém os blocos (ou registros) de informações é chamado de tabela.2.3. Pode-se fazer um script PHP funcionar sem um servidor web ou browser. um servidor de email. que podem ser dos seguintes tipos: .1 Definição Um form é uma seção de um documento HTML que contém conteúdo normal. Estes registros. Esses scripts podem ser usados também para rotinas de processamento de texto. ii) Linguagem de manipulação de dados. Não existe uma única forma de representação deste modelo. iii) Linguagem de controle de dados. ii) Linguagem de manipulação de dados Possibilita a alteração os dados na base. são basicamente três os componentes de um SGBD: i) Linguagem de definição de dados Especifica conteúdos.1 Definição Um sistema de gerenciamento de banco de dados não é nada mais do que um conjunto de programas que permitem armazenar.2 Modelos de Dados O Modelo de Dados é basicamente um conjunto de conceitos utilizados para descrever um Banco de Dados. Assim sendo. Desde pequenos sistemas que funcionam em computadores pessoais a sistemas enormes que estão associados a mainframes.2.2. orientado a objetos. ou LCD. em rede.2. estrutura a base de dados e define os elementos de dados. porém qualquer forma que permita a correta compreensão das estruturas de dados compreendidas no Banco de Dados pode ser considerada adequada. do inglês). Tipos de modelos de dados hierárquico.2. Há muitos tipos diferentes de SGBD. como GRANT e REVOKE em SQL. ou LMD (ou DML. 2. com comandos como CREATE TABLE.2.4 A linguagem SQL 5 .2. age como interface entre os programas de aplicação e os ficheiros de dados físicos e separa as visões lógica e de concepção dos dados.3 A linguagem Geralmente dividida em três partes: i) Linguagem de definição de dados ou LDD (ou DDL. 2. do inglês). com comandos como UPDATE e SELECT. relacional.2. 2. iii) Dicionário de dados Guarda definições de elementos de dados e respectivas características – descreve os dados. quem os acede.2. etc. modificar e extrair informações de um banco de dados. elimina a necessidade de especificação de definição de dados. Um sistema de gerenciamento de banco de dados implica a criação e manutenção de bases de dados.2. com comandos para controle de acesso dos usuários do sistema. ix) Suporta Triggers. x) Suporta Cursors (Non-Scrollable e Non-Updatable). É atualmente um dos bancos de dados mais populares. 2. PHP. C/C++.5 MySQL O MySQL é um sistema de gerenciamento de banco de dados (SGBD). Solid. iv) Pouco exigente quanto a recursos de hardware. F.. podemos destacar: i) Portabilidade (suporta praticamente qualquer plataforma atual). Federated. vi) É um Software Livre com base na GPL. Isto reduz o ciclo de aprendizado daqueles que se iniciam na linguagem. Python. xii)Replicação facilmente configurável. InnoDB. O SQL foi desenvolvido originalmente no início dos anos 70 nos laboratórios da IBM em San Jose (Califórnia). CSV. Muitas das características originais do SQL foram inspiradas na álgebra relacional. Isto decorre da sua simplicidade e facilidade de uso. BDB. 6 . Ela se diferencia de outras linguagens de consulta a banco de dados no sentido em que uma consulta SQL especifica a forma do resultado e não o caminho para chegar a ele. ASP e Ruby) iii) Excelente desempenho e estabilidade. do inglês Structured Query Language) como interface.2. que utiliza a linguagem SQL (Linguagem de Consulta Estruturada. ii) Compatibilidade (existem drivers ODBC. Java. xiii)Interfaces gráficas (MySQL Toolkit) de fácil utilização cedidos pela MySQL Inc. Archive. Ela é uma linguagem declarativa em oposição a outras linguagens procedurais. vii) Contempla a utilização de vários Storage Engines como MyISAM. ou Linguagem de Consulta Estruturada ou SQL.. Codd. Falcon. viii) Suporta controle transacional. dentro do projeto System R. v) Facilidade de uso.2. xi) Suporta Stored Procedures e Functions. com mais de 10 milhões de instalações pelo mundo. A linguagem SQL é um grande padrão de banco de dados.NET e módulos de interface para diversas linguagens de programação. que tinha por objetivo demonstrar a viabilidade da implementação do modelo relacional proposto por E. Perl. Entre suas características. como Delphi.Structured Query Language. JDBC e. é uma linguagem de pesquisa declarativa para banco de dados relacional (base de dados relacional). essa descrição não podia estar congelada dentro da aplicação. facilmente acoplável. podemos conciliar as facilidades de uma linguagem de script oferecidas por Lua com a eficiência das linguagens C e C++. Sendo assim. Pesquisa Final 3. era necessário fornecer algum tipo de programação para os usuários finais. é totalmente tipada dinamicamente. Microsoft e NASA. Intel. Lua foi projetada para estender aplicações. oferecendo facilidades para descrição de dados. Por ser uma linguagem de extensão. Lua. Lua trabalha acoplada a uma aplicação hospedeira (host). a linguagem tornou-se popular entre os desenvolvedores de todo o planeta. 3. foi criada em 1993 no Brasil e se destaca pelo poder. Essa aplicação pode criar e ler valores armazenados em Lua. utilizado para visualizações de perfis geológicos. passando a fazer parte rapidamente da lista das 30 linguagens mais utilizadas no mundo. podendo ser compilada em qualquer plataforma que tenha um compilador C padrão. Lua é uma biblioteca implementada em C.1 Uma Introdução a Lua Em 1992. que apresentava algumas limitações. As funções C registradas em Lua. Mais uma vez. Luiz Henrique Figueredo e Waldemar Celes se reuniram para encontrar uma linguagem única que pudesse atender a todas as necessidades de configuração das suas aplicações. executar funções de Lua e registrar funções C no ambiente de Lua. é interpretada e tem gerenciamento automático de memória com coletor de lixo incremental. Dessa forma. portátil e 7 . Desde o início do desenvolvimento de tais aplicações esse tipo de configuração era muito mais do que simplesmente poder escolher a cor da janela ou o tipo de fonte de texto: era necessário poder tomar decisões em tempo de execução que somente os usuários sabiam quais eram. Foi então que Roberto Ierusalimschy. Um ano depois foi criado o PGM (Programa Gráfico Mestre).1 Definição e Aplicações Única linguagem de aceitação mundial desenvolvida fora do eixo EUA – Europa – Japão.2. de tal forma que fosse uma linguagem de configuração genérica.Rio (Pontifica Universidade Católica do Rio de Janeiro) e a Petrobrás. Foi evidenciada a necessidade crescente de que as aplicações desenvolvidas no Tecgraf fossem configuráveis externamente pelos usuários. mas também se limitava.3. Por também ser de licença permissiva. pois cada usuário tinha uma necessidade diferente e que mudava a cada tarefa. Para tal era utilizada a linguagem DEL (Linguagem para Especificação de Diálogos). A linguagem SOL (Simple Object Language) estava sendo utilizada. Lua é uma linguagem de extensão projetada para dar suporte a programação procedural. tanto descrevendo que decisões deveriam ser tomadas quanto descrevendo quais dados seriam usados e como eles seriam usados. Isso quer dizer que diversos aspectos essenciais das aplicações podem ser modificados sem recompilar a aplicação. por sua vez. simplicidade e rapidez. em um projeto entre a PUC . Isso significa que Lua possibilita combinar a descrição de objetos e a programação de seus comportamentos num mesmo contexto. portanto forte demanda para aplicações que fossem configuráveis externamente. surgiu o Tecgraf (grupo de Tecnologia em Computação Gráfica). por exemplo. Lua também pode ser compilada sem alterações como uma biblioteca C++. cujo objetivo a princípio baseava-se na construção de interfaces gráficas para programas de simulação. além da presença em empresas importantes como o Incor. Essas e outras características fazem dela uma linguagem ideal para configuração e automação (Scripting).3 Linguagem de programação Lua 2. Outro tipo de configuração era a descrição de complexos relatórios e analises feita pela Petrobras por encomenda ao Tecgraf. O Tecgraf tinha. podem ser invocadas de programas Lua. 3.1) é de julho de 1994. no mesmo ambiente de execução do programa. variáveis de tipos diferentes.com uma sintaxe simples. etc. geólogos. Lua é uma linguagem estruturada como uma biblioteca C. Uma linguagem de script é uma linguagem projetada para controlar e coordenar componentes geralmente escritos em outra linguagem.) pudessem utilizá-la confortavelmente. 20% utilizam Lua (primeira colocação). durante a execução do programa. e 7% utilizam Python (segunda colocação).2.Rio. 3. Lua. Desse total. Lua é empregada também para implementar softwares embutidos em equipamentos de rede (switches ethernet). foi lançada a primeira versão pública (1. Uma pesquisa realizada em setembro de 2003 pela gamedev. Então. Apesar de várias linguagens dinâmicas poderem ser usadas para script.2 Linguagem dinâmica Lua também é classificada como uma linguagem dinâmica. assim como a maioria das linguagens de scripting.2 Características Básicas 3.2. ou de extensão. Por ser uma biblioteca implementada em C. por exemplo.2.2. sendo necessário um interpretador para fazer a interface entre o código e o processamento realizado pelo hardware da plataforma. 3. no Observatório Astrofísico de Smithsonian) e. sem executá-la.net que a grande maioria dos jogos (72%) é desenvolvida com o auxílio de uma linguagem de script. aplicações de simulação em laboratórios de física (tendo sido esta uma de suas primeiras utilizações fora da PUC .2. 3.0) de LUA. Qualquer erro associado ao tipo da variável (como.2.1 Interpretação dinâmica Isso significa que a linguagem é capaz de executar trechos de código criados dinamicamente.2 Tipagem dinâmica forte Em Lua. como uma alternativa para o desenvolvimento de tais projetos.3 – Comentários Em Lua os comentários são iniciados por dois traços seguidos (--) e vão até o final da linha onde estes foram inseridos. Nos dias atuais a utilização de LUA não se limita apenas aos projetos desenvolvidos no Tecgraf. poucas foram projetadas para essa finalidade. não é necessário declarar o tipo das variáveis. Lua pode ser compilada em qualquer plataforma que tenha um compilador C padrão.2.3 Gerência automática de memória dinâmica Isso significa que não há a necessidade de um comando para liberar a memória após seu uso. com uma API que permite tanto que o código na linguagem possa chamar funções escritas em C como permite que código C possa chamar funções escritas em Lua. no desenvolvimento de jogos.1 Linguagem de Scripting Lua é uma linguagem de scripting. Como exemplo temos a função loadstring que compila um trecho de código arbitrário e retorna a função resultante. A primeira versão pública (1. a soma de um caractere com um numero real) só é observado em tempo de execução. de forma que os usuários finais (engenheiros.2. em julho de 1993. Uma mesma variável pode armazenar. 3.2. notavelmente. é uma linguagem interpretada. pois possui as seguintes características: 3. 8 . 1 variáveis globais Não precisam ser declaradas.3. Ada e até mesmo em outras linguagens de script.1 Nil Representa valor indefinido. é rápida e pequena. C#. e um único tipo numérico.4.3 Diferenciais de Lua 3.3 Pequeno tamanho O pacote de sua versão atual. 3. 3. São visíveis em todo o corpo do programa. contendo o código fonte. A palavra reservada “nil” pode ser usada na programação para expressar o valor do tipo nil. não sendo visíveis no restante do programa. ocupa cerca de 860K descompactado.4.2 Simplicidade A linguagem Lua tem apenas um único tipo de estrutura de dados. documentação e exemplos. e qualquer variável que não fora inicializada assume esse valor. dentre outras. com operações primitivas e modelo de pilha.4.4 Variáveis e Tipos 3. em Lua as variáveis não possuem tipo associados a elas e qualquer variável pode armazenar qualquer tipo de dado durante a execução programa.1 variáveis locais São declaradas através da introdução do termo “local” antes da variável.4. 3. Fortran.4 Acoplabilidade Lua é uma biblioteca em C.1. características que.2.3. exceto em bloco de comando que possua uma variável local de mesmo nome da variável global.1 Variáveis Como foi mencionado anteriormente. 3. o number.1. a tabela. Em Lua existem dois tipos de variáveis: 3. pode ser facilmente embutida em aplicações. Possuem escopo apenas dentro de um bloco de comandos. Como Perl e Ruby.3.3. 9 . 3.2 Tipo de dados Em Lua existem oito tipos de dados: 3.1 Portabilidade Pode ser utilizada em praticamente todas as plataformas.3. Apresenta API simples e bem definida. É possível estender programas. 3. não só em C e C++. tornam a linguagem de fácil entendimento. quanto em Java.4. São utilizados em co-rotinas de Lua. criando conjuntos multidimensionais. conjuntos.2.4. 3.2. gráficos...2.. Uma tabela deve ser explicitamente criada antes de ser usada. 3. Não há limite para a adição de elementos. filas.4.3 Number Em Lua não há distinção entre números inteiros e números de ponto flutuante. podendo apresentar falhas caso hajam valores iguais a nil.4 String Representa uma cadeia de caracteres. que pode ser delimitada por aspas duplas (“.4. Uma variável do tipo table associa um índice a um valor.armazena 78 na tabela. 3. e passá-las como parâmetro para outras funções. a expressão t = {} cria nova tabela que será armazenada na variável t. aspas simples (‘.”). t[“carro”] = 78 -. e a única restrição quanto as índices é que eles não podem ser do tipo nil.5 Tabela São a única forma de estrutura de dados em Lua. registro e hash. associado ao índice “carro”.A criação e alteração do userdata só pode ser feito por meio da API de Lua em C. 3. 3.4. São utilizados para armazenar dados C em variáveis Lua. Print (t[“carro”]) = imprime 78 na tela.2..2. e isso é feito através da expressão {}. representado por um ponteiro void*. 3. e podem representar vetores. Os duplos colchetes são utilizados por cadeias que se estendem por várias linhas. o que significa que é possível armazená-las em variáveis (globais ou locais) ou em campo de tabela.4. Há a possibilidade de armazenamento de tabelas em outras tabelas.4.2.2. Assim.8 Thread Os valores do tipo thread representam fluxos de execução independentes.7 Userdata Esse é um tipo de dado host.2 Booleano Pode assumir apenas dois valores.. associada ao índice 1. Há um único tipo para representá-los.6 Function Function são as funções da linguagem que em Lua são tratados como valores de primeira classe..4.O nil também é interpretado como falso numa expressão booleana. listas. 10 . Print (t[1]) --> imprime 3 na tela. O valor da um campo cuja indexação ainda não foi inicializada recebe o valor de nil. Com 3.]]). Podemos adicionar ou recuperar elementos de uma tabela utilizando seus índices. o number.’) ou duplos colchetes ([[. Assim. Se a tabela estiver sendo utilizada como um array. por exemplo: t[1] = 3 --armazena 3 na tabela. o operador # retorna o tamanho do mesmo. ou falso (false) ou verdadeiro (true). tabelas de símbolos. Ex: a = “Linguagem” b = “Lua” c = 5. >= são aplicáveis a number e string.5 Operadores Em Lua são encontrados os seguintes operadores: 3.).1 c = a .5.2 Operadores Relacionais São operadores relacionais de Lua: Menor que (<) Maior que (>) Menor ou igual a (<=) Maior ou igual a (>=) Igual a (==) Diferente de (~=) Operadores <. Aplicável a tipo string.4 Operador de Concatenação É representado por dois caracteres ponto (..5. “ ” . Somente podem ser aplicados a valores do tipo number ou a valores do tipo string que possam ser convertidos para number. convertendo valores do tipo number quando concatenados a string. <=. 3.5.1 Aritméticos São operadores aritméticos de Lua: Soma (+) Subtração (-) Multiplicação (*) Divisão (/) Operador unário de negativo (-) Parênteses podem alterar precedência de operadores.5.3 Operadores Lógicos São operadores lógicos de Lua: Conjunção (and) Disjunção (or) Negação (not) Operadores and e or são avaliados da esquerda para a direita.. c 11 ... 3. >. b . 3.3. Construção: 3. porém difere do while porque a condição é testada no fim. Caso contrário.1 if O if é a estrutura de controle básica de Lua. Construção 12 .-.6. executa o bloco iniciado pelo comando else (caso exista). Se a condição do laço for satisfeita.. executa o bloco iniciado pelo comando then.armazena “Linguagem Lua 3. Construção: 3. Se a expressão for verdadeira. ^ not –(unário) / + .5.3 Repeat Também é uma estrutura de tomada de repetição.6 Estruturas de controle de Fluxo 3.2” em c 3.5 Precedência dos Operadores A ordem de precedência dos operadores está listada abaixo em ordem decrescente.6. < > <= >= == ~= and or 3. até que a condição ao seja mais satisfeita.2 While O while é uma das estruturas de repetição. o bloco de comandos é executado repetidas vezes.6. O comando a seguir cria uma tabela e armazena na variável (que poderia ser global ou local) t: t = {} A tabela. Todas as estruturas de dados comumente encontradas em programação podem ser facilmente implementadas com o uso de tabelas. armazena o valor nil.4. ou até mesmo outras tabelas (o que possibilita a criação de arrays multidimensionais).6. 3.2 For genérico O for genérico é usado para percorrer valores retornados por uma função iteradora. ou seja.7. A execução de laços while. está vazia. a princípio. caracteres elementos de outra tabela. Os principais iteradores são o ipairs (percorre os índices de um ar Ray).expr_inicial = valor inicial do parâmetro .lines (percorre as linhas de um arquivo).6.1 For numérico Onde .4 For O For é uma estrutura de repetição que estabelece o valor inicial do parâmetro. o seu valor final. Por exemplo: 13 . Existem dois tipos de for: o for numérico e o for genérico 3.3.6. repeat e for pode ser interrompida usando o comando break.1 Definição A tabela é o único mecanismo de estruturação de dados oferecido por Lua. o pairs (percorre as chaves de uma tabela) e o io.expr_final = valor final do parâmetro .4. associado a índices sejam numéricos.expr_incremento = incremento 3. e o seu incremento a cada repetição.7 Tabelas 3. Podemos armazenar qualquer tipo de dado na tabela. 7.7. “uva”.. t[2] = m{} --> armazena a tabela m na tabela t.imprime 1. Assim.imprime 3.adiciona uma entrada na tabela Lua oferece uma sintaxe simplificada quando o índice é uma string simples (desde que a string não seja uma palavra reservada da sintaxe da linguagem). a expressão frutas = {“laranja”.14} print(a[1]) -. .7. exp2. .dados = {} t[-15] = nil 3.2. utiliza-se o número entre colchetes.1 definição Os mecanismos utilizados para inicializarmos uma tabela são chamados de construtores. nome2 = exp2..2] = 0 t. t[“lua”] = 7 --> armazena a variável numérica 7 na tabela associada ao índice “lua. e assim sucessivamente.. associada ao índice 1. A expressão t = {} é um caso particular de construtor.} 14 .14 a[3] = 12 -. associada ao índice 2 Para acessar índices numéricos em tabelas. a exp2 ao índice 2. Sendo assim. “pêssego”} print (frutas[3]) imprime na tela a string “banana”. Tem a seguinte forma: {exp1. nome3 = exp3.lua= 7. exp3.2. “morango”.3 Construtor de estruturas O construtor de estruturas cria uma tabela com strings como índices e tem a seguinte forma: {nome1 = exp1. 3.2. Ex: a = {1. “banana”.7. 3.jogo = 21 s. a atribuição t[“lua”] = 7 pode ser substituída por t.3 print(a[2]) -.3.. As demais expressões também são válidas: t[5.2 Construtor de Listas O construtor de listas associa diversos dados a índices numéricos inteiros e sucessivos.} Essa expressão cria uma tabela que associa a exp1 ao índice numérico 1.t[1] = “carro” --> armazena a string “carro” na tabela. Existem basicamente três tipos de construtores: um para listas. um para estruturas e um genérico.2 Construtores 3. 3. 5.v in ipairs(t) do .bruno) imprime na tela o valor associado a bruno na tabela notas.2.. ["*"] = "mul".} Algumas chaves do tipo string só podem ser criadas com o uso do construtor genérico. 3. .} De forma similar. [“for”] = “para”} print (conjunto[4]) --> imprime “rio de janeiro” print (conjunto. ["-"] = "sub".7. ou seja.} Essa expressão cria uma tabela com o valor de exp1 associado ao valor da expressão e1. Em particular. [e3] = exp3. construtores de estruturas também podem ser reescritos usando-se o construtor genérico: { ["nome1"] = exp1. Sendo assim.Essa expressão cria uma tabela associando o valor da exp1 ao nome1.. como o nome sugere. exp2 associado ao valor da expressão e2. valor = 100.. . josé = 8} print (notas.5 Inicialização mista Podemos inicializar uma tabela utilizando os três construtores apresentados anteriormente de uma forma mista. “rio de janeiro”.7. marcelo = 7.. 43.. [e2] = exp2.3 Iteradores ipairs e pairs A biblioteca padrão de Lua oferece duas funções que permitem iterar sobre os elementos armazenados na tabela..valor) --> imprime 100 print (conjunto. e assim sucessivamente. [“+”] = 2} --> expressão válida op = {["+"] = "add". [2] = exp2. daniel = 9. for i. += 2} --> expressão inválida pois a palavra or e o símbolo + são reservados em Lua m = {[“or”] = 1.4 Construtor genérico O construtor genérico. . o valor da exp2 ao nome 2. Assim.for) --> expressão inválida em Lua print (conjunto[“for”] --> imprime para 3.7. 3.2. ["/"] = "div"} --> expressão válida.. pode ser utilizado para construir qualquer tipo de estrutura utilizada em Lua e tem a seguinte forma: {[e1] = exp1.. e assim por diante. a expressão notas = {bruno = 10. end 15 . como por exemplo: conjunto = {1. como demonstrado a seguir: m = {or = 1. 22. 10. ["nome2"] = exp2. A função ipairs itera sobre todos os índices numéricos armazenados na tabela. [3] = exp3. qualquer construtor de listas pode ser reescrito na forma a seguir: { [1] = exp1. (2. Ex: function func1(a.t[2]). armazenada em uma variável (local ou global) ou campo de tabela e passada adiante como parâmetro ou valor de retorno de outra função. b = 2. d) bloco end -. Podemos criar uma função das seguintes formas: function f (lista-de-parâmetros) bloco end Ou: f = function(lista-de-parâmetros) bloco end Onde f representa a variável que armazenará a função. completando com nil os parâmetros faltantes. c = 3. uma função pode ser criada. b. end Nesse caso. como qualquer outro valor.8 Funções 3. 4.. 6) -.. 5. 2.v são reportados e indefinida. 3. Isso significa que.8. Uma função pode receber zero ou mais valores. c = d = nil -. durante a execução de um programa. 3. Funções em Lua são valores dinâmicos ou seja. independente do tipo associado `a chave: for k.8.1 Definição Funções em Lua são valores de primeira classe. c. ate que o primeiro índice com valor associado igual a nil seja encontrado.2 Trabalhando com um número variável de argumentos: 16 . Lua faz ajuste no número de parâmetros passados à função. . d = 4 -.v in pairs(t) do .chamada da função: func1(1. . b = 2. . A lista de parâmetros e especificada da maneira usual: entre os parênteses que seguem o nome da função.t[1]). 2) -.itera sobre os pares (1.chamada da função: func1(1. são criadas dinamicamente. .os valores 5 e 6 passados à função são ignorados 3.dentro da função: a = 1.dentro da função: a = 1. A função pairs permite iterar sobre todos os pares armazenados na tabela. a ordem em que os pares k. .8. 4} func1(x) -. 2.Se adicionarmos ao final da lista de argumentos o sinal . arg = {3.resulta em: x = 1.3 Passagem de parâmetros por referência Valores do tipo table.4 Retorno O Comando return efetua o retorno da função imediatamente. Ex: function func1() return 1. y. 2 end -. 2. ou seja. é passado para a função um ponteiro para os mesmos na verdade Ex: function func1(a) a[1] = 1 a[2] = 2 end x = {3. Ex: function func1(a. “teste” end x.chamada da função: 17 . arg[1] = 3.somente imprimirá o valor de param1 se não for nil Ex: function func1() return 1. Ex: function func1(param1) if (not param1) then return end print(param1) end -.8. 5} -. 3.chamada da função: a. …) bloco end -. d = func1() -. completando com nil os parâmetros faltantes. b = 2. b = 2. um ou mais valores (múltiplo retorno).resulta em: a = 1. z = func1() -. Ele deve ser o último comando do bloco e pode retornar zero.chamada da função: func1(1. 4. c = d = nil -. 5) -.ou seja. function e userdata são passados por referência. b. Os argumentos extras são colocados na tabela implícita arg. arg[3] = 5 3.. c. b.(três pontos seguidos) poderemos criar uma função cujo numero total de argumentos é variável.dentro da função: a = 1. y = 2 e z = “teste” Lua faz ajuste no número de parâmetros retornados da função. 4. arg[2] = 4.resulta em: x[1] = 1 e x[2] = 2 3. podemos fazer com que duas tabelas possam ser somadas. usando metatabelas. poderemos validar a seguinte expressão: x = {1.b) return {a[1] + b[1]. Na metatabela. a operação de soma não é especificada para tabelas. As metatabelas nos permitem alterar o comportamento de uma tabela.o valor 2 retornado é ignorado 8. podemos (re-)definir o comportamento quando da ocorrência dos seguintes eventos de operação aritmética: sub (subtração) mul (multiplicação) 18 . Para isso. mt) Assim então. ele chama o valor correspondente (o metamétodo chamado. sempre que tenta adicionar duas tabelas. que deve ser uma função) para calcular a soma.resulta em: a = 1 -.3} z = x+y print (z[1]. 2.2} y = {7.6 Chamada As funções em Lua são chamadas pelo nome da função seguido dos argumentos entre parêntesis. podemos programar a ação que deve ser tomada quando ocorre um determinado evento. separados por vírgulas: Ex: func1(1.9. no entanto. Lua. a[2] + b[2]} end } Devemos então definir mt como a metatabela de pelo menos uma das tabelas envolvida na operação de soma através do comando setmetatable: setmetatable (x. podemos definir como Lua calcula a expressão a + b.1 Definição Uma metatabela é uma tabela Lua comum que define o comportamento do valor original. Por exemplo. z[2]) --> imprime 8 . 5 Alem de add. 3) 3. Se Lua encontra nesse campo.a = func1() -. gerando uma terceiro novo tabela. verifica se qualquer uma delas possui uma metatabela e se esta possui um campo __add. sob certas operações especiais. onde a e b são tabelas.9 Metatabelas 3. Por exemplo. devemos primeiro criar uma metatabela com o comportamento da operação de soma definido: local mt = { __add = function (a. 10 Programação Orientada a Objetos em Lua 3.div (divisão) pow (exponenciação)u nm (negação) concat (concatenação) eq (igualdade) lt (menor que) le (menor ou igual que) Basta criar o campo adequado na metatabela.1 Objetos Em Lua. Se o objeto não tem o campo. como será explicado a posteriormente.raio^2 end A função armazenada no campo circulo. podemos usar o evento índex para delegar a outra tabela a busca do valor associado ao índice. gerado quando tentamos acessar um indice não existente na tabela.) Existem ainda dois eventos especiais cujos comportamentos podem ser programados: index. também poderíamos reescrever a função da seguinte forma: 19 .area (self) return math. a programação orientada a objetos se vale da combinação de tabelas com funções de primeira classe. que retorna o valor de π.10. podemos programar nosso próprio mecanismo de herança. y = 2 . e poderia ser substituída pela expressão print (circulo:area()) O operador de dois pontos automaticamente insere o receptor do método como um primeiro argumento adicional na chamada. Dessa forma.area(circulo)) imprime na tela o valor da área do circulo. cor = “azul”. e newindex. Ex: circulo = {x = 1. Essa função pode ser vista como um método para obtermos a área de qualquer elemento da classe circulo. Ex: function circulo. um objeto é meramente uma tabela.PI. (O nome do campo e o nome do evento precedido de __. gerado quando tentamos atribuir um valor a um índice ainda não existente na tabela. retornamos o campo associado `a sua “classe”: 3. raio = 10} --> define um novo objeto através da tabela circulo Podemos criar métodos e associá-los aos objetos utilizando funções. Por exemplo. O comando: print (circulo.pi * self. contendo campos com seus dados (variáveis de instância) e operações (métodos). Esses eventos podem ser usados para programar diferentes comportamentos. Em Lua.area aplicada a circulo retorna o valor armazenado no campo raio elevado ao quadrado multiplicado pela função math. Sendo assim. raio = 10}) --> atribui os métodos relativos a --circulo a c 20 . suponha que uma tabela A delega sua indexação para outra tabela B. circulo = {x = 1. X.b) --> 10 nil setmetatable(X.raio^2 end function circulo:novo(t) setmetatable (t. o valor associado é retornado normalmente.a. o mesmo verifica se X possui uma metatabela e se esta possui um campo indexado por __index. X. mt) define mt como a metatabela de X. Se indexamos A com uma chave presente. b = 300} Y[“__index”] = Y print(X. cor = vermelho. X.b) --> 10 30 O comando setmetatable(X. b = 300} mt = {__index = Y} --> metatabela print(X. X. o operador insere automaticamente um primeiro argumento adicional na definição do método. Lua automaticamente irá procurar essa chave na tabela B. raio = 10} circulo.function circulo:area () return math. Roberto) X = {a = 100} Y = {a = 200. y = 2 . mt) print(X.pi * self.__index = circulo function circulo:area () return math. Y) print(X. Ierusalimschy. As metatabelas em Lua nos permitem utilizar o mecanismo da delegação. Então.raio^2 end Nesse caso. Para criarmos novos objetos dentro dessa classe precisamos nos utilizar das metatabelas.” (Uma Introdução à programação em Lua.a. “Delegação permite que uma tabela “herde” campos de outra tabela.b) --> 10 nil setmetatable(X.b) --> 10 30 Podemos agora escrever uma função para gerar novos objetos associados à classe círculo. Poderíamos reescrever o código acima sem o uso de mt: X = {a = 100} Y = {a = 200.a.a. Mas se indexamos A com uma chave ausente. Quando o programa solicita um campo que não existe em X. cor = "azul". self) return t end c = circulo:novo({x = 200. com o nome self. Mais especificamente. y = 100.pi * self. o programa retorna o índice solicitado relativo à tabela que está armazenada em __index. co-rotinas são valores de primeira clase e. 21 .yield() x=x^2 print(x) end) cr(3) --> imprime na tela o numero 9 cr(3)--> imprime 81. ou seja.1 Definição O termo co-rotina se refere a um mecanismo que permite que um procedimento suspenda temporariamente sua execução e continue mais tarde.11 Co-rotinas 3. Em Lua. cr = coroutine. cujos valores são dados na chamada à co-rotina: cr = coroutine. 3.2 Controle de fluxo O controle de fluxo pode ser simétrico ou assimétrico. o controle de fluxo é assimétrico.11. Em Lua.wrap (function(x) x=x^2 print(x) end) cr(3) --> imprime na tela o numero 9 A maior vantagem parra o uso de co-rotinas está no fato de podermos suspender temporariamente a execução da co-rotina e posteriormente voltarmos ao mesmo ponto. podem ser suspensas durante a execução de outras funções (com pilha) ou apenas enquanto executando a sua função principal.9 O parâmetro único para wrap é uma função Lua contendo o código do corpo da co-rotina: cr = coroutine. executa (resume) a co-rotina. utilizamos os comandos yield (para suspender a execução da co-rotina) ou resume (para continuar a execução da co-rotina). Além disso.wrap ( function(x) x=x^2 print(x) coroutine. podem ser armazenadas em funções e invocadas em qualquer ponto do programa.wrap cria uma co-rotina e retorna uma função que. uma para suspender a execução e outra para reiniciar. o assimétrico tem duas primitivas.11. Em Lua. pois continua do mesmo ponto. 3.11.3 Criando um co-rotina A função coroutine. 3. ao ser chamada.wrap (function() print (“Olá mundo”) end) cr() --> imprime Olá mundo Essa função pode opcionalmente ter parâmetros. O controle simétrico tem uma única primitiva para transferir o controle entre co-rotinas.print(c:area()) --> imprime na tela o calculo de área de círculo. 4. 22 . Projeto Segue abaixo o código-fonte do programa. 23 . 24 . 25 . executa o laço apenas duas vezes (independente da soma dos pontos). porém a mesma é inferior à pontuação do jogador. dependendo das cartas anteriores. esse erro não ocasiona o encerramento do programa. pois o primeiro armazena uma variável do tipo string). Como o usuário só conhece uma das cartas da máquina. A função ordenar. O “A” inicialmente possui valor igual a 11. Tentei contemplar todas as possibilidades em que o “A” deve deixar de ser igual a 11 e passar a ser igual a 1. Para as cartas do jogador. O programa se utiliza do mecanismo que possibilita armazenarmos funções em variáveis de primeira classe.luac está localizado. A função maiores_pontuações armazena os valores de mt no arquivo de saída até o índice 11 (uma string e 10 valores numéricos). porém seu valor é alterado para 1 caso. Como loadd está sendo chamada pela função pcall. O programa gera um arquivo de saída com o nome “As dez maiores pontuações++” que armazenará os 10 maiores scores. Caso a ultima carta seja um A. A máquina recebe uma carta A de valor igual a 11. pois ela perde o jogo.uma delas será igual a 1 e a outra a 11.A máquina recebe inicialmente duas cartas iguais a A. Nesse caso. para facilitar a visualização e o entendimento do mesmo. coloca a tabela mt em ordem descrecente (a partir do índice 2. Caso o arquivo não exista. O programa. quando chamada. carrega esses valores do arquivo “As dez maiores pontuações++”. através do uso do if e dos operadores lógicos and e or. Quando chamada posteriormente executa o laço até a soma dos pontos em y ser maior que 17. A função cartasy escolhe aleatoriamente um elemento do baralho e atribui ao array y(cartas da máquina) Quando chamada pela primeira vez. a atribuição do valor do A seguiu ao seguinte princípio: o A terá seu valor alterado de 11 para 1 caso a pontuação do jogador supere os 21 pontos. -O jogador decide não pedir mais cartas. tornando-se o ultimo elemento do array. Usei uma tabela para armazenar os 10 maiores resultados. aquele não seja o melhor valor para o jogo do usuário ou da máquina. a função que denominei “loadd” gera um erro (devido ao uso da função assert). a função pode alterar o valor do A de 11 para 1. apenas pcall retorna nil e o jogo prossegue. -A máquina recebe mis uma carta e sua pontuação supera 21. sua pontuação supera os 17 pontos.O array x armazena as cartas do jogador e o array y armazena as cartas da máquina. Então. Essa tomada de decisão ocorre dentro da função cartasy. caso este exista no diretório onde o arquivo *. o valor de 11 não é o melhor para a máquina. Os valores carregados são armazenados na tabela mt. Esse valor é armazenado em uma nova posição em mt. caso seja melhor para a máquina. quando inicializado. a pontuação total desta não interfere na decisão. como nas seguintes hipóteses: . Quando o jogador vence o jogo. 26 . Nesse caso. sua pontuação será igual ao valor apostado pelo jogador multiplicado pelos pontos que ele obteve no jogo. caso o A seja a ultima carta (pois o valor do mesmo depende apenas das cartas anteriores). o programa atribui 1 ao A e a máquina recebe mais uma carta. armazenar funções entre outras aplicações. as aparências dos objetos e personagens. A Lucasarts. que podem ser usadas para construir arrays ou matrizes. porém possibilita a realização de programas complexos. Hoje. a engine carrega um mundo estático e os scripts em Lua tomam o controle. usou a versão 3.1 de Lua para desenvolver os títulos “Grim Fandango” e “Scape fromMonkey Island”. por exemplo.1 de Lua foi por eles modificada para tratar co-rotinas. Possui sintática simples. para definir as regras do jogo e também como ferramenta de depuração em tempo-real. Parte desse “poder” de Lua vem da versatilidade das tabelas. Basicamente. tanto em programação procedural quanto em orientação a objetos. A versão 3. A linguagem Lua tem sido amplamente utilizada no desenvolvimento de jogos. Em ”Baldur’s Gate”. Bioware usou Lua para prover uma ferramenta de depuracao em tempo-real.5. Conclusão A linguagem Lua é uma linguagem leve e poderosa. Crytek também utilizou Lua para controlar diversos aspectos do jogo e para permitir a criação de modificadores através da codificação de scripts Lua. 27 . dando vida e interatividade `as cenas. descrever objetos (características e métodos). Double Fine utilizou Lua em “Psychonauts” para controlar toda a lógica do jogo. Relic utilizou Lua em “Impossible Creatures” para controlar a IA. uma única estrutura de dados (a tabela). Em “FarCry”. como vimos suporte para co-rotinas esta presença na versão 5. devido ao seu mecanismo de delegação usando metatabelas.0. org/manual/5.wikipedia. Acessado em 01/10/2011 http://pt.lua. Acessado em 08/10/2011 28 . Acessado de 08/10/2011 a 01/11/2011 http://www.pdf.org/wiki/Sistema_de_gerenciamento_de_banco_de_dados.org/pil/.org/wiki/MySQL. Acessado de 08/10/2011 a 01/11/2011 http://www.youblisher.net/tutorials/html/ . Acessado em 01/11/2011 http://pt. Bibliografia http://pt-br.html. Acessado de 08/10/2011 a 01/11/2011 http://www.org/doc/jai2009.6. Acessado em 01/10/2011 http://www.1/pt/manual. Acessado em 01/10/2011 http://pt.lua.w3.1/.org/TR/html4/interact/forms.html#h-17. Acessado em 19/10/2011 http://www.lua.wikipedia. Acessado em 01/10/2011 http://www.org/wiki/SQL.com/p/74341-Linguagem-Lua/.org/manual/5.wikipedia.3.html.lua. Documents Similar To Trabalho de Pesquisa_BrunoSkip carouselcarousel previouscarousel nextFBD - Aula 16Banco de Dados(1-Conceitos_Básicos)teoria pratica de banco de dados com mysql2 Rational RoseTeorey Projeto e Modelagem de Bancos de Dados Download FUNCOES SQLProgSQL05 Procedures FunctionsQuerySqlAula04-Modelo Entidade-Relacionamento.pdfSQLCompletaadm bco dadosApostila - Criação de Web SitesLista de Exercícios I, Banco de Dados - Talitha Speranzasql para ki e casaManual - Atualização do SistemaDelphi OracleManualPesquisa2002 (Apenas como Referência).pdfApostila_GBD1_parte1Banco de DadosCDTC MysqlBanco de DadosLinguagem de Consulta Estruturada (SQL)DocumentoVisaoProjetoSWApostila MysqlEsboço tcc2SQL Magazine 106 - Migração de DadosCartao MysqlTutorial Ana CostaOracle Introducao Ao Sgbd OracleFooter MenuBack To TopAboutAbout ScribdPressOur blogJoin our team!Contact UsJoin todayInvite FriendsGiftsLegalTermsPrivacyCopyrightSupportHelp / FAQAccessibilityPurchase helpAdChoicesPublishersSocial MediaCopyright © 2018 Scribd Inc. .Browse Books.Site Directory.Site Language: English中文EspañolالعربيةPortuguês日本語DeutschFrançaisTurkceРусский языкTiếng việtJęzyk polskiBahasa indonesiaSign up to vote on this titleUsefulNot usefulYou're Reading a Free PreviewDownloadClose DialogAre you sure?This action might not be possible to undo. Are you sure you want to continue?CANCELOK
Copyright © 2024 DOKUMEN.SITE Inc.