Buscar

apostila_C ou 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 97 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 97 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 97 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

9 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Linguagem C 
 
 
 
 
 
 
 
 
 
 
 
10 
Prefácio 
 
 
 
 
 
 Esta Apostila foi planejada para 
um curso de programação em Linguagem C , e 
o objetivo principal é de apresentá-la 
claramente, mostrando assim a criação de 
vários programas, explicando exatamente o 
que ocorre em cada “passo”. 
 Por que C ? Porque é popular, 
disponível na maioria dos sistemas de 
computação e relativamente fácil de aprender, 
até mesmo como primeira linguagem de 
programação. 
 Ao aluno interessado haverá a 
oportunidade de criar novos programas e de 
desenvolver mais idéias a partir das 
apresentadas. 
 Para os exemplos contidos na 
apostila, foi utilizado o compilador Turbo C++ 
do Borland para computadores IBM-PC e 
sistema operac. MS-DOS, mas podem ser 
processados em qualquer compilador 
compatível com o MS-DOS ou UNIX. 
 
 
 
 
 Profº Callé 
 
 
11 
 
 
 
 
 
 Capítulo 1 
 
 Introdução 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
• Origem da Linguagem C 
• Linguagem de Médio Nível e Estruturada 
• Interpretadores e Compiladores 
• Modelo de um programa em C 
• Compilação Separada 
• Compilando um programa em C 
• Mapa de Memória de C 
 
 
 
12 
 
 
 
Origem 
 
 Foi inventada e implementada inicialmente pôr Dennis M. 
Ritchie e Ken Thompson em um DEC PDP-11 utilizando o sistema 
operacional UNIX, em 1972. 
 
 Linguagem C com 
 BCPL B C padrão formado 
 pelo ANSI 
 Desenvolveu a 
 Linguagem C (década de 70) 
 Linguagem antiga, mas 
 ainda em uso na Europa. 
 Originou a Linguagem B. 
 
ANSI : Padrão que define um conjunto completo de funções de E/S 
que pode ser utilizado para ler e escrever qualquer tipo de dado. 
 
 
 
Linguagem de Médio Nível 
 
 
 Para computadores, é uma linguagem de nível médio. Não 
significa que é menos poderosa ou menos desenvolvida. Linguagem C 
combina elementos de linguagem de alto nível com funcionalidade de 
linguagem Assembly. 
 
 Permite a manipulação de bits, bytes e endereços. 
Bit: Sinônimo de dígito binário; 0 ou 1. 
Byte: Caractere de 8 bits 
Endereço: Nele estão contidas as memórias do computador. 
 
 Linguagem C tem velocidade de “Linguagem de Máquina” 
É muito utilizada em editores, compiladores, gerenciadores de banco 
de dados, etc... 
 
 
13 
 
 
Nível mais alto: Ada , Modula-2 , Pascal , Cobol , Fortran , Basic. 
 
Médio Nível: CCCC , Forth , Macro-assembler. 
 
Nível mais baixo: Assembler. 
 
 
 
 Um código em C é muito portável ! 
 
 
OBS: Portabilidade significa que é possível adaptar um software 
escrito para um tipo de computador a outro. 
 
Exemplo: 
 
 Programa para um Compilador Programa p/ 
 Apple Mac Intosh C um IBM-PC 
 
Palavras-Chaves: A Linguagem C possui apenas 32 
palavras-chaves. Se formos comparar, a linguagem Basic (p/ IBM-PC) 
contém 159 palavras-chaves ! 
 
 
Linguagem Estruturada 
 
 A característica especial de uma linguagem estruturada é de, 
através da criação de sub-rotinas, com o uso de variáveis locais, 
processar eventos que não causem nenhum efeito inesperado nas 
outras partes do programa. Por exemplo, em uma linguagem 
estruturada, o uso do goto é proibido. 
 
 
 Linguagem não estruturada: Fortran, Basic, Cobol. 
 Linguagem estruturada: Pascal, C ,Modula-2, Ada. 
 
 
 
14 
 
 
Obs: O termo “Linguagem estruturada em blocos” não é 
rigorosamente aplicável em C. 
 Linguagem C é simplesmente referida como Linguagem 
Estruturada. 
 
 Linguagens estruturadas tendem a ser modernas, pois os 
programadores a consideram mais fáceis. 
 
 
 Função = Sub-rotina isolada 
 
 
 Permite definir e codificar separadamente 
 as tarefas de um programa. 
 
 Após ter sido criada (a função), permite ser utilizada em 
várias situações, sem criar efeitos inesperados em outras partes do 
programa. 
 Outro meio de estruturar o código em C é criando-se um 
“bloco de código”. Este bloco é escrito no programa entre chaves: { } 
 Isto faz com que o programador conceitue a verdadeira 
natureza da rotina. 
 A linguagem C propõe ao usuário planejar programas 
estruturados e modulares. O resultado é um programa mais legível e 
documentado. 
 
 
Linguagem para Programadores 
 
 
 Nem todas linguagens de computadores são para 
programadores !!! 
 Por exemplo: Linguagem Basic foi criada para os usuários 
que não precisam, necessariamente, ser programadores e assim 
resolverem problemas relativamente simples em seus computadores. 
 A linguagem C foi criada, influênciada e testada por 
programadores profissionais. Ela proporciona: 
 
 
15 
 
• Poucas restrições e reclamações; 
• Funções isoladas; 
• Estruturas de bloco; 
• Conjunto compacto de palavras-chaves. 
 
 
 É possível tornar um código escrito, compilá-lo e rodá-lo 
em outra máquina com pouca ou nenhuma modificação. 
 Esta portabilidade economiza tempo e dinheiro ! 
 
 
Interpretadores e Compiladores 
 
 Os termos, interpretadores e compiladores referem-se a 
maneira como um programa é executado. 
 
Exemplo: Basic - normalmente é interpretada 
 C - compilada 
 
 Interpretadores e compiladores são simplesmente programas 
sofisticados que operam sobre o código-fonte do seu programa. 
 
Interpretador: Lê o código-fonte de seu programa uma linha por vez, 
para depois finalizar (RUN). 
Compiladores: Lê o programa inteiro de uma só vez e o converte em 
um código-objeto, com isso o programa é executado diretamente. 
 
Palavras-Chaves de C: 
 
 
auto double int struct 
break else long switch 
case enum register typedef 
char extern return union 
const float short unsigned 
continuefor signed void 
default goto sizeof volatile 
do if static while 
 
 
16 
 
 O compilador, se não houver erros, gera um programa em 
disco com o sufixo “ .Obj “ com as instruções já traduzidas. Este 
programa não pode ser executado até que seje criado um “ produto 
final “ em disco com o sufixo “ .Exe “ , produto este feito por um 
programa chamado “ Linkeditor “ . 
 Com isso a velocidade de execução do programa pode ser de 
20 vezes mais rápida do que quando o programa é interpretado. 
 
Mais vantagens: 
• Se o programa já foi compilado e linkeditado, não será mais 
necessária a presença do compilador. 
• Programas .Exe não podem ser alterados, com isso o código fonte 
estará protegido. 
 
Obs: 
 
Linkeditor: Une funções compiladas separadamente em um 
programa. Combina as funções da Biblioteca C padrão com o código 
escrito pelo programador. A saída do linkeditor é um programa 
executável. 
 
