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