SlideShare une entreprise Scribd logo
1  sur  44
Técnicas de Implementação
Wagner Zaparoli
wzaparoli@gmail.com
Agenda
Linguagens de Programação 2
Fundamentos
Linguagens de Programação 3
Linguagens de Programação 4
Duas entidades
Linguagens de Programação 5
O obstáculo
Tecnologia da
Informação
Linguagens de Programação 6
A solução
Servidores
Infra-estrutura
Componentes
Metodologias
Linguagens de
Programação
Itens de
QualidadeTécnicas
Banco de
Dados
Design
Patterns
Ferramentas
Case
Linguagens de Programação 7
Conceitos
Linguagem de programação é um conjunto de regras sintáticas e
semânticas usadas para definir um programa de computador
Programa de computador é a formalização de um algoritmo em
qualquer linguagem capaz de ser transformada em instruções
que serão executadas por um computador gerando os
resultados esperados
Algoritmo é a descrição de um conjunto de ações que
obedecidas, resultam uma sucessão finita de passos para atingir
um objetivo
Linguagens de Programação 8
A comunicação
Linguagem
humana
Algoritmo Código
Fonte
Código
Intermediário
Linguagem
Máquina
Linguagens de Programação 9
Técnicas Programação
Programação Linear: proposta para resolver problemas na forma de
maximização ou minimização de funções lineares, sujeitas a um conjunto de
restrições que podem ser expressos sob a forma de inequações ou equações
lineares
Programação Modular: paradigma de programação no qual o desenvolvimento
das rotinas de programação é feito através de módulos, que são interligados
entre si através de uma interface comum
Programação Estruturada: forma de programação de computadores que
preconiza que todos os programas possíveis podem ser reduzidos a apenas três
estruturas: sequência, decisão e iteração
Programação Orientada a Objetos: paradigma de análise, projeto e
programação de sistemas de software baseado na composição e interação entre
diversas unidades de software chamadas de objetos
Linguagens de Programação 10
Classificação Linguagens
ACM – Association for Computing Machinery
Paradigma
Estrutura de Tipos
Grau de Abstração
Geração
Linguagens de Programação 11
Classificação - ACM
Fundada em 1947 como a primeira sociedade cientifica e educacional
dedicada a computação, é composta por grupos denominados capítulos
(chapters), grupos especiais e universidades e faculdades ao redor do mundo
Linguagens de Programação 12
Classificação - Paradigma
Refere-se a visão que o programador possui sobre a estruturação e execução do
programa. A programação OO pode ser abstraída como uma coleção de objetos que
interagem entre si. Já a programação funcional pode ser abstraída como uma sequência
de funções executadas de forma empilhada
Linguagens de Programação 13
Classificação – Estrutura de Tipos
• Fracamente tipada - tipo da variável muda dinamicamente conforme a
situação.
• Fortemente tipada - tipo da variável, uma vez atribuído, se mantém o
mesmo até ser descartada da memória.
• Dinamicamente tipada - tipo da variável é definido em tempo de execução.
• Estaticamente tipada - tipo da variável é definido em tempo de compilação.
Linguagens de Programação 14
Classificação – Grau de Abstração
• Linguagem de programação de baixo nível - cujos simbolos são uma
representação direta do código de máquina que será gerado.
• Linguagem de programação de médio nível - possui símbolos que podem
ser convertidos diretamente para código de máquina (goto, expressões
matemáticas, atribuição de variáveis), mas também símbolos complexos que
são convertidos por um compilador
• Linguagem de programação de alto nível - composta de símbolos mais
complexos, inteligível pelo ser humano e não-executável diretamente pela
máquina, no nível da especificação de algoritmos
Linguagens de Programação 15
Classificação - Geração
• Primeira Geração – conhecida como linguagem de máquina (ou binária), que usa apenas 0 (zero)
e 1 (um) para programar softwares.
• Segunda Geração – linguagem de montagem, que é uma notação legível por humanos para o
código de máquina que uma arquitetura de computador específica usa.
• Terceira Geração – linguagem de programação projetada para ser facilmente entendida pelo ser
humano, incluindo coisas como variáveis com nomes.
• Quarta Geração – linguagens não-procedimentais que descreve o que quer que seja feito
(derivativas do SQL, por exemplo).
• Quinta Geração – linguagem declarativa que limita-se a fornecer uma descrição do problema que
se pretende computar, usando a base de dados, as regras relacionais e o mecanismo de
unificação para produzir a solução.
Aplicação
Linguagens de Programação 16
Sistema
Linguagens de Programação 17
Aplicativo
Software
Utilitário
Software de Sistema
Responsabilidades
• Gerenciar memória.
• Controlar a comunicação entre
componentes de HW.
• Ler e interpretar entradas do
teclado.
• Executar tarefas básicas de um
sistema: copiar, mover, renomear,
etc.,
Define o padrão de comportamento do
hardware, tornando-o utilizável
Tipos
• Sistema Operacional: alocador
de recursos que permite ao
computador trabalhar de forma
eficiente e segura.
• Tradutor: responsáveis pela
transformação de uma linguagem
de programação em linguagem de
máquina.
Linguagens de Programação 18
Software Aplicativo
Tipos
• Uso geral: são programas que
podem ser utilizados em vários
tipos de aplicações, como editores
de texto, gráficos, planilhas,
gerenciadores de banco de dados,
etc.
• Uso específico: se destinam
exclusivamente a um único tipo de
aplicação, como folha de
pagamento, crediário, imposto de
renda, cadastro, contas a pagar e
receber, etc.
Voltados para a solução de problemas
relacionados ao usuário final
Linguagens de Programação 19
Software Utilitário
Fornecem o complemento necessário para
uma ferramenta básica de gerenciamento do
SO
Exemplos
• Backup.
• Compactador de disco.
• Desfragmentador de disco.
• Anti-vírus.
Linguagens de Programação 20
Engenharia
Linguagens de Programação 21
Linguagens de Programação 22
Características das Linguagens*
Facilidade Projeto  Código
Eficiência do Compilador
Portabilidade do Código
Disponibilidade de ferramentas
Manutenabilidade
* Pressman, 2002
Linguagens de Programação 23
Características das Linguagens
Linguagem
(implementa)
• Construções estruturadas;
• Estruturas de dados sofisticadas;
• E/S especializadas;
• Construção orientadas a objeto.
Linguagens de Programação 24
Características das Linguagens
Quando um requisito não funcional de
desempenho for crítico é importante pensar na
utilização de compiladores “otimizantes”
Linguagens de Programação 25
Características das Linguagens
Portabilidade
• Código-fonte pode ser transportado
de processador e compilador;
• Código-fonte permanece imutável
quando o ambiente muda;
• Código-fonte pode ser integrado a
diferentes pacotes de software;
Linguagens de Programação 26
Características das Linguagens
• Ferramentas de depuração;
• Ferramentas para controle do código fonte;
• Ferramentas de engenharia reversa;
• Ferramentas de testes.
Buscar um ambiente de desenvolvimento de
software avançado, que inclua ferramentas
convencionais e automatizadas
Linguagens de Programação 27
Características das Linguagens
O quão fácil o código-fonte é entendido e
modificável
Vislumbrar características de
autodocumentação da linguagem, bem como
um processo que a permita
Implementação
Linguagens de Programação 28
Lógica – O algoritmo
Narrativa
Fluxograma
Pseudocódigo
Linguagens de Programação 29
Lógica – As expressões
Expressões Aritméticas
Expressões Lógicas
Expressões Relacionais
Linguagens de Programação 30
Lógica – As estruturas
Sequência
Repetição
Condicional
Linguagens de Programação 31
Dados – Tipologia
Numérico
Lógico
Literal
Linguagens de Programação 32
Dados – Armazenamento
Estruturas Voláteis (memória)
Estruturas Persistentes (arquivos)
Linguagens de Programação 33
Documentação
Linguagens de Programação 34
Linguagens de Programação 35
Identificadores significativos para nomes (rotinas, variáveis,
constantes, etc.).
Interna - Código
Comentários:
• No início do bloco – título e objetivos;
• No corpo do bloco – declarações de variáveis, comandos
complexos, interfaces, integrações;
• No final do bloco – autor, revisor, histórico de manutenção.
Uso de endentação.
Linguagens de Programação 36
Externa – Especificação Técnica
Rotina/funções/stored procedure/Serviços:
• Identificação;
• Parâmetros de entrada/saída;
• Pré-condições;
• Exceções;
• Lógica.
Tela/Relatório :
• Identificação do objeto;
• Finalidade;
• Modo de Operação;
• Nome do Campo;
• Descrição do Campo;
• Tipo do Campo;
• Tamanho do Campo;
• Quebras;
• Totalizadores.
• Objetivos;
• Escopo;
• Restrições;
• Armazenamento;
• Versionamento.
Tecnologia
Linguagens de Programação 37
Apresentação Aplicação Dados
Linguagens de Programação 38
Tecnologia – Camadas
Apresentação Aplicação Dados
Linguagens de Programação 39
Tecnologia – Camadas
Tecnologia – Camadas
Apresentação Aplicação Dados
Linguagens de Programação 40
Tecnologia – Popularidade*
Linguagens de Programação 41
Position
Nov 2010
Position
Nov 2009
Programming
Language
Ratings
Nov 2010
Delta
Nov 2009
1 1 Java 18.509% +0.14%
2 2 C 16.717% -0.60%
3 4 C++ 9.497% -0.50%
4 3 PHP 7.813% -2.36%
5 6 C# 5.706% +0.36%
6 7 Python 5.679% +1.01%
7 5 (Visual) Basic 5.470% -2.70%
8 13 Objective-C 3.191% +2.30%
9 8 Perl 2.472% -1.02%
10 10 Ruby 1.907% -0.50%
11 9 JavaScript 1.664% -1.25%
12 11 Delphi 1.638% -0.49%
13 17 Lisp 1.087% +0.47%
14 23 Transact-SQL 0.793% +0.38%
15 15 Pascal 0.784% +0.13%
* TIOBE Nov/2010
Tecnologia – Popularidade*
Linguagens de Programação 42
* TIOBE Nov/2010
Programming
Language
Position
Nov 2010
Position
Nov 2005
Position
Nov 1995
Position
Nov 1985
Java 1 1 - -
C 2 2 1 1
C++ 3 3 2 8
PHP 4 4 - -
C# 5 7 - -
Python 6 8 10 -
(Visual) Basic 7 5 3 4
Objective-C 8 42 - -
Perl 9 6 5 -
Ruby 10 24 - -
Lisp 13 14 12 2
Ada 16 17 6 3
Sugestões Bibliográficas
• Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides. Design Patterns: Elements of
Reusable Object-Oriented Software. 1 ed. Estados Unidos da América: Addison-Wesley, 1995.
• Craig Larman. Applying UML and Patterns: An Introduction to Object-Oriented Analysis and
Design and Iterative Development. 1 ed. Estados Unidos da América: Prentice Hall, 2004.
• Fowler, Martin. Refactoring: Improving the Design of Existing Code. Massachusetts: Addison
Wesley, 2006.
• Meyer, B. Object-Oriented Software Construction. New Jersey: Prentice Hall, 1988.
• Pressman, R. S. Engenharia de Software. 5. ed. São Paulo: Makron Books, 2002.
• Kosanski, N., Woods, E.. Software Systems Architecture: working with stakeholders using view
points and perspectives. New Jersey: Addison-Wesley, 2005.
• Manzano, José Augusto N. G., Algoritmos – Lógica para Desenvolvimento de Programas – São
Paulo, Ed. Érica, 1999.
• Xavier, Gley Fabiano Cardoso. Lógica de Programação - Editora SENAC-SP, 2001.
• Saliba, W. Luiz Caran, Técnicas de Programação – Uma abordagem Estruturada – São Paulo,
Ed. Makron Books, 1992.
Linguagens de Programação 43
Técnicas de Implementação
Wagner Zaparoli
wzaparoli@gmail.com

