UNISUL 2014/ 1 Universidade do Sul de Santa Catarina Engenharia Elétrica Algoritmos Aula 1 Slides adaptados do Prof. Frederico Ferlini
Informações da Disciplina Página da disciplina gse.ufsc.br/~pvilla Controle de Frequência 2 Email: paulo.villa@unisul.br Monitoria: Cleber Itamaro cleberitamaro@gmail.com Quintas 15h00 18h00
Informações da Disciplina Avaliação: MS = P*0,6 + T*0,4 P = Prova (27/06/2014) T = Trabalho Final a ser desenvolvido na ferramenta VisuAlg 3 Prova 2º Chamada (04/07/2014) Avaliação Final (11/07/2014)
Introdução O que é um Algoritmo? Algoritmo é o caminho para solução de um problema. Em geral um problema possui diversos caminhos para sua solução. Logo, podem existir diversos algoritmos para resolver o mesmo problema. 4
Introdução Representação: Existem diversas formas de representação de algoritmos: Descrição Narrativa Pseudo-linguagens Formas gráficas Próprias linguagens de programação 5
Introdução Motivação: Uma das dificuldades constatadas no aprendizado de algoritmos (programação) é a passagem de uma língua natural (materna), de expressão completamente livre, para uma linguagem repleta de restrições, com sintaxe não familiar e, em geral, em uma língua estrangeira. 6 A passagem para uma linguagem algorítmica, embora mais restrita que a linguagem natural, mas com sintaxe conhecida e em português, representa uma passagem menos traumatizante.
Introdução Motivação: Outro motivo é o ensino do conceito de algoritmos independente da sintaxe de uma determinada linguagem de programação ; ou??? := ou = ou <=??? <> ou!= ou /=??? 7 Perda de tempo com problemas de sintaxe e não com o conceito de Algoritmos Evita associação da lógica da solução de problemas com eventuais detalhes de implementação de uma determinada linguagem
Introdução Aprendizado: 8 Algoritmos NÃO se aprendem: Copiando algoritmos Estudando algoritmos Algoritmos SÓ se aprendem: Construindo algoritmos Testando algoritmos
Aula de Hoje 9 Slides Disciplina de Algoritmos UFJF
Sumário Revisão: Sistemas Numéricos Conversão de Base Bit: unidade atômica de informação (0 ou 1) Byte: Conjunto de 8 bits Word: é a quantidade de bits que a CPU processa por vez (normalmente 16 ou 32 bits) Sistemas Computacionais HW / SW Estrutura básica de um computador digital CPU (ULA + CTRL) Memória Principal + Secundária Interfaces (entrada ou saída) 10
Sumário Sistemas Computacionais Programação Linguagem de programação Linguagem de Máquina, Baixo Nível ou Alto Nível (de abstração) Tradutor (Compilação ou Interpretação) Algoritmos Definição: Um algoritmo é uma sequência finita de instruções bem definidas e não ambíguas, cada uma das quais pode ser executada num período de tempo finito, visando a solução de um problema (também bem definido) Como estudar algoritmos Conceitos básicos (ação, estado e processo) 11
Sumário Algoritmos Formas de representação Descrição Narrativa Fluxograma Convencional Pseudo-linguagem início Acionar interruptor Lâmpada não acendeu? V Pegar uma escada Colocar a escada embaixo do soquete Buscar lâmpada nova Desligar interruptor 12 F Subir na escada Retirar lâmpada queimada Descartar lâmpada queimada V Colocar lâmpada nova Acionar interruptor Lâmpada nova queimada? F fim
Exemplo Algoritmo (Sequencial) A troca de uma lâmpada: Pegar uma escada Posicionar a escada embaixo da lâmpada Buscar uma lâmpada nova Subir na escada Retirar a lâmpada velha Colocar a lâmpada nova 13
Exemplo Algoritmo (de Seleção) A troca de uma lâmpada: Pegar uma escada Posicionar a escada embaixo da lâmpada Buscar uma lâmpada nova Acionar interruptor Se a lâmpada não acender, então Subir na escada Retirar a lâmpada queimada Colocar a lâmpada nova 14
15 Exemplo Algoritmo (de Seleção)[otimizado] A troca de uma lâmpada: Acionar interruptor Se a lâmpada não acender, então Pegar uma escada Posicionar a escada embaixo da lâmpada Buscar uma lâmpada nova Subir na escada Retirar a lâmpada queimada Colocar a lâmpada nova
Exemplo Algoritmo (de seleção) [cont.] A troca de uma lâmpada: Acionar interruptor Se a lâmpada não acender, então Pegar uma escada Posicionar a escada embaixo da lâmpada Buscar uma lâmpada nova Subir na escada Retirar a lâmpada queimada Colocar a lâmpada nova Se a lâmpada não acender, então Retirar a lâmpada queimada Colocar a lâmpada nova Se a lâmpada não acender, então Retirar a lâmpada queimada Colocar a lâmpada nova 16
Exemplo Algoritmo (de Repetição) A troca de uma lâmpada: Acionar interruptor Se a lâmpada não acender, então Pegar uma escada Posicionar a escada embaixo da lâmpada Buscar uma lâmpada nova Subir na escada Retirar a lâmpada queimada Colocar a lâmpada nova Enquanto a lâmpada não acender, faça Retirar a lâmpada queimada Colocar a lâmpada nova 17
Exercícios 18 1. Um homem precisa atravessar um rio com um barco que possui capacidade apenas para carregar ele mesmo e mais uma de suas três cargas, que são: um lobo, um bode e um maço de alfafa. O que o homem deve fazer para conseguir atravessar o rio sem perder suas cargas? Escreva um algoritmo mostrando a resposta, ou seja, indicando todas as ações necessárias para efetuar uma travessia segura. Notem que: O bode não pode ficar sozinho com o lobo A alfafa não pode ficar sozinha com o bode
Exercícios (Torre de Hanói) 2. Elabore um algoritmo que mova três discos de uma Torre de Hanói, que consiste em três hastes (a b c), uma das quais serve de suporte para três discos de tamanhos diferentes (1 2 3), os mesmos sobre maiores. Pode-se mover um disco de cada vez para qualquer haste, contanto que nunca seja colocado um disco maior sobre um menor. O objetivo é transferir os três discos para outra haste. 19
Exercício (Jesuítas + Canibais) 3. Três jesuítas e três canibais precisam atravessar um rio; para tal, dispõem de um barco com capacidade para duas pessoas. Por medidas de segurança não se permite que em alguma margem a quantidade de jesuítas seja inferior à de canibais. Qual a sequência de passos que permitiria a travessia com segurança? 20
Solução (Barco+Lobo+Bode+Alfafa) informações: um barco um homem um lobo um bode um maço de alfafa ação: atravessar o rio sem perder as cargas 21 resultado: todas as cargas na outra margem do rio. Algoritmo: início atravessar homem e bode voltar homem atravessar homem e lobo voltar homem e bode atravessar homem e alfafa voltar homem atravessar homem e bode fim
Solução (Torre de Hanói) 22 informações: 3 discos 3 hastes ações: movimentar um disco de cada vez de forma que fiquem ordenado resultado: discos transferidos e ordenados para outra haste Algoritmo: início mover o disco 1 para a haste b mover o disco 2 para a haste c mover o disco 1 para a haste c mover o disco 3 para a haste b mover o disco 1 para a haste a mover o disco 2 para a haste b mover o disco 1 para a haste b fim
Solução (Torre de Hanói) 23
Solução (Jesuítas + Canibais) informações: 3 jesuítas 3 canibais 1 barco com capacidade para 2 pessoas ações: atravessar o rio com segurança 24 resultado: 3 jesuítas e 3 canibais na outra margem do rio Algoritmo: início atravessar dois canibais voltar um canibal atravessar dois canibais voltar um canibal atravessar dois jesuitas voltar um jesuíta e um canibal atravessar dois jesuitas voltar um canibal atravessar dois canibais voltar um canibal atravessar dois canibais fim