Laboratório de Programação I Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.

Slides:



Advertisements
Apresentações semelhantes
PROGRAMAÇÃO DE COMPUTADORES
Advertisements

gerador de código intermediário
1.3.2 – Linguagem Assembly Um programa em linguagem de máquina sofre de total falta de clareza O programa é uma sequência de linhas numeradas Cada linha.
Introdução à Ciência da Computação Linguagens de Programação.
Algoritmo Exemplo: faça um algoritmo para tocar todas as músicas de um cd. Após o usuário apertar o play Algoritmo Para as músicas de 1 até última música.
Linguagem de Montagem Visão geral.
Informática Aplicada Prof.: Bruno Rafael de Oliveira Rodrigues.
O Essencial sobre Linguagens de Programação Luís Caires Maio 2005.
ELEMENTOS DA INFORMÁTICA
LABORATÓRIO DE PROGRAMAÇÃO
Introdução a Programação Renata Freire
Introdução à Computação - Jorge Macêdo
Introdução aos Sistemas Gerenciadores de Banco de Dados
Introdução à Compilação Prof. Leandro Magno Slides adaptados a partir do material cedido pelos professores Heloise Manica Paris Teixeira, Yandre M. G.
Ricardo Jacobi Linguagem C Introdução Linguagens de Programação Fatores de Qualidade em Software Estilos de Programação Manutenção em Software Histórico.
Introdução a Informática
INTRODUÇÃO À PROGRAMAÇÃO
Softwares - Básicos e Aplicativos
Ferramentas Programação
Curso Sistemas de Informação Disciplina: Arquitetura de Software
Curso Sistemas de Informação I Disciplina: Arquitetura de Software
Curso Sistemas de Informação Disciplina: Arquitetura de Software
Curso Sistemas de Informação Disciplina: Arquitetura de Software
Tradutores de Linguagens
Paradigmas da Programação – Semestre 1 - Aula 1
Linguagens de Programação
Aula 3 Evolução da Principais Linguagens
Aula 2 Aspectos Preliminares
Laboratório de Programação de Computadores I
Paradigmas de Linguagens de Programação Introdução Professor: Armando Hage Belém-2008.
Universidade do Vale do Rio dos Sinos
Lógica de Programação UNIDADE 1 – Introdução a) Computador
PROGRAMAÇÃO I UNIDADE 1.
Flávio Melo Gabriel Fornari
Linguagem de programação I A
Tópicos avançados em internet A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Aula 1 - Introdução ao C Ameliara Freire.
PCI- Introdução à Computação
Caracterização e Objetivos das LP
Avaliação da Linguagem de Programação
Professor: Márcio Amador
02/08/2011 Professor Leomir J. Borba- –
Análise e Projeto de Sistemas de Informação 2o. Semestre de 2014
Paradigma funcional.
Paradigmas de Linguagens de Programação Aula 2
Introdução a Linguagens de Programação
Paradigmas de Linguagens de Programação
Projeto de Linguagens de Programação
Processadores de Linguagens
Aula 1 – Profª Danielle Costa
Programação de computadores Prof. Giovanni Castro.
Componentes de um Sistema de Computação
Linguagens de Programação Introdução Prof. Renato Melo.
Algoritmos e Programação I
Critérios de Avaliação das Linguagens de Programação
Compiladores – IF688 Professor: André Santos
Software Básico Introdução à Organização de Computadores Capítulo 1 Mitsuo Takaki
Programação Computacional Aula 2: Introdução -Algoritmos
Linguagens de Programação
Estudos de Linguagens de Programação - Introdução
SISTEMAS DE INFORMAÇÃO
Evolução das Principais Linguagens de Programação
Sistemas Operacionais
Ciência da Computação I
Curso Engenharia Química Modalidade Superior Instituto Federal do Sul de Minas, câmpus Pouso Alegre Professora Michelle Nery Programação de Computadores.
INTRODUÇÃO THOBER CORADI DETOFENO, MSC. Aula 01 JOINVILLE 2015 Universidade do Estado de Santa Catarina – CCT/UDESC.
Influencias sobre o Projeto da Linguagem
Módulo I – Softwares: Linguagens de Programação Prof.: Rogério Morais.
COMPILADORES 02 Prof. Marcos. COMPILADORES Do Programa à Execução Computadores das mais variadas arquiteturas têm funcionamento:
Transcrição da apresentação:

Laboratório de Programação I Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação

Introdução

Sumário Motivos para estudar Conceitos de Linguagens de Programação Domínios da Programação Critérios de Avaliação de Linguagens Trade-offs Influências sobre o Projeto da Linguagem Categorias de linguagens Métodos de Implementação

