O Essencial sobre Linguagens de Programação Luís Caires Maio 2005.

Slides:



Advertisements
Apresentações semelhantes
Programação II Licenciatura de Ciências da Computação Padoca Calado
Advertisements

TIPOS ABSTRATOS DE DADOS
Pseudo-código: sintaxe
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.
Introdução à Programação uma Abordagem Funcional Programação I Prof.ª Claudia Boeres CT VII - Sala 32 Departamento de Informática Centro.
Linguagem de Montagem Visão geral.
Perspectivas baseadas em procedimentos e orientadas por objectos Conceitos principais: Encapsulamento, Herança, Polimorfismo (Encapsulation, Hierarchy,
1 Introdução (Informal) à Programação DI/FCT/UNL 1º Semestre 2004/2005.
Introdução a Programação Renata Freire
Introdução a Informática
Tiago Salmito SystemC Tiago Salmito
INTRODUÇÃO À PROGRAMAÇÃO
Curso Sistemas de Informação Disciplina: Arquitetura de Software
Softwares.
Universidade Federal do Espírito Santo
Linguagens de Programação
Laboratório de Programação de Computadores I
Prof. Msc. Raul Paradeda Aula 3 Fundamentos
Conceitos Básicos.
Universidade do Vale do Rio dos Sinos
Paradigmas de programação
JAVA: Conceitos Iniciais
PROGRAMAÇÃO I UNIDADE 1.
Aula prática 8 Ponteiros Monitoria de Introdução à Programação
Aula prática 13 Orientação a Objetos – C++ Parte 1
Aula prática 6 Vetores e Matrizes
Comunicação Inclusiva Acessibilidade e Programação Web
Linguagem de programação I A
PCI- Introdução à Computação
Introdução a Programação
História dos computadores e da programação
Teoria e Implementação de Linguagens Computacionais – IF688
Paradigmas de Linguagens de Programação Linguagem Imperativa 2
TÉCNICAS DE PROGRAMAÇÃO
Inteligência Artificial
Professor: Márcio Amador
Orientação a Objetos Parte I
Banco de Dados Parte 04 Ceça. Ceça Moraes 2 Conteúdo  Os três níveis da arquitetura  Mapeamentos  Arquitetura cliente-servidor.
ALGORITMOS Intensivo Janeiro e Fevereiro de 2011
Paradigma funcional.
Paradigmas de Linguagens de Programação Aula 2
Laboratório de Programação I Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Algumas notas sobre a linguagem de programação C
Smalltalk Grupo Anderson Bistafa Hugo Carlos
MINI CURSO J2ME Vinícius Maran SEMINÁRIO REGIONAL DE INFORMÁTICA 2008.
Aula 1 – Profª Danielle Costa
Linguagens de Programação II
Linguagens de Programação Introdução Prof. Renato Melo.
Programação Lógica com Prolog
Fundamentos de linguagens de programação
CES-10 INTRODUÇÃO À COMPUTAÇÃO
Java Disciplina: Programação II Professora: Mai-Ly Vanessa.
A maior parte dos programas de computador gera uma saída resultante de um processamento que é executado sobre dados que ele recebe como entrada. Em geral.
Computabilidade e Linguagens Formais
Analise de Algoritmos e Notação Assintótica
Linguagens de Programação
Introdução a linguagem de Programação Java. Linguagens de Programação Linguagens de máquina(muito difíceis de usar e compreender) – Comanda ações do computador.
Linguagem de Programação I PARTE i
Módulo II Capítulo 1: Orientação a Objetos
Curso Engenharia Química Modalidade Superior Instituto Federal do Sul de Minas, câmpus Pouso Alegre Professora Michelle Nery Programação de Computadores.
Paradigmas das Linguagens de Programação - História
Influencias sobre o Projeto da Linguagem
Computadores vs. Programas / Algoritmos Computadores vs. Programas -> Algoritmos O tratamento de problemas através do computador geralmente envolve uma.
LÓGICA DE PROGRAMAÇÃO Curso: Técnico em Informática Professor: Ronaldo Disciplina: Lógica de Programação.
Módulo I – Softwares: Linguagens de Programação Prof.: Rogério Morais.
Programação II Arquivos Autoria: Ernani Santos Modificação: Clebson Oliveira Adaptação: Claudia Boeres.
COMPILADORES 02 Prof. Marcos. COMPILADORES Do Programa à Execução Computadores das mais variadas arquiteturas têm funcionamento:
Lógica de Programação Aula 06 Prof. Marcelo Marcony.
Transcrição da apresentação:

O Essencial sobre Linguagens de Programação Luís Caires Maio 2005

O Essencial sobre Linguagens de Programação O que é uma linguagem de programação? O que é uma linguagem de programação? O que é comum a todas as linguagens de programação? O que é comum a todas as linguagens de programação? Que géneros de linguagens de programação existem? Que géneros de linguagens de programação existem? Que linguagens de programação são mais usadas? Que linguagens de programação são mais usadas?

Processos, Algoritmos e Programas

Informática Estuda processamento automático da informação.

Processos, Algoritmos e Programas Informática Estuda processamento automático da informação. Processamento (2 sabores)

Processos, Algoritmos e Programas Informática Estuda processamento automático da informação. Processamento (2 sabores) Obtenção de resultados (saída) a partir de dados (entrada)

Processos, Algoritmos e Programas Informática Estuda processamento automático da informação. Processamento (2 sabores) Diálogo interactivo com o ambiente 0

Processos, Algoritmos e Programas Informática Estuda processamento automático da informação. Processamento (2 sabores) Diálogo interactivo com o ambiente 0

Processos, Algoritmos e Programas Informática Estuda processamento automático da informação. Processamento (2 sabores) Diálogo interactivo com o ambiente 10

Processos, Algoritmos e Programas Informática Estuda processamento automático da informação. Processamento (2 sabores) Diálogo interactivo com o ambiente 10

Processos, Algoritmos e Programas Informática Estuda processamento automático da informação. Processamento (2 sabores) Diálogo interactivo com o ambiente 8

Processos, Algoritmos e Programas Informática Estuda processamento automático da informação. Processamento (2 sabores) Diálogo interactivo com o ambiente 8

Processos, Algoritmos e Programas Informática Estuda processamento automático da informação. Processamento (2 sabores) Diálogo interactivo com o ambiente 20

Processos, Algoritmos e Programas Informática Estuda processamento automático da informação. Processamento (2 sabores) Obtenção de resultados (saída) a partir de dados (entrada) Diálogo interactivo com o ambiente Automático

Processos, Algoritmos e Programas Informática Estuda processamento automático da informação. Processamento (2 sabores) Obtenção de resultados (saída) a partir de dados (entrada) Diálogo interactivo com o ambiente Automático Realizável por uma máquina (o computador)

Processos, Algoritmos e Programas Informática Estuda processamento automático da informação. Processamento (2 sabores) Obtenção de resultados (saída) a partir de dados (entrada) Diálogo interactivo com o ambiente Automático Realizável por uma máquina (o computador) Logo : Requer uma especificação rigorosa

Como descrever processos? Processo Começar por ler um número. Se esse valor fôr par, escrever PAR, caso contrário, escrever INPAR. Terminar.

Processos e Programas Processo Começar por ler um número. Se esse valor fôr par, escrever PAR, caso contrário, escrever INPAR. Terminar. Programa read X; if ( X mod 2 = O) then MSG := par! else MSG := ínpar!; write MSG

Processos e Programas Programa um texto correctamente escrito numa linguagem de programação (Visual Basic, Java, etc.) Um programa não é um algoritmo / processo! Um programa é uma descrição possível de um algoritmo / processo

Processos e Programas Infelizmente, nem todos os programas descrevem processos interessantes ou relevantes :-) Por outro lado, pense na sua linguagem preferida ( Java? ). Será que é garantidamente possível descrever qualquer algoritmo/processo imaginável na linguagem Java ?

