C Comandos de Controle

Documentos relacionados
C Comandos de Controle

Programação Estruturada Aula - Estruturas de Repetição

5 - COMANDOS DE CONTROLE DE PROGRAMA Em C existem os comandos de decisões, os comandos de iteração (ou de laços) e os comandos de desvios.

Programação de Computadores I Funções de Repetição da Linguagem C PROFESSORA CINTIA CAETANO

Programação I Estruturas de Repetição

Linguagem C (estruturas condicionais)

Comandos de Controle do Programa

3. Linguagem de Programação C

Introdução à Programação. Expressões Booleanas e Comandos Condicionais

Controle de Fluxo. Laços e Desvios incondicionais

Métodos Computacionais. Comandos Condicionais e de Repetição em C

COMANDOS DE DECISÕES. O COMANDO if. O comando if instrui o computador a tomar uma decisão simples. Forma Geral: if (expressão de teste) instrução;

Variáveis primitivas e Controle de fluxo

LINGUAGEM C: COMANDOS DE CONTROLE CONDICIONAL

C Operadores e Expressões

CONTROLE DE FLUXO. Algoritmos e Programação. Prof. Alceu Britto Slides cedidos pelo Prof. Edson J. R. Justino (PUCPR) Aula 9 e 10

Linguagem C. André Tavares da Silva.

Comando Switch. Embora a escada if else-if possa executar testes de várias maneiras, ela não é de maneira nenhuma elegante.

Controle de Fluxo. Laços e Desvios incondicionais

Linguagem C Controle do Fluxo de Execução. Lógica de Programação

Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: estruturas de repetição While / Do While / For

Modulo 3: Else, Case, For...

Módulo 3 Controle de Fluxo

Introdução à Programação. Estruturas de Repetição

Introdução à Programação SCC-121

Linguagem C Controle de Fluxo

SSC304 Introdução à Programação Para Engenharias. Controle de Fluxo. GE4 Bio

Aula 14: Estruturas de Seleção e Controle em C

CICLOS DE REPETIÇÃO. Luís Charneca.

Linguagem C. Prof.ª Márcia Jani Cícero

COMANDOS DE CONTROLE DE FLUXO. Luís Charneca.

Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: Operadores relacionais e lógicos estruturas condicionais If...

Controle de Fluxo Utilizando C

Cap. 3 Entrada e Saída e Controle de Fluxo

Aula 6 Oficina de Programação Estruturas Condicionais no C. Profa. Elaine Faria UFU

Linguagens de Programação I

ICMC USP. 1.semestre/2011 SCC120 - ICC. Aula: Comandos em C. Profa. Roseli Ap. Francelin Romero

Hello World. Linguagem C. Tipos de Dados. Palavras Reservadas. Operadores Aritméticos. Pré e pós incremento e pré e pós decremento

Estruturas de Controle

Linguagem C (repetição)

Estruturas da linguagem C. 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões.

LINGUAGEM C: COMANDOS DE REPETIÇÃO

Comandos de entrada. e saída. Comandos de entrada. Comandos de entrada. Comandos de entrada. Comandos de entrada. Comandos de entrada.

Introdução à Ciência da Computação

Aula 7 Oficina de Programação Estruturas de Repetição no C. Profa. Elaine Faria UFU

Sistemas Operacionais e Introdução à Programação. Programação com linguagem C

Linguagem de Programação C

LEI 2016 LICENCIATURA EM ENGENHARIA INFORMÁTICA

Linguagem de Programação C

Técnicas de Programação: Comandos de Controle de DEE UFPB

Controlo de Execução. K&R: Capitulo 3

Aula 03 -Introdução àlinguagc Programação: Estrutura-Repetição. OPL e IC1 Prof: Anilton Joaquim da Silva

Estruturas de Decisão e loops

#include <stdio.h> Void main() { printf( Cheguei!\n"); } INTRODUÇÃO A LINGUAGEM C

Computação eletrônica: Estruturas de repetição

ESTRUTURAS DE CONTROLE

Estruturas de Controle

Desenvolvimento de Aplicações Desktop

