laços laço for laço while laço do-while os comandos break e continue o comando goto

Post on 17-Apr-2015

124 Views

Category:

Documents

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

2DA 2NA Programação

Datas Importantes Datas Importantes

22 de Fevereiro 23 de Fevereiro 1. Apresentação do Curso

29 de Fevereiro 01 de Março 2. Introdução

14 de Março 15 de Março 3. Operadores e AP

21 de Março 22 de Março 4. Laços e AP

28 de Março 29 de Março 5. Comandos de Decisão e AP

4 de Abril 5 de Abril 6. Funções e AP

11 de Abril 12 de Abril 7. Macros

18 de Abril 19 de Abril 8. AP

25 de Abril 26 de Abril 9. 1a. Prova e Entrega do 1o.TP

02 de Maio 03 de Maio 10. Matrizes e Strings

9 de Maio 10 de Maio 11. Métodos de Ordenação

16 de Maio 17 de Maio 12. Métodos de Ordenação

23 de Maio 24 de Maio 13. AP

30 de Maio 31 de Maio 14. Estruturas

06 de Junho 07 de Junho 15. AP

13 de Junho 14 de Junho 16. Arquivos

20 de Junho 21 de Junho 17. AP

27 de Junho 28 de Junho 18. 2a.Prova

2o. Semestre

01 de Agosto 02 de Agosto 1. Ponteiros

08 de Agosto 09 de Agosto 2. Ponteiros e AP

15 de Agosto 16 de Agosto 3. Ponteiros e AP

22 de Agosto 23 de Agosto 4. Introdução

29 de Agosto 30 de Agosto 5. Listas

05 de Setembro 06 de Setembro 6. Listas

12 de Setembro 13 de Setembro 7. Pilhas

19 de Setembro 20 de Setembro 8. Pilhas

26 de Setembro 27 de Setembro 9. 3a.Prova e Entrega 2o. TP

03 de Outubo 04 de Outubro 10. Filas

10 de Outubro 11 de Outubro 11. Filas

17 de Outubro 18 de Outubro 12. AP

24 de Outubro 25 de Outubro 13.Pesq.em Memória Principal

31 de Outubro 01 de Novembro 14.Arvores Binárias

07 de Novembro 08 de Novembro 15.Hashing

14,21 de Novembro 22 de Novembro 16. Pesq. em Memória Secundaria

28 de Novembro 29 de Novembro 17. 4a prova

Laços

• Laço for

•Laço while

•Laço do-while

•Os Comandos break e Continue

•O Comando goto

Laço for

• As três expressões acima, podem ser compostas por qualquer expressão válida em C.

Ex.:

main( )

{

int conta;

for( conta=0;conta<10;conta++)

printf(“conta=%d\n”, conta);

}

Sintaxe : for(inicialização;teste;incremento)

Laço for

• No exemplo anterior, usamos a forma mais simples para as três expressões do laço for. Qualquer uma das expressões do laço pode conter várias instruções separadas por vírgula. Ex.:

main( )

{

int x,y;

for ( x=0, y=0; x+y<100; x+=1, y+=1)

printf(“x+y=%d\n”, x+y);

}

Sintaxe : for(inicialização;teste;incremento)

Laço for Aninhado

Ex.:

main( )

{

int i, j, k;

printf (“\n”);

for ( k=0; k<=1; k++) {

printf ( “\n”);

for (i=1; i<5; i++)

printf (“Tabuada do %3d”, i+4*k+1);

printf (“\n”);

for ( i=1; i<=9; i++) {

for ( j=2+4*k; j<=5+4*k; j++)

printf (“%3d x %3d = %3d “ , j, i, j*i);

printf (“\n”);

}

}

}

Quando um laço esta dentro de outro laço, dizemos que o laço interior está aninhado

Laço for Aninhado

Tabuada do 2 Tabuada do 3 ...

2 x 1 = 2 3 x 1 = 3 ...

2 x 2 = 4 3 x 2 = 6 ...

2 x 3 = 6 3 x 3 = 9 ...

