Introdução - ic.uff.brsimone/progI/contaulas/aula2.pdf · Por que não executar diretamente o...
Transcript of Introdução - ic.uff.brsimone/progI/contaulas/aula2.pdf · Por que não executar diretamente o...
![Page 1: Introdução - ic.uff.brsimone/progI/contaulas/aula2.pdf · Por que não executar diretamente o algoritmo no computador? Algoritmo é escrito em linguagem ... E se tivermos que pedir](https://reader034.fdocumentos.tips/reader034/viewer/2022052407/5bedec6109d3f2f6028c0071/html5/thumbnails/1.jpg)
TCC 00308: Programação de Computadores I 2017.1
Introdução
![Page 2: Introdução - ic.uff.brsimone/progI/contaulas/aula2.pdf · Por que não executar diretamente o algoritmo no computador? Algoritmo é escrito em linguagem ... E se tivermos que pedir](https://reader034.fdocumentos.tips/reader034/viewer/2022052407/5bedec6109d3f2f6028c0071/html5/thumbnails/2.jpg)
Processo de resolução de
problemas
� Definição dos requisitos do problema (fazer o programa certo)• Entradas• Cálculos• Casos especiais• Saídas
� Desenvolvimento do algoritmo da solução (fazer certo o programa)• Português estruturado• Pseudocódigo• Fluxograma
� Codificação do programa• Python
� Teste do programa• Instrução com erro de grafia (defeito na codificação)• Resultado errado (defeito no algoritmo)
![Page 3: Introdução - ic.uff.brsimone/progI/contaulas/aula2.pdf · Por que não executar diretamente o algoritmo no computador? Algoritmo é escrito em linguagem ... E se tivermos que pedir](https://reader034.fdocumentos.tips/reader034/viewer/2022052407/5bedec6109d3f2f6028c0071/html5/thumbnails/3.jpg)
Passo 1: Requisitos
� Qual é o problema a ser resolvido?
![Page 4: Introdução - ic.uff.brsimone/progI/contaulas/aula2.pdf · Por que não executar diretamente o algoritmo no computador? Algoritmo é escrito em linguagem ... E se tivermos que pedir](https://reader034.fdocumentos.tips/reader034/viewer/2022052407/5bedec6109d3f2f6028c0071/html5/thumbnails/4.jpg)
Passo 2: Algoritmo
� Conjunto de ações para a resolu ção de um problema em um número finito de passos
� Parte mais complexa da programação� Somente iniciar a programação quando
• Souber qual problema deve ser resolvido• Souber como resolver o problema
![Page 5: Introdução - ic.uff.brsimone/progI/contaulas/aula2.pdf · Por que não executar diretamente o algoritmo no computador? Algoritmo é escrito em linguagem ... E se tivermos que pedir](https://reader034.fdocumentos.tips/reader034/viewer/2022052407/5bedec6109d3f2f6028c0071/html5/thumbnails/5.jpg)
Passo 2: Algoritmo
![Page 6: Introdução - ic.uff.brsimone/progI/contaulas/aula2.pdf · Por que não executar diretamente o algoritmo no computador? Algoritmo é escrito em linguagem ... E se tivermos que pedir](https://reader034.fdocumentos.tips/reader034/viewer/2022052407/5bedec6109d3f2f6028c0071/html5/thumbnails/6.jpg)
Passo 2: Algoritmo
� Independente de linguagem de programação� Pode ser implementado em diferentes linguagens
#include <algorithm>using namespace std;
void bubblesort(int a[], int n){
for(int j=0; j<n; j++){for(int i=0; i<n-1; i++){
if(a[i+1] < a[i])swap(a[i+1], a[i]);
}}
}
C++for(i = 1:n-1)
for(j = 1:n-i)if(x(j) > x(j + 1))
aux = x(j);x(j) = x(j + 1);x(j + 1) = aux;
endend
end
Matlab
![Page 7: Introdução - ic.uff.brsimone/progI/contaulas/aula2.pdf · Por que não executar diretamente o algoritmo no computador? Algoritmo é escrito em linguagem ... E se tivermos que pedir](https://reader034.fdocumentos.tips/reader034/viewer/2022052407/5bedec6109d3f2f6028c0071/html5/thumbnails/7.jpg)
Passo 3: Codificação
� A partir do algoritmo, traduzir (implementar) para a linguagem desejada• No nosso caso, Python
def bubble (vetor):houvetroca = Truewhile (houvetroca):
houvetroca = Falsefor i in range(len(vetor) - 1):
if (vetor[i] > vetor[i+1]):aux = vetor[i+1]vetor[i+1] = vetor[i]vetor[i] = auxhouvetroca = True
return v
Python
Implementação
![Page 8: Introdução - ic.uff.brsimone/progI/contaulas/aula2.pdf · Por que não executar diretamente o algoritmo no computador? Algoritmo é escrito em linguagem ... E se tivermos que pedir](https://reader034.fdocumentos.tips/reader034/viewer/2022052407/5bedec6109d3f2f6028c0071/html5/thumbnails/8.jpg)
Por que não executar diretamente
o algoritmo no computador?
� Algoritmo é escrito em linguagem natural
� Linguagem natural é muito complexa e pouco precisa
� É necessário usar uma linguagem mais simples e precisa, que o computador compreenda
![Page 9: Introdução - ic.uff.brsimone/progI/contaulas/aula2.pdf · Por que não executar diretamente o algoritmo no computador? Algoritmo é escrito em linguagem ... E se tivermos que pedir](https://reader034.fdocumentos.tips/reader034/viewer/2022052407/5bedec6109d3f2f6028c0071/html5/thumbnails/9.jpg)
Teste
� O trabalho não termina com o código
� Todo código pode ter defeito (bug)
� Testar o código é fundamental!
![Page 10: Introdução - ic.uff.brsimone/progI/contaulas/aula2.pdf · Por que não executar diretamente o algoritmo no computador? Algoritmo é escrito em linguagem ... E se tivermos que pedir](https://reader034.fdocumentos.tips/reader034/viewer/2022052407/5bedec6109d3f2f6028c0071/html5/thumbnails/10.jpg)
Teste (Tipos de Erros)
� Erro de sintaxe• Falha na tradução do algoritmo para
Python• O computador vai detectar e dar dicas• Mais fáceis de corrigir
� Erro de lógica• Resultados diferentes do esperado• Erro de projeto do algoritmo• Mais difíceis de corrigir
![Page 11: Introdução - ic.uff.brsimone/progI/contaulas/aula2.pdf · Por que não executar diretamente o algoritmo no computador? Algoritmo é escrito em linguagem ... E se tivermos que pedir](https://reader034.fdocumentos.tips/reader034/viewer/2022052407/5bedec6109d3f2f6028c0071/html5/thumbnails/11.jpg)
Exercício
� Escreva um algoritmo que consiga colocar em ordem as cartas de um naipe do baralho
![Page 12: Introdução - ic.uff.brsimone/progI/contaulas/aula2.pdf · Por que não executar diretamente o algoritmo no computador? Algoritmo é escrito em linguagem ... E se tivermos que pedir](https://reader034.fdocumentos.tips/reader034/viewer/2022052407/5bedec6109d3f2f6028c0071/html5/thumbnails/12.jpg)
Algoritmos clássicos: InsertionSort
Pegue a pilha de cartas desordenadaEnquanto existir carta na mão faça {
Pegue a primeira carta da mãoSe não tem carta sobre a mesa então Coloque-a sobre a mesa
Caso contrário Coloque-a na posição correta da pilha da mesa
}
![Page 13: Introdução - ic.uff.brsimone/progI/contaulas/aula2.pdf · Por que não executar diretamente o algoritmo no computador? Algoritmo é escrito em linguagem ... E se tivermos que pedir](https://reader034.fdocumentos.tips/reader034/viewer/2022052407/5bedec6109d3f2f6028c0071/html5/thumbnails/13.jpg)
Algoritmos clássicos: SelectionSort
Pegue a pilha de cartas desordenadaEnquanto existir carta na mão faça {
Pegue a maior carta da mãoSe não tem carta sobre a mesa então Coloque-a sobre a mesa
Caso contrárioColoque-a no topo da pilha da mesa
}
![Page 14: Introdução - ic.uff.brsimone/progI/contaulas/aula2.pdf · Por que não executar diretamente o algoritmo no computador? Algoritmo é escrito em linguagem ... E se tivermos que pedir](https://reader034.fdocumentos.tips/reader034/viewer/2022052407/5bedec6109d3f2f6028c0071/html5/thumbnails/14.jpg)
Algoritmos clássicos: BubbleSort
Pegue a pilha de cartas desordenadaEnquanto as cartas não estiverem ordenadas
faça {Para cada carta do baralho faça {Se a carta consecutiva for menor que a carta atual
Inverta a posição destas cartas}
}
![Page 15: Introdução - ic.uff.brsimone/progI/contaulas/aula2.pdf · Por que não executar diretamente o algoritmo no computador? Algoritmo é escrito em linguagem ... E se tivermos que pedir](https://reader034.fdocumentos.tips/reader034/viewer/2022052407/5bedec6109d3f2f6028c0071/html5/thumbnails/15.jpg)
E se tivermos que pedir para o
computador resolver?
Dados de Entrada
Dados de SaídaInstruções
Pilha de cartas desordenada
Pilha de cartas ordenadaSequência de passos
necessários para resolver o problema
![Page 16: Introdução - ic.uff.brsimone/progI/contaulas/aula2.pdf · Por que não executar diretamente o algoritmo no computador? Algoritmo é escrito em linguagem ... E se tivermos que pedir](https://reader034.fdocumentos.tips/reader034/viewer/2022052407/5bedec6109d3f2f6028c0071/html5/thumbnails/16.jpg)
Arquitetura de um computador
Entrada de
Dados
Processador Saída de
DadosProgramaPrograma
Armazenamento temporário
(memória RAM)
Armazenamento permanente (disco rígido)Barramento
![Page 17: Introdução - ic.uff.brsimone/progI/contaulas/aula2.pdf · Por que não executar diretamente o algoritmo no computador? Algoritmo é escrito em linguagem ... E se tivermos que pedir](https://reader034.fdocumentos.tips/reader034/viewer/2022052407/5bedec6109d3f2f6028c0071/html5/thumbnails/17.jpg)
Algoritmo para somar dois
números
Leia um valor do teclado
Escreva esse valor no endereço de memória ALeia um valor do teclado
Escreva esse valor no endereço de memória B
Some o valor armazenado no endereço de memória A com o valor armazenado no endereço de memória B
Escreva o resultado no endereço de memória SOMA
Leia o valor do endereço de memória SOMA
Escreva no monitor de vídeo
![Page 18: Introdução - ic.uff.brsimone/progI/contaulas/aula2.pdf · Por que não executar diretamente o algoritmo no computador? Algoritmo é escrito em linguagem ... E se tivermos que pedir](https://reader034.fdocumentos.tips/reader034/viewer/2022052407/5bedec6109d3f2f6028c0071/html5/thumbnails/18.jpg)
Algoritmo para indicar se um
número é maior que outro
Leia um valor do teclado
Escreva esse valor no endereço de memória ALeia um valor do teclado
Escreva esse valor no endereço de memória B
Avalie A > BEscreva o resultado no endereço de memória R
Leia o valor armazenado no endereço de memória R
Escreva o valor do armazenado no endereço de memória R no monitor de vídeo
![Page 19: Introdução - ic.uff.brsimone/progI/contaulas/aula2.pdf · Por que não executar diretamente o algoritmo no computador? Algoritmo é escrito em linguagem ... E se tivermos que pedir](https://reader034.fdocumentos.tips/reader034/viewer/2022052407/5bedec6109d3f2f6028c0071/html5/thumbnails/19.jpg)
Pseudocódigo
� Forma genérica, mas sucinta, para escrever um algoritmo
� Fácil para um humano entender� Fácil de ser codificada� Voltando aos exemplos anteriores
Leia A Leia A
Leia B Leia B
SOMA � A + B R � A > BEscreva SOMA Escreva R
![Page 20: Introdução - ic.uff.brsimone/progI/contaulas/aula2.pdf · Por que não executar diretamente o algoritmo no computador? Algoritmo é escrito em linguagem ... E se tivermos que pedir](https://reader034.fdocumentos.tips/reader034/viewer/2022052407/5bedec6109d3f2f6028c0071/html5/thumbnails/20.jpg)
Exercício
� Em relação ao pseudocódigo a seguir
Leia ValorLeia QuantidadeTotal � Valor * QuantidadeEscreva Total
� Quais são os dados de entrada e saída?� Quais linhas são somente de
processamento?
![Page 21: Introdução - ic.uff.brsimone/progI/contaulas/aula2.pdf · Por que não executar diretamente o algoritmo no computador? Algoritmo é escrito em linguagem ... E se tivermos que pedir](https://reader034.fdocumentos.tips/reader034/viewer/2022052407/5bedec6109d3f2f6028c0071/html5/thumbnails/21.jpg)
Exercício
� Qual é a funcionalidade desse algoritmo? Execute para os valores 25 e 7.
Leia ALeia BC � 0Enquanto A >= B faça {
A � A – BC � C + 1
}Escreva CEscreva A
![Page 22: Introdução - ic.uff.brsimone/progI/contaulas/aula2.pdf · Por que não executar diretamente o algoritmo no computador? Algoritmo é escrito em linguagem ... E se tivermos que pedir](https://reader034.fdocumentos.tips/reader034/viewer/2022052407/5bedec6109d3f2f6028c0071/html5/thumbnails/22.jpg)
Exercício
� Escreva um algoritmo em pseudocódigo paraa) Somar três númerosb) Calcular a média de um aluno numa disciplina, sendo
Média = (Provas + 3 x Trabalho + Participação) / 10Provas = 3 x Prova1 + 3 x Prova2
c) Calcular o peso ideal de uma pessoa, assumindoHomem: Peso = (72,7 * Altura) - 58Mulher: Peso = (62,1 * Altura) - 44,7
![Page 23: Introdução - ic.uff.brsimone/progI/contaulas/aula2.pdf · Por que não executar diretamente o algoritmo no computador? Algoritmo é escrito em linguagem ... E se tivermos que pedir](https://reader034.fdocumentos.tips/reader034/viewer/2022052407/5bedec6109d3f2f6028c0071/html5/thumbnails/23.jpg)
Exercício
� Escreva um algoritmo para separar o líquido de três garrafas com formatos diferentes em duas quantidades iguais, onde• Uma garrafa está cheia até a boca, com 8
litros• Uma está vazia, com capacidade de 5
litros• Uma está vazia, com capacidade de 3
litros
![Page 24: Introdução - ic.uff.brsimone/progI/contaulas/aula2.pdf · Por que não executar diretamente o algoritmo no computador? Algoritmo é escrito em linguagem ... E se tivermos que pedir](https://reader034.fdocumentos.tips/reader034/viewer/2022052407/5bedec6109d3f2f6028c0071/html5/thumbnails/24.jpg)
Referências
� Slides baseados no curso de Programação de Computadores I da Prof. Vanessa Braganholo
� Alguns exercícios extraídos do livro Furlan, M., Gomes, M., Soares, M., Concilio, R., 2005, “Algoritmos e Lógica de Programação”, Editora Thomson.