programação estruturada aula 6 - comandos de controle · programa˘c~ao estruturada aula 6 -...

86
Programa¸ ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro ecnico em Telecomunica¸ oes 2 o Ano CEFET/RJ - Centro Federal de Educa¸ ao Tecnol´ ogica Celso Suckow da Fonseca Campus Petr´ opolis 2017

Upload: trandung

Post on 02-Dec-2018

223 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

Programacao Estruturada Aula 6 - Comandos de controle

Prof. Luis Carlos Retondaro

Tecnico em Telecomunicacoes2o Ano

CEFET/RJ - Centro Federal de Educacao Tecnologica Celso Suckow da Fonseca

Campus Petropolis

2017

Page 2: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

1

Sumario

Page 3: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

2

Comandos de controle

A linguagem C possui diversos comandos de controle que podem serdivididos nos seguintes grupos:

Condicional (selecao): if e switch;

Repeticao (laco): for, while e do while;

Desvio (salto): break, continue, goto e return;

Rotulo: case, default (discutidos no switch) e o label (discutido nogoto);

Page 4: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

3

Comandos de controle

Muitos comandos em C utilizam um teste condicional que determina ocurso da acao;

Uma expressao condicional tem como resultado final um valor verdadeiroou falso;

Em C (ao contrario de muitas outras linguagens) um valor verdadeiro equalquer valor diferente de zero, incluindo numeros negativos e um valorfalso e zero;

Esse metodo para verdadeiro e falso permite a implementacao eficiente deuma ampla gama de rotinas.

Page 5: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

4

Comandos condicionais

Um comando condicional e aquele que permite decidir se umdeterminado bloco de comandos deve ou nao ser executado, a partir doresultado de uma expressao relacional ou logica.

Page 6: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

5

Comandos condicionais

Bloco de comandos

E um conjunto de instrucoes agrupadas;

Essas instrucoes sao limitadas pelos caracteres { e }.

main ( ) {i n t a ;a =1;p r i n t f ( ”V a l o r da v a r i a v e l a : %d\n ” , a ) ;

}

Page 7: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

6

O comando if · · · then

Os comandos condicionais, permitem escolher o fluxo do programa apartir de uma ou mais alternativas;

A selecao e baseada no valor de uma expressao de controle;

O C suporta dois tipos de comandos de selecao (if e switch), alem disso ooperador ? e uma alternativa ao if em certas circunstancias;

O comando if · · · then executa uma secao do codigo se uma condicionalfor avaliada como true;

Page 8: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

7

O comando if · · · then

Page 9: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

8

O comando if · · · then

Forma geral do comando condicional if...then:

i f ( e x p r e s s ao ) {comando ( s ) ;

}

Onde comando pode ser uma unica linha de instrucao ou um bloco deinstrucoes;

As chaves de abertura { e fechamento } do bloco if · · · then sao opcionaisse a secao do codigo a ser executada no caso true tiver somente umaunica instrucao.

Page 10: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

9

O comando if · · · then

Exemplo: programa que determina se um numero e par.

#i n c l u d e <s t d i o . h>

v o i d main ( ) {

i n t num ;p r i n t f ( ”D i g i t e um v a l o r \n ”) ;s c a n f ( ”%d ”,&num) ;

i f ( ( num%2) !=0){p r i n t f ( ”O numero %d e ı mpar\n ” ,num) ;

}}

Page 11: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

10

O comando if · · · then

Sabendo como o C representa valores verdadeiros ou falsos o programapode ser modificado da forma:

#i n c l u d e <s t d i o . h>

v o i d main ( ) {

i n t num ;p r i n t f ( ”D i g i t e um v a l o r \n ”) ;s c a n f ( ”%d ”,&num) ;

i f (num % 2) {p r i n t f ( ”O numero %d e ı mpar\n ” ,num) ;

}}

Page 12: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

11

O comando if · · · then

Exemplo: programa que le a nota do aluno e verifica se ele esta aprovado.

// v e r i f i c a aprova c ao do a l u n o

#i n c l u d e <s t d i o . h>

v o i d main ( ) {

f l o a t notaAluno ;p r i n t f ( ”D i g i t e a nota do a l u n o \n ”) ;s c a n f ( ”%f ”,& notaAluno ) ;

//A c l a u s u l a ” i f ”: a nota deve s e r maior que 60i f ( notaAluno > 60) {

// A c l a u s u l a ”then ”: a p r o v e o a l u n op r i n t f ( ”Aluno aprovado \n ”) ;

}}

Page 13: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

12

O comando if · · · then

Resultado da execucao:

// Execu c ao 1

D i g i t e a nota do a l u n o55

// Execu c ao 2

D i g i t e a nota do a l u n o7 7 . 8 9Aluno aprovado

Page 14: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

13

O comando if · · · then

Exemplo: programa que le duas notas e com a media verifica a aprovacaodo aluno.

// E s t r u t u r a C o n d i c i o n a l#i n c l u d e<s t d i o . h>

