ALGORITMOS – AULA 3
Operadores Relacionais, Lógicos e comandos de
condição
Expressões Lógicas

Denomina-se expressão lógica aquela cujos operadores são
lógicos e/ou relacionais e cujos operandos são relações e/ou
variáveis e/ou constantes do tipo lógico.
expressão lógica
operando lógico
operando lógico
operador lógico
constante lógica
não
variável lógica
expressão relacional
Operadores Relacionais


Os operadores relacionais são utilizados para realizar
comparações entre dois valores (constantes, variáveis ou
expressões aritméticas) de mesmo tipo primitivo.
Operador
Símbolo
igualdade
==
diferente
!=
maior
>
maior igual
>=
menor
<
menor igual
<=
O resultado obtido de uma expressão relacional é sempre um
valor lógico.
Operadores Lógicos

Os operadores lógicos mais utilizados são:
Símbolo
Função
&&
E => Conjução
||
OU => disjunção
!
NÃO => Negação
Comando de Atribuição


Permite-nos fornecer um valor a uma certa variável, onde o tipo
dessa informação deve ser compatível com o tipo da variável.
O comando da atribuição possui a seguinte sintaxe:
atribuição
expressão
identificador
=
expressão

expressão aritmética
expressão lógica
;
Exemplo:
bool: A, B;
int: X;
A = verdadeiro;
X = 8 + (13 % 5);
B = 5 == 3;
Comandos de Entrada e Saída

Sintaxe do comando da entrada de dados:
entrada de dados


scanf
(
“escape”,
&variavel
Escapes (formato de entrada de dados):
 %f – float
 %d - int
Exemplos:


scanf(“%d”, &X);
scanf(“%f”, &NOTA);
)
;
Saída de Dados

Sintaxe do comando da saída de dados:
,
saída de dados
printf
(
variável
constante
expressão

Exemplos:



printf(“ola mundo”);
printf(“sua media = %f”, media);
printf(“ %f + %f = %f”, a, b, soma);
)
;
Blocos




Um bloco é definido como um conjunto de ações com uma
função definida.
Algoritmo seria um bloco !?
Serve também para definir os limites nos quais as variáveis
declaradas em seu interior são conhecidos.
Para delimitar um bloco, utiliza-se os delimitadores: inicio e fim,
como segue:
blocos
inicio
ação
,
fim
;
Exemplo de Bloco
{
|
|
|
|
|
|
}
início do bloco (algoritmo)
{declaração de variáveis}
{seqüência de ações}
Estrutura Sequencial

O Fluxo de Controle segue a mesma sequência linear da nossa
escrita, ou seja:



De cima para baixo;
Da esquerda para direita
Cada ação é seguida de um ;


Objetiva separar uma ação da outra
Indica que a próxima ação da sequência deve ser executada
Estrutura sequencial
Algoritmo 3.2 - Média Aritmética
{
// declaração de variáveis
float N1, N2, N3, N4; // notas bimestrais
float MA; // média anual
// entrada de dados
scanf(“%f”,&N1);
scanf(“%f”,&N2);
scanf(“%f”,&N3);
scanf(“%f”,&N4);
// processamento
MA = (N1 + N2 + N3 + N4) / 4;
printf(“media = %f \n”, MA);
}
Estruturas de Seleção




São aquelas que permitem alterar o Fluxo de Execução, de
forma a selecionar qual parte deve ser executada
Essa “decisão” de execução é tomada a partir de uma
condição, que pode resultar apenas em Verdade ou
Falsidade
Uma condição é representada por expressões relacionais ou
lógicas
As estruturas de seleção podem ser classificadas em simples,
compostas ou encadeadas
Seleção Simples
if(condição)
{
// início do bloco verdade
comando 1;
comando 2;
...
comando n;
// fim do bloco verdade
}


Quando a <condição> for verdadeira o “bloco verdade” é
executado
Quando a <condição> for falsa o “bloco verdade” não é
executado
Seleção Simples
Algoritmo 3.3 - Média Aritmética com Aprovação
{
// declaração de variáveis
float N1, N2, N3, N4; // notas bimestrais
float MA; // média anual
// entrada de dados
scanf(“%f”,&N1);
scanf(“%f”,&N2);
scanf(“%f”,&N3);
scanf(“%f”,&N4);
// processamento
MA = (N1 + N2 + N3 + N4) / 4;
printf(“media = %f \n”, MA);
if(MA >=7){
printf(“aprovado”);
}
}
Seleção Composta
if(condição)
{
// início do bloco verdade
comando 1;
comando n;
// fim do bloco verdade
}
else {
// início do bloco falsidade
comando 1;
comando n;
// fim do bloco falsidade
}


