Buscar

Ambientes e Diretivas em Linguagem C

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 25 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 25 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 25 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

2
ª
A
u
l
a
–
L
i
n
g
u
a
g
e
m
C
Ambientes Integrados de Desenvolvimento - C
Dev-C++
( 32 bits )
2
ª
A
u
l
a
–
L
i
n
g
u
a
g
e
m
C
Ambientes Integrados de Desenvolvimento - C
Turbo C++ 3.0.pif
Observações:
Æ O ambiente Turbo C++ 3.0 foi descontinuado. Na verdade, ele é um 
antepassado de uma ferramenta muito mais moderna, que hoje recebe o nome de 
Borland Builder C++ 6.0 (já há uma versão mais recente);
Æ A grande vantagem dessa ferramenta é a sua extensa documentação 
online, não só das palavras reservadas da Linguagem C, mas principalmente em 
relação as funções da Biblioteca Padrão, com exemplos de códigos. Vale a pena 
conferir!!!
Æ Ambas as ferramentas podem ser obtidas gratuitamente na Internet, 
assim como tutoriais introdutórios (instalação, como usar, recursos básicos, etc). 
Divirtam-se!!!.
Turbo C++ 3.0
( 16 bits )
2
ª
A
u
l
a
–
L
i
n
g
u
a
g
e
m
C
Diretivas de Pré-Processamento
Nessa fase inicial, vamos nos deter apenas em duas diretivas de pré-processamento
(define e include).
Todas diretivas de pré-processamento começam com o caractere sustenido ‘#’. Na 
verdade, é um mecanismo de informar ao compilador que na sequência será
declarada uma diretiva.
A linguagem C é a única linguagem de programação que possui o conceito de pré-
processador. 
2
ª
A
u
l
a
–
L
i
n
g
u
a
g
e
m
C
Diretivas de Pré-Processamento - #define
Serve para definirmos constantes de todos os tipos de dados (char, int, float, double, 
string) e macros parametrizadas. 
Vamos começar com a declaração de constantes. Em C, há duas formas básicas de 
se declarar uma constante. Uma delas é através do uso da diretiva define. Lembre-se 
que todas as quantidades manipuladas em seu programa devem estar representadas 
na forma de uma constante ou de uma variável. É claro que muitas vezes aparece 
uma ou outra constante literal (número inteiro ou real de forma explícita).
Forma Geral:Æ Declaração de constantes
#define NOME_SIMBOLICO constante
Vale lembrar que na estrutura geral de um programa em C, as diretivas aparecem logo 
no início.
2
ª
A
u
l
a
–
L
i
n
g
u
a
g
e
m
C
Diretivas de Pré-Processamento
Exemplos:Æ Declaração de constantes simbólicas (constantes com nome)
#define MAX 100
#define MSG1 “Erro de Entrada!!!”
#define MSG2 “Introduza um valor inteiro positivo: ”
#define LETRA_A ‘A’
#define LETRA_a ‘a’
#define ERRO1 0.0000000001
#define ERRO2 1.0E-008
#define ERRO3 1.0e-010
#define PI 3.141592654
#define PIOVER180 0.017453
#define PIUNDER180 57.29578
#define SQRT2 1.414214
A idéia básica de se utilizar constantes simbólicas (constantes nomeadas) é tornar 
o código mais legível e facilitar a sua manutenção. Em tempo de pré-
processamento, todas as constantes simbólicas são substituídas pelos respectivos 
valores.
2
ª
A
u
l
a
–
L
i
n
g
u
a
g
e
m
C
Diretivas de Pré-Processamento - #define
Um outro uso muito comum da diretiva define é na definição de macros 
parametrizadas. 
Forma Geral:Æ Declaração de macros parametrizadas
#define NOME_SIMBOLICO(parametros) expressao_associada
#define SQR(x) ((x)*(x))
#define AREA_CIR(r) (PI*SQR(r)) 
#define DEGTORAD(x) (x*PIOVER180)
#define RADTODEG(x) (x*PIUNDER180)
Exemplos:Æ Algumas Macros parametrizadas
180º
75ºx
π →
→Lembrando que:Æ
2
ª
A
u
l
a
–
L
i
n
g
u
a
g
e
m
C
Operador Condicional (?:)
Forma Geral: exp1 ? exp2 : exp3
Significado : Se exp1 for verdadeira, então, exp2, senão, exp3.
#define MAX3(a,b,c) ( (a>=MAX2(b,c)) ? a : MAX2(b,c))
##define ABS(x) ((x >=0) ? (x): (-x))
#define PAR(x) ((x%2 == 0) ? 1 : 0)
#define MAX2(a,b) ( (a >= b) ? a : b )
Boa Prática de Programação:Æ Escreva todas as constantes simbólicas e o 
nome das macros parametrizadas com letras MAIÚSCULAS.
Uma outra forma de macros parametrizadas envolve o uso operador condicional 
(operador ternário). 
Operador Condicional:Æ ?:
2
ª
A
u
l
a
–
L
i
n
g
u
a
g
e
m
C
Diretivas de Pré-Processamento - #include
A diretiva include permite incluir qualquer biblioteca (conjunto de 
funções), seja da Biblioteca Padrão da linguagem C, ou uma outra 
biblioteca que você tenha escrito ou obtido. Vamos aprender a usar este 
último recurso mais a frente.
A idéia ao incluir uma biblioteca em seu programa é poder fazer uso de uma 
ou mais funções pertencentes a ela.
Forma Geral: #include <nome_cabecalho.h>
Exemplos:Æ
#include <math.h> // funções matemáticas
#include <ctype.h> // funções de manipulaçao de caracteres
#include <stdio.h> // funções de entrada e saída
2
ª
A
u
l
a
–
L
i
n
g
u
a
g
e
m
C
Estruturas de Controle de Seleção
Como escolher um, entre os possíveis caminhos a seguir.
2
ª
A
u
l
a
–
L
i
n
g
u
a
g
e
m
C
Estruturas de Controle de Seleção
Linguagem C
•Comando if
Comandos de Seleção (condicionais) 
•Comando switch
Selecionam o curso de uma ação entre várias ações possíveis, dependendo 
do valor de uma expressão (constante, aritmética, boleana). Vale lembrar 
que em C, todo valor diferente de zero é verdadeiro.
Palavras reservadas a serem exploradas nas próximas duas aulas : 
if, else, switch, case, break e default.
2
ª
A
u
l
a
–
L
i
n
g
u
a
g
e
m
C
Pseudocódigo
...
se ( expressão boleana )
então
inicio
comandos1
fim
senão
inicio
comandos2
fim
próxima instrução;
...
Linguagem C
...
if ( expressão ) {
comandos1;
}
else {
comandos2;
}
próxima instrução;
...
Comando de Seleção - if
2
ª
A
u
l
a
–
L
i
n
g
u
a
g
e
m
C
Forma geral Æ
if ( expressão ) {
comandos1;
}
else {
comandos2;
}
¾ expressão pode ser uma expressão aritmética ou boleana, uma constante ou 
uma variável;
¾ se a expressão for verdadeira, ou seja ,se o seu valor/resultado for diferente de 0 
(zero), então as instruções associadas a comandos1 serão executadas, senão
(caso contrário) , as instruções associadas a comandos2 serão executadas.
¾ a ação associada a cláusula (ação) else NÃO É OBRIGATÓRIA.
Onde:Æ
Comando de Seleção - if
if ( a%2 == 0 ){
sp = sp+a;
qp = qp+1;
}
else {
si = si +a;
qi = qi+1;
}
proxima_instrução;
Exemplo :
2
ª
A
u
l
a
–
L
i
n
g
u
a
g
e
m
C
Quando o número de if’s e de else’s forem diferentes você deve explicitar a 
relação entre eles por meio de chaves ( ‘{‘ ,’}’ ). Caso contrário, o compilador assume 
que o 1ª else está associado ao útimo if, e, assim, sucessivamente.
Exemplo:
if ( a>b )
if ( a == c+5 ) b = a*c;
else c = a+b+c;
Nesse caso o compilador interpreta que o último else esta associado ao if mas 
interno. Se não fosse esse seu desejo, ou seja, se a ação else devesse estar 
associada ao if mais externo, você deveria reescrever as instruções acima do 
seguinte modo: 
Comando de Seleção - if
if ( a>b ) {
if ( a == c+5 ) b = a*c; }
else c = a+b+c;
Lembre-se que a endentação do código serve apenas para facilitar a leitura e não 
para induzir uma estrutura lógica.
2
ª
A
u
l
a
–
L
i
n
g
u
a
g
e
m
C
Variantes da Forma Geral:Æ
Comando de Seleção - if
. . .
if (expressão) comando1;
proxima_instrução;
... 
Condição a 
ser avaliada
comando1 será
executado, somente 
no caso da expressão 
ser verdadeira ( ≠ 0 )
Observe que no código acima, a ação else não está presente.
2
ª
A
u
l
a
–
L
i
n
g
u
a
g
e
m
C
Exemplos : ...
if ( a>=c ) a = a+c;
b = a + 3*b; 
...
...
if ( a%2 == 0 )
printf (“O numero %d é PAR”,a);
b = a + 3*b;
...
if (a) b++;
b = a + 3*b;
Nos exemplos acima, quando a instrução b = a + 3b será executada?
Comando de Seleção - if
2
ª
A
u
l
a
–
L
i
n
g
u
a
g
e
m
C
if ( expressão ) {
comando1; 
comando2; 
... 
comandon;
}
proxima_instrução;
Observe que no código acima, a ação else também não está presente. Entretanto, 
se expressão for verdadeira, todos os n comandos/instruções no interior do blocodelimitado pelo par de chaves ‘{‘ e ‘}’ serão executados.
Comando de Seleção - if
Variantes da Forma Geral:Æ
2
ª
A
u
l
a
–
L
i
n
g
u
a
g
e
m
C
Exemplos :
...
if ( a%2 == 0 ) {
s = s+a; // s += a;
qp = qp+1; // qp++;
}
proxima_instrução;
...
...
if (a) {
a = a+b; // a += b;
c = a+c; // c += c;
j++;
}
proxima_instrução;
...
...
if ( 0 ) {
a = a+b;
c = a+c;
j++;
}
proxima_instrução;
...
Quando as instruções no 
interior deste comando 
serão executadas?
Comando de Seleção - if
2
ª
A
u
l
a
–
L
i
n
g
u
a
g
e
m
C
...
if ( expressão ) comando1;
else comando2;
proxima_instrução;
...
Observe que no código acima, a ação else está presente. Lembre-se que nesse 
caso, comando1 e comando2 são mutuamente excludentes, ou seja, apenas um 
deles será executado. 
if (a%2==0)printf(“o número %d é PAR”,a);
else printf(“o número %d é IMPAR”,a);
proxima_instrução; 
Exemplo :
Comando de Seleção - if
Variantes da Forma Geral:Æ
if ( PAR(a) )printf(“o número %d é PAR”,a);
else printf(“o número %d é IMPAR”,a);
proxima_instrução; 
2
ª
A
u
l
a
–
L
i
n
g
u
a
g
e
m
C
Comando de Seleção – if´s Aninhados
Um seqüência de comandos if’s, “um dentro do outro” é chamado de if´s aninhados. 
Usamos esta estrutura para selecionar uma ação entre múltiplas (>2) ações possíveis. Em 
certos contextos esta estrutura aninhada de if´s pode ser substituída por um comando 
switch, aumentando a legibilidade do código, sem que ocorra alterações do ponto de vista 
lógico.
Forma Geral de um if aninhado:
if (expressão 1)
if (expressão 2)
if (expressão 3) comando31;
else comando32;
else comando21;
else comando11; 
Nesse exemplo temos uma quantidade de if’s igual ao de else’s. Assim o 1ª else
corresponde ao ultimo if, o 2º else corresponde ao penúltimo if e, assim sucessivamente . 
Em que situação o comando31 seria executado? E o comando21? E o comando11?
2
ª
A
u
l
a
–
L
i
n
g
u
a
g
e
m
C
Comando de Seleção – if´s Aninhados
Problema:Æ Leia um numero inteiro no intervalo [1,7] e escreva o respectivo dia da 
semana, supondo que 1 seja segunda-feira e 7 seja domingo. 
Exemplo de if’s alinhados
if(x==1)
else if (x==2)
else if(x==3)
else if(x==4)
else if(x==5)
else if (x==6)
else
else printf (“o valor de entrada esta incorreto!!!”);
...
printf(“\n segunda feira”);
printf(“\n terça feira”);
printf(“\n quarta feira”);
printf (“\n quinta feira”);
printf (“\n sexta feira”);
printf (“\n sabado”);
printf (“\n domingo”);
...
if ( (x >= 1)&&( x<= 7) )
2
ª
A
u
l
a
–
L
i
n
g
u
a
g
e
m
C
Comando de Seleção – if´s Aninhados
Observe que endentação usada no slide anterior serve apenas para facilitar a leitura do 
código, ela não induz nenhuma estrutura lógica. O mesmo código poderia ser escrito, por 
exemplo, da seguinte forma:
if(x==1)
else if (x==2)
else if(x==3)
else if(x==4)
else if(x==5)
else if (x==6)
else
else printf (“o valor de entrada esta incorreto!!!”);
...
printf(“\n segunda feira”);
printf(“\n terça feira”);
printf(“\n quarta feira”);
printf (“\n quinta feira”);
printf (“\n sexta feira”);
printf (“\n sabado”);
printf (“\n domingo”);
...
if ( (x >= 1)&&( x<= 7) )
2
ª
A
u
l
a
–
L
i
n
g
u
a
g
e
m
C
Comando de Seleção – if´s Aninhados
Uma outra maneira de endentar o código anterior seria:
...
if ( (x >= 1)&&( x<= 7) ) if (x ==1) printf(“\n segunda-feira”);
else if (x == 2) printf(“\n terça-feira”); else if (x == 3)
printf(“\n quarta-feira”); else if (x == 4) 
printf(“\n quinta-feira”); else if (x ==5)
printf(“\n sexta-feira”); else if (x == 6) printf(“\n sabado”);
else printf(“\n domingo”); else
printf(“\n o valor da entrada esta incorreto!!!”);
...
Como já foi dito, para o Compilador é indiferente a forma como você escreve e endenta o 
seu código (desde que este esteja correto, é claro!!!). Ele não terá qualquer problemas em 
gerar o código objeto e seguir para as demais etapas do processo de compilação, ou seja, 
do ponto de vista lógico não há qualquer diferença entre os códigos anteriores.
Observe novamente os códigos anteriores e verifique qual deles é mais fácil de ser 
compreendido (mais legível) por você e por outros humanos supostamente normais. 
2
ª
A
u
l
a
–
L
i
n
g
u
a
g
e
m
C
Comando de Seleção - if
Exemplo: Encontre as raízes (reais ou complexas) de uma equação do segundo grau.
2 0, 0.ax bx c a+ + = ≠Análise do problema: O que nós sabemos?
Se
Æ Raízes reais
Æ Raízes complexas
0Δ ≥
0Δ <
Solução real:
( )
2 4b acΔ = −Onde:
1 2
bx
a
− + Δ=
2 2
bx
a
− − Δ=0Δ ≥
2
ª
A
u
l
a
–
L
i
n
g
u
a
g
e
m
C
Comando de Seleção - if
recordar é viver: Æ Como o grau do polinômio é par (2) e as raízes são complexas, 
uma é conjugada da outra: a+bi e a-bi.
Solução complexa:
( )
2 4b acΔ = −
Onde:
1 *2 2
bx i
a a
Δ−= +
2 *2 2
bx i
a a
Δ−= −0Δ <
re im
1i = −
printf(“Raiz complexa 1: %f + %f *i”,re, im);
printf(“Raiz complexa 1: %f - %f *i”,re, im);
As saídas associadas a solução complexa (raízes) poderiam ser do tipo:
Após a solução do problema (escrita do programa), procure melhorar sua saída 
determinando a largura do campo e fixando um número de casas decimais.
2
ª
A
u
l
a
–
L
i
n
g
u
a
g
e
m
C
Comando de Seleção - if
O programa com a solução do exercício anterior (equação do segundo grau), 
será enviado juntamente com as Notas de Aula.
Abrir e comentar o programa com a solução do exercício anterior. Alterar e 
acrescentar algumas constantes simbólicas.
Reescreva em C, todos os pseudocódigos envolvendo 
estruturas de Controle de Seleção.

Outros materiais