i n t main ( ) {f l o a t nota1 , nota2 ;f l o a t media ;

p r i n t f ( ”I n f o r m e a nota da P1 :\ n ”) ;s c a n f ( ”%f ”,& nota1 ) ;p r i n t f ( ”I n f o r m e a nota da P2 :\ n ”) ;s c a n f ( ”%f ”,& nota2 ) ;media = ( nota1+nota2 ) / 2 ;p r i n t f ( ”Sua media e %.2 f \n\n ” , media ) ;

// Aluno aprovado com a c o n d i c ao s e a media e maior ou i g u a l 6i f ( media >= 60)

p r i n t f ( ”Parabens ! Voce e s t a aprovado !\ n ”) ;r e t u r n ( 0 ) ;

}

Page 15: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

14

O comando if · · · then

Resultado da execucao:

I n f o r m e a nota da P1 :5 0 . 3I n f o r m e a nota 2 :7 0 . 5Sua media e 6 0 . 4 0

Parabens ! Voce e s t a aprovado !

Page 16: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

15

O comando if · · · then · · · else

A instrucao if · · · then · · · else permite especificar uma acao que serarealizada quando a condicao for verdadeira e uma acao diferente quando acondicao for falsa.

Page 17: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

16

O comando if · · · then · · · else

Exemplo de uso do comando if... then ...else

// E s t r u t u r a C o n d i c i o n a l Exemplo 2#i n c l u d e<s t d i o . h>

i n t main ( ) {f l o a t nota1 , nota2 ;f l o a t media ;

p r i n t f ( ”I n f o r m e a nota da P1 :\ n ”) ;s c a n f ( ”%f ”,& nota1 ) ;p r i n t f ( ”I n f o r m e a nota 2 :\ n ”) ;s c a n f ( ”%f ”,& nota2 ) ;media = ( nota1+nota2 ) / 2 ;p r i n t f ( ”Sua media e %.2 f \n\n ” , media ) ;// Aluno aprovado com a c o n d i c ao s e a media e maior ou i g u a l 6i f ( media >= 6)

p r i n t f ( ”Parabens ! Voce e s t a aprovado ! ”) ;e l s e

p r i n t f ( ”Voce e s t a de prova f i n a l !\ n ”) ;

r e t u r n ( 0 ) ;}

Page 18: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

17

O comando if · · · then · · · else

Resultado da execucao:

I n f o r m e a nota da P1 :5 0 . 7I n f o r m e a nota 2 :7 7 . 6Sua media e 6 4 . 1 5

Parabens ! Voce e s t a aprovado !

Page 19: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

18

O comando if · · · then · · · else

Se a expressao e verdadeira o(s) comando(s) que forma(m) o corpo do ife(sao) executado(s), caso contrario o bloco de comandos presente nocorpo do else sao executados;

Nunca ambos (if e else) serao executados!!!

O comando condicional que controla o if deve produzir um escalar (umnumero inteiro, um caractere ou um ponto flutuante);

E raro usar ponto flutuante para controlar um comando condicionalporque isso diminui consideravelmente a velocidade de execucao.

Page 20: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

19

ifs aninhados

Uma coisa muito comum em programacao e o teste de varias alternativas;

Para isso podemos usar uma construcao simples com ifs.

v o i d main ( ) {i n t r a ;p r i n t f ( ”D i g i t e o RA do a l u n o \n ”) ;s c a n f ( ”%d ” , &a ) ;i f ( r a ==10129)

p r i n t f ( ”Aluno Jo ao C a r l o s \n ”) ;i f ( r a ==33860)

p r i n t f ( ”Aluna A l i n e Costa \n ”) ;i f ( r a ==45693)

p r i n t f ( ”Aluno C r i s t i a n o S i l v a \n ”) ;i f ( . . .

. . .}

Page 21: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

20

ifs aninhados

Uma construcao comum e a aninhamento if-else-if:

Forma geral:

i f ( E x p r e s s ao )comando ;

e l s ei f ( e x p r e s s ao )

comando ;e l s e

i f ( E x p r e s s ao )comando ;...e l s e

comando ;

Page 22: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

21

ifs aninhados

Todos os testes serao executados!!!

Quando apenas uma de varias opcoes e verdadeira podemos usar aconstrucao if · · · then · · · else.

v o i d main ( ) {i n t r a ;p r i n t f ( ”D i g i t e o RA do a l u n o \n ”) ;s c a n f ( ”%d ” , &a ) ;i f ( r a ==10129)

p r i n t f ( ”Aluno Jo ao C a r l o s \n ”) ;e l s e i f ( r a ==33860)

p r i n t f ( ”Aluna A l i n e Costa \n ”) ;e l s e i f ( r a ==45693)

p r i n t f ( ”Aluno C r i s t i a n o S i l v a \n ”) ;e l s e i f ( . . .

. . .e l s e

}

Page 23: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

22

ifs aninhados

Note que o if e um comando como outro qualquer, e como tal podeaparecer dentro do bloco de comandos de outro if;

Um if aninhado e um comando if que e objeto de outro if ou else;

Em C um comando else sempre se refere ao comando if mais proximo queesta dentro do mesmo bloco do else e nao esta associado a outro if;

Exemplo:

i f ( i ) {i f ( j )

comando 1 ;i f ( k )

comando 2 ;e l s e

comando 3 ;} e l s e

comando 4 ;

Page 24: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

23

ifs aninhados

O padrao C ANSI especifica que pelo menos 15 nıveis de aninhamentopodem ser suportados;

Exemplo if aninhado:

#i n c l u d e <s t d i o . h>main ( ) {

char ch ;p r i n t f ( ”D i g i t e uma l e t r a e n t r e a e z : ”) ;ch = g e t c h a r ( ) ;i f ( ch >= ’ a ’ )

i f ( ch <= ’ z ’ )p r i n t f ( ”\nVoce d i g i t o u um c a r a c t e r !\ n ”) ;

}

O que acontece se o usuario digitar o caractere ′b′?

Page 25: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

24

ifs aninhados

As condicoes sao avaliadas de cima para baixo, assim que uma condicaoverdadeira e encontrada o comando associado a ela e executado e desviado resto do aninhamento;

Se nenhuma das condicoes for verdadeira, entao o ultimo else e executado,se o ultimo else nao esta presente entao nenhuma acao e executada.

#i n c l u d e <s t d i o . h>main ( ) {

f l o a t num1 , num2 ;char op ;p r i n t f ( ”\ n D i g i t e uma e x p r e s s ao no formato : num op num : ”) ;s c a n f ( ”%f %c %f ” , &num1 , &op , &num2 ) ;i f ( op == ’+ ’ )

p r i n t f ( ” = %f \n ” , num1+num2 ) ;e l s e i f ( op == ’−’ )

p r i n t f ( ” = %f \n ” , num1−num2 ) ;e l s e i f ( op == ’∗ ’ )

p r i n t f ( ” = %f \n ” , num1∗num2 ) ;e l s e i f ( op == ’ / ’ )

p r i n t f ( ” = %f \n ” , num1/num2 ) ;e l s e

p r i n t f ( ”Operador i n v a l i d o ! ! ! \ n ”) ;}