Tempo de compilação: Refere-se ao tempo durante o qual o 
compilador lê os arquivos-fonte e gera o código-objeto. Um erro em 
tempo de compilação é um erro de sintaxe descoberto durante a 
compilação. 
 
Sintaxe: São regras a serem seguidas ao digitar comandos. Para 
evitar um erro no programa, é indispensável a atenção quanto à sintaxe 
de C. O compilador avisará ao usuário, no caso de um erro. 
 
Tempo de execução: Tempo durante o qual um programa “ roda “ . 
 
 
Depuração: É o processo de localizar e corrigir erros de execução. 
 
 
 
 
 
17 
 
Modelo de programa C 
 
 Em muitos compiladores é acrescidas diversas palavras-
chaves para explorar melhor os processadores 8088/8086. 
 As mais comuns são: 
 
 asm _cs _ds _es 
 _ss cdecl far huge 
 interrupt near pascal 
 
 Todas palavras-chaves em C são minúsculas, “else” é uma 
palavra-chave, mas ELSE não ! 
 A palavra-chave não pode ser utilizada como uma variável 
ou nome de uma função. 
 A única função que sempre deve estar presente é: 
 
 main ( ) 
 
 É a primeira função a ser chamada quando a execução do 
programa começa, embora não seja tecnicamente parte da linguagem 
C. 
 A função main( ) não é utilizada como variável. 
 
A Biblioteca e a Linkedição 
 
 Todo compilador C vem com uma biblioteca C padrão de 
funções para realizar tarefas necessárias mais comuns, definidas pelo 
padrão ANSI C. No entanto é provável que um compilador tenha 
outras funções adicionais, como por exemplo: gráfica. 
 Se o programador usa uma função (determinada função) 
várias vezes e sua biblioteca padrão não contém esta função, é 
possível colocá-la em uma biblioteca. Assim sempre que necessário 
ela será utilizada. E quando esta função for chamada, uma vez 
memorizada pelo compilador C, o linkeditor combinará o código-
escrito com o código-objeto já encontrado na biblioteca. Este 
processo é chamado de Linkedição. 
 
 
18 
 Alguns compiladores C tem seu próprio linkeditor, 
enquanto outros usam o linkeditor padrão fornecido pelo sistema 
operacional. 
 
Compilação Separada 
 
 Para programas longos, é permitido que um programa esteja 
contido em vários arquivos e que cada arquivo seje compilado 
separadamente. Com isso podemos mudar o código de um arquivo, 
sem recompilar o programa todo. 
 
Compilando um Programa em C 
 
 Para compilarmos um programa em C, devemos: 
• Criar o programa ; 
• Compilar o programa ; 
• Linkeditar o programa com funções necessárias da biblioteca. 
 
 Para alguns compiladores é necessário usar um editor 
separado para criar o programa. 
 Os compiladores só aceitam arquivos de texto padrão para o 
editor. 
 
Mapa de memória de C 
 
 
 Pilha 
 
 
 Heap 
 > 4 regiões da memória 
 Variáveis Globais 
 
 Código do Programa 
 
 
Obs: Acima temos um mapa conceitual. 
 
 
19 
Pilha: Guarda o estado atual da CPU. 
 
Heap: Memória livre, a disposição do programa C. 
 
Variáveis Globais: São criadas e acessadas independentemente. 
 
Código do Programa: O compilador gera o código. 
 
Código-fonte: É o programa que pode ser lido; é a “entrada” para o 
compilador C. 
 
Código-objeto: Traduz o código-fonte em linguagem de máquina; é a 
“entrada” para o linkeditor. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
20 
 
 Capítulo 2 
 
 Elementos 
 Básicos de 
C 
 
 
 
 
 
 
 
 
 
 
 
 
 
• A função main ( ) 
• Comentários 
• A função printf ( ) 
• Códigos de caracteres de Escape 
• Strings 
• Comandos de formato printf 
• Exercícios 
 
 
21 
 
A função main ( ) 
 
 Um programa em C é constituído de: 
 
Título: main ( ) , parte principal de qualquer programa C. 
 
Corpo do Programa: é iniciado por uma chave “ { “, e 
terminado por outra chave “} “ . 
 
 Uma função, que necessariamente estará presente é 
denominada de main ( ), que é a primeira função a ser chamada 
quando o programa é executado. 
 
main ( ) ✎ Contém um esboço do que o programa faz; inicia a 
execução do programa. 
 
main ( ) ➧ primeira função a ser executada 
{ ➧ inicia o “corpo” da função 
} ➧ termina a função 
 
 Os parênteses “( )” após o nome indicam que esta é uma 
função. Toda função deve ser iniciada por uma “chave de abertura” e 
encerrada por uma “chave de fechamento”. 
 Devemos nos preocupar com o layout do programa, pois se 
um programa for bem organizado, conseqüentemente será mais 
simples de se ler e entender. 
 
 
 Nome da função 
 { 
 instrução; 
 instrução; 
 { 
 instrução; 
 } 
 instrução; 
 }22 
 
 Quando é aberta uma chave “{“, deslocamos o código de 
programa à direita desta, e quando fechamos uma chave “}”, 
deslocamos para a esquerda. 
 
Obs: Letra minúscula ➧ para formação escrita de variáveis, 
funções e comandos. 
 Letra maiúscula ➧ para constantes. 
 
 
Comentários 
 
 Todo programa deve conter comentários como guia de 
explicação, e em C, é iniciado com o par de caracteres : /* ; e 
finalizado pelo par: */ . 
 O comentário pode ser colocado em qualquer lugar do 
programa, menos no meio de uma palavra-chave ou entre outro 
comentário, e sempre são delimitados pelo chamados símbolos de 
comentários. 
 
/* ➧ barra-asterísco 
 */ ➧ ➧ ➧ ➧ asterísco-barra 
 Comentários são úteis também para identificar o propósito 
ou nome de um programa. 
 
 
Exemplo correto: Exemplo incorreto: 
 
/* Primeiro programa em C */ swi/*isso não funciona*/tch 
 
main ( ) 
{ ou 
 printf (“Programando em C “); 
} /*este progr./*não funciona*/ 
 
 
 
 
 
 
23 
 Como o compilador ignora caracteres contidos em símbolos 
de comentários e espaços, os comentários podem ser escritos em 
várias linhas. 
 
 
/* 
 Exemplo de comentário 
 em várias 
 linhas 
*/ 
 
 Muitos programadores inserem um grande comentário 
descritivo ao início dos códigos. Isto também ocorre quando é 
desenvolvido programas em partes separadas por pessoas distintas e 
depois unidos num produto final. 
 
 
 
A função printf ( ) 
 
 
 É uma função de E/S que não faz parte do padrão de 
linguagem C, ela é providenciada pelo compilador C pois todos os 
sistemas tem uma versão de printf ( ). Esta função escreve na tela um 
texto entre aspas duplas. Pertence a uma biblioteca do compilador e 
deve ser linkeditada em nossos programas. 
 Função é uma coleção de comandos identificada por nome. 
