Apostila C
275 pág.

Apostila C


DisciplinaMétodos e Técnicas de Programação22 materiais161 seguidores
Pré-visualização45 páginas
cada
operac¸a\u2dco realizada com o arquivo.
Uma outra func¸a\u2dco interessante para se utilizar em conjunto com a func¸a\u2dco
ferror() e´ a func¸a\u2dco perror(). Seu nome vem da expressa\u2dco em ingle\u2c6s print
error, ou seja, impressa\u2dco de erro, e seu proto´tipo e´:
void perror(char *str)
A func¸a\u2dco perror() recebe como para\u2c6metro uma string que que ira´ preceder
a mensagem de erro do sistema. Abaixo e´ apresentado um exemplo de
uso das func¸o\u2dces ferror() e perror(). Nele, um programador tenta acessar
um arquivo que na\u2dco existe. A abertura desse arquivo ira´ falhar e a seguinte
mensagem sera´ apresentada: \u201cO seguinte erro ocorreu : No such file
or directory\u201d.
Exemplo: usando as func¸o\u2dces ferror() e perror()
1 #include <s t d i o . h>
2 #include <s t d l i b . h>
3 i n t main ( ) {
4 FILE \u2217arq ;
5 arq = fopen ( \u2018 \u2018 NaoExiste . t x t \u2019 \u2019 , \u2018 \u2018 r \u2019 \u2019 ) ;
6 i f ( arq == NULL)
7 pe r ro r ( \u2018 \u2018O seguin te er ro ocorreu \u2019 \u2019 ) ;
8 else
9 f c l o s e ( arq ) ;
10
11 system ( \u2018 \u2018 pause \u2019 \u2019 ) ;
12 return 0;
13 }
269
12 APE\u2c6NDICE
12.1 SISTEMAS NUME´RICOS
Na nossa vida dia´ria estamos acostumados a trabalhar com nu´meros no
sistema decimal. Nesse sistema, os nu´meros sa\u2dco formados por um con-
junto de 10 d\u131´gitos (0, 1, 2, 3, 4, 5, 6, 7, 8 e 9) onde cada d\u131´gito pode
representar uma unidade, dezena, centena, etc.
O que acontece, na verdade, e´ que cada d\u131´gito usado para formar um
nu´mero decimal e´ multiplicado por uma pote\u2c6ncia de base 10. Essa multiplicac¸a\u2dco
ocorre do d\u131´gito mais a direita para o mais a esquerda, comec¸ando pela
pote\u2c6nca 0 (100). Essa pote\u2c6ncia e´ aumentada em uma unidade sempre que
nos movemos um d\u131´gito para a esquerda. Assim, o nu´mero 123 nada mais
e´ do que o primeiro algarismo multiplicado por 102 (100), o segundo alga-
rismo multiplicado por 101 (10), e o terceiro algarismo multiplicado por 100
(1), como mostra a figura abaixo:
Ale´m do sistema decimal, existem dois outros sistemas muito utilizados na
computac¸a\u2dco: os sistemas bina´rio e hexadecimal.
O sistema bina´rio e´ o sistema nume´rico que existe internamente em um
computador. Nesse sistema, os nu´meros sa\u2dco formados por um conjunto
de apenas 2 d\u131´gitos (0 e 1), os quais representam os dois n\u131´veis de tensa\u2dco
interna. Como no sistema decimal, cada d\u131´gito usado para formar um
nu´mero bina´rio e´ multiplicado por uma pote\u2c6ncia de base 2. Ja´ no sistema
hexadecimal, os nu´meros sa\u2dco formados por um conjunto de 16 s\u131´mbolos
formados utilizando os d\u131´gitos 0, 1, 2, 3, 4, 5, 6, 7, 8 e 9, e as letras A (valor
igual a 10), B (valor igual a 11), C (valor igual a 12), D (valor igual a 13),
E (valor igual a 14) e F (valor igual a 15). Como nos sistemas anteriores,
cada valor usado para formar um nu´mero hexadecimal e´ multiplicado por
uma pote\u2c6ncia de base 16.
270
12.1.1 CONVERSA\u2dcO DE BINA´RIO PARA DECIMAL
Imagine que temos um nu´mero bina´rio para ser convertido para decimal.
O sistema bina´rio e´ um sistema de base 2, ou seja, utiliza apenas dois
valores (0 e 1). Para converter esse nu´mero bina´rio para decimal, basta
multiplicar cada d\u131´gito dele por uma pote\u2c6ncia de base 2. Esse processo
se inicia no pelo d\u131´gito mais a direita com a pote\u2c6nca 0 (20). Essa pote\u2c6ncia
e´ aumentada em uma unidade sempre que nos movemos um d\u131´gito para
a esquerda. Em seguida somamos o resultado de todas as multiplicac¸o\u2dces
efetuadas. O resutado desse processo e´ o nu´mero decimal que representa
esse nu´mero bina´rio, como mostra a figura abaixo:
12.1.2 CONVERSA\u2dcO DE DECIMAL PARA BINA´RIO
O processo de conversa\u2dco de um nu´mero decimal para bina´rio se baseia
no me´todo de divisa\u2dco repetida:
1. Faz-se a divisa\u2dco inteira do nu´mero decimal por 2, de modo a se
obter o quociente inteiro e o resto da divisa\u2dco;
2. Anota-se o resto da divisa\u2dco anterior, sempre colocando-se esse valor
a esquerda do u´ltimo valor calculado;
3. Se o quociente da divisa\u2dco for maior do que ZERO, repete-se o item
1, caso contra´rio o processo de conversa\u2dco terminou.
O resultado desse processo e´ o nu´mero bina´rio que representa esse nu´mero
decimal, como mostra a figura abaixo:
271
12.1.3 CONVERSA\u2dcO DE HEXADECIMAL PARA DECIMAL
Imagine que temos um nu´mero hexadecimal para ser convertido para de-
cimal. O sistema hexadecimal e´ um sistema de base 16, ou seja, utiliza
um total de 16 valores (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F) para
representar um nu´mero. Para converter esse nu´mero hexadecimal para
decimal, basta multiplicar cada d\u131´gito dele por uma pote\u2c6ncia de base 16.
Esse processo se inicia no pelo d\u131´gito mais a direita com a pote\u2c6nca 0 (160).
Essa pote\u2c6ncia e´ aumentada em uma unidade sempre que nos movemos
um d\u131´gito para a esquerda. Em seguida somamos o resultado de todas as
multiplicac¸o\u2dces efetuadas. O resutado desse processo e´ o nu´mero decimal
que representa esse nu´mero hexadecimal, como mostra a figura abaixo:
12.1.4 CONVERSA\u2dcO DE DECIMAL PARA HEXADECIMAL
O processo de conversa\u2dco de um nu´mero decimal para hexadecimal se
baseia no me´todo de divisa\u2dco repetida:
1. Faz-se a divisa\u2dco inteira do nu´mero decimal por 16, de modo a se
272
obter o quociente inteiro e o resto da divisa\u2dco;
2. Anota-se o resto da divisa\u2dco anterior, sempre colocando-se esse valor
a esquerda do u´ltimo valor calculado;
3. Se o quociente da divisa\u2dco for maior do que ZERO, repete-se o item
1, caso contra´rio o processo de conversa\u2dco terminou.
O resultado desse processo e´ o nu´mero hexadecimal que representa esse
nu´mero decimal, como mostra a figura abaixo:
12.1.5 CONVERSA\u2dcO ENTRE SISTEMAS: HEXADECIMAL E BINA´RIO
Para converter um nu´mero hexadecimal em bina´rio, substitui-se cada d\u131´gito
hexadecimal por sua representac¸a\u2dco bina´ria com quatro d\u131´gitos. Assim,
o nu´mero hexadecimal A5 tem sua representac¸a\u2dco bina´ria como sendo
10100101:
A = 1010
5 = 0101
Para converter um nu´mero bina´rio em hexadecimal faz-se o processo in-
verso: substitui-se cada conjunto de 4 d\u131´gitos bina´rios por um d\u131´gito hexa-
decimal. Assim, o nu´mero bina´ro 00111111 tem sua representac¸a\u2dco hexa-
decimal como sendo 3F:
0011 = 3
1111 = F
273
Cada conjunto de 4 d\u131´gitos bina´rios equivale a um d\u131´gito
hexadecimal e vice-versa.
A tabela abaixo mostra a equivale\u2c6ncia entre os sistemas:
274
	Introdução
	A linguagem C
	Influência da linguagem C
	Utilizando o Code::Blocks para programar em C
	Criando um novo projeto no Code::Blocks
	Utilizando o debugger do Code::Blocks
	Esqueleto de um programa em linguagem C
	Indentação do código
	Comentários
	Bibliotecas e funções úteis da linguagem C
	O comando include
	Funções de entrada e saída: stdio.h
	Funções de utilidade padrão: stdlib.h
	Funções matemáticas: math.h
	Testes de tipos de caracteres: ctype.h
	Operações em String: string.h
	Funções de data e hora: time.h
	Manipulando dados, variáveis e expressões em C
	Variáveis
	Nomeando uma variável
	Definindo o tipo de uma variável
	Lendo e escrevendo dados
	Printf
	Putchar
	Scanf
	Getchar
	Escopo: tempo de vida da variável
	Constantes
	Comando #define
	Comando const
	seqüências de escape
	Operadores
	Operador de atribuição: ``=''
	Operadores aritméticos
	Operadores relacionais
	Operadores lógicos
	Operadores bit-a-bit
	Operadores de atribuição simplificada
	Operadores de Pré e Pós-Incremento
	Modeladores de Tipos (casts)
	Operador vírgula ``,''
	Precedência de operadores
	Comandos de Controle Condicional
	Comando if
	Uso das chaves {}
	Expressão condicional
	Comando else
	Aninhamento de if
	Operador ?
	Comando switch
	Comandos de Repetição
	Repetição por condição
	Laço infinito
	Comando while
	Comando for
	Comando do-while
	Comando break
	Comando continue
	Goto e label
	Vetores e matrizes - Arrays
	Exemplo de uso
	Array com uma dimensão - vetor
	Array com duas dimensões - matriz
	Arrays multidimensionais
	Inicialização de arrays
	Inicialização sem tamanho
	Exemplo de uso de arrays
	Arrays de caracteres - Strings
	Definição e declaração de strings
	Trabalhando com strings
	Lendo uma string do teclado
	Escrevendo uma string na tela
	Funções para manipulação de strings