Baixe o app para aproveitar ainda mais
Prévia do material em texto
CURSO: SISTEMAS DE INFORMAÇÃO DISCIPLINA: ALGORITMOS PROFESSORA: GELLARS TAVARES Algoritmos – Professora Gellars Tavares – Ano 2010 1 AULA 3: ESTRUTURAS DE SELEÇÃO INTRODUÇÃO: Como visto na conceituação de algoritmo, o mesmo é preponderantemente seqüêncial, ou seja, todas as suas instruções serão executadas, uma única vez, uma após a outra. Entretanto, a complexidade inerente aos problemas a serem resolvidos pelo computador implica na necessidade de estruturas mais complexas para que algoritmos possam ser projetados para a sua solução. Durante o desenvolvimento de um algoritmo, frequentemente existe a necessidade de se tomar decisões e excutar ou não determinadas instruções, de acordo com o panorama atual de alguns dados. Para tanto foram projetadas as instruções de seleção ou decisão. Estas permitem definir um conjunto de instruções que poderão ser executadas ou não, dependendo do resultado de um teste realizado em cima de alguns dados. Desta forma, algumas instrução serão ou não executadas durante a execução do programa, interferindo diretamente no andamento do programa, conduzindo a algoritmos e programas que não são totalmente sequenciais. As instruções de seleção ou decisão encontradas no pseudocódigo são as seguintes: estrutura de seleção simples, estrutura de seleção composta, estrutura de seleção encadeada e estrutura de seleção de múltipla escolha. ESTRUTURA DE SELEÇÃO SIMPLES: Esta estrutura de seleção permite definir um único conjunto de instruções ou comandos que será ou não executado em função do resultado da realização de um teste sobre os dados. Sua sintaxe é dada a seguir: Algoritmo C++ Pascal SE <condição> ENTÃO <conjunto de instruções> FIM SE if <condição> <conjunto de instruções> if <condição> then <conjunto de instruções> Nesta estrutura, um teste sobre os dados é executado através da especificação de uma expressão a ser avaliada. Tal expressão é definida pela cláusula <condição>. Esta, por sua vez, será avaliada e, em resultando um valor verdadeiro, o <conjunto de instruções> será executado. Caso o resultado da avaliação da <condição> não seja verdadeiro, serão executadas as instruções imediatamente seguintes ao término da estrutura, dada pela palavra reservada FIM SE. Com exemplo desta estrutura, poderíamos ter o seguinte trecho de algoritmo: Algoritmo C++ Pascal SE (x > 5) ENTÃO x Å x + 1; escreva “O valor de x é igual a “, x; FIM SE if (x > 5) x = x + 1; cout<< “O valor de x é igual a “<< x; if (x > 5) then x := x + 1; write( ‘O valor de x é igual a ‘, x); CURSO: SISTEMAS DE INFORMAÇÃO DISCIPLINA: ALGORITMOS PROFESSORA: GELLARS TAVARES Algoritmos – Professora Gellars Tavares – Ano 2010 2 ESTRUTURA DE SELEÇÃO COMPOSTA: Uma estrutura de seleção composta permite definir dois conjuntos de instruções passíveis de execução. Estes dois conjuntos de instruções, por sua vez, são excludentes, ou seja, somente um dos dois será executado. A escolha de qual dos dois conjuntos de instruções será executado dependerá também do resultado da avaliação de um teste sobre os dados. Desta forma, um deles será executado quando o resultado da avaliação do teste for verdadeiro, enquanto o outro somente será executado quando o resultado da avaliação do teste for falso. Tal instrução possui a seguinte sintaxe: Algoritmo C++ Pascal SE <condição> ENTÃO <conjunto de instruções1> SENÃO <conjunto de instruções2> FIM SE if <condição> <conjunto de instruções1> else <conjunto de instruções2> if <condição> then <conjunto de instruções1> else <conjunto de instruções2> Alguns autores consideram a estrutura de seleção composta e a estrutura de seleção simples como uma estrutura única, tendo a cláusula SENÃO como opcional. Na estrutura de seleção composta, um teste sobre os dados, especificado na cláusula <condição> será realizado. Caso o resultado da avaliação deste teste seja verdadeiro, as instruções constantes no <conjunto de instruções1> serão executadas sendo, em caso contrário (o resultado da avaliação do teste é falso) as instruções constantes no <conjunto de instruções2> serão executadas. Após a execução de um dos dois conjuntos de instruções, o fluxo de execução do algoritmo segue normalmente com as instruções imediatamente seguintes ao final da estrutura, dada pela palavra reservada FIM SE. Como exemplo, pode-se ter o seguinte trecho de algoritmo: Algoritmo C++ Pascal SE (x > 5) ENTÃO x Å x + 1; escreva “O valor de x é igual a “, x; SENÃO y Å y + 1 ; escreva “O valor de y é igual a “, y ; FIM SE if (x > 5) { x = x + 1; cout<< “O valor de x é igual a “<< x<<”\n”; } else { y = y + 1 ; cout<< “O valor de y é igual a “<< y<< “\n“ ; } if (x > 5) begin x := x + 1; writeln (‘O valor de x é igual a ‘ , x); end else begin y := y + 1 ; writeln (‘O valor de y é igual a ‘ , y) ; end CURSO: SISTEMAS DE INFORMAÇÃO DISCIPLINA: ALGORITMOS PROFESSORA: GELLARS TAVARES Algoritmos – Professora Gellars Tavares – Ano 2010 3 ESTRUTURA DE SELEÇÃO ENCADEADA: Uma estrutura de seleção encadeada nada mais é do que uma combinação entre as estruturas de seleção simples e compostas, possibilitando, desta forma, a especificação de vários conjuntos de instruções passíveis de execução. Entretanto, da mesma forma como na estrutura de seleção composta, somente um dos conjuntos de instruções especificados será executado, dependendo do resultado de testes sobre os dados. Um exemplo de sintaxe para este estrutura é dado abaixo: Algoritmo C++ Pascal SE <condição 1> ENTÃO SE <condição 2> ENTÃO <conjunto de instruções1> SENÃO <conjunto de instruções2> FIM SE SENÃO SE <condição 3> ENTÃO <conjunto de instruções3> FIM SE FIM SE if <condição 1> if <condição 2> <conjunto de instruções1> else <conjunto de instruções2> else if<condição3> <conjunto deinstruções3> if <condição 1> then if <condição 2> then <conjuntodeinstruções1> else <conjunto de instruções2> else if <condição 3> then <conjunto de instruções3> O exemplo acima combina duas estruturas de seleção composta, juntamente com uma estrutura de seleção simples, permitindo a especificação de três conjuntos de instruções. Entretanto, somente um deles deverá ser executado. A combinação de estrutras de seleção simples e composta é livre, desde que se observe a hierarquização das mesmas. Um exemplo deste tipo de combinação pode ser visto no trecho abaixo: Algoritmo C++ Pascal SE (x > 5) ENTÃO SE (nome = “Luiz”) ENTÃO escreva “Nome = “, nome; FIM SE SENÃO SE (y > 5) ENTÃO x Å x + 1; escreva “O valor de x é igual a “, x; SENÃO SE (k < 4) ENTÃO y Å y + 1 ; escreva “O valor de y é igual a “, y ; FIM SE FIM SE FIM SE if (x > 5) if (nome == “Luiz”) cout<<”Nome = “ << nome; else if (y > 5) { x = x + 1; cout<<“O valor de x é igual a “<< x; } else if (k < 4) { y = y + 1 ;cout<<“O valor de y é igual a “<< y ; } if (x > 5) then if (nome = ‘Luiz’ ) write(‘Nome = ‘, nome); else if (y > 5) begin x := x + 1; write(‘O valor de x é igual a ‘, x); end else if (k < 4) begin y = y + 1 ; write(‘O valor de y é igual a ‘, y) ; end CURSO: SISTEMAS DE INFORMAÇÃO DISCIPLINA: ALGORITMOS PROFESSORA: GELLARS TAVARES Algoritmos – Professora Gellars Tavares – Ano 2010 4 ESTRUTURA DE SELEÇÃO DE MÚLTIPLA ESCOLHA: A seleção escolha-caso permite inserirmos múltiplas condições com apena uma teste. A vantagem é que o algoritmo poderá descrever vários blocos de execução e o teste, não necessariamente será lógico. Um exemplo de sintaxe para este estrutura é dado abaixo: Algoritmo C++ Pascal ESCOLHA <variável> CASO <condição 1> : <comando>; CASO <condição 2> : <comando>; CASO <condição 3> : <comando>; SENÃO : <comando>; FIM ESCOLHA switch (variável) { case<condição 1> : <comando>; case<condição 2> : <comando>; case<condição 3> : <comando>; default : <comando>; } case (variável) of <valor 1> : <comando>; <valor 2> : <comando>; <valor 3> : <comando>; else <comandos>; end; Como exemplo, pode-se ter o seguinte trecho de algoritmo: Algoritmo C++ Pascal LEIA valor; ESCOLHA (valor) CASO 1 : escreva “valor é 1; CASO 2 : escreva “valor é 1; CASO 3 : escreva “valor é 3; SENÃO : escreva “valor diferente de 1, 2 ou 3”; FIM ESCOLHA cin>>valor; switch (valor) { case 1 : cout<<”valor é 1”; case 2 : cout<<”valor é 2”; case 3 : cout<<”valor é 3”; default : cout<<”valor diferente de 1, 2 ou 3”; } readln(valor); case (valor) of 1 : writeln(‘valor é 1’); 2 : writeln(‘valor é 1’); 3 : writeln(‘valor é 1’); else writeln(‘valor é diferente de 1, 2 ou 3’); end;
Compartilhar