Utilizar o nome de uma função em um comando é chamar a função e 
executar suas instruções; ou seja, os parênteses em printf ( ) indicam 
que estamos utilizando uma função e no interior desses parênteses 
estão as informações passadas pelo programa main ( ) à função printf( 
). Esta informação é chamada de argumento de printf ( ). O controle, 
então, é passado para a função printf que imprimirá na tela do monitor 
de vídeo, e quando encerra a execução desta, o controle é transferido 
novamente para o programa. 
 
 
 
 
24 
A sintaxe para a função printf ( ) é: 
 
 
 printf ( “ expressão de controle “, lista de argumentos) 
 
 
 A expressão de controle pode conter caracteres que serão, 
por sua vez, demonstrados na tela do computador e comandos de 
formato ( códigos de formatação ) que indicam a forma em que os 
argumentos devem ser impressos. 
 A função printf( ) pode ter um único ou vários argumentos. 
Obs: Os argumentos são separados por vírgula ( , ). 
 
Exemplo: 
/* primeiro exemplo */ 
 
main( ) 
{ 
 printf(“O resultado do jogo foi %d x 0”,2); 
} 
 Na primeira linha do programa temos um comentário 
sugerindo um título ou nome do programa. Todo comentário fica a 
critério do programador, sendo assim não é obrigatório o uso deste. 
 A função main( ) a seguir inicia a parte executável. 
 A chave de abertura é utilizada para que o compilador possa 
“ler” as instruções. 
 Em seguida a função printf( ) passa a ter o controle. O texto 
a ser impresso está compreendido entre aspas duplas “ ” e o código de 
formatação “%d” indica que será impresso um número decimal. Este 
número decimal é o 2 que se encontra na lista de argumentos. 
 A linha de instrução é finalizada por um ponto-vírgula “ ; “ 
fato este fundamental para concluir uma linha de instrução. 
 A chave de fechamento encerra o corpo do programa e o 
texto impresso no monitor de vídeo será: 
 
O resultado do jogo foi 2 x 0 
 
 
 
Códigos de caracteres de Escape 
 
25 
 
 A tabela abaixo demonstra os códigos de C para caracteres 
que não podem ser inseridos diretamente através do teclado. A função 
printf( ) aceita todos eles. 
 Os caracteres de escape começam com uma barra invertida 
“ \ “ seguida por uma letra que seleciona um código de controle. 
 
Código de escape Significado 
 
\a alarme ou alerta (beep) 
\b retrocesso, retorna o cursor de uma 
 coluna. 
\n nova linha, muda de linha 
\t tabulação horizontal no vídeo ou 
 impressora. 
\f limpa a tela do vídeo ou passa para 
 a próxima página da impressora. 
\v tabulação vertical no vídeo ou na 
 impressora. 
\r retorno do cursor, fica na primeira 
 posição da linha. 
\o nulo, fim de uma string. 
\N valor octal , imprime na base octal 
 ( onde N é uma constante octal ). 
\xN valor hexadecimal, imprime na base 
 hexadecimal(onde N é uma cte.hexa) 
\” aspas ( “ ). 
\\ barra invertida ( \ ). 
\? ponto de interrogação. 
\’ apóstrofo ( ‘ ). 
 
 
 
Obs: Como a barra invertida “ \ “ tem uso especial na linguagem C, 
devemos associar duas barras invertidas “ \\ “ para representar uma. 
 
 
Exemplo: 
 
 
26 
. 
main ( ) 
{ 
 printf (“\n\tisto é um teste.”); 
} 
 
 O programa acima “pula” uma linha (\n), posiciona o cursor 
na próxima coluna de tabulação (\t) e escreve no monitor de vídeo 
como segue abaixo. 
 
 1º coluna 
 
 2º linha > Isto é um teste 
 
 
 
 
 
 
 
 
 
Strings 
 
 Strings é uma dasmais úteis e importantes formas de dados 
em C. Armazena e manipula textos como palavras e sentenças. 
Atenção: Não deve-se confundir string com caractere. Um único 
caractere estará envolvido por aspas simples. Exemplo: ‘ a ‘ 
 Uma string é envolvida por aspas duplas. 
Exemplo: “ o “ , “ teste “ ou “ o teste “. 
 Sempre que o compilador encontrar qualquer coisa entre 
aspas duplas, ele reconhecerá que trata-se de uma string constante. 
 Cada caractere de uma string ocupa 1 byte de memória. 
 As strings consistem em dois tipos: 
 
Constantes ➧ caracteres que são impressos na tela. 
Comandos de Formato ➧ são códigos de formatação. 
 
 
Comandos de formato printf. 
 
 
27 
 A tabela abaixo mostra os códigos para impressão 
formatada de texto. 
 
Códigos printf( ) Formato 
%c .............................%c .............................%c .............................%c ............................. caractere 
%d %d %d %d ou %i ..%i ..%i ..%i ...................................................................... inteiros decimais com sinal. 
%u .............................%u .............................%u .............................%u ............................. inteiros decimais sem sinal. 
%o .............................%o .............................%o .............................%o ............................. octal . 
%x%x%x%x ou %X ..................%X ..................%X ..................%X .................. hexadecimal . 
%e %e %e %e ou %E ..................%E ..................%E ..................%E .................. notação científica . 
%f %f %f %f ou %F......%F......%F......%F.......................................................... ponto flutuante decimal. 
%g .............................%g .............................%g .............................%g ............................. usa %e ou %f, o que for mais curto. 
%G ............................%G ............................%G ............................%G ............................ usa %E ou %F o que for mais curto. 
%s .............................. %s .............................. %s .............................. %s .............................. strings de caractere. 
%% ......................%% ......................%% ......................%% ............................ ...... ...... ...... escreve o símbolo % 
(porcentagem). 
%ld ............................%ld ............................%ld ............................%ld ............................ decimal longo. 
%lf .............................%lf .............................%lf .............................%lf ............................. ponto flutuante longo (DOUBLE). 
 
 Um comando de formato começa com um símbolo 
percentual (%), e é seguido pelo código de formato. A ordem da 
combinação sempre será da esquerda para a direita. 
 
Exemplo: 
 
. 
. 
printf(“Estamos %s\na linguagem %c.”,”aprendendo”,’C’); 
. 
. 
 Será impresso no vídeo o seguinte texto: 
 
 
Estamos aprendendo 
a linguagem C. 
 
 
 
 A função printf imprimirá inicialmente a palavra 
“Estamos”; logo após receberá a instrução que deverá ser impresso 
 
28 
uma string de caractere. Nesta string será localizado o conjunto de 
caracteres envolvidos por aspas duplas após o término do texto a ser 
impresso. 
 Um código de escape “\n” comanda o cursor para a 
próxima linha, quando então será impresso a continuação da sentença 
“a linguagem” precedida de um caractere “C” identificado por um 
outro comando de formato (%c). 
 
Lembre-se: Os argumentos, no caso “aprendendo” e “C” são 
separados por vírgula. 
 
Ponto flutuante decimal: Quando deseja-se imprimir um número com 
 casas decimais , utilizamos o comando de 
 formato “%f”. 
 
Exemplo: Desejamos imprimir apenas com 3 casas decimais o número 
87,3466798. 
Então digitamos: 
 
printf (“O número é %.3f”, 87.3466798); 
 
A saída será: 87.347 
 
Obs: O computador arredonda o número ! 
 
