Estruturas'de'seleção' 93% Execução'condicional' Etapa'em'um'programa'onde'uma'condição'é'avaliada'e,'dependendo'do' resultado,'diferentes'ações'podem'ser'realizadas.' 94%
Condicional'simples' Uma'ou'mais'ações'serão'executadas'se,' e'apenas'se,'uma'determinada'expressão' for'verdadeira.' expressão' Números'pares' Leia'um'número'inteiro'e,'se'o'mesmo'for'divisível'por'2,'exiba'a'mensagem' O'número' digitado'é'par. ' ' Leia'os'valores'de'A'e'B'e,'se'B'for'diferente'de'zero,'calcule'a'divisão'de'A'por'B.' 95% Condicional'composta' Se'uma'determinada'expressão'for'' verdadeira,'algumas'ações'serão'' executadas.'se'a'expressão'for'falsa,'' outras'ações'serão'executadas.' expressão' Números'pares'e'ímpares' Leia'um'número'inteiro'e,'se'o'mesmo'for'divisível'por'2,'exiba'a'mensagem' O'número' informado'é'par. 'Caso'contrário,'exiba'a'mensagem' O'número'informado'é'ímpar.' '(versão!tropa!de!elite)' Leia'os'valores'de'A'e'B'e,'se'B'for'diferente'de'zero,'calcule'a'divisão'de'A'por'B.'Caso'contrário,' exiba'a'mensagem' Pede'prá'sair! ' 96%
Condicional'múlPpla' A'condição'avaliada'permite' mais'de'2'opções.' expressão' expressão' expressão' 97% Expressões'condicionais' Estabelecem'uma'comparação'entre'os'dados'(constantes'ou'variáveis)'de' um'programa.' O'resultado'dessa'comparação'é'interpretado'pela'linguagem'como'um' valor'lógico'booleano'(verdadeiro'ou'falso).' As'expressões'condicionais'podem'envolver'operadores'aritméPcos,' relacionais'e'lógicos.' 98%
Operadores'relacionais' Estabelecem'relações'entre'os'dados'de'um'programa.' Operador%relacional% Significado% Precedência% == igual' baixa'!= diferente' baixa' < menor' alta' <= menor'ou'igual' alta' > maior' alta' >= maior'ou'igual' alta' Operadores%relacionais% tem%precedência%mais% baixa%que%os% operadores%aritméncos.% a'é'menor'do'que'b' a < b a'é'igual'a'zero' a == 0 a'é'maior'do'que'a'soma'de'b'e'c' a > b + c a'é'diferente'de'zero' a!= 0 99% Verdadeiro'e'Falso'na'linguagem'C' Expressão'relacional' Expressão'envolvendo'dados'e/ou'operadores'aritméPcos,'e'operadores'relacionais.' A'avaliação'de'uma'expressão'relacional'produz'um'valor'booleano' (verdadeiro'ou'falso),'que'é'converpdo'para'um'valor'numérico:'' 0,'se'a'expressão'for'avaliada'como'falsa.' 1,'se'a'expressão'for'avaliada'como'verdadeira.' 5 == 5.0 1,'pois'não'há'diferença'entre' variáveis'de'ppos'numéricos.' 5 == '5' 0,'pois'o'valor'decimal'do'caractere' '5''é'53.' 100%
Operadores'lógicos' UPlizados'para'testar'mais'de'uma'condição,'simultaneamente.' Operador%lógico% Significado% Precedência%! NOT al]ssima' && AND alta' OR baixa' Operadores%lógicos%tem% precedência%mais%baixa% que%os%operadores% relacionais%(exceto%o%!).% && expressão'1' 1 0 expressão'1' 1 0 expressão'2' 1 1 0 0 0 0 expressão'2' 1 1 1 0 1 0 expressão'!expressão' 1 0 0 1 101% Verdadeiro'e'Falso'na'linguagem'C' Expressão'lógica' Expressão'envolvendo'dados'e/ou'operadores'aritméPcos'e/ou'operadores'relacionais'e/ou' operadores'lógicos.' A'avaliação'de'uma'expressão'lógica'produz'um'valor'booleano'(verdadeiro' ou'falso),'que'é'converpdo'para'um'valor'numérico:'' 0,'se'a'expressão'for'avaliada'como'falsa.' 1,'se'a'expressão'for'avaliada'como'verdadeira.' Generalizando...' Qualquer'valor'ou'expressão'diferente'de'zero'será'considerada'como'verdadeira.' Qualquer'valor'ou'expressão'igual'à'zero'será'considerada'como'falsa.' 102%
Exemplo' Sendo'a'='3,'b'='1'e'c'=' 1,'determine'o'valor'da'seguinte'expressão:' ( ( (b + c <= a) +!(2*b) ) && c ) (3 -!c + 1)' SubsPtuindo'os'valores'de'a,'b'e'c:' ( ( (1 + (-1) <= 3) +!(2*(1) ) && (-1) ) (3 -!(-1) + 1) ( ( (0 <= 3) +!(2) ) && (-1) ) (3-0 + 1) ( ( 1 + 0 ) && (-1) ) 4 ( 1 && (-1) ) 4 Portanto'a'expressão'é'verdadeira.' 1 4 1 103% Estrutura'condicional'simples'if()' if() Estrutura'uPlizada'para'avaliar'uma'condição'simples.' A'sintaxe'da'estrutura'if()'é:' if (expressão) // comandos a serem executados se a expressão for verdadeira. Atenção' Não'se'deve'usar' ; 'após'o'if().' 104%
A'importância'dos'delimitadores'de'bloco''e' As'instruções'que'deverão'ser'executadas,'no'caso'da'expressão'da' estrutura'if()'ser'avaliada'como'verdadeira,'deverão'ser'escritas'dentro' de'um'bloco'delimitado'pelos'símbolos''e'.' Dica'importante' Para'facilitar'a'visualização,'os'comandos'dentro'de'um'bloco'também'devem'ser'recuados.' A'omissão'dos'símbolos''e''só'será'permiPda'se'o'bloco'de'instruções'se' consptuir'de'apenas'1'comando.' No'caso'da'expressão'da'estrutura'if()'ser'considerada'falsa,'todo'o' bloco'de'comandos'será'ignorado'e'o'programa'prossegue'a'parpr'do' primeiro'comando'após'o'bloco.'' 105% Exemplo:'bloco'de'comandos' Considere'o'seguinte'trecho'de'código:' aprovado = 0; if (media >= 7.0) aprovado = 1; puts("parabéns!!!"); if (aprovado == 0) puts("você foi reprovado!"); E'se'os'delimitadores'de'bloco'do'primeiro'if()'forem'removidos?' Se'a'expressão'media >= 7.0'for'verdadeira...' o'aluno'será'considerado'aprovado'e'será'parabenizado.' Se'a'expressão'media >= 7.0'for'falsa...' o'aluno'não'será'considerado'aprovado,'e'ainda'será'parabenizado'por'ter'sido'reprovado.' 106%
Estrutura'condicional'simples'if() Exemplo:'Ler'um'número'inteiro'e'informar'se'o'mesmo'é'par.' #include <stdio.h> #include <stdlib.h> int main() int a; printf("digite um número inteiro: "); scanf("%d", &a); if (a % 2 == 0) printf("o numero digitado é par.\n"); 107% Estrutura'condicional'simples'if() Exemplo:'Ler'os'coeficientes'da'função'de'2º'grau'f(x)'='ax 2 '+'bx'+'c'e' calcular'as'raízes'reais,'caso'existam.' #include <stdio.h> #include <stdlib.h> #include <math.h> int main() float a, b, c, delta, x1, x2; printf("digite os coeficientes da equacao ax^2 + bx + c = 0: "); scanf("%f %f %f", &a, &b, &c); delta = b*b 4*a*c; if (delta >= 0) x1 = (-b + sqrt(delta))/(2*a); x2 = (-b sqrt(delta))/(2*a); printf("as raizes reais sao:\n x1 = %f\n x2 = %f\n", x1, x2); 108%
Estrutura'condicional'simples'if()' Exemplo:'Ler'3'valores'numéricos'disPntos'e'exibir'o'maior'deles.' #include <stdio.h> #include <stdlib.h> int main() float a, b, c; float maior; printf("digite 3 números: "); scanf("%f %f %f", &a, &b, &c); if ( a > b && a > c ) maior = a; if ( b > a && b > c ) maior = b; if ( c > a && c > b ) maior = c; printf("o maior numero digitado é %f\n", maior); 109% Estrutura'condicional'simples'if()' Exemplo:'Verificar'se'um'número'real'x'pertence'ao'intervalo'[ 1,'1].' Versão'1:'testa'se'está'dentro.' #include <stdio.h> #include <stdlib.h> int main() float x; printf("digite um número: "); scanf("%f", &x); if (x >= -1 && x <= 1) printf("pertence.\n ); Versão'2:'testa'se'não'está'fora.' #include <stdio.h> #include <stdlib.h> int main() float x; printf("digite um número: "); scanf("%f", &x); if (!(x < -1 x > 1) ) printf("pertence.\n ); 110%
Estrutura'condicional'composta'if()-else' if()-else Estrutura'uPlizada'para'avaliar'uma'condição'composta.' A'sintaxe'da'estrutura'if()-else'é:' if (expressão) // comandos a serem executados se a expressão for verdadeira. else // comandos a serem executados se a expressão for falsa. Atenção' Não'se'deve'usar' ; 'após'o'if(),'nem'após'o'else.' 111% Estrutura'condicional'composta'if()-else Exemplo:'Ler'um'número'inteiro'e'informar'se'o'mesmo'é'par'ou'ímpar.' #include <stdio.h> #include <stdlib.h> int main() int a; printf("digite um número inteiro: "); scanf("%d", &a); if (a % 2 == 0) printf("o numero digitado é par.\n"); else printf("o numero digitado é impar.\n"); 112%
Estrutura'condicional'composta'if()-else #include <stdio.h> #include <stdlib.h> #include <math.h> int main() float a, b, c, delta, x1, x2; printf("digite os coeficientes da equacao ax^2 + bx + c = 0: "); scanf("%f %f %f", &a, &b, &c); delta = b*b 4*a*c; if (delta >= 0) x1 = (-b + sqrt(delta))/(2*a); x2 = (-b sqrt(delta))/(2*a); printf("as raizes reais sao:\n x1 = %f\n x2 = %f\n", x1, x2); else printf("delta = %f\n", delta); printf("a funcao nao possui raizes reais\n"); 113% Estrutura'condicional'composta'if()-else' Exemplo:'Para'valores'de'a,'b'e'c'informados'pelo'usuário,'verifique'se'a' expressão'abaixo'é'verdadeira'ou'falsa:'' (!(2*b!= c) == b && a b >=!c) (b - a == 4*c) #include <stdio.h> #include <stdlib.h> int main() float a, b, c; printf("informe os valores de a, b e c: "); scanf("%f %f %f", &a, &b, &c); if ( (!(2*b!= c) == b && a b >=!c) (b - a == 4*c) ) printf("a expressão é verdadeira.\n"); else printf("a expressão é falsa.\n"); 114%
if()' 'if()-else Média'(versão'Tropa!de!Elite)' Leia'os'valores'das'4'notas'e'calcule'a'média'aritméPca'M.'Se'M'for'maior'ou'igual'a'7.0'exiba'a' mensagem' Aprovado.'Caso'contrário,'se'M'for'maior'ou'igual'a'5.0,'exiba'a'mensagem' Realizar'Prova'P5,'senão'exiba'a'mensagem' Vai'voltar'pro'saco.' if ( M >= 7.0 ) printf("aprovado.\n"); if ( M >= 5.0 && M < 7.0 ) printf("realizar Prova P5.\n"); if ( M < 5.0 ) printf("vai voltar pro saco.\n"); Neste'exemplo,'mesmo'que'a'média'M'seja'maior'ou'igual'a'7.0'no' primeiro'teste,'o'programa'ainda'irá'executar'os'outros'2'testes' (desnecessário).' 115% Aninhamento' Técnica'de'seqüenciar'os'testes'de'modo'a'melhorar'o'desempenho'do' programa.' expressão1' expressão2' comandos' executados'se' a'expressão1' for'verdadeira' comandos' executados'se' a'expressão2' for'verdadeira' comandos' executados'se' a'expressão2' for'falsa' 116%
Aninhamento' Se'a'média'M'for'maior'ou'igual'a'7.0,'não'há'necessidade'de'realizar' outros'testes.' if ( M >= 7.0 ) printf("aprovado.\n"); else if ( M >= 5.0 && M < 7.0 ) printf("realizar Prova 5.\n"); else printf("vai voltar pro saco.\n"); Atenção' Uma'cláusula'else sempre'pertence'ao'if'imediatamente'anterior.'caso'isso'não'for' desejável,'devetse'uplizar'os'delimitadores'de'bloco''e'.' 117% Aninhamento' Exemplo:'Ler'2'números'inteiros'e'exibir'o''maior'deles.' 118%
Aninhamento' Exemplo:'Ler'3'números'inteiros'disPntos'e'exibitlos'em'ordem'crescente.' 119% Aninhamento' Exemplo:'Ler'uma'nota'e'exibir'o'conceito'correspondente.' 120%
Aninhamento:'outra'versão O'usuário'poderá'escolher'qualquer'opção,'pressionando'as'teclas' numéricas.'a'opção'selecionada'pelo'usuário'será'lida'como'um'caractere.' 121% Aninhamento:'versão'else-if()' Muda'apenas'a'forma'de'organizar'os'comandos'da'estrutura'if()-else.' 122%
A'estrutura'condicional'múlPpla'switch() O'aninhamento'de'várias'estruturas' compostas'if()-else'(ou'elseif)'permite'o'tratamento'de' expressões'condicionais'que' permitem'mais'de'duas'alternapvas.' switch(expressão) case constante1: //comandos1 break; case constante2: //comandos2 break; Se'a'expressão'resultar'em'um'valor' do'ppo'int%ou'char,'é'possível' uplizar'a'estrutura'condicional' múlppla'switch().'... case constanten: //comandosn break; default: //comandos 123% Funcionamento'da'estrutura'switch() 1. A'expressão'é'avaliada.' 2. O'fluxo'de'execução'é'desviado'para'o'rótulo'case cujo'valor'equivale' ao'da'expressão.'serão'executados'todos'os'comandos'até'que'seja' encontrado'o'comando'break.' 3. A'execução'do'comando'break desvia'o'fluxo'de'execução'para'o' primeiro'comando'após'a'estrutura'switch().' 4. Se'nenhum'case corresponde'ao'valor'da'expressão,'então'o'fluxo'de' execução'será'desviado'para'o'rótulo'default (opcional).'' 124%
Menu'de'opções:'versão'switch() char op; puts("comandos do sistema operacional:\n"); puts(" [1] Exibir o conteudo da pasta local"); puts(" [2] Alterar a data do sistema"); puts(" [3] Alterar a hora do sistema"); puts(" [4] Limpar a tela de execucao"); puts(" [5] Terminar a execucao do programa\n"); printf("opcao> "); scanf("%c", &op); switch( op ) case '1': system("dir /P"); break; case '2': system("date"); break; case '3': system("time"); break; case '4': system("cls"); break; case '5': exit(0); break; default : printf("opcao invalida!\n"); 125% O'comando'break Cuidado!' A'omissão'do'comando'break causará'a'execução'dos'case s'subseqüentes.' 126%