Linguagem. Um guia rápido e prático sobre a linguagem, suas ferramentas e frameworks

Tamanho: px
Começar a partir da página:

Download "Linguagem. Um guia rápido e prático sobre a linguagem, suas ferramentas e frameworks"

Transcrição

1 clojure_ Introdução à Linguagem Clojure Um guia rápido e prático sobre a linguagem, suas ferramentas e frameworks Leandro Ribeiro Moreira Diverte-se com desenvolvimento de sistemas, atualmente na ThoughtWorks Brasil. Quando sobra tempo, escreve em seu blog (leandromoreira.com.br) sobre T.I. A ideia básica do artigo é explorar a linguagem de modo a demonstrar seus conceitos chave, construções básicas, tipos, alguns exemplos e ferramentas bem aceitas na comunidade. Tudo isso de um jeito prático e rápido. A finalidade não é servir como um guia completo para linguagem, mas sim como uma apresentação curta da mesma. Logo, se o leitor se interessar e quiser se aprofundar, há referências de livros e links que podem ajudar esse aperfeiçoamento de conhecimento. Note que, por questões de simplicidade, adotei o termo função genericamente, sendo que às vezes pode se referir na verdade a uma macro, uma forma especial ou outra estrutura da linguagem. Clojure é uma linguagem dinâmica, de propósito geral, escrita em Java, de código-fonte aberto e que roda sobre a Java Virtual Machine (JVM). Atualmente, há versões da linguagem para.net (CLR) e JavaScript. Seu criador, Rich Hickey, a concebeu como um dialeto Lisp (uma das mais antigas linguagens de programação), mas com muitas melhorias e facilidades na sintaxe (syntactic sugar). Clojure também se inspirou nas boas ideias das linguagens Python e Haskell. Apesar de conseguir criar eou reusar programas no paradigma orientado a objetos, Clojure tem como paradigma a programação funcional (veja o quadro sobre o assunto). Diferentemente de outras linguagens funcionais como Haskell, Clojure é impura e permite a mutabilidade (side-effects). A escolha do nome da linguagem foi fortemente influenciada pelo termo da computação científica conhecido como closure juntamente com a plataforma Java. uma closure pode ser exemplificada como a capacidade que uma função f1, retornada dentro do corpo de outra f2, tem de referenciar variáveis locais da função f2 mesmo estando fora do contexto de definição das variáveis. Veja o exemplo implementado em JavaScript. 19 \

2 var f2 = function(){ var contadorexterno = 0; var f1 = function(){ contadorexterno = contadorexterno + 1 ; return contadorexterno; }; return f1; }; var f1 = f2(); //retorna a função f1 alert(f1()); //mostra 1 alert(f1()); //mostra 2 Além da vantagem de ter um enorme alcance oferecido pela JVM, Clojure também se integra facilmente com código Java. No entanto, ultimamente a linguagem está tendo mais foco devido às facilidades que Clojure proporciona para se escrever sistemas distribuídos sem se preocupar com locks e ou sincronização. Um dos ideais de Clojure para resolver o problema da concorrência é ter como premissa básica o fato de que quase tudo é imutável, e o que não é deve ser tratado dentro de um contexto transacional, usando um modelo STM (softtware transactional memory). É importante observar que Clojure não resolverá os problemas de concorrência que um código legado Java já possui. Clojure é uma linguagem homoiconic, um nome bem diferente para demonstrar que os programas escritos na linguagem são representados por estruturas de dados. A linguagem é definida em termos da análise das estruturas de dados e não da sintaxe da mesma. Essa diferença dá o poder de construção sobre a linguagem, ou seja, caso haja algo que não existe ainda na linguagem, você pode simplesmente criar essa sintaxe nova. Mesmo tirando todas as vantagens citadas anteriormente, penso que a linguagem é interessante e vale a pena ser estudada por ser limpa, objetiva, propor reusabilidade ao máximo e também porque faz o desenvolvedor pensar de um modo totalmente diferente da forma imperativa de criar programas computacionais. Outro fator importante a ser citado é a quantidade e qualidade de suporte da comunidade. Ao contrário de outros dialetos Lisp, Clojure está sendo bem mais difundida, entendida e explorada. Basta ver o ecossistema em volta da linguagem, que tem desde ferramentas para automação de projetos e resolução de dependências a muitos frameworks de propósitos gerais. Instalação Para instalar e utilizar Clojure, você deve ter instalado e disponível no seu sistema operacional o Java 5 ou outra versão mais atual. A instalação consiste apenas em baixar o.zip do endereço o qual contém a última versão estável. No momento da escrita do artigo, essa versão é a Depois de baixado, extraia o arquivo zip e observe que há um jar com nome clojure jar. Para seguir os exemplos do artigo, você deve entrar pelo seu prompt/terminal na pasta onde baixou o descompactou o jar e executar o comando java -cp clojure jar clojure.main ou java -jar clojure jar. Esse comando faz com que o seu terminal se transforme em um ambiente interativo onde você insere código e o mesmo é avaliado e executado. Tal ambiente é muito bom para testar códigos rapidamente. Para quem conhece Ruby é bem similar ao IRB. A esse ambiente é dado o nome REPL (read eval print loop) e nesse local você poderá executar os exemplos do artigo. Outros REPLs Caso não queira instalar na sua máquina ou apenas por curiosidade quiser testar os códigos, pode utilizar também outros REPL. Um deles é on-line e pode ser acessado através do endereço com/. Você também pode usar seu smartphone ou tablet, com android embutido, pra testar códigos pelo REPL que pode ser obtido no endereço https:// market.android.com/details?id=com.sattvik.clojure_repl (figura 1, QRCODE). Alô mundo Antes de demonstrar o exemplo alô mundo em clojure, é necessário ressaltar novamente que todos os exemplos podem ser executados diretamente no REPL; logo, você pode deixar o mesmo aberto enquanto lê o artigo. Programas escritos em Clojure são estruturas de dados conhecidas como listas. Para o exemplo, iremos criar uma lista com dois itens, a função e o argumento. Listagem 1. Exemplo alô mundo. (println Alô mundo ) Para executar o programa, basta pressionar a tecla Enter, e verá a execução do famoso exemplo de introdução a linguagens de computador. Como dito anteriormente, programas em Clojure são listas, e tais listas são criadas utilizando-se parênteses e com itens dentro dos parênteses, opcionalmente separados por vírgula. Simplificando um pouco todas as nuances possíveis, quando essa instrução for lida pelo REPL, ele irá tentar executar o primeiro item da lista como / 20

