LINGUAGEM C 1 Introdução A linguagem C foi criada por Dennis Ritchie, em 1972, no centro de Pesquisas da Bell Laboratories. Sua primeira utilização importante foi a reescrita do Sistema Operacional UNIX, que até então era escrito em assembly. Em meados de 1970 o UNIX saiu do laboratório para ser liberado para as universidades. Foi o suficiente para que o sucesso da linguagem atingisse proporções tais que, por volta de 1980, já existiam várias versões de compiladores C oferecidas por várias empresas, não sendo mais restritas apenas ao ambiente UNIX, porém compatíveis com vários outros sistemas operacionais. Em 1983, a ANSI (American National Standards Institute) fundou uma comissão para definir uma versão padronizada para a linguagem C. Esta versão chamou-se ANSI C. Desta forma, simplesmente compilando o código fonte em qualquer sistema, um programa escrito em ANSI C funciona em praticamente qualquer computador. A linguagem C é uma linguagem de programação de propósito geral, ou seja, serve para o desenvolvimento de programas em áreas diversas como: engenharia, física, química, automação industrial e outras. Tendo como principais características: flexibilidade, recursos de baixo nível, confiabilidade, eficiência e portabilidade (o ANSI C). Características C une conceitos de linguagem de montagem e programação de alto nível (o programador usufrui recursos de hardware sem a necessidade de conhecer o assembly da máquina); É uma linguagem compilada: lê todo o código fonte e gera o código objeto (ling. de máquina); É “case sensitive”, ou seja, ele faz distinção entre maiúsculas e minúsculas. Dessa forma as palavras ANA, ana, Ana e Ana são consideradas diferentes pelo C; Prof. Marcelo Machado Cunha – Faculdade Pio Décimo LINGUAGEM C 2 Estrutura de um programa em C Um programa C consiste em uma ou várias funções, uma das quais precisa ser denominada main. O programa sempre começará executando a função main. main( ) /* programa principal */ { /* declarações e comandos */ } Ou void main(void) /* programa principal */ { /* declarações e comandos */ } Regras Gerais Toda função deve ser iniciada por uma chave de abertura { e encerrada por uma chave de fechamento } Toda função é procedida de parênteses “( )” Todo programa deverá conter a função main; As linhas de código são sempre encerradas por um ponto e vírgula; A formatação dos programas é completamente livre, mas temos por conveniência manter a legibilidade; Os comandos são executados na ordem em que foram escritos; Comentários Os comentários devem ser delimitados por /* no início e */ no final. Podendo ser usados também os caracteres // para comentários de uma linha. Prof. Marcelo Machado Cunha – Faculdade Pio Décimo LINGUAGEM C 3 Exemplo: /* Os comentários podem ser colocados em qualquer parte do programa */ main() /* primeiro programa */ { printf("oi !”); //imprime a mensagem oi ! /* Comentário de mais Uma linha */ printf(“olá !”); } Pausa no Programa Para dar uma pausa na tela, utilizamos o comando PAUSE do sistema operacional. Esse comando faz o programa ficar esperando que uma tecla seja pressionada para poder continuar. system (“PAUSE”); ou system(“pause”); Variáveis Local na memória do computador que serve para guardar um número, letra ou símbolo, este valor pode ser alterado. É representado com um nome que é dado pelo programador, que não pode ser alterado durante o programa. Exemplos de nome de variáveis: a, b, VALOR1, valor_1, _nome, ano_2009 Regras Gerais Em C, todas variáveis utilizadas no programa devem ser declaradas previamente; A declaração indica, no mínimo, o nome e o tipo de cada uma delas; Na ocorrência de mais de uma variável do mesmo tipo, podemos declarar de uma única vez, separando seus nomes por vírgula; As letras minúsculas são diferenciadas das maiúsculas; O tamanho máximo para o nome de uma variável é de 32 posições; Prof. Marcelo Machado Cunha – Faculdade Pio Décimo LINGUAGEM C 4 Todo nome de variável é iniciado por uma letra (a – z ou A – Z), ou o caracter traço baixo ( _ ), o restante pode conter letras, traço baixo ou números; As palavras reservadas descritas a seguir, não podem ser usadas como nome de variável. As variáveis deverão ser declaradas antes de qualquer instrução; Palavras reservadas Auto, break, case, char, const, continue, default, do, double, else, enum, extern, float, for, goto, if, int, long, main, register, return, short, signed, sizeof, static, struct, switch, typedef, union, unsigned, void, volatile, while, class, public, private, protected, virtual. Principais tipos de Variáveis Tipo Bits Descrição Escala Void 0 Sem valor sem valor Char 8 Caracter -128 a 127 Int 16 Inteiro -32768 a 32767 Float 32 Real 3.4E-38 a 3.4E+38 Double 64 Real entendido 1.7E-308 a 1.7E+308 Entretanto, existe alguns tipos que podem ser combinados com os tipos básicos: short, long, signed, unsigned. Declarando Variáveis A forma de declaração de variáveis é a seguinte: tipo nome; Exemplos: int K; Prof. Marcelo Machado Cunha – Faculdade Pio Décimo LINGUAGEM C 5 double valores; float nota; char letra; Uma particularidade das strings em C (tipo char), é que elas possuem um caracter terminador, o qual delimita o final do seu conteúdo, que é o caracter „\0‟ (lê-se “contrabarra zero”). Desta forma, o tamanho da string deve ser definido com um caracter a mais do que será efetivamente necessário para o programa. O compilador C coloca, automaticamente, o „\0‟ no final. Por exemplo: char estado[3]=”SE”; /* declara uma conjunto de 3 caracteres chamado estado, no qual cada posição do conjunto terá um dos seguintes valores: „S‟, „E‟ e „\0‟ */ char cidade[100]=”Simão Dias”; /* declara um conjunto de 100 caracteres chamado cidade */ char nome[]=”Fulano de Tal”; /*quando o tamanho do conjunto de caracteres não é definido e um valor é atribuído ao mesmo, o conjunto assume o tamanho a string atribuída, por exemplo, neste caso aqui, o conjunto de caracteres teria tamanho 14 letras e espaços da string atribuída + o caracter „\0‟ */ Inicializando Variáveis Pode-se inicializar uma variável no momento de sua declaração, ou em qualquer momento do algoritmo. void main(void) { float tempo=27.25; char tipo=‟C‟; → utilizamos aspas simples int x; x=10; c=c+x; Prof. Marcelo Machado Cunha – Faculdade Pio Décimo LINGUAGEM C 6 char titulo[30] = “ Essa é uma string”; → utilizamos aspas duplas int a=10, b=a+20; } Variáveis Globais e Locais Locais Estas variáveis só têm validade dentro do bloco de código ou rotina no qual são declaradas, isto é, só a função à qual elas pertencem sabe da existência destas variáveis, dentro do bloco no qual foram declaradas. Também são consideradas variáveis locais as variáveis declaradas na lista de parâmetros de uma função. Exemplo: main() { float raio, area; // declaracao de variáveis da função main() raio = 2.5; area = 3.14 * raio * raio; } Globais As variáveis globais são definidas fora de qualquer função (inclusive da função main()) e estarão disponíveis para serem utilizadas em todo o programa. Pode-se dizer que, como elas estão fora de todas as funções, todas as funções as vêem. Exemplo: int contador; // variável global. Está fora de todas as funções e blocos main() { Prof. Marcelo Machado Cunha – Faculdade Pio Décimo LINGUAGEM C 7 float raio, area; // declaracao de variáveis da função main() raio = 2.5; area = 3.14 * raio * raio; } Obs.: Se uma função declarar uma variável local com o mesmo nome de uma variável global, esta variável local ocultará/substituirá aquela global, que não poderá mais ser acessada. Exemplo: int num1, num2; /* 2 variáveis globais do tipo int */ void main(void) { int valor, num1; /* 2 variáveis locais do tipo int */ double total; /* 1 variável local do tipo double */ num1 = 5; /* A atribuição acima será feita à variável local num1 e não à variável global de mesmo nome */ } Constantes Local na memória do computador que serve para guardar um número, letra ou símbolo, este valor não pode ser alterado. É representado com um nome que é dado pelo programador, que também não pode ser alterado durante o programa. Sintaxe #define NOME_CONSTANTE valor_associado_a_constante Exemplo: #define PI 3.1415926536 ou float const PI=3.1415926536 Prof. Marcelo Machado Cunha – Faculdade Pio Décimo LINGUAGEM C 8 Operadores Operadores Relacionais Símbolo Significado == Igual != Diferente (não igual) > maior que < menor que >= maior ou igual <= menor ou igual Operadores Aritméticos Símbolo Significado = atribuição + soma - Subtração * Multiplicação / Divisão % Módulo (resto da divisão) ++ Incremento de 1 -- Decremento de 1 Existem ainda as seguintes opções de se trabalhar com operadores aritméticos, por exemplo: I+=2; → i=i+2; X*=y+1; → x=x*(y+1); d-=3 → d=d-3; Prof. Marcelo Machado Cunha – Faculdade Pio Décimo LINGUAGEM C 9 Operadores Lógicos Símbolo Significado ! Não && E (and) || OU (or) Operadores bit a bit Símbolo Significado Exemplo ~ negação a= 0000 0000 0110 1001 ~a=1111 1111 1001 0110 & and a= 0000 0000 0110 1001 b= 0000 0010 0101 1100 a&b= 0000 0000 0100 1000 | or a= 0000 0000 0110 1001 b= 0000 0010 0101 1100 a | b= 0000 0010 0111 1101 << deslocamento para esquerda a= 0000 0010 0101 1100 a<<3=0001 0010 1110 0000 >> deslocamento para direita a= 0000 0010 0101 1100 a>>3=0000 0000 0100 1011 Precedência de operadores O nível de precedência dos operadores é avaliado da esquerda para direita. Os parênteses podem ser utilizados para alterar a ordem da avaliação. ( ) Primeira ++ -- Segunda * / % Terceira + - Quarta Prof. Marcelo Machado Cunha – Faculdade Pio Décimo LINGUAGEM C 10 Entrada e Saída de dados Impressão formatada de dados - Pritf A função printf (print formated) é uma função da biblioteca de entrada e saída padrão utilizada para escrever valores numéricos, caracteres e strings. Ela pode receber diversos parâmetros, sendo que o primeiro deverá ser uma string, chamada string de controle. Somente será exibido o que for solicitado dentro desta string. A string de controle deve aparecer entre aspas duplas e nela podem existir dois tipos de informações: caracteres comuns e especificadores de formato. Tudo o que aparecer nesta string que não for um especificador de formato será impresso literalmente, ou seja, do jeito que estiver escrito. Cada especificador de formato encontrado nesta string será substituído pelo parâmetro seguinte pertencente à lista de argumentos da função, na ordem que aparecerem. A estrutura básica da função printf() é dada a seguir: printf (“string de controle”, lista de argumentos); Os especificadores de formato que podem fazer parte da string de controle são simbolos, representados por um % mais outro caracter, que indicam que um valor vai ser escrito pela função, na posição correspondente da string de controle. Eles indicam, também, o tipo e/ou a base numérica do dado a ser escrito. Cada valor a ser impresso pelo printf deve ter um especificador de formato correspondente dentro da string de controle. Se faltarem especificadores, os últimos valores não serão exibidos. Se sobrarem especificadores, serão exibidos valores indeterminados (lixo de memória). A tabela a seguir apresenta os principais especificadores de formato utilizados com a função printf. Prof. Marcelo Machado Cunha – Faculdade Pio Décimo LINGUAGEM C 11 Códigos de Barra Invertida Código Significado \n Nova linha \” aspas duplas \‟ aspas simples \\ barra invertida \t Tab \0 Nulo Códigos de Formatação Código Significado %c Exibe um caracter %d Exibe um inteiro em formato decimal com sinal %u Exibe um inteiro decimal sem sinal %e Notação científica (minúscula) %E Notação científica (maiúscula) %f Ponto flutuante %o Exibe um número em notação octal %s string de caracteres %x Hexadecimal com letra minúscula %X Hexadecimal com letra maiúscula %% Exibe o caractere % Exemplos printf(“Olá, Mundo!“); Saída: Olá, Mundo! printf(“linha 1 \nlinha 2 “); Saída: linha 1 linha 2 Prof. Marcelo Machado Cunha – Faculdade Pio Décimo LINGUAGEM C 12 int idade=18; printf(“Tenho %d anos de vida”,idade); Saída: Tenho 18 anos de vida. printf (“Teste %% %%”); Saída: Teste % % printf (“Um caractere %c e um inteiro %d”,‟D‟,120); Saída: Um caractere D e um inteiro 120 printf (“%s e um exemplo”,”Este”) Saída: Este e um exemplo printf (“%s%d%%”,”Juros de “,10) Saída: Juros de 10% printf (“O valor decimal %d em Hexadecimal: %X e em Octal: %o”, 107, 107, 107); Saída: O valor decimal 107 em Hexadecimal: 6B e em Octal: 153 Suponha que pi=3.14159 e raio=2.0031, ambas variáveis do tipo float. printf(“A area do circulo e %e\n”, 2 * pi * raio); Saída: A área do circulo e 1.258584e+001 printf (“%f”,40.34534); Saída: 40.34534 Obs.: Para imprimir valores de ponto flutuante usamos o %f. O default dele é imprimir números com até seis casas decimais. Depois do sinal % do especificador de formato e antes do caractere que indica o especificador de formato, podem ser usados alguns modificadores OPCIONAIS cuja sintaxe é a seguinte: % [tamanho] [.precisão] caracter_do_especificador_de_formato. Prof. Marcelo Machado Cunha – Faculdade Pio Décimo LINGUAGEM C 13 [tamanho] especificação de tamanho ou quantidade de dígitos a serem impressos. O tamanho do campo indica quantas posições da saída serão utilizados para exibir o valor correspondente à um especificador de formato. Por exemplo, %5d ou %5f indica que o valor a ser impresso vai ocupa 5 posições na tela. Por padrão, as posições em excesso são preenchidas com brancos e o valor é alinhado à direita do campo. Sempre que o tamanho do campo for insuficiente para exibir o valor solicitado, este tamanho é ignorado e o número é impresso por completo. Desta forma, um valor nunca é truncado. printf("\n%2d",350); printf("\n%4f",350.0); printf("\n%6d",350); [.precisão] especificador de precisão, ou seja, da quantidade de dígitos à direita do ponto decimal. É utilizado para configurar valores de ponto flutuante. Para especificar a quantidade de dígitos à direita do ponto decimal. Utiliza-se da seguinte forma: (nada) padrão: 6 dígitos para reais. .0 nenhum digito decimal. .n são impressos n dígitos decimais, ou seja, casas depois do ponto decimal. Por exemplo, o formato %10.2f, exibe o valor em ponto-flutuante com duas casas decimais, dentro de um campo de tamanho 10. Suponha que troco e pagamento sejam variáveis do tipo float cujos valores são, respectivamente, 12.3 e 15.0 float tot=12.3; float din=15; printf("\nTotal %1.2f \nMoney %2.2f \nTroco %10.3f",tot,din,(din-tot));Saída: Total 12.30 Money 15.00 Troco 2.70 Prof. Marcelo Machado Cunha – Faculdade Pio Décimo LINGUAGEM C 14 Leitura formatada de dados – scanf A função scanf( ) (scan formated) é a principal função de entrada de dados da biblioteca de entrada e saída padrão da Linguagem C. Ela pode ser usada para ler virtualmente qualquer tipo de dado inserido por meio do teclado. Porém, ela costuma ser mais utilizada para a leitura de números inteiros ou de ponto flutuante (variáveis int, float e double). A forma geral da função scanf( ) é: scanf (“string de controle”, lista de argumentos); A função lê da entrada padrão (teclado) uma lista de valores que serão formatados pela string de controle e armazenados nos endereços das variáveis da lista de argumentos. Tal qual no printf(), a string de controle deverá fazer uso de especificadores de formato que vão dizer à função scanf( ) qual o tipo de dado que deve ser lido em seguida. Como na função printf( ), os códigos de formato da função scanf( ) devem ser correspondidos na ordem com os endereços das variáveis sendo recebidas na lista de argumentos. Os especificadores de formato estão listados na tabela abaixo: Código %c %d %u %e %f %g %o %s %x Significado Lê um caracter Lê um inteiro em formato decimal com sinal Lê um inteiro decimal sem sinal Lê um número em notação científica Lê um número em ponto flutuante com ponto opcional Lê um número em ponto flutuante com expoente opcional LÊ um número em base octal Lê uma string de caracteres (sem espaço em branco) Lê um número em Hexadecimal Prof. Marcelo Machado Cunha – Faculdade Pio Décimo LINGUAGEM C 15 As variáveis a serem lidas que fazem parte da lista de argumentos, devem ser precedidas pelo símbolo &, exceto quando as variáveis forem do tipo string. Essa é uma diferença fundamental que existe entre o scanf() e o printf(). Exemplos: scanf(“%d %d”, &num1, &num2); int indice; float valor; scanf(“%d %f”, &indice, &valor); int main() { char nome[5]; printf(“Digite um nome: ”); scanf(“%s”, nome); printf(“Ola %s\n”, nome); } Outras formas de Entrada e Saída de Dados getchar É a função original de entrada de caracter. Armazena a entrada até que a tecla ENTER seja pressionada. Exemplo: Char letra; Letra=getchar(); Prof. Marcelo Machado Cunha – Faculdade Pio Décimo LINGUAGEM C 16 putchar Imprime um caracter individual na saída padrão. Exemplo: main () { char letra; // declara uma variável do tipo caracter printf (“Entre com uma letra: \n”); // imprime na tela a mensagem especificada letra = getchar (); // lê um caracter após ser pressionada a tecla <enter> printf (“O caractere lido foi: “); // imprime na tela a mensagem putchar (letra); // imprime na tela o caracter armazenado na variável letra system(“PAUSE”); // espera uma tecla ser digitada para encerrar o programa } gets – Lendo Strings Lê uma string digitada, inclusive com os espaços em branco. Exemplo: int main() { char nome[60]; // declara uma string de 60 caracteres printf(“Informe o seu nome: “); //imprime a frase gets(nome); //lê a string digitada, inclusive com os espaços em branco printf(“O seu nome é: %s \n”, nome); //imprime a frase e a string system(“PAUSE”); // espera uma tecla ser digitada para encerrar o programa } puts - Imprimindo strings A função puts imprime uma string e é simples de usar, pois basta passar como parâmetro para a função a string a ser impressa. A impressão sempre vai terminar e passar para uma próxima linha, como se tivesse sendo utilizado um comando printf(“%s\n”, frase). Prof. Marcelo Machado Cunha – Faculdade Pio Décimo LINGUAGEM C 17 Exemplo: int main() { char nome[60]; // declara uma string de 60 caracteres printf("Informe o seu nome: "); //imprime a frase gets(nome); //lê a string digitada, inclusive com os espaços em branco printf("O seu nome é:"); //imprime a frase puts(nome); //imprime a string } Estruturas de Decisão O comando if instrui o computador a tomar uma decisão simples. Se o valor entre parênteses da expressão de controle for verdadeiro ele executa as instruções, caso seja falso, as instruções serão ignoradas, ou executadas as que estão contidas no bloco do else. if (expressão de teste) instrução1; else instrução2; Exemplo 1: if (X%2) printf(“ X é impar ”); else printf(“ X é par ”); Exemplo 2: if (X<Y) if (X<Z) printf(“ X é o menor ! “); Prof. Marcelo Machado Cunha – Faculdade Pio Décimo LINGUAGEM C 18 else printf(“ Z é o menor ! “); else if (Y<Z) printf(“ Y é o menor ! “); else printf(“ Z é o menor ! “); Switch A instrução switch faz com que um determinado grupo de instruções seja escolhido entre diversos grupos disponíveis. A seleção é baseada no valor corrente de uma expressão incluída na instrução switch. O corpo de cada switch é composto por qualquer número de instruções. Geralmente a última instrução é o break. O comando break causa a saída imediata de todo o corpo do switch. Na falta do comando break, todas as instruções após o case escolhido serão executadas. Quando a instrução switch é executada, a expressão é avaliada e o controle é transferido diretamente para o grupo de instruções correspondente ao valor de expressão. Se nenhum case corresponder ao valor de expressão, não será selecionado nenhum dos grupos da instrução switch, exceto quando for implementado o grupo default, que contém instruções que serão executadas caso não seja selecionado nenhum dos grupos. Sintaxe switch (variável) { case valor1: instruções; break; case valor2: Prof. Marcelo Machado Cunha – Faculdade Pio Décimo LINGUAGEM C 19 instruções; break; default: instruções; } Exemplo switch (opcao = getchar()) { case „V‟: printf(“ Vermelho “); break; case „B‟: printf(“ Branco “); break; case „A‟: printf(“ Azul “); break; default: printf(“ Cor desconhecida ! “); } Estruturas de Repetição for O laço for possui três expressões, e é útil principalmente quando queremos repetir algo uma quantidade fixa de vezes. Dentro dos parênteses após a palavra reservada for, há três elementos que controlam a ação da repetição. Em primeiro lugar há uma inicialização que é executada uma única vez. O teste é uma expressão relacional que a função testa Prof. Marcelo Machado Cunha – Faculdade Pio Décimo LINGUAGEM C 20 no início da repetição. O incremento é executado no final do loop após a execução das instruções. Sintaxe: for(inicialização; teste; incremento) { instruções } Exemplo 1: for(a=1; a<100; a++) { printf(“\n %i”, a); } Exemplo 2: for(i=0, j=9; i<=9, j>=0; i++, j--) printf(“\n %i %i”, i, j); while O laço while utiliza os mesmos elementos do laço for, mas são distribuídos de maneira diferente no programa. Se o teste for verdadeiro (diferente de zero), o corpo do laço while é executado uma vez e a expressão de teste é avaliada novamente. Este ciclo de teste e execução é repetido até que a expressão de teste se torne falsa (igual a zero), então o laço termina e o controle do programa passa para a linha seguinte ao laço. Sintaxe: while (expressão teste) { instruções } Prof. Marcelo Machado Cunha – Faculdade Pio Décimo LINGUAGEM C 21 Exemplo: conta=1; while (conta < 10) { total=total + conta; printf(“conta = %i, total = %i”, conta, total); conta++; } do... while Cria um ciclo repetido até que a expressão de teste seja falsa (zero). A diferença do while é que o mesmo testa a expressão, se satisfaz então executa as instruções, enquanto que o do...while executa as instruções e depois testa a expressão. Sintaxe: do { instruções } while (expressão de teste); Exemplo 1: do { y--; x++; } while (y!=0); Comandos Auxiliares break Pode ser usado no corpo de qualquer estrutura de laço. Causa a saída imediata do laço. Prof. Marcelo Machado Cunha – Faculdade Pio Décimo LINGUAGEM C 22 Exemplo: while (salário>100) { scanf(“%s”, nome); if (nome == „a‟) break; scanf(“%i”, &salario); } continue O comando continue causa um desvio imediato no laço, ou seja, força a próxima interação do laço e ignora o código que estiver abaixo. Exemplo: while (salario>100) { scanf(“%c”, nome); if (nome == „a‟) { salario=1000; continue; } scanf(“%i”, &salario); } Funções Uma função é uma unidade de código de programa autônoma desenhada para cumprir uma tarefa particular. A função recebe um certo número de parâmetros e retorna apenas um valor. Da mesma forma que são declaradas as variáveis, deve-se declarar a função. A declaração de uma função é chamada de protótipo e é uma instrução Prof. Marcelo Machado Cunha – Faculdade Pio Décimo LINGUAGEM C 23 geralmente colocada no início do programa, que estabelece o tipo da função e os argumentos que ela recebe. Declaração: tipo nome_função(declaração dos parâmetros) void main(void) { Declaração das variáveis locais; Comandos; } Ou tipo nome_função(lista dos parâmetros) { declaração das variáveis locais comandos; return(valor); } O tipo de uma função é determinado pelo tipo de valor que ela retorna pelo comando return. Se uma função for do tipo não inteira ela deve ser declarada. O valor default é inteiro (int) caso não for declarada. Exemplo #define PI 3.14159 //definindo constante PI float area(int r); //definindo a função area void main(void) { int raio; float area_esfera; printf(“Digite o raio da esfera: “); Prof. Marcelo Machado Cunha – Faculdade Pio Décimo LINGUAGEM C 24 scanf(“%d”, &raio); area_esfera=area(raio) printf(“A área da esfera é: %f”, area_esfera); } float area(int r) { return(4*PI*r*r); } Diretivas de Compilação Existem comandos que são processados durante a compilação do programa. Estes comandos são, genericamente, chamados de diretivas de compilação. Estes comandos informam ao compilador C, basicamente, quais bibliotecas devem ser anexadas ao programa executável e quais são as constantes simbólicas usadas no programa. #define A diretiva #define pode ser usada para definir constantes. Sintaxe: #define <identificador> <valor> Exemplo: #define PI 3.14159 #undef A diretiva #undef remove a mais recente definição criada com #define. Exemplo: #undef PI /* cancela a definição de PI */ Prof. Marcelo Machado Cunha – Faculdade Pio Décimo LINGUAGEM C 25 #include A diretiva #include diz ao compilador para incluir na compilação do programa outros arquivos. Geralmente, estes arquivos contêm bibliotecas de funções ou rotinas do usuário. Exemplo: #include <stdio.h> #include <stdlib.h> #include “c:\fontes\salario.c” void main(void) { int a, b; } Note que a instrução #include não é terminada com ponto-e-vírgula. Qualquer linha de um programa em C que for iniciada com # não pode ter um ponto e vírgula para terminá-la. A tabela a seguir, apresenta as principais bibliotecas da linguagem C. Arquivo Descrição stdio.h Funções de entrada e saída stdlib.h Funções de uso genérico string.h Funções de tratamento de strings math.h Funções matemáticas Prof. Marcelo Machado Cunha – Faculdade Pio Décimo