Contenu connexe

Tendances

Linguagens de programação 03-12-09
Linguagens de programação   03-12-09Linguagens de programação   03-12-09
Linguagens de programação 03-12-09essa
 
Int. sistemas de informação iii
Int. sistemas de informação iiiInt. sistemas de informação iii
Int. sistemas de informação iiiRay Fran Pires
 
Linguagens de Programação
Linguagens de ProgramaçãoLinguagens de Programação
Linguagens de ProgramaçãoBeDMK
 
Plp aula-01-apresentação
Plp aula-01-apresentaçãoPlp aula-01-apresentação
Plp aula-01-apresentaçãoJosé Meirelles
 
Linguagens de programação
Linguagens de programaçãoLinguagens de programação
Linguagens de programaçãoessa
 
Critérios de avaliação de linguagens
Critérios de avaliação de linguagensCritérios de avaliação de linguagens
Critérios de avaliação de linguagensPaulo Muniz
 
Introdução a Linguagem de Programação
Introdução a Linguagem de ProgramaçãoIntrodução a Linguagem de Programação
Introdução a Linguagem de ProgramaçãoJessica Ribeiro
 
Conceitos Iniciais de Linguagens de Programação
Conceitos Iniciais de Linguagens de ProgramaçãoConceitos Iniciais de Linguagens de Programação
Conceitos Iniciais de Linguagens de ProgramaçãoSidney Roberto
 
