Buscar

Introdução a Algoritmos

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

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

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ê viu 3, do total de 52 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

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

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ê viu 6, do total de 52 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

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

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ê viu 9, do total de 52 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

Prévia do material em texto

UFRN
Escola de Ciências e Tecnologia
Introdução a Algoritmos
ECT1103 – INFORMÁTICA FUNDAMENTAL
2011.1 1
• Manter o telefone celular sempre 
desligado/silencioso quando estiver em 
sala de aula;
• Nunca atender o celular na sala de aula.
2
Objetivo da Aula
• Apresentar conceitos de desenvolvimento de Software
• Apresentar conceitos de licenças de software
• Introduzir o conceito de algoritmos;
• Descrever as formas de representação de um algoritmo.
3
O que é Software?
• Parte lógica do Sistema Computacional
– São instruções ordenadas de forma lógica que informam tarefas a 
serem executadas pelo Hardware.
4
O que é Software?
Analogia: Receita de bolo
Receita de Bolo
De Chocolate
1° bater ingredientes 
no liquidificador
2° untar forma
3° Colocar no forno
Código Fonte
Main(){
Int x;
Int y;
…
} 
5
Como um programa é criado?
Compilador
Interpretador
Programa 
ExecutávelCódigo
Fonte
Main {
Func()
} 
Linguagem de
programação
Linguagem de 
Máquina
6
Voltando a analogia do bolo ….
7
O que pode ser feito com o bolo pronto?
• Problemas:
– E se o sabor não lhe agrada?
– E se você gostaria com recheio de laranja?
• Você vai ter que comprar outro bolo!
• E se ninguém faz o bolo que você quer?
8
O que pode ser feito com a receita do bolo?
 Aprender a fazer um bolo
 Mudar ingredientes
 Produzir novos bolos
 Vender bolos 
9
O que pode ser feito com um programa ?
 Executar
 Mas, e se o programa que eu comprei só roda em 
Sistema A e eu estou usando Sistema B?
 Posso aprender?
 Posso consertar?
 Posso emprestar?
 Posso vender?
A
B
10
O que pode ser feito com um código ?
 Aprender como o programa é feito
 Alterar sua funcionalidade
 Acrescentar funcionalidade
 Consertar
 Distribuir ?
 Gerar o programa
Código 
Fonte
Main(){
Int x;
Int y;
…
} 
11
Licença de Software
 Todo software possui uma licença. 
 A licença é que lhe dá diretos e deveres em relação ao 
software. 
 Quando você clica em “Eu aceito” está assinando um 
compromisso com o distribuidor/produtor daquele software.
12
13
Tipos de Software (Baseado na licença)
Software Proprietário
 Licença: 
 Concessão de uso
 Software não é seu
 Usuário só tem acesso 
ao programa
Software Livre
 Licença: 
 Liberdade de uso
 Livre acesso ao código 
fonte
Para refletir...
Vocês lembram da diferença entre
SÓ TER o bolo 
e
TER a RECEITA do bolo?
14
Liberdades do Software Livre
 A principal licença de SL é a GPL (General Public
License – Licença Pública Geral):
 Uso
 Estudo
 Modificação
 (Re)distribuição
15
Liberdade de Uso
 Usar o Software para qualquer finalidade desejada;
 Pode ser usado para finalidade não projetada
16
Liberdade de Uso
 Em software Proprietário, mesmo você tendo pago, 
você não pode utilizá-lo para fins não especificados 
na licença
 Caso contrário, você estará infringindo o acordo
17
18
Liberdade de Estudo
 Programadores passam 
a ter um arsenal 
enorme de códigos 
para estudo.
 Como uma biblioteca
de exemplos para 
desenvolvedores
 Permite: aprendizagem, 
treinamento, 
qualificação
Para refletir
Software proprietário não está disponível para estudo
O que você pensa sobre a patente de idéias? 
 E se os grandes pesquisadores tivessem patenteado suas 