Algoritmos e Técnicas de

Programação I Estruturas de Decisão

Estruturas de Repetição. for() while() do-while() break; continue;

Apresentar os comandos de controle associados com as estruturas de repetição.

INF1007: Programação 2. 0 Revisão. 06/08/2015 (c) Dept. de Informática - PUC-Rio 1

Computação para Informática - Prof. Adriano Joaquim de Oliveira Cruz Quarta Aula Prática - 17 de abril de 2013

Linguagem de Programação C. Comandos de Seleção e Desvio

Programação de Computadores I. Linguagem C Estruturas de Repetição

Comandos em C (cont.)

Algoritmos: Conceitos Fundamentais

Introdução à Programação Aula 07. Prof. Max Santana Rolemberg Farias Colegiado de Engenharia de Computação

Algoritmos e Programação

Prof. A. G. Silva. 28 de agosto de Prof. A. G. Silva INE5603 Introdução à POO 28 de agosto de / 1

TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS LINGUAGEM DE PROGRAMAÇÃO I. Aula 5

Sintaxe Básica de Java Parte 2

LINGUAGEM C CONTROLE DE FLUXO

Linguagem C Estruturas de Repetição

INSTRUÇÕES DE REPETIÇÃO

Seleção Múltipla Laços (while, do-while, for) AULA 05

Capítulo 8. Estruturas de Controle no Nível de Sentença

Estruturas de seleção

Parte 1. Programação (linguagem C) Introdução Geral

Tipos Primitivos, estruturas de iteração e decisão.

10 Comandos de repetição

LÓGICA DE PROGRAMAÇÃO. PROFª. M.Sc. JULIANA H Q BENACCHIO

C Estruturas. Section Summary. Adriano Cruz 1 de fevereiro de 2016

Algoritmos e Lógica de Programação 80 horas // 4 h/semana. Exercício... Para começar... Resolução... Para começar... Para começar...

Entrada. Comando 1 Comando 2. Saída

Introdução à Programação em C

Estruturas de Controle em Linguagem C

Aula 4 Estruturas de Controle

Linguagem C++ Estruturas de controle Parte II Estruturas de repetição

Algoritmos e Técnicas de Programação. Professora: Luciana Faria

Abaixo vemos um programa que coloca os primeiros 100 números inteiros na tela:

Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Condicionais e de Repetição

Algoritmos e Programação

Algoritmos e Programação

Transcrição:

C Comandos de Controle Adriano Cruz adriano@nce.ufrj.br Instituto de Matemática Departamento de Ciência da Computação UFRJ 15 de agosto de 2013 Adriano Cruz adriano@nce.ufrj.br (IM-DCC-UFRJ)C Comandos de Controle 15 de agosto de 2013 1 / 59 Section Summary 1 Introdução 2 Comandos de Teste 3 Comandos de Repetição 4 Comandos de Desvio Adriano Cruz adriano@nce.ufrj.br (IM-DCC-UFRJ)C Comandos de Controle 15 de agosto de 2013 2 / 59

Bibliografia 1 Adriano Cruz. Curso de Linguagem C, Disponível em http://equipe.nce.ufrj.br/adriano 2 Ulysses de Oliveira. Programando em C, Editora Ciência Moderna. Adriano Cruz adriano@nce.ufrj.br (IM-DCC-UFRJ)C Comandos de Controle 15 de agosto de 2013 3 / 59 Bloco de Comandos Grupos de comandos que devem ser tratados como uma unidade lógica. O início de um bloco em C é marcado por uma chave de abertura () e o término por uma chave de fechamento (). Serve para agrupar comandos que devem ser executados juntos. Por exemplo, usa-se bloco de comandos quando em comandos de teste deve-se escolher entre executar dois blocos de comandos. Pode ser utilizado em qualquer trecho de programa onde se pode usar um comando C. É interessante observar que um bloco de comandos pode ter zero comandos C. Um bloco de comandos com 0 ou 1 comando pode dispensar as chaves. Adriano Cruz adriano@nce.ufrj.br (IM-DCC-UFRJ)C Comandos de Controle 15 de agosto de 2013 4 / 59