Paradigmas de Linguagens de Programação - Classificações
Paradigmas de Linguagens de Programação - ClassificaçõesParadigmas de Linguagens de Programação - Classificações
Paradigmas de Linguagens de Programação - ClassificaçõesAdriano Teixeira de Souza
 
IES GF - Linguagem de Programação Estruturada - Parte 1
IES GF - Linguagem de Programação Estruturada - Parte 1IES GF - Linguagem de Programação Estruturada - Parte 1
IES GF - Linguagem de Programação Estruturada - Parte 1Ramon Mayor Martins
 
Programação 1
Programação 1Programação 1
Programação 1essa
 
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...Adriano Teixeira de Souza
 
Aula 3 compiladores e interpretadores
Aula 3   compiladores e interpretadoresAula 3   compiladores e interpretadores
Aula 3 compiladores e interpretadoresLCCIMETRO
 
Fundamentos da linguagem c
Fundamentos da linguagem cFundamentos da linguagem c
Fundamentos da linguagem cMarcia Santana
 
Linguagens de Programação
Linguagens de ProgramaçãoLinguagens de Programação
Linguagens de Programação12anogolega
 
Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.Valmon Gaudencio
 

Tendances (20)

Linguagens de programação 03-12-09
Linguagens de programação   03-12-09Linguagens de programação   03-12-09
Linguagens de programação 03-12-09
 
Int. sistemas de informação iii
Int. sistemas de informação iiiInt. sistemas de informação iii
Int. sistemas de informação iii
 
Linguagens de Programação
Linguagens de ProgramaçãoLinguagens de Programação
Linguagens de Programação
 
Plp aula-01-apresentação
Plp aula-01-apresentaçãoPlp aula-01-apresentação
Plp aula-01-apresentação
 
Linguagens de programação
Linguagens de programaçãoLinguagens de programação
Linguagens de programação
 
Critérios de avaliação de linguagens
Critérios de avaliação de linguagensCritérios de avaliação de linguagens
Critérios de avaliação de linguagens
 
Introdução a Linguagem de Programação
Introdução a Linguagem de ProgramaçãoIntrodução a Linguagem de Programação
Introdução a Linguagem de Programação
 