2 x 4 = 8 3 x 4 = 12 ...

. . . . . .

Tabuada do 6 Tabuada do 7 ...

6 x 1 = 6 7 x 1 = 7 ...6 x 2 = 12 7 x 2 = 14 ...

. .

. .

. .

Saída do Programa:

Laço while

Se a expressão de teste for verdadeira ( diferente de zero ), as instruções são executadas uma vez e a expressão de teste é validada novamente.

Ex.:

main ( )

{ int conta=0; int total=0; while ( conta < 10 ) {

total += conta;printf (“conta=%d, total=%d\n”, conta++, total );

}}

Sintaxe: while ( expressão de teste ) instrução;

Laço while

Saída :

conta=0 , total =0

conta=1 , total =1

conta=2 , total =3

conta=3 , total =6

conta=4 , total =10

conta=5 , total =15

conta=6 , total =21

conta=7 , total =28

conta=8 , total =36

conta=9 , total =45

Sintaxe: while ( expressão de teste ) instrução;

Laço while aninhado

Ex.:

main ( )

{

int num;

long resposta;

while (1) {

printf (“\n Digite o numero: “);

scanf ( “%d”, &num);

resposta=1;

while ( num >1)

resposta*=num--;

printf (“O fatorial é: %ld\n”,resposta);

}

}

Laço do-while Sintaxe: do {

instrução;

} while (expressão de teste);

Neste laço a expressão de validação se encontra após as instruções, o que significa que estas serão executadas pelo menos uma vez.Ex.:main ( ){ int num; long resposta; do {

printf (“\nDigite o numero:”);scanf (“%d”, &num);resposta=1;while (num >1 )

resposta *= num--;printf (“O fatorial é: %ld\n”, resposta);

} while ( 1 ) ;}

Comando break e continue

O comando break é usado em qualquer

estrutura de Laço C para interromper

sua execução.

Ex.:main ( ){ int num; long resposta; while ( 1 ) {

printf (“\nDigite o numero:”);scanf (“%d”, &num);resposta=1;while (num >1 )

resposta *= num--;printf (“O fatorial é: %ld\n”, resposta);break

}}

Comando break e continue

O comando “continue” força a próxima

interação do laço e pula o código que

estiver abaixo.

Comando goto

goto parte 1; // rotulo

parte1:

printf ( “Análise dos Resultados\n”);

não é muito recomendável a utilização

de goto em programas.

Comandos de Decisões

• O Comando if

•Comando if-else

•Operadores Lógicos

| | & & !

•O Comando else-if

•O Comando switch

•O Operador Condicional Ternário ? :

Comando if

O comando if é usado em decisões simples

Sintaxe: if ( expressão de teste )

instrução;Ex.:main ( ){

char ch;

ch = getche ( );

if ( ch == ‘ p’)

printf (“\n Você Digitou a Tecla %c.”, ch);

}

Resultado:

Você Digitou a Tecla p.

Comando if aninhado

O comando if pode estar dentro de outro

comando if. Dizemos então que o if interno

está aninhado.

Ex.:main ( ){

char ch;

printf (“\n Digite uma letra de ‘a’ a ‘z’:”);

ch = getche ( );

if ( ch >= “a”)

if ( ch <= “z”)

printf (“\n Você Digitou certo”);

}

Comando if-else

Nos exemplos anteriores o comando if executará uma única instrução ou um grupo de instruções, se a expressão de teste for verdadeira. Não fará nada se a expressão for falsa.

O comando else associado ao if, executará um grupo de instruções, se a expressão de teste for falsa.Ex.:main ( ){

char ch;

ch = getche ( );

if ( ch == “p”)

printf (“\n Você Digitou certo”);

else

printf (“\n Você não precionol a tecla p.”);

}

Comandos if-else aninhados

Nos exemplos anteriores o comando if executará uma única instrução ou um grupo de instruções, se a expressão de teste for verdadeira. Não fará nada se a expressão for falsa.