3 uma função, que por sua vez recebe o restante da lista como parâmetro. Apesar de parecer uma sintaxe da linguagem, uma palavra reservada ou ainda uma função especial, a função println não é. É uma função ordinária da linguagem como qualquer outra, e ela está definida dentro de um namespace, conceito similar ao pacote java.lang em Java, que é disponibilizado automaticamente para você utilizar. O mesmo exemplo poderia ser escrito usando uma variável interna para guardar a cadeia de caracteres Alô mundo. Para criar essa variável, basta usar a função def, que espera como argumento um nome e, opcionalmente, um valor. Veja na Listagem 1.1 o mesmo exemplo, mas utilizando uma variável interna. Observe também que para se criar comentários no código utiliza-se o caractere ponto-e-vírgula. Listagem 1.1. Exemplo alô mundo com variável. ; Alô mundo por variável (def alo-mundo Alô mundo ) (println alo-mundo) Principais tipos Assim como outras linguagens dinâmicas, Clojure é tipada. Conhecer seus tipos básicos é essencial para a criação de programas. Alguns tipos em Clojure são exatamente os mesmos da linguagem Java, como, por exemplo, o tipo String. O tipo responsável por dar nomes a coisas em Clojure é o símbolo. No exemplo alô mundo, note que o nome da função println é um símbolo, mas o mesmo não se restringe apenas à nomeação de funções e também é utilizado na definição de namespaces e outros. Exemplos de símbolos: nome-da-funcao, +, br.namespace/funcao etc. Os números são bem simples de serem entendidos. Assim como em Java e outras linguagens, os literais numéricos irão representar os números. Há um tipo numérico novo, a fração (ratio), não muito conhecido para alguns desenvolvedores. Esse tipo mantém os valores de uma divisão na forma dividendo por divisor sem perder a precisão. Ao usar esse novo tipo, você pode fazer operações aritméticas normalmente sem se preocupar. É como se estivesse trabalhando com tipos numéricos simples. Exemplos de números: 1, 30M, 3.14, 1 3 etc. É importante dizer que não há promoção automática dos tipos numéricos. O código da Listagem 2 executa sucessivas multiplicações por mil que resulta não em um gigantesco número, mas sim em uma exceção de overflow. Uma maneira de corrigir o código seria colocar um M no final do literal numérico, que o força a ser um BigDecimal. Versões mais antigas da linguagem faziam essa promoção automática. Listagem 2. Exceção de overflow. (* ) Para representar os boleanos basta utilizar os literais true e false. Para Clojure, exceto nil e false, tudo é true, inclusive o 0. O literal nil é equivalente ao null da linguagem Java. O tipo literal é exatamente o tipo String do Java, com sua imutabilidade e métodos. A diferença fica no tipo caractere, que é representado por barra e o caracter \x, onde x é o próprio caractere. Observe que \n não tem o mesmo valor que tem Java, sendo apenas o caractere n. Exemplos de caracteres: \a, \n, \newline, \tab etc. Um tipo similar a cadeia de caracteres, porém com outro propósito são as palavras-chave (keywords). Para criá-las, basta adicionar ao início do literal dois pontos. São principalmente usadas como chaves de um mapa. Exemplos de palavra-chave: :chave, :campo-nome etc. Coleções Coleções são tipos abstratos que representam diversos tipos repositórios de itens. Em Clojure, as coleções têm algumas propriedades compartilhadas. Todas são heterogêneas, ou seja, você pode ter diversos tipos dentro de uma mesma coleção. A linguagem trata todas as coleções como sequences, uma abstração de Clojure na qual você consegue aplicar funções comuns sobre essas estruturas de dados. Clojure utiliza um conceito conhecido como estrutura de dados persistentes para implementar todas suas coleções. Nesse modelo, não há mudanças quando você adiciona, remove ou atualiza um item da coleção, o que ocorre são apenas ligações entre essas mudanças, que preserva versões anteriores de sua coleção, e isso torna as coleções efetivamente imutáveis. Na prática, quando você adiciona um item a uma coleção, na verdade você está recebendo uma nova coleção. Tal fato pode assustar alguns desenvolvedores por medo de baixa performance ou alto consumo de memória, mas a linguagem foi projetada para não fazer apenas cópias e ser inteligente o bastante para ligar tais coleções. Um das estruturas de dados mais simples, o vetor, pode ser criada usando colchetes ou a função vector, como, por exemplo. [ item1, :item2, [ ] ] (vector 1 2 :tres) A estrutura de dados que têm seus valores ordenados e tais podem ocorrer mais de uma vez, conhecida como lista, também é suportada por Clojure. Tais listas podem ser criadas usando apóstrofo seguido de parênteses ou com a função list, como, por exemplo. 21 \