Exemplo: 
O número 156,55479832 pode ser arredondado para: 
................. 156,5547983 ou 
................. 156,554798 ou 
................. 156,55480 ou 
................. 156,5549 ou 
................. 156,555 ou 
................. 156,6 ou 
................. 157 
 
 
Exercícios 
 
 
29 
1- Comente resumidamente a origem da Linguagem C. 
________________________________________________________
________________________________________________________
_____________________________________________________ 
 
2 - O que vem a ser “Interpretadores e Compiladores “ ? 
________________________________________________________
________________________________________________________
________________________________________________________
____________________________________________________ 
 
3 - Cite 4 caracteres de escape e seus significados. 
________________________________________________________
________________________________________________________
_____________________________________________________ 
 
4 - Para que servem os comentários ? 
________________________________________________________
______________________________________________________ 
 
5 - Porque os programadores costumam utilizar comentários ? 
________________________________________________________
______________________________________________________ 
 
6 - O que é uma função ? 
________________________________________________________
______________________________________________________ 
 
7 - O que faz um Linkeditor ? 
________________________________________________________
________________________________________________________
_____________________________________________________ 
_______________________________________________________ 
 
 
 
 
 
8 - Quando utilizamos %.f ? Cite um exemplo : 
________________________________________________________
______________________________________________________ 
 
30 
 
9 - O que é string e quais os tipos ? 
________________________________________________________
________________________________________________________
_____________________________________________________ 
 
10 - Qual a sintaxe da função printf ( ) ? 
________________________________________________________
______________________________________________________ 
 
11 - Explique a função main ( ) : 
________________________________________________________
______________________________________________________ 
 
12 - Esboce o Mapa conceitual da memória C : 
 
 
 
 
 
 
 
 
13 - O que faz a Biblioteca C ? 
________________________________________________________
_____________________________________________________________________________________________________________ 
 
14 - Cite 4 comandos de formato printf e explique sua forma de 
formatação: 
________________________________________________________
________________________________________________________
________________________________________________________
____________________________________________________ 
 
 
15 - O que falta para a linha do programa abaixo ser executada com 
sucesso ? 
 . 
printf(“A linguagem %c é de %s m%cdio”,’C,”nive”,’ ‘ ) 
 
31 
 . 
________________________________________________________
________________________________________________________
_____________________________________________________ 
 
16 - Faça um programa que imprima seus dados pessoais, como o 
nome, RG, idade, endereço, utilizando todas as funções e comandos 
vistos até este capítulo. 
________________________________________________________
________________________________________________________
________________________________________________________
________________________________________________________
________________________________________________________
__________________________________________________ 
 
