Translate

Mostrando postagens com marcador livros. Mostrar todas as postagens
Mostrando postagens com marcador livros. Mostrar todas as postagens

10 de novembro de 2009

Introdução à C. da Computação com Java e Orientação a Objetos

O livro evoluiu da experiência dos autores no ensino da disciplina de Introdução à Ciência da Computação ministrado no Instituto de Matemática e Estatística da Universidade de São Paulo. Suas características principais são um estilo informal e o uso, desde a primeira aula, de conceitos de Orientação a Objetos.

Este livro já foi adotado como livro-texto da disciplina introdutória de Computação para alunos do Bacharelado em Ciência da Computação, Bacharelado em Matemática, Licenciatura em Matemática, Bacharelado em Sistemas de Informação, Bacharelado em Física e Licenciatura em Física da USP.

Para baixar o livro clique em IntroCCcomJavaeOO.pdf

Alguns exemplos de código-fonte em Java podem ser encontrados em nossa pasta de Exemplos.
Professores: os arquivos para a produção do Teatro de Objetos estão disponíveis neste site.

Referência:
http://introjava.incubadora.fapesp.br/portal

28 de outubro de 2009

Python a linguagem acadêmica americana

Como educador, pesquisador e autor de livros, regozija-me ver completo este trabalho. Python é uma linguagem de programação divertida e extremamente fácil de usar que tem ganho forte popularidade nestes últimos poucos anos. Desenvolvida dez anos atrás por Guido van Rossun, a sintaxe simples do Python e seu sentido geral são grandemente derivados do ABC, uma linguagem didática que foi desenvolvida nos anos 80.

Entretanto, Python também foi criado para solucionar problemas reais e tomou emprestado uma grande quantidade de características de linguagens de programação como C++, Java, Modula-3 e Scheme. Por causa disso, uma das mais notáveis características do Python é o grande apelo que tem junto a desenvolvedores profissionais de software, cientistas, pesquisadores, artistas e educadores.

A Despeito deste apelo do Python junto às mais variadas comunidades, você pode ainda estar pensando por que Python? Ou por que ensinar programação com Python? Responder à estas perguntas não é uma tarefa fácil, especialmente se a opinião pública está do lado de alternativas mais masoquistas como C++ e Java. Entretanto, eu acho que a resposta mais direta é que programar com Python é um bocado divertido e mais produtivo.
Quando ministro cursos de ciências da computação, o que desejo é cobrir conceitos importantes além de tornar a matéria interessante e os alunos participativos. Infelizmente, existe uma tendência entre os cursos introdutórios de programação a focar atenção demais em abstrações matemáticas, e de frustração entre os alunos com problemas enfadonhos e inoportunos relacionados a detalhes de sintaxe em baixo nível, compilação e a imposição de regras que aparentemente só um expert pode compreender (enforcement of seemingly arcane rules XXX). Embora alguma abstração e formalismo sejam importantes para engenheiros profissionais de software e estudantes que planejam continuar seus estudos em ciências da computação, escolher tal abordagem em um curso introdutório faz da ciência da computação algo entediante. Quando ministro um curso, não desejo uma sala cheia de alunos sem inspiração. Em vez disso, preferiria muito mais vê-los tentando solucionar problemas interessantes explorando idéias diferentes, trilhando caminhos não convencionais, quebrando regras, e aprendendo a partir de seus erros. Fazendo assim, não pretendo desperdiçar metade de um semestre tentando explicar problemas obscuros de sintaxe, mensagens ininteligíveis de compiladores ou as várias centenas de maneiras pelas quais um programa pode gerar uma falha geral de proteção.