Exemplo /* bloco_de_comandos */ i = 0; j = j + 1; printf ("%d %d\n", i, j); Adriano Cruz adriano@nce.ufrj.br (IM-DCC-UFRJ)C Comandos de Controle 15 de agosto de 2013 5 / 59 Section Summary 1 Introdução 2 Comandos de Teste 3 Comandos de Repetição 4 Comandos de Desvio Adriano Cruz adriano@nce.ufrj.br (IM-DCC-UFRJ)C Comandos de Controle 15 de agosto de 2013 6 / 59

Comandos de Teste Utilidade Os comandos de teste permitem ao computador decidir o caminho a seguir, durante a execução do programa, independentemente do usuário. O que testam? Estes testes são baseados em estados internos disponíveis ao processador. Estes estados podem ser resultantes de uma operação aritmética anterior, de uma operação anterior etc. Adriano Cruz adriano@nce.ufrj.br (IM-DCC-UFRJ)C Comandos de Controle 15 de agosto de 2013 7 / 59 Desvios Adriano Cruz adriano@nce.ufrj.br (IM-DCC-UFRJ)C Comandos de Controle 15 de agosto de 2013 8 / 59

Comando if O comando if é utilizado quando for necessário escolher entre dois caminhos. A forma geral do comando if é a seguinte: i f ( express~ao) bloco_de_comandos1; e l s e bloco_de_comandos2; Adriano Cruz adriano@nce.ufrj.br (IM-DCC-UFRJ)C Comandos de Controle 15 de agosto de 2013 9 / 59 Comando if operaç~ao Neste comando primeiro a expressão é avaliada. Caso o resultado seja verdadeiro (qualquer resultado diferente de zero) o bloco de comandos1 é executado, caso contrário o bloco de comandos2 é executado. Pela definição do comando a expressão deve ter como resultado um valor diferente de zero para ser considerada verdade. Observar que somente um dos dois blocos será executado. Em C um resultado diferente de zero significa verdadeiro e zero significa falso. Adriano Cruz adriano@nce.ufrj.br (IM-DCC-UFRJ)C Comandos de Controle 15 de agosto de 2013 10 / 59

Comando if sem else Como a cláusula else é opcional a forma abaixo do comando if é perfeitamente válida. i f ( express~ao) bloco_de_comandos; Adriano Cruz adriano@nce.ufrj.br (IM-DCC-UFRJ)C Comandos de Controle 15 de agosto de 2013 11 / 59 Exemplos de if I scanf ("%d", & dia); i f ( dia > 31 dia < 1 ) printf (" Dia invalido\n"); scanf ("%d", & numero ); i f ( numero > 0 ) printf (" Numero positivo\n"); e l s e printf (" Numero negativo\n"); Adriano Cruz adriano@nce.ufrj.br (IM-DCC-UFRJ)C Comandos de Controle 15 de agosto de 2013 12 / 59

Exemplos de if II scanf ("%f", & salario); i f ( salario < 800.00) printf (" Aliquota de imposto = 0.1\n"); imposto = salario * 0.1; e l s e printf (" Aliquota de imposto = 0.25\ n"); imposto = salario * 0.25; Adriano Cruz adriano@nce.ufrj.br (IM-DCC-UFRJ)C Comandos de Controle 15 de agosto de 2013 13 / 59 Comandos if em escada i f ( express~ao) bloco_de_comandos e l s e i f ( express~ao1) bloco_de_comandos1 e l s e i f ( express~ao2) bloco_de_comandos2... e l s e bloco_de_comandosn Adriano Cruz adriano@nce.ufrj.br (IM-DCC-UFRJ)C Comandos de Controle 15 de agosto de 2013 14 / 59

