Lógica de Programação
Dom Pedro II
Eduardo Bloisi
MBA em Gestão da Informação – Unifacs
Bacharel em Ciência da Computação – Unifacs
MCP, CSM
bloisi@hotmail.com
Linguagem de Programação
Viabiliza na prática um algoritmo.
Possui um conjunto de instruções para
implementar um algoritmo.
A partir do código implementado pela
linguagem, são gerados os programas de
computador.
Conjunto de instruções de um determinado
programa de computador = código-fonte.
Linguagens de Programação
 Como o código-fonte se torna um programa executável ?
Compilador.
 Linguagens de máquina: O nível mais baixo de execução de
um programa.
 Alto desempenho
 Difícil implementação
 Linguagem de montagem: assembly.
 Intermediária entre linguagem de máquina e linguagem de alto nível.
 Linguagens de alto nível.
 Se aproxima da linguagem humana
 Um comando equivale a vários comandos de linguagem de máquina.
Linguagem de Máquina
 Sequência binária (0s e 1s)
 Uma operação de soma pode ser representada
como: 10100100.
 Difícil implementação e facilidade para erros.
 Código-fonte longo e de difícil manutenção.
 Alto desempenho por ser possível otimizar a
implementação em relação a linguagens de alto
nível.
Linguagem de Montagem
Conhecida como assembly.
Representa um avanço em relação a
linguagem de máquina, pois já possui
comando mnemônicos.
Uma operação de soma seria representada
como: ADD 1,1
É o código intermediário das linguagens de
programação antes do código de máquina.
Compilador
 Um compilador é um programa de computador que
transformar um código fonte em um código objeto.
 As etapas do processo de compilação:
 Escrita do código fonte.
 Análise léxica: identifica os caracteres do código fonte.
 Análise sintática: Verifica se as instruções estão corretas.
 Geração do código assembly.
 Geração do código de máquina.
Compilador
Código fonte
Análise Léxica
Análise Sintática
Código intermediário
Código em linguagem de máquina
Algoritmos
Conceito: Sequência lógica de instruções para
resolução de um problema. Serve como
linguagem intermediária entre a linguagem
humana e as linguagens de programação.
Representação: Através de narrativa,
fluxograma ou pseudocódigo (conhecido
como portugol).
Algoritmos
Devem ser claros e objetivos.
Declarações curtas.
Não devem deixar dúvidas.
São formados por frases com uma ação.
Algoritmo - Desenvolvendo
 Devemos pensar de forma lógica e sequenciada.
 Implementando algoritmos para problemas práticos:
 1. Trocar uma lâmpada
 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 - Desenvolvendo
 E se a lâmpada não estivesse queimada ?
 2 . Trocar a Lâmpada
 Teste condicional:
 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 - Desenvolvendo
 Otimizando o código:
 3 . Trocar a lâmpada
 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
Algoritmos - Desenvolvendo
 E se a lâmpada nova estiver queimada ?
 4. Trocar a lâmpada
 Acionar o interruptor
 Se a lâmpada não acender então
 Pegar a escada
 Posicionar a escada embaixo da lâmpada
 Pegar a lâmpada nova
 Subir na escada
 Retirar a lâmpada queimada
 Colocar a lâmpada nova
 Se a lâmpada não acender então
• Retirar a lâmpada queimada
• Colocar outra lâmpada nova
Algoritmos - Desenvolvendo
 A quarta versão não está finalizada
 5.Trocar a lâmpada
 Acionar o interruptor
 Se a lâmpada não acender então
 Pegar uma escada
 Colocar a escada embaixo da lâmpada
 Buscar uma lâmpada nova
 Subir na escada
 Retirar a lâmpada queimada
 Colocar a lâmpada nova
 Enquanto a lâmpada não acender faça
• Retirar a lâmpada queimada
• Colocar outra lâmpada nova
Elementos dos Algoritmos
 Tipos de Dados
 Numérico, Literal e Lógico
 Constantes: Dados que não sofrem alteração ao
longo do programa.
 Variáveis: Dados que podem sofrer modificação ao
longo do programa.
 Identificadores (nomes) de variáveis.
 Tipo de variáveis.
 Declaração de variáveis.
 Atribuição de variáveis.
Elementos dos Algoritmos
Variáveis precisam ser declaradas com o
tipo a ser utilizado:
var a declaração var indica a relação de variáveis
ano: inteiro tipo numérico inteiro
salario: real tipo numérico real
matriculado: caractere tipo literal caractere
nome: cadeia tipo literal cadeia
aprovado: lógico tipo lógico
Expressões
Aritméticas:
 Operadores: +, -, * e /.
 Operandos: constantes ou variáveis.
Lógicas:
 Operadores: relacionais (=, <>, >, <, >=, <=, <>) e os
lógicos (não, e, ou).
 Tabela lógica.
Atribuição
 Armazena um determinado valor em uma variável.
 variavel_numerica <- 5
 variavel_literal <- ‘nome do aluno’
 Exemplos:
