Técnicas de Programação Prof. André Y. Kusumoto andrekusumoto.unip@gmail.com
Lógica Prof. André Y. Kusumoto andrekusumoto.unip@gmail.com A lógica de programação é necessária para pessoas que desejam trabalhar com desenvolvimento de sistemas e programas, ela permite definir a sequência lógica para o desenvolvimento. Então o que é lógica? Lógica de de programação é a técnica de de encadear pensamentos para atingir determinado objetivo 2/20
Sequência Lógica Estes pensamentos podem ser descritos como uma sequência de instruções, que devem ser seguidas para se cumprir uma determinada tarefa. Sequência Lógica são passos executados até atingir um objetivo ou ou solução de um problema 3/20
1. Há três suspeitos de um crime: o cozinheiro, a governanta e o mordomo. Sabe-se que o crime foi efetivamente cometido por um ou por mais de um deles, já que podem ter agido individualmente ou não. Sabe-se, ainda que: A) se o cozinheiro é inocente, então a governanta é culpada; B) ou o mordomo é culpado ou a governanta é culpada, mas não os dois; C) o mordomo não é inocente. Logo: (a) a governanta e o mordomo são os culpados (b) o cozinheiro e o mordomo são os culpados (c) somente a governanta é culpada (d) somente o cozinheiro é inocente (e) somente o mordomo é culpado. 4/20
2. Qual o número que completa a sequência: 1, 3, 6, 10,... (a) 13 (b) 15 (c) 12 (d) 11 (e) 18 3. Um frasco contém um casal de melgas. As melgas reproduzem-se e o seu número dobra todos os dias. Em 50 dias o frasco está cheio. Em que dia o frasco esteve meio cheio? (a) 25 (b) 24 (c) 26 (d) 49 (e) 2 5/20
4. O preço de um produto foi reduzido em 20% numa liquidação. Qual deverá ser a percentagem de aumento do preço do mesmo produto para que ele volte a ter o preço original? (a) 15% (b) 20% (c) 25% (d) 30% (e) 40% 6/20
5. Três amigos se encontram e como os tempos estão bicudos resolvem ir ao boteco da esquina para partilhar, no beber e no pagar. "São vinte e cinco reais", diz o garçom, chamado depois de muita conversa. Cada um lhe dá uma nota de R$10, ao todo R$ 30. Ele vai ao caixa e traz o troco: cinco notas de R$1. Dá uma nota a cada um e imediatamente um dos rapazes lhe diz para ficar com os R$2,00 restantes. Ao saírem do boteco, um deles observa: "Que engraçado. Eram R$30, uma nota de R$10 de cada um de nós e como recebemos R$1 de troco, gastamos R$9 por cabeça que multiplicados por: 3 resulta em R$27, que somados aos R$2 da gorjeta somam R$29. Cadê o outro R$1?" 9 x 3 = 27 + 2 = 29 7/20
Instruções Na linguagem comum, entende-se por instruções um conjunto de regras ou normas definidas para a realização ou emprego de algo. Em informática, porém, instrução é a informação que indica a um computador uma ação elementar a executar. É necessário um conjunto de instruções colocadas em ordem seqüencial lógica. É evidente que essas instruções tem que ser executadas em uma ordem adequada não se pode descascar as batatas depois de fritá-las. Dessa maneira, uma instrução tomada em separado não tem muito sentido; para obtermos o resultado, precisamos colocar em prática o conjunto de todas as instruções, na ordem correta. 8/20
Algoritmo Um algoritmo é formalmente uma sequência finita de passos que levam a execução de uma tarefa. Podemos pensar em algoritmo como uma receita, uma sequência de instruções que dão cabo de uma meta específica. Estas tarefas não podem ser redundantes nem subjetivas na sua definição, devem ser claras e precisas. Como exemplos de algoritmos podemos citar os algoritmos das operações básicas (adição, multiplicação, divisão e subtração) de números reais decimais. Outros exemplos seriam os manuais de aparelhos eletrônicos. 9/20
Programas Os programas de computadores nada mais são do que algoritmos escritos numa linguagem de computador (Pascal, C, Cobol, Fortran, Visual Basic, Java, PHP, entre outras) e que são interpretados e executados por uma máquina, no caso um computador. Notem que dada esta interpretação rigorosa, um programa é por natureza muito específico e rígido em relação aos algoritmos da vida real. 10/20
Algoritmizando a Lógica É importante ressaltar que qualquer tarefa que siga determinado padrão pode ser descrita por um algoritmo. Podemos pensar também num algoritmo como um mecanismo de transformação de entradas em saídas. Assim, um algoritmo ao ser executado, receberá algumas entradas, que serão processadas e nos devolverá algumas saídas. 11/20
Entretanto ao montar um algoritmo, precisamos primeiro dividir o problema apresentado em três fases fundamentais. Entrada Processamento Saída Onde temos: ENTRADA: São os dados de entrada do algoritmo PROCESSAMENTO: São os procedimentos utilizados para chegar ao resultado final SAÍDA: São os dados já processados 12/20
Por que é importante construir algoritmos? Um algoritmo tem por objetivo representar mais fielmente o raciocínio envolvido na lógica de programação e, dessa forma, permite-nos abstrair de uma série de detalhes computacionais, que podem ser acrescentados mais tarde. Assim, podemos focalizar nossa atenção naquilo que é importante: a lógica da construção de algoritmos. Outra importância da construção dos algoritmos é que uma vez concebido uma solução algorítmica para um problema, esta pode ser traduzida para qualquer linguagem de programação. 13/20
Vamos a um exemplo? Podemos escrever um primeiro algoritmo de exemplo, utilizando português coloquial, que descreva o comportamento na resolução de uma determinada atividade, como, por exemplo, trocar o pneu de um carro. Há muitas formas de resolver um problema, afinal cada pessoa pensa e age de maneira diferente. Isso significa que, para esse mesmo problema poderíamos ter diferentes soluções corretas. 14/20
Método para desenvolvimento de algoritmos 1. Faça uma leitura de todo o problema até o final, a fim de formar a primeira impressão. A seguir, releia o problema e faça anotações sobre os pontos principais. 2. Verifique se o problema foi bem entendido. Questione, se preciso, ao autor da especificação sobre suas dúvidas. Releia o problema quantas vezes for preciso para tentar entendê-lo. 3. Extraia do problema todas as suas saídas. 4. Extraia do problema todas as suas entradas. 5. Identifique qual é o processamento principal. 15/20
6. Verifique se será necessário algum valor intermediário que auxilie a transformação das entradas em saídas. Esta etapa pode parecer obscura no início, mas com certeza no desenrolar do algoritmo, estes valores aparecerão naturalmente. 7. Teste cada passo do algoritmo, com todos os seus caminhos para verificar se o processamento está gerando os resultados esperados. Crie valores de teste para submeter ao algoritmo. 8. Reveja o algoritmo, checando as boas normas de criação. 16/20
Regras para construção do Algoritmo 1. Use comentários com frequência. Isto torna o algoritmo mais legível e facilita o entendimento da lógica empregada. Seus algoritmos deverão ser lidos e entendidos por outras pessoas (e por você mesmo) de tal forma que possam ser corrigidos e receber manutenção. Obs: Não se esqueça de atualizar os comentários, em caso de manutenção. Pior do que um programa sem comentários, é um programa com comentários errados. 2. Use comentários, também, no cabeçalho do algoritmo, incluindo, principalmente: Descrição do que faz o algoritmo Autor Data de criação 3. Escolha nomes de variáveis significativos, todavia evite nomes muito longos. Prefira SalBruto ou SalarioBruto ao invés de SB ou VAR1 Prefira TotAlunosAprovDireta ao invés de TotalAlunosAprovacaoDireta 17/20
4. Utilize espaços e linhas em branco para melhorar a legibilidade. 5. Coloque apenas um comando por linha. Vários comandos em uma linha causa ilegibilidade e dificulta a depuração. 6. Utilize parênteses para aumentar a legibilidade e prevenir-se de erros. 7. Use indentação nos comandos de acordo com o nível que estejam, ou seja, alinhe comandos de mesmo nível e desloque comandos de nível inferior. Ex.: início fim comando1; se condicao1 então senão fim-se; comando6; comando2; comando3; comando4; comando5; 18/20
Exercícios Prof. André Y. Kusumoto andrekusumoto.unip@gmail.com 1) 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 menores sobre os 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/20
Algoritmos Estruturados. Referências Prof. André Y. Kusumoto andrekusumoto.unip@gmail.com FARRER, Harry, BECKER, Christiano G., FARIA, Eduardo C., MATOS, Helton Fábio de, SANTOS, Marcos Augusto dos, MAIA, Miriam Lourenço. Rio de Janeiro: Editora Guanabara, 1989. Lógica de Programação A Construção de Algoritmos e Estruturas de Dados Forbellone, André Luiz Villar. São Paulo, Prentice Hall, 2005: Algoritmos e estruturas de dados. GUIMARÃES, Angelo de Moura, LAGES, Newton A de Castilho. Rio de Janeiro: LTC Livros Técnicos e Científicos Editora, 1985. Programação e lógica com Turbo Pascal. MECLER, Ian, MAIA, Luiz Paulo. Rio de Paulo Janeiro: Campus, 1989. Unicamp - Centro de Computação DSC. Sérgio de Moraes, abril 2000. Algoritmos. SALVETTI, Dirceu Douglas, BARBOSA, Lisbete Madsen. São Paulo: Makron Books, 1998. Concursos Públicos Raciocínio Lógico. SILVA, Joselias Santos da. São Paulo: R&A Editora Cursos e Materiais Didáticos, 1999. Algoritmos e Estruturas de Dados. WIRTH, Niklaus. Rio de Janeiro: Editora Prentice-Hall do Brasil, 1986. Sites na Web: http://www.inf.pucrs.br/~egidio/algo1/ 20/20