Академический Документы
Профессиональный Документы
Культура Документы
Esse livro, conhecido pelos programadores de C como "K&R", serviu durante muitos
anos como uma especifica��o informal da linguagem. A vers�o da linguagem C que ele
descreve � usualmente referida como "K&R C". A segunda edi��o do livro cobriu o
padr�o posterior, o ANSI C. K&R C introduziu as seguintes caracter�sticas na
linguagem:
C99
Ap�s o processo da padroniza��o ANSI, as especifica��es da linguagem C permaneceram
relativamente est�ticas por algum tempo, enquanto a linguagem C++ continuou a
evoluir. (em 1995, a Normative Amendment 1 criou uma vers�o nova da linguagem C mas
esta vers�o raramente � tida em conta.) Contudo, o padr�o foi submetido a uma
revis�o nos finais da d�cada de 1990, levando � publica��o da norma ISO 9899:1999
em 1999. Este padr�o � geralmente referido como "C99" e foi adoptado como um padr�o
ANSI em mar�o de 2000. As novas caracter�sticas do C99 incluem:
Fun��es em linha
Remo��o de restri��es sobre a localiza��o da declara��o de vari�veis (como em C++)
Adi��o de v�rios tipos de dados novos, incluindo o long long int (para minimizar
problemas na transi��o de 32-bits para 64-bits), um tipo de dados boolean explicito
(chamado _Bool) e um tipo complex que representa n�meros complexos
Vetores de dados de comprimento vari�vel (o vetor pode ter um tamanho diferente a
cada execu��o de uma fun��o, mas n�o cresce depois de criado)
Suporte oficial para coment�rios de uma linha iniciados por //, emprestados da
linguagem C++
V�rias fun��es de biblioteca novas, tais como snprintf()
V�rios ficheiros-cabe�alho novos, tais como stdint.h
O interesse em suportar as caracter�sticas novas de C99 parece depender muito das
entidades. Apesar do GCC e v�rios outros compiladores suportarem grande parte das
novas caracter�sticas do C99, os compiladores mantidos pela Microsoft e pela
Borland suportam pouqu�ssimos recursos do C99, e estas duas companhias n�o parecem
estar muito interessadas em adicionar tais funcionalidades, ignorando por completo
as normas internacionais. A Microsoft parece preferir dar mais �nfase ao C++.[12]
C11
Em 2007, se iniciou o trabalho em antecipa��o de outra revis�o do padr�o de C,
informalmente chamada de C11 ou C1X. O comit� dos padr�es de C adotou regras para
limitar a inser��o de novos recursos que n�o tenham ainda sido testados por
implementa��es existentes.[13]
Vis�o geral
C � uma linguagem imperativa e procedural para implementa��o de sistemas. Seus
pontos de design foram para ele ser compilado, fornecendo acesso irrestrito a
mem�ria e baixos requerimentos do hardware. Tamb�m foi desenvolvido para ser uma
linguagem de alto n�vel, para maior reaproveitamento do c�digo. C foi �til para
muitas aplica��es que foram codificadas originalmente em Assembly.
Essa propriedade n�o foi acidental; a linguagem C foi criada com o objectivo
principal em mente: facilitar a cria��o de programas extensos com menos erros
recorrendo ao paradigma da programa��o procedural mas sobrecarregando menos o autor
do compilador, cujo trabalho complica-se ao ter de realizar as caracter�sticas
complexas da linguagem. Para este fim, a linguagem C possui as seguintes
caracter�sticas:
Seguran�a de tipo
Coletor de lixo (mais comum em linguagens interpretadas)
Vetores que crescem automaticamente
Classes ou objetos com comportamento (ver Orienta��o a objetos)
Clausuras
Fun��es aninhadas
Sobrecarga de operadores
Meta-programa��o
Apoio nativo de multithreading e comunica��o por rede
Apesar da lista de caracter�sticas �teis que C possui n�o ser longa, isso n�o tem
sido um impedimento � sua aceita��o, pois isso permite que novos compiladores de C
sejam escritos rapidamente para novas plataformas, e tamb�m permite que o
programador permane�a sempre em controle do que o programa est� a fazer. Isto � o
que por v�rias vezes permite o c�digo de C corpesar de tamb�m ser usada para
desenvolver programas de computador. � tamb�m muito usada no ensino de ci�ncia da
computa��o, mesmo n�o tendo sido projetada para estudantes e apresentando algumas
dificuldades no seu uso. Outra caracter�stica importante de C � o seu c�digo
resultante em Assembly ter funcionamento id�ntico ao c�digo fonte, que permite que
um projetista seja capaz de fazer algumas previs�es de como o software ir� se
comportar ao ser executado.
O psuem um valor reservado especial, NULL, que indica que n�o est�o a apontar para
uma morada. O uso desse valor como morada � muito �til na constru��o de v�rias
estruturas de dados, mas causa comportamento n�o-definido (possivelmente uma falha
de sistema) ao ser desreferenciado. Um ponteiro que possui o valor NULL � chamado
ponteiro nulo. Os ponteiros s�o declarados (e desreferenciados) com um *
(asterisco), portanto o tipo int* denota um ponteiro para n�mero(s) inteiro(s). A
linguagem C tamb�m fornece um tipo especial de ponteiros, o void*, que se traduz
num ponteiro que aponta para um objeto de tipo desconhecido.
A linguagem C tamb�m tem apoio em n�vel de linguagem para vetores est�ticos (de
dimens�o fixa) de tipos. As disposi��es de tipos podem parecer ter mais que uma
dimens�o apesar de serem tecnicamente disposi��es de disposi��es de tipos. Em
mem�ria, tais estruturas s�o posicionadas com as linhas uma depois da outra (a
alternativa seria armazenar os dados em colunas, usado em outras linguagens). O
acesso a disposi��es de tipos � feito atrav�s de ponteiros e aritm�tica de
ponteiros; o nome da disposi��o � tratado como se fosse um ponteiro que aponta para
o in�cio da disposi��o. Em certas aplica��es n�o � razo�vel usarem-se disposi��es
de tipos de dimens�o fixa e por isso a aloca��o din�mica de mem�ria pode ser usada
para criar disposi��es de tipos de dimens�o vari�vel.
int
O tipo de dado int (inteiro) serve para armazenar valores num�ricos inteiros.
Existem v�rios tipos de inteiros, cada um de um tamanho diferente (dependendo do
sistema operacional e/ou arquitetura do processador):
char
O tipo char ocupa 1 byte, e serve para armazenar caracteres ou inteiros. Isso
significa que o programa reserva um espa�o de 8 bits na mem�ria RAM ou em
registradores do processador para armazenar um valor (char de tamanho maior que 8
bits � permitido pela linguagem, mas os casos s�o raros). Com vetores do tipo char
� poss�vel criar cadeias de caracteres (strings).
float
O tipo de dado float serve para armazenar n�meros de ponto flutuante, ou seja, com
casas decimais. O padr�o mais utilizado nos �ltimos 10 anos � o IEEE 754-1985.
double
O tipo de dado double serve para armazenar n�meros de ponto flutuante de dupla
precis�o, normalmente tem o dobro do tamanho do float e portanto o dobro da
capacidade. O padr�o mais adotado tamb�m � o IEEE 754-1985.
struct
Em C podem ser usadas estruturas (chamados de registos em outras linguagens de
programa��o). As estruturas s�o grupos de vari�veis organizadas arbitr�riamente
pelo programador. Uma estrutura pode criar um novo tipo de vari�vel caso typedef
seja usado em sua declara��o.
int main(void)
{
puts("Ol�, Mundo!");
}
Apesar do programa acima correr corretamente, atualmente origina algumas mensagens
de aviso quando compilado como C ANSI. Essas mensagens podem ser eliminadas
efectuando umas pequenas altera��es no programa original:
int main(void)
{
puts("Ol�, Mundo!");
return 0; /* Retorna 0, pois `main` retorna um `int` */
}
/* Nova linha ap�s fechar a chave principal */
A primeira linha do programa � uma diretiva de pr�-processamento #include, que
causa com que o pr�-processador substitua aquela linha pela totalidade do conte�do
do arquivo qual diretiva se refere. Neste caso o arquivo padr�o stdio.h (que cont�m
prot�tipos de fun��es para trabalho com entrada e sa�da) ir� substituir a linha. Os
caracteres < e > indicam que o arquivo stdio.h encontra-se no local em que, quando
da configura��o do compilador, se definiu como padr�o para localiza��o dos
ficheiros de inclus�o (header files, geralmente com a extens�o .h).
A linha (n�o-vazia) seguinte indica que uma fun��o denominada main ser� definida. A
fun��o main tem um significado especial nos programas em C, pois � a fun��o que �
inicialmente executada (em ingl�s, entry point). Os caracteres { e } delimitam a
extens�o da fun��o. O termo int define a fun��o main como sendo uma fun��o que
retorna um n�mero inteiro. O termo void indica que a fun��o n�o aceita par�metros.
A fun��o main, normalmente aceita par�metros, que s�o passado pela linha de
comando. Os compiladores e sistemas operacionais atuais reconhecem as seguintes
declara��es de main:
int main(void);
int main(int argc, char *argv[]);
int main(int argc, char **argv);
A linha seguinte "chama", ou executa uma fun��o chamada puts; o arquivo inclu�do,
stdio.h, cont�m a informa��o que descreve a forma como a fun��o puts deve ser
chamada. Nesta chamada, � passado � fun��o puts um �nico argumento, a linha de
texto constante "Ol�, Mundo!". A fun��o puts retorna um valor, um int, mas como n�o
� usado, � descartado pelo compilador. O comando return retorna o valor 0 para o
sistema, que � interpretado pelo mesmo como que a fun��o main() foi executada e
encerrada com sucesso (sem erros). Por fim, o caracter } indica o fim da fun��o
main. Note-se que texto rodeado por /* e */ (coment�rios de texto) � ignorado pelo
compilador. Os compiladores que obedecem � norma C99 tamb�m aceitam como
coment�rios as linhas de texto que s�o precedidos por //.
Matem�tica
O seguinte c�digo realiza seis opera��es matem�ticas, adi��o, subtra��o,
multiplica��o, divis�o, exponencia��o e radicia��o, e em seguida envia os seus
respectivos resultados para a sa�da padr�o (normalmente o console).
int main()
{
int a = 2, b = 3;
getchar(); //O uso dessa fun��o � necess�ria apenas nos sistemas Windows, para
manter o terminal (Prompt de comando) aberto
return 0;
}
Estruturas de dados
No exemplo seguinte, � criada uma estrutura composta por 3 elementos de tipos
diferentes. Ap�s ser declarada uma vari�vel "x" do tipo struct "y", onde "y" � o
nome da estrutura, para se acessar os elementos usa-se a seguinte sintaxe:
x.elemento.
# include <stdio.h>
struct Pessoa
{
char nome[64]; // vetor de 64 chars para o nome
unsigned short int idade;
char rg[13];
};
int main()
{
struct Pessoa exemplo = {"Fulano", 16, "00.000.000-00"}; // declara��o da
vari�vel "exemplo"
# include <stdio.h>
int main()
{
Pessoa exemplo = {"Filipe", 16, "00.000.000-00"}; // declara��o da vari�vel
"exemplo"
getchar();
return 0;
}
Ferramentas de programa��o
Bloodshed Dev-C++
IDE (Ambiente de desenvolvimento integrado), como Code::Blocks, NetBeans e
JetBrains CLion
GNU Compiler Collection
Automa��o de compila��o, como make
Ver tamb�m
Outros projetos Wikimedia tamb�m cont�m material sobre este tema:
Wikilivros Livros e manuais no Wikilivros
C++
Linguagem compilada
Linguagem de programa��o
Linguagem de programa��o de alto n�vel
Lista de linguagens de programa��o
Unix
Compilador
Refer�ncias
�Overall Options - Using the GNU Compiler Collection (GCC)�. gcc.gnu.org (em
ingl�s). Consultado em 13 de dezembro de 2017
�History of the C Programming Language� (em ingl�s). livinginternet.com.
Consultado em 23 de maio de 2010
�Programming Language Popularity� (em ingl�s). langpop.com. Consultado em 23 de
maio de 2010
�TIOBE Programming Community Index� (em ingl�s). tiobe.com. Consultado em 23 de
maio de 2010
�C � The Influence Factor of Many Popular Programming Languages� (em ingl�s).
cprogramminglanguage.com. Consultado em 23 de maio de 2010
Ritchie, Dennis M. (janeiro de 1993). �The Development of the C Language�.
Consultado em 1 de janeiro de 2008. The scheme of type composition adopted by C
owes considerable debt to Algol 68, although it did not, perhaps, emerge in a form
that Algol's adherents would approve of.
A Brief History of C
Johnson, S. C.; Ritchie, D. M. (1978). �Portability of C Programs and the UNIX
System� (PDF). Bell System Tech. J. 57 (6): 2021�2048. Consultado em 16 de dezembro
de 2012
�Entrevista com Dennis Ritchie, Bjarne Stroustrup e James Gosling� (em (em
ingl�s)). Java Report e C++ Report. Julho de 2000. Consultado em 3 de junho de 2015
Kernighan, Brian W.; Ritchie, Dennis M (1978). The C Programming Language (em
ingl�s). Upper Saddle River, New Jersey: Prentice hall. 228 p�ginas. ISBN 0-13-
110163-3
Rosangle Hickson. Aprenda a programa em C, C++ e C# 2a ed. [S.l.]: Campus. p. 3.
ISBN 978-85-352-1479-6
�Microsoft d� mais �nfase ao C++� (em ingl�s). connect.microsoft.com. Consultado
em 23 de maio de 2010
�Grupo de trabalho do ISO C� (em ingl�s). open-std.org. Consultado em 23 de maio
de 2010
Liga��es externas
C Progressivo (em portugu�s)
[[1] Aprendendo a programar -- Programando na Linguagem C -- Jaime Evaristo,
Universidade Federal de Alagoas] (em portugu�s)
P�gina oficial do ISO C Working Group (em ingl�s)
C no DMOZ
[Expandir]
v � e
Linguagens de programa��o
[Expandir]
v � e
Lista de Normas da Comiss�o Eletrot�cnica Internacional
Categorias: Linguagem de programa��o CLinguagens de programa��o procedurais
Menu de navega��o
N�o autenticadoDiscuss�oContribui��esCriar uma
contaEntrarArtigoDiscuss�oLerEditarEditar c�digo-fonteVer hist�ricoBusca
Pesquisar na Wikip�dia
P�gina principal
Conte�do destacado
Eventos atuais
Esplanada
P�gina aleat�ria
Portais
Informar um erro
Loja da Wikip�dia
Colabora��o
Boas-vindas
Ajuda
P�gina de testes
Portal comunit�rio
Mudan�as recentes
Manuten��o
Criar p�gina
P�ginas novas
Contato
Donativos
Imprimir/exportar
Criar um livro
Descarregar como PDF
Vers�o para impress�o
Noutros projetos
Wikimedia Commons
Wikilivros
Ferramentas
P�ginas afluentes
Altera��es relacionadas
Carregar ficheiro
P�ginas especiais
Hiperliga��o permanente
Informa��es da p�gina
Elemento Wikidata
Citar esta p�gina
Noutros idiomas
Deutsch
English
Espa�ol
??????
Italiano
???
???
Latina
??
99 outras
Editar hiperliga��es
Esta p�gina foi editada pela �ltima vez �(s) 22h34min de 21 de abril de 2018.
Este texto � disponibilizado nos termos da licen�a Creative Commons - Atribui��o -
Compartilha Igual 3.0 N�o Adaptada (CC BY-SA 3.0); pode estar sujeito a condi��es
adicionais. Para mais detalhes, consulte as condi��es de uso.
Pol�tica de privacidadeSobre a Wikip�diaAvisos geraisProgramadoresDeclara��o sobre
cookiesVers�o m�velWikimedia Foundation Powered by MediaWiki