Ex.:main ( ){ int x,y; for (y=1;y<24;y++) { for (x=1;x<24;x++)

if (x==y) printf (“\xDB”);else if (x==24-y) printf (“\xDB”); else printf (“\xBO);

printf (“\n”); } }

Operadores Lógicos

A linguagem C oferece 3 operadores chamadoslógicos:

&& lógico E| | lógico OU ! Lógico de negação

Operadores lógicos são aplicados a expressõesrelacionais. Se EXP1 e EXP2 são duas expressões simples,então:

EXP1 && EXP2 é verdadeiro se as duas expressões forem TRUE.

EXP1 | | EXP2 é verdadeiro se apenas uma das duas for verdadeira.

! EXP1 é verdadeira se EXP1 for falsa e vice-versa.

Ex.:main ( ){ int x,y; for (y=1;y<24;y++) { for (x=1;x<24;x++)

if (x==y | | x==24-y) printf (“\xDB”);else printf (“\xBO”);

printf (“\n”); }}

Operadores

Precedências

Operadores Tipos

! - ++ -- unários; não lógicos* / % aritméticos+ - aritméticos< > <= >= relacionais== != relacionais && lógico E| | lógico OU= += -= *= /= %= aritméticos atribuição

Comando else-if

Utilizamos o comando else-if quando desejamos

realizar um série de testes aninhados.

Ex.:main ( ){

char ch;

ch = getche ( );

if ( ch == “p”)

printf (“\n Você Digitou a letra p.”);

else

if ( ch == “m”)

printf (“\n Você Digitou a tecla m.”);

}

Comando break associado ao if

Utilizamos o comando break quando ocorre

uma condição repentina onde é necessário

deixar o laço antes da expressão do laço se