Exemplo: lê dados #i n c l u d e < stdio.h > i n t main ( v o i d ) f l o a t num1, /* primeiro operando */ num2, /* segundo operando */ res; /* resultado da operacao */ c h a r oper; /* caractere que define a operacao */ printf ("\ nprograma calculadora simples.\n"); printf (" Entre com os dois operandos.\n"); scanf ("%f %f", & num1, & num2 ); getchar(); /* tirar o cr */ printf (" Qual a operacao? \n"); oper = getchar(); Adriano Cruz adriano@nce.ufrj.br (IM-DCC-UFRJ)C Comandos de Controle 15 de agosto de 2013 15 / 59 Exemplo: Calcula i f ( oper == '+ ') res = num1 + num2 ; e l s e i f ( oper == '-') res = num1 - num2 ; e l s e i f ( oper == '* ') res = num1 * num2 ; e l s e i f ( oper == '/ ') i f ( num2 == 0.0) printf (" Divisao por 0!\n"); r e t u r n 1; e l s e res = num1 / num2 ; e l s e /* Nao era nenhuma das opcoes */ printf (" Operacao invalida!\n"); r e t u r n 1; Adriano Cruz adriano@nce.ufrj.br (IM-DCC-UFRJ)C Comandos de Controle 15 de agosto de 2013 16 / 59

Exemplo: Resultados printf (" Resultado = %f.\n", res); r e t u r n 0; /* End of main */ Adriano Cruz adriano@nce.ufrj.br (IM-DCC-UFRJ)C Comandos de Controle 15 de agosto de 2013 17 / 59 Comando switch O comando if, em todas suas formas, é suficiente resolver problemas de seleção de comandos. Porém em alguns casos o programa se torna mais trabalhoso para ser escrito e entendido. O comando switch facilita a escrita de trechos de programa em que a seleção deve ser feita entre várias alternativas. Adriano Cruz adriano@nce.ufrj.br (IM-DCC-UFRJ)C Comandos de Controle 15 de agosto de 2013 18 / 59

Forma Geral s w i t c h ( express~ao) c a se constante1: seqü^encia_de_comandos ; break ; c a se constante2: seqü^encia_de_comandos ; break ; c a se constante3: seqü^encia_de_comandos ; break ;... d e f a u l t : seqü^encia_de_comandos ; Adriano Cruz adriano@nce.ufrj.br (IM-DCC-UFRJ)C Comandos de Controle 15 de agosto de 2013 19 / 59 Ordem de Execução 1 Expressão é avaliada. 2 Resultado da expressão é comparado com valores dos comandoscase. 3 Se resultado da expressão for verdadeiro, executa comandos. 4 A execução continua até o fim do switch, ou até que um break seja encontrado. 5 Caso não ocorra nenhuma coincidência, os comandos associados ao comando default são executados. 6 O comando default é opcional. 7 Se não houver coincidência e o default não aparecer nenhum comando será executado. 1 switch(expressao) 2 valor = expressao 3 case valor: 4 executa comandos 5 até achar um break Adriano Cruz adriano@nce.ufrj.br (IM-DCC-UFRJ)C Comandos de Controle 15 de agosto de 2013 20 / 59

Cuidado! Uma seqüência de comandos é diferente de um bloco de comandos. Um bloco de comandos inicia com uma chave e termina com uma chave, enquanto que uma seqüência é apenas uma série de comandos. Por exemplo, uma vez que um bloco de comandos foi selecionado por um comando if ele será executado até a última instrução do bloco, a menos que haja um comando de desvio. Uma série de comandos são apenas comandos colocados um após outro. Adriano Cruz adriano@nce.ufrj.br (IM-DCC-UFRJ)C Comandos de Controle 15 de agosto de 2013 21 / 59 break O comando break é um dos comandos de desvio da linguagem C. O break é usado dentro do comando switch para interromper a execução da seqüência de comandos e pular para o comando seguinte ao comando switch. Adriano Cruz adriano@nce.ufrj.br (IM-DCC-UFRJ)C Comandos de Controle 15 de agosto de 2013 22 / 59