Paradigmas de Linguagem
Paradigmas de LinguagemParadigmas de Linguagem
Paradigmas de Linguagem
 
Conceitos Iniciais de Linguagens de Programação
Conceitos Iniciais de Linguagens de ProgramaçãoConceitos Iniciais de Linguagens de Programação
Conceitos Iniciais de Linguagens de Programação
 
Paradigmas de Linguagens de Programação - Classificações
Paradigmas de Linguagens de Programação - ClassificaçõesParadigmas de Linguagens de Programação - Classificações
Paradigmas de Linguagens de Programação - Classificações
 
IES GF - Linguagem de Programação Estruturada - Parte 1
IES GF - Linguagem de Programação Estruturada - Parte 1IES GF - Linguagem de Programação Estruturada - Parte 1
IES GF - Linguagem de Programação Estruturada - Parte 1
 
Programação 1
Programação 1Programação 1
Programação 1
 
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...
 
Compiladores
CompiladoresCompiladores
Compiladores
 
Aula 3 compiladores e interpretadores
Aula 3   compiladores e interpretadoresAula 3   compiladores e interpretadores
Aula 3 compiladores e interpretadores
 
Paradigmas de programação
Paradigmas de programaçãoParadigmas de programação
Paradigmas de programação
 
Fundamentos da linguagem c
Fundamentos da linguagem cFundamentos da linguagem c
Fundamentos da linguagem c
 
1.1.paradigmas
1.1.paradigmas1.1.paradigmas
1.1.paradigmas
 
Linguagens de Programação
Linguagens de ProgramaçãoLinguagens de Programação
Linguagens de Programação
 
Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.
 

En vedette

Cryptovirology - Basics
Cryptovirology - BasicsCryptovirology - Basics
Cryptovirology - BasicsReda Boucid
 
Guc3ada nc2b0-1-introduccic3b3n-al-mundo-moderno1
Guc3ada nc2b0-1-introduccic3b3n-al-mundo-moderno1Guc3ada nc2b0-1-introduccic3b3n-al-mundo-moderno1
Guc3ada nc2b0-1-introduccic3b3n-al-mundo-moderno1Diego Zamora
 
How To Make Colour Work for your Business - Short
How To Make Colour Work for your Business - ShortHow To Make Colour Work for your Business - Short
How To Make Colour Work for your Business - Short'Rebecca Randall'
 
Curaduría y compartición de contenidos
Curaduría y compartición de contenidosCuraduría y compartición de contenidos
Curaduría y compartición de contenidosjputzlorenzi
 
Cultivating Learning Communities
Cultivating Learning CommunitiesCultivating Learning Communities
Cultivating Learning CommunitiesDavid Koenig
 
Grolier Educational products
Grolier Educational productsGrolier Educational products
Grolier Educational productsDhamodharan
 
Marker assisted selection (2)
Marker assisted selection (2)Marker assisted selection (2)
Marker assisted selection (2)Shreya Lodh
 
Motivisanje zaposlenih trening obuka unapredjenje motivacije radnika
Motivisanje zaposlenih trening obuka unapredjenje motivacije radnikaMotivisanje zaposlenih trening obuka unapredjenje motivacije radnika
Motivisanje zaposlenih trening obuka unapredjenje motivacije radnikaMiodrag Kostic, CMC
 
ELAN REV : Forum 2008 - Infarctus du Myocarde
ELAN REV : Forum 2008 - Infarctus du MyocardeELAN REV : Forum 2008 - Infarctus du Myocarde
ELAN REV : Forum 2008 - Infarctus du MyocardeELAN REV
 

En vedette (20)

27 Ferrandez
27 Ferrandez27 Ferrandez
27 Ferrandez
 
Cryptovirology - Basics
Cryptovirology - BasicsCryptovirology - Basics
Cryptovirology - Basics
 
Guc3ada nc2b0-1-introduccic3b3n-al-mundo-moderno1
Guc3ada nc2b0-1-introduccic3b3n-al-mundo-moderno1Guc3ada nc2b0-1-introduccic3b3n-al-mundo-moderno1
Guc3ada nc2b0-1-introduccic3b3n-al-mundo-moderno1
 
Residential
ResidentialResidential
Residential
 
Saravanan Jayaraman
Saravanan JayaramanSaravanan Jayaraman
Saravanan Jayaraman
 
How To Make Colour Work for your Business - Short
How To Make Colour Work for your Business - ShortHow To Make Colour Work for your Business - Short
How To Make Colour Work for your Business - Short
 
Unit 3 meiosis
Unit 3 meiosisUnit 3 meiosis
Unit 3 meiosis
 
Curaduría y compartición de contenidos
Curaduría y compartición de contenidosCuraduría y compartición de contenidos
Curaduría y compartición de contenidos
 
June 6
June 6June 6
June 6
 
P2P mod. 2
P2P  mod. 2P2P  mod. 2
P2P mod. 2
 
Compariacion autores jorge
Compariacion autores jorgeCompariacion autores jorge
Compariacion autores jorge
 
Mulheres artistas no século xix
Mulheres artistas no século xixMulheres artistas no século xix
Mulheres artistas no século xix
 
