Revisão Histórico das Linguagens de Programação • Qual a única linguagem compreendida pelos computadores? • O que é uma linguagem de programação de alto nível? • Como fazer o computador entender um programa escrito em uma linguagem de alto nível? • Quais são as características desejáveis de um programa escrito em linguagem de alto nível? Perguntas? Revisão Histórico das Linguagens de Computação • Qual o melhor tipo de linguagem e a melhor linguagem? Introdução à Construção de Algoritmos Introdução à construções de algoritmos • O computador é uma máquina utilizada na resolução de problemas • Os problemas precisam ser precisamente definidos, geralmente sem a utilização de um computador • A solução deve ser então planejada por meio da escrita de um algoritmo (ainda sem o computador) Introdução à construções de algoritmos • Um algoritmo é um procedimento computacional, finito, bem definido, não ambíguo, que recebe alguns valores como entrada (input) e produz alguns valores como saída (output) • É uma sequência de passos computacionais que transformam uma dada entrada na saída desejada Introdução à construções de algoritmos Quem sabe fazer uma garça em Origami? • Entrada: um papel quadrado • Saída: uma garça de papel • Algoritmo: ? Valendo um cupcake! • Desafio 2: Duas pessoas desejam repartir igualmente o conteúdo de um garrafão de 8 litros de água e têm apenas duas garrafas vazias de 5 e 3 litros, além do garrafão. De que maneira eles podem resolver esse problema? • Entrada: 1 garrafa grande cheia com 8 litros, uma garrafa média vazia com 5 litros e 1 garrafa pequena vazia com 3 litros • Saída: Dividir os 8 litros em duas partes iguais de 4 litros cada • Algoritmo: ? G M P Situação inicial 8 0 0 Despeja a água da grande até encher a pequena 5 0 3 Despeja toda a água da pequena na média 5 3 0 Despeja a água da grande até encher a pequena 2 3 3 Despeja a água da pequena até encher a média 2 5 1 Despeja toda a água da média na grande 7 0 1 Despeja toda a água da pequena na média 7 1 0 Despeja a água da grande até encher a pequena 4 1 3 Despeja toda a água da pequena na média 4 4 0 Introdução à construções de algoritmos • Uma boa analogia é a receita culinária • São especificados ingredientes (entrada) • É especificado como trabalhar os ingredientes (algoritmo) • O resultado do processamento é o prato (saída) Alguém tem um exemplo? Como fazer pipoca em panela no fogão? Exemplo – Fazer um sanduíche Exemplo – Fazer um sanduíche 1. Pegar o pão 2. Cortar o pão ao meio 3. Pegar a maionese 4. Passar a maionese no pão 5. Pegar e cortar alface e tomate 6. Colocar alface e tomate no pão 7. Pegar o hambúrguer 8. Fritar o hambúrguer 9. Colocar o hambúrguer no pão Introdução à construções de algoritmos • Geralmente um algoritmo é feito para manipular vários casos de entradas e não apenas um conjunto específicos de valores • Como um algoritmo para ordenar uma sequência de números Introdução à construções de algoritmos • Um algoritmo é correto quando: • Para cada caso de entrada, o programa para com saída correta • Um algoritmo é incorreto quando: • Ele não para quando um dado caso de entrada é introduzido • Ou ele para com uma saída que não é a correta • Tá com bug! Construção de algoritmos: Dividir-econquistar • Modo mais comum de se construir algoritmos • Divide-se sucessivamente o problema dado em subproblemas cada vez menores, até que esses possam ser resolvidos (i.e., conquistados) de forma trivial • Técnica também conhecida como refinamento sucessivos O algoritmo da troca do pneu furado Algoritmo TrocaDePneu: 1. 2. 3. 4. 5. pegue o macaco e levante o carro retire o pneu furado pegue o estepe, coloque-o na roda e aperte os parafusos rebaixe o carro e reaperte os parafusos guarde o pneu furado e o macaco O algoritmo da troca do pneu furado Algoritmo “1. pegue o macaco e levante o carro” 1.1 remova o macaco do porta-malas 1.2 coloque o macaco sob o carro e próximo ao pneu furado 1.3 insira a manivela no macaco (ou monte-o de acordo com o modelo do macaco) 1.4 coloque um calço sob o carro para impedi-lo de se mover 1.5 levante o carro com o macaco até que haja espaço suficiente para colocar o estepe O algoritmo da troca do pneu furado Algoritmo “1. pegue o macaco e levante o carro” 1.1 remova o macaco do porta-malas 1.2 coloque o macaco sob o carro e próximo ao pneu furado 1.3 insira a manivela no macaco (ou monte-o de acordo com o modelo do macaco) 1.4 coloque um calço sob o carro para impedi-lo de se mover 1.4.1 se o carro estiver de frente para o topo de uma ladeira, então coloque o calço atrás de um pneu em bom estado senão, coloque o calço na frente de um pneu em bom estado 1.5 levante o carro com o macaco até que haja espaço suficiente para colocar o estepe O algoritmo da troca do pneu furado Algoritmo “1. pegue o macaco e levante o carro” 1.1 remova o macaco do porta-malas 1.2 coloque o macaco sob o carro e próximo ao pneu furado 1.3 insira a manivela no macaco (ou monte-o de acordo com o modelo do macaco) 1.4 coloque um calço sob o carro para impedi-lo de se mover 1.5 levante o carro com o macaco até que haja espaço suficiente para colocar o estepe 1.5.1 enquanto não houver espaço suficiente para colocar o estepe, repita o seguinte: levante o carro com o macaco Exercício Algoritmo TrocarLâmpadaQueimada: 1. Remova a lâmpada queimada 2. Coloque a nova lâmpada Exercício Algoritmo TrocarLâmpadaQueimada: 1. Posicione a escada em baixo da lâmpada queimada 2. Escolha uma nova lâmpada de mesma potência da queimada 3. Suba na escada até que a lâmpada possa ser alcançada 4. Gire a lâmpada queimada no sentido anti-horário até que ela se solte 5. Posicione a nova lâmpada no soquete 6. Gire-a no sentido horário até que ela se firme 7. Desça a escada Exercício Algoritmo TrocarLâmpadaQueimada: 1. Posicione a escada em baixo da lâmpada queimada 2. Selecione uma nova lâmpada para a substituição 1. 3. 1. Descarte a lâmpada selecionada 2. Selecione uma nova Repita até que a lâmpada possa ser alcançada 1. 4. Se a potência não for a mesma da lâmpada queimada, então repita os passos abaixo até encontrar uma que sirva Suba um degrau da escada Repita até que a lâmpada fique livre do soquete 1. Gire a lâmpada no sentido anti-horário 5. Posicione a nova lâmpada no soquete 6. Repita até que a lâmpada esteja firme 1. 7. Gire a lâmpada no sentido horário Desça a escada Formas de construir algoritmos (1) • Descrição Narrativa – Vantagem: não é necessário aprender nenhum conceito novo, pois uma língua natural, bem conhecida – Desvantagem: a língua natural abre espaço para várias interpretações, o que posteriormente dificultará a transcrição do algoritmo para um programa de computador Formas de construir algoritmos (2) • Fluxograma – Vantagem: o entedimento de elementos gráficos é mais simples que o entendimento de textos – Desvantagem: é necessário aprender os símbolos dos fluxogramas e , além disso, o algoritmos resultante não apresenta detalhes, dificultanto também a transcrição para um programa de computador Formas de construir algoritmos (2) Fluxograma Formas de construir algoritmos (2) Vc que quebrou? LASCOU OK Formas de construir algoritmos (3) • Pseudocódigo ou portugol – Vantagem: a passagem do algoritmo para qualquer linguagem de programação é quase imediata, bastando conhecer as palavras reservadas da linguagem que será utilizada – Desvantagem: é necessário aprender regras do pseudocódigo, que vamos aprender! Algoritmo Exemplo – Somar três números Descrição Narrativa 1. Receber os tres números 2. Somar os três números 3. Imprimir resultado Algoritmo Exemplo – Somar três números Pseuco código inicio variavel inteiro n1, n2, n3, s escrever “Digite tres numeros” ler n1, n2, n3 s <- n1 + n2 + n3 escrever “O valor armazenado em S eh ”, s fim Primeiro Problema - Escrevendo • Faça um algoritmo que recebe dois números e escreve a soma dos mesmos Primeiro Problema - Escrevendo • Solução !! inicio escrever ”Informe os numeros” ler n1, n2 soma n1 + n2 escrever “Soma dos numeros =“ , soma fim Primeiro Problema – Escrevendo Fluxograma • Solução !!