Pontos Importantes O resultado da expressão deve ser um tipo enumerável, por exemplo o tipo int. Também podem ser usados tipos compatíveis com int, isto é, expressões com resultados tipo char podem ser usadas. Notar que caso não apareça um comando de desvio, todas as instruções seguintes ao teste case que teve sucesso serão executadas, mesmo as que estejam relacionadas com outros testes case. O comando switch só pode testar igualdade. Adriano Cruz adriano@nce.ufrj.br (IM-DCC-UFRJ)C Comandos de Controle 15 de agosto de 2013 23 / 59 Exemplo: lê dados #i n c l u d e < stdio.h > i n t main ( v o i d ) f l o a t num1, /* primeiro operando */ num2, /* segundo operando */ res; /* resultado da operacao */ c h a r oper ; /* caracter que define a operacao */ printf (" Por favor entre com os operandos.\n"); scanf ("%f %f", & num1, & num2 ); getchar(); printf (" Qual a operacao \n"); oper = getchar(); printf ("A operacao e %c\n", oper); Adriano Cruz adriano@nce.ufrj.br (IM-DCC-UFRJ)C Comandos de Controle 15 de agosto de 2013 24 / 59

Exemplo: testa s w i t c h ( oper) c a se '+ ': res = num1 + num2 ; break ; c a se '-': res = num1 - num2 ; break ; c a se '* ': res = num1 * num2 ; break ; c a se '/ ': i f ( num2 == 0.0) printf (" Divisao por zero.\n"); r e t u r n 1; e l s e res = num1 / num2; break ; Adriano Cruz adriano@nce.ufrj.br (IM-DCC-UFRJ)C Comandos de Controle 15 de agosto de 2013 25 / 59 Exemplo: fim do teste e imprime d e f a u l t : printf (" Operacao r e t u r n 2; /* fim do switch */ invalida!\n"); printf ("O resultado da %c vale %f.\n", oper, res); r e t u r n 0; Adriano Cruz adriano@nce.ufrj.br (IM-DCC-UFRJ)C Comandos de Controle 15 de agosto de 2013 26 / 59

Comando Ternário O comando ternário tem este nome porque necessita de três operandos para ser avaliado. O comando ternário tem a seguinte forma: express~ao1? express~ao2 : express~ao3 Para avaliar o resultado total da expressão, primeiro a express~ao1 é avaliada. Caso este resultado seja correspondente ao valor verdadeiro então o resultado da expressão será igual ao resultado da express~ao2. Caso contrário a express~ao3 é avaliada e se torna o resultado. Adriano Cruz adriano@nce.ufrj.br (IM-DCC-UFRJ)C Comandos de Controle 15 de agosto de 2013 27 / 59 Exemplo #i n c l u d e < stdio.h > i n t main ( v o i d ) f l o a t num1, /* primeiro operando */ num2, /* segundo operando */ max; /* resultado da operacao */ printf (" Imprime o maior valor de dois numeros.\n "); printf (" Por favor entre com os dois mumeros.\n") ; scanf ("%f %f", & num1, & num2 ); max = ( num1 > num2)? num1: num2 ; printf ("O maior dos numeros lidos e %f.\n", max) ; r e t u r n 0; Adriano Cruz adriano@nce.ufrj.br (IM-DCC-UFRJ)C Comandos de Controle 15 de agosto de 2013 28 / 59

Section Summary 1 Introdução 2 Comandos de Teste 3 Comandos de Repetição 4 Comandos de Desvio Adriano Cruz adriano@nce.ufrj.br (IM-DCC-UFRJ)C Comandos de Controle 15 de agosto de 2013 29 / 59 Comandos de Repetição O que fazem? Estes comandos permitem que trechos de programa sejam repetidos um certo número de vezes controlado pelo programa. Repetir até quando? O número de vezes que um laço será executado pode ser fixo ou depender de condições que mudam durante a execução do laço. Adriano Cruz adriano@nce.ufrj.br (IM-DCC-UFRJ)C Comandos de Controle 15 de agosto de 2013 30 / 59