17 - Analise o programa abaixo e descreva, em ordem, o que será 
impresso no vídeo: 
. 
main ( ) /*programa teste*/ 
{ 
 printf(“O número %.2f é o %s\n de um %cálculo do produto\t\”%d x 
 15,6789\”\n\?”,376.2936,”resultado”,’C’,24); 
________________________________________________________
________________________________________________________
________________________________________________________
____________________________________________________ 
 
18 - Elabore um programa que imprima o nº10 em octal e o nº538 em 
hexadecimal: 
________________________________________________________
________________________________________________________
________________________________________________________
____________________________________________________ 
 
 
 
 
 
 
 
32 
 Capítulo 3 
 
 Iniciação 
 de 
Variáveis 
 
 
 
 
 
 
 
 
 
 
 
 
• Constantes 
• Tipos de Constantes 
• Variáveis 
• Tipos de Variáveis 
• Significado das Variáveis Básicas 
• Variáveis Globais e Locais 
• Exercícios 
 
 
 
 
 
33 
Constantes 
 
 Constantes referem-se a valores fixos que o programa não 
pode alterar. A maneira como cada constante é representada depende 
do seu tipo. 
Ou seja: 
 
➧ Constantes inteiras são descritas como números sem componentes 
fracionários. 
Exemplo: 20 e -150 
 
➧ Constantes em ponto flutuante requerem o ponto decimal seguida 
pela parte fracionária do número. 
Exemplo: 3.141592 
 
Obs: Em C utilizamos o “ponto” antes da parte fracionária. É 
proibido, neste caso, o uso da vírgula ! 
 
➧ Constantes de caractere são envolvidas por aspas simples ‘ ‘. 
Exemplo: 'a' e '+' 
 
➧ Uma constante cadeia de caracteres é envolvida pos aspas duplas 
“ “ 
Exemplo: "linguagem C" 
 
 Dependendo de como deseja-se o resultado através do 
dado obtido, teremos duas formas de digitar o mesmo programa. 
Exemplo: 
 . 
 . 
 main( ) 
 { 
 printf("O resultado obtido e:%d.",5); 
 } 
 
✎ No exemplo acima a constante 5,será impressa no formato 
decimal. 
Ou ...... 
 
 
 
34 
 . 
 . 
 main( ) 
 { 
 printf("O resultado obtido é 5"); 
 } 
 
✎Imprimirá também, além do texto o número 5. 
 
 Embora o 2ºexemplo é mais simples, não devemos 
dispensar o intuito do 1º exemplo, pois se nos defrontarmos com um 
programa que exija através da entrada de dados(teclado) um certo 
dado é necessário que este seja encontrado pelo comando de formato 
para que seja possível a sua impressão. 
 
 
Tipos de Constantes 
 
 Existem três tipos de constantes em C: literais, simbólicas 
e objeto. 
 Uma constante literal é um valor digitado diretamente 
em um comando ou expressão de um programa. 
 
Exemplo : pi=3.1415; 
 MAX=0xff; /*hexadecimal*/ 
 distancia=4.3E+09; 
 ch='h'; 
 
 Constantes simbólicas são aquelas, que através de 
“diretivas” , fazem com que o compilador signifique/traduza algo. 
 
Exemplo: # define PI 3.14159 
 
 Uma diretiva #define tem três partes: a palavra-chave 
#define, um nome e um valor. 
 Sendo assim, se considerarmos o exemplo de diretiva 
acima, o programa poderá utilizar PI em vários locais do programa. 
 
 
 
35 
Exemplo: int i, j ; 
 i= PI; 
 j= PI*3; 
 
 
✎ A diretiva #define não “define” um objeto. Ela define um nome 
simbólico para um valor literal. Quando o compilador encontra um 
nome simbólico tal como PI, ele substitui esse símbolo por 3.14159 
exatamente como se fosse digitado o número diretamente. 
Obs: Diretivas, serão tópicos de assunto que serão vistos em 
capítulos posteriores. 
 
 A constante-objeto, também conhecida por constantes 
tipificadas, é um agrupamento de constante literal com variável. Ou 
seja, assim como as variáveis, elas ocupam espaço de memória, mas, 
da mesma forma que as constantes, seus valores não podem ser 
modificados. 
 
 
Exemplo: 
 . 
 . 
 main( ) 
 { 
 int resultado = 200; 
 resultado = valor; 
 printf("conta = %d\n",resultado); 
 printf("resposta = %d\n",valor); 
 } 
 
 
Veremos, então, na tela do monitor de vídeo: 
 
 conta = 200 
 resposta = 200 
 
Obs: int - variável a ser vista posteriormente. 
 
 
Variáveis 
 
36 
 
 As Variáveis são o aspecto fundamental de qualquer 
linguagem de computador. Uma variável é uma posição de memória, 
com um nome para referenciar o seu conteúdo, que é usada para 
guardar um valor que pode ser modificado pelo programa. 
 
 A forma geral para declarar uma variável é: 
 
 Nome de um tipo de variável nome da variável ; 
 
 Em C, o nome de uma variável não tem nenhuma relação 
com seu tipo. 
 
 
Tipos de Variáveis 
 
 
 Tipo Tamanho escala/abrangência 
 Bit / Bytes 
 
 char 8 1 -128 a 127 
 unsigned char 8 1 0 a 255 
 signed char 8 1-128 a 127 
 int 16 2 -32768 a 32767 
 unsigned int 16 2 0 a 65535 
 signed int 16 2 o mesmo que int 
 long 32 4 -2147483648 a 2147483647 
 unsigned long int 32 4 0 a 4294967295 
 float 32 4 3,4E-38 a 3,4E+38 
 double 64 8 1,7E-308 a 1,7E+308 
 long double 80 10 3,4E-4932 a 3,4E+4932 
 
 
Podemos observar na tabela acima, que na linguagem C existem 4 
tipos de variáveis básicas: char , int , float e double . 
 
 
 
 
37 
 Estes tipos básicos podem estar acompanhados por 
“modificadores de tipo” : signed , unsigned e long . 
 O uso importante de signed é modificar char ou int nas 
implementações em que esse tipo não tem sinal. 
 Algumas implementações podem permitir que unsigned 
seja aplicado aos tipos de ponto flutuante. 
 
 
Significado das Variáveis Básicas 
 
 Vejamos então o siginificado das Variáveis básicas: 
 
char - É uma palavra-chave (ou variável) que indica caracteres 
 ASCII . 
int - Valores inteiros na faixa de -32768 à 32767 . 
float - Dígitos de precisão (c/casas decimais) na faixa de 3,4E-38 
 à 3,4E+38 . 
double - Dígitos de precisão na faixa de 1,7E-308 à 1,7E+308 . 
 
Exemplo de programa: 
 . 
 . 
 main( ) 
 { 
 int quantidade; 
 char empresa; 
 float tempo; 
 quantidade=5; 
 empresa='B'; 
 tempo=13.456; 
 printf("A fabricação de %d terminais de vídeo”,quantidade); 
 printf(“\nna empresa %c gasta apenas %.2f minutos de hora”, 
 empresa,tempo); 
 } 
 
 
 
O programa possui três variáveis: int , char e float. 
E a elas é dado um nome. 
Obs: Observe que a cada término da instrução usamos ponto-vírgula 
 
38 
 Posteriormente associamos a variável um valor, seja em 
números ou caracteres. 
 A variável int aceita apenas números inteiros, no exemplo a 
ela foi associado o nº 5. A variável float acatará números com ponto 
flutuante (c/casa decimal). 
 Já a variável tipo char armazenará caracteres ASCII. Se 
for único caractere, este deverá ser envolvido em aspas simples. Mas 
no caso de uma cadeia de caractere (mais de um caractere) este deverá 
ser identificado através de uma matriz e estar contido entre chaves e 
aspas duplas (exemplo posterior). 
 Por fim após nomearmos as variáveis e a elas associarmos 
valores, a execução do programa resultará em: 
 A fabricação de 5 terminais de vídeo 
 na empresa B gasta apenas 13.46 minutos de hora. 
 
 O número 5 é impresso pelo comando de formato %d pois 
trata-se de número decimal; um único caractere B é expresso por %c e 
o tempo identificado com apenas 2 casas decimais e arredondado. 
Exemplo de programa: 
 . 
 . 
 main( ) 
 { 
 int x=30; 
 char y[12]={“900 pessoas”}; 
 char z=’Z’; 
 printf(“No dia %d haviam %s\n”,x,y); 
 printf(“no teatro para assistir a peça %c.”,z); 
 } 
 Observe neste exemplo que é possível em uma linha de 
instrução associarmos ao mesmo tempo o nome e o valor à variável. 
 A variável char y terá como atribuição uma cadeia de 
caracteres que serão impressos através do comando de formato %c. 
 
 
 
 Porque a matriz [12] ? 
 Utilizando a palavra-chave “char” podemos declarar 
uma string (cadeia de caracteres) que são, em C, terminadas em 
“nulo”. Isto quer dizer que terminam com um byte zero, também 
chamado de “caractere nulo”. A linguagem C acrescenta esse byte 
 
39 
automaticamente às strings literais, mas a responsabilidade sempre 
existirá ao programador para garantir que as strings estejam 
corretamente terminados. 
 
Exemplo: char string[12]={“Linguagem C”}; 
 
 O conjunto entre aspas duplas contém 11 caracteres 
(strings literais ). Sendo assim, ao declararmos o array=12 (array 
significa tabela, leque) estamos garantindo o byte zero (caractere 
nulo). 
 Nada impede de declararmos arrays maiores, o importante 
é garantirmos pelo menos um caractere adicional, chamado de 
“caractere nulo” ao array. 
 Podemos concluir então, que a utilização de array em C 
significa a criação de matrizes. 
 O resultado do programa será: 
 
No dia 30 haviam 900 pessoas 
 no teatro para assistir a peça Z. 
 
Nota: ASCII ➧ A tabela ASCII tem 256 códigos. Dispõe de 
números de 0 a 127(decimal) cobrindo letras, dígitos de 0 a 9, 
caracteres de pontuação e caracteres de controle como salto de linha, 
tabulação, etc... 
 Os computadores IBM usam 128 caracteres adicionais 
com códigos de 128 a 255 que consistem em símbolos de línguas 
estrangeiras e caracteres gráficos. 
 No fim da apostila temos a tabela ASCII !!! 
 A forma de representar um caractere de código acima de 
127 decimal é: 
 \xdd 
 
 
 
 
... onde dd representa o código de caractere em notação hexadecimal; 
e pode ser usado na expressão de controle de printf( ) como qualquer 
outro caractere. O exemplo a seguir mostra a possibilidade de 
imprimirmos caracteres gráficos, utilizando a tabela ASCII. 
 
 
40 
 . 
 . 
 main( ) 
 { 
 printf(“\xe1 \xe8 \xfo \xf6 \xe3 “); 
 } 
 
Resultado: 
 
 β φ ≡ ÷ π 
 
 
Variáveis Globais e Locais 
 
 Quando uma variável for utilizada pelo programa, deve-
se defini-las, para isto basta indicar seu tipo e nome. 
 
Exemplo: int a, b; 
 double despesas; 
 main( ) 
 { 
 int d, e; 
 . 
 . 
 } 
 
 As variáveis a, b e despesas são variáveis globais pois são 
válidas para todo o programa em virtude de terem sido declaradas fora 
da função main( ). 
 As variáveis d e e são consideradas locais a função 
main( ), pois foram declaradas dentro da mesma. 
 
 
Exercícios 
 
1 - O que é uma Constante Literal ? Cite um exemplo: 
________________________________________________________
________________________________________________________
_____________________________________________________41 
2 - Qual a forma geral para declarar uma Variável ? 
________________________________________________________
______________________________________________________ 
 
3 - Verifique se o programa abaixo funciona corretamente. Descreva, 
se houver, os erros e a solução para os mesmos. 
 . 
 . 
 main( ); 
 { 
 printf(“O placar foi de %c x %% , 5 , 2 ); 
 } 
________________________________________________________
________________________________________________________
________________________________________________________
____________________________________________________ 
 
4 - Qual o procedimento para, através da palavra-chave “char”, 
declararmos uma string. 
________________________________________________________
________________________________________________________
_____________________________________________________ 
 
5 - Faça um programa, consultando a tabela ASCII, de forma que 
resulte após a compilação o seguinte desenho gráfico: 
 
 
 
 
 
_________________________________________________
_______________________________________________ 
6 - Cite 4 variáveis básicas em C explicando seu significado e 
tamanho em C. 
________________________________________________________
________________________________________________________
_____________________________________________________ 
 
7 - Faça um programa utilizando 3 variáveis básicas. 
________________________________________________________
________________________________________________________
 
42 
________________________________________________________
________________________________________________________
___________________________________________________ 
 
8 - Escreva um programa que declare 3 variáveis inteiras e atribua os 
valores 6, 14 e 53 a elas ; 3 variáveis caracteres e atribua a elas as 
letras x, y e z ; finalmente imprima na tela: 
As variáveis inteiras contém os números 6, 14 e 53. 
As variáveis caracteres contém os valores x, y e z. 
 
________________________________________________________
________________________________________________________
________________________________________________________
________________________________________________________
___________________________________________________ 
 
9 - Qual a forma de se representar um caracter de código acima de 
127 decimal ? 
_______________________________________________________ 
 
10 - O programa abaixo está correto ? Porque ? 
 . 
 main( ) 
 { 
 char a[19]={“Compilar e Linkeditar”} 
 printf(“Em C é necessário %s”,a); 
 } 
_______________________________________________________ 
________________________________________________________
_____________________________________________________ 
 
 
 
 
11 - Qual tipo de variável utilizamos para números com casa decimal 
________________________________________________________
______________________________________________________ 
 
12 - Qual a abrangência da variável long double ? 
________________________________________________________
______________________________________________________ 
 
13 - Cite 2 modificadores de tipo e explique um deles. 
 
43 
________________________________________________________
______________________________________________________ 
 
14 - O que são variáveis Globais e Locais ? 
________________________________________________________
________________________________________________________
_____________________________________________________ 
 
15 - O que são constantes simbólicas ? 
________________________________________________________
________________________________________________________
_____________________________________________________ 
 
16 - Assinale V (verdadeiro) ou F (falso) : 
 
( ) Uma constante possui valor fixo e alterável. 
 
( ) Constante-objeto é um agrupamento de constante literal com 
 variável. 
 
( ) Uma variável é uma posição de memória que é usada para 
 guardar um valor que não pode ser modificado pelo programa. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 Capítulo 4 
 
 
44 
 Operadores 
 
 
 
 
 
 
 
 
 
 
 
 
 
• Definição de Operadores 
• Operadores de Atribuição 
• Operadores Aritméticos 
• Operador Unário 
• Operadores de Incremento e Decremento 
• Operadores Aritméticos de Atribuição 
• Operador Vírgula 
• Precedência dos Operadores em C 
• Exercícios 
 
 
Definição de Operadores 
 
 A linguagem C dá mais ênfase aos operadores que a 
maioria das outras linguagens de computador; com isso dizemos que C 
é rica em Operadores Internos. Tendo um pouco mais de 40 tipos de 
operadores, alguns são mais usados que outros, como por exemplo os 
Operadores Aritméticos. 
 O que fazem os Operadores ? Trabalham sobre seus 
operandos de modo precisamente definido. A linguagem C define 
quatro tipos de operadores: Aritméticos, Relacionais, Lógicos e Bit a 
 
45 
bit. A linguagem C possui também alguns operadores especiais para 
tarefas particulares. 
 
 
Operador de Atribuição 
 
 É possível utilizar um operador de atribuição dentro de 
qualquer expressão válida em C. Isso não é possível em certas 
linguagens de computação, tais como: Pascal, Basic e Fortan, que 
tratam os operadores de atribuição como um caso especial de 
comando. 
 A forma geral do operador de atribuição é: 
 
 
 Nome da Variável = Expressão 
 
 
 Devemos memorizar que, o sinal de igual( = ) não tem a 
mesma interpretação dada em matemática. Ou seja, o sinal “ = “ em C, 
somente representará a atribuição da expressão à direita ao nome da 
variável à esquerda. 
 
Exemplo: PI = 3.1415 ; 
 Kilo = 1000 ; 
 
 
 
 
 
 A linguagem C aceita várias atribuições (atribuições 
múltiplas) na mesma instrução; ou seja, em um único comando. 
 
Exemplo: x = y = z = 80 ; 
 
 Em programas profissionais, valores são atribuídos à 
variáveis usando esse método. 
 
Exemplo de programa: 
 
 
46 
 . 
 main( ) 
 { 
 int x ; 
 x = y = 30 ; 
 printf(“O resultado foi %d”,y); 
 } 
 
 
Operadores Aritméticos 
 
 Representam as operações aritméticas básicas como a 
soma, subtração, multiplicação e divisão . 
 
 
 + ..................... soma 
- ..................... subtração 
* ..................... multiplicação 
/ ..................... divisão 
 % ..................... módulo de divisão(resto) 
 
 
 
Obs: O operador módulo “ % “ não pode ser usado nos tipos em 
 ponto flutuante. 
 
 
 
 
Exemplo de programa: 
 . 
 main( ) 
 { 
 int x , y ; 
 float b,c; 
 float a = 5.13 ; 
 b= x = 10 ; 
 c= y = 4 ; 
 printf(“\n X + Y = %d “, x + y);/* soma */ 
 printf(“\n A - Y = %.2f”, a - y );/*subtração */ 
 printf(“\n Y x A = %.2f”, y * a );/* multiplicação */ 
 printf(“\n X\xf6Y= %d e o resto =%d”,x/y , x%y );/* divisão*/; 
 
47 
 printf(“\n ou X\xf6Y = %.1f”, b/c ); /* divisão */ 
 } 
 
Resultado: 
 X + Y = 14 
 A - Y = 1.13 
 Y x A = 20.52 
 X ÷ Y = 2 e o resto = 2 
 ou X ÷ Y = 2.5 
 Quanto a análise do programa, podemos afirmar que o uso 
de float e o comando de formato printf %.f deve-se ao fato de usarmos 
números com ponto flutuante. 
 No caso de um número puramente inteiro, o uso de int 
satisfaz a condição. 
 O sinal de “ = “ envolvido por aspas duplas significa em 
C apenas um caractere a ser impresso. Utilizamos \xf6, código este em 
hexa, para imprimirmos o caractere ÷ . 
 Nas últimas duas linhas de instrução, é possível 
observarmos os dois exemplos de respostas utilizando desta vez 
variáveis diferentes, mas com o mesmo valor. O fato de usarmos 
variáveis diferentes refere-se ao fato de não podermos imprimir um 
resultado de divisão com ponto flutuante utilizando variáveis do tipo 
int . 
 
Obs: Se o nome de uma variável for dada em letras minúsculas ou 
maiúsculas,devemos respeitar o nome desta sempre na forma original . 
Exemplo: 
 . 
 . 
 int ABC = 123; /*letras maiúsculas*/ 
 . 
 . 
 printf(“Os números são %d”, ABC); 
 . 
 . 
 
.................ou 
 
 . 
 . 
 int Valor=30; /*letras maiúsculas e minúsculas*/ 
 
48 
 . 
 . 
 printf(“O resultado é %d”,Valor); 
 . 
 . 
 O não cumprimento desta norma em C, acarretará erro ao 
compilarmos o programa ! 
 
 
 
Operador Unário 
 
 Indica a troca do sinal algébrico do valor, ou seja é um 
operador que multiplica o seu operando por -1 . 
 
Exemplo: resultado_A= -3 ; 
 resultado_B= - resultado_A ; 
 
 Desta forma obteremos com resultado B o número 3, 
porque: (-3) x (-1) = 3 . 
 Como o próprio nome diz, este tipo de operador necessita 
de apenas um operando, com isso atribui a “negação aritmética”. 
 
 
 
Operadores de Incremento e Decremento 
 
 A linguagem C dispõem de dois operadores não 
encontrados em outras linguagens; são eles: 
 
Operador de incremento...... + + ......adiciona 1 ao seu operando 
Operador de decremento..... - - ......subtrai 1 ao seu operando 
 
 Este é um dos fatores, em que podemos em C, comprimir 
comandos de programa. Em outras palavras: 
 
 
Exemplo: x = x + 1 ; x = x - 1 ; 
 ....é o mesmo que ....é o mesmo que 
 + + x ; - - x ; 
 
49 
 
 
 Os operadores de incremento trabalham de dois modos. O 
primeiro modo é chamado pré-fixado, em que o operador aparece 
antes do nome da variável( como no exemplo acima ). O segundo 
modo é o pós-fixado em que o operador aparece após o nome da 
variável. 
 
 
Exemplo: x = x + 1 ; x = x - 1 ; 
 ....é o mesmo que ....é o mesmo que 
 x + + ; x - - ; 
 
 Porém existe uma diferença quando esses operadores são 
usados em uma expressão ! Quando preceder (pré-fixado) o seu 
operando, C executa o incremento ou decremento antes de usar o valor 
do operando. Se o operador estiver após (pós-fixado) o seu operando, 
C usará o valor do operando antes de incrementá-lo ou decrementá-lo. 
 
 
 
 
 
1ºexemplo: (pré-fixado) 
 
 a = 6 ; 
 b = + + a ; 
 printf (“ a = %d, b = %d “, a , b ); 
 
Imprimirá: 
 a = 7 , b = 7 
 
2ºexemplo: (pós-fixado) 
 
 a = 6 ; 
 b = a + + ; 
 printf(“ a = %d , b = %d “, a , b ); 
 
Imprimirá: 
 a = 7 , b = 6 
 
 
50 
 A análise vale também para o operador de decremento(--) 
 
 
Exemplo: 
 main( ) /*pós-fixado*/ 
 { 
 int a = 0 ; 
 printf(“%d é um número nulo \n”,a ); 
 printf(“%d indica vazio \n”,a- - ); 
 printf(“%d é um número negativo.”,a); 
 } 
 
 
Imprimirá: 
 
 0 é um número nulo 
 0 indica vazio 
 -1 é um número negativo. 
 
 
Exemplo: 
 main( ) /*pré-fixado*/ 
 { 
 int a = 0 ; 
 printf(“%d é um número nulo \n”, a ); 
 printf(“%d é um número negativo \n”,- - a); 
 printf(“%d é um nºdecrescente em relação ao ao zero”,a ); 
 } 
 
Imprimirá: 
 0 é um número nulo 
 -1 é um número negativo 
 -1 é um nºdecrescente em relação ao zero 
 
Obs: Se as duas linhas abaixo são equivalentes, pergunta-se por 
que não preferir uma a outra ? 
 
 x = x + 1 ; /*funciona, mas não é o ideal*/ 
 
 x + + ; /* preferível */ 
 
 
51 
 A maioria dos compiladores C produzem o código-objeto 
muito mais rápido e eficiente para as operações se incremento e/ou 
decremento. Por essa razão, devemos usar os operadores de 
incremento e decremento sempre que possível ! 
 
Precedência 
 
 Devemos atentar quanto a precedência dos operadores. 
Todo compilador C tem um “calculador de expressões” próprio que 
disseca as expressões do código-fonte e constrói instruções no código 
compilado para calcular resultados das expressões. 
 O “calculador de expressões” obedece rigorosamente as 
regras de ordem de precedênciae avaliação. 
 Na ausência de parênteses, uma expressão é calculada 
usando um conjunto de regras padrão. 
 
 
 
Exemplo: 
 conta = a + b * h ; 
 
1º passo: calcula-se “ b * h “e em seguida.... 
2º passo: ...soma-se com “ a “ e atribui o resultado à variável “conta”. 
 Em C, multiplicação e divisão são efetuadas antes da 
soma e subtração. Porém, caso desejamos, dependendo da finalidade 
da expressão matemática, somar-se ou subtrair-se antes da 
multiplicação ou divisão, será necessário o uso dos parênteses. 
Exemplo: 
 conta = ( a + b ) * h ; 
 
 Alguns parênteses, embora tecnicamente desnecessários, 
tornam as intenções do programador perfeitamente claras. 
Exemplo: 
 conta = ( ( a * b ) / c ) + ( d - e ) ; 
 
 Primeiramente “a” é multiplicado por “b”, porque esta 
sub-expressão está no interior dos parênteses aninhados. O resultado é 
dividido por “c”, enquanto que “e” é subtraído de “d” 
independentemente. Finalizando, a soma é efetuada, atribuindo-se o 
resultado à variável “conta”. 
 
52 
 
 
Operadores Aritméticos de 
Atribuição 
 
 São eles: += , -= , *= , /= e %= 
 
 
Forma geral: 
 
 
 Nome da variável Op.aritmético Expressão ; 
 de atribuição 
 
 
 
 
 
 
 As expressões com estes operadores são mais compactas e 
normalmente produzem um código de máquina mais eficiente. 
 
Exemplos: 
 
a+=3 ; /* equivale a: a=a+3 */ 
b- = 2 ;/* equivale a: b=b- 2 */ 
c *=4;/* equivale a: c=c×4*/ 
d/=1;/* equivale a: d=d÷1*/ 
e%=5;/* equivale a: e=e%5*/ 
 
Exemplo de programa: 
 . 
 main( ); 
 { 
 int a=2; 
 int b=3; 
 printf(“valor = %d\n”,a); 
 a+=b;/*equivale a: a=2+3*/ 
 printf(“valor = %d\n”,a); 
 a+=b;/*equivale a: a=5+3*/ 
 printf(“valor = %d\n”,a); 
 
53 
 } 
 
Imprimirá: 
 
 valor = 2 
 valor = 5 
 valor = 8 
 
 
Operadores Relacionais 
 
 Utilizamos para fazer comparações de valores relativos de 
operadores inteiros ou de ponto flutuante. Os operadores relacionais 
em C são: 
 
 
 
 Operador Ação 
 
> maior que 
>= maior ou igual que 
< menor que 
 <= menor ou igual que 
 = = igualdade 
 ! = diferente 
 
 A idéia de verdadeiro e falso acompanha os conceitos dos 
operadores lógicos e relacionais. Em C, “verdadeiro” é qualquer valor 
diferente de zero. E “falso” equivale a zero. As expressões que usam 
operadores relacionais ou lógicos devolvem zero para “falso” e 1 
(um) para “verdadeiro” . 
 Podemos criar “laços” em um programa C utilizando os 
operadores relacionais. 
 
 
 
Exemplo de diagrama: 
 
 
 se a>2 
 
54 
 vai para “e” e 
 
 se a==1 
 vai para “f” 
 f 
 se a <1 
 vai para “g” 
 
 g 
 
 Conclusão 
 do 
 programa 
 
 
 
 O operador relacional de igualdade (= =) é representado 
por dois sinais de igual. Um erro comum é o ato de usar um único 
sinal de igual como operador. Neste caso o compilador não acusará 
erro, pois como em C toda expressão tem um valor verdadeiro ou 
falso, este não seria um erro de programa e sim do programador. 
 
Exemplo: 
 . 
 main( ); 
 { 
 int a=10; 
 printf(“\nO número é igual a 100 ? %d”,a==100); 
 a=50; 
 printf(“\nO número é igual a 50 ?%d”,a==50); 
 printf(“\n0...................falso e 1...........verdadeiro”); 
 } 
 
Imprimirá: 
 
 O número é igual a 100? 0 
 O número é igual a 50? 1 
 0.....................falso e 1.................verdadeiro 
 
Obs: A análise seria inversa para o operador “!=” (diferente). 
 
 
 
55 
O Operador Vírgula 
 
 É usado para encadear várias expressões. O operador 
vírgula tem o mesmo significado da expressão: “faça isso e isso”. 
 
 
Exemplo: 
 
 a = ( b = 2 , b + 1 ); 
 
 
 
 
 Primeiramente é atribuído o valor 2 à “b”, em seguida 
soma-se 2 à 1 e concluindo, é atribuído 3 à variável “a”. Pelo fato do 
operador vírgula ter uma precedência menor que o operador de 
atribuição (=), é necessário o uso de parênteses. 
 
 
 
Precedência dos Operadores em C 
 
 
Operadores 
em ordem de 
precedência:................ + + , - - maior 
 
* , / , % 
 
 + , - 
 
> , >= , < , <= 
 
 = = , != 
 
 = , += , - = , * = , / = , %= 
 , (vírgula) menor 
 
 
 
56 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Exercícios 
 
1 - Quais os operadores aritméticos básicos em C ? 
________________________________________________________
________________________________________________________
_____________________________________________________ 
 
2 - Rescreva a seguinte instrução usando operador de incremento. 
 
 soma = soma +1 ; 
 
_______________________________________________________ 
 
3 - Os operadores relacionais são usados para: ( assinale o correto ) 
 
a) trocar valores lógicos por variáveis ; 
b) distinguir diferentes tipos de variáveis ; 
c) representar operações aritméticas ou 
d) comparar valores . 
 