Uma das razões pelas quais eu gosto de Python é que ele oferece um equilíbrio realmente bom entre o lado prático e o lado conceitual. Sendo Python interpretado, os iniciantes podem pegar a linguagem e começar a fazer coisas legais quase imediatamente sem se perderem em problemas de compilação e ligação (linking XXX). Além disso, Python vem com uma grande biblioteca de módulos que podem ser utilizados para fazer todo tipo de tarefa, desde a programação para a web até gráficos. Com tal enfoque prático temos uma bela maneira de alcançar o engajamento dos alunos e permitir que eles finalizem projetos significativos. Entretanto, Python também pode servir de excelente embasamento para a introdução de conceitos importantes em ciência da computação. Já que Python suporta plenamente procedimentos (procedures) e classes, os alunos podem ser gradualmente introduzidos a tópicos como abstração procedural, estruturas de dados, e programação orientada a objetos, todos aplicáveis em cursos posteriores de Java ou C++. Python ainda toma emprestado certas características de linguagens de programação funcionais e pode ser usado para introduzir conceitos cujos detalhes poderiam ser aprofundados em cursos de Scheme e Lisp.

Lendo o prefácio de Jeffrey, fiquei impressionado com seu comentário de que Python o fez ver um maior nível de sucesso e um menor nível de frustração, o que lhe permitiu progredir mais depressa com resultados melhores. Embora estes comentários refiram-se aos seus cursos introdutórios, eu às vezes uso Python exatamente pelas mesmas razões em cursos avançados de pós-graduação em ciência da computação na Universidade de Chicago. Nestes cursos, enfrento constantemente a assustadora tarefa de cobrir muitos tópicos difíceis em um rapidíssimo trimestre (quarter XXX) de nove semanas. Embora me seja possível inflingir um bocado de dor e sofrimento pelo uso de uma linguagem como C++, tenho percebido muitas vezes que este enfoque é contraproducente especialmente quando o curso é sobre um tópico não relacionado apenas com programar. Acho que usar Python me permite um melhor foco no tópico em questão, enquanto permite que os alunos completem projetos substanciais em classe.

Embora Python seja ainda uma linguagem jovem e em evolução, acredito que tem um futuro brilhante em educação. Este livro é um passo importante nessa direção.

David Beazley
Universidade de Chicago
Autor de Python Essencial Reference

 Texto extraído da apresentação do livro:
Como pensar como um Cientista de Computação usando Python

24 de outubro de 2009

Python

Python é uma linguagem de altíssimo nível, orientada a objetos, de tipagem dinâmica e forte, interpretada e interativa. Foi criada em 1990 por Guido van Rossum, no Instituto Nacional de Pesquisa para Matemática e Ciência da Computação da Holanda (CWI) e tinha como foco original usuários como físicos e engenheiros. O Python foi concebido a partir de outra linguagem existente na época, chamada ABC.

O Python possui uma sintaxe clara e concisa, que favorece a legibilidade do código fonte, tornando a linguagem mais produtiva.
A linguagem inclui diversas estruturas de alto nível (listas, tuplas, dicionários, data / hora, complexos e outras) e uma vasta coleção de módulos prontos para uso, além de frameworks de terceiros que podem ser adicionados. Também possui recursos encontrados em outras linguagens modernas, tais como: geradores, introspecção, persistência, metaclasses e unidades de teste. Multiparadigma, a linguagem suporta programação modular e funcional, além da orientação a objetos. Mesmo os tipos básicos no Python são objetos.
A linguagem é interpretada através de bytecode pela máquina virtual Python, tornando o código portável. Com isso é possível compilar aplicações em uma plataforma e rodar em outras ou executar direto do código fonte.

Python é um software de código aberto (com licença compatível com a General Public License (GPL), porém menos restritiva, permitindo que o Python seja incorporados em produtos proprietários) e a especificação da linguagem é mantida pela Python Software Foundation2 (PSF).
Python é muito utilizado como linguagem script em vários softwares, permitindo
automatizar tarefas e adicionar novas funcionalidades, entre eles: BrOffice.org,
PostgreSQL, Blender e GIMP. Também é possível integrar o Python a outras linguagens, como a Linguagem C. Em termos gerais, o Python apresenta muitas similaridades com outras linguagens dinâmicas, como Perl e Ruby.

Exemplo:
# Exemplo de programa em Python
# Uma lista de instrumentos musicais
    instrumentos = ['Baixo', 'Bateria', 'Guitarra']