Laços infinitos Adriano Cruz adriano@nce.ufrj.br (IM-DCC-UFRJ)C Comandos de Controle 15 de agosto de 2013 31 / 59 Comando for Este comando aparece em várias linguagens de programação, mas na linguagem C ele apresenta um grau maior de flexibilidade. Uma variável de controle, geralmente um contador, recebe um valor inicial. O trecho de programa que pertence ao laço é executado. Ao final a variável de controle é incrementada ou decrementada e comparada com o valor final. Caso a condição de término tenha sido atingida o laço é interrompido. Adriano Cruz adriano@nce.ufrj.br (IM-DCC-UFRJ)C Comandos de Controle 15 de agosto de 2013 32 / 59

Forma Geral f o r ( express~ao1; express~ao2; express~ao3) blocodecomandos; As três expressões geralmente têm os seguintes significados: A express~ao1 é utilizada para inicializar a variável de controle do laço; A express~ao2 é um teste que controla o fim do laço; A express~ao3 normalmente faz um incremento ou decremento da variável de controle. Adriano Cruz adriano@nce.ufrj.br (IM-DCC-UFRJ)C Comandos de Controle 15 de agosto de 2013 33 / 59 Passos 1 A express~ao1 é avaliada. 2 A express~ao2 é avaliada para determinar se o comando deve ser executado. 3 Se o resultado da express~ao2 for verdadeiro executa o o bloco de comandos 4 caso contrário o laço é terminado. 5 A expressão3 é avaliada. 6 Voltar para o passo 2. Adriano Cruz adriano@nce.ufrj.br (IM-DCC-UFRJ)C Comandos de Controle 15 de agosto de 2013 34 / 59

Exemplo de for f o r (i = 1; i <= 100; i ++) printf (" Numero %d\n", i); Adriano Cruz adriano@nce.ufrj.br (IM-DCC-UFRJ)C Comandos de Controle 15 de agosto de 2013 35 / 59 Outro exemplo de for #i n c l u d e < stdio.h> i n t main ( v o i d ) i n t numero, f =1, i; printf (" Entre com um numero positivo.\n"); scanf ("%d", & numero ); f o r (i= numero ; i >1; i - -) f = f * i; printf ("O f de %u vale %u.", numero, f); r e t u r n 0; Adriano Cruz adriano@nce.ufrj.br (IM-DCC-UFRJ)C Comandos de Controle 15 de agosto de 2013 36 / 59

#i n c l u d e < stdio.h > i n t main () c h a r c = ' '; i n t i; f o r (i =0 ; (i <5) && (c!= '* '); i ++ ) printf ("%c\n", c); c = getchar() ; r e t u r n 0; Adriano Cruz adriano@nce.ufrj.br (IM-DCC-UFRJ)C Comandos de Controle 15 de agosto de 2013 38 / 59 Mais de um comando por expressão Outra possibilidade que o comando for em C permite é a inclusão de vários comandos, separados por vírgulas, nas expressões. i n t i,j; f o r ( i=1, j = 10; i <= 10; i++, j += 10) printf ("i = %d, j = %d\n", i, j); Adriano Cruz adriano@nce.ufrj.br (IM-DCC-UFRJ)C Comandos de Controle 15 de agosto de 2013 37 / 59 Testes usando outras variáveis A expressão de controle não precisa necessariamente envolver somente um teste com a variável que controla o laço. O teste de final do laço pode ser qualquer expressão relacional ou lógica. No exemplo abaixo o laço pode terminar ou porque a variável de controle já chegou ao seu valor limite ou foi batida a tecla *, e neste caso o laço termina antecipadamente.

Expressões faltando Um outro ponto importante do for é que nem todas as expressões precisam estar presentes. No exemplo abaixo a variável de controle não é incrementada. A única maneira do programa terminar é o usuário bater o número -1. #i n c l u d e < stdio.h > i n t main () i n t i; f o r (i =0 ; i!= -1 ; ) printf ("%d\n",i ); scanf ("%d", &i); r e t u r n 0; Adriano Cruz adriano@nce.ufrj.br (IM-DCC-UFRJ)C Comandos de Controle 15 de agosto de 2013 39 / 59 Outras expressões faltando #i n c l u d e < stdio.h > i n t main () i n t i; i n t n; f o r (i = 0; ; i ++) scanf ("%d", &n); printf (" numero %d\n", n); i f (n == 5) break ; r e t u r n 0; Adriano Cruz adriano@nce.ufrj.br (IM-DCC-UFRJ)C Comandos de Controle 15 de agosto de 2013 40 / 59