Quando a <condição> for verdadeira o “bloco verdade” é
executado
Quando a <condição> for falsa o “bloco falsidade” é executado
Seleção Composta
Algoritmo 3.4 - Média Aritmética com aprovação e reprovação
{
// declaração de variáveis
float N1, N2, N3, N4; // notas bimestrais
float MA; // média anual
// entrada de dados
scanf(“%f”,&N1);
scanf(“%f”,&N2);
scanf(“%f”,&N3);
scanf(“%f”,&N4);
MA = (N1 + N2 + N3 + N4) / 4;
printf(“media = %f \n”, MA);
if(MA >=7){
printf(“aprovado”);
}
else {
printf(“reprovado”);
}
}
Seleção Encadeada


Ocorre quando uma seleção tem como ação uma
outra seleção
Uma seleção encadeada pode ser:


Heterogênea: Quando não é possível identificar
padrão de comportamento
Homogênea: Quando é possível identificar padrão de
comportamento


se – então – se: quando depois de cada então ocorre
outro se
se – senão – se: quando depois de cada senão ocorre
outro se
Seleção Encadeada


Dados três valores A, B, C, verificar se eles podem
ser os comprimentos dos lados de um triângulo
Caso positivo, verificar se compõem
 Triângulo
equilátero
 Triângulo isósceles
 Triângulo escaleno
A
B
C
Seleção Encadeada


Dados três valores A, B, C, verificar se eles podem
ser os comprimentos dos lados de um triângulo
Caso positivo, verificar se compõem
 Triângulo
equilátero – três lados iguais
 Triângulo isósceles – dois lados iguais
 Triângulo escaleno – todos os lados diferentes
A
B
C
Seleção Encadeada
É triângulo? É equilátero? É isósceles? É escaleno?




Ações
V
V
F
F
“Equilátero”
V
F
V
-
“Isósceles”
V
F
F
V
“Escaleno”
F
-
-
-
“Não é triângulo”
Triângulo: (A<B+C) e (B<A+C) e (C<A+B)
Equilátero: (A=B) e (B=C)
Isósceles: (A=B) ou (B=C) ou (A=C)
Escaleno: (A<>B) e (B<>C) e (A<>C)
Seleção Encadeada Heterogênea
int A, B, C; // tamanho dos lados
scanf(“%d”,&A);
scanf(“%d”,&B);
scanf(“%d”,&C);
if((A<B+C) && (B<A+C) && (C<A+B)){
if(A==B) && (B==C) {
printf(“Triangulo Equilátero”);
} else {
if((A==B) || (B==C) || (A==C)) {
printf(“Triângulo Isósceles”);
} else {
printf(“Triangulo Escaleno”);
}
}
} else {
printf(“Estes valores não formam um triângulo”);
}
Algoritmo 3.5 – Tipos de Triângulo
Seleção Encadeada Homogênea
se – então – se
se <Cond1> então
se <Cond2> então
se <Cond3> então
se <Cond4> então W;
fimse;
fimse;
fimse;
fimse;
Cond1
Cond2
Cond3
Cond4
Ação
V
V
V
V
W
É equivalente a:
se <Cond1> e <Cond2> e <Cond3> e <Cond4> então W;
fimse;
Seleção Encadeada Homogênea
se X=V1 então
C1;
fimse;
se X=V2 então
C2;
fimse;
se X=V3 então
C3;
fimse;
se X=V4 então
C4;
fimse;
se X=V1
então C1;
senão se X=V2
então C2;
senão se X=V3
então C3;
senão se X=V4
se – senão – se
então C4;
fimse;
fimse;
fimse;
fimse;
X=V1 X=V2 X=V3 X=V4 Ação
X=V1 X=V2 X=V3 X=V4 Ação
V
F
F
F
C1
V
-
-
-
C1
F
V
F
F
C2
F
V
-
-
C2
F
F
V
F
C3
F
F
V
-
C3
F
F
F
V
C4
F
F
F
V
C4
Seleção de Múltipla Escolha



Seleções encadeadas homogêneas se-senão-se são bastante
frequentes para o tratamento de listas de valor
Para simplificar a escrita, pode-se utilizar o comando escolha.
Adaptando o algoritmo anterior:
switch(X) {
case 1 {
//comandos
break;
}
case 2 {
//comandos
break;
}
default {
}
}
Download

Document