Você está na página 1de 36

Pontifícia

Universidade Católica do Rio Grande do Sul


Faculdade de Informática - FACIN

LAPRO I
Prof. Dr. Rafael Garibotti

v Baseado no material cedido pelos Profs. Dr. Marco Mangan e Dr. Matheus Trevisan
AULA SOBRE:

LINGUAGEM DE PROGRAMAÇÃO
LINGUAGEM DE PROGRAMAÇÃO
DEFINIÇÃO:
Ø Linguagem utilizada para enviar instruções a um computador. Como
qualquer linguagem, apresenta símbolos e regras para a combinação
desses símbolos. (adaptado de Downing et al. Dictionary of computer
and Internet terms).
Quais linguagens de
programação vocês
conhecem?

1
TIPOS DE LINGUAGENS DE PROGRAMAÇÃO

Ø Linguagem de alto nível


ü Ex.: C, C#, Objective-C, Java, Ruby, Python, Erlang, Contador := 0;
Clojure, Prolog, Processing.

Ø Linguagem de montagem (assembly) LDA 4


ü Ex.: Microsoft Macro Assembler. STA A

Ø Linguagem de máquina
0010 0100
ü Ex.: conjunto de instruções para processadores Intel. 0001 1010

2
TIPOS DE LINGUAGENS DE PROGRAMAÇÃO
Ø Linguagem de alto nível Contador := 0;
ü São linguagens voltadas para o usuário (programador).
ü Os comandos das linguagens apresentam um nível mais alto de abstração e
próximos da linguagem humana.
ü Necessitam de programas especiais (compiladores ou interpretadores) para traduzir
o código para linguagem de máquina.
ü Vantagens: têm maior portabilidade podendo ser executadas em várias plataformas
com pouquíssimas modificações; não exigem conhecimento do código de máquina.
ü Desvantagens: as rotinas geradas são mais genéricas e portanto mais complexas e
por isso são mais lentas e ocupam mais memória (o código não é tão otimizado).
3
TIPOS DE LINGUAGENS DE PROGRAMAÇÃO
Ø Linguagem de alto nível
Begin
var op1, op2, r: integer;
r := 0;
while op2 > 0 do
begin
r := r + op1;
op2 := op2 - 1;
end
End

4
TIPOS DE LINGUAGENS DE PROGRAMAÇÃO
Ø Linguagem de montagem (assembly) LDA 4
STA A
ü São linguagens voltadas para a máquina e para o usuário.
ü São linguagens intermediárias entre a linguagem de máquina e a linguagem de
alto nível.
ü As instruções são simplificações da linguagem de máquina que usam código
mnemônicos (em inglês).
ü Vantagens: comandos com sintaxe mais inteligível que nas linguagens de
máquina.
ü Desvantagens: alguns mnemônicos ainda são de difícil compreensão; ainda
dependente da arquitetura do computador em questão.
5
TIPOS DE LINGUAGENS DE PROGRAMAÇÃO
Ø Linguagem intermediária
Begin
var op1, op2, r: integer;
r := 0;
laço : if op2 = 0 go to fim;
r := r + op1;
op2 := op2 - 1;
go to laço;
fim: End.

6
TIPOS DE LINGUAGENS DE PROGRAMAÇÃO
Ø Linguagem de montagem (Assembly)
ORG 0
r := 0
LDA ZERO
STA R
LAÇO : LDA OP2
JZ FIM laço : if op2 = 0 go to fim
LDA R
ADD OP1 r := r + op1
STA R
LDA OP2
ADD M1 op2 := op2 - 1
STA OP2
JMP LAÇO
FIM : HLT go to laço :
ORG 128
OP1 DEF BYTE
OP2 DEF BYTE
R DEF BYTE
ZERO DEF BYTE = 0
M1 DEF BYTE = -1 7
TIPOS DE LINGUAGENS DE PROGRAMAÇÃO
Ø Linguagem de máquina 0010 0100
0001 1010
ü São linguagens voltadas para a máquina.
ü São baseadas no código binário utilizado diretamente pelo computador.
• Cadeias de 0s e 1s.
ü As instruções variam de processador para processador.
ü Vantagens: produz o único conjunto de instruções que um computador entende sem
um tradutor, criando códigos concisos e eficientes além de serem consideravelmente
menores do que uma versão escrita em C.
ü Desvantagens: pouca portabilidade (em geral, um programa para um processador não
serve para outro); programas não são estruturados e de difícil compreensão;
manutenção e correção de erros extremamente difícil.
8
TIPOS DE LINGUAGENS DE PROGRAMAÇÃO
Ø Linguagem de máquina
end.mem.
0 2 83
2 1 82
4 2 81
6 A 16
8 2 82
A 3 80
C 1 82
E 2 81
10 3 84
12 1 81
14 8 4
16 F
9
COMPILADOR
DEFINIÇÃO:
Ø Um programa de computador que recebe um texto em uma linguagem e
gera texto equivalente em outra linguagem. O texto usado na entrada é
chamado de código-fonte e o texto na saída é chamado de código-objeto
(adaptado de Downing et al. Dictionary of computer and Internet terms).