El arte no cierra por vacaciones
El arte no cierra por vacacionesEl arte no cierra por vacaciones
El arte no cierra por vacaciones
 
Cultivating Learning Communities
Cultivating Learning CommunitiesCultivating Learning Communities
Cultivating Learning Communities
 
Grolier Educational products
Grolier Educational productsGrolier Educational products
Grolier Educational products
 
2 reconstruction (15 18 feb)
2 reconstruction (15 18 feb)2 reconstruction (15 18 feb)
2 reconstruction (15 18 feb)
 
Marker assisted selection (2)
Marker assisted selection (2)Marker assisted selection (2)
Marker assisted selection (2)
 
SCoT and RAPD
SCoT and RAPDSCoT and RAPD
SCoT and RAPD
 
Motivisanje zaposlenih trening obuka unapredjenje motivacije radnika
Motivisanje zaposlenih trening obuka unapredjenje motivacije radnikaMotivisanje zaposlenih trening obuka unapredjenje motivacije radnika
Motivisanje zaposlenih trening obuka unapredjenje motivacije radnika
 
ELAN REV : Forum 2008 - Infarctus du Myocarde
ELAN REV : Forum 2008 - Infarctus du MyocardeELAN REV : Forum 2008 - Infarctus du Myocarde
ELAN REV : Forum 2008 - Infarctus du Myocarde
 

Similaire à Técnicas de Implementação de Linguagens de Programação

Noções Básicas do Software dos Computadores Digitais
Noções Básicas do Software dos Computadores DigitaisNoções Básicas do Software dos Computadores Digitais
Noções Básicas do Software dos Computadores DigitaisHenry Raúl González Brito
 
Aula 02 informática aplicada - sistemas operacionais
Aula 02  informática aplicada - sistemas operacionaisAula 02  informática aplicada - sistemas operacionais
Aula 02 informática aplicada - sistemas operacionaisRobson Ferreira
 
Linguagens de programação 03-12-09
Linguagens de programação   03-12-09Linguagens de programação   03-12-09
Linguagens de programação 03-12-09essa
 
Linguagen..
Linguagen..Linguagen..
Linguagen..essa
 
DotNet Framework e Orientação a Objetos 1 - Introdução
DotNet Framework e Orientação a Objetos 1 - IntroduçãoDotNet Framework e Orientação a Objetos 1 - Introdução
DotNet Framework e Orientação a Objetos 1 - IntroduçãoLorival Smolski Chapuis
 
Aula 2 - POO: Fundamentos da linguagem Java
Aula 2 - POO: Fundamentos da linguagem JavaAula 2 - POO: Fundamentos da linguagem Java
Aula 2 - POO: Fundamentos da linguagem JavaDaniel Brandão
 
Algoritmos - Paradigmas de Programação
Algoritmos - Paradigmas de ProgramaçãoAlgoritmos - Paradigmas de Programação
Algoritmos - Paradigmas de ProgramaçãoElaine Cecília Gatto
 
Práticas de Desenvolvimento de Software
Práticas de Desenvolvimento de SoftwarePráticas de Desenvolvimento de Software
Práticas de Desenvolvimento de SoftwareTiago Barros
 
Introdução à Computação Aplicada
Introdução à Computação AplicadaIntrodução à Computação Aplicada
Introdução à Computação AplicadaRodolfo Almeida
 
paradigmasdlsksmmskskkekekekekedmmmdmdmmf.pdf
paradigmasdlsksmmskskkekekekekedmmmdmdmmf.pdfparadigmasdlsksmmskskkekekekekedmmmdmdmmf.pdf
paradigmasdlsksmmskskkekekekekedmmmdmdmmf.pdfAndreiaCristinaFlore
 
02 introducao software
02 introducao software02 introducao software
02 introducao softwareDaniel Farias
 

Similaire à Técnicas de Implementação de Linguagens de Programação (20)

Noções Básicas do Software dos Computadores Digitais
Noções Básicas do Software dos Computadores DigitaisNoções Básicas do Software dos Computadores Digitais
Noções Básicas do Software dos Computadores Digitais
 
Linguagem da programação
Linguagem da programaçãoLinguagem da programação
Linguagem da programação
 
Mini Curso de C
Mini Curso de CMini Curso de C
Mini Curso de C
 
Aula 3 - Software
Aula 3 - SoftwareAula 3 - Software
Aula 3 - Software
 
Aula01 - Analise e Programação
Aula01 - Analise e ProgramaçãoAula01 - Analise e Programação
Aula01 - Analise e Programação
 
Aula 02 informática aplicada - sistemas operacionais
Aula 02  informática aplicada - sistemas operacionaisAula 02  informática aplicada - sistemas operacionais
Aula 02 informática aplicada - sistemas operacionais
 
ESTRUTURA DE DADOS (JAVA) AULA 01
ESTRUTURA DE DADOS (JAVA) AULA 01ESTRUTURA DE DADOS (JAVA) AULA 01
ESTRUTURA DE DADOS (JAVA) AULA 01
 
Linguagens de programação 03-12-09
Linguagens de programação   03-12-09Linguagens de programação   03-12-09
Linguagens de programação 03-12-09
 