Page 26: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

25

ifs aninhados

Quando o comando 2 e executado?

i f ( cond1i f ( cond )

comando1 ;e l s e

comando2 ;

i f ( cond1 )i f ( cond2 )

comando1 ;e l s e

comando2 ;

i f ( cond1 ) {i f ( cond2 )

comando1 ;} e l s e

comando2 ;

Use chaves e identacao para deixar claro a qual bloco de comando(s)pertence cada comando!!!

Page 27: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

26

ifs aninhados

Resumo

Na construcao de ifs aninhados quando uma condicao e verdadeira,o bloco de comandos correspondente ao if “verdadeiro” seraexecutado;

Apos a execucao do bloco de comandos as outras alternativas naoserao testadas;

O ultimo else (sem if) pode ser executado como uma opcao padraoquando nenhuma das opcoes do if forem verdadeiras.

Page 28: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

27

O operador ? alternativo

Pode-se utilizar o operador ? em substituicao ao comando if-else;

O ? e denominado de operador ternario pois requer tres operandos. Formageral:

E x p r e s s ao 1 ? E x p r e s s ao 2 : E x p r e s s ao 3 ;

A expressao 1 e avaliada, se for verdadeira a Expressao 2 e executadasendo o resultado da expressao ? inteira. Se for falsa, entao a expressao 3e executada e se torna o valor da expressao.

x = 1 0 ;y = x > 9 ? 100 : 2 0 0 ;

// de modo s e m e l h a n t ex = 1 0 ;i f ( x > 9)

y = 1 0 0 ;e l s e

y = 2 0 0 ;

Page 29: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

28

O operador ? alternativo

Exemplo de uso do operador ?

#i n c l u d e<s t d i o . h>v o i d main ( ) {

i n t quad , i ;

p r i n t f ( ”D i g i t e um v a l o r i n t e i r o \n ”) ;s c a n f ( ”%d ”,& i ) ;quad = i > 0 ? i∗ i : −( i∗ i ) ;p r i n t f ( ”%d ao quadrado e %d\n ” , i , quad ) ;

}

O uso do operador ? nao e restrito a atribuicoes, pode-se usar qualquerexpressao ou funcao que nao retorne um void.

Page 30: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

29

A Expressao condicional

Nos comando condicionais pode-se usar qualquer expressao valida em C,isso significa que o programador nao fica restrito as expressoes envolvendoos operadores relacionais e logicos;

O programa precisa simplesmente chegar a um valor zero ou nao zero.

#i n c l u d e <s t d i o . h>v o i d main ( ) {

i n t a , b ;p r i n t f ( ”D i g i t e d o i s nu meros\n ”) ;s c a n f ( ”%d%d ”,&a ,&b ) ;i f ( b )

p r i n t f ( ”%d\n ” , a/b ) ;e l s e

p r i n t f ( ”Nao e x i s t e d i v i s ao por z e r o ! ! ! \ n ”) ;}

Page 31: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

30

O comando switch

O comando switch e um comando condicional de selecao multipla quetesta sucessivamente o valor de uma expressao contra uma lista deconstantes inteiras ou caracter;

Quando o valor coincide, os comandos associados aquela constante saoexecutados. Forma geral:

s w i t c h ( E x p r e s s ao ) {case c o n s t a n t e 1 :

sequ e n c i a de comandos ;break ;

case c o n s t a n t e 2 :sequ e n c i a de comandos ;break ;

.

.

.d e f a u l t :

sequ e n c i a de comandos ;}

Page 32: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

31

O comando switch

#i n c l u d e<s t d i o . h>v o i d main ( ) {

char c ;