Expressividade Todas as linguagens de programação são igualmente expressivas Facto : se um algoritmo / processo pode ser implementado numa certa linguagem, então também pode ser implementado noutra linguagem qualquer Quer isto dizer que as linguagens de programação são todas equivalentes ?

Expressividade A expressividade teórica não é tudo (é impossível perceber programas escritos para a máquina de Turing) A facilidade de expressão disponibilizada é muito muito muito importante! A expressividade de uma linguagem de programação depende dos conceitos primitivos por esta disponibilizados

Muitas aspectos a considerar Que modelos de computação suportados? Fazer cálculos (operações matemáticas?) Fazer cálculos intensivos (paralelismo?) Manter bases de dados (sincronização?) Gerir um computador (hardware) Controlar um dispositivo (ex: nave espacial) Suportar aplicações na internet

Muitas aspectos a considerar Que tipos de dados são manipuláveis? Números Números Texto Texto Aglomerados (informação estruturada) Aglomerados (informação estruturada) Objectos (programas em execução) Objectos (programas em execução) Que entidades sãocidadãs de primeira classe? Que entidades sãocidadãs de primeira classe?

Muitas aspectos a considerar Que mecanismos de abstracção existem? Cada linguagem fornece um conjunto de ingredientes básicos, mas Cada linguagem fornece um conjunto de ingredientes básicos, mas É possível definir NOVOS ingredientes por combinação dos ingredientes básicos? É possível definir NOVOS ingredientes por combinação dos ingredientes básicos? Uma linguagem com mecanismos de abstracção poderosos é muito flexível porque é uma linguagem extensível ! Uma linguagem com mecanismos de abstracção poderosos é muito flexível porque é uma linguagem extensível !

