C

Grupo :

  1. Eliezer Luz Ribeiro
  2. Lucio Leal Bastos
  3. Michel Pedroso

Composição dos nomes

Em C, nomes de variáveis, funções, rótulos e vários outros objetos definidos pelo usuário são chamados de identificadores, que podem variar de um a diversos caracteres. Por via de regra, o primeiro caractere deve ser uma letra ou um sublinhado, e as palavras subsequentes devem ser letras, números ou sublinhados.

Tamanho máximo dos identificadores

O padrão C ANSI determina que identificadores podem ter qualquer tamanho, mas pelo menos os primeiros 6 caracteres devem ser significativos se o identificador estiver envolvido em um processo externo de linkedição. Esses identificadores (nomes externos) incluem nomes de funções e variáveis globais que são compartilhadas entre arquivos. Sr o identificador não é usado em um processo externo de linkedição (nomes internos), os primeiros 31 caracteres serão significativos. O número exato de caracteres significativos pode variar dependendo do compilador utilizado.

Distinção entre maiúsculas e minúsculas

Em C, letras maiúsculas e minúsculas são tratadas diferentemente. Portanto, count, Count e COUNT são três identificadores distintos. Em alguns ambientes, o tipo de letra (maiúscula ou minúscula) dos nomes de funções e de variáveis globais pode ser ignorado se o linkeditor for indiferente ao tipo.

Palavras reservadas

A linguagem C possui um total de 32 palavras conforme definido pelo padrão ANSI, que são elas:

Tabela de palavras reservadas
auto double int struct break else long switch
case enum register typedef char extern return union
const float short unsigned continue for signed void
default goto sizeof volatile do if static while

É importante lembrar que todas as palavras reservadas são escritas em minúsculo e não podem ser utilizadas para outro propósito. Alguns compiladores incluem outras palavras reservadas como, asm, cdecl, far, fortran, huge, interrupt, near, pascal, typeof.

Variáveis

Uma variável é uma posição nomeada de memória, que é usada para guardar um valor que pode ser modificado pelo programa. Todas as variáveis em C devem ser declaradas antes de serem usadas. A forma geral de uma declaração é

tipo lista_de_variáveis;, onde

tipo deve ser um tipo de dado válido em C mais quaisquer modificadores;
lista_de_variáveis pode consistir em um ou mais nomes de identificadores separados por vírgulas.

Faixa de valores de variáveis em função do tipo

Há cinco tipos básicos de dados em C: caractere, inteiro, ponto flutuante, ponto flutuante de precisão dupla e sem valor (char, int, float, double e void, respectivamente). Todos os outros tipos de dados em C são baseados em um desses tipos. O tamanho e a faixa desses tipos de dados variam de acordo com o tipo de processador e com a implementação do compilador C. O padrão ANSI estipula uma faixa mínima de cada tipo de dado, não o seu tamanho em bytes.

O tipo void declara explicitamente uma função que não retorna valor algum ou cria ponteiros genéricos.

Tipo Tamanho em Bytes Faixa Mínima
void 0 Sem valor
char 1 -127 a 127
unsigned char 1 0 a 255
signed char 1 -127 a 127
int 4 -2.147.483.648 a 2.147.483.647
unsigned int 4 0 a 4.294.967.295
signed int 4 -2.147.483.648 a 2.147.483.647
short int 2 -32.768 a 32.767
unsigned short int 2 0 a 65.535
signed short int 2 -32.768 a 32.767
long int 4 -2.147.483.648 a 2.147.483.647
signed long int 4 -2.147.483.648 a 2.147.483.647
unsigned long int 4 0 a 4.294.967.295
float 4 Seis digitos de precisão
double 8 Dez digitos de precisão
long double 10 Dez digitos de precisão

Ponteiros

Um ponteiro é uma variável que contém um endereço de memória. Esse endereço é normalmente a posição de uma outra variável de memória. Se uma variável contém o endereço de uma outra, então a primeira variável é dita para apontar para a segunda.

Ponteiros são um dos aspectos mais fortes e mais perigosos em C. Por exemplo, ponteiros não-inicializados, ou ponteiros selvagens, podem provocar uma quebra do sistema. Talvez pior, é fácil usar ponteiros incorretamente, ocasionando erros que são muito difíceis de encontrar.