# Para cada nome na lista de instrumentos
   for instrumento in instrumentos:
 # mostre o nome do instrumento musical
   print instrumento
Saída:
Baixo
Bateria
Guitarra
Bytecode
O código fonte é traduzido pelo interpretador para o formato bytecode, que é
multiplataforma e pode ser executado e distribuído sem fonte original.
Por padrão, o interpretador compila os fontes e armazena o bytecode em disco, para que a próxima vez que o executar, não precise compilar novamente o programa, reduzindo o tempo de carga na execução. Se os fontes forem alterados, o interpretador se encarregará de regerar o bytecode automaticamente, mesmo utilizando o shell interativo.
Quando um programa ou um módulo é evocado, o interpretador realiza a análise do código, converte para símbolos, compila (se não houver bytecode atualizado em disco) e executa na máquina virtual Python.

O bytecode é armazenado em arquivos com extensão “.pyc” (bytecode normal) ou “.pyo” (bytecode otimizado).
O bytecode também pode ser empacotado junto com o interpretador em um executável, para facilitar a distribuição da aplicação.

Modo interativo
O modo interativo é uma característica diferencial da linguagem, pois é possível testar e modificar o código de um programa antes da inclusão do código nos programas, por exemplo.
Exemplo do Python sendo usado de forma interativa (com o shell PyCrust4): 

Referências:
http://www.python.org/
Livro: Python para desenvolvedores (formato PDF)
Computação Gráfica em Python (formato PDF)
http://www.python.org/download/

18 de setembro de 2009

Padrões de projeto - Design Pattern

Design Pattern é uma forma padrão de organizar classes e objetos, nomes para soluções que você já modelou, uma forma de compartilhar conhecimentos sobre POO, soluções de POO para problemas que incidem em diversos cenários de desenvolvimento, etc.
Quando adotamos o uso de Design Patterns seu código fica mais organizado, aumenta a qualidade, menor complexidade, aumenta a comunicação dentro da equipe de desenvolvimento, etc.
A definição de um pattern pode conter:
            O nome: identifica o padrão;
            O problema: explica o problema e o seu contexto;
          A solução: descreve a maneira de melhorar o desenvolvimento, relacionamentos, responsabilidades, colaborações, de maneira ser implementada em diferentes situações;
     • As consequências: os resultados de aplicarmos o padrão;

Família de Patterns GoF
GoF (Quatro criadores) é uma familia de Design Patters, são 23 padrões, veja alguns:
            Criação: Abstract Factory, Builder, Factory Method, Prototype, Singleton
            Estrutura: Adapter, Bridge, Composite, Decorator, Facade, Flyweight, Proxy
          Comportamento: Chain Of Response, Command Interpreter, Mediator, Memento, Observer, State, Strategy, Template Method, Visitor.

Familia de Patterns J2EE
            • J2EE: Busness Delegate, Composite Entity, Composite View, Data Access Object, Fast Lane Reader, Front Controller, Intercepting Filter, Model-View-Controller, Service Locater, Session Facade, Transfer Object, Value List Handler, View Helper
Você pode consultar o catalogo de Patterns do J2EE no endereço abaixo.

Patterns e Certificação
As seguintes certificações Sun exigem conhecimentos de Patterns:
            • Sun Certified Web Component Developer
            • Sun Certified Enterprise Architect;

Para quem pretende tirar uma destas certificações é necessário estudar todos os patterns, aplicar na prática os principais GoF e conhecer a teoria básica;
Alguns Patterns
Service Locator
            Definição: simplifica o acesso a recursos J2EE em um aplicativo centralizando lookups com JNDI em classes específicas de localização de serviços.
            • Evita que sua solução tenha alto acoplamento com JNDI Naming Service;
            • Tomar cuidado com Service Locates e cluster!
            • Utilize sempre que possível ENC.
            • Exemplo no JAREF(J2EE Architecture, Research and Education Framework);

Data Access Object
            Definição: centraliza o serviço de persistência de objetos em um pequeno conjunto de classes, evitando por exemplo que o código SQL se espalhe pelo código da solução.
            • Mesmo utilizando framework de persistência, utilize Data Access Object
            • Exemplo no JAREF(J2EE Architecture, Research and Education Framework);

