Itic 4
Itic 4
Faculdade de Ciências
Departamento de Matemática e Informática
Sistemas Operativos
Compiladores e Interpretadores
• Interpretador: é um programa que lê e executa o código fonte linha por linha, traduzindo-
o para instruções compreensíveis pela máquina em tempo real.
• O processo de interpretação envolve:
– Análise Lexical: O interpretador quebra o código fonte em tokens (como palavras-chave,
identificadores e símbolos) para processamento.
– Execução Directa: Após a análise lexical, o interpretador executa as instruções do
código linha por linha, traduzindo-as para código de máquina conforme necessário.
• Exemplos de linguagens que usam interpretadores incluem Python, Ruby e
JavaScript.
Diferenças: Compiladores & Interpretadores (1)
Variável Compilador Interpretador
Tempo de Compilação Traduz todo o código fonte Traduz e executa o código
para código de máquina antes linha por linha em tempo real
da execução.
Tempo de Execução Durante a execução do Como o código é
programa, o código já está interpretado durante a
traduzido para a linguagem execução, havendo uma
de máquina e não há sobrecarga adicional de
necessidade de interpretar o processamento a cada vez
código fonte, uma vez que o que uma linha é interpretada.
código de máquina gerado é
directamente executado pelo
processador.
Portabilidade Menos portáteis porque os Mais portáteis, pois o código
executáveis gerados por fonte é interpretado e
compiladores são específicos executado por um
para a plataforma em que interpretador que é
foram compilados. executável em várias
plataformas.
Diferenças: Compiladores & Interpretadores (2)
Variável Compilador Interpretador
Eficiência Têm um tempo de execução Têm um tempo de execução
mais curto, uma vez que o mais longo, uma vez que o
código fonte é traduzido paracódigo fonte é interpretado e
linguagem de máquina traduzido linha por linha em
durante a fase de compilação tempo real durante a
execução do programa.
Portanto, há uma sobrecarga
adicional de interpretação a
cada vez que uma linha de
código é executada
Eficiência no uso de Uma vez que o código já está Dada a necessidade de
Recursos traduzido para linguagem de interpretação em tempo real
máquina, os programas (quantidade adicional de
compilados tendem a ser recursos, como CPU e
mais eficientes no uso de memória, para processar o
recursos do sistema, como código fonte), os programas
memória e CPU, durante a interpretados são menos
execução eficientes no uso de recursos
do sistema.
Ambientes de Desenvolvimento Integrado (IDE)
Linguagem Natural
Linguagens de Programação
de “Baixo nível”
(Assembly)
Programa-fonte
Assemblador Programa
tradutor
Programa-objecto
ou executável
Linguagem máquina ou código-máquina
Da Linguagem Natural à Linguagem Máquina
Linguagem Natural
Linguagens de Programação
de “Baixo nível” de “Alto Nível”
(Assembly) (Pascal, C, C++, Java, ...)
Programa-fonte Programa-fonte
Programa-objecto Programa-objecto
ou executável ou executável
Linguagem máquina ou código-máquina
Da Linguagem Natural à Linguagem Máquina
Linguagem Natural
Linguagens de Programação
de “Baixo nível” de “Alto Nível”
(Assembly) (Pascal, C, C++, Java, ...)
Programa-fonte Programa-fonte
Compilador
Ou tradutor
Assemblador Programas
tradutores
Programa-objecto
ou executável
Linguagem máquina ou código-máquina
Da Linguagem Natural à Linguagem Máquina
Linguagem Natural
Linguagens de Programação
de “Baixo nível” de “Alto Nível”
(Assembly) (Pascal, C, C++, Java, ...)
Programa-fonte Programa-fonte
Linguagem máquina
A evolução das Linguagens de Programação
• Alguns aspectos que deram origem a evoluções das linguagens de programação
– autonomia do código fonte
– satisfação de necessidades sectoriais (ex. matemática)
– maior estruturação na abordagem dos problemas
– melhor manutenção
– maior expressividade (Inteligência Artificial)
– geração de código
– reutilização de código
– maior aproximação entre a linguagem natural e as linguagens de programação
– .......
• As linguagens foram sendo classificadas em gerações em função das características
que ofereciam, considerando-se que linguagens com caracrterísticas semelhantes
pertencem à mesma geração
A evolução das Linguagens de Programação
Linguagens Orientadas
por Objectos
Complexidade do SW
Linguagens estruturadas,
4GL
Primeiras linguagens
Linguagens máquina,
assembly
Algol
Linguagens Estruturadas
Simula
Pascal
C
Linguagens percursoras
OO
Smalltalk
Linguagens
OO Objective C
Módula-2
C ++ Ada
Eiffel
OO Pascal
Actor
Java
C#
Paradigmas de Linguagens de Programação
• Paradigma de programação
– define um modelo ou norma a seguir pelas linguagens de programação baseadas no paradigma
HTML
• Linguagem de marcação, o HTML é um óptimo primeiro passo para iniciantes em
programação, ao mesmo tempo que atualizações como o HTML 5 e sua predominância
na maioria dos sites da Internet faz com que ela seja uma habilidade muito necessária no
mercado de desenvolvimento como um todo.
CSS
• O CSS é normalmente utilizado em conjunto com o HTML para manipular a aparências
de sites, conseguindo determinar o tamanho, cor e posição dos elementos programados
pelos desenvolvedores.
• Sua sintaxe é fácil e sua aprendizagem é um importante complemento para o HTML.
Obrigado
Universidade Eduardo Mondlane
Faculdade de Ciências
Departamento de Matemática e Informática
Dados
Informação
Algorítmos
Programas
Dados, Constantes, Variáveis, Identificadores
̧
• Conceito: sequência de símbolos quantificados ou quantificáveis.
• Na definição inclui-se: texto, fotos, figuras, sons gravados, animação, etc.
• Dados são elementos sintáticos: podem ser descritos através de representações formais e
estruturais.
• Exemplo: diário de turma.
• Qualquer programa opera com dados.
• Os dados podem ser utilizados sob a forma de constantes ou de variáveis.
• As variáveis são sempre associadas a identificadores e num dado instante apenas podem conter um
determinado valor (simples ou composto).
• Identificadores são nomes que se atribuem a variáveis, constantes ou outros elementos com que se
opera num algoritmo.
• As variáveis pertencem sempre a um tipo de dados, o qual define o tipo de valores que a variável
pode conter ao longo do tempo.
Variáveis: identificadores e endereços de memória
1001 Ana
Nome Ana
1002
1003 Coimbra
Morada Coimbra
1004
• Questões importantes:
Ordinais Registos
Ficheiros
Inteiros/Reais
Enumerados
Caracteres
Subconjuntos
Booleanos
Tipos de dados Simples
• Ficheiro: Os seus valores são de um determinado
tipo e estão armazenados num ficheiro (memória Simples
secundária).
- Tipo pré-definido é o ficheiro de texto (String)
- Existem tipos de ficheiros estruturados Ficheiros
• Subconjunto enumerado
Inteiros/Reais
dias-úteis = (segunda, terça, quarta, quinta, sexta) Enumerados
• Subconjunto ordenado
notas_validas = 0..20 Caracteres
Subconjuntos
maiúsculas = ‘A’..’Z’
Booleanos
Tipos de dados Estruturados
São conjuntos ou estruturas que agrupam
dados simples ou também outros dados
Estruturados
estruturados
• Array Matrizes
Matriz de variáveis todas do mesmo tipo
Registos
• Registo
Agrupamentos de dados que podem ser de
tipos diferentes Conjuntos
• Conjunto Ficheiros
Agrupamentos de dados do mesmo tipo sem
repetições
• Ficheiro
Agrupamentos de dados do mesmo tipo num
ficheiro em memória secundária
Informação
• Definição: uma abstração informal (sem representação formal) que representa algo
significativo para alguém.
• Exemplo1: “Inhambane é uma cidade bonita” é um exemplo de informação que possui
significado para alguém que conheça os conceitos de “Inhambane”, “cidade” e “bonita”.
• Informação é representada por meio de dados
• Exemplo2: situação de aprovação/reprovação de estudantes obtida a partir do diário de
turma
• Exemplo3: um texto escrito em Bitonga é puro dado para quem não entende Bitonga,
porém pode se constituir em informação para quem conhece Bitonga.
• Informação contém semântica – “significado”
Estruturação e componentes fundamentais de um programa
• A estruturação de programas subdivide-se na estruturação das suas acções e na estruturação
dos seus dados.
• A escolha destas estruturas é o problema fundamental da programação estruturada.
• Da escolha criteriosa destas estruturas define até que ponto o programa é eficaz,
compreensível, robusto, modular e versátil.
• A sintaxe de uma linguagem define determinados construtores, de entre os quais os mais
importantes são as expressões e os comandos.
• Uma expressão é uma fórmula ou regra de computação que especifica um valor ou um
resultado.
Instruções básicas
• Instruções de escrita ou output
Escrever(“O resultado é:”, resultado)
• Instruções de atribuição
quantidade ¬ 500
preço ¬ 1,5
nome ¬ “Silva”
resultado ¬ preço * quantidade
Expressões
• Uma expressão é um conjunto de operandos articulados entre si por operadores