printf (" Imprime tabuada de multiplicacao.\n"); f o r (i =1 ; i <10 ; i ++) printf (" Tabuada de %d\n", i); f o r (j =1; j <10; j ++) printf ("%d x %d = %d\n", i, j, i * j); Adriano Cruzradriano@nce.ufrj.br e t u r n 0; (IM-DCC-UFRJ)C Comandos de Controle 15 de agosto de 2013 42 / 59 Laço Infinito Uma construção muito utilizada é o laço infinito. No laço infinito o programa pára quando se executa o comando break. O trecho de programa a seguir somente pára quando for digitada a tecla s ou S. f o r ( ; ; ) printf ("\ nvoce quer parar?\n"); c = getchar(); i f (c == 'S ' c == 's ') break ; Adriano Cruz adriano@nce.ufrj.br (IM-DCC-UFRJ)C Comandos de Controle 15 de agosto de 2013 41 / 59 Laços for aninhados Uma importante construção aparece quando colocamos como comando a ser repetido um outro comando for. #i n c l u d e < stdio.h > i n t main ( v o i d ) i n t i, j;

while O comando while tem a seguinte forma geral: w h i l e ( express~ao) bloco_de_comandos Adriano Cruz adriano@nce.ufrj.br (IM-DCC-UFRJ)C Comandos de Controle 15 de agosto de 2013 43 / 59 Passos 1 A expressão é avaliada. 2 Se o resultado for verdadeiro então o bloco de comandos é executado, caso contrário a execução do bloco é terminada. 3 Voltar para o passo 1. Uma característica do comando while, é que o bloco de comandos pode não ser executado caso a condição seja igual a falso logo no primeiro teste. Adriano Cruz adriano@nce.ufrj.br (IM-DCC-UFRJ)C Comandos de Controle 15 de agosto de 2013 44 / 59

Exemplo I i = 1; w h i l e (i <= 100) printf (" Numero i ++; %d\n", i); Adriano Cruz adriano@nce.ufrj.br (IM-DCC-UFRJ)C Comandos de Controle 15 de agosto de 2013 45 / 59 Exemplo II #i n c l u d e < stdio.h> i n t main ( v o i d ) i n t c; puts (" Tecle c para continuar.\n"); w h i l e ((c= getchar()) == 'c ') puts (" Nao Acabou.\n"); getchar(); /* tira o enter */ puts (" Acabou.\n"); r e t u r n 0; Adriano Cruz adriano@nce.ufrj.br (IM-DCC-UFRJ)C Comandos de Controle 15 de agosto de 2013 46 / 59

do - while() O comando do-while() tem a seguinte forma geral: do bloco_de_comandos w h i l e ( express~ao); Adriano Cruz adriano@nce.ufrj.br (IM-DCC-UFRJ)C Comandos de Controle 15 de agosto de 2013 47 / 59 Passos 1 Executa o bloco de comandos. 2 Avalia a expressão. 3 Se o resultado da expressão for verdadeiro então volta para o passo 1, caso contrário interrompe o do-while. Observar que neste comando a expressão de teste está após a execução do comando, portanto o bloco de comandos é executado pelo menos uma vez. A execução do comando segue os seguintes passos: Adriano Cruz adriano@nce.ufrj.br (IM-DCC-UFRJ)C Comandos de Controle 15 de agosto de 2013 48 / 59

Exemplo i = 1; do printf (" Numero %d\n", i); i ++; w h i l e (i <= 100) ; Adriano Cruz adriano@nce.ufrj.br (IM-DCC-UFRJ)C Comandos de Controle 15 de agosto de 2013 49 / 59 Section Summary 1 Introdução 2 Comandos de Teste 3 Comandos de Repetição 4 Comandos de Desvio Adriano Cruz adriano@nce.ufrj.br (IM-DCC-UFRJ)C Comandos de Controle 15 de agosto de 2013 50 / 59

