Buscar

apresentacao_aula_10

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 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

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 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

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 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

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Fundamentos de Computação
Bruno Feres de Souza
bferes@gmail.com
Universidade Federal do Maranhão
Bacharelado em Ciência e Tecnologia
1° semestre de 2013
Na aula passada...
● Informalmente: receita de bolo
Algoritmos
Algoritmo:
1) Bater duas claras
2) Adicionar duas gemas
3) Adicionar uma xícara de açúcar
4) Adicionar duas colheres de manteiga
5) Adicionar uma xícara de leite de coco
6) Adicionar farinha e fermento
7) Colocar numa forma e levar ao forno por 20 minutos
Algoritmos 
 
 PROCEDIMENTO passo a passo para resolver um 
problema 
 
 
 Pessoas tem inteligência e habilidade racional => fazem 
PERGUNTAS para se esclarecer. 
 
 
 Computador não tem senso próprio => deve receber 
instruções explícitas (ALGORITMOS) 
Algoritmos 
 
 
 Um algoritmo correto deve possuir 3 qualidades: 
 
1) Cada passo do algoritmo deve ser uma INSTRUÇÃO 
que possa ser realizada 
 
2) A ORDEM dos passos deve ser precisamente 
determinada 
 
3) O algoritmo deve ter FIM 
Natureza dos passos dos algoritmos 
 
 Num algoritmo os passos podem pertencer a uma das 
três naturezas: 
 
 1) Estrutura elementar ou sequencial; 
 
 2) Estrutura de seleção (decisão) ou condicional; 
 Determina qual sequência de passos será executada 
 
 3) Estrutura de repetição. 
 Determina quantas vezes um passo será executado. 
● Linguagem natural
– Os algoritmos são expressos diretamente na linguagem natural 
(por exemplo, português como no exemplo do bolo)
● Fluxograma (ou Diagrama de Fluxo)
– Esta é uma representação gráfica que emprega formas 
geométricas padronizadas para indicar as diversas ações e 
decisões que devem ser executadas para resolver o problema
● Pseudo-código
– Emprega uma linguagem intermediária entre a linguagem 
natural e uma linguagem de programação para descrever os 
algoritmos 
Algoritmos
Formas de representação
Estrutura de programa: Fluxograma 
 
 Algoritmo para trocar o pneu de um carro 
Início 
Fim 
Trocar Pneu 
Estrutura de programa: Fluxograma 
Início 
Fim 
Trocar Pneu 
E se o estepe estiver 
vazio!? 
Isso demanda uma 
decisão entre dois 
cursos possíveis 
 
 Algoritmo para trocar o pneu de um carro 
Estrutura de programa: Fluxograma 
Início 
Fim 
Estepe 
vazio? 
Chamar o 
borracheiro 
Trocar Pneu 
Estrutura 
condicional 
sim não 
 
 Algoritmo para trocar o pneu de um carro 
Estrutura de programa: Fluxograma 
Início 
Fim 
Estepe 
vazio? 
Chamar o 
borracheiro 
Trocar Pneu 
Estrutura 
condicional 
sim não 
É certo que esse 
processo poderia 
ser melhor 
detalhado 
 
 Algoritmo para trocar o pneu de um carro 
Estrutura de programa: Fluxograma 
Início 
Fim 
Estepe 
vazio? 
Chamar o 
borracheiro 
Levantar o carro 
sim não 
Desparafusar a 
roda 
Remover a roda 
Colocar o estepe 
Parafusar a roda 
Abaixar o carro 
Estrutura seqüencial 
 
 Algoritmo para trocar o pneu de um carro 
Estrutura de programa: Fluxograma 
Início 
Fim 
Estepe 
vazio? 
Chamar o 
borracheiro 
Levantar o carro 
sim não 
pode ser detalhado 
Desparafusar a 
roda 
Remover a roda 
Colocar o estepe 
Parafusar a roda 
Abaixar o carro 
pode ser detalhado 
Estrutura seqüencial 
 
 Algoritmo para trocar o pneu de um carro 
Estrutura de programa: Fluxograma 
Início 
Fim 
Estepe 
vazio? 
Chamar o 
borracheiro 
Levantar o carro 
sim não 
Desparafusar 
 a roda 
Remover a roda 
Colocar o estepe 
Parafusar 
 a roda 
