Linguagem c

Disponível somente no TrabalhosFeitos
  • Páginas : 14 (3257 palavras )
  • Download(s) : 0
  • Publicado : 23 de junho de 2011
Ler documento completo
Amostra do texto
Artigos sobre linguagem C
Não confunda API com linguagem
    Não é difícil achar programadores que confundem API com a definição de uma linguagem de programação. Há pessoas que acham que clearscr  é uma função da linguagem C e que é um arquivo cabeçalho padrão. A linguagem C provavelmente foi a primeira linguagem a causar confusão sobre o que é a API para um determinado sistema operacional ousub-sistema e as bibliotecas definidas para a própria linguagem.
    Não somente isso, mas há ainda confusão entre o que é definição da linguagem e o que é biblioteca padrão da linguagem. Por exemplo, print não faz parte da definição da linguagem C, justamente por ser uma função definida da biblioteca stdio, cujo cabeçalho é definido em .
    Muitos programadores acham que isso é conhecimentodesnecessário e assim permanecem fazendo confusão. E essa confusão se torna evidente quando precisam portar código de uma plataforma para outra. É comum ver programadores escrevendo wrappers para arquivos de cabeçalho como conio.h em ambientes onde este arquivo não está disponível.
    Essa confusão tornou-se ainda maior depois que linguagens independentes de plataforma, como o Java, Python e TCL,surgiram com uma ampla API disponível para qualquer sistema no qual exista um intérprete. Por exemplo, há programadores que acham que JFrame faz parte da definição da linguagem Java, sendo que esse objeto faz parte da definição da API gráfica que acompanha a linguagem.

Já que falamos de ponteiros...
    Já que falei de ponteiros, aqui vai uma implementação simples da função strlen, que sófica compacta devido ao uso de ponteiros.

ptrdiff_t strlen (const char * str) {
  const char * p = str;
  while (*p) ++p;
  return str - p;
}

    Observe que p é incrementado até atingir o fim da cadeia de caracteres. Como p é do tipo char, fazer str - p retorna a quantidade de caracteres entre a posição de p, que agora está deslocado da quantidade de caracteres, e a posição de str que é oinício da cadeia de caracteres.
    O tipo de dados ptrdiff_t é, na verdade, do tipo inteiro sem sinal. Segundo a especificação ANSI C, a diferença entre ponteiros deve ser expressa nesse tipo de dado. Porém, para esta rotina em particular, é totalmente cabível expressar o resultado da diferença str - p em termos do tipo size_t, o que daria, inclusive, uma semântica mais clara à função.Portanto, o cabeçalho da função ficaria:

size_t strlen (const char * str);

    A semântica fica mais clara, pois strlen calcula o tamanho de uma cadeia de caracteres e nada mais claro do que ter esta função retornando um tamanho, expresso em termos de um tipo size_t.

Vantagens (e desvantagens) dos ponteiros em C
    A linguagem C tem um tipo de dados que costuma ser fonte de confusão entre osprogramadores iniciantes na linguagem: os ponteiros. Os ponteiros nada mais são que números inteiros sem sinal que representam uma localização na memória, dentro do espaço de endereçamento do seu programa. A primeira confusão com os ponteiros é justamente por conta da declaração: se são números inteiros, prá que serve o raio do tipo de dados que é usado para sua declaração? Vamos por partes…
   Os ponteiros dão ao programador flexibilidade para manipular as informações em memória, permitindo o acesso direto aos dados. A manipulação de strings, por exemplo, é trivial com o uso de ponteiros. As construções mais complicadas também beneficiam-se do uso dos ponteiros. Por exemplo, imagine que você tenha um bloco de memória no qual existam informações de tamanho fixo. Com ponteiros, você podeacessar e alterar partes deste bloco de maneira bem simples e direta.
    Mas nem tudo são flores com os ponteiros. Os ponteiros exigem disciplina do programador, principalmente no que diz respeito ao controle de limites. A linguagem C não implementa qualquer controle automático de limites. Se o seu programa fizer um ponteiro passar do fim de uma arena de memória nada o impedirá. O fato é que os...
tracking img