Break 1 O comando break pode ser tanto usado para terminar um teste case dentro de um comando switch quanto interromper a execução de um laço. 2 Quando o comando é utilizado dentro de um comando for o laço é imediatamente interrompido e o programa continua a execução no comando seguinte ao comando for. Adriano Cruz adriano@nce.ufrj.br (IM-DCC-UFRJ)C Comandos de Controle 15 de agosto de 2013 51 / 59 Break f o r (i = 0; i < 100; i ++) scanf ("%d", & num); i f ( num < 0) break ; printf ("%d\n", num); Adriano Cruz adriano@nce.ufrj.br (IM-DCC-UFRJ)C Comandos de Controle 15 de agosto de 2013 52 / 59

Break 1 O comando continue é parecido com o comando break. 2 A diferença é que o comando continue simplesmente interrompe a execução da iteração corrente passando para a próxima iteração do laço, se houver uma. 3 No comando for o controle passa a execução da express~ao3. 4 Nos comandos while e do-while o controle passa para a fase de testes. Adriano Cruz adriano@nce.ufrj.br (IM-DCC-UFRJ)C Comandos de Controle 15 de agosto de 2013 53 / 59 Exemplo f o r (i = 0; i < 100; i ++) scanf ("%d", & num); i f ( num < 0) c o n t i n u e; printf ("%d\n", num); Adriano Cruz adriano@nce.ufrj.br (IM-DCC-UFRJ)C Comandos de Controle 15 de agosto de 2013 54 / 59

goto 1 O comando goto causa um desvio incondicional para um outro ponto da função em que o comando está sendo usado. 2 O comando para onde deve ser feito o desvio é indicado por um rótulo, que é um identificador válido em C seguido por dois pontos. 3 É importante notar que o comando goto e o ponto para onde será feito o desvio podem estar em qualquer ponto dentro da mesma função. 4 A forma geral deste comando é: goto rótulo;... rótulo: comando; Adriano Cruz adriano@nce.ufrj.br (IM-DCC-UFRJ)C Comandos de Controle 15 de agosto de 2013 55 / 59 Atenção Este comando durante muito tempo foi associado a programas ilegíveis. O argumento para esta afirmação se baseia no fato de que programas com comandos goto perdem a organização e estrutura porque o fluxo de execução pode ficar saltando erraticamente de um ponto para outro. Atualmente as restrições ao uso do comando tem diminuído e seu uso pode ser admitido em alguns casos. Adriano Cruz adriano@nce.ufrj.br (IM-DCC-UFRJ)C Comandos de Controle 15 de agosto de 2013 56 / 59

exit() 1 A função exit provoca a terminação de um programa, retornando o controle ao sistema operacional. 2 O protótipo da função é a seguinte: void exit (int codigo); 3 Observar que esta função interrompe o programa como um todo. 4 O código é usado para indicar qual condição causou a interrupção do programa. 5 Usualmente o valor 0 indica que o programa terminou sem problemas. 6 Um valor diferente de 0 indica um erro. Adriano Cruz adriano@nce.ufrj.br (IM-DCC-UFRJ)C Comandos de Controle 15 de agosto de 2013 57 / 59 return 1 O comando return é usado para interromper a execução de uma função e retornar um valor à função que chamou esta função. 2 Caso haja algum valor associado ao comando return este é devolvido para a função, caso contrário um valor qualquer é retornado. 3 A forma geral do comando é: return express~ao; 4 Notar que a expressão é opcional. 5 A chave que termina uma função é equivalente a um comando return sem a expressão correspondente. 6 É possível haver mais de um comando return dentro de uma função. 7 O primeiro que for encontrado durante a execução causará o fim da execução. 8 Uma função declarada como do tipo void não pode ter um comando return que retorne um valor. Adriano Cruz adriano@nce.ufrj.br (IM-DCC-UFRJ)C Comandos de Controle 15 de agosto de 2013 58 / 59

The End Adriano Cruz adriano@nce.ufrj.br (IM-DCC-UFRJ)C Comandos de Controle 15 de agosto de 2013 59 / 59