Abaixar o carro 
Desapertar o parafuso 1 
Desapertar o parafuso 2 
Desapertar o parafuso 3 
Desapertar o parafuso 4 
Apertar o parafuso 1 
Apertar o parafuso 2 
Apertar o parafuso 3 
Apertar o parafuso 4 
É uma 
repetição 
inconveniente 
É uma 
repetição 
inconveniente 
 
 Algoritmo para trocar o pneu de um carro 
Estrutura de programa: Fluxograma 
Início 
Fim 
Estepe 
vazio? 
Chamar o 
borracheiro 
Levantar o carro 
sim não 
Remover a roda 
Colocar o estepe 
Abaixar o carro 
Existe parafuso para desapertar? 
Desapertar parafuso 
sim 
não 
Existe parafuso para apertar? 
Apertar parafuso 
sim 
não 
Estrutura de 
repetição 
Estruturas de repetição 
(laço ou loop) 
Estrutura de programa: Fluxograma 
sim não 
sim 
não 
 Estrutura sequencial 
 Estrutura condicional 
 Estrutura de repetição 
Pseudo-código 
 
 
 Características: 
 
 1) Utiliza palavras-chave já definidas que indicam a 
natureza da operação a ser realizada; 
 
 2) Utiliza tabulação no começo de cada passo para 
ressaltar a estrutura do algoritmo 
 
 Exemplo: Soma de dois números 
 
 
Início 
 Pegar primeiro número 
 Pegar segundo número 
 Somar o primeiro com o segundo número 
 Mostrar o resultado 
Fim 
Pseudo-código 
 
 Algoritmo para trocar o pneu de um carro 
 
 
Início 
Trocar Pneu 
Fim 
 
 
Pseudo-código 
 
 Algoritmo para trocar o pneu de um carro 
 
 Início 
 se <o estepe está vazio> então 
 chamar borracheiro 
 senão 
 mudar o pneu 
 fim se 
Fim 
Estrutura condicional 
Pseudo-código 
Início 
 se <o estepe está vazio> então 
 chamar borracheiro 
 senão 
 mudar o pneu 
 fim se 
Fim 
 
 Algoritmo para trocar o pneu de um carro 
 
 
Estrutura condicional 
Pseudo-código 
Início 
 se <o estepe está vazio> então 
 chamar borracheiro 
 senão 
 levantar o carro 
 desparafusar a roda 
 remover a roda 
 colocar o estepe 
 parafusar a roda 
 abaixar o carro 
 fim se 
Fim 
Estrutura sequencial 
Pseudo-código 
Início 
 se <o estepe está vazio> então 
 chamar borracheiro 
 senão 
 levantar o carro 
 desparafusar a roda 
 remover a roda 
 colocar o estepe 
 parafusar a roda 
 abaixar o carro 
 fim se 
Fim 
Estrutura sequencial 
Pseudo-código 
Início 
 se <o estepe está vazio> então 
 chamar borracheiro 
 senão 
 levantar o carro 
 desparafusar o 1o parafuso 
 desparafusar o 2o parafuso 
 desparafusar o 3o parafuso 
 desparafusar o 4o parafuso 
 remover a roda 
 colocar o estepe 
 parafusar o 1o parafuso 
 parafusar o 2o parafuso 
 parafusar o 3o parafuso 
 parafusar o 4o parafuso 
 abaixar o carro 
 fim se 
Fim 
Estrutura sequencial 
Pseudo-código 
Início 
se <o estepe está vazio> então 
 chamar borracheiro 
senão 
 levantar o carro 
 enquanto <houver parafuso para desapertar> faça 
 desparafusar a roda 
 fim enquanto 
 remover a roda 
 colocar o estepe 
 enquanto <houver parafuso para apertar> faça 
 parafusar a roda 
 fim do enquanto 
 abaixar o carro 
fim se 
Fim 
Estrutura de repetição 
Estrutura de repetição 
Pseudo-código 
 
 Algoritmo para trocar uma lâmpada no teto 
 
 
Início 
remova a lâmpada queimada 
coloque a nova lâmpada 
Fim 
 
 
Pseudo-código 
 
 O que é necessário para remover a lâmpada queimada? 
 