Comparativo do uso de linguagens de programação e geradores de código no dese...
Comparativo do uso de linguagens de programação e geradores de código no dese...Comparativo do uso de linguagens de programação e geradores de código no dese...
Comparativo do uso de linguagens de programação e geradores de código no dese...
 
Linguagen..
Linguagen..Linguagen..
Linguagen..
 
DotNet Framework e Orientação a Objetos 1 - Introdução
DotNet Framework e Orientação a Objetos 1 - IntroduçãoDotNet Framework e Orientação a Objetos 1 - Introdução
DotNet Framework e Orientação a Objetos 1 - Introdução
 
Aula 2 - POO: Fundamentos da linguagem Java
Aula 2 - POO: Fundamentos da linguagem JavaAula 2 - POO: Fundamentos da linguagem Java
Aula 2 - POO: Fundamentos da linguagem Java
 
Algoritmos - Paradigmas de Programação
Algoritmos - Paradigmas de ProgramaçãoAlgoritmos - Paradigmas de Programação
Algoritmos - Paradigmas de Programação
 
Code Masters
Code MastersCode Masters
Code Masters
 
Práticas de Desenvolvimento de Software
Práticas de Desenvolvimento de SoftwarePráticas de Desenvolvimento de Software
Práticas de Desenvolvimento de Software
 
Introdução à Computação Aplicada
Introdução à Computação AplicadaIntrodução à Computação Aplicada
Introdução à Computação Aplicada
 
Programação C - Aula 1
Programação C - Aula 1Programação C - Aula 1
Programação C - Aula 1
 
paradigmasdlsksmmskskkekekekekedmmmdmdmmf.pdf
paradigmasdlsksmmskskkekekekekedmmmdmdmmf.pdfparadigmasdlsksmmskskkekekekekedmmmdmdmmf.pdf
paradigmasdlsksmmskskkekekekekedmmmdmdmmf.pdf
 
Apostila c
Apostila cApostila c
Apostila c
 
02 introducao software
02 introducao software02 introducao software
02 introducao software
 

Plus de Wagner Zaparoli

Early Warning Systems For Epidemic
Early Warning Systems For EpidemicEarly Warning Systems For Epidemic
Early Warning Systems For EpidemicWagner Zaparoli
 
Transformações_Corporativas
Transformações_CorporativasTransformações_Corporativas
Transformações_CorporativasWagner Zaparoli
 
Checklist para Avaliação da Documentação.PDF
Checklist para Avaliação da Documentação.PDFChecklist para Avaliação da Documentação.PDF
Checklist para Avaliação da Documentação.PDFWagner Zaparoli
 
Padrões_Desenvolvimento
Padrões_DesenvolvimentoPadrões_Desenvolvimento
Padrões_DesenvolvimentoWagner Zaparoli
 
Gerência de Configuração
Gerência de ConfiguraçãoGerência de Configuração
Gerência de ConfiguraçãoWagner Zaparoli
 
Manutenção de Software
Manutenção de SoftwareManutenção de Software
Manutenção de SoftwareWagner Zaparoli
 

Plus de Wagner Zaparoli (11)

Early Warning Systems For Epidemic
Early Warning Systems For EpidemicEarly Warning Systems For Epidemic
Early Warning Systems For Epidemic
 
Transformações_Corporativas
Transformações_CorporativasTransformações_Corporativas
Transformações_Corporativas
 
Qualidade do Software
Qualidade do SoftwareQualidade do Software
Qualidade do Software
 
Checklist para Avaliação da Documentação.PDF
Checklist para Avaliação da Documentação.PDFChecklist para Avaliação da Documentação.PDF
Checklist para Avaliação da Documentação.PDF
 
Padrões_Desenvolvimento
Padrões_DesenvolvimentoPadrões_Desenvolvimento
Padrões_Desenvolvimento
 
Gerência de Configuração
Gerência de ConfiguraçãoGerência de Configuração
Gerência de Configuração
 
Manutenção de Software
Manutenção de SoftwareManutenção de Software
Manutenção de Software
 
Teste de Software
Teste de SoftwareTeste de Software
Teste de Software
 
Ciclo de Vida
Ciclo de VidaCiclo de Vida
Ciclo de Vida
 
Projeto de Software
Projeto de SoftwareProjeto de Software
Projeto de Software
 
Gerenciamento_Projetos
Gerenciamento_ProjetosGerenciamento_Projetos
Gerenciamento_Projetos
 