p r i n t f ( ”1 . Chegar o r t o g r a f i a \n ”) ;p r i n t f ( ”2 . C o r r i g i r e r r o s de o r t o g r a f i a \n ”) ;p r i n t f ( ”3 . Most rar e r r o s de o r t o g r a f i a \n ”) ;p r i n t f ( ”P r e s s i o n e q u a l q u e r o u t r a t e c l a para abandonar \n ”) ;p r i n t f ( ”\n\n ∗∗∗ E n t r e com a op c ao d e s e j a d a \n ”) ;c = g e t c h a r ( ) ;s w i t c h ( c ) {

case ’ 1 ’ :c h e c a r o r t o g r a f i a ( ) ;break ;

case ’ 2 ’ :c o r r i g i r e r r o s ( ) ;break ;

case ’ 3 ’ :m o s t r a r e r r o s ( ) ;break ;

d e f a u l t :p r i n t f ( ”Nenhuma op c ao s e l e c i o n a d a !\ n ”) ;

}}

Page 33: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

32

O comando switch

O valor da expressao e testado, em ordem, contra os valores dasconstantes especificadas nos comandos case;

Quando uma conincidencia for encontrada, a sequencia de comandosassociada aquele case sera executada ate que o comando break ou o fimdo comando switch seja alcancado;

O comando default e executado se nenhuma coincidencia for encontrada;

O comando default e opcional, se nao estiver presente, nenhuma acao serarealizada se todos os testes falharem.

Page 34: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

33

O comando switch

O padrao ANSI C especifica que um comando switch pode ter pelo menos257 comandos case, na pratica o programador utilizara uma quantidademenor para obter mais eficiencia;

Embora case seja um rotulo, ele nao existe sozinho fora de um switch;

O comando break e um dos comandos de desvio em C e pode ser usadoem comandos de repeticao, etc;

Quando um comando break e encontrado dentro de um switch a execucaodo programa salta para a linha de codigo seguinte ao comando switch.

Page 35: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

34

O comando switch

Atencao!!!

O comando switch difere do comando if porque o switch so pode testarigualdade, enquanto if pode avaliar uma expressao logica ou relacional;

Duas constantes case no mesmo switch nao podem ter valores identicos;

Um comando switch dentro de outro comando switch podem ter valoresde constantes case identicos;

Se constantes de caracteres sao utilizadas em um comando switch elas saoautomaticamente convertidas para seus valores inteiros.

Page 36: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

35

O comando switch

Tecnicamente, os comandos break dentro do switch, sao opcionais. Elesterminam a sequencia de comandos associado a cada constante;

Se o comando break e omitido a execucao continua pelos proximoscomandos case ate que um break ou fim do switch seja alcancado;

Um comando switch dentro de outro comando switch podem ter valoresde constantes case identicos;

Se constantes de caracteres sao utilizadas em um comando switch elas saoautomaticamente convertidas para seus valores inteiros.

Page 37: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

36

O comando switch

#i n c l u d e<s t d i o . h>// C a l c u l a o numero de d i a s de um d e t e r m i n a d o me s .v o i d main ( ) {

i n t mes , ano , numDias = 0 ;

p r i n t f ( ”D i g i t e o mes\n ”) ;s c a n f ( ”%d ”,&mes ) ;p r i n t f ( ”D i g i t e o ano\n ”) ;s c a n f ( ”%d ”,&ano ) ;s w i t c h ( mes ) {

case 1 : case 3 : case 5 : case 7 : case 8 : case 1 0 : case 1 2 :numDias = 3 1 ;break ;

case 4 : case 6 : case 9 : case 1 1 :numDias = 3 0 ;break ;

case 2 :i f ( ( ( ano % 4 == 0) && ! ( ano % 100 == 0) ) | | ( ano % 400 == 0) )

numDias = 2 9 ;e l s e

numDias = 2 8 ;break ;

d e f a u l t :p r i n t f ( ”Me s I n v a l i d o .\ n ”) ;

}p r i n t f ( ”Numero de Dias = %d \n ” , numDias ) ;

}

Page 38: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

37

O comando switch aninhado

Pode-se ter comandos case sem ter comandos associados a ele, quandoisso ocorre a execucao passa para o case seguinte;

Se nenhum comando break estiver presente a execucao continua noproximo case;

Os comandos associados aos cases nao sao blocos de codigo e simsequencia de codigo.

Page 39: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

38

O comando switch aninhado

Pode-se ter um switch como parte de sequencia de comandos de um outroswitch;

Mesmo se as constantes dos cases do switch interno e externo tiveremvalores comuns nao havera conflito.

s w i t c h ( x ) {case 1 :s w i t c h ( y ) {

case 0 :p r i n t f ( ”E r r o de d i v i s ao por z e r o \n ”) ;break ;

case 1 :d i v i d a ( x , y ) ;

}case 2 :...

}

Page 40: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

39

Comandos de repeticao

Os comandos de repeticao permitem que um conjunto de instrucoes sejaexecutado ate que ocorra uma certa condicao de parada;

Na linguagem C existem 3 comandos de repeticao: for, while, do-while;

A condicao de parada pode ser pre-definida como o que ocorre nos lacosfor, ou com o final em aberto como ocorre nos lacos while e do while.

Page 41: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

40

O laco for

O comando for permite que um certo trecho de programa seja executadoum determinado numero de vezes, de maneira que se possa ter um bomcontrole sobre o loop;