– posicione a escada debaixo da lâmpada queimada 
– suba na escada até que a lâmpada possa ser alcançada 
– gire a lâmpada queimada no sentido anti-horário até que 
se solte 
 
 
 
Pseudo-código 
 
 O que é necessário para colocar uma lâmpada nova? 
 
– escolha uma lâmpada da mesmapotência da queimada 
– posicione a nova lâmpada no soquete 
– gire a lâmpada no sentido horário até que ela se firme 
– desça a escada 
 
 
Pseudo-código 
Início 
 posicione a escada debaixo da lâmpada queimada 
 suba na escada até que a lâmpada possa ser alcançada 
 gire a lâmpada queimada no sentido anti-horário até que se solte 
 remova a lâmpada queimada 
 escolha uma lâmpada da mesma potência da queimada 
 posicione a nova lâmpada no soquete 
 gire a lâmpada no sentido horário até que ela se firme 
 desça a escada 
Fim 
Pseudo-código 
Início 
 posicione a escada debaixo da lâmpada queimada 
 suba na escada até que a lâmpada possa ser alcançada 
 gire a lâmpada queimada no sentido anti-horário até que se solte 
 remova a lâmpada queimada 
 escolha uma lâmpada da mesma potência da queimada 
 posicione a nova lâmpada no soquete 
 gire a lâmpada no sentido horário até que ela se firme 
 desça a escada 
Fim 
Pseudo-código 
Início 
 posicione a escada debaixo da lâmpada queimada 
 suba na escada até que a lâmpada possa ser alcançada 
 gire a lâmpada queimada no sentido anti-horário até que se solte 
 remova a lâmpada queimada 
 escolha uma lâmpada da mesma potência da queimada 
 posicione a nova lâmpada no soquete 
 gire a lâmpada no sentido horário até que ela se firme 
 desça a escada 
Fim 
Diversos passos deste algoritmo implicam 
operações mais elaboradas que devem ser 
expressas explicitamente 
Pseudo-código 
Início 
 posicione a escada debaixo da lâmpada queimada 
 suba na escada até que a lâmpada possa ser alcançada 
 gire a lâmpada queimada no sentido anti-horário até que se solte 
 remova a lâmpada queimada 
 escolha uma lâmpada da mesma potência da queimada 
 posicione a nova lâmpada no soquete 
 gire a lâmpada no sentido horário até que ela se firme 
 desça a escada 
Fim 
Pseudo-código 
suba na escada até que lâmpada possa ser alcançada 
enquanto <não alcançar a lâmpada> faça 
 suba um degrau da escada 
fim enquanto 
Pseudo-código 
Início 
 posicione a escada debaixo da lâmpada queimada 
 suba na escada até que a lâmpada possa ser alcançada 
 gire a lâmpada queimada no sentido anti-horário até que se solte 
 remova a lâmpada queimada 
 escolha uma lâmpada da mesma potência da queimada 
 posicione a nova lâmpada no soquete 
 gire a lâmpada no sentido horário até que ela se firme 
 desça a escada 
Fim 
Pseudo-código 
gire a lâmpada queimada no sentido anti-horário até que se solte 
enquanto <a lâmpada não se soltar> faça 
 gire a lâmpada no sentido anti-horário 
fim enquanto 
Pseudo-código 
Início 
 posicione a escada debaixo da lâmpada queimada 
 suba na escada até que a lâmpada possa ser alcançada 
 gire a lâmpada queimada no sentido anti-horário até que se solte 
 remova a lâmpada queimada 
 escolha uma lâmpada da mesma potência da queimada 
 posicione a nova lâmpada no soquete 
 gire a lâmpada no sentido horário até que ela se firme 
 desça a escada 
Fim 
Pseudo-código 
escolha uma lâmpada da mesma potência da queimada 
posicione a nova lâmpada no soquete 
gire a lâmpada no sentido horário até que ela se firme 
desça a escada 
se <tiver lâmpada da mesma potência> 
 então selecione a lâmpada 
 posicione a nova lâmpada no soquete 
 gire a lâmpada no sentido horário até que se firme 
 desça a escada 
senão desça a escada 
fim se 
Pseudo-código 
escolha uma lâmpada da mesma potência da queimada 
posicione a nova lâmpada no soquete 
gire a lâmpada no sentido horário até que ela se firme 
desça a escada 
se <tiver lâmpada da mesma potência> 
 então selecione a lâmpada 
 posicione a nova lâmpada no soquete 
 gire a lâmpada no sentido horário até que se firme 
 desça a escada 
