laços laço for laço while laço do-while os comandos break e continue o comando goto
TRANSCRIPT
![Page 1: Laços Laço for Laço while Laço do-while Os Comandos break e Continue O Comando goto](https://reader036.vdocuments.mx/reader036/viewer/2022062312/552fc112497959413d8c6874/html5/thumbnails/1.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062312/552fc112497959413d8c6874/html5/thumbnails/2.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062312/552fc112497959413d8c6874/html5/thumbnails/3.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062312/552fc112497959413d8c6874/html5/thumbnails/4.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062312/552fc112497959413d8c6874/html5/thumbnails/5.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062312/552fc112497959413d8c6874/html5/thumbnails/6.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062312/552fc112497959413d8c6874/html5/thumbnails/7.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062312/552fc112497959413d8c6874/html5/thumbnails/8.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062312/552fc112497959413d8c6874/html5/thumbnails/9.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062312/552fc112497959413d8c6874/html5/thumbnails/10.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062312/552fc112497959413d8c6874/html5/thumbnails/11.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062312/552fc112497959413d8c6874/html5/thumbnails/12.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062312/552fc112497959413d8c6874/html5/thumbnails/13.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062312/552fc112497959413d8c6874/html5/thumbnails/14.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062312/552fc112497959413d8c6874/html5/thumbnails/15.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062312/552fc112497959413d8c6874/html5/thumbnails/16.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062312/552fc112497959413d8c6874/html5/thumbnails/17.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062312/552fc112497959413d8c6874/html5/thumbnails/18.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062312/552fc112497959413d8c6874/html5/thumbnails/19.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062312/552fc112497959413d8c6874/html5/thumbnails/20.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062312/552fc112497959413d8c6874/html5/thumbnails/21.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062312/552fc112497959413d8c6874/html5/thumbnails/22.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062312/552fc112497959413d8c6874/html5/thumbnails/23.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062312/552fc112497959413d8c6874/html5/thumbnails/24.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062312/552fc112497959413d8c6874/html5/thumbnails/25.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062312/552fc112497959413d8c6874/html5/thumbnails/26.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062312/552fc112497959413d8c6874/html5/thumbnails/27.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062312/552fc112497959413d8c6874/html5/thumbnails/28.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062312/552fc112497959413d8c6874/html5/thumbnails/29.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062312/552fc112497959413d8c6874/html5/thumbnails/30.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062312/552fc112497959413d8c6874/html5/thumbnails/31.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062312/552fc112497959413d8c6874/html5/thumbnails/32.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062312/552fc112497959413d8c6874/html5/thumbnails/33.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062312/552fc112497959413d8c6874/html5/thumbnails/34.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062312/552fc112497959413d8c6874/html5/thumbnails/35.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062312/552fc112497959413d8c6874/html5/thumbnails/36.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062312/552fc112497959413d8c6874/html5/thumbnails/37.jpg)
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));
}