2DA
2NA
Datas Importantes Datas Importantes
22 de Fevereiro
29 de Fevereiro
14 de Março
21 de Março
28 de Março
4 de Abril
11 de Abril
18 de Abril
25 de Abril
02 de Maio
9 de Maio
16 de Maio
23 de Maio
30 de Maio
06 de Junho
13 de Junho
20 de Junho
27 de Junho
Programação
23 de Fevereiro
01 de Março
15 de Março
22 de Março
29 de Março
5 de Abril
12 de Abril
19 de Abril
26 de Abril
03 de Maio
10 de Maio
17 de Maio
24 de Maio
31 de Maio
07 de Junho
14 de Junho
21 de Junho
28 de Junho
1. Apresentação do Curso
2. Introdução
3. Operadores e AP
4. Laços e AP
5. Comandos de Decisão e AP
6. Funções e AP
7. Macros
8. AP
9. 1a. Prova e Entrega do 1o.TP
10. Matrizes e Strings
11. Métodos de Ordenação
12. Métodos de Ordenação
13. AP
14. Estruturas
15. AP
16. Arquivos
17. AP
18. 2a.Prova
02 de Agosto
09 de Agosto
16 de Agosto
23 de Agosto
30 de Agosto
06 de Setembro
13 de Setembro
20 de Setembro
27 de Setembro
04 de Outubro
11 de Outubro
18 de Outubro
25 de Outubro
01 de Novembro
08 de Novembro
22 de Novembro
29 de Novembro
1.
2.
3.
4.
5.
6.
7.
2o. Semestre
01 de Agosto
08 de Agosto
15 de Agosto
22 de Agosto
29 de Agosto
05 de Setembro
12 de Setembro
19 de Setembro
26 de Setembro
03 de Outubo
10 de Outubro
17 de Outubro
24 de Outubro
31 de Outubro
07 de Novembro
14,21 de Novembro
28 de Novembro
Ponteiros
Ponteiros e AP
Ponteiros e AP
Introdução
Listas
Listas
Pilhas
8. Pilhas
9. 3a.Prova e Entrega 2o. TP
10. Filas
11. Filas
12. AP
13.Pesq.em Memória Principal
14.Arvores Binárias
15.Hashing
16. Pesq. em Memória Secundaria
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
Sintaxe :
for(inicialização;teste;incremento)
• 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);
}
Laço for
Sintaxe :
for(inicialização;teste;incremento)
• 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);
}
Laço for Aninhado
Quando um laço esta dentro de outro laço,
dizemos que o laço interior está 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”);
}
}
}
Laço for Aninhado
Saída do Programa:
Tabuada do 2
Tabuada do 3 ...
2x1=2
3x1=3
...
2x2=4
3x2=6
...
2x3=6
3x3=9
...
2x4=8
3 x 4 = 12
...
.
.
.
.
.
.
Tabuada do 6
Tabuada do 7 ...
6x1=6
6 x 2 = 12
.
.
.
7x1=7
7 x 2 = 14
.
.
.
...
...
Laço while
Sintaxe: while ( expressão de teste )
instrução;
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 );
}
}
Laço while
Sintaxe: while ( expressão de teste )
instrução;
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
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 chamados
lógicos:
&& lógico E
||
lógico OU
!
Lógico de negação
Operadores lógicos são aplicados a expressões
relacionais.
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 switch
main ( ) {
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 Condicional
Ternário ?:
Sintaxe:
Ex.:
condição ? Expr1 : Expr2
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 Simples
Sã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 retornam
um 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 como
argumento
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 valor
Em 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));
}
Download

Ex.