4 - A forma geral do operador de atribuição é: 
______________________________________________________________________________________________________________ 
 
5 - Qual a função do “calculador de expressões” em C ? 
________________________________________________________
________________________________________________________
_____________________________________________________ 
 
57 
 
6 - Qual a forma geral do Operador Aritmético de Atribuição ? 
________________________________________________________
______________________________________________________ 
 
7 - O que entende-se por “verdadeiro” e “falso” em C ? 
________________________________________________________
________________________________________________________
_____________________________________________________ 
 
 
8 - Qual será o valor de y ? 
 
 x = 5 ; 
 y = x ==5; 
________________________________________________________
______________________________________________________ 
 
9 - Como funcionam os Operadores de Incremento e Decremento ? 
________________________________________________________
________________________________________________________
________________________________________________________
____________________________________________________ 
 
10 - Faça um programa utilizando o Operador de Incremento pré-
fixado . 
________________________________________________________
________________________________________________________
________________________________________________________
________________________________________________________
________________________________________________________
________________________________________________________
_________________________________________________ 
 
11 - O programa abaixo utiliza que operador ? 
 
 main ( ) 
 { 
 int x=2 ; 
 printf (“%d é um número positivo”,x--); 
 
58 
 } 
 
a) Operador de Incremento 
b) Operador Unário 
c) Operador Aritmético pré-fixado 
d) Operador de decremento pós-fixado 
 
 
 
 
 