Sua forma geral:

f o r ( i n i c i a l i z a c ao ; c o n d i c ao ; i n c r e m e n t o ) {l i s t a de comandos ;...

}

Page 42: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

41

O laco for

O for permite muitas variacoes, entretanto geralmente:

1 A inicializacao e um comando de atribuicao usado para colocar umvalor inicial na variavel de controle;

2 A condicao e uma expressao relacional que determina quando o lacoacaba;

3 O incremento define como a variavel de controle varia cada vez que olaco e repetido.

Esses tres comandos do for devem ser separados por ”;” ;

Quando a condicao do for se torna falsa a execucao do programa continuano comando seguinte ao for.

Page 43: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

42

O laco for

Sequencia de funcionamento do comando for:

1 Executa os comandos de inicializacao;

2 Testa a condicao;

3 Se a condicao for falsa entao executa o comando que esta logo aposo bloco subordinado ao for;

4 Se condicao for verdadeira entao executa os comandos que estaosubordinados ao for;

5 Executa os comandos de incremento/decremento.

Page 44: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

43

Instrucao de repeticao: for

Exemplo: Impressao dos numeros de 1 a 100 na tela.

// Imprime os nu meros de 1 a 1 0 0 .#i n c l u d e <s t d i o . h>v o i d main ( ) {

i n t cont ;

f o r ( cont = 1 ; cont <=100; cont++)p r i n t f ( ”%d ” , cont ) ;

p r i n t f ( ”\n ”) ;}

Page 45: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

44

Instrucao de repeticao: for

Exemplo: Impressao dos numeros de 1 a 100 na tela Resultado da execucao.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 2223 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 4243 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 6263 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 8283 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100

Page 46: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

45

Instrucao de repeticao: for

Exemplo: for com multiplos comandos.

#i n c l u d e <s t d i o . h>v o i d main ( ) {

i n t z ;f o r ( i = 1 0 0 ; i !=65; i −=5){

z = i∗ i ;p r i n t f ( ”O quadrado de %d : , %d ” , x , z ) ;

}}

Nos lacos for o teste condicional sempre e executado no inicio do loop, entao

dependendo da inicializacao e da condicao de parada o codigo presente dentro

do for pode nao ser executado nem uma unica vez.

Page 47: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

46

Outras formas de usar o for

Mais de uma variavel controlando o for

O C permite que o programador utilize mais de uma variavel paracontrolar o for, separando essas variaveis por vırgula. Exemplo;

. . .

f o r ( x=0,y =0; x+y<10; ++x )y = 2∗x ;

. . .

A vırgula separa os dois comandos de inicializacao;

As duas variaveis controlam o laco.

Page 48: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

47

Outras formas de usar o for

funcoes como controle do for

cada uma das tres secoes do for pode consistir em qualquer expressaovalida em C;

#i n c l u d e <s t d i o . h>

i n t p r i n t m s g ( ) {p r i n t f ( ”\ n d i g i t e um numero\n ”) ;r e t u r n 0 ;

}i n t readnum ( ) {

i n t t ;s c a n f ( ”%d ” , &t ) ;r e t u r n t ;

}i n t sqrnum ( i n t num) {

p r i n t f ( ”%d ” , num∗num) ;r e t u r n num∗num ;

}v o i d main ( ) {

i n t t ;f o r ( p r i n t m s g ( ) ; t = readnum ( ) ; p r i n t m s g ( ) )

sqrnum ( t ) ;}

Page 49: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

48

Outras formas de usar o for

Laco infinito

O for pode ser utilizado para criar um laco infinito, dado que nenhumaexpressao do for e obrigatoria.

Exemplo:

. . .i n t x = 0 ;f o r ( ; ; ) {

p r i n t f ( ”x = %d\n ” , x ) ;x++;

}. . .

Page 50: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

49

Outras formas de usar o for

Laco infinito

O laco for sem nenhuma expressao, so nao e infinito se tiver um comandobreak dentro dele, assim a execucao continua no codigo seguinte ao for.

. . .char ch= ’ \0 ’ ;