Motivos para estudar CLPs Aumento da capacidade de expressar idéias; Conhecer os recursos e limites das linguagens nos permite otimizar o uso da mesma; Maior conhecimento para a escolha de linguagens apropriadas; Muitos programadores aprendem por conta... Conhecer os diferentes recursos da diferentes linguagens facilita o processo de escolha de uma linguagem compatível com o nível de abstração exigido pelo problema Capacidade aumentada para aprender novas linguagens;

Domínios da programação Diferentes empregos da computação Áreas de uso Aplicações Científicas O grande motivo da computação; Estruturas de dados simples, laços de contagem e seleções; Fortran e Algol 60, linguagem assembly; Aplicações Comerciais Final década de 50; Geração de relatórios, armazenamento de números decimais

Domínios da programação Inteligência Artificial Utilização de computação simbólica em vez de numérica; LISP (1959) e Prolog (1970) Programação de Sistemas Sistema Operacional (software básico) Algol e C

Domínios da programação Linguagem de scripting Listas de comandos a serem executados AWK, Perl, Python Programação Web Popularização da Internet Mudou completamente a forma de pensar e desenvolver sistemas Inicio como simples páginas Sistemas completos Linguagens server side x client side PHP JavaScript Linguagens compiladas x interpretadas x hibridas

Critérios de avaliação da linguagem Legibilidade Capacidade de escrita (Writability) Confiabilidade Custo

Característica LegibilidadeWritabilityConfiabilidade Simplicidade/Ortogonalidade XXX Estruturas de Controle XXX Tipos de Dados e Estruturas XXX Projeto da Sintaxe XXX Suporte para Abstração XX Expressividade XX Verificação de Tipos X Manipulação de Excessões X Aliasing X Critérios de avaliação da linguagem

Trade-offs Critérios Conflitantes:  confiabilidade X custo de execução Verificação dinâmica de tipos; Índices de arrays  expressividade X legibilidade conjunto poderoso de operadores leva a expressões matemáticas concisas mas pouco legíveis  flexibilidade X segurança uniões em C; registros variantes em Pascal

Categorias de linguagens Imperativas: utilizam a variável como elemento de abstração da célula de memória; (C, Java) Funcionais: aplicação de funções a determinados parâmetros; pode ser feita sem vinculação de tipos, sem atribuições e sem iteração - somente recursão; (LISP) Lógicas: baseadas em regras; não há um fluxo particular de execução; Aplicam-se um conjunto de regras a um conjunto de dados através de uma função de inferência obtendo-se novos dados; (Prolog) de Marcação: não especificam computações, mas descrevem a aparência geral de documentos (html, latex)

Compilador C Compilador Pascal Compilador Fortran Compilador ADA Interpretador LISP Assembler Interpretador de Comandos do S.O. Sistema Operacional Interpretador do Conjunto de Instruções Núcleo da Máquina Computador Virtual C Computador Virtual Fortran Computador Virtual ADA Computador Virtual LISP Computador Virtual Assembly... Computador Virtual Pascal Computadores virtuais

Métodos de implementação 1) Compilação Traduz um programa de alto-nível para o código de máquina Tradução lenta Execução rápida Exemplos: C, Cobol, Ada, Pascal...

Programa Fonte Analisador léxico Analisador sintático Gerador de Código Intermediário (e analisador sintático) Gerador de Código Otimização Computador Tabela de símbolos Unidades Léxicas Árvores de Análise (parse trees) Código Intermediário Linguagem de Máquina Resultados (Opcional) Dados de Entrada Métodos de implementação (compilação)

2) Interpretação Pura Sem tradução Execução lenta Atualmente raras (LISP, html, scripts UNIX, PHP) Figura descritiva: Métodos de implementação Programa Fonte Dados de Entrada Resultados Interpretador

3) Sistemas de implementação Hibridos Baixo custo de tradução Velocidade de execução média Ex.: Perl, Java Programa Fonte Analisador léxico Analisador sintático Gerador de Código Intermediário (e analisador sintático) Unidades Léxicas Árvores de Análise (parse trees) Código Intermediário Dados de Entrada Resultados Interpretador Métodos de implementação

Metodologias Metodologias de Programação Ausência de metodologia Programação estruturada Década de 70; Eliminação de gotos; Metodologias de projeto top-down e botton-up; Orientação aos processos; Algol, Pascal, C.

Programação orientada a objeto Década de 80; Abstração de dados, herança, encapsulamento; vinculação dinâmica de tipos; Smalltalk; C++; Java. Programação Orientada a Processos concorrência; suporte em ADA; Java Metodologias

Programação orientada a eventos Diferente de programas tradicionais que seguem um fluxo de controle padronizado, o controle de fluxo de programas orientados a evento são guiados por indicações externas, chamadas eventos. Sua aplicação é grande no desenvolvimento de sistemas de interface com o usuário Diferente de aguardar por um comando completo que processa a informação, o sistema em tal paradigma é programado em sua base em um laco de repeticao de eventos, que recebem repetidamente informação para processar e disparam uma função de resposta de acordo com o evento. Metodologias