Model View Control
            Definição: divide o aplicativo em dados, comportamento e apresentação.
            • Aplicando o MVC podemos reaproveitar o mesmo dado para múltiplas visualizações;
            • Podemos reaproveitar o comportamento(eventos) da solução;
            • É um pattern de arquitetura, criado há muito tempo. Pode ser aplicado em qualquer linguagem, mais facilmente com OOP.
            • Struts, WebWork, Spring, PicoContainer são exemplos de frameworks J2EE.
            • Link comparativo de frameworks MVC: https://equinox.dev.java.net/framework-comparison/WebFrameworks.pdf

Front Controller
            Definição: centraliza requests em um ponto central na solução.
            • No lugar de um JSP submit para ouro JSP todos os JSP’s “subments” para um Servlet Controller que será responsável por processar as requisições.
            • Exemplo no JAREF(J2EE Architecture, Research and Education Framework);

Command / Action
            Definição: encapsula uma requisição ao software em um objeto.
            • Transforma métodos em classes
            • Facilita o desenvolvimento de undo/redo
            • Aumenta a granularidade do código, permitindo o reuso
            • Action do Struts é o principal exemplo de implementação deste pattern

Factory
            Definição: instancia classes conforme demanda, recebendo parâmetros indicativos do objeto a ser instanciado.
            • É comum o Controller “inchar”, pois nele incide todas as solicitações externas. Como uma maneira de resolver esse tipo de crescimento desordenado, é sugerido que o Command seja criado sob demanda, e deixa por conta de uma Factory a instanciação das classes Command necessárias.

Dispatcher to views
            Definição: gerencia a saída de informações para a interface desejada pelo cliente. Desatrela a forma de se enxergar os dados para múltiplas visões.
            • É uma maneira de se implementar M. V. C. na sua essência, como o Smalltalk pregava.

Intercepting Filter
            Definição: forma para executar pré e pós processamento em request da solução.
            • Um Servlet Filter é um exemplo de implementação de um Intercepting Filter para interceptar requests no Web Container;

View Helper
            Definição: simplifica a “redenrização” de objetivos em views com formatação.
            • Uma Custom Tag pode representar uma View Helper;
            • Uma simples classe convencional com métodos estáticos também;
            • Exemplo no JAREF(J2EE Architecture, Research and Education Framework);

Business Delegate
            Definição: em aplicações distribuídas, o acesso remoto/local a EJB’s via JNDI Naming Service e tratamento de erros podem se tornar complexo à medida que o projeto cresce.
            Solução: criar uma classe intermediaria para acessar os EJB’s que contempla as regras de nomes de componentes para lookups, propriedades do servidor J2EE, tratamento de exceptions, etc;
Conclusão
            • Os patterns (padrões) previnem erros comuns evitando problemas recorrentes;
        • Utilizando patterns você cria soluções padronizadas, facilitando a troca de programadores;
            • Você pode criar seus próprios patterns;

4 de setembro de 2009

Apostilas, livros, material didático

No Ebah encontramos muitos arquivos compartilhados pelo meio acadêmico, e podemos também facilmente compartilhar não só arquivos, como também fóruns, links, comunidades, etc.
No Scribd podemos não só compartilhar arquivos como também visualizá-los no próprio site.

O Google acadêmico é um indexador de artigos científicos.

O google books é um indexador de livros e apostilas.


PDF Search é uma ferramenta de busca por apostilas e livros em pdf.

A Wikipédia é a maior enciclopédia do mundo, onde podemos editar e acrescentar artigos, organizá-los em livros e salva-lo em pdf, e agora podemos também encomendar a impressão como livro comum.

O Wikilivros é uma Wiki onde podemos editar e acrescentar livros sobre qualquer coisa.
A Wikiversidade é uma Universidade virtual onde podemos editar e acrescentar cursos.

Universidades que disponibilizam material didático:
UNICAMP - Universidade de Campinas
UNISUL - Universidade Grande Florianólopis.

