O documento descreve os conceitos básicos de lógica de programação, incluindo: 1) a necessidade de definir instruções em uma sequência lógica para que o computador execute tarefas; 2) o uso de variáveis, constantes, tipos de dados e operadores para processar informações; 3) os principais comandos de controle de fluxo como sequência, seleção e repetição.
3. Lógica de ProgramaçãoLógica de Programação
Lógica
A lógica de programação é necessária para as pessoas
que desejam trabalhar com o desenvolvimento de
sistemas e programas de computador
Permite definir as instruções que serão executadas pelo
computador dentro de uma sequência lógica.
Desta forma, pode-se definir a lógica de programação
como a técnica de encadear pensamentos para atingir um
determinado objectivo.
4. Lógica de ProgramaçãoLógica de Programação
Sequência Lógica
Estes pensamentos devem ser descritos como um
sequência de instruções ou passos que devem ser
seguidos para se cumprir uma determinada tarefa.
Desta forma, uma sequência lógica pode ser entendida
como um conjunto de passos que devem ser seguidos até
se atingir um objectivo ou a solução de um problema.
5. Lógica de ProgramaçãoLógica de Programação
Instruções
Em informática uma instrução é uma informação que
indica ao computador uma acção a executar.
Uma ordem ou acção isolada normalmente não permite a
especificação de todas as instruções para se atingir um
objectivo ou realizar uma tarefa completa sendo, para isto,
necessário um conjunto de instruções colocadas numa
certa sequencia lógica.
- Por exemplo, se quisermos fazer um omelete de batatas,
precisamos de: descascar as batatas, bater os ovos, fritar as
batatas, etc, etc. É evidente também que essas instruções
devem ser executadas numa ordem adequada (não se pode
descascar as batatas depois de fritá-las).
6. Algoritmo x ProgramaAlgoritmo x Programa
Algoritmo:
“Conjunto de etapas finitas, ordenadamente definidas com
o propósito de obter soluções para um determinado
problema.”
Programa:
“Formalização de um algoritmo numa linguagem
compreensível pelo computador. É escrito numa
linguagem de alto nível, gerando o programa fonte.”
7. AlgoritmoAlgoritmo
Algoritmo não é a solução de um problema, pois, se
assim fosse, cada problema teria um único algoritmo.
Algoritmo é um caminho para a solução de um
problema, e geralmente, os caminhos que levam a uma
solução são muitos.
Problema Algoritmo Programa
8. AlgoritmosAlgoritmos
Aprender a criar algoritmos consegue-se através de
muitos exercícios.
Algoritmos não se aprendem:
Copiando Algoritmos
Estudando Algoritmos
Algoritmos só se aprendem:
Construindo Algoritmos
Testando Algoritmos
9. Como criar um algoritmoComo criar um algoritmo
Detectar os dados envolvidos no problema.
Identificar os dados que são de entrada e os dados que
são de saída.
Efectuar a leitura dos dados de entrada.
Identificar que operações devem ser feitas com os
dados lidos.
Armazenar os resultados destas operações.
Mostrar os dados de saída.
10. Características de um AlgoritmoCaracterísticas de um Algoritmo
Segundo Knuth, um algoritmo é uma sequência de passos bem
definida que resolve determinado problema, através da
transformação de dados iniciais na resposta desejada, tendo
cinco importantes características:
- Deve ser finito (finitness);
- Os passos devem ser bem definidos, sem
ambiguidades,
- ou seja, os passos não devem ter várias
interpretações (definiteness);
- Deve ser eficaz, ou seja, deve produzir resultados
em tempo “aceitável” (effectiveness);
- Deve possuir uma entrada (input);
- Deve produzir uma saída ou resultado (output).
11. Formas de RepresentaçãoFormas de Representação
Os Algoritmos podem ser representados, dentre outras
maneiras, por:
Descrição Narrativa;
Fuxogramas;
Pseudocódigo.
12. Formas de RepresentaçãoFormas de Representação
Descrição Narrativa
Faz-se uso do português para descrever algoritmos.
- EXEMPLO: Receita de Bolo:
Arranje manteiga, ovos, 2 Kg de massa, açucar.
Misture os ingredientes
Despeje a mistura na forma de bolo
Leve a forma ao forno
Espere 20 minutos
Retire a forma do forno
Deixe arrefecer
Prove
13. Formas de RepresentaçãoFormas de Representação
Descrição Narrativa
Vantagens:
- O português é bastante conhecido por nós;
Desvantagens:
- Imprecisão;
- Pouca confiabilidade (a imprecisão acarreta a
desconfiança);
- Extensão (normalmente, escreve-se muito para dizer pouca
coisa).
14. Formas de RepresentaçãoFormas de Representação
Fluxograma
Utilização de símbolos gráficos para representar
algoritmos.
No fluxograma existem símbolos padronizados para início,
entrada de dados, cálculos, saída de dados, fim, etc.
Cálculo Decisão Entrada Saída Início/Fim
15. Formas de RepresentaçãoFormas de Representação
Fluxograma
Exemplo
- Algoritmo
que receba
um numero
e mostre o
seu dobro:
EXEMPLOEXEMPLO EXPLICAÇÃOEXPLICAÇÃO
Início do algoritmo
Entrada do número
Cálculo do dobro do número
Apresentação do resultado
Fim do algoritmo
Início
Leia NUM
DOBRO <- NUM * 2
Escreva DOBRO
Fim
16. Formas de RepresentaçãoFormas de Representação
Fluxograma
Vantagens
- Uma das ferramentas mais conhecidas;
- Figuras dizem muito mais que palavras;
- Padrão mundial.
Desvantagens
- Qualquer alteração obriga a re-desenhar o fluxograma;
- Pouca atenção aos dados, não oferecendo recursos para
descrevê-los ou representá-los;
- Complica-se à medida que o algoritmo cresce.
17. Formas de RepresentaçãoFormas de Representação
PseudoCódigo
Consiste na definição de uma pseudolinguagem de
programação, cujos comandos são em português, para
representar algoritmos.
- EXEMPLO: Algoritmo CALCULA_DOBRO
início
Ler (NUM)
DOBRO 2 * NUM
Escrever (DOBRO)
fim
18. Formas de RepresentaçãoFormas de Representação
PseudoCódigo
Vantagens:
- Independência física da solução (solução lógica apenas);
- Usa o português como base;
- Pode-se definir quais e como os dados vão estar
estruturados;
- Passagem quase imediata do algoritmo para uma linguagem
de programação qualquer.
Desvantagens:
- Exige a definição de uma linguagem não real para trabalho;
- Não padronizado.
19. Refinamentos SucessivosRefinamentos Sucessivos
Top-DownTop-Down
Um algoritmo é considerado completo se os seus comandos forem
entendidos pelo destinatário.
Caso isso não aconteça, terá que ser desdobrado em novos
comandos, que constituirão um refinamento do comando inicial, e
assim sucessivamente, até que os comandos sejam entendidos
pelo destinatário.
Por exemplo, o algoritmo para calcular a média aritmética de dois
números pode ser escrito da seguinte forma:
Algoritmo CALCULA_MÉDIA
Início
Receba os dois números
Calcule a média dos dois números
Exiba o resultado
Fim
20. Refinamentos SucessivosRefinamentos Sucessivos
Top-DownTop-Down
Podemos desdobrar o comando “Calcule a média dos dois números” em:
Soma os dois números
Divida o resultado por 2
Após esse refinamento, o algoritmo pode ser considerado completo, a
menos que o destinatário não saiba fazer as operações de adição e divisão,
ou não seja capaz de entender directamente algum comando.
Estando o algoritmo estando completo, podemos reescrevê-lo, inserindo o
refinamento na posição do comando que foi refinado. Assim sendo, obtém-
se:
Algoritmo CALCULA_MÉDIA
Início
Receba os dois números
Soma os dois números
Divida o resultado por 2
Mostre o resultado
Fim
21. Refinamentos SucessivosRefinamentos Sucessivos
Top-DownTop-Down
Reescrever um algoritmo completo, com os
refinamentos sucessivos inseridos nos seus devidos
lugares, permite ter uma visão global de como o
algoritmo deve ser executado.
À medida que o algoritmo passa a ser maior e mais
complexo, esta visão global torna-se menos clara .
Um algoritmo apresentado com os refinamentos
sucessivos separados oferece uma melhor abordagem
para quem precisar entendê-lo.
22. Refinamentos SucessivosRefinamentos Sucessivos
Top-DownTop-Down
Algoritmo 1 Algoritmo 2
Molhar o cabelo
Colocar shampoo
Massajar
Enxaguar
Secar o cabelo
Abrir a torneira do chuveiro
Entrar na água
Molhar o cabelo
Abrir o shampoo
Colocar um pouco na mão
Levar à cabeça
Massajar
Enxaguar
Sair da água
Fechar o chuveiro
Secar o cabelo
23. ESTRUTURA GERAL DE UMESTRUTURA GERAL DE UM
ALGORITMOALGORITMO
- Algoritmo Nome-do-Algoritmo;
- Declaração de constantes, tipos e variáveis;
- Início
Sequências de Comandos;
- Fim.
24. VariáveisVariáveis
Nos algoritmos a cada variável corresponde uma
posição de memória, cujo conteúdo pode variar ao
longo do tempo durante a execução de um
algoritmo.
Embora a variável possa assumir diferentes valores, ela
só pode armazenar um valor a cada instante.
Espaço de memória primária
Possui um endereço físico - lógico
Exemplo:
Endereço Físico = 3000: B712
Endereço Lógico = Nome
Conteúdo = “João”
25. VariáveisVariáveis
Toda variável é identificada por um nome ou
identificador.
Assim, por exemplo, num algoritmo para calcular a área
de um triângulo rectângulo pelo teorema de pitágoras
(a2 = b2 + c2), os identificadores A, B e C podem
representar as posições de memória que armazenam o
valor da hipotenusa e dos catetos.
Criar uma variável significa reservar uma gaveta na
memória do computador atribuindo-lhe um nome e
escolher o tipo de dado que esta gaveta armazenará.
27. Variáveis e ConstantesVariáveis e Constantes
Declaração de Variáveis e Constantes
Quando definir variáveis ?
- Quando um dado necessário à resolução do problema
sofrer alterações de valor ao longo desta resolução.
Quando definir constantes ?
- Quando uma valor fixo for utilizado várias vezes para a
resolução do problema.
28. Variáveis e ConstantesVariáveis e Constantes
Nomes de variáveis e Constantes:
podem ter um ou mais caracteres;
o primeiro caracter deve ser letra;
não pode ter espaços em branco nem acentos;
não podem utilizar caracteres especiais, somente letras e
números;
29. Tipos de DadosTipos de Dados
Tipo de Dados Exemplo
Inteiro 102
Real 13,5
Lógico Verdadeiro Falso
Caractere ‘S’
String “Programação”
Os algoritmos e as linguagens trabalham com dados.
Estes dados são classificados em tipos.
30. Tipos de OperadoresTipos de Operadores
Operadores Aritméticos Exemplos
Operador Operação
+ Adição
- Subtracção
* Multiplicação
/ Divisão Real
DIV Divisão Inteira
MOD Resto da Divisão
^ Expoente
Expressão Resultado
1 + 2 3
5.0 - 1 4.0
2 * 1.5 3.0
5 / 2 2.5
5 DIV 2 2
5 MOD 2 1
3^2 9
31. Tipos de OperadoresTipos de Operadores
PRIORIDADE
Numa expressão aritmética, a ordem de avaliação dos operadores
obedece a tabela abaixo:
Exemplo: Se tivermos a seguinte fórmula matemática:
Fórmula aceita pelo computador:
Area ← (base*altura)/2
2
alturabase
area
•
=
Prioridade Operadores
1ª * / DIV MOD
2ª + -
32. Tipos de OperadoresTipos de Operadores
Operadores de Comparação Exemplos
Operador Operação
= igual
> maior
< menor
>= maior ou igual
<= menor ou igual
<> diferente
Expressão Resultado
1 = 2 Falso
'A' = 'a' Falso
5 > 2 Verdadeiro
3 <= 3 Verdadeiro
'JOAO' > 'JOSE' Falso
2 + 3 <> 5 Falso
'comp' <> 'COMP' Verdadeiro
33. Tipos de OperadoresTipos de Operadores
Operadores lógicos
Prioridade
Operador Operação
notnot não (negação)
andand e (conjunção)
oror ou (disjunção)
Prioridade Operadores
1ª NOT
2ª AND
3ª OR
4ª = > < >= <= <>
34. Tabelas de VerdadeTabelas de Verdade
p não p
V F
F V
p q p e q
V V V
V F F
F V F
F F F
p q p ou q
V V V
V F V
F V V
F F F
35. Prioridades entre todos osPrioridades entre todos os
OperadoresOperadores
1. parênteses mais internos
2. operadores aritméticos
3. operadores comparação
4. operadores lógicos
38. COMANDOS DE CONTROLE DECOMANDOS DE CONTROLE DE
FLUXOFLUXO
Nas estruturas de um algoritmo é, frequentemente,
necessário:
jogar com determinadas condições, para decidir se se
deve executar uma ou outra acção;
repetir uma série de instruções, um determinado número
de vezes ou enquanto se verificar uma certa condição;
E de acordo com a Programação Estruturada os
mecanismos utilizados para esse controle são :
Sequência, Selecção e Repetição
39. COMANDOS DE CONTROLE DECOMANDOS DE CONTROLE DE
FLUXOFLUXO
SEQUÊNCIA :
usada para executar comandos passo a passo, sabendo que
todos eles serão executados na ordem de escrita, sem
nenhum desvio.
Uma sequência pode possuir um ou vários comandos, os
quais devem ser delimitados pelos identificadores Início e Fim.
Exemplo:
programa media_final;
var
nota1, nota2, nota3, nota4, media: real;
nome : string
inicio
ler (nome);
ler (nota1, nota2, nota3, nota4);
media ← (nota1 + nota2 + nota3 + nota4) / 4;
escrever (nome, media)
fim.
40. COMANDOS DE CONTROLE DECOMANDOS DE CONTROLE DE
FLUXOFLUXO
SelecçãoSelecção :
usada para tomar decisões, ou seja desviar a
execução do algoritmo de acordo com uma condição,
podendo ser simples ou composta .
Simples Composta
se condição então
Instruções;
FimSe;
se condição então
Instruções;
Senão
Instruções;
FimSe;
41. COMANDOS DE CONTROLE DECOMANDOS DE CONTROLE DE
FLUXOFLUXO
SelecçãoSelecção
Muito importante:
- Sempre que existir mais do que uma instrução dentro do então ou
do senão, deve colocar-se Inicio e Fim.
- Exemplo:
se condição então
inicio
Instrução 1;
Instrução 2;
Fim
Senão
inicio
Instrução 1;
Instrução 2;
Instrução 3;
Fim
FimSe;
42. COMANDOS DE CONTROLE DECOMANDOS DE CONTROLE DE
FLUXOFLUXO
SelecçãoSelecção
Fluxogramas
Simples Composta
Condição
Comando-1
Comando-2
Comando-n
Condição
Comando-A1
Comando-A2
Comando-An
Comando-B1
Comando-B2
Comando-Bn
VV
FF
43. COMANDOS DE CONTROLE DECOMANDOS DE CONTROLE DE
FLUXOFLUXO
SelecçãoSelecção
Exemplos Pseudocódigo
Simples Composta
PROGRAMA MEDIA_FINAL;
VAR
MEDIA: REAL;
INICIO
LER (MEDIA);
SE (MEDIA>=9,5) ENTÃO
ESCREVER (‘APROVADO’)
FIMSE
FIM.
PROGRAMA MEDIA_FINAL;
VAR
MEDIA: REAL;
INICIO
LER (MEDIA);
SE (MEDIA>=9,5) ENTÃO
ESCREVER (‘APROVADO’)
SENÃO
ESCREVER (‘REPROVADO’)
FIMSE
FIM.
44. COMANDOS DE CONTROLE DECOMANDOS DE CONTROLE DE
FLUXOFLUXO
SelecçãoSelecção
Exemplos Fluxogramas
Simples Composta
SE MEDIA >=9,5
V
F
INICI
O
FIM
Ler (MEDIA)
Escrever (“Aprovado”)
SE MEDIA >=9,5
V
F
INICI
O
FIM
Ler (MEDIA)
Escrever (“Aprovado”) Escrever (“Reprovado”)
45. COMANDOS DE CONTROLE DECOMANDOS DE CONTROLE DE
FLUXOFLUXO
Selecção MúltiplaSelecção Múltipla
Caso
- Muito útil quando existem várias hipóteses de selecção, pois
permite reduzir a complexidade do algoritmo.
Sintaxe
CASO (variável) SEJA
valor1: instruções;
valor2: instruções;
.
.
valorn: instruções;
SENÃO: instruções;
FimCaso
46. COMANDOS DE CONTROLE DECOMANDOS DE CONTROLE DE
FLUXOFLUXO
Selecção MúltiplaSelecção Múltipla
Exemplo de um algoritmo utilizando o Se e o Caso
SE CASO
PROGRAMA LANCHE;
VAR
LETRA: CARACTERE;
INICIO
LER (LETRA);
SE (LETRA=‘H’) ENTÃO
ESCREVER
(‘HAMBURGUER’);
SENÃO SE (LETRA=‘P’) ENTÃO
ESCREVER (‘PIZZA’);
SENÃO SE (LETRA=‘T’) ENTÃO
ESCREVER (‘TOSTA MISTA’);
SENÃO SE (LETRA=‘S’) ENTÃO
ESCREVER (‘SANDES’);
SENÃO
ESCREVER (‘ERRO NA
LETRA’);
FIMSE
PROGRAMA LANCHE;
VAR
LETRA: CARACTERE;
INICIO
LER (LETRA);
CASO (LETRA) SEJA
‘H’: ESCREVER(“HAMBURGUER”);
‘P’: ESCREVER (“PIZZA”);
‘T’:ESCREVER (“TOSTA MISTA”);
‘S’:ESCREVER (“SANDES”);
SENÃO:ESCREVER (“ERRO NA LETRA”)
FIMCASO
FIM.
47. COMANDOS DE CONTROLE DECOMANDOS DE CONTROLE DE
FLUXOFLUXO
RepetiçãoRepetição
Serve para efectuar um conjunto de acções repetidas
vezes.
A estrutura de repetição, assim como a de selecção,
envolve sempre a avaliação de uma condição.
Existem três tipos básicos de repetições, sendo elas:
- Para
- Repetir
- Enquanto
48. COMANDOS DE CONTROLE DECOMANDOS DE CONTROLE DE
FLUXOFLUXO
RepetiçãoRepetição
ParaPara
ParaPara variávelvariável ←← valor_inicialvalor_inicial atéaté valor_finalvalor_final façafaça
instruções;instruções;
FimParaFimPara
• O comando Para aumenta, a variável, a partir do valor_inicial
em uma unidade, até que, esta atinja o valor_final.
• E para cada aumento as instruções são executadas..
• NotaNota! No VisualAlg faz-se :! No VisualAlg faz-se :
• para j de valor_inicial ate valor_final facapara j de valor_inicial ate valor_final faca
• InstruçõesInstruções
• fimparafimpara
49. COMANDOS DE CONTROLE DECOMANDOS DE CONTROLE DE
FLUXOFLUXO
RepetiçãoRepetição
ParaPara
Exemplo: Algoritmo que mostra primeiros 100 números pares.
PROGRAMA PARES;
VAR NUM: INTEIRO;
INICIO
PARA NUM ←← 1 ATE 100 FACA
INICIO
SE (NUM MOD 2 =0) ENTÃO
ESCREVER (NUM);
FIM
FIMPARA.
FIM
50. COMANDOS DE CONTROLE DECOMANDOS DE CONTROLE DE
FLUXOFLUXO
RepetiçãoRepetição
ENQUANTOENQUANTO
EnquantoEnquanto (condição)(condição) façafaça
Instruções;Instruções;
FimEnquantoFimEnquanto
O comando Enquanto analisa a Condição, e
enquanto o seu resultado for Verdadeiro executa as
instruções.
• NotaNota! No VisualAlg faz-se da mesma forma! No VisualAlg faz-se da mesma forma
51. COMANDOS DE CONTROLE DECOMANDOS DE CONTROLE DE
FLUXOFLUXO
RepetiçãoRepetição
EnquantoEnquanto
Exemplo: Algoritmo que mostra primeiros 100 números pares.
PROGRAMA PARES;
VAR NUM: INTEIRO;
INICIO
NUM ←1;
ENQUANTO (NUM<=100) FACA
INICIO
SE (NUM MOD 2 =0) ENTÃO
ESCREVER (NUM);
NUM ←NUM+1;;
FIM
FIMPARA.
FIM.
52. COMANDOS DE CONTROLE DECOMANDOS DE CONTROLE DE
FLUXOFLUXO
RepetiçãoRepetição
REPETIRREPETIR
RepetirRepetir
instruções;instruções;
AtéAté (condição);(condição);
• O comando Repetir executa as instruções até que o
valor retornado pela condição seja Verdadeiro
• NotaNota! No VisualAlg faz-se :! No VisualAlg faz-se :
• Repita
• <instruções>
• ate <condição>
53. COMANDOS DE CONTROLE DECOMANDOS DE CONTROLE DE
FLUXOFLUXO
RepetiçãoRepetição
RepetirRepetir
Exemplo: Algoritmo que mostra primeiros 100 números pares.
PROGRAMA PARES;
VAR NUM: INTEIRO;
INICIO
NUM ←1;
REPETIR
INICIO
SE (NUM MOD 2 =0) ENTÃO
ESCREVER (NUM);
NUM ←NUM+1;;
FIM
ATÉ (NUM=100) .
FIM.
54. CONTADOR VS ACUMULADORCONTADOR VS ACUMULADOR
Um Contador é uma variável que vai aumentando o seu
valor.
Nos exemplos anteriores, a variável NUM é um contador.
Contador é uma linha que, a cada vez que é executada,
soma um número fixo (geralmente 1) a uma variável.
Assim, pode-se contar, por exemplo, quantas vezes
aquela parte do código foi executada e, dessa forma,
controlar o numero de repetições.
O Acumulador é uma estrutura criada para ir
acumulando valores a uma determinada variável.
O contador recebe incrementos constantes enquanto o
acumulador recebe incrementos variáveis
55. CONTADOR VS ACUMULADORCONTADOR VS ACUMULADOR
Exemplo:
Programa que calcula a soma dos 5 primeiros números.
PROGRAMA SOMA;
VAR NUM, SOMA:INTEIRO;
INICIO
SOMA ←0;
NUM ←1;
REPETIR
SOMA ←SOMA+NUM;
NUM ←NUM+1;
ATÉ QUE (NUM=5);
FIM
Contador: Num
Acumulador: Soma