Muitas aspectos a considerar É fácil produzir programas grandes ? É possível escrever um programa por partes, para melhor o estruturar e compreender, tal como um livro pode ser dividido em capítulos, secções, etc? É fácil substituir certas partes por outras (talvez melhores...) no futuro?

Muitas aspectos a considerar Programas são fáceis de modificar no futuro? É fácil compreender a funcionalidade de um programa, muito depois (um ano) de este ter sido escrito? É fácil compreender a funcionalidade de um programa, muito depois (um ano) de este ter sido escrito? É fácil compreender programas escritos por outras pessoas? É fácil compreender programas escritos por outras pessoas? Alteração pontual pode ter repercussões graves noutro sítio do programa? Alteração pontual pode ter repercussões graves noutro sítio do programa?

Muitas aspectos a considerar Como são os programas executados? De forma eficiente? De forma eficiente? Interpretados (Visual Basic) ? Interpretados (Visual Basic) ? Compilados (C++) ? Compilados (C++) ? ou Semi-Interpretados (Java) ? ou Semi-Interpretados (Java) ?

Execução de Programas Programas interpretados Interpretador Programa fonte Processador O processador executa um programa especial: o interpretador o interpretador a função do interpretador é interpretar passo a passo o programa fonte (escrito em JavaScript, por exemplo)

Execução de Programas Programas compilados Compilador Programa fonte Programa objecto Processador O compilador traduz o programa fonte (em C, por exemplo) num outro programa (o programa objecto) O programa objecto é directamente executável pelo processador hardware

Execução de Programas Programas semi-interpretados Compilador Programa fonte Código intermédio Máquina Virtual O compilador traduz o programa fonte (em Java, por exemplo) num programa (o código intermédio) para uma máquina virtual A máquina virtual é um interpretador que simula um processador poderoso mas eficiente! Processador

Muitas aspectos a considerar Que garantias dá a linguagem? Que género de erros são detectáveis? Que género de erros são detectados? Quando são detectados? O ideal é serem detectados o mais cedo possível, ou seja, antes do programa ser executado!

Muitas linguagens, no passado e no presente FORTRAN (para fazer contas, um record de longevidade) ALGOL (uma boa ideia antes do tempo) SMALLTALK (a ideia de programar só com objectos ) LISP (a ideia de programar só com funções ) PROLOG (a ideia de programar só com relações ) ML (programação funcional at it´s best) C (programar um sistema Operativo: UNIX) JAVA (programar com objectos, no fim do séc. XX ) C# (Java, à moda da Microsoft)

