Introdução à Linguagem C

1.1 Introdução

As linguagens de programação evoluiram exponencialmente desde que os primeiros computadores electrónicos foram feitos para calcular dados de telemetria durante a 2.ª Guerra Mundial, onde os programadores trabalhavam apenas com as mais primitivas instruções, a linguagem máquina. Essas instruções consistiam em longas cadeias de uns e zeros.

De seguida apareceram os assembladores que mapeavam mnemónicas (mais facilmente utilizadas) para a linguagem máquina.

Com o passar do tempo, apareceram linguagens de mais alto nível como BASIC e COBOL. Estas linguagens permitiram que os programadores utilizassem algo parecido com palavras e frases usadas normalmente como "`Let I = 100"`. Essas instruções eram então traduzidas para linguagem máquina por interpretadores e compiladores.

Durante alguns anos, o primeiro objectivo de programação foi escrever pequenas porções de código que eram executadas rapidamente. O programa precisava de ser pequeno, visto que a memória era cara e precisava de ser executado rapidamente, porque o poder de processamento também era dispendioso. à medida que os computadores se tornaram mais pequenos, mais baratos, mais rápidos e a memória mais barata, as prioridades mudaram. Hoje em dia, o tempo dispendido por um programador numa aplicação é muito mais caro do que o hardware utilizado. Código bem escrito e fácil de actualizar é a prioridade da maioria das aplicações de hoje.

A linguagem C foi criada e implantada pela primeira vez por Dennis Ritchie num Dec PDP-11, utilizando o sistema operativo Unix.

A linguagem C foi desenvolvida nos laboratórios Bell na década de 70, tendo surgido a partir da necessidade de escrever programas, que utilizassem as potencialidades da linguagem máquina, mas de uma forma mais simples e portátil que esta.

Usada inicialmente para a programação de sistemas, viria pela sua flexibilidade e poder, a tornar-se numa linguagem de uso geral nos mais diversos contextos, sendo actualmente muito utilizada pelos programadores profissionais.

A linguagem C pode ser considerada uma linguagem de médio nível, porque para além de possuir instruções de alto nível e ser tão estruturada como por exemplo o PASCAL, também possui instruções de baixo nível.

1.2 Características

As suas principais características são :

- Potencialidades e conveniência das linguagens quer de alto nível quer de baixo nível.
- Pequeno conjunto de palavras reservadas.
- Permitir a criação de novos tipos de dados pelo utilizador.
- Portabilidade. Os programas escritos em linguagem C podem ser transportados entre máquinas de diferentes arquitecturas, com um número muito reduzido de alterações.
- Eficiência, através de uma boa ligação aos recursos da máquina.

Existem algumas particularidades na linguagem C que a tornam especialmente interessante :

- Permite conversões de quase todos os tipos de dados. (Os tipos caracter e inteiro podem ser misturados na maioria das expressões).
- Não possui nenhuma verificação de erros em tempo de processamento (fim de vector ou compatibilidade do tipo de argumento), cabe inteiramente ao programador saber o que o programa está a fazer.

1.3 Estrutura de um Programa

Um programa em linguagem C é constituído por uma ou mais funções e variáveis.

Uma função contém instruções que especificam as operações de computação a serem executadas, enquanto as variáveis armazenam os valores.

A função permite encapsular (esconder certa complexidade) alguma computação, podendo depois ser utilizada sabendo-se apenas o que faz e sem preocupações quanto à forma como o faz.

As funções em C assemelham-se aos procedimentos e funções do Pascal. A execução de um programa começa tipicamente numa função de nome main, que deverá existir em qualquer parte do programa.

O aspecto geral de uma função é o seguinte :

    tipo_retornado nome_função(declarações de parâmetros){
       declarações locais;
       instruções;
    }

Assim, uma função é composta por um cabeçalho seguido do respectivo corpo.

O cabeçalho é constituído pelo nome da função a que se segue entre parêntesis, uma lista de declarações de parâmetros. Caso estes não existam, os parêntesis surgem vazios.

Quanto ao corpo da função, este é delimitado por chavetas

    { }

e contêm, declarações de variáveis, ou mesmo de outras funções, a serem utilizadas, seguidas de instruções.

Sempre que se pretenderem incluir comentários num programa, pode-se fazê-lo colocando esses comentários entre /* e */.

Uma função pode retornar um valor para a função que a chama, o que é conseguido com a instrução return, sendo o seu aspecto:

    return expressão;

em que,

    expressão

pode ser qualquer expressão . Por exemplo :

    return 5;       /*Retorna a constante inteira 5 */
    return val*val; /*Retorna o resultado do produto entre as variáveis

As funções são chamadas (invocadas para execução) dando-se o nome da função, juntamente com os argumentos, entre parêntises:

    nome_função(prim_arg, seg_arg, ...);

Os valores dos argumentos na chamada da função, são atribuidos aos parâmetros da função pela ordem em que se encontram.

Exemplo 1 : Programa que imprime no ecrâ : "O meu primeiro programa !"

    #include <stdio.h>  /* Inclui dados sobre funções de entrada e saída
                                 standards (standard input output), como a printf */

    main(){  /* Definição da função main */
       printf (O meu primeiro programa !);   /*Chama a função printf */
    }

O resultado da execução do programa será a impressão no ecrâ do texto contido entre aspas na função printf. A instrução #include <stdio.h> tem por finalidade incluir no programa informação sobre funções de entrada e saída de dados, tal como a função printf que será explicada no Capítulo 4 .

Exemplo 2 : O programa seguinte chama uma função mul(), que multiplica dois números inteiros e retorna o resultado.

O valor retornado passa a ser o argumento da função printf() que o imprime.

Os dois parâmetros a e b da função mul(), recebem respectivamente os dois argumentos 5 e 4, com que a função é chamada.

    #include <stdio.h>

    main(){
       printf( A multiplicação de 5 com 4 é igual a %d,mul(5,4));
    }

    int mul(int a,int b){
       return (a*b);
    }

A impressão no ecrâ será : A multiplicação de 5 com 4 é igual a 20, o que significa que %d vai ser substituido pelo valor retornado pela função mul().

Notar ainda que as variáveis a e b, definidas na função mul() só são reconhecidas no interior desta.

Uma variável é o nome que é dado a uma zona de memória, cujo tamanho varia conforme o tipo dessa variável. No exemplo anterior, a e b são variáveis capazes de armazenar inteiros. Este assunto será abordado detalhadamente na secção 2.3 .

A produção e execução de programas, depende do sistema operativo em que se esteja a trabalhar, bem como do compilador utilizado.

A função main(), como função que é, também pode retornar um valor. Neste caso, o valor será retornado ao ambiente exterior, responsável pela execução do programa.

Habitualmente o valor 0 significa um final sem erro, e um valor diferente de 0 um final com erro. No entanto, e para simplificação não será utilizada a instrução return 0 nas várias funções main() aqui apresentadas.

1.4 Instruções

Uma expressão seguida de ; (ponto e virgula) é uma instrução.

Expressões são formadas por constantes, variáveis e operadores combinados de uma forma válida.

As instruções dividem-se em simples e compostas.

Simples quando se trata de apenas uma instrução, e compostas quando se trata de um conjunto (bloco) de instruções.

Estes conceitos, de instrução simples e composta, farão mais sentido quando, no capítulo 3, forem discutidas as instruções de controle de sequência.

Instrução simples : expressão;

Exemplo :

    printf(O meu primeiro programa!);

Instruções Compostas : Instruções simples dentro de chavetas.

    {
       instrução;
       instrução;
       instrução;
       ...;
    }

Exemplo:

    {
       X=10;
       Y=X+X;
    }

O sinal '=' significa atribuição, isto é, para o exemplo acima apresentado, à variável X foi-lhe atribuido o valor 10.

| Up | Forward

To front page | Pages by Nuno Nunes. |