Contribua, acrescente um comentário com seu link.

3 de agosto de 2009

Livro referência Java como programar Deitel

Ficha Técnica:
Título: Java: Como Programar - 6ª Edição - BR
Autor: Paul J. Deitel
Estilo: Programação
Lançamento: 2005
Idioma: Português
Páginas: 1152

Resumo:
A melhor introdução à programação orientada a objetos com a nova JavaTM 2 Standard Edition Development Kit (JDK), versão 5.0, JDBCT, Servlets e JSPT, baseada na mais didática apresentação de exemplos de código a abordagem Live-Code (código ativo), e escrita por uma das maiores autoridades no assunto! A JavaT é a mais popular linguagem de programação orientada a objetos, com quatro milhões de desenvolvedores! Esta nova edição do livro-texto Java mais utilizado do mundo traz uma abordagem baseada na introdução a classes e objetos, logo no início do livro. Java: Como programar inclui cobertura abrangente de programação orientada a objetos em Java e vários estudos de caso integrados importantes: a classe Time , a classe Employee , a classe GradeBook , o estudo de caso opcional sobre um sistema de caixa eletrônico baseado em projeto orientado a objetos e à UML , o estudo de caso de imagens gráficas e GUI , o aplicativo de troca instantânea de mensagens DeitelMessenger e duas aplicações Web de múltiplas camadas, baseadas em banco de dados Online Survey e Guest Book. Outros recursos didáticos:
Mais de 20.000 linhas de código.
Apresentação totalmente colorida (inclusive na sintaxe do código) para mostrar os programas e suas saídas exatamente como aparecem na tela de um computador.
Estudos de caso em várias seções e capítulos.
Desenvolvimento de banco de dados e de aplicativos Web com JDBC, Servlets e JSP.
Como recurso adicional, Java: Como programar traz ainda o site de apoio, conteúdo para os professores: transparências em PowerPoint (em português), manual de soluções e manual do professor (em inglês); para o estudante: código-fonte dos exemplos do livro (em inglês ).

Ver uma prévia do livro
Comprar este livro

5 de julho de 2009

Livro PHP programando com orientação a objetos

PHP (um acrónimo recursivo para "PHP: Hypertext Preprocessor") é uma linguagem de programação de computadores interpretada, livre e muito utilizada para gerar conteúdo dinâmico na World Wide Web.

A linguagem surgiu por volta de 1994, como um pacote de programas CGI criados por Rasmus Lerdof, com o nome Personal Home Page Tools, para substituir um conjunto de scripts Perl que ele usava no desenvolvimento de sua página pessoal. Em 1997 foi lançado o novo pacote da linguagem com o nome de PHP/FI, trazendo a ferramenta Forms Interpreter, um interpretador de comandos SQL.

Para saber mais leia este artigo na wikipédia.

PHP: Programando com Orientação a Objetos 2ª Ed. 2009 - autor: Pablo Dall'Oglio, ed. NOVATEC, ver a prévia do livro

Principais tópicos abordados no livro:
  • Introdução ao PHP, arrays, strings e arquivos
  • Orientação a objetos, conceitos e implementações
  • XML, Web Services, tratamento de exceções
  • Técnicas de mapeamento objeto-relacional
  • Criação de classes para apresentação de HTML
  • Criação de classes para formulários e listagens
  • Criação de classes para manipulação de SQL
  • Criação de uma aplicação orientada a objetos
Apostilas da Unicamp do mesmo autor:

PHP5 e Web Services 1026 Kb Genérico 16-02-2007 07:46 Visualizar Download

PHP5 Orientação a Objetos e Design Patterns 694 Kb Genérico 16-02-2007 07:47 Visualizar Download

PHP5: Orientação a Objetos e Design Patterns 831 Kb Genérico 16-02-2007 07:46 Visualizar Download

IDE editor usado em Windows:
Netbeans , PHP Designer , EasyPHP 2.0b1 , DBTools

IDE editor usado em Linux:
Netbeans


Revista PHP