idéias?
Isaac Newton
Thomas Edson
 Einstein
19
Para refletir
 E se você tivesse que adquirir uma licença para:
 Usar a fórmula da gravidade
 Calcular a inércia do seu veículo
 É isso que acontece quando você adquire uma 
licença de software proprietário
 E estudar as Leis de Newton e a Teoria da 
Relatividade?
 Nem com a licença proprietária você pode estudar o 
código!
20
Liberdade de Modificar
 Alterar e aprimorar o Software
 Para corrigir falhas e vulnerabilidades
 Adaptação para realidade da empresa / comunidade / 
usuário;
21
Liberdade de (Re)distribuição
 Livre compartilhamento
 Copiar
 Distribuir
 Vender
22
Quem usa Software Livre
http://www-
03.ibm.com/linux/ossstds/
http://code.google.com/intl/pt-
BR/opensource/
http://wiki.developers.facebook.com/index.php/Open_source_p
rojects
http://www.opensource.apple.c
om/
http://twitter.com/about/openso
urce
http://www.microsoft.com/opensou
rce/
23
Onde SL é usado
24
Porque empresas usam SL
 Modelo Proprietário
 Número limitado de desenvolvedores
 Alto custo por desenvolvedor
 Termos de Sigilo entre empresa e desenvolvedor
 Criar software é caro
 Manter é mais caro ainda
25
Porque empresas usam SL
 Modelo Software Livre
 Investem parte dos seus funcionários, mas ganham a 
produção de vários desenvolvedores ao redor do mundo
 Recebem o resultado completo do desenvolvimento 
colaborativo
 Muitos usuários testando
 Mais sustentável
 Melhor qualidade
 Mais robusto
 Tempo de correção de erros menor
26
Porque empresas usam SL
 Para refletir
 Quanto custa para uma empresa com 500 computadores 
as licenças do Windows e Office?
 Se existe uma vulnerabilidade no Windows e ela não é 
corrigida, como fica a segurança da sua empresa?
 E se a empresa que vendeu o software não presta serviço 
de suporte adequadamente?
 E se sua empresa depende de um software proprietário 
