controle_fluxo.tex 4.56 KB
Newer Older
1 2 3 4 5
\documentclass[apostila.tex]{subfiles}


\begin{document}

6 7 8
\chapter{Controle de fluxo do programa}

\section{Instrução break}
9 10

A instrução break pode ser colocada dentro de uma repetição (for, while ou 
11 12 13
do...while) ou ainda dentro
de um switch (veja mais adiante).

14 15
Quando a instrução break é encontrada dentro de uma repetição, a execução da 
repetição na qual ele
16 17 18
se encontra é encerrada.

\begin{lstlisting}
19 20 21 22 23
for(contagem = 0; contagem < 10; contagem++)
{
	if ( contagem == 5 ) // quando contagem for 5 
		break; // interrompe o loop
}
24 25 26
\end{lstlisting}

\section{Instrução continue}
27 28 29

Como a instrução break, a instrução continue também só pode ser colocada 
dentro de um ``loop'' for,
30
while ou do...while. Quando uma instrução continue é executada, a próxima 
31 32 33
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
34 35 36
êxecutadas.

\section{Instrução return}
37 38 39 40

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 
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
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()}
58 59
A função exit(), que pertence à biblioteca padrão stdlib.h, termina a 
execução do programa e retorna o
60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117
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}
118
// Exemplo do uso da instrucao switch
119 120 121 122 123 124 125 126 127
#include <stdio.h>
#include <stdlib.h>

void main()
{
	char vogal;
	
	printf("Digite uma vogal: \n");
	
128
	scanf ("%c",&vogal); // le uma letra
129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166
	
	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:

167
\begin{verbatim}
168 169 170 171
1. Soma n números
2. Multiplica n números
3. Divide a/b
4. Subtração de n números
172 173
5. Calcular a^b
6. Calcular a média aritmética de n números
174
7. Sair
175
\end{verbatim}
176 177 178 179 180 181 182 183 184 185 186

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}

187
\end{document}