A maior rede de estudos do Brasil

Grátis
Estruturas_de_Dados_e_Algoritmos_em_C.erivanildo- Blog - conhecimentovaleouro.blogspot.com by @viniciusf666

Pré-visualização | Página 3 de 50

programador defina o 
seu próprio estilo, e que exista uma certa coerência nas regras que adopte. 
 
As palavras reservadas da linguagem C são: auto; break; case; char; const; continue; 
default; do; double; else; enum; extern; float; for; goto; if; int; long; register; return; 
short; signed; sizeof; static; struct; switch; typedef; union; unsigned; void; volatile; e 
while. As palavras reservadas aparecem a cheio ao longo do texto e no código apresentado. 
 
Para melhorar a legibilidade do programa, devem ser introduzidos comentários relevantes, 
que expliquem o significado dos diferentes objectos, ou que operação é efectuada por 
grupos bem definidos de instruções. Um comentário é uma qualquer sequência de 
símbolos inserida entre /* e */ e que não contenha */. Isto significa que não se pode 
nunca encapsular comentários. A Figura 1.5 apresenta a definição formal do comentário. 
 
 
Figura 1.5 - Definição formal do comentário. 
O uso adequado de comentários melhora extraordinariamente a legibilidade e a 
compreensão de um segmento de código. Assim, devem introduzir-se comentários, pelo 
menos, nas situações seguintes: 
x Em título, para explicar o que faz o segmento de código e descrever, caso exista, o 
mecanismo de comunicação associado. 
x Sempre que se declarem constantes ou variáveis, para explicar o seu significado, a 
menos que este seja trivial. 
x A encabeçar as porções de código correspondentes à decomposição algorítmica que lhe 
deu origem. 
1.4 Representação da informação 
Em Pascal, os tipos de dados predefinidos estão directamente relacionados com o tipo de 
informação neles armazenado. Assim, para informação numérica, existem os tipos inteiro 
(integer) para a representação exacta e real (real) para a representação aproximada; para 
quantidades lógicas existe o tipo booleano (boolean); e para a representação de símbolos 
gráficos existe o tipo carácter (char). 
 
Em linguagem C, pelo contrário, os tipos de dados predefinidos reflectem apenas o 
formato de armazenamento. São sempre tipos numéricos, embora em alguns casos 
possibilitem uma interpretação alternativa, função do contexto em que são usados. 
 
 comentário ::= /* qualquer sequência de símbolos que não contenha ‘*/’ */ 
7 CAPÍTULO 1 : INTRODUÇÃO AO C 
 
 
A Figura 1.6 apresenta os tipos de dados simples existentes na linguagem C. Estes tipos de 
dados também se designam por escalares, uma vez que, todos os seus valores estão 
distribuídos ao longo de uma escala linear. Dentro dos tipos de dados simples, temos o tipo 
ponteiro (pointer), o tipo enumerado (enum) e os tipos aritméticos, que se dividem em 
tipos inteiros e tipos reais. Os tipos aritméticos e o tipo enumerado designam-se por tipos 
básicos. Os tipos aritméticos inteiros podem armazenar valores negativos e positivos, que é 
o estado por defeito ou usando o qualificativo signed, ou em alternativa, podem 
armazenar apenas valores positivos, usando para o efeito o qualificativo unsigned que lhe 
duplica a gama dinâmica positiva. O tipo aritmético int pode ainda ser qualificado como 
short, reduzindo-lhe a capacidade de armazenamento. O qualificativo long pode ser usado 
para aumentar a capacidade de armazenamento do tipo inteiro int e do tipo real double. 
 
Tipos de Dados Simples
Enumerado
enum
Aritméticos
float
Ponteiro
pointer
Tipos Inteiros Tipos Reais
doublecharint
Tipos Básicos
Qualificativos
short
long
signed
unsigned
 
