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

37
2D A 2N A Program ação D atas Im portantes D atas Im portantes 22 de Fevereiro 23 de Fevereiro 1.A presentação do C urso 29 de Fevereiro 01 de M arço 2.Introdução 14 de M arço 15 de M arço 3.O peradores e A P 21 de M arço 22 de M arço 4.Laços e A P 28 de M arço 29 de M arço 5.C om andos de D ecisão e A P 4 de A bril 5 de A bril 6.Funções e A P 11 de A bril 12 de A bril 7.Macros 18 de A bril 19 de A bril 8.AP 25 de A bril 26 de A bril 9.1a.P rova e Entrega do 1o.TP 02 de M aio 03 de M aio 10.M atrizes e S trings 9 de M aio 10 de M aio 11.M étodos de O rdenação 16 de M aio 17 de M aio 12.M étodos de O rdenação 23 de M aio 24 de M aio 13. AP 30 de M aio 31 de M aio 14.E struturas 06 de Junho 07 de Junho 15.AP 13 de Junho 14 de Junho 16.A rquivos 20 de Junho 21 de Junho 17.AP 27 de Junho 28 de Junho 18.2a.P rova 2o.S em estre 01 de A gosto 02 de A gosto 1.P onteiros 08 de A gosto 09 de A gosto 2.P onteiros e A P 15 de A gosto 16 de A gosto 3.P onteiros e A P 22 de A gosto 23 de A gosto 4.Introdução 29 de A gosto 30 de A gosto 5.Listas 05 de S etem bro 06 de S etem bro 6.Listas 12 de S etem bro 13 de S etem bro 7.Pilhas 19 de S etem bro 20 de S etem bro 8.Pilhas 26 de S etem bro 27 de S etem bro 9.3a.P rova e Entrega 2o.TP 03 de O utubo 04 de O utubro 10.Filas 10 de O utubro 11 de O utubro 11.Filas 17 de O utubro 18 de O utubro 12.AP 24 de O utubro 25 de O utubro 13. P esq.em M em ória P rincipal 31 de O utubro 01 de N ovem bro 14. A rvores B inárias 07 de N ovem bro 08 de N ovem bro 15. Hashing 14,21 de N ovem bro 22 de N ovem bro 16.P esq.em M em ória S ecundaria 28 de N ovem bro 29 de N ovem bro 17.4a prova

Upload: internet

Post on 17-Apr-2015

124 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Laços Laço for Laço while Laço do-while Os Comandos break e Continue O Comando goto

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

Page 2: Laços Laço for Laço while Laço do-while Os Comandos break e Continue O Comando goto

Laços

• Laço for

•Laço while

•Laço do-while

•Os Comandos break e Continue

•O Comando goto

Page 3: 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)

Page 4: Laços Laço for Laço while Laço do-while Os Comandos break e Continue O Comando goto

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)

Page 5: Laços Laço for Laço while Laço do-while Os Comandos break e Continue O Comando goto

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

Page 6: Laços Laço for Laço while Laço do-while Os Comandos break e Continue O Comando goto

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:

Page 7: Laços Laço for Laço while Laço do-while Os Comandos break e Continue O Comando goto

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;

Page 8: Laços Laço for Laço while Laço do-while Os Comandos break e Continue O Comando goto

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;

Page 9: Laços Laço for Laço while Laço do-while Os Comandos break e Continue O Comando goto

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);

}

}

Page 10: Laços Laço for Laço while Laço do-while Os Comandos break e Continue O Comando goto

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 ) ;}

Page 11: Laços Laço for Laço while Laço do-while Os Comandos break e Continue O Comando goto

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

}}

Page 12: Laços Laço for Laço while Laço do-while Os Comandos break e Continue O Comando goto

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.

Page 13: Laços Laço for Laço while Laço do-while Os Comandos break e Continue O Comando goto

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 ? :

Page 14: Laços Laço for Laço while Laço do-while Os Comandos break e Continue O Comando goto

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.

Page 15: Laços Laço for Laço while Laço do-while Os Comandos break e Continue O Comando goto

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”);

}

Page 16: Laços Laço for Laço while Laço do-while Os Comandos break e Continue O Comando goto

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.”);

}

Page 17: Laços Laço for Laço while Laço do-while Os Comandos break e Continue O Comando goto

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”); } }

Page 18: Laços Laço for Laço while Laço do-while Os Comandos break e Continue O Comando goto

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.

Page 19: Laços Laço for Laço while Laço do-while Os Comandos break e Continue O Comando goto

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”); }}

Page 20: Laços Laço for Laço while Laço do-while Os Comandos break e Continue O Comando goto

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

Page 21: Laços Laço for Laço while Laço do-while Os Comandos break e Continue O Comando goto

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.”);

}

Page 22: Laços Laço for Laço while Laço do-while Os Comandos break e Continue O Comando goto

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.”);

}

Page 23: Laços Laço for Laço while Laço do-while Os Comandos break e Continue O Comando goto

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;

Page 24: Laços Laço for Laço while Laço do-while Os Comandos break e Continue O Comando goto

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”);

}

}

Page 25: Laços Laço for Laço while Laço do-while Os Comandos break e Continue O Comando goto

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;

Page 26: Laços Laço for Laço while Laço do-while Os Comandos break e Continue O Comando goto

Funções

• Funções e Estruturas de um Programa

•Funções que retoram um Valor

•Argumentos chamada por Valor

•Funções Recursivas

Page 27: Laços Laço for Laço while Laço do-while Os Comandos break e Continue O Comando goto

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 ;

Page 28: Laços Laço for Laço while Laço do-while Os Comandos break e Continue O Comando goto

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”);

}

Page 29: Laços Laço for Laço while Laço do-while Os Comandos break e Continue O Comando goto

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

Page 30: Laços Laço for Laço while Laço do-while Os Comandos break e Continue O Comando goto

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 ( );

...

Page 31: Laços Laço for Laço while Laço do-while Os Comandos break e Continue O Comando goto

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 ( ).

Page 32: Laços Laço for Laço while Laço do-while Os Comandos break e Continue O Comando goto

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 );

}

Page 33: Laços Laço for Laço while Laço do-while Os Comandos break e Continue O Comando goto

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.

Page 34: Laços Laço for Laço while Laço do-while Os Comandos break e Continue O Comando goto

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); }

Page 35: Laços Laço for Laço while Laço do-while Os Comandos break e Continue O Comando goto

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 .... }

Page 36: Laços Laço for Laço while Laço do-while Os Comandos break e Continue O Comando goto

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);

}

Page 37: Laços Laço for Laço while Laço do-while Os Comandos break e Continue O Comando goto

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));

}