Entrada

Código-fonte Compilador Código-objeto Máquina

Saída 10
COMPILADOR

Ø Durante a compilação, o código fonte é analisado (análise léxica,


sintática e semântica), é gerado um código intermediário e são
construídas tabelas de símbolos, alocam-se as áreas de memória para
variáveis e atribui-se os registradores a serem utilizados, e é
finalmente gerado o código objeto em linguagem binária de máquina.
Ø Em alguns compiladores, é gerado um código intermediário em
Assembly (que pode ser visualizado pelo programador) e que em
seguida passa pelo montador para gerar finalmente o código objeto
em linguagem de máquina.
11
LINGUAGEM C
DEFINIÇÃO:
Ø Uma linguagem de programação desenvolvida na década de 1970. Um
compilador C é parte do sistema operacional UNIX e boa parte do código
do UNIX é escrito em C. A linguagem oferece pleno acesso à
representação interna dos dados do computador, o que permite
alcançar a maior eficiência disponível em um determinado computador.
(adaptado de Downing et al. Dictionary of computer and Internet terms).

Ø Uma das linguagens mais utilizadas no mundo!


ü http://www.lextrait.com/vincent/implementations.html
12
COMPILADOR C

DEFINIÇÃO:
Ø Um compilador que recebe um texto escrito em linguagem C e gera
um novo texto em linguagem de montagem ou linguagem de máquina
(adaptado de Downing et al. Dictionary of computer and Internet
terms).

13
ETAPAS DE COMPILAÇÃO EM LINGUAGEM C
Editor de Texto Programa Fonte (.c)

Compilador

Programa Objeto (.o)


Biblioteca Padrão (.h)
Ligador ou Linkeditor
Outras Bibliotecas (.h)
Programa Executável
14
AMBIENTES INTEGRADOS DE DESENVOLVIMENTO (IDE)

Ø Code::Blocks / QT Creator
Ø Eclipse / Netbeans
Ø Xcode
Ø Visual Studio

ü Não incentivaremos nenhuma IDE nesta disciplina. Pelo contrário,


visamos a compilação manual dos códigos-fontes atrás de comandos
usando um terminal.
15
PROGRAMA
DEFINIÇÃO:
Ø Um conjunto instruções que pode ser executado por um computador
(adaptado de Downing et al. Dictionary of computer and Internet
terms).

q Aplicações ou aplicativos: programas que realizam tarefas de interesse


do usuário. Ex.: processadores e editores de texto, planilhas eletrônicas,
sistemas de informação.
q Utilitários ou sistemas: programas que realizam tarefas relacionadas
com o computador. Ex.: sistemas operacionais, antivírus, compiladores.
16
PROGRAMA
FLUXO:
1. Início
2. Entrada
3. Processamento
4. Saída
5. Término

Ø Adaptado de Jack Purdum, Beginning C for Arduino, The Five


Programming Steps.
17
IMPLEMENTAÇÃO DE ALGORITMOS
ETAPAS PARA RESOLVER UM PROBLEMA
Definir o problema

Projetar um algoritmo para


solucionar o problema

Editar um arquivo fonte, em uma


Redefinir o problema
linguagem de programação

Erros de sintaxe

Compilar

Testar e depurar o programa Erros de lógica


gerado
18
PASSOS NA CONSTRUÇÃO DE ALGORITMOS

Ø Conhecer o problema
ü Pensar sobre o que exatamente precisa ser resolvido;
ü Focar no que deve ser obtido, nas restrições existentes, etc...
e não em como resolver o problema;
ü Exemplos: fazer um mousse de chocolate; somar dois
números.

19
PASSOS NA CONSTRUÇÃO DE ALGORITMOS

Ø Identificar os dados de entrada


ü Responder:
• Quais valores ou informações precisam ser conhecidos
para resolver o problema?
• Que valores ou informações mudariam para diferentes
instâncias do problema?
ü Exemplos: quantidade de chocolate, açúcar, etc; dois
números inteiros
20
PASSOS NA CONSTRUÇÃO DE ALGORITMOS