senão desça a escada 
fim se 
Pseudo-código 
gire a lâmpada no sentido horário até que se firme 
enquanto <a lâmpada não se prender> faça 
 gire a lâmpada no sentido horário 
fim enquanto 
Pseudo-código 
Início 
 posicione a escada debaixo da lâmpada queimada 
 enquanto <não alcançar a lâmpada> faça 
 suba um degrau da escada 
 fim enquanto 
 enquanto <a lâmpada não soltar> faça 
 gire a lâmpada no sentido anti-horário 
 fim enquanto 
 remova a lâmpada queimada 
 se <tiver lâmpada da mesma potência> 
 então selecione a lâmpada 
 posicione a nova lâmpada no soquete 
 enquanto <a lâmpada não prender> faça 
 gire a lâmpada no sentido horário 
 fim enquanto 
 desça a escada 
 senão desça a escada 
 fim se 
Fim 
Vantagens do Pseudo-código 
 
 Sintaxe mais flexível que a de uma linguagem de 
programação real 
 
 Permite que pensemos nos passos que o algoritmo 
computacional deve descrever sem nos preocuparmos 
demais com a forma de escrevê-los 
 
 Ênfase nas idéias, e não nos detalhes 
 
 
 
Desenvolvimento do algoritmo 
 
 
 
 
 Inicia-se com uma afirmação genérica da solução do 
problema e prosseguimos até o algoritmo final, 
aumentando sistematicamente o nível de 
detalhamento. 
 
 
Desenvolvimento do algoritmo 
 
 
 Como saber se já temos um nível suficiente de detalhes 
no algoritmo? 
 Isso depende do agente que irá executar o algoritmo 
 
 
 Os computadores têm um conjunto muito limitado de 
instruções e o algoritmo deve ser expresso nos termos 
dessas instruções. 
 
 
 
Metodologia para o 
desenvolvimento de algoritmos 
 
 
Passo 1: ler cuidadosamente a especificação do problema. 
 
 
Passo 2: levantar e analisar todas as saídas exigidas na 
especificação do problema. 
 
 
Passo 3: levantar e analisar todas as entradas citadas na 
especificação do problema. 
 
 
 
Metodologia para o 
desenvolvimento de algoritmos 
 
 
Passo 4: verificar se é necessário gerar valores 
internamente ao algoritmo e levantar as variáveis 
necessárias e os valores iniciais de cada uma (comentar) 
 
 Passo 5: levantar e analisar todas as operações e 
transformações necessárias para, dadas as entradas e 
valores gerados internamente, produzir as saídas 
especificadas (comentar) 
 
 
 
Metodologia para o 
desenvolvimento de algoritmos 
 
 
Passo 6: testar cada passo do algoritmo, verificando se as 
transformações intermediárias executadas estão 
conduzindo aos objetivos desejados. Utilizar, sempre que 
possível, valores de teste que permitam prever os 
resultados. 
 
Passo 7: fazer uma reavaliação geral, elaborando o 
algoritmo através da integração das partes. 
 
 
 
● Linguagem natural
Algoritmos
Calcular a raiz de uma equação do primeiro grau?
● Fluxograma
Algoritmos
Calcular a raiz de uma equação do primeiro grau?
● Pseudo-código
Algoritmos
Calcular a raiz de uma equação do primeiro grau?
● Código natural
● Fluxograma
● Pseudo-código
Algoritmos
Calcular as raízes de uma equação do segundo grau?
Cálculo eletrônico
2ª Geração (1955-1965): transistores
Material didático
● Aprendendo a Programar Programando na Linguagem C Para 
Iniciantes (Jaime Evaristo). Capítulo 1.
● http://www.fsm.com.br/web/enade/revisao/novos/livroProgramacaoC.pdf
● Algoritmos e Estruturas de Dados I (Marcos Castilho, Fabiano 
Silva e Daniel Weingaertner). Capítulos 2 e 3.
● http://www.inf.ufpr.br/cursos/ci055/apostila.pdf
Cálculo eletrônico
2ª Geração (1955-1965): transistoresDúvidas?

Outros materiais