12 - O sinal de igual “ = “ em C, significa: 
 
________________________________________________________
______________________________________________________ 
 
13 - Descreva a equivalência: 
 
j /= 2 ____________________ 
x += y ____________________ 
h %=10 ____________________ 
c*3.1415 ___________________ 
M - =12 ____________________ 
 
14 - Escreva um programa que contenha 4 variáveis e imprima sua 
média aritmética. (Utilizar variáveis do tipo int e float). 
________________________________________________________
________________________________________________________
________________________________________________________
________________________________________________________
________________________________________________________
________________________________________________________
_________________________________________________ 
 
15 - Analise e descreva o que o programa imprime: 
 main ( ) 
 { 
 float x , y, A ; 
 x = 3.5 ; 
 y = 6.5; 
 
59 
 printf (“ valor1 = %.2f \n”, x+y); 
 x*=y ; 
 printf (“ valor2 = %.3f \n”,x); 
 y - =x ; 
 printf (“ valor3 = %.2f \n”,y); 
 A=x+y; 
 printf (“ valor 4 é igual a 6,3 ? %.d”,A==6.3); 
 printf (“\n 0..........falso e 1........verdadeiro”); 
 } 
 
Imprimirá: 
________________________________________________________
________________________________________________________
________________________________________________________
________________________________________________________
___________________________________________________ 
 