Ø Identificar os dados de saída


ü Qual o resultado ou resultados esperados?
ü Exemplos: quantidade de mousse; um valor inteiro
representando a soma.

21
PASSOS NA CONSTRUÇÃO DE ALGORITMOS

Ø Construir o algoritmo
ü Deve-se pensar os diversos passos para resolver o problema.
ü Normalmente é possível resolver o problema de mais de uma
maneira, ou seja, é possível ter mais de um algoritmo para resolver o
mesmo problema.

ü Para aprender a programar, é preciso construir algoritmos (sem medo


de errar e sem se contentar com a primeira solução).

22
PASSOS NA CONSTRUÇÃO DE ALGORITMOS

Ø Testar o algoritmo
ü Fundamental realizar o chamado teste de mesa!
• SEM usar o computador!
ü Não tenha preguiça de fazer o algoritmo no papel e fazer o teste de
mesa, muita dor de cabeça será evitada!

23
TESTE DE MESA
Ø O teste de mesa é feito:
ü Escolhendo valores para as variáveis de entrada;
ü Seguindo cada uma das etapas do algoritmo;
ü Verificando a correção da(s) saída(s).

Ø Observação: Com programas pode-se usar o recurso de depuração


(debug), mas esse é usado para detectar problemas. A área de
Engenharia de Software tem estudos que mostram que quanto antes
um erro for detectado, menor é o custo de correção.
24
PARADIGMAS DE
LINGUAGENS DE PROGRAMAÇÃO
PARADIGMA IMPERATIVO

Ø O modelo Imperativo é baseado na perspectiva do computador: a


execução sequencial de comandos e o uso de dados são conceitos
baseados no modo como os computadores executam programas no
nível de linguagem de máquina.
Ø Este modelo é o predominante.
Ø As linguagens imperativas são de fácil tradução.
Ø Exemplos: FORTRAN, COBOL, ALGOL 60, APL, BASIC, PL/I, SIMULA 67,
PASCAL, C e ADA.

25
PARADIGMA IMPERATIVO

Ø Exemplo: Linguagem C

#include <stdio.h>
int main (void)
{
printf ("Ola! Eu estou vivo!\n");
return 0;
}

26
PARADIGMA FUNCIONAL

Ø O modelo Funcional focaliza o processo de resolução do problema. A


visão funcional resulta num programa que descreve as operações
(funções) que devem ser efetuadas para resolver o problema.
Ø Baseia-se no conceito matemático de função, que é um mapeamento
de um conjunto A num conjunto B.
Ø Exemplos: ML, LISP, HASKELL.
fun soma ( x: int, y: int) = x + y;
fun divide ( x:int , y: int) = x div 2;
fun media m n = divide(soma(m,n), 2);
media 4 2; 27
PARADIGMA LÓGICO
Ø O modelo Lógico está relacionado à perspectiva da pessoa: ela encara o
problema de uma perspectiva lógica.
Ø Um programa lógico é equivalente à descrição do problema expressa de
maneira formal, similar à maneira que o ser humano raciocinaria sobre ele.
Ø Escrever um programa é como provar um teorema.
Ø Exemplo: PROLOG.
colega(carlos,alex).
colega(carlos,rafael).
colega(carlos,pedro).
colega(pedro,paulo).
lista_colega(C,L):-bagof(X, colega(C,X), L).
28
PARADIGMA ORIENTADO A OBJETO (OO)

Ø O modelo Orientado a Objeto focaliza mais o problema, baseado na união


dos conceitos de dados e operações.
Ø Um programa OO é equivalente a objetos que mandam mensagens entre
si. Os objetos do programa equivalem aos objetos da vida real (problema).
Ø A primeira linguagem OO foi Simula, desenvolvida em 1966 e depois
refinada em Smalltalk. Existem algumas linguagens híbridas: Modelo
Imperativo mais características de Orientação a Objetos (OO), assim como
C++.
Ø Exemplos: Simula, Smalltalk, Object Pascal, C++, Java, Visual Basic, C#.
29
PARADIGMA ORIENTADO A OBJETO (OO)
Ø Exemplo: JAVA
class Pessoa {
private String nome;
private int idade;

public Pessoa(String n, int i){


nome = n;
idade = i;
}

public void imprime(){


System.out.println(“Nome: “ + nome);
System.out.println(“Idade: “ + idade);
}
}
30
ATIVIDADE
LABORATÓRIO

Ø As atividades do laboratório da aula de hoje estão no Moodle.

31

Você também pode gostar