Variáveis ponteiros

Se uma variável irá conter um ponteiro, ela deve ser declarada como tal. uma declaração de ponteiro consiste no tipo base, um * e o nome da variável. A forma geral para se declarar uma variável ponteiro é

tipo *nome;, onde

tipo é qualquer tipo válido em C;
nome é o nome da variável ponteiro.

O tipo base do ponteiro define que tipo de variáveis o ponteiro pode apontar. Tecnicamente, qualquer tipo de ponteiro pode apontar para qualquer lugar na memória. no entanto, toda a aritimética de ponteiros é feita por meio do tipo base, assim, é importante declarar o ponteiro corretamente.

Operadores de Ponteiros

Existem dois operadores especiais para ponteiros: * e &. O & é um operador unário que devolve o endereço na memória do seu operando, por exemplo,

m = &count;

coloca em m o endereço da memória que contém a variável count. Esse endereço é a posição interna ao computador da variável. O endereço não tem relação alguma com o valor de count. O operador & pode ser imaginado como retornando “o endereço de”. Assim, o comando de atribuição anterior significa “m recebe o endereço de count.

O operador * é o complemento de &. É um operador unário que devolve o valor da variável localizada no endereço que o segue. Por exemplo, se m contém o endereço da variável count,

q = *m;

coloca o valor de count em q. O operador * pode ser imaginado como “no endereço”. Nesse caso, o comando anterior significa “q recebe o valor que está no endereço m”.

Declarações implícitas e explícitas em C

Uma declaração explícita é uma instrução em um programa que lista nomes de variáveis e especifica que elas são de um tipo particular. Uma declaração implícita é um meio de associar variáveis a tipos por convenções padrão em vez de por instruções de declaração. Nesse caso, a primeira ocorrência de um nome de uma variável em um programa constitui sua declaração implícita. Tanto as declarações explícitas como as implícitas criam vinculações estáticas a tipos.

No C, às vezes, deve-se distinguir entre declarações e definições. As declarações especificam tipos e outros atributos, mas não cauusam alocação de armazenamento. As definições especificam atributos e causam alocação de armazenamento. Para um nome específico, um programa C pode ter qualquer número de declarações compatíveis, mas somente uma única definição. Uma finalidade das declarações de variáveis em C é fornecer o tipo de uma variável definida externamente em uma função e usada na mesma. Ela diz ao compilador qual é o tipo de variável e que ela está definida em outro lugar. A idéia transporta-se para as funções em C, cujos protótipos declaram nomes e interfaces, mas não o código de funções. As definições de função, por outro lado, são completas.

Vinculação de tipos

Uma vinculação é chamada estática se ocorre antes do tempo de execução e nunca muda durante o tempo de vida do programa. Se a vinculação ocorre primeiramente durante o tempo de execução ou pode mudar durante o curso da execução do programa, ela é dita dinâmica. A linguagem C tem vinculação estática para tipos.

Tipificação forte

Em uma linguagem com tipificação forte, cada nome de um programa escrito na linguagem tem um único tipo associado a ela. Esse tipo é conhecido no momento da compilação. O C não é uma linguagem fotemente tipificada porque permite funções para as quais os parâmetros não são verificados quanto ao tipo. Além disso, os tipos união da linguagem não é verificado quanto à compatibilidade.

Escopo

Escopo é um contexto delimitante aos quais valores e expressões estão associadas. Normalmente, o escopo é ultilizado para definir o grau de ocultação da informação, isto é, a visibilidade e acessibilidade às variáveis em diferentes partes do programa.

O escopo estático é padrão na linguagem C (embora em C não inclua funções aninhadas estaticamente), pois permite que o programador possa elaborar raciocínios sobre valores, parâmetros e referências a objetos. Isso torna muito mais fácil fazer o código modular e se raciocinar sobre ele, já que a estrutura local de nomeaçao pode ser entendida isoladamente.

Fontes

 
c-2-trabalho.txt · Last modified: 2012/03/30 06:07 by clp · [Old revisions]