Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
* * Lógica de Programação * * Lógica de Programação Márcio Soussa marcio.soussa10@gmail.com Doutor em Modelagem Computacional e Tecnologias Industriais (2015) SENAI-CIMATEC * * * Referências Bibliográficas FORBELLONE, André L.V., EBERSPACHER, H.F. Lógica de Programação – A construção de Algoritmos e Estruturas de Dados. Pearson Brasil. MANZANO, José Augusto N.G., OLIVEIRA, Jair Figuereido de. Algoritmos – Lógica para Desenvolvimento de Programação de Computadores. Érica. São Paulo. SCHILDT, Herbert, C Completo e Total, Ed. Makron Books DEITEL – H.M. – P.J., C++ Como Programar – Bookman 2001 – Porto Alegre Obs.: Agradecimento ao Prof. Arleys pelas contribuições * * O que é Lógica ? * * Exemplo Dia-a-Dia João é mais velho que Maria Maria é mais velha que Carlos João é mais velho que Carlos * * Exemplo Dia-a-Dia Todo mamífero é um animal Todo cachorro é um mamífero Todo cachorro é um animal * * Silogismo No estudo da lógica proposicional, um silogismo é um argumento composto de duas premissas e uma conclusão onde se estabelece uma relação, que pode ser válida ou não. * * Exemplo Dia-a-Dia Seria possível trocar uma lâmpada dessa forma? Pegar uma escada Posicionar a escada embaixo da lâmpada Buscar uma lâmpada nova Colocar a lâmpada nova Retirar a lâmpada velha Subir na escada * * Definições Básicas “É a arte de pensar corretamente” Ensina a usar corretamente o Pensamento “Coloca Ordem no Pensamento” * * Definições Básicas “A ciência das leis ideais do pensamento e a arte de aplicá-los à demonstração da verdade” * * Importância A lógica é necessária para pessoas que desejam trabalhar com informática (analistas, programadores, suporte) Ela permite definir a sequência lógica para a solução de um problema com eficiência e eficácia. * * Importância Se aplica a qualquer linguagem de programação; Agiliza a codificação da escrita e da programação; Facilita a depuração da leitura do mesmo; Permite a verificação de possíveis falhas; Facilita as alterações e atualizações dos programas. * * Definições Básicas Lógica de Programação “É a contextualização da lógica na programação de computadores, buscando a melhor sequência de ações para solucionar determinado problema. Essa sequência de ações é chamada de algoritmo” * * Algoritmo Exemplo de um Algoritmo para trocar uma lâmpada Algoritmo 1.1 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 * * Algoritmo Outros Exemplos do dia-a-dia: Manual de um aparelho eletrônico Tutorial de utilização de um software Forma de cálculo de uma hora extra Uma receita para o preparo de uma moqueca Qual é a sua receita? Passos para realizar uma ligação telefônica * * Descrição narrativa do Algoritmo Exemplo: Receita de Bolo: Providencie manteiga, ovos, 2 Kg de massa, etc. Misture os ingredientes Despeje a mistura na fôrma de bolo Leve a fôrma ao forno Espere 20 minutos Retire a fôrma do forno Deixe esfriar Prove * * Algoritmo “É uma sequência de passos que visa atingir um objetivo definido” “Um conjunto finito de regras que provê uma sequência de operações para resolver um tipo de problema específico” “Sequência ordenada, e não ambígua, de passos que levam à solução de um dado problema” “Processo de cálculo, ou de resolução de um grupo de problemas semelhantes, em que se estipulam, com generalidade e sem restrições, as regras formais para a obtenção do resultado ou da solução do problema” [AURÉLIO] * * Algoritmo Algoritmo 1.2 Pegar uma escada Posicionar a escada embaixo da lâmpada Buscar uma lâmpada nova Acionar o interruptor Se a lâmpada não acender, então Subir na escada Retirar a lâmpada queimada Colocar a lâmpada nova * * Algoritmo Algoritmo 1.3 Acionar o 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 * * Algoritmo Algoritmo 1.4 Acionar o 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 Acionar o interruptor Se a lâmpada não acender, então Retirar a lâmpada queimada Colocar outra lâmpada nova Se a lâmpada não acender, então ......... * * Algoritmo Propriedades de um algoritmo: Ações Simples e bem definidas (não ambíguas) Sequência ordenada de ações Sequência finita de passos * * Princípios de Resolução Problemas Problema É uma proposta duvidosa, que pode ter numerosas soluções. Questão não resolvida e que é objeto de discussão * * Problema a ser resolvido Aproveitando uma promoção de uma loja de materiais para construção, uma família resolve trocar o piso da sala de sua residência. Sabem que a sala mede 4 metros de largura e possui um comprimento de 5,5 metros. Sabem também que o ladrilho desejado é quadrado, com 25 cm de lado. Quantos ladrilhos serão necessários para ladrilhar o piso da sala inteira? * * Representação Descrição Narrativa: Representações textuais que expressam uma ordem do fluxo dos pensamentos a serem executados 1-Ler Salário 2-Ler Horas Mensais 3-Ler tipo da H Extra 4-Ler quantidade de H. extras realizadas 5-Calcular o valor da hora extra 6-Informar o valor da hora extra calculada * * Representação Gráfica: Representações gráficas que expressam uma ordem do fluxo dos pensamentos a serem executados * * Representação Gráfica Fluxograma Geralmente usada por profissionais de análise de sistema, bem como profissionais de Organização e Métodos. Diagrama de Blocos Ferramenta usada basicamente por profissionais que estão envolvidos diretamente com a programação. * * Diagrama de Bloco * * Simbologia Básica Formas de representação gráfica: * * Técnicas Básicas de Programação A Programação Estruturada pode ser entendida como uma forma de programar que visa facilitar a escrita, entendimento, validação e manutenção de programas. Para Dijkstra, “a arte de programar consiste na arte de organizar e dominar a complexidade”. Procura reduzir o nível de complexidade em três níveis: desenvolvimento do programa em diferentes fases por refinamento sucessivo (desenvolvimento top-down); decomposição do programa total em módulos funcionais, organizados de preferência num sistema hierárquico; uso de um número limitado de estruturas básicas de fluxo de controle dentro de cada módulo. * * Técnicas Básicas de Programação Estruturada * * Técnicas Básicas de Programação Um programa de computador é composto por dos tipos básicos de informações: dados e instruções * * Técnicas Básicas de Programação Dados São representados pelas informações a serem tratadas (processadas) pelo computador. Caracteriza-se por três tipos de dados: Dados numéricos Dados caracteres Dados lógicos * * Técnicas Básicas de Programação Tipos inteiros: Números inteiros, positivos ou negativos: 35, 0, -35 ..... Tipos Reais: Abrangem inteiros, negativos, positivos e fracionários: 35, 0, -35, 1.25, -45.1245547 ...... s * * Técnicas Básicas de Programação Tipos Caracteres: Sequência de textos e letras, válida quando estiver entre (“”) aspas: “oi.. Tudo bem”, “Telefone: 5555-4444” .... Tipos Lógicos: Assumem apenas dois valores: Verdadeiro ou Falso. Podendo ser representado como: Sim ou Não True ou False .V. ou .F. Etc... * * Técnicas Básicas de Programação Uso de variáveis: Variável: Tudo aquilo que é sujeito a variações, que é incerto, instável ou inconstante. Uso de constantes: É tudo aquilo que é fixo ou estável; O valor do PI = 3,14156 * * Técnicas Básicas de Programação * * Técnicas Básicas de Programação Expressões aritméticas ou fórmulas matemáticas * * Técnicas Básicas de Programação Operadores matemáticos * * Técnicas Básicas de Programação Operadores lógicos * * Técnicas Básicas de Programação Instruções São representadas pelo conjunto de palavras-chave de uma linguagem de programação Português estruturado (Portugol) Inicio, fim, var, programa, enquanto, se, então, para, escreva, leia, faça, repita e até que. * * Técnicas Básicas de Programação Regras básicas: Todo problema a ser resolvido será previamente entendido, passado para uma descrição narrativa, para depois ser representado graficamente; Toda tarefa feita a uma instrução será escrita em letra minúscula em formato negrito. As instruções não serão indicadas dentro dos diagramas de blocos; Qualquer valor atribuído a uma variável será feito com símbolo = (igual) tanto no diagrama de blocos quanto em código português estruturado. * * Técnicas Básicas de Programação Problema: Ler dois valores, efetuar a soma e apresentar o resultado em tela. Descrição narrativa: 1 – Ler dois valores, no caso variáveis A e B; 2 – Efetuar a soma das variáveis A e B, implicando o seu resultado na variável SOMA; 3 – Apresentar o valor da variável SOMA após a operação de soma dos dois valores fornecidos. * * Técnicas Básicas de Programação programa SOMA_DOIS_NUMEROS var SOMA : inteiro A : inteiro B : inteiro início leia A leia B SOMA = A + B escreva SOMA fim Português estruturado * * Técnicas Básicas de Programação Problema: Ler dois valores, efetuar a soma e verificar se é maior que 10. Se for, apresentar o resultado na tela. Pede-se: Diagrama de Bloco Português Estruturado * * Estrutura de Controle – Tomada de Decisões Desvio condicional Simples. Ajuda a tomada de decisões Verifica uma condição. Se for verdadeira, serão executadas todas as instruções que estiverem entre a instrução Se ... Então. Trabalharemos com uma instrução na codificação em português estruturado a seguir: se ... então ... fim_se * * Estrutura de Controle – Tomada de Decisões São utilizadas as letras S e N no diagrama de tomada de decisão. O S representa Sim conseqüentemente a proposição Verdadeira e o N representa o Não. Além das linhas com setas indicando a direção do processamento. * * Estrutura de Controle – Tomada de Decisões se ( <condição> ) então <instruções para a condição verdadeira> fim_se <instruções para a condição falsa> Português estruturado * * Estrutura de Controle – Tomada de Decisões Problema: Ler dois valores numéricos, efetuar a adição e apresentar o seu resultado caso o valor somado seja maior que 10. Descrição Narrativa: 1 – Ler dois valores respectivamente nas variáveis A e B 2 – efetuar a soma dos valores das variáveis A e B implicando o valor da soma na variável X 3 – Verificar se o valor de X é maior que 10 3.1 – Se valor de X for maior que 10, apresentar o valor de X em tela. * * Estrutura de Controle – Tomada de Decisões Português estruturado programa SOMA_NUMEROS var X : inteiro A : inteiro B : inteiro início leia A, B X = A + B se ( X > 10 ) então escreva X fim_se fim * * Técnicas Básicas de Programação Problema: Ler dois valores numéricos, efetuar a adição e caso o valor somado seja menor ou igual a 10 apresentar o resultado somando-se 5 e se o resultado for maior que 10, apresentar o resultado subtraído 7. Pede-se: Diagrama de Bloco Português Estruturado * * Estrutura de Controle – Tomada de Decisões Desvio condicional Composto. Ajuda a tomada de decisões Verifica uma condição. Se for verdadeira, serão executadas todas as instruções que estiverem entre a instrução Se ... Então. Se for falsa, serão executadas todas as instruções que estiverem entre senão... Fim_se Trabalharemos com uma instrução na codificação em português estruturado a seguir: se ... então ... fim_se * * Estrutura de Controle – Tomada de Decisões Diagrama de Bloco. * * Estrutura de Controle – Tomada de Decisões Português Estruturado se ( <condição> ) então <instruções para a condição verdadeira> senão <instruções para a condição falsa> Fim_se * * Estrutura de Controle – Tomada de Decisões Problema: Reajuste salarial, obter o salário e calcular o reajuste do salário sendo: Salário < que 500, reajuste será de 15%; Salário >= a 500 mais <= 1000, reajuste será de 10%; Salário > 1000, reajuste será de 5%. Pede-se: Algoritmo Diagrama de Bloco Português Estruturado * * Estrutura de Controle – Tomada de Decisões Desvio condicional Encadeado. Quando é necessário se estabelecer verificações de condições sucessivas, para determinada ação, e que ocorra em um conjunto anterior de instruções ou condições para que se estabeleça satisfatória a proposição. * * * Diagrama de blocos Estrutura de Controle – Tomada de Decisões * * * Português estruturado se ( <condição 1> ) então <instruções para a condição 1 verdadeira> senão se ( <condição 2> ) então <instruções para a condição 1 falsa e condição 2 verdadeira> senão <instruções para a condição 1 falsa e condição 2 falsa> fim_se fim_se Estrutura de Controle – Tomada de Decisões * * * Reajuste salarial, obter o salário e calcular o reajuste do salário sendo: Salário < que 500, reajuste será de 15%; Salário >= a 500 mais <= 1000, reajuste será de 10%; Salário > 1000, reajuste será de 5%. Descrição Narrativa 1 – Definir uma variável para o salário reajustado como NOVO_SALARIO; 2 – Ler um valor para a variável SALARIO; 3 – Verificar se o valor de SALARIO < 500, se sim reajustar em 15%; 4 – Verificar se o valor de SALARIO <= 1000, se sim reajustar em 10% 5 – Verificar se o valor de SALARIO > 1000, se sim reajustar em 5%; 6 – Apresentar o valor reajustado implicando na variável NOVO_SALARIO. Estrutura de Controle – Tomada de Decisões * * * Diagrama de blocos Estrutura de Controle – Tomada de Decisões * * * Operador Lógico (para tabela verdade) Pode ser que necessitemos utilizar em algum momento, com o relacionamento de duas ou mais condições ao mesmo tempo na mesma condição SE. Neste caso aplicaremos os seguintes operadores lógicos. Conjunção: .e. (˄, and, &&) Disjunção: .ou. (˅, or, ||) Negação: .não. (¬, not, !) Em português estruturados está sempre entre os pontos (.). Estrutura de Controle – Tomada de Decisões * * * Operador Lógico (Conjunção) .e. (˄, and, &&) Estrutura de Controle – Tomada de Decisões * * * Operador Lógico: conjunção Diagrama de Blocos Estrutura de Controle – Tomada de Decisões * * * Operador Lógico: conjunção Português estruturado se ( <condição1> ) .e. ( <condição2> ) então <Instrução executada se ambas as condições forem verdadeiras> fim_se Estrutura de Controle – Tomada de Decisões * * * Operador Lógico: Disjunção .ou. (˅ , or, ||) Técnicas Básicas de Programação * * * Operador Lógico: Disjunção Diagrama de Blocos Estrutura de Controle – Tomada de Decisões * * * Operador Lógico: Disjunção Português estruturado se ( <condição1> ) .ou. ( <condição2> ) então <Instrução executada se pelo menos uma condição for verdadeiras> fim_se Estrutura de Controle – Tomada de Decisões * * * Operador Lógico: Negação .não. (¬, not, !) Estrutura de Controle – Tomada de Decisões * * * Operador Lógico: Negação Diagrama de Blocos Estrutura de Controle – Tomada de Decisões * * * Operador Lógico: Negação Português estruturado se .não. ( <condição> ) então <Instrução executada se a condição for falsa> fim_se Estrutura de Controle – Tomada de Decisões * * * Exercício: O índice de Massa Corporal (IMC) é uma fórmula que indica se um adulto está acima do peso, se está obeso ou abaixo do peso ideal considerado saudável. A fórmula para calcular o Índice de Massa Corporal é: IMC = peso / (altura)2. Desenvolva a descrição narrativa, Diagrama de blocos e codificação em português estruturado, para o seguinte problema: Ler dois valores, peso e altura em seguida calcular o índice de massa corporal (IMC) e apresentar em tela se a pessoa está abaixo do peso, no peso normal, acima do peso ou obeso obedecendo a tabela da Organização Mundial de Saúde. Tabela da Organização Mundial de Saúde Estrutura de Controle – Tomada de Decisões * * * Exercício: Dados três valores A, B, C, verificar se eles podem ser os comprimentos dos lados de um triângulo, verificar se compõem um triângulo equilátero, isósceles ou escaleno. Informar se não compuserem nenhum triângulo. Obs.: Um triângulo é uma figura geométrica fechada nos três lados, em que cada um é menor que a soma dos outros dois. Estrutura de Controle – Tomada de Decisões * * Estrutura de Controle – Tomada de Decisões Seleção de Múltipla Escolha. Escolha X Caso V1: .... Caso V2: .... Caso V3,V4: .... Caso V5...V10: ... Caso contrário: .... Fimescolha * * * Desenvolva um programa que leia cinco vezes um determinado valor e que este valor seja multiplicado por três e apresentado o resultado em tela. Como solucionar este problema ? Estrutura de Controle de Laços * * * Repetição do tipo: Teste lógico no início do Looping. Caracteriza-se por uma estrutura que efetua um teste lógico no início do looping, verificando se é permitido executar o trecho de instruções subordinado ao looping. A estrutura e denominada de enquanto. enquanto ... faça .... fim_enquanto Estrutura de Controle de Laços * * * Diagrama de blocos Estrutura de Controle de Laços * * * Português estruturado enquanto ( <condição> ) faça <Instrução para condição verdadeira> fim_enquanto Estrutura de Controle de Laços * * * Resolvendo o nosso problema anterior: Descrição narrativa: 1 – Criar uma variável para servir como contador com o valor inicial igual a um; 2 – Enquanto o valor do contador for menor ou igual a 5, processar os passos 3, 4 e 5; 3 – Ler um valor para a variável X; 4 – Efetuar a multiplicação da variável X por 3 implicando na variável R; 5 – Apresentar o valor calculado contido na variável R; 6 – Quando o contador for maior que 5, encerrar o processamento. Estrutura de Controle de Laços * * * Diagrama de blocos Estrutura de Controle de Laços * * * Português estruturado programa LOOPING_1A var X, R, CONT : inteiro início CONT = 1 enquanto ( CONT < = 5 ) faça leia X R = X * 3 escreva R CONT = CONT + 1 /// ou CONT ++ fim_enquanto fim Estrutura de Controle de Laços * * * Exercício: Desenvolva um programa que leia cinco vezes um determinado valor e que este valor seja multiplicado por três e apresentado o resultado em tela. Alterar o problema sendo que só sairá do looping quando o usuário queira, efetuando uma pergunta em tela se deseja continuar ? Estrutura de Controle de Laços * * * Repetição do tipo: Teste lógico no fim do Looping. Caracteriza-se por uma estrutura que efetua um teste lógico no fim do looping A estrutura e denominada de repita. repita ... até_que Estrutura de Controle de Laços * * * Resolvendo o nosso problema anterior: Descrição narrativa: 1 – Criar uma variável contador; 2 – Ler um valor para a variável X; 3 – Efetuar a multiplicação da variável X por 3 implicando na variável R; 4 – Apresentar o valor calculado contido na variável R; 5 – Acrescentar um ao contador; 6 – Repetir os passos 2, 3, 4 e 5 até que o contador seja maior que 5. Estrutura de Controle de Laços * * * Diagrama de blocos Estrutura de Controle de Laços * * * Português estruturado programa LOOPING_2A var X, R, CONT : inteiro início CONT = 1 repita leia X R = X * 3 escreva R CONT = CONT + 1 /// ou CONT ++ até_que ( CONT > 5 ) fim Estrutura de Controle de Laços * * * Repetição do Tipo: Variável de controle. Possibilita o uso de contadores finitos, sem o uso das condições anteriores. Os loopings que possuem um número finito de execução poderão ser executados através de estrutura de laços contados para, sendo conseguida com a utilização do conjunto de instruções: para ... de ... até ... faça ... fim_para Estrutura de Controle de Laços * * * Diagrama de blocos Estrutura de Controle de Laços * * * Português estruturado para <variável> de <início> até <fim> passo <incremento> <Instruções> fim_para Estrutura de Controle de Laços * * * Exemplo: Pedir a leitura de um valor para a variável X, multiplicar este valor por 3 implicando-o à variável de resposta R e apresentar o valor obtido, repetindo esta seqüência por cinco vezes. Estrutura de Controle de Laços * * * Descrição narrativa: 1 – Definir um contador variando de 1 a 5; 2 – Ler um valor para a variável X; 3 – Efetuar a multiplicação do valor de X por 3, implicando o resultado na variável R; 4 – Apresentar o valor calculado contido na variável R; 5 – Repetir os passos 2, 3, 4 e 5 até que o contador seja encerrado. Estrutura de Controle de Laços * * * Diagrama de blocos Estrutura de Controle de Laços * * * Português estruturado programa LOOPING_2A var X, R, CONT : inteiro início para CONT de 1 até 5 passo 1 leia X R = X * 3 escreva R fim_para fim Estrutura de Controle de Laços * * * Após desenvolver um algoritmo ele deverá sempre ser testado. Este teste é chamado de TESTE DE MESA, que significa, seguir as instruções do algoritmo de maneira precisa para verificar se o procedimento utilizado está correto ou não. Exercício * * * programa LOOPING_2A var X, R, CONT : inteiro início para CONT de 1 até 5 passo 1 leia X R = X * 3 escreva R fim_para fim Exercício