Algoritmos e Lógica de Programação I
Algoritmos e Lógica de Programação I
DE PROGRAMAÇÃO I
PROF. ME. RICARDO ZANNI SILVEIRA
Diretor Geral | Valdir Carrenho Junior
“
A Faculdade Católica Paulista tem por missão exercer uma
ação integrada de suas atividades educacionais, visando à
geração, sistematização e disseminação do conhecimento,
para formar profissionais empreendedores que promovam
a transformação e o desenvolvimento social, econômico e
cultural da comunidade em que está inserida.
Av. Cristo Rei, 305 - Banzato, CEP 17515-200 Marília - São Paulo.
[Link]
Nenhuma parte desta publicação poderá ser reproduzida por qualquer meio ou forma
sem autorização. Todos os gráficos, tabelas e elementos são creditados à autoria,
salvo quando indicada a referência, sendo de inteira responsabilidade da autoria a
emissão de conceitos.
ALGORITMOS E LÓGICA
DE PROGRAMAÇÃO I
PROF. ME. RICARDO ZANNI SILVEIRA
SUMÁRIO
AULA 01 INTRODUÇÃO À LÓGICA DE PROGRAMAÇÃO 04
AULA 1
INTRODUÇÃO À LÓGICA DE
PROGRAMAÇÃO
É muito comum associarmos a palavra lógica apenas à matemática, mas esse termo
normalmente está relacionado à coerência e à racionalidade (FORBELLONE, 2005). A
lógica pode ser relacionada com a expressão “correção do pensamento”, pois uma de suas
responsabilidades é determinar quais operações são válidas e quais não são (FORBELLONE,
2005).
De acordo com Forbellone (2005), a lógica também pode ser interpretada como a “ciência
das formas do pensamento”, uma vez que a forma mais complexa do pensamento é o
raciocínio e, portanto, a lógica estuda a correção do raciocínio.
A lógica de programação utiliza-se do uso correto das leis do pensamento e dos processos
de raciocínio na programação de computadores, com o objetivo de racionalizar e desenvolver
técnicas que auxiliem na produção de soluções logicamente válidas e coerentes e que resolvam
com eficiência os problemas que se deseja programar (FORBELLONE, 2005).
Segundo Forbellone (2005), o principal objetivo do estudo da Lógica de Programação é
a construção de algoritmos válidos e compreensivos.
Indicação de filme
AULA 2
CONCEITOS INICIAIS
AULA 3
COMO CONSTRUIR ALGORITMOS
Um algoritmo tem por finalidade fazer a representação mais fiel do raciocínio envolvido
na Lógica de Programação, e desse modo, nos permite absorver uma sequência de detalhes
computacionais (FORBELLONE, 2005).
De acordo com Forbellone (2005), uma das importâncias da construção de algoritmos é
que uma vez compreendida uma solução algorítmica para um determinado problema, esta
pode ser traduzida para qualquer linguagem de programação.
Segundo Ascencio (2012), para a construção de qualquer tipo de algoritmo, é preciso
seguir estes passos:
a. Compreender completamente o problema a ser resolvido e destacar os pontos mais
importantes e os objetos que o compõem.
b. Definir os dados de entrada, isto é, quais dados serão fornecidos e quais objetos fazem
parte do cenário do problema.
c. Definir o processamento. Quais operações serão efetuadas e quais serão as restrições
para essas operações. A responsabilidade de transformar os dados de entrada em
dados de saída e de verificar quais objetos são responsáveis pela atividade é atribuição
do processamento;
d. Definir os dados de saída.
e. Construir o algoritmo utilizando um dos tipos mais comuns de algoritmos.
f. Testar o algoritmo através de simulações.
Dica de leitura
AULA 4
TIPOS DE ALGORITMOS:
LINGUAGEM NATURAL,
FLUXOGRAMA E PSEUDOCÓDIGO
Um algoritmo é uma linha de raciocínio que pode ser descrito de diversas maneiras, de forma
textual ou gráfica, e cada uma dessas técnicas tem suas vantagens e desvantagens, mas ambas
permitem um nível elevado de clareza em relação ao fluxo de execução (FORBELLONE, 2005).
De acordo com Ascencio (2012), os três tipos de algoritmos mais utilizados são: linguagem
natural, fluxograma e pseudocódigo.
Linguagem Natural
Fluxograma
Anote isso
Pseudocódigo
Algoritmo
Declare N1, N2, M Numérico
Escreva “Digite dois números”
Leia N1, N2
M N1 * N2
Escreva “Multiplicação = “, M
Fim_Algoritmo.
AULA 5
COMANDOS DE ENTRADA E SAÍDA
LEIA X
ESCREVA X
Variáveis
Constantes
+ Adição 1 + 2, A + B
- Subtração 6 – 3, A – B
* Multiplicação 2 * 4, A * B
a. 4 + 2 + 6/2
4+2+3
9
b. 4 – 2 * 6/3 – pot(2,3)
4 – 2 * 6/3 – 8
4 – 12/3 – 8
4–4–8
-8
Exemplos:
a. 3 * 4 = 24/2
12 = 12
V
AULA 6
TABELA-VERDADE
(OPERADORES LÓGICOS)
Os operadores lógicos são utilizados para associar expressões que estabelecem uma
comparação entre valores, segundo Guedes (2014), para a formação de novas proposições
lógicas compostas a partir de outras proposições lógicas mais simples (FORBELLONE, 2005).
Operador Função
não negação
e conjunção
ou disjunção
Tabela 6 – Operadores lógicos
Fonte: Adaptado de Forbellone (2005, p. 22).
A B AeB
F F F
F V F
V F F
V V V
Tabela 8 – Operação de conjunção
Fonte: Adaptado de Forbellone (2005, p. 23).
A B A ou B
F F F
F V V
V F V
V V V
Tabela 9 – Operação de disjunção
Fonte: Adaptado de Forbellone (2005, p. 23).
De acordo com o autor Forbellone (2005), abaixo seguem alguns exemplos de aplicações
com tabelas-verdade:
a. Se chover e relampejar, eu fico em casa.
Quando eu fico em casa?
Nesse exemplo, a proposição somente será verificada quando os termos chover e relampejar
forem simultaneamente verdadeiros.
b. Se chover ou relampejar eu fico em casa.
Quando eu fico em casa?
Com o operador lógico ou as possibilidades de “eu fico em casa” são maiores, pois de acordo
com a tabela-verdade, a proposição se tornará verdadeira nos casos: somente chovendo,
somente relampejando e chovendo e relampejando.
c. 2 < 5 e 15/3 = 5
Ve5=5
V=V
V
d. 2 < 5 ou 15/3 = 5
V ou V
V
Prioridade Operadores
1ª não
2ª e
3ª ou
Tabela 10 – Operação de conjunção
Fonte: Adaptado de Forbellone (2005, p. 24).
Prioridade Operadores
1ª parênteses mais internos
2ª operadores aritméticos
3ª operadores relacionais
4ª operadores lógicos
Tabela 11 – Precedência entre todos operadores
Fonte: Adaptado de Forbellone (2005, p. 24).
Exemplo:
a. não (4 <> 8/2) ou V e 3 – 6 > 6 – 3 ou V
não ( 4 <> 4 ou V e – 3 > 3 ou V)
não (F ou V e F ou V)
não (F ou F ou V)
não (F ou V)
não (V)
F
FACULDADE CATÓLICA PAULISTA | 18
ALGORITMOS E LÓGICA
DE PROGRAMAÇÃO I
PROF. ME. RICARDO ZANNI SILVEIRA
AULA 7
ESTRUTURA SEQUENCIAL
Segundo Ascencio (2012), as variáveis são declaradas após a palavra DECLARE e os tipos
mais usuais são: NUMÉRICO (para variáveis que irão receber números), LITERAL (para as
variáveis que irão receber caracteres) e LÓGICO (para as variáveis que irão receber valores
verdadeiro ou falso).
Exemplo:
DECLARE
X NUMÉRICO
Y, Z LITERAL
TESTE LÓGICO
Anote isso
Quando é criado um algoritmo deve-se especificar ações claras e precisas que, a partir de
um estado inicial e após um determinado tempo, resultem em um resultado final esperado.
Um algoritmo estabelece um padrão de comportamento a ser seguido, com o objetivo de
solucionar um problema, garantindo que sempre que for feito do mesmo modo, o resultado
final será o mesmo.
Fonte: Forbellone (2005, p. 4).
AULA 8
ESTRUTURA DE SELEÇÃO
A seleção simples é utilizada para testar certa condição antes de executar determinada
ação. Se a condição for aceita um determinado bloco de instruções deverá ser executado
e se a condição não for aceita, o fluxo da execução do algoritmo irá seguir após o fim do
bloco de decisão (GUEDES, 2014), como mostra o modelo abaixo:
se <condição>
então
<conjunto de instruções>
fimse
Exemplo:
Algoritmo Saber se o número informado é ímpar
1. declare
2. numero numérico
3.
[Link]ício
5.
6. leia (numero)
7.
8. se ((numero mod 2) = 1 então
9.
10. escreva (“O número informado é ímpar”)
11.
12. fimse
13.
14. fim.
Como no exemplo anterior somente existe uma condição a ser executada, então esta
estrutura de seleção é denominada estrutura simples (GUEDES, 2014).
Utiliza-se a estrutura da seleção composta quando houver casos em que duas alternativas
dependem de uma mesma condição, uma de a condição ser verdade e outra de a condição
ser falsa como é descrito no modelo (FORBELLONE, 2005):
se <condição>
então
<conjunto de instruções para o teste de condição resultar em verdade>
senão
<conjunto de instruções para o teste de condição resultar em falso>
fimse
Exemplo:
Algoritmo Cálculo do bônus salarial
1. declare
2. salario, bônus, tempo numérico
3.
4. início
5.
6. leia (salario)
7. leia (tempo)
8.
9. se (tempo >= 5) então
10.
11. bônus salario * 0,20
12.
13. senão
14.
15. bônus salario * 0,10
16
17. fimse
18.
19. escreva (“O valor do bônus é”, bônus)
20.
21. fim.
Nota-se que existe uma condição para a resposta verdadeira e outra condição para
a resposta falsa, sendo assim, caracterizado como uma estrutura de seleção composta
(GUEDES, 2014).
Exemplo:
READLN(NOME);
Exemplo:
WRITELN(NOME);
Anote isso
AULA 9
SELEÇÃO HOMOGÊNEA
Então faça;
Fim_se;
De acordo com Forbellone (2005), uma estrutura de seleção heterogênea pode ser descrita
como o exemplo abaixo:
Exemplo:
Se <condição 1>
Então
Se <condição 2>
Então
Início // bloco verdade 1
Ação 1;
.
.
.
Ação n;
Fim; // bloco verdade 1
Fim_Se;
Senão
Se <condição 3>
Então
Início // bloco verdade 2
Ação 1;
.
.
.
Ação n;
Fim; // bloco verdade 2
Senão
Se <condição 4>
Então
Se <condição 5>
Então
<comando_verdadeiro>;
Fim_Se
Senão
<comando_falso>;
Fim_Se;
Fim_Se;
Fim_Se;
AULA 10
MÚLTIPLA ESCOLHA
Quando uma estrutura de seleção exerce um conjunto de opções para escolha ela é
denominada de seleção de múltipla escolha e existem duas formas de realizar, uma delas é
utilizando o encadeamento de instrução “Se”, e a outra é usando a instrução “escolha caso”
(GUEDES, 2014).
Na estrutura de seleção de múltipla escolha um conjunto de valores discretos precisa ser
testado e ações distintas são relacionadas a esses valores (FORBELLONE, 2005).
Exemplo pseudocódigo utilizando a instrução Se:
Se (variável = Tal_Coisa_1) então
<conjunto de instruções A>
Senão
Se (variável = Tal_Coisa_2) então
<conjunto de instruções B>
Senão
Se (variável = Tal_Coisa_3) então
<conjunto de instruções C>
Senão
<conjunto de instruções D>
Fim_Se
Fim_Se
Fim_Se
se verifica com todos os outros valores, exceto os discriminados caso a caso, é incluído a
situação “outro caso” (FORBELLONE, 2005).
Anote isso
Anote isso
Quer aprender um pouco mais sobre seleção múltipla escolha? acesse o link:< [Link]
[Link]/watch?v=UG27GMtvzQM> e assista o vídeo “Seleção de Múltipla Escolha
(ESCOLHA...CASO)”, do Canal Byte no YouTube.
Existem situações recíprocas exclusivas que se uma situação for executada, as outras
demais não serão. Para o caso é indicado um comando mais seletivo como o “escolha_caso”
(ASCENCIO, 2012).
Escolha_caso (variável)
Início
Caso valor1: comando 1;
Ação 1;
Caso valor2: comando 2;
Ação 2;
Caso valor3: comando 3;
Ação 3;
Outro_caso: lista comandos;
Fim_Escolha_caso
O comando “escolha_caso” avalia o valor de uma variável para decidir qual caso será
executado. Cada caso está relacionado a um possível valor da variável. Quando o valor
da variável não coincidir com os valores especificados nos casos, então será executado o
comando “outro_caso” (ASCENCIO, 2012).
Dica de leitura
AULA 11
ESTRUTURA DE REPETIÇÃO
As estruturas de repetição permitem que um mesmo trecho de código seja executado mais
de uma vez (GUEDES, 2014). Essa estrutura é muito utilizada quando um algoritmo inteiro
ou somente um trecho dele precisa ser repetido e esse número de repetições pode ser fixo
ou estar vinculado a uma condição, segundo Ascencio (2012) que pode ser indeterminado,
mas necessariamente finito (FORBELLONE, 2005).
Segundo Forbellone (2005), os trechos dos algoritmos que se repetem são chamados de
laços de repetição e também são conhecidos por sua tradução em inglês, loops ou looping,
por lembrarem uma execução finita em círculos, que posteriormente, segue sua execução
normalmente.
A repetição com teste no início é caracterizada por uma estrutura de controle de fluxo de
execução que permite repetir diversas vezes um mesmo trecho de algoritmo, mas sempre
verificando antes de cada execução se é permitido executar o mesmo trecho do algoritmo
(FORBELLONE, 2005).
Para que aconteça a repetição com teste no início é utilizado a estrutura “enquanto”, que
possibilita que um bloco seja repetido enquanto uma determinada condição for verdadeira
(FORBELLONE, 2005).
De acordo com Ascencio (2012), essa estrutura de repetição é indicada quando não se
sabe a quantidade de vezes que um trecho do algoritmo deve ser repetido, mas também
pode ser utilizada quando se conhece a quantidade de vezes e se baseia na análise de uma
condição e a repetição é realizada enquanto a condição for verdadeira.
Enquanto a condição for verdadeira, os comandos 1, 2 e 3 serão executados.
Enquanto condição Faça
Início
Comando 1
Comando 2
Comando 3
Fim
Anote isso
De acordo com Guedes (2014), para os comandos internos das estruturas de repetição
existem dois tipos de uso de variáveis: os acumuladores e os contadores.
Quando a execução de um cálculo necessita de valores que sejam obtidos a cada interação
ou quando o cálculo somente estará finalizado com a conclusão da repetição, utiliza-se os
acumuladores. Para a operação em que será utilizado um acumulador deve ser inicializado
com um valor neutro (GUEDES, 2014).
No caso de uma adição o acumulador deve ser iniciado com o valor zero e ser for uma
multiplicação, o acumulador deve ser inicializado com o valor 1 (GUEDES, 2014). A variável
acumulador é usada para acumular à soma uma série de valores e devem ser inicializadas
com o valor zero antes de serem utilizadas, pois se isso não acontecer, a soma irá incluir o
valor anterior armazenado na posição de memória da variável acumulador (DEITEL, 2011).
Exemplo:
Algoritmo Soma
Var
Início
leia(num);
fim_para
escreva(“Soma = “, soma);
fim_algoritmo
Já os contadores servem para executar a contagem de uma ação que ocorre dentro da
estrutura de repetição (GUEDES, 2014). Essa técnica de utilizar um contador para controlar a
estrutura de repetição serve então para especificar a quantidade de vezes que um conjunto
de comandos será executado e é conhecida como repetição definida, pois o número de
repetições é conhecido antes que o loop comece a ser executado (DEITEL, 2011).
Essas variáveis contadoras devem ser inicializadas com os valores zero ou 1, dependendo
da sua utilização (DEITEL, 2011).
Exemplo:
Algoritmo Compara_Numero
Var
cont, i: inteiro;
Início
leia(num);
fim_se
fim_para
fim _algoritmo
Anote isso
11.3 11.3
Estrutura
Estrutura
de Repetição
de Repetição
com com
TesteTeste
no Final
no Final
e Variável
e Variável
de de
Controle
Controle
Do - Do
While
- While
A estrutura
A estrutura
de repetição
de repetição
com teste
com no
teste
final
noéfinal
utilizada
é utilizada
juntamente
juntamente
com acom
estrutura
a estrutura
repitarepita
que possibilita
que possibilita
que um
que
bloco
um bloco
ou uma
ouação
uma seja
açãorepetida
seja repetida
até que
atéuma
quedeterminada
uma determinada
condição
condição
seja verdadeira
seja verdadeira
(FORBELLONE,
(FORBELLONE,
2005).2005).
Essa estrutura
Essa estrutura
de repetição
de repetição
com teste
com no
teste
final
noéfinal
utilizada
é utilizada
quandoquando
não senão
sabe
seasabe
quantidade
a quantidade
de vezes
de vezes
que umque
trecho
um trecho
do algoritmo
do algoritmo
deve ser
deve
repetido,
ser repetido,
mas também
mas também
pode ser
podeutilizada
ser utilizada
quandoquando
se conhece
se conhece
a quantidade
a quantidade
de vezes
de vezes
de repetição
de repetição
do trecho
do trecho
do algoritmo
do algoritmo
(ASCENCIO,
(ASCENCIO,
2012).2012).
O teste
O condicional
teste condicional
da estrutura
da estrutura
de repetição
de repetição
é realizado
é realizado
ao final
aoda
final
estrutura
da estrutura
(GUEDES,
(GUEDES,
2014),2014),
e essaeestrutura
essa estrutura
se baseia
se baseia
na análise
na análise
de uma
decondição
uma condição
onde aonde
repetição
a repetição
será realizada
será realizada
até a até
condição
a condição
se tornar
se tornar
verdadeira
verdadeira
(ASCENCIO,
(ASCENCIO,
2012),2012),
e issoeimplica
isso implica
que osque
comandos
os comandos
internos
internos
sempresempre
serão serão
executados
executados
na primeira
na primeira
iteração
iteração
(GUEDES,
(GUEDES,
2014).2014).
Exemplo
Exemplo
estrutura
estrutura
de repetição
de repetição
repita:repita:
Algoritmo
Algoritmo
Exemplo_Repita
Exemplo_Repita
Var Var
// declaração
// declaração
de variáveis
de variáveis
Início Início
RepitaRepita
Comando
Comando
Até condição
Até condição
Fim_algoritmo
Fim_algoritmo
A estrutura
A estrutura
de repetição
de repetição
DO - WHILE
DO - WHILE
pode ser
podeutilizada
ser utilizada
quando
quando
o número
o número
de repetições
de repetições
necessárias
necessárias
não for
nãofixo
fore fixo
os comandos
e os comandos
serãoserão
repetidos
repetidos
até a até
condição
a condição
assumir
assumir
o valor
o valor
verdadeiro
falso (ASCENCIO,
falso (ASCENCIO,
2012).2012).
NessaNessa
estrutura
estrutura
o teste
o teste
de condição
de condição
é realizado
é realizado
no fimnoe,fim
portanto,
e, portanto,
a repetição
a repetição
será será
executada, no mínimo
executada, uma vez,
no mínimo umaquando todo otodo
vez, quando bloco for executado
o bloco uma vez
for executado umae,vez
ao final,
e, ao afinal, a
condição assumir
condição o valoro falso
assumir valor (ASCENCIO, 2012).2012).
falso (ASCENCIO,
FACULDADE CATÓLICA
FACULDADE CATÓLICA
PAULISTA
PAULISTA
| 39 | 39
ALGORITMOS E LÓGICA
DE PROGRAMAÇÃO I
PROF. ME. RICARDO ZANNI SILVEIRA
Início
Comandos
Fim_do
While (condição)
Anote isso
REFERÊNCIAS