\documentclass[apostila.tex]{subfiles} \begin{document} \chapter{Controle de fluxo do programa} \section{Instrução break} A instrução break pode ser colocada dentro de uma repetição (for, while ou do...while) ou ainda dentro de um switch (veja mais adiante). Quando a instrução break é encontrada dentro de uma repetição, a execução da repetição na qual ele se encontra é encerrada. \begin{lstlisting} for(contagem = 0; contagem < 10; contagem++) { if ( contagem == 5 ) // quando contagem for 5 break; // interrompe o loop } \end{lstlisting} \section{Instrução continue} Como a instrução break, a instrução continue também só pode ser colocada dentro de um ``loop'' for, while ou do...while. Quando uma instrução continue é executada, a próxima iteração do loop começa imediatamente, ou seja, as instruções existentes entre a instrução continue e o final do ``loop'' não são êxecutadas. \section{Instrução return} A instrução return termina a execução da função em que se encontra o programa e faz com que a execução continue na instrução seguinte à chamada da função. Esta instrução aceita um único argumento, que pode ser qualquer expressão válida em C, cujo valor é retornado. exemplo: \begin{lstlisting} int MAX( int a, int b ) { if ( a > b ) return(a); else return(b); } \end{lstlisting} \section{Função exit()} A função exit(), que pertence à biblioteca padrão stdlib.h, termina a execução do programa e retorna o controle ao sistema operacional. Esta função aceita um único argumento do tipo int, que é passado de volta ao sistema operacional para indicar o sucesso ou fracasso do programa. \section{Instrução switch} A instrução switch é semelhante à instrução if , ou seja, a partir da avaliação de uma expressão a instrução switch pode realizar diferentes ações e, ao invés do if, não está restrita a apenas duas ações. A forma geral é a seguinte: \begin{lstlisting} switch (expressão) { case gabarito1 : instruções; break; case gabarito2 : instruções; break; ... case gabaritoN : instruções; break; default: instruções; } \end{lstlisting} Nesta instrução, expressão é qualquer expressão que resulte em um valor inteiro do tipo long, int, ou char. A instrução switch avalia a expressão e compara o seu valor com os gabaritos após cada item case; então: \begin{itemize} \item Se for encontrada uma equivalência entre expressão e um dos gabaritos, a execução é transferida para as instruções subsequentes ao item case. \item Se nenhuma equivalência for encontrada, a execução é transferida para as instruções subsequentes ao item default, que é opcional. \item Se nenhuma equivalência for encontrada e não houver um item default, a execução é transferida para a primeira instrução subsequente à chave de encerramento da instrução switch. \end{itemize} Observe que ao término de cada item case aparece uma instrução break. Na verdade o break é opcional. Sua funcionalidade é a mesma quando utilizado dentro de repetições, ou seja, o break faz com que a instrução switch seja terminada. Se ao final do corpo de comandos de um case não houver um break, todos os gabaritos abaixo serão executados até que seja encontrado um break ou seja atingido o final do switch. \begin{lstlisting} // Exemplo do uso da instrucao switch #include #include void main() { char vogal; printf("Digite uma vogal: \n"); scanf ("%c",&vogal); // le uma letra switch (vogal) { case 'a': vogal='e'; break; case 'e': vogal='i'; break; case 'i': vogal='o'; break; case 'o': vogal='u'; break; case 'u': vogal='a'; break; default : printf("Erro! A letra nao e vogal"); exit(0); } printf ("a vogal subsequente e %c \n",vogal); } \end{lstlisting} \section{Exercício} Esse exercício consiste em desenvolver uma pequena calculadora, com várias opções que serão selecionadas em um menu. O menu principal deverá ser o seguinte: \begin{verbatim} 1. Soma n números 2. Multiplica n números 3. Divide a/b 4. Subtração de n números 5. Calcular a^b 6. Calcular a média aritmética de n números 7. Sair \end{verbatim} Cada opção deverá comportar-se da seguinte forma: \begin{itemize} \item requisitar quantos números farão parte da operação (quando aplicável); \item requisitar cada entrada; \item ao final das iterações, imprimir o resultado e aguardar uma tecla; \item retornar ao menu principal. \end{itemize} \end{document}