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.

Documentos relacionados
C Comandos de Controle

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

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;

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

C Comandos de Controle

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

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

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

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

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

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

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

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

LINGUAGEM C: COMANDOS DE REPETIÇÃO

Controle de Fluxo. Laços e Desvios incondicionais

Algoritmos e Programação

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

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

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

Linguagem C (repetição)

10 Comandos de repetição

Programação I Estruturas de Repetição

Comandos de Controle do Programa

Linguagem de Programação C

Controle de Fluxo. Laços e Desvios incondicionais

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

Variáveis primitivas e Controle de fluxo

3.1 - Funções para manipular dados de entrada e saída padrão

Módulo 5. Instruções if e switch. Algoritmos e Estruturas de Dados I C++ (Rone Ilídio)

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

3. Linguagem de Programação C

LINGUAGEM C: COMANDOS DE CONTROLE CONDICIONAL

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

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

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

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

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

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

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

Desenvolvimento de Aplicações Desktop

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

Aula 7 Estruturas de Repetição Cleverton Hentz

Algoritmos e Estruturas de Dados I IEC012. Linguagem C - Estruturas de Controle - Repetição. Prof. César Melo

Estruturas de Controle

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

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

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

Laços. - receba o dinheiro - Pergunte qual refrigerante o cliente deseja - forneça o refrigerante - devolva o troco

Módulo 3 Controle de Fluxo

O comando for permite que um certo trecho de programa seja executado um determinado número de vezes. A forma do comando for é a seguinte:

Laços de repetição for, while, do-while

Aula 6 - Comandos de controle

Estruturas de Repetição

Aula 2 Comandos de Decisão

LINGUAGEM C CONTROLE DE FLUXO

Algoritmos e Técnicas de

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

Linguagem de Programação C

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

Laboratório de Programação II

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

ESTRUTURAS DE CONTROLE

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

Linguagem C. Comandos de Decisão

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

Linguagem de Programação I. Aula 07 Linguagem C: Estruturas de Controle

Estruturas de repetição

COMANDOS DE CONTROLE DE FLUXO. Luís Charneca.

Aula 06: Condicionais (switch)

Estrutura do programa

PROCESSAMENTO DA INFORMAÇÃO LAÇOS E REPETIÇÕES. Prof. Dr. Francisco Isidro Massetto

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

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

Permite modularidade (dividir programa em partes): Facilita a depuração (debug) e portabilidade.

Linguagem C estruturas de repetição

INFORMÁTICA APLICADA AULA 05 LINGUAGEM DE PROGRAMAÇÃO C++

Semana 2 Estruturas de Condição, Seleção e Repetição. Prof. Tiago Jesus de Souza

ESTRUTURAS CONDICIONAIS. Baseado nos slides de autoria de Rosely Sanches e Simone Senger de Souza

Aula 4 Estruturas de Controle

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

Linguagens de Programação I

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

Programação 1. Atribuição, operadores aritméticos, entrada de dados. Técnico em Eletrônica Semestre 5 02

Estruturas de Decisão e loops

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

Estruturas de Controle em c#

Algoritmos e Estruturas de Dados I IEC012. Linguagem C - Estruturas de Controle - Seleção. Prof. César Melo

Aula 10 Comandos de Repetição

Algoritmos e Programação

José Romildo Malaquias

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

ESTRUTURAS CONDICIONAIS. Introdução à Ciência da ComputaçãoI Simone Senger de Souza

Introdução à Programação em C

Linguagem C Estruturas de Repetição

Linguagem C (estruturas condicionais)

Material sobre Funções AEDS 1

Estruturas de Controle em Linguagem C

Transcrição:

3636363636363636363636363636363636363636363636363636 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. 5.1 - Comandos de decisões Executam testes para tomar decisões. São eles: if, o if-else e o switch. 5.1.1 - Comando IF Comando de decisão simples. Se o resultado da expressão for verdadeiro, os comandos serão executados, caso contrário, nada é feito. if (<expressão>) <comando(s)> Exemplo: /* testeif1.c */ #include <stdio.h> char ch; ch = getchar( ); if (ch == p ) printf ( Você pressionou a tecla p \n ); Podemos ter instruções múltiplas no corpo do comando if. Se existir mais de uma instrução no corpo do if, deve-se colocar chaves: - - - - - - 36