Muitas linguagens, no passado e no presente FORTRAN (para fazer contas, um record de longevidade) São assim tão diferentes? Sim, mas... The next 700 programming languages The next 700 programming languages vão ser muito muito parecidas ;-) JAVA (programar com objectos, no fim do século)

Ingredientes básicos Valores básicos V números ( 0, 1, 2.92 ) sequências de caracteres ( luis, maria )

Ingredientes básicos Expressões V sobre números sobre números (2+3, 2.0*3.14) sobre sequências de caracteres sobre sequências de caracteres ( maria ) ( maria )

Definições As definições dão nomes a entidades declare numero_de_conta = 10 numero_de_conta = 10 in in nome Valor inteiro

Definições Uma definição só é válida num certo âmbito declare numero_de_conta = 10 in nome âmbito Valor inteiro

Manipulação de estado Células de memória M podem ser reservadas X = new podem ser reservadas X = new podem ser escritas X := E podem ser escritas X := E podem ser lidas ? X podem ser lidas ? X

Manipulação de estado Usando definições podemos dar nomes às células de memória declare numero_de_conta = 10 saldo = new in { saldo := 0 ; saldo := ? saldo }

Parametrização Parametrizando um programa num nome obtém-se generalidade Acumular o valor inteiro 100 ao saldo Acumular o valor inteiro 100 ao saldo saldo := ? saldo Acumular o valor VAL ao saldo Acumular o valor VAL ao saldo saldo := ? saldo + VAL Função que incrementa o saldo com um valor qq fun ( VAL ) { saldo := ? saldo + VAL Função que incrementa o saldo com um valor qq fun ( VAL ) { saldo := ? saldo + VAL }

Parametrização Parametrizando um programa num nome obtém-se generalidade Acumular o valor inteiro 100 ao saldo Acumular o valor inteiro 100 ao saldo saldo := ? saldo Acumular VAL ao saldo Acumular VAL ao saldo saldo := ? saldo + VAL Função que incrementa o saldo com um valor qq fun ( VAL ) saldo := ? saldo + VAL Função que incrementa o saldo com um valor qq fun ( VAL ) saldo := ? saldo + VAL Parametrização em VAL

Definição de funções Usando definições podemos dar também nomes a funções: declare numero_de_conta = 10 saldo = new acum = fun ( x ) saldo := ? saldo + x in { saldo := 0 ; acum (10); }

Definição de funções Da mesma forma, podemos dar nomes a programas declare Conta = declare numero_de_conta = 10 saldo = new acum = fun ( x ) saldo := ? saldo + x in { saldo := 0 ;} in...

Definição de funções Quais são os elementos definidos no programa Conta ? declare Conta = declare numero_de_conta = 10 saldo = new acum = fun ( x ) saldo := ? saldo + x in { saldo := 0 ;} in....

Definição de funções Quais são os elementos definidos no programa Conta ? declare Conta = declare numero_de_conta = 10 saldo = new acum = fun ( x ) saldo := ? saldo + x in { saldo := 0 ;} in.... nomes locais

Alargando o âmbito das definições Objectos: encapsulam dados e funções declare Conta = object private numero_de_conta = 10 private saldo = new public acum = fun ( x ) saldo := ? saldo + x public val = fun () ? saldo in { saldo := 0 ;} in...

Alargando o âmbito das definições Objectos: encapsulam dados e funções declare Conta = object private numero_de_conta = 10 private saldo = new public acum = fun ( x ) saldo := ? saldo + x public val = fun () ? saldo in { saldo := 0 ;} in... nomes locais

Alargando o âmbito das definições Objectos: encapsulam dados e funções declare Conta = object private numero_de_conta = 10 private saldo = new public acum = fun ( x ) saldo := ? saldo + x public val = fun () ? saldo in { saldo := 0 ;} in... nomes públicos

Classes e Objectos Objectos agregam dados e funções declare Conta = object... in declare cc = new Conta in { cc.acum(10); cc.acum(29); write cc.val(); }

Objectos como Agentes ObjectosMensagens Conta Aluno Servidor WEB BD

Fim