Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
29/07/2012 1 ENGENHARIAS – LÓGICA DE PROGRAMAÇÃO – Henry Costa Lubanco / Joelio Piraciaba Noções de Lógica Lógica trata da correção do pensamento. Poderíamos dizer também que a Lógica é a arte de pensar corretamente e, visto que a forma mais complexa do pensamento é o raciocínio, a Lógica estuda ou tem em vista a correção do raciocínio. Isso dá a entender que a nossa razão pode funcionar desordenadamente, pode pôr as coisas de pernas para o ar. Por isso a Lógica ensina a colocar Ordem no Pensamento. 49 ENGENHARIAS – LÓGICA DE PROGRAMAÇÃO – Henry Costa Lubanco / Joelio Piraciaba Noções de Lógica Exemplo A: Todo o mamífero é animal. Todo cavalo é mamífero. Portanto, todo cavalo é ___________. Exemplo B: Todo mamífero bebe leite. O homem é mamífero. Portanto, todo homem é ________e_________. 50 29/07/2012 2 ENGENHARIAS – LÓGICA DE PROGRAMAÇÃO – Henry Costa Lubanco / Joelio Piraciaba Existe Lógica no dia-a-dia? Sempre que pensamos, o raciocínio e a lógica nos acompanham necessariamente. Daí percebemos a importância da Lógica na nossa vida não só na teoria, como também na prática, já que quando queremos pensar, falar ou escrever corretamente precisamos colocar em Ordem o Pensamento, isto é, utilizar a Lógica. Exemplos: a) A gaveta está fechada. A bala está na gaveta. Preciso primeiro abrir a gaveta, para depois pegar a bala. b) João é mais velho que José. Marcelo é mais novo que José. Portanto, ______________________________________. 51 ENGENHARIAS – LÓGICA DE PROGRAMAÇÃO – Henry Costa Lubanco / Joelio Piraciaba Torre de Hanói 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 o menor. O objetivo é transferir os três discos para outra haste. 52 1 2 3 a b c http://www.prof2000.pt/users/pjca/jogos_ficheiros/hanoi/torre%20de%20hanoi.html 29/07/2012 3 ENGENHARIAS – LÓGICA DE PROGRAMAÇÃO – Henry Costa Lubanco / Joelio Piraciaba Três Jesuítas e Três Canibais Três jesuítas e três canibais precisam atravessar um rio; para tanto dispõem de um barco com capacidade para duas pessoas. Por medidas de segurança, não se deve permitir que em alguma margem a quantidade de jesuítas seja inferior à de canibais. Elabore uma sequência de passos indicando as ações necessárias para que a travessia seja feita de forma segura. 53 http://www.mdig.com.br/index.php?itemid=765 ENGENHARIAS – LÓGICA DE PROGRAMAÇÃO – Henry Costa Lubanco / Joelio Piraciaba Algoritmos O conceito central da programação e da ciência da computação é o de algoritmos. Programar é basicamente construir algoritmos. Um algoritmo é a descrição de um padrão de comportamento, expressado em termos de um repertório bem definido e finito de ações “primitivas”, das quais damos por certo que elas podem ser executadas. 54 29/07/2012 4 ENGENHARIAS – LÓGICA DE PROGRAMAÇÃO – Henry Costa Lubanco / Joelio Piraciaba Algoritmos (Conceitos) 55 "Algoritmo é uma sequência de passos que visa atingir um objetivo bem definido." (FORBELLONE, 1999) "Algoritmo é a descrição de uma sequência de passos que deve ser seguida para a realização de uma tarefa." (ASCENCIO, 1999) "Algoritmo é uma sequência finita de instruções ou operações cuja execução, em tempo finito, resolve um problema computacional, qualquer que seja sua instância." (SALVETTI, 1999) "Algoritmo são regras formais para a obtenção de um resultado ou da solução de um problema, englobando fórmulas de expressões aritméticas." (MANZANO, 1997) "Ação é um acontecimento que, a partir de um estado inicial, após um período de tempo finito, produz um estado final previsível e bem definido. Portanto, um algoritmo é a descrição de um conjunto de comandos que, obedecidos, resultam numa sucessão finita de ações." (FARRER, 1999). ENGENHARIAS – LÓGICA DE PROGRAMAÇÃO – Henry Costa Lubanco / Joelio Piraciaba Algoritmos Outro conceito de Algoritmo é, formalmente, uma seqüência finita de passos que levam a execução de uma tarefa, ou seja, a atingir um objetivo. Nesta pequena definição de algoritmo deve-se notar a existência de três idéias básicas: Seqüência: uma ordem de execução das instruções; Finita: a seqüência de passos a serem executados deve ser finita; e Objetivo: um algoritmo é desenvolvido para se atingir um determinado objetivo. 56 29/07/2012 5 ENGENHARIAS – LÓGICA DE PROGRAMAÇÃO – Henry Costa Lubanco / Joelio Piraciaba Exemplos de Algoritmos Exemplo de algoritmo sequencial “traga a cesta com batatas do porão”; “traga a panela do armário”; “descasque as batatas”; “devolva a cesta ao porão”; 57 ENGENHARIAS – LÓGICA DE PROGRAMAÇÃO – Henry Costa Lubanco / Joelio Piraciaba Exemplos de Algoritmos Exemplo de algoritmo com condição simples “traga a cesta de batata do porão”; “traga a panela do armário”; “Se saia é clara” Então “coloque avental”; “descasque as batatas”; “devolva a cesta ao porão”; 58 29/07/2012 6 ENGENHARIAS – LÓGICA DE PROGRAMAÇÃO – Henry Costa Lubanco / Joelio Piraciaba Exemplos de Algoritmos Exemplo simples de algoritmo com repetição “traga a cesta de batata do porão”; “traga a panela do armário”; “descasque uma batata”; “descasque uma batata”; P “descasque uma batata”; “devolva a cesta ao porão”; 59 13 Vezes ENGENHARIAS – LÓGICA DE PROGRAMAÇÃO – Henry Costa Lubanco / Joelio Piraciaba Exemplos de Algoritmos Somar três números 1. Receber os três números. 2. Somar os três números. 3. Mostrar o resultado obtido. Fazer um sanduíche (outro exemplo) 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. 60 29/07/2012 7 ENGENHARIAS – LÓGICA DE PROGRAMAÇÃO – Henry Costa Lubanco / Joelio Piraciaba Exemplos de Algoritmos Trocar a Lâmpada Pegar uma lâmpada nova. Pegar uma escada. Posicionar a escada embaixo da lâmpada queimada Subir na escada com a lâmpada nova na mão. Retirar a lâmpada queimada. Colocar a lâmpada nova. Descer da escada. Testar o interruptor. Guardar a escada. Jogar a lâmpada velha no lixo. 61 ENGENHARIAS – LÓGICA DE PROGRAMAÇÃO – Henry Costa Lubanco / Joelio Piraciaba Exemplos de Algoritmos Ir para Escola 1. Acordar cedo. 2. Ir ao banheiro. 3. Abrir o armário para escolher uma roupa. 4. Se o tempo estiver quente, pegar uma camiseta e uma calça jeans; caso contrário, pegar um agasalho e uma calça jeans. 5. Vestir a roupa escolhida. 6. Tomar café. 7. Pegar uma condução. 8. Descer próximo à escola. 62 29/07/2012 8 ENGENHARIAS – LÓGICA DE PROGRAMAÇÃO – Henry Costa Lubanco / Joelio Piraciaba Exemplos de Algoritmos Sacar dinheiro do banco 24 horas 1. Ir até o banco 24 horas. 2. Colocar o cartão. 3. Digitar a senha 4. Solicitar a quantia desejada. 5. Se o saldo for maior ou igual à quantia desejada, sacar; caso contrário, mostrar mensagem de impossibilidade de saque. 6. Retirar o cartão. 7. Sair do banco 24 horas 63 ENGENHARIAS – LÓGICA DE PROGRAMAÇÃO – Henry Costa Lubanco / Joelio Piraciaba 1. Compreender completamente o problema a ser resolvido, destacando os pontos mais importantes (“verbos”) e os objetos que o compõem. 2. Definir os dados de entrada, ou seja, quais dados serão fornecidos e quais objetos fazem parte desse cenário- problema. 3. Definir o processamento, ou seja, quais cálculos serão efetuados e quais as restrições para esses cálculos. O processamento é responsável pela transformação dos dados de entrada em dados de saída. Além disso, deve-se verificar quais objetos são responsáveis pelas atividades. 4. Definir os dados de saída, ou seja, quais dados serão gerados depois do processamento. 5. Construir o algoritmo utilizando um dos tipos descritos na próxima seção. 6. Testar o algoritmo realizando simulações. Passos para Construção de Algoritmos 64 29/07/2012 9 ENGENHARIAS – LÓGICA DE PROGRAMAÇÃO – Henry Costa Lubanco / Joelio Piraciaba Tipos de Algoritmos Fluxograma Pseudocódigo ou portugol 65 ENGENHARIAS – LÓGICA DE PROGRAMAÇÃO – Henry Costa Lubanco / Joelio Piraciaba Fluxograma O fluxograma consiste em analisar o enunciado do problema e escrever, utilizando símbolos gráficos pré-definidos, os passos a serem seguidos para sua resolução. Vantagem: o entendimento de elementos gráficos é mais simples que o entendimento de textos. Desvantagem: é necessário aprender a simbologia dos fluxogramas e, além disso, o algoritmo resultante não apresenta muitos detalhes, dificultando sua transcrição para um programa. 66 29/07/2012 10 ENGENHARIAS – LÓGICA DE PROGRAMAÇÃO – Henry Costa Lubanco / Joelio Piraciaba Fluxograma 67 ENGENHARIAS – LÓGICA DE PROGRAMAÇÃO – Henry Costa Lubanco / Joelio Piraciaba Pseudocódigo ou Portugol O pseudocódigo ou portugol consiste em analisar o enunciado do problema e escrever, por meio de regras predefinidas, os passos a serem seguidos para sua resolução. Vantagem: a passagem do algoritmo para qualquer linguagem de programação é quase imediata, bastando conhecer as palavras reservadas dessa linguagem que serão utilizadas. Desvantagem: é necessário aprender as regras do pseudocódigo. 68 29/07/2012 11 ENGENHARIAS – LÓGICA DE PROGRAMAÇÃO – Henry Costa Lubanco / Joelio Piraciaba Exemplo de Algoritmo Algoritmo para multiplicar dois números 69 Narrativa 1. Receber dois números que serão multiplicados. 2. Multiplicar os números. 3. Mostrar o resultado obtido na multiplicação. Fluxograma Pseudocódigo ALGORITMO DECLARE N1, N2, M NUMERICO ESCREVA “DIGITE DOIS NUMEROS” LEIA N1, N2 M� N1*N2 ESCREVA “MULTIPLICAÇÃO=“, M FIM_ALGORITMO ENGENHARIAS – LÓGICA DE PROGRAMAÇÃO – Henry Costa Lubanco / Joelio Piraciaba Exemplo de Algoritmo Algoritmo para dividir dois números 70 Narrativa 1. Receber dois números que serão divididos. 2. Se o segundo número for igual a zero, não poderá ser feita a divisão, pois não existe divisão por zero; caso contrário, dividir os números e mostrar o resultado da divisão. Fluxograma Pseudocódigo ALGORITMO DECLARE NI, N2, D NUMÉRICO ESCREVA "Digite dois números" LEIA NI, N2 SE N2 = 0 ENTÃO ESCREVA "Impossível dividir“ SENÃO INÍCIO D �N1/N2 ESCREVA "Divisão = “, D FIM FIM_ALG0RITM0. 29/07/2012 12 ENGENHARIAS – LÓGICA DE PROGRAMAÇÃO – Henry Costa Lubanco / Joelio Piraciaba Exemplo de Algoritmo Algoritmo para calcular a média e mostrar a situação 71 Narrativa 1. Receber as duas notas. 2. Calcular a média aritmética. 3. Mostrar a média aritmética. 4. Se a média aritmética for maior ou igual a 7, então a situação do aluno é aprovado; caso contrário, a situação é reprovado. Fluxograma Pseudocódigo ALGORITMO DECLARE NI, N2, M NUMÉRICO ESCREVA "Digite as duas notas1 LEIA NI, N2 M �(NI + N2) /2 ESCREVA "Média = ",M SE M > 7 ENTÃO ESCREVA "Aprovado" SENÃO ESCREVA "Reprovado" FIM ALGORITMO. ENGENHARIAS – LÓGICA DE PROGRAMAÇÃO – Henry Costa Lubanco / Joelio Piraciaba Exemplo de Algoritmo Algoritmo para calcular o novo salário. Sabe-se que os funcionários que recebem até R$500,00 terão aumento de 20%; os demais terão aumento de 10% 72 Narrativa 1. Receber o salário atual do funcionário. 2. Se o salário atual do funcionário for de até R$ 500, calcular o novo salário com percentual de aumento de 20%; caso contrário, calcular o novo salário com percentual de aumento de 10%. 3. Mostrar o novo salário. Fluxograma Pseudocódigo ALGORITMO DECLARE SAL_ATUAL, NOVO_SAL NUMÉRICO ESCREVA "Digite o salário atual do funcionário" LEIA SAL_ATUAL SE SAL_ATUAL < 500 ENTÃO NOVO_SAL � SAL_ATUAL * 1,2 0 . SENÃO N0V0_SAL �SAL_ATUAL * 1,10 ESCREVA "Novo salário = ",N0V0_SAL FIM_ALGORITMO. 29/07/2012 13 ENGENHARIAS – LÓGICA DE PROGRAMAÇÃO – Henry Costa Lubanco / Joelio Piraciaba Exercício 73 Em relação a algoritmos: I. É uma sequência lógica de instruções que devem ser seguidas para a resolução de um problema ou para execução de uma tarefa II. Os algoritmos não podem ser utilizados na área das ciências cognitivas devido a sua interpretação ambígua III. Os algoritmos podem construir uma parte importante da documentação de sistemas, pois descrevem as tarefas a serem realizadas pelos programas Dadas a sentenças, podemos afirmar que: a) As afirmativas I e II são verdadeiras b) As afirmativas II e III são falsas c) As afirmativas I e III são falsas d) As afirmativas I e II são falsas e) As afirmativas I e III são verdadeiras ENGENHARIAS – LÓGICA DE PROGRAMAÇÃO – Henry Costa Lubanco / Joelio Piraciaba Linguagem 74 Linguagem de programação é um método padronizado para expressar instruções para um computador. Uma linguagem permite que um programador especifique precisamente sobre quais dados um computador vai atuar, como estes dados serão armazenados ou transmitidos e quais ações devem ser tomadas sob várias circunstâncias. 29/07/2012 14 ENGENHARIAS – LÓGICA DE PROGRAMAÇÃO – Henry Costa Lubanco / Joelio Piraciaba Conceitos Básicos 75 As etapas para o desenvolvimento de um programa são: Análise - Nesta etapa estuda-se o enunciado do problema para definir os dados de entrada, o processa- mento e os dados de saída. Algoritmo - Ferramentas do tipo descrição narrativa, fluxograma ou português estruturado são utilizadas para descrever o problema com suas soluções. Codificação - O algoritmo é transformado em códigos; da linguagem de programação escolhida para se trabalhar. Portanto, um programa é a codificação de um algoritmo em uma linguagem de programação (ASCENCIO, 1999). ENGENHARIAS – LÓGICA DE PROGRAMAÇÃO – Henry Costa Lubanco / Joelio Piraciaba Linguagem PASCAL A linguagem PASCAL foi desenvolvida em 1968 por Niklaus Wirth, na Suíça, destinada principalmente à programação científica, mas sua grande evolução permitiu que, nos dias de hoje, seja utilizada para qualquer fim. Por se tratar de uma linguagem estruturada, isto é, uma linguagem que possui regras para a escrita de seus programas, é muito empregada nas universidades por alunos que começam a aprender programação. 76 29/07/2012 15 ENGENHARIAS – LÓGICA DE PROGRAMAÇÃO – Henry Costa Lubanco / Joelio Piraciaba Linguagem C/C++ A linguagem C foi o primeiro a implementá-la usando um computador DEC PDP-11, que utilizava o sistema operacional Unix. O marco inicial foi uma linguagem chamada BCPL, desenvolvida por Martin Richards, que teve forte influência em uma linguagem denominada B, inventada por Ken Thompson. Na década de 1970, B levou ao desenvolvimento de C. Várias implementações de C foram criadas, gerando, assim, muitas discrepâncias. Para resolver tal situação, o ANSI (American National Standards Institute) . A linguagem C++ é uma extensão da linguagem C. Os incrementos encontrados na linguagem C++ foram feitos para dar suporte à programação orientada a objetos. A sintaxe dessa linguagem é basicamente a mesma da linguagem C. 77 ENGENHARIAS – LÓGICA DE PROGRAMAÇÃO – Henry Costa Lubanco / Joelio Piraciaba Linguagem JAVA A tecnologia JAVA é composta pela linguagem de programação JAVA e pela plataforma de desenvolvimento JAVA. Essa linguagem de programação possui como principais características: simplicidade, orientação a objetos, portabilidade, alta performance e segurança. Nessa linguagem, os programas são escritos em arquivos-texto com a extensão .java. Ao serem compilados com o compilador javac, são gerados os arquivos .class. Um arquivo .class é constituído de bytecodes, código interpretado pela Máquina Virtual Java (Java Virtual Machine). 78 29/07/2012 16 ENGENHARIAS – LÓGICA DE PROGRAMAÇÃO – Henry Costa Lubanco / Joelio Piraciaba Processo de Execução A plataforma JAVA é composta: Pela Máquina Virtual Java, responsável por fazer a interface entre seu programa e o sistema operacional, transformando os bytecodes (comuns a qualquer ambiente) em código nativo reconhecido pelo hardware. Pela API(Application Programming Interface) JAVA, composta por um amplo conjunto de classes já implementadas e testadas que fornecem variados recursos aos desenvolvedores. 79