Desenvolver o raciocínio lógico;
Familiarizar o aluno com o modelo sequencial de computação;
Apresentar técnicas e linguagens para representação e construção de algoritmos simples;
Apresentar conceitos básicos de linguagens de programação;
Andrei BastosEstudante um Universidade Federal do Espirito Santo
1. Lógica de Programação
Andrei Bastos
UFES – LABIC
VITÓRIA, ES - 2014
Universidade Federal do Espírito Santo UFES - LABIC
1
2. OBJETIVOS
• Desenvolver o raciocínio lógico;
• Familiarizar o aluno com o modelo sequencial de
computação;
• Apresentar técnicas e linguagens para
representação e construção de algoritmos simples;
• Apresentar conceitos básicos de linguagens de
programação;
Universidade Federal do Espírito Santo UFES - LABIC
2
3. Bibliografia
• Lógica de Programação – A Construção de
Algoritmos e Estruturas de Dados – São Paulo
• Paulo Sérgio de Moraes, Apostila de Lógica de
Programação.
Universidade Federal do Espírito Santo UFES - LABIC
3
4. Conceito
São vários os conceitos para algoritmo.
Escolhemos alguns para serem apresentados
• “Um conjunto finito de regras que provê uma sequência
de operações para resolver um tipo de problema
específico” [KNUTH]
• “Sequência ordenada, e não ambígua, de passos que
levam à solução de um dado problema” [TREMBLAY]
Universidade Federal do Espírito Santo UFES - LABIC
4
5. Conceito
Um algoritmo é formalmente uma sequência
finita de passos que levam a execução de uma
tarefa.
Podemos pensar em algoritmo como uma
receita, uma sequência de instruções que dão
cabo de uma meta específica.
Estas tarefas não podem ser redundantes nem
subjetivas na sua definição, devem ser claras e
precisas.
Universidade Federal do Espírito Santo UFES - LABIC
5
6. Formas de Representação
DESCRIÇÃO NARRATIVA
Faz-se uso do português para descrever algoritmos
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).
Universidade Federal do Espírito Santo UFES - LABIC
6
7. Exemplos
“Chupar uma bala”.
• Pegar a bala
• Retirar o papel
• Chupar a bala
• Jogar o papel no lixo
Universidade Federal do Espírito Santo UFES - LABIC
7
8. Exemplos
“Somar dois números quaisquer”.
• Escreva o primeiro número no retângulo A
• Escreva o segundo número no retângulo B
• Some o número do retângulo A com número do retângulo B e
coloque o resultado no retângulo C
Universidade Federal do Espírito Santo UFES - LABIC
8
9. Exercícios
Faça um algoritmo:
• para trocar uma lâmpada.
• para comprar um teclado.
• para colocar um tênis.
• Para somar dois números e multiplicar o
resultado pelo primeiro número.
Universidade Federal do Espírito Santo UFES - LABIC
9
10. Programas
Os programas de computadores nada mais são
do que algoritmos escritos numa linguagem de
computador (Pascal, C, Cobol, Fortran, Visual
Basic entre outras) e que são interpretados e
executados por uma máquina
Universidade Federal do Espírito Santo UFES - LABIC
10
11. Desenvolvendo algoritmos
Para escrever um algoritmo precisamos descrever a
sequência de instruções, de maneira
• simples e objetiva. Para isso utilizaremos algumas
técnicas:
• Usar somente um verbo por frase
• Usar frases curtas e simples
• Ser objetivo
• Procurar usar palavras que não tenham sentido
dúbio
Universidade Federal do Espírito Santo UFES - LABIC
11
12. Fases
Vimos que ALGORITMO é uma sequência lógica de
instruções que podem ser executadas.
É importante ressaltar que qualquer tarefa que siga
determinado padrão pode ser descrita por um
algoritmo, como por exemplo:
COMO FAZER ARROZ DOCE
ou então
CALCULAR O SALDO FINANCEIRO DE UM ESTOQUE
Universidade Federal do Espírito Santo UFES - LABIC
12
13. Fases
Entretanto ao montar um algoritmo, precisamos
primeiro dividir o problema apresentado em
três fases fundamentais.
Onde temos:
ENTRADA: São os dados de entrada do algoritmo
PROCESSAMENTO: São os procedimentos utilizados para chegar ao resultado final
SAÍDA: São os dados já processados
Universidade Federal do Espírito Santo UFES - LABIC
13
14. Fases
Analogia com o Humano:
Universidade Federal do Espírito Santo UFES - LABIC
14
15. Exemplo
• Imagine o seguinte problema: Calcular a média final dos alunos de
uma turma da UFES. Os alunos realizarão três provas: P1, P2, P3.
Onde Média Final = (P1+P2+P3)/3.
Para montar o algoritmo proposto, faremos três perguntas:
a) Quais são os dados de entrada?
R: Os dados de entrada são P1, P2, P3 e P4.
b) Qual será o processamento a ser utilizado?
R: O procedimento será somar todos os dados de entrada e
dividi-los por 3 (três).
c) Quais serão os dados de saída?
R: O dado de saída será a média final.
Universidade Federal do Espírito Santo UFES - LABIC
15
16. Exemplo
Algoritmo Calcular Média Final:
• Receba a nota da prova1
• Receba a nota de prova2
• Receba a nota de prova3
• Some todas as notas e divida o resultado por 3
• Mostre o resultado da divisão
Universidade Federal do Espírito Santo UFES - LABIC
16
17. Teste de Mesa
• 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.
Veja o exemplo:
P1
P2
P3
Média Final
• Nota da Prova 1
• Nota da Prova 2
• Nota da Prova 3
• Utilize a tabela ao lado:
Universidade Federal do Espírito Santo UFES - LABIC
17
18. EXERCÍCIOS
1) Identifique os dados de entrada, processamento e saída no
algoritmo abaixo
–
–
–
–
–
Receba código da peça
Receba valor da peça
Receba Quantidade de peças
Calcule o valor total da peça (Quantidade * Valor da peça)
Mostre o código da peça e seu valor total
2) Faça um algoritmo para “Calcular o estoque médio de uma
peça”, sendo que
– ESTOQUEMÉDIO = (QUANTIDADE MÍNIMA + QUANTIDADE
MÁXIMA) /2
3) Teste o algoritmo anterior com dados definidos por você.
Universidade Federal do Espírito Santo UFES - LABIC
18
19. Formas de Representação
FLUXOGRAMA OU DIAGRAMA DE BLOCOS
O diagrama de blocos é uma forma padronizada e eficaz para
representar os passos lógicos de um determinado processamento. Com o
diagrama podemos definir uma sequência de símbolos, com significado bem
definido, portanto, sua principal função é a de facilitar a visualização dos
passos de um processamento.
VANTAGENS:
• Uma das ferramentas mais conhecidas;
• Figuras dizem muito mais que palavras;
• Padrão mundial
DESVANTAGENS:
• Pouca atenção aos dados, não oferecendo recursos para descrevê-los ou
representá-los;
• Complica-se à medida que o algoritmo cresce.
Universidade Federal do Espírito Santo UFES - LABIC
19
20. SIMBOLOGIA
Existem diversos símbolos em um diagrama de bloco. Veja no quadro abaixo
alguns dos símbolos mais utilizados.
Universidade Federal do Espírito Santo UFES - LABIC
20
21. Exemplos
•
Dentro do símbolo sempre terá algo escrito, pois somente os símbolos não
nos dizem nada. Veja no exemplo a seguir:
Universidade Federal do Espírito Santo UFES - LABIC
21
23. Constantes, Variáveis e Tipos de Dados
• Variáveis e constantes são os elementos básicos que um
programa manipula.
• Uma variável é um espaço reservado na memória do
computador para armazenar um tipo de dado
determinado.
• Variáveis devem receber nomes para poderem ser
referenciadas e modificadas quando necessário.
• Um programa deve conter declarações que especificam de
que tipo são as variáveis que ele utilizará e as vezes um
valor inicial.
• Tipos podem ser por exemplo: inteiros, reais, caracteres,
etc. As expressões combinam variáveis e constantes para
calcular novos valores
Universidade Federal do Espírito Santo UFES - LABIC
23
24. Constantes
Constante é um determinado valor fixo que não
se modifica ao longo do tempo, durante a
execução de um programa. Conforme o seu tipo,
a constante é classificada como sendo numérica,
lógica e literal.
Exemplo de constantes:
Universidade Federal do Espírito Santo UFES - LABIC
24
25. Variáveis
• Variável é a representação simbólica dos elementos de um
certo conjunto. Cada variável corresponde a uma posição de
memória, cujo conteúdo pode se alterado ao longo do tempo
durante a execução de um programa. Embora uma variável
possa assumir diferentes valores, ela só pode armazenar um
valor a cada instante
Exemplos de variáveis
Universidade Federal do Espírito Santo UFES - LABIC
25
26. Tipos de Variáveis
As variáveis e as constantes podem ser basicamente de quatro tipos: Numéricas,
caracteres, Alfanuméricas ou lógicas.
Numéricas Específicas para armazenamento de números, que posteriormente poderão ser
utilizados para cálculos. Podem ser ainda classificadas como Inteiras ou Reais.
Caracteres Específicas para armazenamento de conjunto de caracteres que não
contenham números (literais). Ex: nomes.
Alfanuméricas Específicas para dados que contenham letras e/ou números. Pode em
determinados momentos conter somente dados numéricos ou somente
literais. Se usado somente para armazenamento de números, não poderá
ser utilizada para operações matemáticas.
Lógicas Armazenam somente dados lógicos que podem ser Verdadeiro ou Falso.
Universidade Federal do Espírito Santo UFES - LABIC
26
27. Declaração de Variáveis
As variáveis só podem armazenar valores de um mesmo tipo, de maneira que também são
classificadas como sendo numéricas, lógicas e literais.
Universidade Federal do Espírito Santo UFES - LABIC
27
28. EXERCÍCIOS
•
•
•
O que é uma constante? Dê dois exemplos.
O que é uma variável? Dê dois exemplos.
Faça um teste de mesa no diagrama de bloco abaixo e preencha a tabela
ao lado com os dados do teste:
Universidade Federal do Espírito Santo UFES - LABIC
28
29. Operadores
Os operadores são meios pelo qual incrementamos,
decrementamos, comparamos e avaliamos dados
dentro do computador. Temos três tipos de
operadores:
• Operadores Aritméticos
• Operadores Relacionais
• Operadores Lógicos
Universidade Federal do Espírito Santo UFES - LABIC
29
30. Operadores Aritméticos
Os operadores aritméticos são os utilizados para obter resultados numéricos.
Além da adição, subtração, multiplicação e divisão, podem utilizar também o
operador para exponencial. Os símbolos para os operadores aritméticos são:
OPERAÇÃO
SÍMBOLO
Adição
+
Subtração
-
Multiplicação
*
Divisão
/
Exponencial
** ou ^
Universidade Federal do Espírito Santo UFES - LABIC
30
31. Operadores Aritméticos
Hierarquia das Operações Aritméticas
1 º ( ) Parênteses
2 º Exponencial
3 º Multiplicação, divisão (o que aparecer primeiro)
4 º + ou – (o que aparecer primeiro)
Exemplos
TOTAL = PRECO * QUANTIDADE
1 + 7 * 2 ** 2 –1 = 28
3 * (1 – 2) + 4 * 2 = 5
Universidade Federal do Espírito Santo UFES - LABIC
31
32. Operadores Relacionais
Os operadores relacionais são utilizados para comparar variáveis. Os valores a serem
comparados podem ser caracteres, numéricos ou lógicos.
Estes operadores sempre retornam valores lógicos (verdadeiro ou falso/ True ou False)
Para estabelecer prioridades no que diz respeito a qual operação executar primeiro, utilize
os parênteses.
Os operadores relacionais são:
Descrição
Resultado
Igual a
==
Diferente de
!= ou <>
Maior que
>
Menor que
<
Maior ou igual a
=>
Menor ou igual a
<=
Universidade Federal do Espírito Santo UFES - LABIC
32
33. Exemplos
Tendo duas variáveis A = 5 e B = 3
Os resultados das expressões seriam:
Expressão
Resultado
A == B
Falso
A <> B
Verdadeiro
A>B
Verdadeiro
A<B
Falso
A >= B
Verdadeiro
A <= B
Falso
Universidade Federal do Espírito Santo UFES - LABIC
33
34. Operadores Lógicos
Os operadores lógicos servem para combinar resultados de expressões, retornando se
o resultado final é verdadeiro ou falso.
Os operadores lógicos são:
E
AND
OU
OR
NÃO
NOT
E / AND: Uma expressão AND (E) é verdadeira se
todas as condições forem
Verdadeiras
OR/OU: Uma expressão OR (OU) é verdadeira se
pelo menos uma condição for
Verdadeira
NOT: Um expressão NOT (NÃO) inverte o valor da
expressão ou condição, se
verdadeira inverte para falsa e vice-versa.
Universidade Federal do Espírito Santo UFES - LABIC
34
35. Exemplo
A tabela abaixo mostra todos os valores possíveis criados pelos três operadores lógicos
(AND, OR e NOT)
1º Valor
Operador
2º Valor
Resultado
True
AND
True
True
True
AND
False
False
False
AND
True
False
False
AND
False
False
True
OR
True
True
True
OR
False
True
False
OR
True
True
False
OR
False
False
True
NOT
False
False
NOT
True
Universidade Federal do Espírito Santo UFES - LABIC
35
36. Exemplo
Suponha que temos três variáveis A = 5, B = 8 e C =1
Os resultados das expressões seriam:
Expressões
Resultado
A == B
AND
B>C
False
A <> B
OR
B<C
True
A>B
NOT
A<B
AND
B>C
True
A >= B
OR
B == C
False
A <= B
NOT
True
False
Universidade Federal do Espírito Santo UFES - LABIC
36
37. EXERCÍCIOS
1) Tendo as variáveis SALARIO, IR e SALLIQ, e considerando os valores abaixo.
Informe se as expressões são verdadeiras ou falsas.
Salário
IR
SALLIQ
EXPRESSÃO
100,00
0,00
100
(SALLIQ >= 100,00)
200,00
10,00
190,00
(SALLIQ < 190,00)
300,00
15,00
285,00
V OU F
SALLIQ = SALARIO - IR
2) Sabendo que A=3, B=7 e C=4, informe se as expressões abaixo são verdadeiras ou falsas.
a) (A+C) > B
b) B >= (A + 2)
c) C = (B –A)
d) (B + A) <= C
e) (C+A) > B
()
()
()
()
()
Universidade Federal do Espírito Santo UFES - LABIC
37
38. EXERCÍCIOS
3) Sabendo que A=5, B=4 e C=3 e D=6, informe se as expressões abaixo são verdadeiras
ou
falsas.
a) (A > C) AND (C <= D) ( )
b) (A+B) > 10 OR (A+B) = (C+D) ( )
c) (A>=C) AND (D >= C) ( )
Universidade Federal do Espírito Santo UFES - LABIC
38
39. Operações Lógicas
Operações Lógicas são utilizadas quando se torna necessário tomar decisões em um
diagrama de bloco.
Num diagrama de bloco, toda decisão terá sempre como resposta o resultado
VERDADEIRO
ou FALSO.
Como no exemplo do algoritmo “CHUPAR UMA BALA”. Imaginemos que algumas pessoas
não gostem de chupar bala de Morango, neste caso teremos que modificar o algoritmo
para:
“Chupar uma bala”.
· Pegar a bala
· A bala é de morango?
· Se sim, não chupe a bala
· Se não, continue com o algoritmo
· Retirar o papel
· Chupar a bala
· Jogar o papel no lixo
Universidade Federal do Espírito Santo UFES - LABIC
39
41. Estrutura de Decisão e Repetição
Como vimos no capítulo anterior em “Operações Lógicas”, verificamos que na maioria das
vezes necessitamos tomar decisões no andamento do algoritmo. Essas decisões interferem
diretamente no andamento do programa. Trabalharemos com dois tipos de estrutura. A
estrutura
de Decisão e a estrutura de Repetição
Comandos de Decisão
Os comandos de decisão ou desvio fazem parte das técnicas de programação que
conduzem a estruturas de programas que não são totalmente sequenciais. Com as
instruções de SALTO ou DESVIO pode-se fazer com que o programa proceda de uma ou
outra maneira, de acordo com as decisões lógicas tomadas em função dos dados ou
resultados anteriores. As principais estruturas de decisão são: “Se Então”, “Se então
Senão” e “Caso Selecione”
Universidade Federal do Espírito Santo UFES - LABIC
41
42. SE ENTÃO / IF ... THEN
A estrutura de decisão “SE/IF” normalmente vem acompanhada de um comando,
ou seja, se determinada condição for satisfeita pelo comando SE/IF então execute
determinado comando.
Imagine um algoritmo que determinado aluno somente estará aprovado se sua
média for maior ou igual a 5.0, veja no exemplo de algoritmo como ficaria.
SE (MEDIA >= 5.0 )
Em diagrama de blocos ficaria assim:
ENTÃO
ALUNO APROVADO
Na linguagem C, Ficaria:
If(Media>=5.0)
{
Texto = “APROVADO”;
}
Universidade Federal do Espírito Santo UFES - LABIC
42
43. SE ENTÃO SENÃO / IF ... THEN ... ELSE
A estrutura de decisão “SE/ENTÃO/SENÃO”, funciona exatamente como a
estrutura “SE”, com apenas uma diferença, em “SE” somente podemos executar comandos
caso a condição seja verdadeira, diferente de “SE/SENÃO” pois sempre um comando será
executado independente da condição, ou seja, caso a condição seja “verdadeira” o
comando da condição será executado, caso contrário o comando da condição “falsa” será
executado
Em algoritmo ficaria assim:
SE MÉDIA >= 5.0 ENTÃO
Em diagrama:
ALUNO APROVADO
SENÃO
ALUNO REPROVADO
Em Linguagem C:
If (MEDIA>=5.0)
{
Texto = “APROVADO”;
}
else
{
Texto = “REPROVADO”;
}
Universidade Federal do Espírito Santo UFES - LABIC
43
44. Exercício
• Escreva uma Algoritmo que envolva:
– Uma condição com Se então (if)
– Uma condição com Se então (if .. Else)
Universidade Federal do Espírito Santo UFES - LABIC
44
45. Comandos de Repetição
Utilizamos os comandos de repetição quando desejamos que um determinado conjunto
de instruções ou comandos sejam executados um número definido ou indefinido de
vezes, ou enquanto um determinado estado de coisas prevalecer ou até que seja
alcançado.
São eles os comandos:
Para (valores Iniciais; Condições; Conjunto de comandos) (for)
Enquanto (Condições forem satisfeitas) (while)
Faça (conjunto de comandos) Enquanto (conjunto condições forem satisfeitas) (do while)
Universidade Federal do Espírito Santo UFES - LABIC
45
46. Para/for
•
•
Nessa estrutura, você determina valores iniciais as variáveis, impõem condições e
comandos para serem realizados caso as condições forem satisfeitas.
Mais utilizados em contadores, quando você quer fazer uma escala de variação
Exemplo:
Imagina que você queira ler 100 valores e calcular a média aritmética deles
Bastaria você declarar uma variável inteira que começasse com o valor 0, fizesse uma
condição lógica para contar os 100 valores e incrementar +1 a cada passagem.
Vejamos na prática...
Universidade Federal do Espírito Santo UFES - LABIC
46
47. Exemplo
• Exemplo de para/for para o caso anterior:
int i, soma, valor;
double media_final ;
for(i=0,soma=0, i<100; i++)
{
leia valor;
soma = soma + valor ;
}
media_final = soma/100;
imprima (media_final);
Universidade Federal do Espírito Santo UFES - LABIC
47
48. Enquanto/while
• Nessa estrutura você impõem condições e comandos para
serem realizados caso as condições forem satisfeitas.
• As condições serão avaliadas antes dos comandos
• Geralmente utilizados quando você não sabe o número de
vezes que irá se repetir.
Exemplo:
Imagina que você queira ler valores até que a soma de todos
valores lidos seja maior que 100 e exiba a cada alteração;
Vejamos na prática...
Universidade Federal do Espírito Santo UFES - LABIC
48
49. Enquanto/While
int i, soma, valor;
soma = 0;
while (soma<100)
{
Leia valor;
Soma = soma + valor;
Imprima Soma;
}
Universidade Federal do Espírito Santo UFES - LABIC
49
50. Faça... Enquanto /do.. while
• Nessa estrutura você impõem condições e comandos para
serem realizados caso as condições forem satisfeitas.
• As condições serão avaliadas depois dos comandos
• Geralmente utilizados quando você não sabe o número de
vezes que irá se repetir e precisa que o começo seja lido.
Exemplo:
se o utilizador introduzir um valor menor que 10 para o raio, o
programa volta a pedir um valor para o raio.
Vejamos na prática...
Universidade Federal do Espírito Santo UFES - LABIC
50
51. Faça Enquanto/do While
double area, raio, Pi;
Pi = 3.1415;
do {
Leia raio;
} while( raio < 10 );
area = PI * raio * raio;
Imprima area;
Universidade Federal do Espírito Santo UFES - LABIC
51
52. Exercícios
• Faça uma algoritmo que leia valores enquanto
forem menores que 20;
• Faça um algoritmo que leia 10 valores e
imprima no final a multiplicação de todos eles;
Universidade Federal do Espírito Santo UFES - LABIC
52