BC & T Universidade Federal do ABC ESTRUTURAS DE CONTROLE Estruturas de controle permitem o controle do fluxo de execução dos comandos Vamos analisar as seguintes estruturas de controle: seqüencial desvio simples desvio composto repetição ESTRUTURA SEQÜENCIAL Uma estrutura seqüencial é um conjunto de comandos que serão executados em uma seqüência linear, de cima para baixo Os comandos serão executados na mesma ordem em que foram escritos Convencionaremos que os comandos serão seguidos por ponto-e-vírgula (;) C1; C2; ... Cn; ESTRUTURA SEQÜENCIAL Assim, o algoritmo de SOMA, escrito em pseudocódigo ficaria: Algoritmo Soma início inteiro: x,y,soma; leia (x, y); soma x + y; escreva (soma); fimalgoritmo. DESVIO CONDICIONAL Desvio Condicional Desvio Condicional Simples Desvio Condicional Composto IF...ELSE (Encadeado) Leituras sugeridas. DESVIO CONDICIONAL Um desvio condicional é usado para decidir se um conjunto de instruções deve, ou não, ser realizado verdadeiro media >=7 Imprimir “Aprovado” falso Necessário sempre que os programas encontrem seqüências alternativas de ações, dependendo do valor de determinada condição DESVIO CONDICIONAL SIMPLES No desvio condicional simples uma condição é avaliada e, se o resultado for verdadeiro, um conjunto de instruções é executado Pseudocódigo se (<condição>) então <instruções> fimse DESVIO CONDICIONAL SIMPLES Exemplo: Se a média das notas do aluno for maior Pseudocódigo ou igual a 7, imprimir “Aprovado” se (<condição>) então <instruções> fimse verdadeiro media >=7 falso Imprimir “Aprovado” se ( media >= 7.0 ) então escreva( “Aprovado” ); fimse DESVIO CONDICIONAL SIMPLES A seguir tem-se a sintaxe em Java para o desvio condicional simples: Java Pseudocódigo se (<condição>) então <instruções> fimse if (<condição>){ <instruções>; } if (<condição>) <instrução>; DESVIO CONDICIONAL SIMPLES se ( media >= 7.0 ) Pseudocódigo então escreva( “Aprovado” ); fimse if ( media >= 7.0 ) Java // Não é padrão do Java System.out.println( “Aprovado” ); if ( media >= 7.0 ) { System.out.print( “O Aluno está ” ); System.out.println( “Aprovado” ); } // fim do bloco if DESVIO CONDICIONAL SIMPLES Supondo serem N1, N2, N3, N4 as quatro notas bimestrais de um aluno, podemos avaliar sua situação quanto à aprovação, nesse caso, obtida atingindo-se média superior ou igual a 7. Pseudocódigo se <condição> então <instruções> fimse DESVIO CONDICIONAL SIMPLES Algoritmo Média aritmética com aprovação início real: N1, N2, N3, N4,//notas bimestrais MA; //média anual leia (N1, N2, N3, N4); //entrada de dados MA (N1 + N2 + N3 + N4)/4; //processamento escreva(MA); se ( MA >= 7) então escreva (“Aluno aprovado!”); fimse; fimAlgoritmo. DESVIO CONDICIONAL COMPOSTO No desvio condicional composto, uma condição é avaliada e, se o resultado for verdadeiro, um conjunto de instruções é executado. Caso contrário, outro conjunto de instruções será executado verdadeiro Media >=7 falso Imprimir “Reprovado” Imprimir “Aprovado” DESVIO CONDICIONAL COMPOSTO Pseudocódigo se (<condição> ) então início <instruções> fim senão início <instruções> fim fimse DESVIO CONDICIONAL COMPOSTO Exemplo: Se a média das notas do aluno for maior ou igual a 7, imprimir “Aprovado”. Caso contrário, imprimir “Reprovado” se ( media >= 7.0 ) então escreva( “Aprovado” ); senão escreva( “Reprovado” ); fimse DESVIO CONDICIONAL COMPOSTO A seguir tem-se a sintaxe em Java para o desvio Java condicional composto: Pseudocódigo se (<condição> ) então início <instruções> if ( <condição> ) { <instruções>; } else { <instruções>; } fim senão início <instruções> fim fimse if ( <condição> ) <instrução>; else <instrução>; DESVIO CONDICIONAL COMPOSTO Nesse novo algoritmo vamos incluir a informação que provém do resultado falso da condição (MA >=7), ou seja, a reprovação do aluno. Pseudocódigo se (<condição> ) então início <instruções> fim senão início <instruções> fim fimse Java if (<condição>){ <instruções>; } else { <instruções>; } DESVIO CONDICIONAL COMPOSTO Algoritmo Média aritmética com aprovação e reprovação início real: N1, N2, N3, N4,//notas bimestrais MA; //média anual leia (N1, N2, N3, N4); //entrada de dados MA (N1 + N2 + N3 + N4)/4; //processamento escreva(“Média anual = ”, MA); se ( MA >= 7) então início escreva (“Aluno aprovado!”); escreva (“Parabéns!”); fim; senão início escreva (“Aluno reprovado!”); escreva (“Estude mais!”); fim; fimse; fimalgoritmo. IF…ELSE ANINHADOS (ENCADEADOS) Seqüências de estruturas If-Else são usadas para o teste de múltiplos casos if ( media >= 9.0 ){ System.out.print(“Conceito A”); } else { if ( media >= 7.0 ){ System.out.print(“Conceito B”); } else { if ( media >= 6.0 ){ System.out.print(“Conceito C”); } else { System.out.print(“Conceito D”); } } } IF…ELSE ANINHADOS (ENCADEADOS) Algoritmo Média aritmética com conceito início real: N1, N2, N3, N4,//notas bimestrais MA; //média anual leia (N1, N2, N3, N4); //entrada de dados MA (N1 + N2 + N3 + N4)/4; //processamento escreva(“Média anual = ”, MA); se ( MA >= 9) então início escreva (“Conceito A”); fim senão se ( MA >= 7) então início escreva (“Conceito B”); fim IF…ELSE ANINHADOS (ENCADEADOS) senão se ( MA >= 6) então início escreva (“Conceito C”); fim; senão início escreva (“Conceito D”); fim; fimse; fimse; fimse; fimalgoritmo Leituras Sugeridas •Deitel, H. M. e Deitel, P. J.; JAVA – Como Programar; 6ª edição, Editora Pearson Prentice-Hall, 2005; •Forbellone, A. L. V.; Eberspächer, H. F.; Lógica de Programação - A Construção de Algoritmos e Estruturas de Dados; 3ª edição, Editora Pearson Prentice-Hall, 2005