Diferenças

Aqui você vê as diferenças entre duas revisões dessa página.

Link para esta página de comparações

Próxima revisão
Revisão anterior
c:introducao_a_linguagem_c [2023/08/01 17:00] – criada mazieroc:introducao_a_linguagem_c [2023/09/07 20:08] (atual) – [Estrutura de um programa em C] maziero
Linha 1: Linha 1:
 +====== Introdução à programação em C ======
  
 +Este material foi produzido a partir de diversas fontes, entre elas as transparências do prof. [[http://web.inf.ufpr.br/lferrari|Lucas Ferrari]] (UFPR) e o tutorial online [[http://www.tutorialspoint.com/cprogramming/index.htm|Learn C Programming]], entre outros.
 +
 +===== Um breve histórico =====
 +
 +A linguagem C foi criada por [[https://en.wikipedia.org/wiki/Dennis_Ritchie|Dennis Ritchie]] em 1972 para reescrever de forma portável o sistema operacional UNIX, que antes era escrito em //assembly//. Sua estrutura e seu nome provêm de uma linguagem anterior [[https://en.wikipedia.org/wiki/B_%28programming_language%29|B]], que era uma simplificação da linguagem de programação [[https://en.wikipedia.org/wiki/BCPL|BCPL]], escrita em 1966. 
 +
 +Em 1978 foi publicado o famoso livro [[https://en.wikipedia.org/wiki/The_C_Programming_Language|C Programming Language]] por  Brian Kernighan e Dennis Ritchie, consagrando a linguagem no padrão chamado K&R. Durante muitos anos esse livro foi considerado como a especificação da linguagem.
 +
 +Em 1989 o padrão C foi oficializado pelo ANSI (//American National Standards Institute//) através do padrão ANSI X3.159-1989, conhecido hoje como [[https://en.wikipedia.org/wiki/ANSI_C|ANSI C]], C89 ou C90.
 +
 +Em 1999 a ISO (//International Standards Organization//) publicou um novo padrão da linguagem chamado ISO/IEC 9899:1999 e conhecido como [[https://en.wikipedia.org/wiki/C99|C99]]. Existem padrões mais recentes (C11 e C17/C18), mas o C99 é o padrão mais usado atualmente.
 +
 +Apesar de sua idade, C continua sendo uma das linguagens mais utilizadas hoje em dia ([[https://www.tiobe.com/tiobe-index/|TIOBE Index]], [[https://spectrum.ieee.org/top-programming-languages-2022|Ranking IEEE]]). A linguagem C inspirou a criação de muitas outras linguagens de programação mais recentes, como C++, Java, C#, JavaScript, Perl, PHP, Lua, etc.
 +
 +===== Características da linguagem =====
 +
 +Algumas das principais características da linguagem C são:
 +
 +  * linguagem procedural, modular e estruturada, com tipagem estática de dados.
 +  * geralmente é compilada para o código de máquina da plataforma alvo, gerando código compacto, eficiente e sem necessidade de um //runtime// de execução sofisticado.
 +  * Possui facilidades para acesso de baixo nível à memória, registradores e portas de E/S.
 +  * Extremamente portável, pode executar em plataformas de microcontroladores a supercomputadores.
 +  * É muito utilizada para escrever software de sistema, como sistemas operacionais, compiladores, serviços de rede, interfaces gráficas, bancos de dados, editores de texto, jogos, etc.
 +  * A maior parte das funcionalidades da linguagem provém de vastas bibliotecas, como a biblioteca padrão C (LibC ou [[https://en.wikipedia.org/wiki/C_standard_library|Standard C Library]]).
 +
 +===== Exemplo de um programa em C =====
 +
 +O código a seguir traz um ''Hello World'' em C:
 +
 +<code c hello.c>
 +/* Este é um exemplo simples de código em C,
 +   que escreve a string 'Hello, world!' na
 +   saída padrão do terminal.              */
 +
 +#include <stdio.h>              // inclusão de definições
 +
 +int main ()                     // função principal
 +{
 +  printf ("Hello, world!\n") ;  // função de entrada/saída
 +  return (0) ;                  // retorno (fim) da função
 +}
 +</code>
 +
 +Algumas observações importantes sobre esse código:
 +
 +  * A linha ''#include'' é um comando de preprocessador; ele indica que na fase inicial da compilação deve ser lido (incluído) o arquivo ''stdio.h'', que contém as definições das funções de entrada/saída da biblioteca padrão C (como a função ''printf'').
 +  * todo programa em C inicia sua execução pela função ''main'', que sempre deve ser definida.
 +  * Os blocos de código são delimitados por chaves (''{'' e ''}'').
 +  * Por ser uma função, ''main'' deve retornar um valor (linha ''return'').
 +  * Comentários são iniciados pelos caracteres ''%%//%%'' ou delimitados pelos caracteres ''%%/*%%'' e ''%%*/%%''.
 +  * A endentação não é obrigatória, mas é fundamental para a legibilidade do código.
 +
 +Para poder executar o código acima, ele deve ser salvo em um arquivo (''hello.c'') e compilado:
 +
 +<code>
 +$ cc hello.c -o hello
 +$ ./hello
 +Hello, world!
 +</code>
 +
 +===== Estrutura de um programa em C =====
 +
 +Um programa em C é composto basicamente das seguintes partes:
 +
 +  * Comandos do preprocessador (linhas iniciando com ''#'')
 +  * Comentários
 +  * Definição de funções
 +  * definição de variáveis e tipos
 +  * Comandos e expressões
 +
 +Mais um exemplo simples, para concluir:
 +
 +<code c soma.c>
 +/*
 +  Calcula a soma e a média de dois inteiros,
 +  escrevendo o resultado na saída padrão.
 +*/
 +
 +#include <stdio.h>
 +
 +int main ()
 +{
 +  int a, b, soma ;
 +  float media ;
 +  
 +  a = 10 ;
 +  b = 43 ;
 +
 +  soma  = a + b ;
 +  media = soma / 2.0 ;
 + 
 +  printf ("A soma  de %d e %d vale %d\n", a, b, soma) ;
 +  printf ("A media de %d e %d vale %f\n", a, b, media) ;
 +
 +  return (0) ;
 +}
 +</code>
 +
 +<note important>
 +Procure comentar o código adequadamente, para facilitar sua compreensão. Um bom comentário deve explicar **o que** um bloco de código faz, não **como** ele faz (pois isso deve estar claro no próprio código).
 +
 +Comentar código corretamente exige alguma técnica. [[https://stackoverflow.blog/2021/12/23/best-practices-for-writing-code-comments|Este texto]] traz algumas boas dicas sobre comentários. 
 +</note>