Buscar

Aula 06 Lógica de Programação


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

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Continue navegando