Técnicas de Implementação de Linguagens de Programação

  • 1. Técnicas de Implementação Wagner Zaparoli wzaparoli@gmail.com
  • 4. Linguagens de Programação 4 Duas entidades
  • 6. Tecnologia da Informação Linguagens de Programação 6 A solução Servidores Infra-estrutura Componentes Metodologias Linguagens de Programação Itens de QualidadeTécnicas Banco de Dados Design Patterns Ferramentas Case
  • 7. Linguagens de Programação 7 Conceitos Linguagem de programação é um conjunto de regras sintáticas e semânticas usadas para definir um programa de computador Programa de computador é a formalização de um algoritmo em qualquer linguagem capaz de ser transformada em instruções que serão executadas por um computador gerando os resultados esperados Algoritmo é a descrição de um conjunto de ações que obedecidas, resultam uma sucessão finita de passos para atingir um objetivo
  • 8. Linguagens de Programação 8 A comunicação Linguagem humana Algoritmo Código Fonte Código Intermediário Linguagem Máquina
  • 9. Linguagens de Programação 9 Técnicas Programação Programação Linear: proposta para resolver problemas na forma de maximização ou minimização de funções lineares, sujeitas a um conjunto de restrições que podem ser expressos sob a forma de inequações ou equações lineares Programação Modular: paradigma de programação no qual o desenvolvimento das rotinas de programação é feito através de módulos, que são interligados entre si através de uma interface comum Programação Estruturada: forma de programação de computadores que preconiza que todos os programas possíveis podem ser reduzidos a apenas três estruturas: sequência, decisão e iteração Programação Orientada a Objetos: paradigma de análise, projeto e programação de sistemas de software baseado na composição e interação entre diversas unidades de software chamadas de objetos
  • 10. Linguagens de Programação 10 Classificação Linguagens ACM – Association for Computing Machinery Paradigma Estrutura de Tipos Grau de Abstração Geração
  • 11. Linguagens de Programação 11 Classificação - ACM Fundada em 1947 como a primeira sociedade cientifica e educacional dedicada a computação, é composta por grupos denominados capítulos (chapters), grupos especiais e universidades e faculdades ao redor do mundo
  • 12. Linguagens de Programação 12 Classificação - Paradigma Refere-se a visão que o programador possui sobre a estruturação e execução do programa. A programação OO pode ser abstraída como uma coleção de objetos que interagem entre si. Já a programação funcional pode ser abstraída como uma sequência de funções executadas de forma empilhada
  • 13. Linguagens de Programação 13 Classificação – Estrutura de Tipos • Fracamente tipada - tipo da variável muda dinamicamente conforme a situação. • Fortemente tipada - tipo da variável, uma vez atribuído, se mantém o mesmo até ser descartada da memória. • Dinamicamente tipada - tipo da variável é definido em tempo de execução. • Estaticamente tipada - tipo da variável é definido em tempo de compilação.
  • 14. Linguagens de Programação 14 Classificação – Grau de Abstração • Linguagem de programação de baixo nível - cujos simbolos são uma representação direta do código de máquina que será gerado. • Linguagem de programação de médio nível - possui símbolos que podem ser convertidos diretamente para código de máquina (goto, expressões matemáticas, atribuição de variáveis), mas também símbolos complexos que são convertidos por um compilador • Linguagem de programação de alto nível - composta de símbolos mais complexos, inteligível pelo ser humano e não-executável diretamente pela máquina, no nível da especificação de algoritmos
  • 15. Linguagens de Programação 15 Classificação - Geração • Primeira Geração – conhecida como linguagem de máquina (ou binária), que usa apenas 0 (zero) e 1 (um) para programar softwares. • Segunda Geração – linguagem de montagem, que é uma notação legível por humanos para o código de máquina que uma arquitetura de computador específica usa. • Terceira Geração – linguagem de programação projetada para ser facilmente entendida pelo ser humano, incluindo coisas como variáveis com nomes. • Quarta Geração – linguagens não-procedimentais que descreve o que quer que seja feito (derivativas do SQL, por exemplo). • Quinta Geração – linguagem declarativa que limita-se a fornecer uma descrição do problema que se pretende computar, usando a base de dados, as regras relacionais e o mecanismo de unificação para produzir a solução.
  • 17. Sistema Linguagens de Programação 17 Aplicativo Software Utilitário
  • 18. Software de Sistema Responsabilidades • Gerenciar memória. • Controlar a comunicação entre componentes de HW. • Ler e interpretar entradas do teclado. • Executar tarefas básicas de um sistema: copiar, mover, renomear, etc., Define o padrão de comportamento do hardware, tornando-o utilizável Tipos • Sistema Operacional: alocador de recursos que permite ao computador trabalhar de forma eficiente e segura. • Tradutor: responsáveis pela transformação de uma linguagem de programação em linguagem de máquina. Linguagens de Programação 18
  • 19. Software Aplicativo Tipos • Uso geral: são programas que podem ser utilizados em vários tipos de aplicações, como editores de texto, gráficos, planilhas, gerenciadores de banco de dados, etc. • Uso específico: se destinam exclusivamente a um único tipo de aplicação, como folha de pagamento, crediário, imposto de renda, cadastro, contas a pagar e receber, etc. Voltados para a solução de problemas relacionados ao usuário final Linguagens de Programação 19
  • 20. Software Utilitário Fornecem o complemento necessário para uma ferramenta básica de gerenciamento do SO Exemplos • Backup. • Compactador de disco. • Desfragmentador de disco. • Anti-vírus. Linguagens de Programação 20
  • 22. Linguagens de Programação 22 Características das Linguagens* Facilidade Projeto  Código Eficiência do Compilador Portabilidade do Código Disponibilidade de ferramentas Manutenabilidade * Pressman, 2002
  • 23. Linguagens de Programação 23 Características das Linguagens Linguagem (implementa) • Construções estruturadas; • Estruturas de dados sofisticadas; • E/S especializadas; • Construção orientadas a objeto.
  • 24. Linguagens de Programação 24 Características das Linguagens Quando um requisito não funcional de desempenho for crítico é importante pensar na utilização de compiladores “otimizantes”
  • 25. Linguagens de Programação 25 Características das Linguagens Portabilidade • Código-fonte pode ser transportado de processador e compilador; • Código-fonte permanece imutável quando o ambiente muda; • Código-fonte pode ser integrado a diferentes pacotes de software;
  • 26. Linguagens de Programação 26 Características das Linguagens • Ferramentas de depuração; • Ferramentas para controle do código fonte; • Ferramentas de engenharia reversa; • Ferramentas de testes. Buscar um ambiente de desenvolvimento de software avançado, que inclua ferramentas convencionais e automatizadas
  • 27. Linguagens de Programação 27 Características das Linguagens O quão fácil o código-fonte é entendido e modificável Vislumbrar características de autodocumentação da linguagem, bem como um processo que a permita
  • 29. Lógica – O algoritmo Narrativa Fluxograma Pseudocódigo Linguagens de Programação 29
  • 30. Lógica – As expressões Expressões Aritméticas Expressões Lógicas Expressões Relacionais Linguagens de Programação 30
  • 31. Lógica – As estruturas Sequência Repetição Condicional Linguagens de Programação 31
  • 33. Dados – Armazenamento Estruturas Voláteis (memória) Estruturas Persistentes (arquivos) Linguagens de Programação 33
  • 35. Linguagens de Programação 35 Identificadores significativos para nomes (rotinas, variáveis, constantes, etc.). Interna - Código Comentários: • No início do bloco – título e objetivos; • No corpo do bloco – declarações de variáveis, comandos complexos, interfaces, integrações; • No final do bloco – autor, revisor, histórico de manutenção. Uso de endentação.
  • 36. Linguagens de Programação 36 Externa – Especificação Técnica Rotina/funções/stored procedure/Serviços: • Identificação; • Parâmetros de entrada/saída; • Pré-condições; • Exceções; • Lógica. Tela/Relatório : • Identificação do objeto; • Finalidade; • Modo de Operação; • Nome do Campo; • Descrição do Campo; • Tipo do Campo; • Tamanho do Campo; • Quebras; • Totalizadores. • Objetivos; • Escopo; • Restrições; • Armazenamento; • Versionamento.
  • 38. Apresentação Aplicação Dados Linguagens de Programação 38 Tecnologia – Camadas
  • 39. Apresentação Aplicação Dados Linguagens de Programação 39 Tecnologia – Camadas
  • 40. Tecnologia – Camadas Apresentação Aplicação Dados Linguagens de Programação 40
  • 41. Tecnologia – Popularidade* Linguagens de Programação 41 Position Nov 2010 Position Nov 2009 Programming Language Ratings Nov 2010 Delta Nov 2009 1 1 Java 18.509% +0.14% 2 2 C 16.717% -0.60% 3 4 C++ 9.497% -0.50% 4 3 PHP 7.813% -2.36% 5 6 C# 5.706% +0.36% 6 7 Python 5.679% +1.01% 7 5 (Visual) Basic 5.470% -2.70% 8 13 Objective-C 3.191% +2.30% 9 8 Perl 2.472% -1.02% 10 10 Ruby 1.907% -0.50% 11 9 JavaScript 1.664% -1.25% 12 11 Delphi 1.638% -0.49% 13 17 Lisp 1.087% +0.47% 14 23 Transact-SQL 0.793% +0.38% 15 15 Pascal 0.784% +0.13% * TIOBE Nov/2010
  • 42. Tecnologia – Popularidade* Linguagens de Programação 42 * TIOBE Nov/2010 Programming Language Position Nov 2010 Position Nov 2005 Position Nov 1995 Position Nov 1985 Java 1 1 - - C 2 2 1 1 C++ 3 3 2 8 PHP 4 4 - - C# 5 7 - - Python 6 8 10 - (Visual) Basic 7 5 3 4 Objective-C 8 42 - - Perl 9 6 5 - Ruby 10 24 - - Lisp 13 14 12 2 Ada 16 17 6 3
  • 43. Sugestões Bibliográficas • Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software. 1 ed. Estados Unidos da América: Addison-Wesley, 1995. • Craig Larman. Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development. 1 ed. Estados Unidos da América: Prentice Hall, 2004. • Fowler, Martin. Refactoring: Improving the Design of Existing Code. Massachusetts: Addison Wesley, 2006. • Meyer, B. Object-Oriented Software Construction. New Jersey: Prentice Hall, 1988. • Pressman, R. S. Engenharia de Software. 5. ed. São Paulo: Makron Books, 2002. • Kosanski, N., Woods, E.. Software Systems Architecture: working with stakeholders using view points and perspectives. New Jersey: Addison-Wesley, 2005. • Manzano, José Augusto N. G., Algoritmos – Lógica para Desenvolvimento de Programas – São Paulo, Ed. Érica, 1999. • Xavier, Gley Fabiano Cardoso. Lógica de Programação - Editora SENAC-SP, 2001. • Saliba, W. Luiz Caran, Técnicas de Programação – Uma abordagem Estruturada – São Paulo, Ed. Makron Books, 1992. Linguagens de Programação 43
  • 44. Técnicas de Implementação Wagner Zaparoli wzaparoli@gmail.com