Buscar

Linguagens_de_Programacao

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 36 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 36 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 36 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

LAPRO	I
Prof.	Dr.	Rafael	Garibotti
Pontifícia	Universidade	Católica	do	Rio	Grande	do	Sul	
Faculdade	de	Informática	- FACIN
v Baseado no	material	cedido pelos Profs.	Dr.	Marco	Mangan e	Dr.	Matheus	Trevisan
LINGUAGEM	DE	PROGRAMAÇÃO
AULA	SOBRE:
LINGUAGEM	DE	PROGRAMAÇÃO
1
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?
TIPOS	DE	LINGUAGENS	DE	PROGRAMAÇÃO
2
Ø Linguagem	de	alto	nível
ü Ex.:	C,	C#,	Objective-C,	Java,	Ruby,	Python,	Erlang,	
Clojure,	Prolog,	Processing.
Ø Linguagem	de	montagem	(assembly)
ü Ex.:	Microsoft	Macro	Assembler.
Ø Linguagem	de	máquina
ü Ex.:	conjunto	de	instruções para	processadores	Intel.
Contador	:=	0;
LDA	4
STA	A
0010	0100
0001	1010
TIPOS	DE	LINGUAGENS	DE	PROGRAMAÇÃO
3
Ø Linguagem	de	alto	nível
ü 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).	
Contador	:=	0;
TIPOS	DE	LINGUAGENS	DE	PROGRAMAÇÃO
4
Ø 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
TIPOS	DE	LINGUAGENS	DE	PROGRAMAÇÃO
5
Ø Linguagem	de	montagem	(assembly)
ü 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.
LDA	4
STA	A
TIPOS	DE	LINGUAGENS	DE	PROGRAMAÇÃO
6
Ø 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.
TIPOS	DE	LINGUAGENS	DE	PROGRAMAÇÃO
7
Ø Linguagem	de	montagem	(Assembly)
ORG 0
LDA ZERO
STA R
LAÇO : LDA OP2
JZ FIM
LDA R
ADD OP1
STA R
LDA OP2
ADD M1
STA OP2
JMP LAÇO
FIM : HLT
ORG 128
OP1 DEF BYTE
OP2 DEF BYTE
R DEF BYTE
ZERO DEF BYTE = 0
M1 DEF BYTE = -1
go to laço :
laço : if op2 = 0 go to fim
r := r + op1
op2 := op2 - 1
r := 0
TIPOS	DE	LINGUAGENS	DE	PROGRAMAÇÃO
8
Ø Linguagem	de	máquina
ü 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.
0010	0100
0001	1010
TIPOS	DE	LINGUAGENS	DE	PROGRAMAÇÃO
9
Ø 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
COMPILADOR
10
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).
Código-fonte Código-objeto
Entrada
Saída
Compilador Máquina
COMPILADOR
11
Ø 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.
LINGUAGEM	C
12
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
COMPILADOR	C
13
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).	
ETAPAS	DE	COMPILAÇÃO	EM	LINGUAGEM	C
14
Programa Fonte (.c)Editor	de	Texto
Compilador
Ligador ou	Linkeditor
Programa Objeto (.o)
Programa Executável
BibliotecaPadrão (.h)
Outras Bibliotecas (.h)
AMBIENTES	INTEGRADOS	DE	DESENVOLVIMENTO	(IDE)
15
Ø 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.
PROGRAMA
16
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.
PROGRAMA
17
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.
IMPLEMENTAÇÃO	DE	ALGORITMOS
ETAPAS	PARA	RESOLVER	UM	PROBLEMA
18
Definir	o	problema
Projetar	um	algoritmo para	
solucionar	o	problema
Editar	um	arquivo	fonte,	em	uma	
linguagem	de	programação
Compilar
Testar	e	depurar	o	programa	
gerado
Redefinir	o	problema
Erros	de	sintaxe
Erros	de	lógica
PASSOS	NA	CONSTRUÇÃO	DE	ALGORITMOS
19
Ø 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.
PASSOS	NA	CONSTRUÇÃO	DE	ALGORITMOS
20
Ø 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
PASSOS	NA	CONSTRUÇÃO	DE	ALGORITMOS
21
Ø Identificar	os	dados	de	saída
ü Qual	o	resultado	ou	resultados	esperados?
ü Exemplos: quantidade	de	mousse;	um	valor	inteiro	
representando	a	soma.
PASSOS	NA	CONSTRUÇÃO	DE	ALGORITMOS
22
Ø 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	construiralgoritmos	(sem	medo	
de	errar	e	sem	se	contentar	com	a	primeira	solução).
PASSOS	NA	CONSTRUÇÃO	DE	ALGORITMOS
23
Ø 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!
TESTE	DE	MESA
24
Ø 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.
PARADIGMAS	DE
LINGUAGENS	DE	PROGRAMAÇÃO
PARADIGMA	IMPERATIVO
25
Ø 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.
PARADIGMA	IMPERATIVO
26
Ø Exemplo: Linguagem	C
#include <stdio.h>
int main (void)
{
printf ("Ola! Eu estou vivo!\n");
return 0;
}
PARADIGMA	FUNCIONAL
27
Ø 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;
PARADIGMA	LÓGICO
28
Ø 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).
PARADIGMA	ORIENTADO	A	OBJETO	(OO)
29
Ø 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#.
PARADIGMA	ORIENTADO	A	OBJETO	(OO)
30
Ø 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);
}
}
ATIVIDADE
LABORATÓRIO
31
Ø As	atividades	do	laboratório	da	aula	de	hoje	estão no	Moodle.

Continue navegando