Linguagem de Programação

Propaganda
Lógica de Programação
Prof. Msc. Raul Paradeda
Aula 2
Introdução
Aula 2
•
•
•
•
•
•
•
•
•
Introdução;
Conceituação;
Arquitetura do computador;
Linguagens:
 Linguagens de Baixo nível;
 Linguagens de Programação;
Tradutor:
 Compilador;
 Interpretador;
SO;
Java;
Linguagem Natural;
Características da Linguagem;
Introdução
• O que significa algoritmos de
programação;
 Um procedimento passo a passo para a
solução de um problema.
 Uma seqüência detalhada de ações a serem
executadas para realizar determinada tarefa.
• Dêem um exemplo de algoritmo?
• Qualquer atividade do dia-a-dia pode ser
um exemplo de algoritmo.
Introdução
 Fazer um ovo frito por exemplo.
 A tarefa de fazer um ovo frito tem todas as
características de um algoritmo.
 Ela tem uma seqüência detalhada de passos,
descrita no modo de preparo.
 Apresenta a tarefa a ser realizada, que é um
ovo frito. E também podemos identificar na
receita entradas (no caso o ovo, óleo, a panela,
sal fino) e uma saída, que é o ovo frito.
Introdução
• Praticamente tudo pode ser descrito em
forma de algoritmos.
• Entretanto, os algoritmos precisam ser
corretos, eficientes e elegantes.
 Correto – deve fazer o que se espera, ou seja,
executa o que sua documentação descreve.
 Eficiente – se não desperdiça tempo. Há a
possibilidade de haver dois algoritmos que
resolvem o mesmo problema.
 Elegantes – ser simples, limpo, sem enfeites. Não
utilizar recursos desnecessários para sua
solução.
Introdução
• Se praticamente tudo pode ser descrito em
forma de algoritmos por que algoritmos
ficou ligado a computação ?
• Primeiramente é necessário ter o
conhecimento dos principais conceitos
para melhor compreender como um
programa é visto pelo computador.
Conceituação
 Programa: Implementação concreta de um algoritmo.
Ou conjunto de algoritmos a serem executados pela
máquina, também podemos dizer que é um conjunto de
instruções ordenadas com um determinado fim.
◦ Estes programas podem ser escritos em Linguagem de
máquina, ou ainda em linguagens de programação tais
como: C, C++, Cobol, VB, dentre outros.
 Aplicação: Conjunto de rotinas para tratamento de uma
determinada necessidade, podem ser compostas de um
ou mais programas. Como Microsoft Office, dentre
outros.
 Hardware: É o conjunto de dispositivos físicos do
computador, o equipamento.
 Software: São os programas de computadores.
Conceituação
• Firmware: Conhecido como software embarcado, tratase de um software que controla o hardware diretamente.
• Linguagem de Máquina: - é a linguagem que o
computador entende, cujo "alfabeto" é composto apenas
de "1's"e "0's" (linguagem binária).
• Linguagem de Programação: é uma linguagem formal,
utilizando termos que se aproximam da linguagem
humana, que pode ser traduzida por programas
especiais para linguagem de máquina.
• Algoritmo: Lógica utilizada para criação de um
programa. Nela independe de linguagem de
programação, porém as linguagens de programação
precisam usar algoritmos para implementação de uma
lógica específica.
Arquitetura do computador
De acordo com Andrew Tanenbaum a
arquitetura do computador moderno é composta
por:
UCP – Unidade
Central de
Processamento
Barramento
Dispositivos de
Entrada/Saída
Memória
Conexões
externas
Teclado
Mouse
Monitor
Impressora
...
Arquitetura do computador
• A parte física do computador é chamada
de hardware, e é composta por:




Uma UCP,
Memória,
Dispositivos de E/S.
O barramento faz a ligação desses
componentes.
Linguagens
• O conjunto de instruções, que será executado
pelo processador, é chamado de linguagem de
máquina.
• As linguagens de programação são
classificadas de acordo com a similaridade que
esta linguagem tem com a linguagem de
máquina.
Mais parecida
com linguagem
de programação.
Mais parecida
com linguagem
de máquina.
Linguagens
 Um computador compreende apenas linguagens
compostas por números 0’s e 1’s.
 Então imagina criar um programa utilizando apenas
esses números, isso seria extremamente complicado.
 Por esse motivo foi necessário a criação de um
código que relacionasse a linguagem de máquina a
uma linguagem mais fácil de ser compreendida.
 Dessa forma, foi criada uma linguagem de montagem
(chamada Assembly) que é um código que tem uma
instrução alfanumérica para cada instrução numérica
em linguagem de máquina.
Linguagem de baixo nível
Para que um programa criado na
linguagem Assembly possa ser entendido
pelo computador, é necessário que seu
código seja traduzido para o código de
máquina.
Esta tradução é realizada por um
programa chamado Assembler.
Código em
linguagem de
assembly.
Assembler
Código em
linguagem de
máquina.
Linguagem de baixo de nível
 Exemplo de um programa Assembly que muda o tamanho
do cursor:
.MODEL SMALL ;modelo de memória
.STACK ;espaço de memória para instruções do programa na pilha
.CODE ;as linhas seguintes são instruções do programa
mov ah,01h ;move o valor 01h para o registrador ah
mov cx,07h ;move o valor 07h para o registrador cx
int 10h ;interrupção 10h
mov ah,4ch ;move o valor 4ch para o registrador ah
int 21h ;interrupção 21h
END ;finaliza o código do programa
Linguagem de baixo nível
 Exemplo 2:
;exemplo2
.model small
.stack
.code
mov ah,2h ;move o valor 2h para o registrador ah
mov dl,2ah ;move o valor 2ah para o registrador dl
;(é o valor ASCII do caractere *)
int 21h ;interrupção 21h
mov ah,4ch ;função 4ch, sai para o sistema operacional
int 21h ;interrupção 21h
end ;finaliza o programa
 Este programa imprime o caracter * na tela.
Linguagem de baixo nível
 A linguagem Assembly é muito próxima da linguagem
de máquina, por esse motivo é considerada uma
linguagem de baixo nível.
 Cada processador apresenta uma linguagem de
Assembly. Dessa forma, quando for utilizado um
programa em processador não compatível com o
qual foi escrito inicialmente, é necessário que o
código tenha que ser refeito.
 Isso é chamado de portabilidade.
Linguagem de Programação
 A implementação de programas na linguagem de
baixo nível ainda é muito complexa. Então para
aumentar a produtividade dos programadores foram
criadas as linguagens de programação de alto nível.
 São linguagens que independem do processador,
apresentam um código mais elaborado, contemplam
operações mais complexas e mais próximas da
“lógica humana”.
 Entretanto, algumas dependem do sistema
operacional a ser executado.
Tradutor
 Para serem processadas por um processador
as linguagens fazem o uso de um tradutor
para a linguagem de máquina, chamado de
compilador ou interpretador.
Compilador
 Como é o funcionamento do compilador?
 O compilador a partir do código em linguagem de alto
nível, chamado de código fonte, gera um arquivo com o
código em linguagem de máquina, conhecido como
código-objeto.
 Esse código-objeto fica em disco e quando for o
momento da sua execução ele é carregado para a
memória.
Código fonte em
linguagem de
alto nível
Compilador
Código em
linguagem de
máquina.
Compilador
 Características:
 Traduz cada instrução de uma única vez,
independente de quantas vezes o programa é
executado.
 Tempo de execução mais rápido.
Interpretador
 O interpretador, diferente do compilador, não gera um
código-objeto, as instruções são traduzidas para a
linguagem de máquina em tempo de execução.
 Características:
Maior tempo de execução.
Não gera instruções que não serão utilizadas.
Código fonte em
linguagem de alto
nível
Interpretador
Memória
Tradução de cada
instrução na fase de
execução do programa
Linguagens de Baixo Nível
 Linguagens de baixo nível : são linguagens voltadas
para a máquina, isto é, são escritas usando as
instruções do microprocessador do computador.
Vantagens:
maior velocidade de processamento
menor espaço de armazenamento
Desvantagens:
pouca portabilidade
difícil programação
Linguagens de Alto Nível
 Linguagens de alto nível: são linguagens voltadas para o
ser humano.
◦ Vantagens:
 Por serem compiladas ou interpretadas, tem maior
portabilidade.
 A programação torna-se mais fácil.
◦ Desvantagens:
 Em geral, as rotinas geradas (em linguagem de
máquina) são mais genéricas e portanto mais
complexas e por isso são mais lentas e ocupam mais
memória.
 Exemplos de linguagem de alto nível: Pascal, C, Cobol,
Java, entre outras. Além disso, os códigos são portáveis.
JAVA
Como mencionado, algumas linguagens
de programação ficam dependentes ao
SO em que o código foi escrito.
A linguagem Java permite uma
portabilidade maior que as outras
linguagens de programação de alto nível.
Isso se deve ao fato de não gerar um
código objeto executável, em vez disso
ele gera um código “pseudo-executável”,
chamado de bytecode.
JAVA
 Para que esse código possa ser executado em
qualquer SO, é necessário que mais uma camada
de software esteja instalada.
 Essa camada funciona como um SO genérico, e
essa camada é chamada de Máquina Virtual Java,
ou Java Virtual Machine (JVM).
 Essa JVM faz a tradução dos bytecodes escritos em
Java para o código executável daquele SO, isso faz
com que qualquer programa escrito em Java possa
ser executado em qualquer SO que tenha a JVM
devidamente instalada.
JAVA
Máquina A
Código
fonte Java
Compilador
JVM
Memória
Máquina B
Bytecode
Assembly
Tradução de cada
instrução na fase de
execução do programa
Linguagem Natural
• Não se pode fazer um programa para um
computador na linguagem natural, ou seja,
do jeito que escrevemos. Pois a linguagem
natural é dirigida para orientar pessoas e
não máquinas, quem faz este papel é a
linguagem de programação.
• As linguagens de programação devem
apresentar algumas características, que
são:
Características da Linguagem
 Rigidez sintática: Um compilador consegue fazer traduções
sobre um idioma, com construções muito bem definidas.
 Rigidez semântica: O computador não pode lidar com
ambigüidades, dessa forma, um programador deve exprimir sua
intenção de forma exata.
◦ Exemplo: A pessoa ouviu o barulho da janela.
◦ Pode ser interpretado pelo menos de três maneiras:
 A velhinha ouviu o barulho produzido pela janela.
 A velhinha estava junto à janela e ouviu o barulho.
 A velhinha ouviu o barulho que veio através da janela.
 Qualquer máquina seria incapaz de interpretar o que realmente
está acontecendo, mesmo que o contexto pudesse ajudar. Por
isso, a rigidez semântica é extremamente importante.
Exercícios
1.
2.
3.
4.
5.
6.
7.
8.
9.
O que é um algoritmo?
Qual a diferença entre programa e aplicação?
Como é a arquitetura do computador moderno?
Qual a diferença entre linguagem de baixo nível e de
alto nível?
O que é linguagem de máquina?
O que é portabilidade?
Qual a diferença entre compilador e interpretador, cite
suas vantagens e desvantagens?
Qual a diferença do método de compilação Java?
Comente sobre as características que uma linguagem
de programação deve apresentar.
Download