37 Exemplo: /* testeif2.c */ #include <stdio.h> main ( ) if ( getchar( ) == p ) printf( \n Voce pressionou p ); printf( \n Pressione qualquer tecla para terminar ); getchar( ); 5.1.2 - Comando IF - ELSE Determina duas ações: Uma para quando a expressão do teste for verdadeira e outra para quando for falsa. if (<expressão>) <comando1(s)>; else <comando2(s)>; Ex.1: main ( ) char ch; ch = getchar( ); if (ch == p ) printf( \n Você pressionou p ); else printf ( \n Você não pressionou p ); 37

3838383838383838383838383838383838383838383838383838 Podemos ter comandos aninhados: Ex. 2: if ( n>0 ) if ( a>b ) z = a; else z = b; obs.: O else sempre pertence ao if mais interno, em caso de dúvida utilize. Ex. 2: if ( n>0 ) if (n > 0) if ( a>b ) if (a>b) z = a; z = a; else z = b; else z = b; Ex. 3: Seja o seguinte trecho de programa: if ( a == 1) inc1 ++ ; else if (a == 2) inc2 ++; else if ( a == 3) inc3 ++; else inc ++; Todas as decisões acima dependem da variável a. Logo este trecho pode ser melhor escrito, usando o comando switch. (case no Pascal) 38

39 5.1.3 - Comando SWITCH É um comando de decisão múltipla. Verifica se uma expressão assume algum valor relacionado e executa ações de acordo com o resultado. switch < expressão > case valor1 : <comando(s)>; case valor2 : <comando(s)>;... default : <comando(s)>; O caso default é opcional, seus comandos são executados quando nenhum outro caso é satisfeito. O ex.3 do item 4.1.2 pode ser rescrito da seguinte maneira: Ex.1. Switch (a) case 1 : inc1 ++; break; case 2 : inc2 ++; break; case 3 : inc3 ++; break; default : inc ++; break; O comando break causa saída imediata do switch. Se não for usado o break, o programa continuará executando os outros comandos situados abaixo. 39

4040404040404040404040404040404040404040404040404040 Ex. 2. Seja o seguinte trecho de programa: if ( ( a == 1 ) ( a == 2 ) ( a = =3 ) ) inc123 ++; else if ( a = = 4 ) inc4 ++; else if ( a = = 5) inc5 ++; O mesmo poderia ser rescrito como: switch (a) case 1: case 2: case 3: inc123 ++; break; case 4: inc4 ++; break; case 5: inc5 ++; break; 5.2 - Comandos de iteração (laços) Controlam a repetição de um ou mais comandos. São eles: for, while e do-while. Exercício, fazer um programa Pascal que imprima os números inteiros de 0 a 9. 40

41 5.2.1 - Comando FOR É útil para repetir algo um número fixo de vezes. for (<inicialização> ; <teste> ; <incremento> ) <comando(s)>; Contém três expressões separadas por ; Ex. 1. #include <stdio.h> int i; for (i = 0 ; i < 10 ; i ++ ) printf ( conta = %d \n, i); Qual a saída do programa acima? Resposta: números inteiros de 0 a 9. Qualquer uma das expressões de um for pode conter várias instruções separadas por vírgulas. #include <stdio.h> int i; for (i = 0 ; i < 10 ; printf ( conta = %d \n, i), i ++ ); for (i = 0 ; i < 10 ; printf ( conta = %d \n, i ++ )); /* 0.. 9*/ for (i = 0 ; i < 10 ; printf ( conta = %d \n, ++i)); /* 1.. 10*/ 41

4242424242424242424242424242424242424242424242424242 Ex. 2. int x, y; for (x = 0, y = 0 ; x + y < 100 ; x ++, y ++ ) printf ( %d, x + y ); Qual a saída do programa??? Resposta: 0, 2, 4, 6, 8,..., 98. Podemos usar caracteres ao invés de inteiros: Ex. 3. main ( ) char ch; for ( ch = a ; ch< = z ; ch ++ ) printf ( VALOR ASCII de % c é %d \n, ch, ch); É possível fazer chamadas às funções, em qualquer uma das expressões do laço: Ex. 4. main ( ) char ch; for ( ch = getchar( ) ; ch!= x ; ch = getchar( ) ) printf ( %c, ch + 1 ); O que faz este programa? Resposta: Imprime o próximo da tabela em forma de caracter. 42

