Logica de Programação - Conceito I
Logica de Programação - Conceito I
3
Lógica de programação
4
Lógica de programação
O que é lógica ?
• A lógica discute o uso de raciocínio em alguma atividade, é o estudo normativo,
filosófico do raciocínio válido se baseando no foco comum referente a harmonia de
raciocínio.
• Examina de forma genérica as formas que a argumentação pode tomar, quais dessas
formas são válidas e quais são falsas.
O que é programação ?
• Programação é o processo de escrita, teste e manutenção de um programa de
computador.
5
Lógica de programação
6
Desenvolvendo algoritmos
7
Desenvolvendo algoritmos
O que é um algoritmo ?
• É uma sequência de passos finita para realizar uma tarefa ou resolver um problema.
• Em nosso dia a dia utilizamos algoritmos para realizar nossas atividades, definindo a
sequência de passos que devemos fazer para atingir um objetivo.
Pseudocódigo
• Forma genérica de escrever um algoritmo, utilizando linguagem escrita simples,
independente de linguagem de programação.
• Deve ser de fácil interpretação e rico em detalhes.
8
Desenvolvendo algoritmos
9
Desenvolvendo algoritmos
Ir trabalhar
• Levantar da cama
• Fazer a barba
• Tomar banho
• Se secar
• Escolher a roupa
• Vestir a roupa
• Pendurar a toalha
• Tomar café
• Ver noticiário
• Dirigir até o trabalho
• Chegar ao trabalho
10
Desenvolvendo algoritmos
Dividindo o problema
Podemos dividir um algoritmo em três partes principais:
11
Desenvolvendo algoritmos
Calcular média
• Receber nota 1
• Receber nota 2 Entrada
• Receber nota 3
• Receber nota 4
12
Desenvolvendo algoritmos
Teste de mesa
• Teste de mesa é o nome que se dá ao teste manual do algoritmo, seguindo suas
instruções de maneira precisa para validar o procedimento descrito.
13
Diagrama de blocos
14
Diagrama de blocos
• Cada símbolo contém a descrição pertinente de como foi utilizado no fluxo, indicando
processamento ou informação que representa.
15
Diagrama de blocos
Terminador
Passos do processamento
Processamento
Entrada
16
Diagrama de blocos
Ponto onde será efetuada uma escolha entre duas situações possíveis
Decisão
Exibição
17
Diagrama de blocos
Fluxo
18
Diagrama de blocos
Inicio
Existe
Recebe nota
nota? Sim
Não
Soma notas
Divide somatória
pela quantidade de
notas
Exibir
média
Fim
19
Estruturas de dados
20
Estruturas de dados
Tipos de dados
• Algoritmos manipulam dados que normalmente são fornecidos pelos usuários, e
entregam resultados de um processamento para estes usuários.
21
Estruturas de dados
Dados numéricos
• São números inteiros ou reais, positivos ou negativos. (Algumas linguagens de
programação diferem números inteiros de números reais)
• Utiliza-se este tipo de dado quando é necessário realizar operações matemáticas como
soma, subtração e etc.
Dados literais
• São símbolos, que em sua menor unidade são chamados de CARACTERE e sempre
são apresentados entre aspas simples. Por exemplo: ‘A’, ‘b’, ‘1’, ‘ã‘
• Um conjunto de um ou mais CARACTERES é chamado de STRING e sempre são
apresentados entre aspas duplas. Por exemplo: “Linguagem de programação”, “123456”
22
Estruturas de dados
Dados lógicos
• Dados lógicos são utilizados durante o processo de tomada de decisões.
23
Estruturas de dados
Variáveis
• São espaços reservados na memória do computador, identificados por um nome único,
para armazenar dados que serão utilizados durante a execução do programa.
24
Estruturas de dados
Nomeando variáveis
• Cada linguagem e programação estabelece suas próprias regras de formação de nomes
de variáveis. Adotaremos algumas boas práticas para melhor entendimento.
• O nome da variável deve iniciar com um caractere em minúsculo que defina seu tipo,
c (texto [caractere]), n (numérico), l (lógico), a (vetor [array]) ou o (objeto),
25
Estruturas de dados
Vetores (Array)
• É um conjunto de variáveis, geralmente do mesmo tipo, agrupadas continuamente na
memória do computador.
• As variáveis do tipo vetor devem ser declaradas no início do código da seguinte maneira
VAR <NOME> [<TAMANHO>] : <TIPO>
Índice || 1 || 2 || 3 || 4 || 5 ||
Dado || 10 || 8.5 || 7.5 || 10 || 7 ||
Exemplo
aDado[3] possui o valor 7.5
aDado[1] possui o valor 10
26
Estruturas de dados
Matriz
• São arranjos ordenados como os vetores, porém podem possuir N dimensões.
Computacionalmente, o tipo de uma matriz é um vetor (array) e podem ser definidas
como um vetor de vetores.
Exemplo
aDado[2,1] possui o valor 8.4
27
Operadores
28
Operadores
Operadores
• São os símbolos utilizados para realizar uma ação, seja ela atributiva, matemática ou
comparativa.
Operador de atribuição
• É o operador utilizado para definir o valor de uma variável
:= Atribuição (é igual a)
Exemplos
cNome := “Joana”
nMedia := 8.0
lPassou := .T.
29
Operadores
Operadores matemáticos
• São os operadores utilizados para cálculo matemáticos em dados do tipo numérico.
• Como na matemática, é possível definir prioridades com a utilização de parênteses ( ).
+ Adição
- Subtração
* Multiplicação
/ Divisão
% Resto de divisão
^ Exponenciação
Exemplos
nNota := 8 + 4 + 6 + 5
nMedia := nNota / 4
nDelta := nB ^ 2 - ( 4 * nA * nC )
30
Operadores
+= Adiciona
-= Subtrai
*= Multiplica por
/= Divide por
%= Resto de divisão por
^= Exponencia
Exemplos
nNota += 8 equivale a nNota := nNota + 8
nValor *= 3 equivale a nValor := nValor * 3
31
Operadores
++ Incremento
-- Decremento
• Quando estes operadores são utilizados em um cálculo, podem ser inseridos antes ou
após a variável, entretanto, seu posicionamento influenciará no resultado.
32
Operadores
33
Operadores
34
Operadores
Operadores relacionais
• São os operadores utilizados para comparação dos dados, retornando um valor lógico
verdadeiro (.T.) ou falso (.F.)
== Igual a
!= Diferente de
< Menor que
<= Menor ou igual a
> Maior que
>= Maior ou igual a
35
Operadores
Operadores relacionais
• Exemplos
lNumDez := nValor == 10
lNumImpar := (nNum % 2) != 0
lRepetiu := nMedia < 7
lPassou := nMedia >= 7
36
Operadores
Operadores lógicos
• São os operadores utilizados para avaliações lógicas, retornando um valor lógico
verdadeiro (.T.) ou falso (.F.)
.AND. E
.OR. Ou
! Negação (Inversão lógica)
37
Operadores
lVar_1 !lVar_1
.F. .T.
.T. .F.
38
Operadores
39
Operadores
40
Operadores
Operadores lógicos
• As comparações lógicas podem ser encadeadas como operações matemáticas, que
serão executadas uma a uma.
• Como nas operações matemáticas, é possível definir prioridades com a utilização de
parênteses ( ).
Exemplos
lRet := lVar_1 .AND. lVar_2
lRet := lVar_1 .OR. lVar_2
lRet := !lVar_1 .AND. !lVar_2
lRet := !(lVar_1 .OR. lVar_2)
lRet := (lVar_1 .OR. lVar_2) .AND. !lVar_3
41
Operadores
lVar_1 lVar_2 lVar_3 lVar_1 .OR. lVar_2 !lVar_3 (lVar_1 .OR. lVar_2) .AND. !lVar_3
42
Operadores
43
Operadores
lVar_1 lVar_2 lVar_3 lVar_1 .AND. lVar_2 !(lVar_1 .AND. lVar_2) lVar_1 .AND. lVar_3 !(lVar_1 .AND. lVar_2) .OR. (lVar_1 .AND. lVar_3)
44
Estruturas de
decisão e repetição
45
Estruturas de decisão e repetição
Estruturas de decisão
• Os comandos de decisão são utilizados em algoritmos onde o fluxo da solução não é
obtiva através da utilização de ações puramente sequenciais, avaliado condições
lógicas para optar qual fluxo deve ser seguido a partir daquele ponto.
46
Estruturas de decisão e repetição
• A estrutura IF...ELSE (SE/SENÃO) permite que criemos desvios no código, não sendo
obrigatório a inclusão de ações vinculadas a cada resultado.
47
Estruturas de decisão e repetição – IF...ELSE
CODIGO
Ações anteriores
IF <CONDIÇÃO>
...
...
Falso ( .F. ) Condição Verdadeiro ( .T. ) ...
lógica ELSE
...
Ações vinculadas ...
Ações vinculadas
ao resultado ...
ao resultado falso
verdadeiro ENDIF
Unificação do fluxo
ao final da
estrutura
48
Estruturas de decisão e repetição – IF...ELSE
CODIGO
Unificação do fluxo
ao final da
estrutura
49
Estruturas de decisão e repetição
50
Estruturas de decisão e repetição – DO...CASE
CODIGO
Ações anteriores
DO CASE
CASE <CONDIÇÃO_1>
...
Condição Verdadeiro ( .T. ) Ações vinculadas a ...
lógica 1 condição lógica 1 CASE <CONDIÇÃO_2>
...
Falso ( .F. ) ...
CASE <CONDIÇÃO_N>
Condição Verdadeiro ( .T. ) Ações vinculadas a ...
lógica 2 condição lógica 2 ...
OTHERWISE
Falso ( .F. ) ...
...
ENDCASE
Condição Verdadeiro ( .T. ) Ações vinculadas a
lógica N condição lógica N
Falso ( .F. )
Ações de falha de
todas condições
(opcional)
Unificação do fluxo
ao final da
estrutura
51
Estruturas de decisão e repetição
• Estruturas de repetições são extremamente poderosas porem, devemos nos atentar que
nosso código seja capaz de finalizar estas repetições, ou então o programa executará
estas ações indefinidamente. Em programação chamamos esta condição de “programa
em loop”.
52
Estruturas de decisão e repetição
• Caso a condição de referência seja falsa na primeira análise, as instruções não serão
executadas.
53
Estruturas de decisão e repetição – WHILE...END
CODIGO
Verdadeiro ( .T. )
Ações de repetição
Continuidade do
fluxo ao final da
estrutura
54
Estruturas de decisão e repetição
55
Estruturas de decisão e repetição – DO...WHILE
CODIGO
Ações anteriores
DO
...
...
...
WHILE <CONDIÇÃO>
Ações de repetição
Condição
referencia Verdadeiro ( .T. )
Falso ( .F. )
Continuidade do
fluxo ao final da
estrutura
56
Estruturas de decisão e repetição
• Caso a condição de referência seja falsa na primeira análise, as instruções não serão
executadas.
57
Estruturas de decisão e repetição – FOR...TO...NEXT
CODIGO
Ações anteriores
FOR <VAR_CONTROLE> := <INICIALIZADOR> TO <CONDIÇÃO> STEP <PASSO>
...
...
...
Condição Falso ( .F. )
...
referencia NEXT <VAR_CONTROLE>
Verdadeiro ( .T. )
Ações de repetição
Incremento da
variável de controle
Continuidade do
fluxo ao final da
estrutura
58
Estruturas de decisão e repetição
Regras:
• Receber o nome do aluno
• Receber 4 notas em um vetor.
• Realizar o cálculo da média aritmética.
• Se nota menor do que 5.0, o aluno repetiu de ano
• Se nota entre 5.0 e 7.4, o aluno está de recuperação
• Se nota maior ou igual a 7.5, o aluno passou de ano.
• Se o aluno está de recuperação: receber nova nota
• Calcular nova média (Somar média anterior com nova nota e dividir por 2).
• Se nota maior ou igual a 6.0, aluno passou. Se não, aluno está reprovado.
59
Estruturas de decisão e repetição
CalcularMedia
VAR cNome : literal
VAR aNotas[4] : vetor
VAR nMedia : numérico
VAR nX : numérico
nMedia := 0
cNome := Receber_Nome
FOR nX := 1 TO 4 STEP 1
aNotas[nX] := Receber_Nota
nMedia += aNotas[nX] / 4
NEXT
DO CASE
CASE nMedia < 5.0
Mensagem: Aluno + cNome + repetiu de ano.
CASE nMedia >= 5.0 .AND. nMedia <= 7.4
nMedia := (nMedia + Receber_Nota_Rec) / 2
IF nMedia >= 6.0
Mensagem: Aluno + cNome + passou de ano.
ELSE
Mensagem: Aluno + cNome + repetiu de ano.
ENDIF
CASE nMedia > 7.4
Mensagem: Aluno + cNome + passou de ano.
ENDCASE
60
/totvs Israel Zanata Escorizza
@totvs SQUAD GCT/GCP
blog.totvs.com Israel.escorizza@totvs.com.br
company/totvs
fluig.com Obrigado =)