20
Técnicas de Programação Prof. André Y. Kusumoto [email protected]

Técnicas de Programação - kusumoto.com.br · 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

Embed Size (px)

Citation preview

Técnicas de Programação

Prof. André Y. [email protected]

Prof. André Y. Kusumoto – [email protected]

Introdução à Lógica de Programação

LógicaLógica● 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 programação é a Lógica de programação é a técnica de encadear pensamentos técnica de encadear pensamentos para atingir determinado objetivopara atingir determinado objetivo

Lógica de programação é a Lógica de programação é a técnica de encadear pensamentos técnica de encadear pensamentos para atingir determinado objetivopara atingir determinado objetivo

2/20

Prof. André Y. Kusumoto – [email protected]

Introdução à Lógica de Programação

Sequência LógicaSequê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 Sequência Lógica são passos executados até atingir um executados até atingir um objetivo ou solução de um objetivo ou solução de um

problemaproblema

Sequência Lógica são passos Sequência Lógica são passos executados até atingir um executados até atingir um objetivo ou solução de um objetivo ou solução de um

problemaproblema

3/20

Prof. André Y. Kusumoto – [email protected]

Introdução à Lógica de Programação

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

Prof. André Y. Kusumoto – [email protected]

Introdução à Lógica de Programação

2. Qual o número que completa a sequência: 1, 3, 6, 10, ...

(a) 13(b) 15(c) 12(d) 11(e) 183. 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

Prof. André Y. Kusumoto – [email protected]

Introdução à Lógica de Programação

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

Prof. André Y. Kusumoto – [email protected]

Introdução à Lógica de Programação

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 = 299 x 3 = 27 + 2 = 29

7/20

Prof. André Y. Kusumoto – [email protected]

Introdução à Lógica de Programação

InstruçõesInstruçõ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

Prof. André Y. Kusumoto – [email protected]

Introdução à Lógica de Programação

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

Prof. André Y. Kusumoto – [email protected]

Introdução à Lógica de Programação

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

Prof. André Y. Kusumoto – [email protected]

Introdução à Lógica de Programação

Algoritmizando a LógicaAlgoritmizando 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

Prof. André Y. Kusumoto – [email protected]

Introdução à Lógica de Programação

• Entretanto ao montar um algoritmo, precisamos primeiro dividir o problema apresentado em três fases fundamentais.

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

EntradaEntrada ProcessamentoProcessamento SaídaSaída

12/20

Prof. André Y. Kusumoto – [email protected]

Introdução à Lógica de Programação

Por que é importante construir algoritmos?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

Prof. André Y. Kusumoto – [email protected]

Introdução à Lógica de Programação

Vamos a um exemplo?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

Prof. André Y. Kusumoto – [email protected]

Introdução à Lógica de Programação

Método para desenvolvimento de algoritmosMétodo para desenvolvimento de algoritmos1. 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

Prof. André Y. Kusumoto – [email protected]

Introdução à Lógica de Programação

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

Prof. André Y. Kusumoto – [email protected]

Introdução à Lógica de Programação

Regras para construção do AlgoritmoRegras para construção do Algoritmo1. 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ção3. 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

Prof. André Y. Kusumoto – [email protected]

Introdução à Lógica de Programação

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

comando1;

se condicao1 então

comando2;

comando3;

senão

comando4;

comando5;

fim-se;

comando6;

fim

18/20

Prof. André Y. Kusumoto – [email protected]

Exercícios

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

Prof. André Y. Kusumoto – [email protected]

Referências• Algoritmos Estruturados.

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