4 (def pilha ( jpa jsf )) (def hobbies (list música boxe baralho ) Por diversas razões, às vezes precisamos de listas que não pode permitir repetições de itens. Esse tipo de estrutura é conhecido como conjunto. Para criar conjuntos em Clojure, podemos utilizar a notação sustenido seguido de chaves ou a função hash-set, como pode ser visto nos exemplos. #{ f1 rally fórmula truck f1 indy } ; a repetição do item f1 será ignorada. (def centro-oeste (hash-set :go :df :ms :mt) Por último, temos a coleção do tipo mapa, a qual é um tipo abstrato onde se faz associações de chaves a valores, por várias vezes visto como sinônimo de dicionário ou vetor associativo. Para criá-las em Clojure, você pode usar chaves ou uma função como a hash- -map, e mesmo a vírgula sendo opcional nos mapas, seu uso é encorajado devido a melhor legibilidade do código. (def nosql-bd {:server , :port 8584, :cloud false}) (def cidade (hash-map :nome são paulo, :sigla sp, :per-capita 32493)) Função a unidade central Depois de conhecer um pouco sobre os tipos da linguagem, o próximo passo natural é estudar sua estrutura central. Nas linguagens orientadas a objetos, essa estrutura central seria a classe: já em Clojure, é a função. Seus programas poderão ser expressos por meio de funções, e sua composição guiará ao propósito de sua ideia para um sistema. Para se criar uma função, basta utilizar outra função de uso bem simples, chamada defn. É mostrado na Listagem 3 a criação de duas funções, onde a primeira simplesmente imprime alô mundo no console/prompt enquanto a segunda recebe dois números e devolve a soma dos mesmos, usando a função + que realiza a soma dos parâmetros passados. Note que a função defn recebe um símbolo, que define o nome da função, seus parâmetros, ou ausência deles, através dos colchetes e o corpo da função envolto em parênteses. Abaixo da definição das duas funções, seguem exemplos de como executar ambas. Listagem 3. Criar funções. (defn alo-mundo [] (println alô mundo )) (defn soma [x y] (+ x y)) (alo-mundo) (println (soma 2 3)) Quando se deseja criar uma função para um propósito menor, seja para fazer uma simples seleção ou algo mais trivial, pode-se criar funções anônimas. Tais funções não são nomeadas e nem precisam ser definidas por meio da função defn. Na Listagem 4 é apresentada uma função chamada operação, que recebe uma função mais dois argumentos e imprime o resultado da aplicação dos parâmetros sobre a função passada. A ideia é criar quatro funções anônimas, que representem soma, subtração, multiplicação e divisão, e passá-las para a função operação. Para criar funções anônimas, pode-se utilizar a função fn, a qual é similar a defn, omitindo apenas o seu nome. As funções anônimas possibilitam várias técnicas úteis, e uma delas é expor o contexto interno de uma função a funções externas, ou carregá-los além de sua definição, o que pode ser visto como um closure. Listagem 4. Funções anônimas. (defn operacao [funcao x y] (println (funcao x y))) (operacao (fn [a b] (+ a b)) 2 2) (operacao (fn [a b] (- a b)) 4 6) (operacao (fn [a b] (* a b)) 1 0) (operacao (fn [a b] (/ a b)) 2 4) Controle de fluxo por funções e não sintaxe Em uma linguagem funcional, normalmente, todas suas estruturas de controle de fluxo, sejam elas condicionais e ou de iterações, são construídas sobre funções, e Clojure também segue essa mesma regra. Essa pequena diferença é, talvez, a que causa maior estranheza aos novos adeptos de uma linguagem funcional. Por exemplo, suponhamos que você queira imprimir todos os valores de um dado vetor. Compare na Listagem 5 como esse código poderia ser escrito em Java e Clojure. Listagem 5. Iteração : Java & Clojure. //Java final String[] valores = new String[] { um, dois, três }; for (String valor : valores) { System.out.println(valor); } ;Clojure (map println [1 dois :tres]) / 22

5 A intenção da comparação do código da Listagem 5 não é pelo tamanho ou complexidade, mas apenas para demonstrar que, enquanto nas linguagens imperativas o que é esperado é uma sintaxe nova, em Clojure você utiliza uma função ou outra pra iterar. Outra forma de se controlar o fluxo de programas é por meio de instruções condicionais: os famosos if s. Em Clojure tem-se a função if para esse fim. O seu uso é muito simples: ela espera dois parâmetros obrigatórios, a condição e uma instrução, caso a condição seja verdadeira, e um opcional, que seria executado caso a condição fosse falsa. Na Listagem 6 é mostrado um exemplo bem simples de uma função que recebe um número, checa se o mesmo é maior do que dez e retorna um texto dizendo se é maior ou não do que dez. Listagem 6. Função determina maior do que dez. (defn maior-do-que-dez [numero] (if (> numero 10) (str Sim ) (str Não ))) ;Exemplo de uso (println (maior-do-que-dez 100)) Interoperabilidade com Java Clojure fornece muitas funções e facilidades para essa interoperabilidade, o que faz a tarefa de usar Java dentro da linguagem muito simples. Pode-se invocar um método utilizando as notações apresentadas na Listagem 7. Vale lembrar que Clojure já importa automaticamente o namespace java.lang. Listagem 7. Invocando um método Java em Clojure. ; Métodos de instância (.touppercase gaucho ) (. pessoense touppercase) ; Métodos de classe (Math/PI) (.Math PI) Para criar instâncias de objetos há pelo menos duas formas: a primeira utilizando a função new, e outra na qual você coloca o nome da classe seguido de um ponto. Lembrando que Java optou por organizar as classes em pacotes, e assim, para utilizar uma classe nos referimos ao caminho completo ou importamos o pacote ou classe. Em Clojure existe a função import, que faz justamente a importação dos pacotes e ou classes. O encadeamento de chamadas a métodos pode ser feito utilizando a função dot, ou mais facilmente a função dotdot. Alguns métodos requerem parâmetros para sua execução, e segue-se a mesma regra de passagem de parâmetros a funções, bastando usar o espaço e informar tais parâmetros. Há também uma função bastante útil chamada bean. Tal função recebe uma instância de objeto e retorna um mapa do padrão JavaBean, e de posse desse mapa, pode-se fazer consultas a esse mapa utilizando a chave como acessor para o valor. Todos os conceitos explanados anteriormente estão exemplificados e comentados na Listagem 8. Programação funcional Definir o que significa programação funcional é uma tarefa árdua, apesar de ser um conceito que pode apresentar várias concepções há algumas definições que são bem aceitas pela grande maioria dos desenvolvedores. Pode-se dizer que programação funcional é um paradigma de desenvolvimento que enfatiza a aplicação de funções, em contraste com o estilo de programação imperativo, onde o que é realçado são as mudanças no estado dos programas. A programação funcional tem suas raízes no cálculo lambda. Segue abaixo uma descrição de alguns conceitos sobre esse paradigma. Funções sem side-effect: a princípio uma função não deveria causar um efeito fora de seu escopo, ou seja, ela deveria ser uma unidade atômica que não causa mudança de estado no programa. Claro que, na prática é quase impossível escrever um programa onde não há uma função que cause mudanças externas. Dados imutáveis: nesse paradigma deve se evitar a mutabilidade, que é uma das dicas básicas para o bom desenvolvedor Java. Sabendo que programas de computador vão causar e persistir efeitos externos, as linguagens implementam jeitos para que os programas possam ser mutáveis quando necessário. Funções como cidadãos de primeira classe: você consegue usar funções como se fossem objetos num sistema OO, você pode passar uma função para outra e ou receber, da execução de uma função, outra função. Construções básicas como funções: ao invés de uma sintaxe específica para iterações e estruturas condicionais, construções básicas de uma linguagem de programação, a solução é utilizar funções, seja pra iterar sobre uma coleção ou controlar o fluxo dos programas. 23 \

6 /eu uso Phil Calçado Desenvolvedor na SoundCloud, a plataforma que lidera a distribuição e socialização de música e áudio na Internet. Ele bloga em e pode ser encontrado no twitter Por volta de 2006, eu estava em um projeto Ruby e comecei a me deparar com as limitações desta linguagem em termos de metaprogramação. Ao procurar uma melhor maneira de enfrentar estes problemas eu acabei aprendendo Common Lisp e Scheme. Eu fiquei imediatamente excitado com as possibilidades que Lisp traz, mas estas duas linguagens estavam muito distantes da minha realidade, que era basicamente projetos em Ruby, Java e C++. Quando Clojure foi anunciada eu vi a oportunidade que faltava. A linguagem não traz algumas das principais vantagens de Lisp, como reader macros, mas ainda assim provê um conjunto de ferramentas fundamentais para a criação de Domain-Specific Languages; além do suporte bem maduro à Programação Funcional. Hoje em dia eu uso Clojure para sistemas de análise de dados e também aplicações web. A produtividade que se atinge ao dominar o desenvolvimento em Lisp com emacs e seu REPL não possui equivalente em nenhum outro ambiente que eu conheça. Listagem 8. Interoperabilidade. ; Criar objetos (new java.util.date) (java.util.date.) ; Importar pacotes/namespace (import java.util.date) ; Multiplas classes importadas; (import (java.util Date Calendar) (java.text.dateformat)) ; Encadear chamadas a métodos. (. (. dkcr touppercase) tolowercase) ; ou simplifcando, tendo menos parênteses do que Java. (.. dkcr touppercase tolowercase) ; Passagem de parâmetros aos métodos (System/getProperty os.name ) ; JavaBean em forma de mapa (def date-map (bean (java.util.date.))) ; Obtendo os segundos e o tempo do mapa (:seconds date-map) (date-map :time) Dicas de performance Geralmente, as linguagens dinâmicas são mais lentas do que as estaticamente tipadas. No entanto, muitas dessas suportam algumas técnicas para otimização de performance. A linguagem Clojure suporta a ideia de dar dicas (hints) sobre os tipos para ajudar o compilador a compilar um código bem mais rápido, mas ao mesmo tempo seu código fica menos flexível. Para dar essas dicas ao compilador, você utiliza os metadados da linguagem, ou seja, dados sobre os dados. Para criar metadados, basta utilizar o caractere acento circunflexo. Esse metadado pode ser aplicado para informar os tipos, sejam eles primitivos, não- -primitivos e arrays. Em tipos primitivos, basta utilizar o acento circunflexo antes do nome: ^int, e para os tipos complexos a regra é a mesma (ex: ^String). Já os arrays seguem uma regra um pouco diferente: os mesmos são declarados como plurais dos tipos primitivos; logo, o metadado ^floats está informando ao compilador que espere um array de float. Para exemplificar e quantificar o uso das dicas de tipos, vamos construir um exemplo simples que se baseia em uma função que conta o número de caracteres de uma String. Iremos escrever duas funções, uma com e outra sem hint. Para testar, vamos utilizar cada uma das funções em uma lista de de itens, somar todas essas contagens e ao mesmo tempo marcar o tempo gasto. Depois de executar o código da Listagem 9, observe que a versão sem hint levou em média milissegundos, enquanto a versão com os hints levou em média apenas 365 milissegundos, uma diferença de mais de 100%. Lembre-se, fuja de ajustes de performance prematuros, deixe existir a real necessidade para só então realizar os ajustes necessários. / 24

7 Listagem 9. Funções e Benchmark. ; Funções (defn contar [valor] (.length valor)) (defn contar-com-hint [^String valor] (.length valor)) ; Benchmark (time (reduce + (map contar (repeat aeiou )))) (time (reduce + (map contar-com-hint (repeat aeiou )))) Ferramentas, Frameworks e afins Um dos fatores que pode mostrar o quanto uma linguagem está sendo usada, testada e difundida são as ferramentas e frameworks existentes para a mesma. A linguagem, apesar de bem nova e em evolução, já tem suporte em diversos IDEs bem como uma ampla gama de frameworks escritos em Clojure. Sempre que se fala em uma nova linguagem, a comunidade procura por IDEs para suportar a mesma, e para aqueles que desejam utilizar Clojure já há suporte em alguns ambientes. Para os que gostam do Netbeans, há um projeto paralelo chamado EnClojure (http://enclojure.org/). Para os amantes do Eclipse, há um plugin chamando Counter ClockWise (http:// code.google.com/p/counterclockwise/). E para aqueles que não deixam de utilizar o IntelliJ, este também já suporta a linguagem via plugin (http://plugins. intellij.net/plugin/?id=4050). Por fim, mesmo não sendo classificado como IDE por alguns, já há suporte amplo para Clojure nos editores de texto Emacs e vi. Para automação, resolução de dependências e outros, a linguagem conta com uma ótima ferramenta chamada Leiningen, ou apens lein (https://github. com/technomancy/leiningen). Com essa ferramenta você consegue criar um projeto esqueleto, rodar testes, empacotar, implantar seus jars, inclusive para um repositório on-line como o Clojars (http://clojars. org/), dentre outras tarefas. É bem comum ver projetos no github que utilizam o padrão de pastas e organização proposto pela ferramenta. Como não deveria faltar, há frameworks para testes também para Clojure. Um deles é o Midje, e a escolha do mesmo como exemplo principal se deu ao fato de seu amadurecimento, quantidade de ajuda disponível e constantes atualizações. De uma forma bem simples, o criador do framework resolveu tratar, dado a natureza da linguagem, os testes como fatos, logo, para testar se um mais um é dois, você pode escrever um fato. (fact (+ 1 1) => 2) Vale citar que o provedor de plataforma nas nuvens (PaaS) Heroku já tem suporte à implantação de projetos Clojure, o que faz seu alcance ainda mais amplo, indo de um simples entusiasta que deseja testar a linguagem a um start-up que deseja apostar nessa nova linguagem. O padrão de integração escolhido pelo Heroku foi os projetos gerenciados pelo lein. Considerações finais O intuito do artigo não é ser um guia completo, mas sim os primeiros passos e uma visão geral para que você se liberte um pouco do medo e comece a estudar e se aprofundar. Assuntos como sequences, namespace, macros, metadata, protocols, multimétodos, agents, refs, atoms e outros ficaram de fora por questões de escopo e complexidade. Aqueles que desejam ser mais eficientes e usar a linguagem de fato, devem dominar tais assuntos, bem como o estudo e uso mais apropriado e aprofundado das ferramentas e frameworks. Clojure oferece, entre outras coisas, alta reusabilidade, o alcance da JVM, acesso a todas as bibliotecas Java já existentes, despreocupação de locks e sincronização na criação de aplicativos multithread, uma comunidade forte e ferramentas e frameworks bem testados. Tudo isso faz de Clojure, no mínimo, uma linguagem a ser investigada. Links > > > > https://github.com/technomancy/leiningen > > https://github.com/marick/midje > > Livros > The Joy of Clojure, FOGUS, Michael e HOUSER, Chris; Ed. Manning > Programming Clojure, HALLOWAY, Stuart; Ed. Pragmatic Bookshelf /referências > Clojure in Action, RATHORE, Amit; Ed. Manning 25 \

Java Como Programar, 8/E

Java Como Programar, 8/E Capítulo 2 Introdução aos aplicativos Java Java Como Programar, 8/E (C) 2010 Pearson Education, Inc. Todos os 2.1 Introdução Programação de aplicativo Java. Utilize as ferramentas do JDK para compilar

Leia mais

Linguagens de programação

Linguagens de programação Prof. André Backes Linguagens de programação Linguagem de Máquina Computador entende apenas pulsos elétricos Presença ou não de pulso 1 ou 0 Tudo no computador deve ser descrito em termos de 1 s ou 0 s

Leia mais

CURSO DE PROGRAMAÇÃO EM JAVA

CURSO DE PROGRAMAÇÃO EM JAVA CURSO DE PROGRAMAÇÃO EM JAVA Introdução para Iniciantes Prof. M.Sc. Daniel Calife Índice 1 - A programação e a Linguagem Java. 1.1 1.2 1.3 1.4 Linguagens de Programação Java JDK IDE 2 - Criando o primeiro

Leia mais

Linguagens de. Aula 02. Profa Cristiane Koehler cristiane.koehler@canoas.ifrs.edu.br

Linguagens de. Aula 02. Profa Cristiane Koehler cristiane.koehler@canoas.ifrs.edu.br Linguagens de Programação III Aula 02 Profa Cristiane Koehler cristiane.koehler@canoas.ifrs.edu.br Linguagens de Programação Técnica de comunicação padronizada para enviar instruções a um computador. Assim

Leia mais

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

Introdução ao C# . Visão geral do.net Framework Introdução ao C# Microsoft.NET (comumente conhecido por.net Framework - em inglês: dotnet) é uma iniciativa da empresa Microsoft, que visa uma plataforma única para desenvolvimento e execução de sistemas

Leia mais

Conceitos de Linguagens de Programação

Conceitos de Linguagens de Programação Conceitos de Linguagens de Programação Aula 07 Nomes, Vinculações, Escopos e Tipos de Dados Edirlei Soares de Lima Introdução Linguagens de programação imperativas são abstrações

Leia mais

Algoritmos em Javascript

Algoritmos em Javascript Algoritmos em Javascript Sumário Algoritmos 1 O que é um programa? 1 Entrada e Saída de Dados 3 Programando 4 O que é necessário para programar 4 em JavaScript? Variáveis 5 Tipos de Variáveis 6 Arrays

Leia mais

Fundamentos de Programação. Turma CI-240-EST. Josiney de Souza. josineys@inf.ufpr.br

Fundamentos de Programação. Turma CI-240-EST. Josiney de Souza. josineys@inf.ufpr.br Fundamentos de Programação Turma CI-240-EST Josiney de Souza josineys@inf.ufpr.br Agenda do Dia Aula 2 (07/08/15) Introdução ao Python História Características Estrutura dos código-fonte Primeiros elementos

Leia mais

Introdução à Linguagem

Introdução à Linguagem Introdução à Linguagem Curso de Nivelamento do PPGMNE Janeiro / 2011 Juliano J. Scremin jjscremin@jjscremin.t5.com.br Um pouco de história Um pouco de história: Nascimento do Python Um pouco de história:

Leia mais

Javascript 101. Parte 2

Javascript 101. Parte 2 Javascript 101 Parte 2 Recapitulando O Javascript é uma linguagem de programação funcional Os nossos scripts são executados linha a linha à medida que são carregados. O código que está dentro de uma função

Leia mais

Notas da Aula 4 - Fundamentos de Sistemas Operacionais

Notas da Aula 4 - Fundamentos de Sistemas Operacionais Notas da Aula 4 - Fundamentos de Sistemas Operacionais 1. Threads Threads são linhas de execução dentro de um processo. Quando um processo é criado, ele tem uma única linha de execução, ou thread. Esta

Leia mais

Começando com Ruby on Rails @gibsongabriel

Começando com Ruby on Rails @gibsongabriel Começando com Ruby on Rails @gibsongabriel Yukiriho 'Matz' Matsumoto http://ruby-lang.org/pt/ Ruby é uma linguagem de programação interpretada, com tipagem forte e dinâmica, que tem como foco a simplicidade

Leia mais

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

Algoritmos e Estrutura de Dados. Introdução a Linguagem Python (Parte I) Prof. Tiago A. E. Ferreira Algoritmos e Estrutura de Dados Aula 1 Introdução a Linguagem Python (Parte I) Prof. Tiago A. E. Ferreira Linguagem a ser Utilizada? Nossa disciplina é de Algoritmos e Estrutura de Dados, e não de linguagem

Leia mais

NOVIDADES DO JAVA PARA PROGRAMADORES C

NOVIDADES DO JAVA PARA PROGRAMADORES C PROGRAMAÇÃO SERVIDOR EM SISTEMAS WEB NOVIDADES DO JAVA PARA PROGRAMADORES C Prof. Dr. Daniel Caetano 2012-1 Objetivos Apresentar o Conceito de Classes e Objetos Capacitar para a criação de objetos simples

Leia mais

Gerador Menu. AVISO: A biblioteca só funciona corretamente com as versões 2.6 ou superiores ou 3.0 ou superiores.

Gerador Menu. AVISO: A biblioteca só funciona corretamente com as versões 2.6 ou superiores ou 3.0 ou superiores. Gerador Menu 1.0 Sobre este pacote Sistema gerador de menu para prompt de comando. 1.1 Sobre AVISO: A biblioteca só funciona corretamente com as versões 2.6 ou superiores ou 3.0 ou superiores. Resumidamente,

Leia mais

Ruby. Conceitos básicos. Prof. Ms. Leonardo Botega. Diego Gabriel Pereira

Ruby. Conceitos básicos. Prof. Ms. Leonardo Botega. Diego Gabriel Pereira Ruby Conceitos básicos Prof. Ms. Leonardo Botega Diego Gabriel Pereira Quem somos nós Leonardo Botega Bacharel em Ciência da Computação UNIVEM Mestre em Ciência da Computação UFSCar Doutorando em Ciência

Leia mais

Minicurso de Python Aula 1. Raphael Lupchinski Marcelo Millani

Minicurso de Python Aula 1. Raphael Lupchinski Marcelo Millani Minicurso de Python Aula 1 Raphael Lupchinski Marcelo Millani Introdução Python é uma linguagem de programação poderosa e fácil de aprender Possui estruturas de dados eficientes e de alto nível, além de

Leia mais

Capítulo 1. Introdução. 1.1 Linguagens. OBJETIVOS DO CAPÍTULO Ao final deste capítulo você deverá ser capaz de:

Capítulo 1. Introdução. 1.1 Linguagens. OBJETIVOS DO CAPÍTULO Ao final deste capítulo você deverá ser capaz de: i Sumário 1 Introdução 1 1.1 Linguagens....................................... 1 1.2 O que é um Compilador?................................ 2 1.3 Processadores de Programas: Compiladores, Interpretadores

Leia mais

Programando em C# Orientado a Objetos. By: Maromo

Programando em C# Orientado a Objetos. By: Maromo Programando em C# Orientado a Objetos By: Maromo Agenda Módulo 1 Plataforma.Net. Linguagem de Programação C#. Tipos primitivos, comandos de controle. Exercícios de Fixação. Introdução O modelo de programação

Leia mais

Orientação a Objetos

Orientação a Objetos 1. Domínio e Aplicação Orientação a Objetos Um domínio é composto pelas entidades, informações e processos relacionados a um determinado contexto. Uma aplicação pode ser desenvolvida para automatizar ou

Leia mais

Criando um script simples

Criando um script simples Criando um script simples As ferramentas de script Diferente de muitas linguagens de programação, você não precisará de quaisquer softwares especiais para criar scripts de JavaScript. A primeira coisa

Leia mais

e à Linguagem de Programação Python

e à Linguagem de Programação Python Introdução a Algoritmos, Computação Algébrica e à Linguagem de Programação Python Curso de Números Inteiros e Criptografia Prof. Luis Menasché Schechter Departamento de Ciência da Computação UFRJ Agosto

Leia mais

Estrutura da linguagem de programação C Prof. Tiago Eugenio de Melo tiago@comunidadesol.org

Estrutura da linguagem de programação C Prof. Tiago Eugenio de Melo tiago@comunidadesol.org Estrutura da linguagem de programação C Prof. Tiago Eugenio de Melo tiago@comunidadesol.org Breve Histórico A linguagem de programação C foi criada na década de 70, por Dennis Ritchie, que a implementou,

Leia mais

Universidade da Beira Interior Cursos: Matemática /Informática e Ensino da Informática

Universidade da Beira Interior Cursos: Matemática /Informática e Ensino da Informática Folha 1-1 Introdução à Linguagem de Programação JAVA 1 Usando o editor do ambiente de desenvolvimento JBUILDER pretende-se construir e executar o programa abaixo. class Primeiro { public static void main(string[]

Leia mais

EMENTA DO CURSO. Tópicos:

EMENTA DO CURSO. Tópicos: EMENTA DO CURSO O Curso Preparatório para a Certificação Oracle Certified Professional, Java SE 6 Programmer (Java Básico) será dividido em 2 módulos e deverá ter os seguintes objetivos e conter os seguintes

Leia mais

Organização de programas em Java. Vanessa Braganholo vanessa@ic.uff.br

Organização de programas em Java. Vanessa Braganholo vanessa@ic.uff.br Organização de programas em Java Vanessa Braganholo vanessa@ic.uff.br Vamos programar em Java! Mas... } Como um programa é organizado? } Quais são os tipos de dados disponíveis? } Como variáveis podem

Leia mais

Programação Elementar de Computadores Jurandy Soares

Programação Elementar de Computadores Jurandy Soares Programação Elementar de Computadores Jurandy Soares Básico de Computadores Computador: dispositivos físicos + programas Dispositivos físicos: hardware Programas: as instruções que dizem aos dispositivos

Leia mais

ARRAYS. Um array é um OBJETO que referencia (aponta) mais de um objeto ou armazena mais de um dado primitivo.

ARRAYS. Um array é um OBJETO que referencia (aponta) mais de um objeto ou armazena mais de um dado primitivo. Cursos: Análise, Ciência da Computação e Sistemas de Informação Programação I - Prof. Aníbal Notas de aula 8 ARRAYS Introdução Até agora, utilizamos variáveis individuais. Significa que uma variável objeto

Leia mais

Bruno Jurkovski Lucas Fialho Zawacki. Site do curso: www.inf.ufrgs.br/pet/cursos/ruby

Bruno Jurkovski Lucas Fialho Zawacki. Site do curso: www.inf.ufrgs.br/pet/cursos/ruby Bruno Jurkovski Lucas Fialho Zawacki Site do curso: www.inf.ufrgs.br/pet/cursos/ruby Por que Ruby? Sintaxe limpa e intuitiva: Por que Ruby? Fortemente orientada à objetos Note que não temos os tipos primitivos,

Leia mais

Linguagem de Programação Visual

Linguagem de Programação Visual Linguagem de Programação Visual Unidade 1 Ambiente de desenvolvimento Curso Técnico em Informática SUMÁRIO INTRODUÇÃO... 3 SOBRE O JAVA... 3 AMBIENTE DE DESENVOLVIMENTO... 5 RECURSOS DA FERRAMENTA NETBEANS...

Leia mais

Aula 2. Objetivos Conceitos; Instalação do Text Pad; Entendendo o código java do AloMundo1 Codificação do AloMundo2,AloMundo3 e AloMundo4.

Aula 2. Objetivos Conceitos; Instalação do Text Pad; Entendendo o código java do AloMundo1 Codificação do AloMundo2,AloMundo3 e AloMundo4. Aula 2 Objetivos Conceitos; Instalação do Text Pad; Entendendo o código java do AloMundo1 Codificação do AloMundo2,AloMundo3 e AloMundo4. Conceitos O software controla os computadores(freqüentemente conhecido

Leia mais

FBV - Linguagem de Programação II. Um pouco sobre Java

FBV - Linguagem de Programação II. Um pouco sobre Java FBV - Linguagem de Programação II Um pouco sobre Java História 1992: um grupo de engenheiros da Sun Microsystems desenvolve uma linguagem para pequenos dispositivos, batizada de Oak Desenvolvida com base

Leia mais

Definições. Parte 02. Java Conceitos e. Desenvolvimento de Programação Orientada a Objetos. Prof. Pedro Neto

Definições. Parte 02. Java Conceitos e. Desenvolvimento de Programação Orientada a Objetos. Prof. Pedro Neto Java Conceitos e Definições Parte 02 Prof. Pedro Neto Aracaju Sergipe - 2011 Conteúdo 2 O que é Java i. Java ii. Máquina Virtual iii. Java lento? Hotspot e JIT iv. Versões do Java e a confusão do Java2

Leia mais

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

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 5 Conclusão 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 permitir que scripts Lua instanciem e usem

Leia mais

INTRODUÇÃO ÀS LINGUAGENS DE PROGRAMAÇÃO

INTRODUÇÃO ÀS LINGUAGENS DE PROGRAMAÇÃO Capítulo 1 INTRODUÇÃO ÀS LINGUAGENS DE PROGRAMAÇÃO 1.1 Histórico de Linguagens de Programação Para um computador executar uma dada tarefa é necessário que se informe a ele, de uma maneira clara, como ele

Leia mais

Curso: Ciência da Computação Disciplina: Construção de Compiladores Período: 2010-1 Prof. Dr. Raimundo Moura

Curso: Ciência da Computação Disciplina: Construção de Compiladores Período: 2010-1 Prof. Dr. Raimundo Moura UFPI CCN DIE Curso: Ciência da Computação Disciplina: Construção de Compiladores Período: 2010-1 Prof. Dr. Raimundo Moura O projeto Desenvolver um compilador de um subconjunto básico da linguagem PORTUGOL.

Leia mais

AULA 1: PARADIGMAS DE PROGRAMAÇÃO

AULA 1: PARADIGMAS DE PROGRAMAÇÃO 1 AULA 1: PARADIGMAS DE PROGRAMAÇÃO Curso: Ciência da Computação Profª.: Luciana Balieiro Cosme Ementa 2 Programação Imperativa. Programação Paralela e Concorrente. Programação Lógica. Programação Funcional.

Leia mais

Primeiro programa em Java (compilação e execução)

Primeiro programa em Java (compilação e execução) Universidade Federal do ABC Disciplina: Linguagens de Programação (BC-0501) Assunto: Primeiro programa em Java (compilação e execução) Primeiro programa em Java (compilação e execução) Introdução Este

Leia mais

LINGUAGEM C UMA INTRODUÇÃO

LINGUAGEM C UMA INTRODUÇÃO LINGUAGEM C UMA INTRODUÇÃO AULA 1 Conceitos muito básicos 1 Introdução O C nasceu na década de 70. Seu inventor, Dennis Ritchie, implementou-o pela primeira vez usando um DEC PDP-11 rodando o sistema operacional

Leia mais

OOP - Java. Artur Duque Rossi Mestrado em Modelagem Computacional Universidade Federal de Juiz de Fora

OOP - Java. Artur Duque Rossi Mestrado em Modelagem Computacional Universidade Federal de Juiz de Fora OOP - Java Artur Duque Rossi Mestrado em Modelagem Computacional Universidade Federal de Juiz de Fora 1 Sumário Java Aviso! História do Java Programação Orientada à Objetos Os quatro pilares da OOP Abstração

Leia mais

Linguagem e Técnicas de Programação I Programação estruturada e fundamentos da linguagem C

Linguagem e Técnicas de Programação I Programação estruturada e fundamentos da linguagem C Linguagem e Técnicas de Programação I Programação estruturada e fundamentos da linguagem C Prof. MSc. Hugo Souza Material desenvolvido por: Profa. Ameliara Freire Continuando as aulas sobre os fundamentos

Leia mais

Introdução ao IDE Netbeans (Programação Java)

Introdução ao IDE Netbeans (Programação Java) Universidade Federal do ABC (UFABC) Disciplina: Processamento da Informação (BC-0505) Assunto: Java e Netbeans Introdução ao IDE Netbeans (Programação Java) Conteúdo 1. Introdução... 1 1.1. Programas necessários...

Leia mais

Desenvolvido por: Juarez A. Muylaert Filho - jamf@estacio.br Andréa T. Medeiros - andrea@iprj.uerj.br Adriana S. Spallanzani - spallanzani@uol.com.

Desenvolvido por: Juarez A. Muylaert Filho - jamf@estacio.br Andréa T. Medeiros - andrea@iprj.uerj.br Adriana S. Spallanzani - spallanzani@uol.com. UAL é uma linguagem interpretada para descrição de algoritmos em Português. Tem por objetivo auxiliar o aprendizado do aluno iniciante em programação através da execução e visualização das etapas de um

Leia mais

Aula 4 Pseudocódigo Tipos de Dados, Expressões e Variáveis

Aula 4 Pseudocódigo Tipos de Dados, Expressões e Variáveis 1. TIPOS DE DADOS Todo o trabalho realizado por um computador é baseado na manipulação das informações contidas em sua memória. Estas informações podem ser classificadas em dois tipos: As instruções, que

Leia mais

Introdução a Java. Hélder Nunes

Introdução a Java. Hélder Nunes Introdução a Java Hélder Nunes 2 Exercício de Fixação Os 4 elementos básicos da OO são os objetos, as classes, os atributos e os métodos. A orientação a objetos consiste em considerar os sistemas computacionais

Leia mais

Vetores. Vetores. Figura 1 Exemplo de vetor com 10 elementos

Vetores. Vetores. Figura 1 Exemplo de vetor com 10 elementos Vetores Nos capítulos anteriores estudamos as opções disponíveis na linguagem C para representar: Números inteiros em diversos intervalos. Números fracionários com várias alternativas de precisão e magnitude.

Leia mais

JSP - ORIENTADO A OBJETOS

JSP - ORIENTADO A OBJETOS JSP Orientação a Objetos... 2 CLASSE:... 2 MÉTODOS:... 2 Método de Retorno... 2 Método de Execução... 2 Tipos de Dados... 3 Boolean... 3 Float... 3 Integer... 4 String... 4 Array... 4 Primeira:... 4 Segunda:...

Leia mais

Manual do Cantor. Alexander Rieder Tradução: Marcus Gama

Manual do Cantor. Alexander Rieder Tradução: Marcus Gama Alexander Rieder Tradução: Marcus Gama 2 Conteúdo 1 Introdução 5 2 Usando o Cantor 6 2.1 Recursos do Cantor..................................... 6 2.2 As infraestruturas do Cantor...............................

Leia mais

AULA 02. 1. Uma linguagem de programação orientada a objetos

AULA 02. 1. Uma linguagem de programação orientada a objetos AULA 02 TECNOLOGIA JAVA O nome "Java" é usado para referir-se a 1. Uma linguagem de programação orientada a objetos 2. Uma coleção de APIs (classes, componentes, frameworks) para o desenvolvimento de aplicações

Leia mais

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE ALAGOAS CURSO TECNICO EM INFORMATICA DISCIPLINA:

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE ALAGOAS CURSO TECNICO EM INFORMATICA DISCIPLINA: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE ALAGOAS CURSO TECNICO EM INFORMATICA DISCIPLINA: PROGRAMAÇÃO ORIENTADA A OBJETOS PROFESSOR: REINALDO GOMES ASSUNTO: REVISÃO DA INTRODUÇÃO A ORIENTAÇÃO

Leia mais

Dominando Action Script 3

Dominando Action Script 3 Dominando Action Script 3 Segunda Edição (2014) Daniel Schmitz Esse livro está à venda em http://leanpub.com/dominandoactionscript3 Essa versão foi publicada em 2014-05-02 This is a Leanpub book. Leanpub

Leia mais

Softwares de Sistemas e de Aplicação

Softwares de Sistemas e de Aplicação Fundamentos dos Sistemas de Informação Softwares de Sistemas e de Aplicação Profª. Esp. Milena Resende - milenaresende@fimes.edu.br Visão Geral de Software O que é um software? Qual a função do software?

Leia mais

Ruby. Simplicidade e produtividade

Ruby. Simplicidade e produtividade Ruby Simplicidade e produtividade Ruby é... Uma linguagem de tipagem dinâmica e forte, com gerenciamento de memória automático, open source com foco na simplicidade e na produtividade. Tem uma sintaxe

Leia mais

JavaScript 2.0X 1.0 3.0X 1.1 4.0 4.05 1.2 4.06 4.61 1.3 5.0 1.4 6.0 1.5

JavaScript 2.0X 1.0 3.0X 1.1 4.0 4.05 1.2 4.06 4.61 1.3 5.0 1.4 6.0 1.5 JavaScript Diego R. Frank, Leonardo Seibt FIT Faculdades de Informática de Taquara Fundação Educacional Encosta Inferior do Nordeste Av. Oscar Martins Rangel, 4500 Taquara RS Brasil difrank@terra.com.br,

Leia mais

LINGUAGENS E PARADIGMAS DE PROGRAMAÇÃO. Ciência da Computação IFSC Lages. Prof. Wilson Castello Branco Neto

LINGUAGENS E PARADIGMAS DE PROGRAMAÇÃO. Ciência da Computação IFSC Lages. Prof. Wilson Castello Branco Neto LINGUAGENS E PARADIGMAS DE PROGRAMAÇÃO Ciência da Computação IFSC Lages. Prof. Wilson Castello Branco Neto Conceitos de Linguagens de Roteiro: Apresentação do plano de ensino; Apresentação do plano de

Leia mais

Desenvolvimento OO com Java 3 Estruturas de Controle e Programação Básica

Desenvolvimento OO com Java 3 Estruturas de Controle e Programação Básica Desenvolvimento OO com Java 3 Estruturas de Controle e Programação Básica Vítor E. Silva Souza (vitor.souza@ufes.br) http://www.inf.ufes.br/~vitorsouza Departamento de Informática Centro Tecnológico Universidade

Leia mais

AMBIENTE DE PROGRAMAÇÃO PYTHON

AMBIENTE DE PROGRAMAÇÃO PYTHON Computadores e Programação Engª Biomédica Departamento de Física Faculdade de Ciências e Tecnologia da Universidade de Coimbra Ano Lectivo 2003/2004 FICHA 1 AMBIENTE DE PROGRAMAÇÃO PYTHON 1.1. Objectivos

Leia mais

Introdução à Programação

Introdução à Programação Introdução à Programação Introdução a Linguagem C Construções Básicas Programa em C #include int main ( ) { Palavras Reservadas } float celsius ; float farenheit ; celsius = 30; farenheit = 9.0/5

Leia mais

Curso de Linguagem C

Curso de Linguagem C Curso de Linguagem C 1 Aula 1 - INTRODUÇÃO...4 AULA 2 - Primeiros Passos...5 O C é "Case Sensitive"...5 Dois Primeiros Programas...6 Introdução às Funções...7 Introdução Básica às Entradas e Saídas...

Leia mais

PHP() é uma linguagem de integração de servidor que permite a criação de paginas dinâmicas. Como todas

PHP() é uma linguagem de integração de servidor que permite a criação de paginas dinâmicas. Como todas O que é PHP? Acrônimo de PHP: Hipertext Language PostProcessor Inicialmente escrita para o desenvolvimento de aplicações Web Facilidade para iniciantes e recursos poderosos para programadores profissionais

Leia mais

Java - Introdução. Professor: Vilson Heck Junior. vilson.junior@ifsc.edu.br

Java - Introdução. Professor: Vilson Heck Junior. vilson.junior@ifsc.edu.br Java - Introdução Professor: Vilson Heck Junior vilson.junior@ifsc.edu.br Agenda O que é Java? Sun / Oracle. IDE - NetBeans. Linguagem Java; Maquina Virtual; Atividade Prática. Identificando Elementos

Leia mais

Algoritmos com VisuAlg

Algoritmos com VisuAlg Algoritmos com VisuAlg Prof Gerson Volney Lagemann Depto Eng de Produção e Sistemas UDESC - CCT Algoritmos com VisuAlg Introdução A linguagem VisuAlg é simples, seu objetivo é disponibilizar um ambiente

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Modelo Cliente-Servidor: Introdução aos tipos de servidores e clientes Prof. MSc. Hugo Souza Iniciando o módulo 03 da primeira unidade, iremos abordar sobre o Modelo Cliente-Servidor

Leia mais

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

Framework.NET, Microsoft Visual C# 2010 Express e Elementos da Linguagem C# Linguagem de Programação 3 Framework.NET, Microsoft Visual C# 2010 Express e Elementos da Linguagem C# Prof. Mauro Lopes 1-31 35 Objetivos Nesta aula iremos apresentar a tecnologia.net, o ambiente de desenvolvimento

Leia mais

Para testar seu primeiro código utilizando PHP, abra um editor de texto (bloco de notas no Windows) e digite o código abaixo:

Para testar seu primeiro código utilizando PHP, abra um editor de texto (bloco de notas no Windows) e digite o código abaixo: Disciplina: Tópicos Especiais em TI PHP Este material foi produzido com base nos livros e documentos citados abaixo, que possuem direitos autorais sobre o conteúdo. Favor adquiri-los para dar continuidade

Leia mais

Construção de Compiladores. Construção de Compiladores. Motivação. Motivação. Contexto Histórico. Classificações: Gerações 09/03/2010

Construção de Compiladores. Construção de Compiladores. Motivação. Motivação. Contexto Histórico. Classificações: Gerações 09/03/2010 Construção de Compiladores Prof. Raimundo Santos Moura (http://www.ufpi.br/rsm) Construção de Compiladores Livro-Texto: AHO, Alfred V.; ULLMAN, Jeffrey D.; SETHI, R. Compiladores: princípios, técnicas

Leia mais

Instituto Federal do Sertão-PE. Curso de PHP. Professor: Felipe Correia

Instituto Federal do Sertão-PE. Curso de PHP. Professor: Felipe Correia Instituto Federal do Sertão-PE Curso de PHP Professor: Felipe Correia Conteúdo Parte I Parte II Introdução Funções de strings Instalação Constantes Sintaxe Operadores Variáveis if else elseif Echo/Print

Leia mais

Metodologia de Desenvolvimento de Sistemas

Metodologia de Desenvolvimento de Sistemas Metodologia de Desenvolvimento de Sistemas Aula 1 Ementa Fases do Ciclo de Vida do Desenvolvimento de Software, apresentando como os métodos, ferramentas e procedimentos da engenharia de software, podem

Leia mais

Configuração dos Controles Remotos do KDE. Michael Zanetti Tradução: Marcus Gama

Configuração dos Controles Remotos do KDE. Michael Zanetti Tradução: Marcus Gama Configuração dos Controles Remotos do KDE Michael Zanetti Tradução: Marcus Gama 2 Conteúdo 1 Introdução 5 1.1 Requisitos.......................................... 5 2 Uso 6 2.1 Controles remotos e modos................................

Leia mais

Especificação do Trabalho Prático

Especificação do Trabalho Prático Especificação do Trabalho Prático O trabalho prático da disciplina consiste em desenvolver um programa utilizando a linguagem de programação C. A seguir, encontram-se a descrição do problema, a forma de

Leia mais

Prof. Esp. Adriano Carvalho

Prof. Esp. Adriano Carvalho Prof. Esp. Adriano Carvalho O que é um Programa? Um arquivo contendo uma sequência de comandos em uma linguagem de programação especifica Esses comandosrespeitam regras de como serem escritos e quais

Leia mais

Introdução. à Linguagem JAVA. Prof. Dr. Jesus, Edison O. Instituto de Matemática e Computação. Laboratório de Visão Computacional

Introdução. à Linguagem JAVA. Prof. Dr. Jesus, Edison O. Instituto de Matemática e Computação. Laboratório de Visão Computacional Introdução à Linguagem JAVA Prof. Dr. Jesus, Edison O. Instituto de Matemática e Computação Laboratório de Visão Computacional Vantagens do Java Independência de plataforma; Sintaxe semelhante às linguagens

Leia mais

Processos (Threads,Virtualização e Migração de Código)

Processos (Threads,Virtualização e Migração de Código) Processos (Threads,Virtualização e Migração de Código) Roteiro Processos Threads Virtualização Migração de Código O que é um processo?! Processos são programas em execução. Processo Processo Processo tem

Leia mais

Tutorial de Matlab Francesco Franco

Tutorial de Matlab Francesco Franco Tutorial de Matlab Francesco Franco Matlab é um pacote de software que facilita a inserção de matrizes e vetores, além de facilitar a manipulação deles. A interface segue uma linguagem que é projetada

Leia mais

Projeto de Software Orientado a Objeto

Projeto de Software Orientado a Objeto Projeto de Software Orientado a Objeto Ciclo de Vida de Produto de Software (PLC) Analisando um problema e modelando uma solução Prof. Gilberto B. Oliveira Estágios do Ciclo de Vida de Produto de Software

Leia mais

Modelagem OO com UML. Vítor E. Silva Souza (vitorsouza@inf.ufes.br) http://www.inf.ufes.br/ ~ vitorsouza

Modelagem OO com UML. Vítor E. Silva Souza (vitorsouza@inf.ufes.br) http://www.inf.ufes.br/ ~ vitorsouza Modelagem OO com UML Vítor E. Silva Souza (vitorsouza@inf.ufes.br) http://www.inf.ufes.br/ ~ vitorsouza Departamento de Informática Centro Tecnológico Universidade Federal do Espírito Santo Modelos Maneira

Leia mais

4 Criação de macros e introdução à linguagem VBA

4 Criação de macros e introdução à linguagem VBA 4 Criação de macros e introdução à linguagem VBA Vinicius A. de Souza va.vinicius@gmail.com São José dos Campos, 2011. 1 Sumário Tópicos em Microsoft Excel 2007 Introdução à criação de macros...3 Gravação

Leia mais

Módulo 5 JPATransaction Camadas Turma Turma TurmaBC .business @BusinessController TurmaBC TurmaBC TurmaBC

Módulo 5 JPATransaction Camadas Turma Turma TurmaBC .business @BusinessController TurmaBC TurmaBC TurmaBC Módulo 5 No módulo anterior adaptamos nosso projeto para persistir as informações no banco de dados utilizando as facilidades da extensão demoiselle-jpa. Experimentamos o controle transacional do Framework

Leia mais

Prof. Esp. Adriano Carvalho

Prof. Esp. Adriano Carvalho Prof. Esp. Adriano Carvalho Um arquivo contendo uma sequência de comandos em uma linguagem de programação especifica Esses comandosrespeitam regras de como serem escritos e quais são as palavras que podem

Leia mais

TRABALHO DE PROGRAMAÇÃO FUNCIONAL LINGUAGEM DE PROGRAMAÇÃO I

TRABALHO DE PROGRAMAÇÃO FUNCIONAL LINGUAGEM DE PROGRAMAÇÃO I TRABALHO DE PROGRAMAÇÃO FUNCIONAL LINGUAGEM DE PROGRAMAÇÃO I Raimundo Alan F. Moreira, Antônio Victor C. Passos, Otavio R. Neto, José Almeida Júnior. Bacharelado em Ciências da Computação Centro de Ciências

Leia mais

ESQUEMA AULA PRÁTICA 1 Familiarização com o Ambiente de Desenvolvimento NetBeans Introdução à Linguagem de Programação JAVA

ESQUEMA AULA PRÁTICA 1 Familiarização com o Ambiente de Desenvolvimento NetBeans Introdução à Linguagem de Programação JAVA P. Fazendeiro & P. Prata POO FP1/1 ESQUEMA AULA PRÁTICA 1 Familiarização com o Ambiente de Desenvolvimento NetBeans Introdução à Linguagem de Programação JAVA 0 Iniciar o ambiente de desenvolvimento integrado

Leia mais

CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES

CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES 3.1 - IDENTIFICADORES Os objetos que usamos no nosso algoritmo são uma representação simbólica de um valor de dado. Assim, quando executamos a seguinte instrução:

Leia mais

Danilo Borges da Silva daniloborges_@hotmail.com

Danilo Borges da Silva daniloborges_@hotmail.com Danilo Borges da Silva daniloborges_@hotmail.com Simples o suficiente para um curso introdutório Muitos recursos Orientação a Objetos Escalável (módulos, classes, controle de exceções) Biblioteca embutida

Leia mais

COMPILADORES E INTERPRETADORES

COMPILADORES E INTERPRETADORES Aula 16 Arquitetura de Computadores 12/11/2007 Universidade do Contestado UnC/Mafra Curso Sistemas de Informação Prof. Carlos Guerber COMPILADORES E INTERPRETADORES Um compilador transforma o código fonte

Leia mais

Slide 1 Deitel/Deitel, 8e. Java Como programar Copyright 2010 Pearson Education

Slide 1 Deitel/Deitel, 8e. Java Como programar Copyright 2010 Pearson Education Java Como Programar, 8/E Slide 1 Slide 2 Slide 3 Métodos genéricos e classes genéricas (e interfaces) permitem especificar, com uma única declaração de método, um conjunto de métodos relacionados ou, com

Leia mais

O melhor do PHP. Por que PHP? CAPÍTULO 1. Uma Pequena História do PHP

O melhor do PHP. Por que PHP? CAPÍTULO 1. Uma Pequena História do PHP CAPÍTULO 1 O melhor do PHP Este livro levou bastante tempo para ser feito. Venho usando agora o PHP por muitos anos e o meu amor por ele aumenta cada vez mais por sua abordagem simplista, sua flexibilidade

Leia mais

Professora Isabel Harb Manssour Paradigmas de Linguagens I 1 1. INTRODUÇÃO

Professora Isabel Harb Manssour Paradigmas de Linguagens I 1 1. INTRODUÇÃO Paradigmas de Linguagens I 1 1. INTRODUÇÃO A primeira Linguagem de Programação (LP) de alto nível foi projetada durante a década de 50. Desde então, LP têm sido uma área de estudo fascinante e produtiva.

Leia mais

ESQUEMA AULA PRÁTICA 1 Familiarização com o Ambiente de Desenvolvimento Eclipse Introdução à Linguagem de Programação JAVA

ESQUEMA AULA PRÁTICA 1 Familiarização com o Ambiente de Desenvolvimento Eclipse Introdução à Linguagem de Programação JAVA P. Fazendeiro & P. Prata POO FP1/1 ESQUEMA AULA PRÁTICA 1 Familiarização com o Ambiente de Desenvolvimento Eclipse Introdução à Linguagem de Programação JAVA 0 Inicie o ambiente de desenvolvimento integrado

Leia mais

APOSTILA PHP PARTE 1

APOSTILA PHP PARTE 1 APOSTILA PHP PARTE 1 1. Introdução O que é PHP? PHP significa: PHP Hypertext Preprocessor. Realmente, o produto foi originalmente chamado de Personal Home Page Tools ; mas como se expandiu em escopo, um

Leia mais

Italo Valcy

Italo Valcy <italo@dcc.ufba.br> Programação C Módulo 01 Introdução à linguagem C Italo Valcy www.ieee.org/ufba Italo Valcy Programação em C Licença de uso e distribuição Todo o material aqui disponível pode, posteriormente,

Leia mais

Dadas a base e a altura de um triangulo, determinar sua área.

Dadas a base e a altura de um triangulo, determinar sua área. Disciplina Lógica de Programação Visual Ana Rita Dutra dos Santos Especialista em Novas Tecnologias aplicadas a Educação Mestranda em Informática aplicada a Educação ana.santos@qi.edu.br Conceitos Preliminares

Leia mais

UMA ABORDAGEM COMPARATIVA ENTRE AS LINGUAGENS DE PROGRAMAÇÃO JAVA E C#

UMA ABORDAGEM COMPARATIVA ENTRE AS LINGUAGENS DE PROGRAMAÇÃO JAVA E C# UMA ABORDAGEM COMPARATIVA ENTRE AS LINGUAGENS DE PROGRAMAÇÃO JAVA E C# Robson Bartelli¹, Wyllian Fressatti¹. ¹Universidade Paranaense (Unipar) Paranavaí PR Brasil robson_lpbartelli@yahoo.com.br,wyllian@unipar.br

Leia mais

ENG1000 Introdução à Engenharia

ENG1000 Introdução à Engenharia ENG1000 Introdução à Engenharia Aula 04 Introdução a Linguagem Lua Edirlei Soares de Lima Linguagem Lua Lua é uma linguagem de programação projetada para dar suporte à programação

Leia mais

Paradigmas de Linguagens de Programação. Aspectos Preliminares

Paradigmas de Linguagens de Programação. Aspectos Preliminares Aspectos Preliminares Cristiano Lehrer Motivação (1/6) Aumento da capacidade de expressar idéias: Difícil conceituar estruturas quando não se pode descreve-las. Programadores são limitados pelas linguagens.

Leia mais

Programação de Computadores

Programação de Computadores Programação de Computadores Curso Engenharia Civil Modalidade Superior Professora Michelle Nery Agenda Introdução a Programação Algoritmos VS Programa 2 Algoritmos Um algoritmo pode ser definido como uma

Leia mais

2 echo "PHP e outros.";

2 echo PHP e outros.; PHP (Hypertext Preprocessor) Antes de qualquer coisa, precisamos entender o que é o PHP: O PHP(Hypertext Preprocessor) é uma linguagem interpretada gratuita, usada originalmente apenas para o desenvolvimento

Leia mais

Programação Orientada a Objetos em java. Polimorfismo

Programação Orientada a Objetos em java. Polimorfismo Programação Orientada a Objetos em java Polimorfismo Polimorfismo Uma característica muito importante em sistemas orientados a objetos Termo proveniente do grego, e significa muitas formas Em POO, significa

Leia mais

LP II Estrutura de Dados. Introdução e Linguagem C. Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br

LP II Estrutura de Dados. Introdução e Linguagem C. Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br LP II Estrutura de Dados Introdução e Linguagem C Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br Resumo da aula Considerações Gerais Introdução a Linguagem C Variáveis e C Tipos de

Leia mais

Introdução a Linguagem

Introdução a Linguagem Introdução a Linguagem Prof. Edwar Saliba Júnior Fevereiro de 2011 Unidade 03 Introdução a Linguagem Java 1 Conteúdo Máquina Virtual (JVM) Histórico de Java Case Sensitive Tipos Primitivos Tipo String

Leia mais