var
ano: inteiro
salario: real
matriculado: caractere
nome: cadeia
aprovado: lógico
atribuindo ...
ano <- 2012
salario < - 3000
matriculado <- ´S´
nome < - ´Eduardo´
Aprovado < - verdadeiro
Atribuição
 O valor a ser armazenado pode ser o conteúdo de outra
variável, desde que sejam do mesmo tipo.
Exemplo:
var
ano: inteiro
ano_letivo: inteiro
ano < - 2012 a variável ano recebe o valor 2012
ano_letivo <- ano a variável ano_letivo tem o seu valor modificado para o
mesmo valor da variável ano que é 2012
 As atribuições entre variáveis devem ser feitas com
atenção para não perder o valor das mesmas
indevidamente durante a execução do programa.
Entrada e Saída
 O comando leia permite atribuir uma entrada de
dados a uma variável:
 Leia(salario)
O valor que o usuário informar, será atribuído a variável salario.
 O comando escreva permite exibir o valor de
variáveis e constantes:
 Escreva(‘O salário é ’, salario)
Na tela será mostrado O salário é <valor da variável salario>
 Comentários (chaves)
Desenvolvendo
 Com os elementos básicos já vistos, podemos criar um algoritmo.
 Exemplo 1.1: Criar um algoritmo para receber dois números
inteiros, somá-los e apresentar o resultado na tela.
programa soma_dois_numeros
var
a, b, c: inteiro
inicio
leia a
leia b
c <- a +b
escreva c
fim
Estrutura Condicional
Desvio condicional simples
se <condição> então
Instruções
fim_se
Instruções
As instruções compreendidas entre o bloco se ...
fim_se serão executadas somente se a
condição do desvio for verdadeira.
Estrutura Condicional
Desvio condicional simples
Exemplo:
a <- 5
b <- 6
se (b>a) então
escreva (b é maior que a)
fim_se
c <- 10
Estrutura Condicional
 Desvio condicional composto
se <condição> então
Instruções
senão
instruções
fim_se
Instruções
As instruções compreendidas entre o bloco se ... senão serão
executadas somente se a condição do desvio for verdadeira.
Caso a condição seja falsa, serão executadas apenas as instruções
entre o senão e o fim_se.
Estrutura Condicional
 Desvio condicional composto
Exemplo:
a <- 10
b <- 7
se (b>a) então
escreva (b é maior que a)
else
escreva (b é menor que a)
fim_se
c <- 10