43 Pode-se omitir qualquer uma das três partes de um for, no entanto os ponto-e-vírgulas devem permanecer. Ex. 5. char ch; for ( ; ( ch = getchar ( ) )!= x ; ) printf ( %c, ch + 1 ); Obs.: Não tem valor inicial e nem incremento, mas no teste ele está lendo e verificando se continua ou não. Se continuar, imprime o próximo caracter. Ex. 6. for ( ; ; ) printf ( Laço Infinito \n ); Obs.: A instrução for (; ;) faz com que o laço seja infinito. Ex. 7. char ch ; for ( ; (ch = getchar( ) )!= x ; printf ( % c, ch + 1); Obs.: Não tem valor inicial, lê ch, testa condição para continuar, não executa incremento e sim outro comando e não apresenta comandos subordinados ao for. 43

4444444444444444444444444444444444444444444444444444 Podemos ter instruções múltiplas na inicialização: Ex. 8. int conta, total; for ( conta = 0, total = 0 ; conta < 10 ; conta ++ ) total + = conta; /* total = total +conta */ printf ( conta = % d, total = % d \n, conta, total ); Obs.: total foi inicializado no for, mesmo sem participar do teste e do incremento. Podemos ter laços for aninhados: Ex. 9 k = 0; for ( i = 0 ; i < m ; i ++ ) for ( j = 0 ; j < n ; j ++ ) if ( A[i] = = B[j] ) k ++ ; O que este trecho de programa faz? Resposta: Compara cada elemento de A com todos os elementos de B e conta o número de elementos repetidos em A e B. 44

45 5.2.2 - Comando WHILE Utiliza os mesmos elementos do comando for, porém de maneira diferente. while ( < expressão > ) < comando(s) > ; Ex. 1. Outra versão do Ex. 8 do item 4.2.1: int conta = 0, total = 0 ; while ( conta < 10 ) total + = conta ; printf ( conta = % d, total = % d \n, conta ++, total); Deve-se usar while em situações onde não se sabe quantas vezes um comando precisa ser executado. Ex. 2. # include <stdio.h> int cont = 0; printf ( Digite uma frase: \n ); while (getchar ( )! = \r ) /* caracter <enter> */ cont ++; printf ( \n O número de caracteres é % d, cont ); 45

4646464646464646464646464646464646464646464646464646 Podemos ter laços while aninhados. Ex. 3. Outra versão do Ex. 9 anterior, usando while: k = 0; i = 0; while ( i < m ) j = 0; while (j < n ) if ( A[i] = = B[j + +] ) k + +; i + +; 5.2.3 - Comando DO-WHILE Executa um ou mais comandos. Se o teste for verdadeiro, executa novamente os comandos. O teste é feito no final da execução do bloco. do <comando(s) > while ( < expressão > ); /* 0 */ 46

47 Ex.: Outra versão do Ex. 9 do item 4.2.1 (for): k=i=0; do j=0; do if ( A[ i ]) = = B[ j ]) k + +; j + +; while (j < n) i + +; while (i < m); do-while é menos usado do que for e while. Legibilidade : Se o teste estiver no início, é mais fácil entender o objetivo do laço. No comando do-while, se o teste for falso de início, os comandos serão executados pelo menos uma vez. 47

4848484848484848484848484848484848484848484848484848 5.3 - Comandos de desvio Realizam um desvio incondicional, ou seja, não testam condições. São eles: goto, return, break e continue. 5.3.1 - Comando GOTO Executa um desvio para a localização do programa onde está o rótulo. goto < rótulo >;... < rótulo > : < comando(s) >; O rótulo deve estar em alguma parte do programa. Programas com goto são menos legíveis e são confusos. É fácil escrever programas sem goto. 5.3.2 - Comando BREAK É utilizado em conjunto com o comando switch, conforme visto anteriormente. Quando usado dentro de um laço, causa a saída imediatamente do mesmo e vai para a próxima parte do programa: Ex.: for ( i = 0 ; i < n ; i ++ ) if ( A[i] = = x ) break; 48

49 5.3.3 - Comando CONTINUE Ao ser utilizado dentro de um laço, pula para a próxima iteração, não executando os comandos restantes. Ex.1: x = 0; for ( i = 0 ; i < n ; i + + ) x += A[i] ; i ++; if (A[i] ==0) continue; z *= A[i]; /* não será executado se A[i] for 0 */ 5.3.4 - Comando RETURN Serve para retornar de uma função, isto é, faz a execução saltar ao ponto onde a função foi chamada. Pode ter um valor associado que é o valor de retorno da função. Ex.: return(<expressão>); return(x); return( ); 5.3.5 Comando EXIT Encerra a aplicação. O status informado como parâmetro é devolvido ao sistema operacional (ao shell que estiver rodando a aplicação) Função da biblioteca stdlib.h. Ex.: exit (0); exit(<status>); 49