torna falsa.Ex.:main ( ){

char ch=“”;

while ( ch != “q”) {

ch = getche ( );

if ( ch == “p”) {

printf (“\n Você Digitou a letra p.”);

break;

}

else

if ( ch == “m”)

printf (“\n Você Digitou a tecla m.”);

}

Comando switch

Similar ao else-if mas tem maior flexibilidade

e formato limpo e claro.

Sintaxe :switch ( expressão constante) case constante1:

instruções;break;

case constante2:instruções;break;

. . . . default :

instruções;

Comando switchmain ( ) {

float num1, num2;

char op;

while(1) {

printf ( “Digite um num., operador, numer\n”);

scanf (“%f %c %f”,&num1,&op,&num2);

switch (op) {

case ‘+’:

printf (“ =%f”, num1+num2);

break;

case ‘-’:

printf (“ =%f”, num1-num2);

break;

case ‘*’:

case ‘x’: printf (“ =%f”, num1*num2); break;case: ‘/’:case ‘\’:

printf (“=%f”, num1/num2);break;

default: printf (“ Operador Desconhecido”);

}

printf (“\n\n”);

}

}

Operador CondicionalTernário ?:

Sintaxe: condição ? Expr1 : Expr2

Ex.: max = ( Num1 > Num2) ? Num1 : Num2;

esta expressão é equivalente a:

if ( Num1 > Num2)

max= Num1;

else

max=Num2;

Funções

• Funções e Estruturas de um Programa

•Funções que retoram um Valor

•Argumentos chamada por Valor

•Funções Recursivas

Funções e Estruturas de um Programa

• Dividem grandes tarefas de computação em

tarefas menores;

• Geram reaproveitamento de código;

• Unidade de código de programa autônoma;

• A programação em “C”geralmente consiste

em várias pequenas funções;

• Minimiza a duplicidade de códigos ;

Funções SimplesSão funções que não recebem e nem geram

parâmetros.

Ex.:int linha( );main ( ){

linha( );

printf(“\xDB Um Programa em C \xDB\n”);

linha ( );

}

linha ( )

{

int j;

for (j=1;j<=20;j++)

printf(“\xDB”);

printf(“\n”);

}

Estruturas das Funções em C

São funções que têm a forma semelhante a da

função main ( ):

Sintaxe: retorno nome da função (argumentos) {

Lista de Comandos;

. . .

}

onde : retorno = tipo da variável de retorno

nome da função = nome representativo

argumentos = parâmetros da função

lista de comandos = instruções

Chamando Funções em C

Do mesmo modo que chamamos uma função

de uma biblioteca C (printf ( ) , scanf ( ),

getch ( ) , etc ) chamamos nossas próprias

funções como linha ( ).

Ex.:

... linha ( );

...

Variáveis Locais em C

Cada função pode chamar outras funções. A

função linha ( ) chama a função printf ( ) e a

função main ( ) chama linha ( ), scanf ( ) e

getch ( ) .

As variáveis que são declaradas dentro de uma

função são chamadas de variáveis locais e são

conhecidas somente dentro de seu próprio

bloco.

Variáveis locais existem apenas durante a

execução do bloco de código onde estão

declaradas.

A variável j criada na função linha ( ) é

conhecida somente em linha ( ); e é invisível

à função main ( ).

Funções que retornamum Valor em C

Você já usou uma função deste tipo, getche ( )

que devolve, à função que chama, o valor do

primeiro caracter pressionado no teclado.

O próximo programa cria uma função que lê

um caracter do teclado e, se for maiúsculo,

converte-o em minúsculo.

char minusculo ( );

main ( )

{ char ch;

printf (“Digite ‘a’ e depois ‘b’:”);

ch=minusculo( );

printf (“\n Você pressionou %c.”,ch);

}

char minusculo ( )

{ char ch;

ch=geche( );

if (ch >=‘A’ && ch <=‘Z’)

ch+=‘a’-’A’;

return ( ch );

}

O Comando Return ( )

O comando return causa a atribuição de

qualquer expressão entre parênteses à função

contendo o return.

A variável ch é local a minúsculo, mas

o valor de ch é mandado para main ( ) pelo

comando return. E este valor pode ser

atribuido a uma variável, como no nosso

exemplo, ou fazer parte de alguma expressão.

char minusculo( );

main ( )

{ char ch;

printf (“Digite ‘a’ e depois ‘b’:”);

ch=minusculo( );

printf (“\n Você pressionou %c.”,ch);

}

Entretanto existem limitações para o return

pois este comando pode retornar somente um

único valor.

Passando dados à função Chamada.

O mecanismo usado para transmitir

informações à uma função é chamado

argumento.

Nós já utilizamos argumentos nas

funções printf ( ) e scanf ( ).

int abs ( x );

main ( )

{ printf (“%d %d %d\n”,abs(0), abs(-3),

abs(10) );

}

abs ( x )

int x;

{

return( (x<0)? -x:x);

}

ou

abs ( int x )

{ return( (x<0)? -x:x); }

Passando variáveis comoargumento

Podemos também passar variáveis

da função que chama ao invés de um valor.

Ex.:

int abs ( int );

main ( )

{ int a=-3;

printf (“%d %d %d\n”, abs(a) );

}

abs ( int x )

{

return( (x<0)? -x:x);

}

E ainda, podemos passar vários argumentos

para uma determinada função.

Ex.:

retangulo (int largura, int altura)

{ instruções .... }

Argumentos chamada por valorEm C, todos os argumentos de uma

função são passados “por valor”.

Isto significa que à função chamada

é dada uma cópia dos valores dos argumentos,

e ela cria outras variáveis temporárias para

armazenar estes valores.

Ex.:

int abs ( int );

main ( )

{ int a=-3;

printf (“%d %d %d\n”, abs(a) );

}

abs ( int x )

{

return( (x<0)? -x:x);

}

Funções Recursivas

Uma função é dita recursiva se é

definida em termos de si mesma. Isto é, uma

função é recursiva quando dentro dela está

presente uma chamada a ela própria.

Ex.:

main ( )

{ int num;

long fac( int );

while (1){

printf (“Digite um numero:” );

scanf(“%d”, &num);

printf (“\nFatorial de %d é %1d”

num, fac(num) );

}

}

long fac ( int n)

{ long resposta;

return( (n==0)? 1:resposta=(fac(n-1)*n));

}

top related