Lógica de programação 1

  • 1.
    Lógica de Programação DomPedro II Eduardo Bloisi MBA em Gestão da Informação – Unifacs Bacharel em Ciência da Computação – Unifacs MCP, CSM bloisi@hotmail.com
  • 2.
    Linguagem de Programação Viabilizana prática um algoritmo. Possui um conjunto de instruções para implementar um algoritmo. A partir do código implementado pela linguagem, são gerados os programas de computador. Conjunto de instruções de um determinado programa de computador = código-fonte.
  • 3.
    Linguagens de Programação Como o código-fonte se torna um programa executável ? Compilador.  Linguagens de máquina: O nível mais baixo de execução de um programa.  Alto desempenho  Difícil implementação  Linguagem de montagem: assembly.  Intermediária entre linguagem de máquina e linguagem de alto nível.  Linguagens de alto nível.  Se aproxima da linguagem humana  Um comando equivale a vários comandos de linguagem de máquina.
  • 4.
    Linguagem de Máquina Sequência binária (0s e 1s)  Uma operação de soma pode ser representada como: 10100100.  Difícil implementação e facilidade para erros.  Código-fonte longo e de difícil manutenção.  Alto desempenho por ser possível otimizar a implementação em relação a linguagens de alto nível.
  • 5.
    Linguagem de Montagem Conhecidacomo assembly. Representa um avanço em relação a linguagem de máquina, pois já possui comando mnemônicos. Uma operação de soma seria representada como: ADD 1,1 É o código intermediário das linguagens de programação antes do código de máquina.
  • 6.
    Compilador  Um compiladoré um programa de computador que transformar um código fonte em um código objeto.  As etapas do processo de compilação:  Escrita do código fonte.  Análise léxica: identifica os caracteres do código fonte.  Análise sintática: Verifica se as instruções estão corretas.  Geração do código assembly.  Geração do código de máquina.
  • 7.
    Compilador Código fonte Análise Léxica AnáliseSintática Código intermediário Código em linguagem de máquina
  • 8.
    Algoritmos Conceito: Sequência lógicade instruções para resolução de um problema. Serve como linguagem intermediária entre a linguagem humana e as linguagens de programação. Representação: Através de narrativa, fluxograma ou pseudocódigo (conhecido como portugol).
  • 9.
    Algoritmos Devem ser clarose objetivos. Declarações curtas. Não devem deixar dúvidas. São formados por frases com uma ação.
  • 10.
    Algoritmo - Desenvolvendo Devemos pensar de forma lógica e sequenciada.  Implementando algoritmos para problemas práticos:  1. Trocar uma lâmpada  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.
  • 11.
    Algoritmo - Desenvolvendo E se a lâmpada não estivesse queimada ?  2 . Trocar a Lâmpada  Teste condicional:  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.
  • 12.
    Algoritmo - Desenvolvendo Otimizando o código:  3 . Trocar a lâmpada  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
  • 13.
    Algoritmos - Desenvolvendo E se a lâmpada nova estiver queimada ?  4. Trocar a lâmpada  Acionar o interruptor  Se a lâmpada não acender então  Pegar a escada  Posicionar a escada embaixo da lâmpada  Pegar a lâmpada nova  Subir na escada  Retirar a lâmpada queimada  Colocar a lâmpada nova  Se a lâmpada não acender então • Retirar a lâmpada queimada • Colocar outra lâmpada nova
  • 14.
    Algoritmos - Desenvolvendo A quarta versão não está finalizada  5.Trocar a lâmpada  Acionar o interruptor  Se a lâmpada não acender então  Pegar uma escada  Colocar a escada embaixo da lâmpada  Buscar uma lâmpada nova  Subir na escada  Retirar a lâmpada queimada  Colocar a lâmpada nova  Enquanto a lâmpada não acender faça • Retirar a lâmpada queimada • Colocar outra lâmpada nova
  • 15.
    Elementos dos Algoritmos Tipos de Dados  Numérico, Literal e Lógico  Constantes: Dados que não sofrem alteração ao longo do programa.  Variáveis: Dados que podem sofrer modificação ao longo do programa.  Identificadores (nomes) de variáveis.  Tipo de variáveis.  Declaração de variáveis.  Atribuição de variáveis.
  • 16.
    Elementos dos Algoritmos Variáveisprecisam ser declaradas com o tipo a ser utilizado: var a declaração var indica a relação de variáveis ano: inteiro tipo numérico inteiro salario: real tipo numérico real matriculado: caractere tipo literal caractere nome: cadeia tipo literal cadeia aprovado: lógico tipo lógico
  • 17.
    Expressões Aritméticas:  Operadores: +,-, * e /.  Operandos: constantes ou variáveis. Lógicas:  Operadores: relacionais (=, <>, >, <, >=, <=, <>) e os lógicos (não, e, ou).  Tabela lógica.
  • 18.
    Atribuição  Armazena umdeterminado valor em uma variável.  variavel_numerica <- 5  variavel_literal <- ‘nome do aluno’  Exemplos: var ano: inteiro salario: real matriculado: caractere nome: cadeia aprovado: lógico atribuindo ... ano <- 2012 salario < - 3000 matriculado <- ´S´ nome < - ´Eduardo´ Aprovado < - verdadeiro
  • 19.
    Atribuição  O valora ser armazenado pode ser o conteúdo de outra variável, desde que sejam do mesmo tipo. Exemplo: var ano: inteiro ano_letivo: inteiro ano < - 2012 a variável ano recebe o valor 2012 ano_letivo <- ano a variável ano_letivo tem o seu valor modificado para o mesmo valor da variável ano que é 2012  As atribuições entre variáveis devem ser feitas com atenção para não perder o valor das mesmas indevidamente durante a execução do programa.
  • 20.
    Entrada e Saída O comando leia permite atribuir uma entrada de dados a uma variável:  Leia(salario) O valor que o usuário informar, será atribuído a variável salario.  O comando escreva permite exibir o valor de variáveis e constantes:  Escreva(‘O salário é ’, salario) Na tela será mostrado O salário é <valor da variável salario>  Comentários (chaves)
  • 21.
    Desenvolvendo  Com oselementos básicos já vistos, podemos criar um algoritmo.  Exemplo 1.1: Criar um algoritmo para receber dois números inteiros, somá-los e apresentar o resultado na tela. programa soma_dois_numeros var a, b, c: inteiro inicio leia a leia b c <- a +b escreva c fim
  • 22.
    Estrutura Condicional Desvio condicionalsimples se <condição> então Instruções fim_se Instruções As instruções compreendidas entre o bloco se ... fim_se serão executadas somente se a condição do desvio for verdadeira.
  • 23.
    Estrutura Condicional Desvio condicionalsimples Exemplo: a <- 5 b <- 6 se (b>a) então escreva (b é maior que a) fim_se c <- 10
  • 24.
    Estrutura Condicional  Desviocondicional composto se <condição> então Instruções senão instruções fim_se Instruções As instruções compreendidas entre o bloco se ... senão serão executadas somente se a condição do desvio for verdadeira. Caso a condição seja falsa, serão executadas apenas as instruções entre o senão e o fim_se.
  • 25.
    Estrutura Condicional  Desviocondicional composto Exemplo: a <- 10 b <- 7 se (b>a) então escreva (b é maior que a) else escreva (b é menor que a) fim_se c <- 10