Você está na página 1de 30

Algoritmos e Programação

Estrutura de Fluxo
André L. M. Santana
E-mail: andre.santana@anhembi.br
Aula de hoje

§ Operadores relacionais e lógicos


§ Escopos
§ Desvios condicionais
§ Simples
§ Compostos
§ Encadeados
Operadores Relacionais e Lógicos

§ Os operadores relacionais e lógicos produzem


como resultado valores lógicos;
§ Com isso conseguimos obter “verdades” e
“mentiras” durante a execução de um programa.
Operadores Relacionais e Lógicos

§ Com os operadores relacionais conseguimos


realizar comparações entre valores;
10 < 3 à false
10 > 3 à true
5 <= 5 à true
5 >= 2 à true
2 == 3 à false
1 != 2 à true
Operadores Relacionais e Lógicos

§ Com os operadores lógicos conseguimos realizar


operações sobre valores lógicos;
V && V à V V || V à V !V à F
V && F à F V || F à V !F à V
F && V à F F || V à V
F && F à F F || F à F
Operadores Relacionais e Lógicos

§ Imagine o seguinte cenário, você precisa


desenvolver um algoritmo que receba como
entrada três notas de um aluno e determine sua
média;
Operadores Relacionais e Lógicos
int main() {
float nota1, nota2, mediaAritmetica;
printf("Primeira Nota: ");
scanf("%f", &nota1);

printf("Segunda Nota: ");


scanf("%f", &nota2);

mediaAritmetica = (nota1 + nota2) / 2.0;

printf("A média é: %f \n", mediaAritmetica);

return 0;
}
Operadores Relacionais e Lógicos

§ Vamos complicar um pouco mais o cenário. Agora


seu algoritmo precisa responder se o aluno foi
aprovado ou não.
§ Como fazer?
Operadores Relacionais e Lógicos

§ Felizmente as operações relacionais e lógicas


retornam valores lógicos e com isso podemos fazer
com que o algoritmo “tome decisões”.
Operadores Relacionais e Lógicos

§ Esta decisão é tomada baseada em alguma


“verdade” ou “mentira”, ou seja, precisamos de
valores do tipo lógico para tomar uma decisão.
§ No problema indicado anteriormente precisamos
saber se o resultado da média é maior ou igual a 6.
Operadores Relacionais e Lógicos
int main() {
float nota1, nota2, mediaAritmetica;
printf("Primeira Nota: ");
scanf("%f", &nota1);

printf("Segunda Nota: ");


scanf("%f", &nota2);

mediaAritmetica = (nota1 + nota2) / 2.0;

printf("A média é: %f \n", mediaAritmetica);

if(mediaAritmetica >= 6){


printf("\nAprovado com a média &f", mediaAritmetica);
}

return 0;
}
Operadores Relacionais e Lógicos

§ Através do comando if podemos definir escopos


condicionais.
Escopos

§ Escopos são os blocos em que o programador


divide seu programa.
§ Veja o exemplo com três escopos diferentes:
Escopos
§ Veja o exemplo com dois escopos diferentes:
1

1
Escopos

§ Escopos aninhados possuem acesso aos dados


do escopo pai;
§ Mas o escopo pai não possui acesso aos dados de
um escopo filho;
Operadores Relacionais e Lógicos
int main(int argc, const char * argv[]) { 1

int idade = 18;

if(idade >= 18){ 2


bool maioridade = true;
int idade_mais_um = idade + 1;
}2

maioridade = false;

return 0;
} 1
Desvios condicionais

§ Quando incluímos um comando if no algoritmo


criamos um desvio condicional nele;
§ Baseado em uma condição o algoritmo irá ou não
executar um trecho do código (referente ao escopo
do comando).
Desvios condicionais

§ Neste exemplo o
algoritmo só irá
escrever no
console caso a
condição dentro
do comando if
retorne
verdadeiro;
Desvios condicionais

§ E se fosse preciso exibir também quando o aluno


fosse reprovado?

§ Neste caso é necessário utilizarmos um desvio


condicional composto
Desvios condicionais

§ Agora utilizamos o
comando else para o
caso onde a condição
seja false;
Desvios condicionais

§ O caso definido dentro do else só ocorre quando a


operação lógica definida no if anterior a ele resulta
em false
Desvios condicionais encadeados

§ Assim como todos os outros comandos aprendidos


até agora, os desvios condicionais também são
instruções.
§ Então é possível incluir uma estrutura dessas
dentro do escopo de outra estrutura previamente
criada.
Desvios condicionais encadeados

§ Geralmente isso ocorre quando há mais de duas


situações, ou quando há uma subdivisão em uma
das situações do if ou else.

§ Deve-se prestar bastante atenção as chaves que


delimitam o escopo, para garantir que o algoritmo
execute adequadamente
Desvios condicionais encadeados

§ Existe mais de uma forma de encadear desvios


condicionais:
if ( teste lógico ) {
if ( teste lógico ) { // Bloco de Instruções…
// Bloco de Instruções... } else if ( teste lógico ) {
} else if ( teste lógico ) { // Bloco de Instruções…
// Bloco de Instruções... } else if ( teste lógico ) {
} else if ( teste lógico ) { // Bloco de Instruções…
// Bloco de Instruções… } else {
} // Bloco de Instruções…
}
Desvios condicionais encadeados

§ Existe mais de uma forma de encadear desvios


condicionais:
if ( teste lógico ) {
if ( teste lógico ) { // Bloco de Instruções…
// Bloco de Instruções… if ( teste lógico ) {
if ( teste lógico ) { // Bloco de Instruções…
// Bloco de Instruções… }
}else{ }else {
// Bloco de Instruções… if ( teste lógico ) {
} // Bloco de Instruções…
} }
}
Desvios condicionais encadeados
§ Para definir se um número é positivo ou negativo:
Desvios condicionais

§ Para facilitar a organização do código é comum


adotar-se a identação por escopo, ou seja, cada
nível de escopo recebe um “tab” a mais que o
anterior.
Desvios condicionais
Desvios condicionais
andre.santana@anhembi.br
Escola de Engenharia e Tecnologia

Você também pode gostar