Programar em C/Conceitos básicos
Você já viu um programa básico em C. Antes de começar a se dedicar ao estudo de C, é bom que você compreenda alguns termos e alguns aspectos da linguagem, o que facilitará sua compreensão dos capítulos seguintes. A seguir, formalizaremos alguns aspectos da estrutura básica da linguagem.
Estrutura básica
[editar | editar código-fonte]- Um programa em C é basicamente estruturado em blocos de código. Blocos nada mais são que conjuntos de instruções, e devem ser delimitados com chaves ({ ... }). Um bloco também pode conter outros blocos.
- Uma instrução geralmente corresponde a uma ação executada, e deve sempre terminar com ponto-e-vírgula (;).
- O compilador ignora espaços, tabulações e quebras de linha no meio do código; esses caracteres são chamados genericamente de espaço em branco (whitespace). Ou seja, os três trechos a seguir são equivalentes:
printf("Olá mundo");return 0;
printf ("Olá mundo");
return 0;
printf(
"Olá mundo"
);
return
0
;
No entanto, você achará muito mais fácil de ler um estilo de código mais parecido com o segundo exemplo. Costuma-se usar (mas não abusar de) espaços e tabulações para organizar o código. Tal prática é chamada de indentação do código. Trata-se de uma convenção de escrita de códigos fonte que visa modificar a estética do programa para auxiliar a sua leitura e interpretação. Ela tem como objetivo indicar a hierarquia dos elementos.
- A linguagem é sensível à utilização de maiúsculas e minúsculas. Por exemplo, se você escrevesse
Printf
no lugar deprintf
, ocorreria um erro, pois o nome da função é totalmente em minúsculas.
Escopo
[editar | editar código-fonte]Geralmente, em programação, não queremos que outras funções usem as variáveis que estamos manipulando no momento. O conceito de escopo está justamente relacionado a isso. Escopo é o nível em que um dado pode ser acessado; em C há dois níveis: local e global. Uma variável global pode ser acessada por qualquer parte do programa; variáveis locais podem ser acessadas apenas dentro do bloco onde foram declaradas (ou nos seus sub-blocos), mas não fora dele (ou nos blocos que o contêm). Isso possibilita que você declare várias variáveis com o mesmo nome mas em blocos diferentes. Veja um exemplo:
int a;
{
int a;
int b;
}
{
int b;
}
As duas variáveis chamadas b são diferentes e só podem ser acessadas dentro do próprio bloco. A primeira variável a é global, mas só pode ser acessada no segundo bloco, pois a variável local a no primeiro bloco oculta a variável global de mesmo nome. Note que isso é possível em C, e tome cuidado para não cometer erros por causa disso.
Bibliotecas
[editar | editar código-fonte]Uma biblioteca é um arquivo contendo um conjunto de funções (pedaços de código) já implementados e que podem ser utilizados pelo programador em seu programa. O comando #include é utilizado para declarar as bibliotecas que serão utilizadas pelo programa. Esse comando diz ao pré-processador para tratar o conteúdo de um arquivo especificado como se o seu conteúdo houvesse sido digitado no programa no ponto em que o comando #include aparece.
O comando #include permite duas sintaxes:
- #include <nome_da_biblioteca>: o pré-processador procurará pela biblioteca nos caminhos de procura pré-especificados do compilador. Usa-se essa sintaxe quando estamos incluindo uma biblioteca que é própria do sistema, como as bibliotecas stdio.h e stdlib.h;
- #include "nome_da_biblioteca": o pré-processador procurará pela biblioteca no mesmo diretório onde se encontra o nosso programa. Podemos ainda optar por informar o nome do arquivo com o caminho completo, ou seja, em qual diretório ele se encontra e como chegar até lá.
De modo geral, os arquivos de bibliotecas na linguagem C são terminados com a extensão .h. Veja dois exemplos do uso do comando #include:
#include <stdio.h>
#include "D:\Programas\soma.h"
Na primeira linha, o comando #include é utilizado para adicionar uma biblioteca do sistema: stdio.h (que contém as funções de leitura do teclado e escrita em tela). Já na segunda linha, o comando é utilizado para adicionar uma biblioteca de nome soma.h, localizada no diretório "D:\Programas\".
Introdução às funções
[editar | editar código-fonte]Funções são muito usadas, não só em C, mas em linguagens de programação em geral. Uma função é basicamente um bloco de código que realiza uma certa tarefa. Quando queremos realizar aquela tarefa, simplesmente fazemos uma chamada de função para a função correspondente.
Uma função pode precisar que o programador dê certos dados para realizar a tarefa; esses dados são chamados argumentos ou parâmetros. A função também pode retornar um valor, que pode indicar se a tarefa foi realizada com sucesso, por exemplo; esse valor é o valor de retorno. Podemos fazer uma analogia com as funções matemáticas: as variáveis independentes são os argumentos e o valor numérico da função é o valor de retorno.
Em C, para chamar uma função, devemos escrever o seu nome, seguido da lista de argumentos (separados por vírgula) entre parênteses, mesmo que não haja nenhum argumento. Lembre que a chamada de função também é uma instrução, portanto devemos escrever o ponto-e-vírgula no final. Alguns exemplos de chamadas de funções:
funcao(arg1, arg2, arg3);
funcao();
Se quisermos saber o valor de retorno de uma função, podemos armazená-lo numa variável. Variáveis serão introduzidas logo adiante, mas a sintaxe é muito fácil de aprender:
valor_de_retorno = funcao(arg1, arg2);
Vejamos um exemplo completo:
//quadrado.c
//calcula o quadrado de um número
#include<stdio.h>
int square( int num1 )
{
return num1 * num1;
}
int main()
{
int number;
int result;
printf("\nDigite um numero: ");
scanf("%d", &number);
result = square(number);
printf("O Quadrado de %d eh: %d", number, result);
return 0;
}
Em C, todo o código (exceto as declarações de variáveis e funções) deve estar dentro de funções. Todo programa deve ter pelo menos uma função, a função main, que é por onde começa a execução do programa.
Expressões
[editar | editar código-fonte]Um conceito muito importante em programação é o de expressão. Expressões são conjuntos de valores, variáveis, operadores e chamadas de funções que são avaliados ou interpretados para resultar num certo valor, que é chamado o valor da expressão. Por exemplo:
3 * 4 + 9
é uma expressão de valor 21;a + 3 * b
é uma expressão equivalente à expressão matemática a + 3b;foo()
é uma expressão cujo valor é o valor de retorno da função foo.
Comentários
[editar | editar código-fonte]Muitas vezes é bastante útil colocar comentários no código, por exemplo para esclarecer o que uma função faz, ou qual a utilidade de um argumento, etc. A maioria das linguagens de programação permite comentários; em C, eles podem aparecer de duas maneiras:
/* Comentários que podem
ocupar várias
linhas.
*/
e
// Comentários de uma linha só, que englobam
// tudo desde as duas barras até o final da linha.
Tudo que estiver entre as marcas /* e */ ou entre // será ignorado pelo compilador. Note que os comentários de uma linha só (iniciados por //) foram incorporados ao padrão da linguagem apenas em 1999, e portanto alguns compiladores podem não os suportar. As versões mais recentes do GCC não terão problema em suportar esse tipo de comentário.