16 - Cite o motivo de usarmos o operador vírgula . 
 
________________________________________________________
________________________________________________________
_____________________________________________________ 
 
17 - Demonstre a precedência dos operadores em C . 
________________________________________________________
________________________________________________________
________________________________________________________
________________________________________________________
________________________________________________________
__________________________________________________ 
 
18 - Qual o resultado impresso ? 
 
 main ( ); 
 { 
 int a , b ; 
 float c ; 
 a = ((20*1*3) + 4) + (16/2); 
 b = (6/2+4) - 3*1.5; 
 c = a/b ; 
 printf (“ O resultado é %.2f”, c+=3); 
 
60 
 } 
 
________________________________________________________
________________________________________________________
________________________________________________________
____________________________________________________ 
19 - O programa abaixo possui erros de execução. Demonstre-os: 
 
 main ( ); 
 int a = b = 20 , 
 printf (“%d equivale a %d”,a,b); 
 printf (“Com incremento fica %d, ++a) 
 printf (“*pré-fixado*”); 
 } 
 
Correções se necessárias: _____________________________ 
 _____________________________ 
 _____________________________ 
 _____________________________ 
 
Imprimirá então: _____________________________________ 
 _____________________________________ 
 _____________________________________ 
 
 
 
20 - O que representa x+++y ? Porque ? 
 
a) x++ + y 
b) x + ++y 
c) x + y 
d) x - y 
 
 
 
 
 
 
 
 
 
 
61 
 
 
 
 
 
 
 
 Capítulo 5 
 
 Pré-
processador 
 de C 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
• Diretivas do pré-processador 
• Tipos de diretivas 
• A diretiva #include 
 
62 
• A diretiva #define 
• Exercícios 
 
 
 
 
 
 
 
 
 
 Neste capítulo , aprenderemos 
sobre o pré-processador de C com o 
intuito de podermos, desde já, digitarmos 
programas completos em C no 
microcomputador.

Outros materiais