Figura 1.6 - Tipos de dados simples existentes na linguagem C. 
1.4.1 Tipos de dados inteiros 
Na linguagem C existem os seguintes tipos de dados inteiros: 
x O tipo char permite a representação de quantidades com sinal num byte e portanto, 
permite armazenar valores entre -128 a 127. 
x O tipo unsigned char permite a representação de quantidades sem sinal num byte e 
portanto, permite armazenar valores entre 0 e 255. 
x O tipo short [int] permite a representação de números negativos e positivos em 2 bytes e 
portanto, permite armazenar valores entre -32768 e 32767. 
x O tipo unsigned short [int] permite a representação de números positivos em 2 bytes e 
portanto, permite armazenar valores entre 0 e 65535. 
x O tipo int permite a representação de números negativos e positivos em 2 bytes ou 4 
bytes, consoante o computador. 
x O tipo unsigned int permite a representação de números positivos em 2 bytes ou 4 bytes, 
consoante o computador. 
x O tipo long [int] permite a representação de números negativos e positivos em 4 bytes 
ou 8 bytes, consoante o computador. 
x O tipo unsigned long [int] permite a representação de números positivos em 4 bytes ou 
8 bytes, consoante o computador. 
 
PROGRAMAÇÃO ESTRUTURAS DE DADOS E ALGORITMOS EM C 8 
O tamanho dos tipos inteiros int e long e a sua gama dinâmica dependem do compilador e 
do hardware utilizados. Esta informação é indicada no ficheiro limits.h localizado no 
directório include do ambiente de desenvolvimento. No caso do computador utilizado nesta 
disciplina, cujo processador é de 32 bits, os tipos int e unsigned int são representados em 
4 bytes, pelo que, permitem armazenar respectivamente valores entre -2147483648 e 
2147483647 e valores entre 0 e 4294967295. Os tipos long e unsigned long são também 
representados em 4 bytes. 
1.4.2 Tipos de dados reais 
Na linguagem C existem os seguintes tipos de dados reais: float; double; e long double. O 
tamanho, a precisão e a gama dinâmica dos tipos reais dependem do compilador e do 
hardware utilizados. Esta informação é indicada no ficheiro float.h localizado no directório 
include do ambiente de desenvolvimento. Para o caso do computador utilizado nesta 
disciplina, o tamanho, a precisão e a gama dinâmica dos tipos reais são os seguintes: 
x O tipo float utiliza 4 bytes, o que permite armazenar valores entre 1.2x10-38 e 3.4x1038, 
com uma mantissa de 6-7 algarismos significativos. 
x O tipo double utiliza 8 bytes, o que permite armazenar valores entre 2.2x10-308 e 
1.8x10308, com uma mantissa de 15-16 algarismos significativos. 
x O tipo long double utiliza 12 bytes, o que permite armazenar valores entre 3.4x10-4932 e 
1.2x104932, com uma mantissa de 18-19 algarismos significativos. 
1.4.3 Representação de caracteres e inteiros 
A maioria das linguagens de programação, entre as quais se inclui o Pascal, faz a distinção 
entre o tipo inteiro e o tipo carácter. Mesmo, apesar de nessas linguagens, os caracteres 
serem armazenados na memória em numérico, usando para o efeito o código ASCII. 
 
Na linguagem C não existe tal distinção. O tipo char que utiliza um byte permite armazenar 
quer um carácter quer um valor inteiro. A Figura 1.7 apresenta dois exemplos que 
exemplificam esta polivalência. No primeiro caso a atribuição do valor 65, que é o código 
ASCII do carácter A, é equivalente à atribuição do próprio carácter 'A' à variável CAR. No 
segundo caso a atribuição do valor 3 à variável NUM é diferente da atribuição à variável 
CAR do carácter '3', cujo código ASCII é 51. Devido a esta polivalência de interpretação do 
valor inteiro armazenado na variável, o valor escrito no monitor depende do especificador 
de formato que seja empregue na instrução de saída de dados. O formato %d representa o 
valor decimal, enquanto que o formato %c representa o carácter. 
 
 
Figura 1.7 - Utilização do tipo char. 
 char CAR; /* declaração da variável CAR de tipo char */
 ... 
 CAR = 'A'; /* ambas as atribuições armazenam */
 CAR = 65; /* na posição de memória CAR o valor 65 */
ņņņņņņņņņņņņņņņņņņņņņņņņņņņņņņņņņņņņņņņņņņņņņņņņņņņņņņņņņņņņņņņņņņņņ 
 char NUM, CAR; /* declaração das variáveis NUM e CAR de tipo char */
 ... 
 NUM = 3; /* armazena na posição de memória NUM o valor 3 */
 CAR = '3'; /* armazena na posição de memória CAR o valor 51 */
9 CAPÍTULO 1 : INTRODUÇÃO AO C 
 
 
1.5 Constantes e variáveis