f o r ( ; ; ) {ch = g e t c h a r ( ) ; // obtem um c a r a c t e ri f ( ch = = ’A ’ )

break ; // s a i do f o r}

p r i n t f ( ”F o i d i g i t a d o um A\n ”) ;

. . .

Page 51: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

50

Observacoes sobre o comando for

O comando for deve ser usado sempre que:

Soubermos exatamente quantas vezes o laco deve ser repetido;

O teste deva ser feito antes da execucao de um bloco de comandos;

Houver casos em que o laco nao deva ser repetido nenhuma vez.

Page 52: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

51

Observacoes sobre o comando for

Os comandos de inicializacao sao executados apenas 1 vez;

O contador e incrementado/decrementado sempre ao final daexecucao do bloco;

O teste e feito sempre antes do inıcio da execucao do bloco decomandos.

Page 53: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

52

O laco while

Outro comando de repeticao disponıvel em C e o laco while;

O comando de repeticao while tem duas partes: a condicao de parada(teste) e o corpo da repeticao;

Forma geral:

w h i l e ( c o n d i c ao ) {l i s t a de comandos ;

}

Page 54: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

53

O laco while

w h i l e ( c o n d i c ao ) {l i s t a de comandos ;

}

Onde comando pode ser um comando vazio, um comando simples ou umbloco de comandos;

A condicao pode ser qualquer expressao valida em C;

Os comandos dentro do while serao repetidos enquanto a condicao forverdadeira, quando a condicao for falsa o controle do programa passa paraa linha de codigo apos o while.

Page 55: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

54

O laco while

A condicao e inicialmente avaliada para verificar se o laco deve terminar;

Se a condicao for verdadeira, o corpo da repeticao e executado;

Depois desta execucao, o processo e repetido a partir da expressao teste.

Page 56: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

55

O laco while

Exemplo 1: Funcao que espera a entrada ’A’

#i n c l u d e <s t d i o . h>

v o i d main ( ) {char ch ;ch = ’ \0 ’ ;

w h i l e ( ch != ’A ’ )ch = g e t c h a r ( ) ;

p r i n t f ( ”Entrada : %c\n ” , ch ) ;}

Primeiro ch e inicializado com nulo. Entao o laco verifica a igualdade,como inicialmente ch 6= ’A’ o laco comeca;

Toda vez que o usuario pressiona uma tecla o teste e realizadonovamente, ao digitar ’A’ a condicao se torna falsa e o while termina.

Page 57: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

56

O laco while

Como no for, o while tambem verifica a condicao no inıcio do laco;

Tambem nao e necessario existir nenhum comando no corpo do while;

char ch ;

w h i l e ( ch = g e t c h a r ( ) != ’A ’ ) ;

O loop sera executado ate que o usuario digite um caractere ’A’.

Page 58: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

57

O laco while

Se o corpo do while possuir mais de uma linha de comando que devem serrepetidas e necessario o uso do { e };

Exemplo 2:

#i n c l u d e <s t d i o . h>

main ( ) {

i n t t o t a l = 0 , num ;

w h i l e ( t o t a l < 20) {p r i n t f ( ”T o t a l = %d\n ” , t o t a l ) ;p r i n t f ( ”\ nEntre com um numero : \n ”) ;s c a n f ( ”%d ” , &num) ;t o t a l += num ;

}

p r i n t f ( ”\ nTota l f i n a l = %d\n ” , t o t a l ) ;}

Page 59: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

58

O laco while

Exemplo 2: Resultado da execucao

T o t a l = 0

E n t r e com um numero :1T o t a l = 1

E n t r e com um numero :5T o t a l = 6

E n t r e com um numero :0T o t a l = 6

E n t r e com um numero :10T o t a l = 16

E n t r e com um numero :15

T o t a l f i n a l = 31

Page 60: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

59

O laco while

Consideracoes

O comando while deve ser usado sempre que:

Nao soubermos exatamente quantas vezes o laco deve ser repetido;

Quando o teste deve ser feito antes de iniciar a execucao de umbloco de comandos;

Houver casos em que o laco nao deva ser repetido nenhuma vez.

Tenha atencao especial com o teste do comando while. As variaveisusadas no teste devem ter sido inicializadas antes do teste.

Page 61: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

60

O laco do-while

O comando do-while permite que um certo trecho de programa sejaexecutado ENQUANTO uma certa condicao for verdadeira;

Ao contrario dos comandos de repeticao for e while o do-while verifica acondicao de parada no final do loop;

Isso significa que o laco do-while sempre sera executado pelo menos umavez;

Forma geral:

do{

l i s t a de comandos ;

} w h i l e ( c o n d i c ao ) ;

O laco do while repete ate que a condicao se torne falsa.

Page 62: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

61

O laco do-while

Funcionamento do comando do-while:

Executa os comando dentro do bloco do-while;

Testa a condicao;

Se a condicao for falsa entao executa o comando que esta logo aposo bloco subordinado ao do-while;

Se condicao for verdadeira entao volta ao passo 1.

Page 63: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

62

O laco do-while

Exemplo: Programa que le numeros do teclado ate que encontre umnumero menor ou igual a 100.

#i n c l u d e <s t d i o . h>

v o i d main ( ) {i n t num ;

do{p r i n t f ( ”\ n D i g i t e um v a l o r \n ”) ;s c a n f ( ”%d ” , &num) ;

} w h i l e (num > 100) ;}

Page 64: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

63

O laco do-while

Exemplo: Resultado da execucao

D i g i t e um v a l o r235

D i g i t e um v a l o r632

D i g i t e um v a l o r9523

D i g i t e um v a l o r83

Page 65: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

64

O laco do-while

Talvez o uso mais comum do comando do-while seja em uma rotina deselecao por menu;

Quando o usuario entra com uma resposta valida, a opcao escolhida eexecutada;

Respostas invalidas causam uma repeticao do laco.

#i n c l u d e<s t d i o . h>

v o i d imprimeMenu ( ) {p r i n t f ( ”1 . V e r i f i c a r o r t o g r a f i a \n ”) ;p r i n t f ( ”2 . C o r r i g i r e r r o s de o r t o g r a f i a \n ”) ;p r i n t f ( ”3 . Most rar e r r o s de o r t o g r a f i a \n ”) ;p r i n t f ( ” D i g i t e sua e s c o l h a \n ”) ;

// c o n t i n u a . . .}

Page 66: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

65

O laco do-while

// c o n t i n u a c a o . . .

v o i d main ( ) {char c ;

do{imprimeMenu ( ) ;c = g e t c h a r ( ) ;i f ( c = = ’ \n ’ )

c = g e t c h a r ( ) ;s w i t c h ( c ) {

case ’ 1 ’ :v e r i f i c a r ( ) ;p r i n t f ( ”O r t o g r a f i a v e r i f i c a d a \n ”) ;break ;

case ’ 2 ’ :c o r r i g i r ( ) ;p r i n t f ( ” e r r o s c o r r i g i d o s \n ”) ;break ;

case ’ 3 ’ :m o s t r a r ( ) ;p r i n t f ( ”E r r o s mostrados \n ”) ;break ;

d e f a u l t :p r i n t f ( ”Opc ao i n v a l i d a !\ n ”) ;

}} w h i l e ( c != ’ 1 ’ && c != ’ 2 ’ && c != ’ 3 ’ ) ;

}

Page 67: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

66

O laco do-while

O comando do-while deve ser usado sempre que:

Nao soubermos exatamente quantas vezes o laco deve ser repetido;

O teste precisa ser feito depois da execucao de um bloco decomandos;

O bloco de comandos deve se executado pelo menos 1 vez.

Page 68: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

67

Lacos aninhados

E possıvel colocar um laco dentro do outro.

Exemplo: laco aninhado usando while (impressao no formato dematrizes)

#i n c l u d e <s t d i o . h>

i n t main ( ) {

i n t l i n h a , c o l u n a ;

l i n h a = 1 ;w h i l e ( l i n h a < 5) {

c o l u n a = 1 ;w h i l e ( c o l u n a < 5) {

p r i n t f ( ”%3d ” , l i n h a ∗ c o l u n a ) ;c o l u n a += 1 ;

}p r i n t f ( ”\n ”) ;l i n h a += 1 ;

}p r i n t f ( ”\n ” ) ;

}

Page 69: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

68

Lacos aninhados

Exemplo: Resultado da execucao.

1 2 3 42 4 6 83 6 9 124 8 12 16

Page 70: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

69

Comandos de desvio

C tem cinco comandos que realizam um desvio incondicional: return,goto, break, exit e continue;

O return, goto e o break podem ser usados em qualquer lugar doprograma;

Os comandos break e continue podem ser usados com qualquer doscomandos de repeticao, sendo que o break tambem pode ser usado com oswitch.

Page 71: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

70

Comando return

E usado para retornar o controle de uma funcao com um valor ou nao;

Ele e considerado um comando de desvio porque faz com que a execucaoretorne ao ponto em que a chamada da funcao foi feita;

Se return tem um valor associado a ele, este e o valor de retorno dafuncao. Se a funcao tem um retorno e nenhum foi especificado entao umlixo e retornado;

Forma geral:

r e t u r n e x p r e s s ao ;

Page 72: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

71

Comando return

Pode-se usar mais de um comando return dentro de uma mesma funcao,porem a funcao para de executar tao logo encontre o primeiro return;

Atencao: Uma funcao declarada como void nao pode ter um comandoreturn que especifique um valor.

f l o a t c a l c u l a M e d i a ( i n t v e t [ ] , i n t n ) {i n t i ;f l o a t media = 0 . 0 ;

f o r ( i =0; i<n ; i ++)media += v e t [ i ] ;

media /= n ;r e t u r n ( media ) ;

}

Page 73: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

72

Comando goto

E um comando que desvia a execucao para qualquer parte do programa;

Dado que o C tem um conjunto de estruturas de controle abrangente eainda permite um controle adicional usando break e continue ha poucanecessidade do goto;

O goto deixa o programa menos legıvel e nao ha nenhuma situacao onde ogoto seja necessario, por esses motivos ele nao e muito utilizado peloprogramadores.

Forma geral:

goto r o t u l o ;...r o t u l o :

Page 74: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

73

Comando goto

O goto requer um rotulo para sua operacao;

Um rotulo e um identificador em C seguido por um dois pontos (:);

O rotulo precisa estar em dois lugares do programa: No lugar para onde aexecucao deve saltar e apos o comando goto;

Comandos de repeticao podem ser criados usando o comando de desviogoto.

. . .x = 1l o o p :x++;p r i n t f ( ”v a l o r de x : %d ” , x ) ;i f ( x < 100)goto l o o p ;

. . .

Page 75: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

74

Comando break

O comando break faz com que a execucao de um laco seja terminada,passando a execucao para o proximo comando depois do final do laco;

O comando break tem duas formas de ser usado:

Para terminar um case em um switch (ja visto!);

Para forcar uma terminacao imediata de um laco;

Quando o comando break e usado dentro de um laco, a repeticao eimediatamente encerrada e o controle do programa segue apos o laco.

Page 76: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

75

Comando break

Exemplo:

#i n c l u d e <s t d i o . h>

v o i d main ( ) {i n t t , i ;

f o r ( i =0; i <100; i ++){p r i n t f ( ”%d ” , i ) ;i f ( i %13 = = 0)

break ;}

}

O comando break e usado em laco quando uma condicao especialdeve provocar um termino imediato do loop.

Page 77: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

76

Comando break

Um comando break provoca a saıda do loop mais interno;

Exemplo:

#i n c l u d e <s t d i o . h>

v o i d main ( ) {i n t t , count , i , j ;

f o r ( i =0; i <100; i ++){count = 1 ;f o r ( j=i ; j <100; j ++){

p r i n t f ( ”%d ” , count ) ;count++;i f ( j%count==0)

break ;}

}}

Assim tambem um break dentro do switch so afetara o switch e naoqualquer comando em que ele estiver envolvido.

Page 78: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

77

Comando break

Os dois programas a seguir sao equivalentes:

#i n c l u d e <s t d i o . h>

v o i d main ( ) {i n t i ;

f o r ( i =1; ; i ++){i f ( i > 10)

break ;p r i n t f ( ”%d \n ” , i ) ;

}}

#i n c l u d e <s t d i o . h>

v o i d main ( ) {i n t i ;

f o r ( i =1; i <=10; i ++){p r i n t f ( ”%d \n ” , i ) ;

}}

Page 79: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

78

Funcao exit()

Da mesma forma que se pode sair de um laco tambem e possıvel sair deum programa usando a funcao exit();

A funcao exit() provoca um termino imediato do programa inteiro,forcando um retorno ao sistema operacional;

Forma geral:

v o i d e x i t ( c o d i g o d e r e t o r n o ) ;

O valor do codigo de retorno e enviado ao processo chamador(normalmente o SO), zero indica o termino normal do programa.

Page 80: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

79

Funcao exit()

Exemplo:

. . .do{

c = g e t c h a r ( ) ;i f ( c == ’ \n ’ )

c = g e t c h a r ( ) ;s w i t c h ( c ) {

case ’ 1 ’ :v e r i f i c a r ( ) ;p r i n t f ( ”O r t o g r a f i a v e r i f i c a d a \n ”) ;break ;case ’ 2 ’ :c o r r i g i r ( ) ;p r i n t f ( ” e r r o s c o r r i g i d o s \n ”) ;break ;case ’ 3 ’ :m o s t r a r ( ) ;p r i n t f ( ”E r r o s mostrados \n ”) ;break ;case ’ 4 ’ :p r i n t f ( ”Abandonando o programa !\ n ”) ;e x i t ( 0 ) ;

}} w h i l e ( c != ’ 1 ’ && c != ’ 2 ’ && c != ’ 3 ’ ) ;

}

Page 81: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

80

O comando continue

O comando continue faz com que a execucao de um laco sejaalterada para o final do mesmo;

#i n c l u d e <s t d i o . h>

v o i d main ( ) {i n t i ;f o r ( i = 1 ; i<= 10 ; i ++){

i f ( i == 5)c o n t i n u e ;

p r i n t f ( ”%d\n ” , i ) ;}p r i n t f ( ”Terminou o l a c o \n ”) ;

O que sera impresso?

Page 82: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

81

O comando continue

Esse comando trabalha de uma forma um pouco parecida com obreak, porem ao inves de forcar a terminacao ele forca seguir para aproxima iteracao;

Para o comando for o continue faz com que o incremento e o testesejam executados;

Para os comandos while e o do while, o controle do comando passapara o teste condicional.

Page 83: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

82

O comando continue

Exemplo:

// conta espa c os#i n c l u d e <s t d i o . h>#i n c l u d e < s t r i n g . h>

v o i d main ( ) {char f r a s e [ 1 0 0 ] ;i n t i , e s p a c o s =0, tam ;

p r i n t f ( ”D i g i t e uma s t r i n g : \n ”) ;g e t s ( f r a s e ) ;tam = s t r l e n ( f r a s e ) ;f o r ( i =0; i<tam ; i ++){

i f ( f r a s e [ i ] != ’ ’ )c o n t i n u e ;

e s p a c o s ++;}p r i n t f ( ”%d e s p a c o s \n ” , e s p a c o s ) ;

}

Page 84: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

83

O comando continue

O comando continue e utilizado em situacoes onde comandos dentrodo laco so serao executados caso alguma condicao seja satisfeita;

Imprimindo a area de um cırculo, mas apenas se o raio for par (eentre 1 e 10);

#i n c l u d e <s t d i o . h>

v o i d main ( ) {i n t r ;double a r e a ;f o r ( r = 1 ; r<= 1 0 ; r++){

i f ( ( r %2) != 0)c o n t i n u e ;

a r e a = 3.1415∗ r∗rp r i n t f ( ”%f \n ” , a r e a ) ;

}}

Page 85: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

84

O comando continue

Imprimindo a area de um cırculo, mas apenas se o raio for par (eentre 1 e 10);

Note que poderıamos escrever algo mais simples!

#i n c l u d e <s t d i o . h>

v o i d main ( ) {i n t r ;double a r e a ;f o r ( r = 2 ; r<= 1 0 ; r +=2){

a r e a = 3.1415∗ r∗rp r i n t f ( ”%f \n ” , a r e a ) ;

}}

Page 86: Programação Estruturada Aula 6 - Comandos de controle · Programa˘c~ao Estruturada Aula 6 - Comandos de controle Prof. Luis Carlos Retondaro T ecnico em Telecomunica˘coes 2o Ano

85

Referencias

1 C Completo e Total, Herbert Schidt; Pearson Makron Books; 3a.Ed., 1997.

2 Linguagem C. DAMAS, Luis. 10a. Edicao. LTC, 2014.