para funcionar?
27
Algoritmos
28
Por Que Estudar Construção de Algoritmos?
• Problema: Como construir uma trave de madeira?
29
Etapas da Solução do Problema
• Análise – Etapa em que o problema a ser resolvido é
estudado em detalhes para definição dos materiais e
passos necessários para a sua resolução;
• Algoritmo – Utilização de ferramentas para descrever
o problema com suas soluções:
– Ferramentas: descrição narrativa, fluxograma ou português
estruturado.
30
Por Que Estudar Construção de Algoritmos?
• Análise: o que eu preciso para resolver tal problema?
– Material: madeira e ferramentas.
31
Por Que Estudar Construção de Algoritmos?
• Análise: 
– Usar pregos ou parafusos?
– Esta decisão implica em usar martelo ou chave de fenda.
32
Definir Passos
1 - Serrar a madeira para ficar no 
tamanho desejado:
2 – Pregar as pontas formando a trave:
33
Algoritmos - Definição
• Uma sequência de passos que visa atingir um 
objetivo bem definido;
• Tem como objetivo representar o raciocínio (ordem 
dos passos) envolvido na realização de uma tarefa;
• Exemplo (Colocar um carro em movimento):
– Colocar a chave na ignição e dar partida no motor;
– Pisar na embreagem;
– Passar a primeira marcha;
– Soltar a embreagem lentamente, enquanto pisa no 
acelerador.
34
Algoritmos – Exemplos
• Enviar mensagem SMS.
• Enviar email.
• Acessar o facebook/orkut.
• Golpes especiais em jogos de luta (Street Fighters).
• Ensinar a mãe a usar o computador.
• Ordens para o irmão mais novo.
35
Algoritmos - Características
• Finitude: algoritmos devem terminar após um número 
finito de passos;
• Definição: cada passo deve ser precisamente definido;
• Entradas: devem ter zero ou mais entradas;
• Saídas: devem ter uma ou mais saídas;
• Efetividade: todas as operações devem ser simples de 
modo que possam ser executadas em um tempo 
limitado.
36
Exemplo de Problema
• Defina um programa que receba dois números pelo 
teclado, calcule a média aritmética destes dois números e 
imprima o resultado no monitor;
• Quais ferramentas posso utilizar para definir meu 
algoritmo ?
Leia, some, divida, 
escreva, compare, 
multiplique, subtraia
37
Formas de Representação de Algoritmos
• Descrição Narrativa;
• Fluxograma;
• Pseudocódigo;
• Linguagens de programação.
38
Formas de Representação de Algoritmos
• Descrição Narrativa:
– Uso da linguagem natural;
– Temos a inconveniência da má interpretação, originando 
ambigüidades e imprecisões;
– Exemplo: a troca de um pneu furado;
– Analisar as ambigüidades e imprecisões.
39
Descrição Narrativa
• Algoritmo:
– afrouxar ligeiramente as porcas;
– suspender o carro;
– retirar as porcas e o pneu;
– colocar o pneu reservae as porcas;
– abaixar o carro;
– dar o aperto final nas porcas.
40
Descrição Narrativa
• Algoritmo:
– afrouxar ligeiramente as porcas;
• Afrouxar quanto? Com que? Que porcas?
– suspender o carro;
• Como? Quanto?
– retirar as porcas e o pneu;
• De onde?
– colocar o pneu reserva e as porcas;
• Onde?
– abaixar o carro;
– dar o aperto final nas porcas.
• Quais?
41
Conceitos Fundamentais
• Algoritmo:
– De modo a torná-lo não ambíguo, é necessária uma 
formalização;
– Definição de regras de semântica e sintaxe.
42
Fluxograma 
• Uso de formas geométricas distintas produzindo 
ações distintas: 
Início ou fim do fluxograma;
Entrada de dados;
Cálculo de expressões;
Saída de resultados;
Tomada de decisão;
Fluxo. 
43
Fluxograma
44
Pseudocódigo
• Uso de linguagem própria, aproximando-se mais das 
linguagens de alto nível, chamado, também de 
pseudolinguagem ou ainda portugol;
• Forma geral:
algoritmo nome_do_algoritmo ;
variaveis
< declaração_de_variáveis >;
fim-variaveis
inicio
< instruções > ;
fim
45
Pseudocódigo
• algoritmo Media_do_aluno;
variaveis
m1, m2, m3, media: real;
fim-variaveis
inicio
m1 := leia( );
m2 := leia( );
m3 := leia( );
media := ((m1*4)+(m2*5)+(m3*6))/15;
se media >= 7 então
imprima(“APROVADO”)‏;
senão
imprima(“REPROVADO”)‏;
fim-se
fim
46
Linguagens de Programação
• Linguagens de programação:
– Uma linguagem de programação é um método 
padronizado para descrever instruções para um 
computador;
– É um conjunto de regras sintáticas e semânticas usadas 
para definir um programa de computador. 
47
Linguagens de Programação
• Linguagens de baixo nível:
– Linguagens de máquina, assembly.
• Linguagens de alto nível:
– Fortran, Cobol, C, C++, Java, Python, Basic, Pascal, etc.
48
Conceitos Básicos
• Baixo nível:
– Código otimizado;
– Indicado para situações em que seja necessário explorar 
com mais profundidade os recursos da máquina.
• Alto nível:
– Facilidade na programação do algoritmo;
– Portabilidade;
– Manutenção do código.
49
Linguagens de alto Nível
• Exemplo usando a linguagem C/C++:
#include <iostream>
using namespace std;
int main() {
float N1, N2, media; 
media = (N1+N2)/2.0;
return 0;
}
50
51
Site
• http://www.ect.ufrn.br/modulo/ect1103/
52

Outros materiais