Bases de Programação em C – Parte I

Este artigo é diferente dos outros presentes neste blog. Trata-se de um tutorial sobre C (com algumas coisas de C++) da minha autoria. Este tutorial estará dividido em 3 partes. Nesta primeira irei apenas abordar questões gerais sobre programação – cultura geral. Na segunda parte irei dar noções básicas para poder começar a programar. Por fim, na terceira parte irei “ensinar” a programar a um nível bastante básico, mas que poderá servir como ponto de partida para um leitor que deseje vir a dominar a programação, em particular esta linguagem (embora as diferenças para outras linguagens sejam basicamente de sintaxe, o que importa é saber pensar como a “máquina”, de modo a desenvolver-se correctamente um algoritmo que permita à “máquina” desempenhar a tarefa que desejamos).

Para já uma pequena introdução:

O que é a programação?

A programação é a arte da criação (ou alteração) de um programa de computador, um conjunto concreto de instruções para um computador desempenhar. Computador, neste contexto, significa qualquer coisa que tenha capacidade de processamento. O programa é escrito numa linguagem de programação, embora seja possível, com alguma dificuldade, escrevê-lo directamente em linguagem de máquina. Diferentes partes de um programa podem ser escritas em diferentes linguagens.

Diferentes linguagens de programação funcionam de diferentes modos. Por esse motivo, os programadores podem criar programas muito diferentes para diferentes linguagens; muito embora, teoricamente, a maioria das linguagens possa ser usada para criar qualquer programa. Para mais informações sobre estes métodos, veja Linguagem de programação.

Software é um nome colectivo para programas de computadores e dados.

Há várias décadas que se debate ferozmente sobre se a programação é mais semelhante a uma arte (Donald Knuth), a uma ciência, à matemática (Edsger Dijkstra), à engenharia (David Parnas), ou se é um campo completamente novo.

O que é um algoritmo?

Um algoritmo é, num certo sentido, um programa abstracto – dizendo de outra forma, um programa é um algoritmo concretizado. No entanto, os programas são, à excepção dos menores, visualizados mais facilmente como uma colecção de algoritmos menores combinados de um modo único – da mesma forma que uma casa é construída a partir de componentes.

Dessa forma, um algoritmo é uma descrição de como um computador pode ser levado a executar uma operação simples e específica, como, por exemplo, uma ordenação. Um programa, por outro lado, é uma entidade que na verdade implementa uma ou mais operações de forma que seja útil para as pessoas.

História

C é uma linguagem de programação estruturada e padronizada criada na década de 1970 por Dennis Ritchie e Ken Thompson para ser usada no sistema operacional UNIX. Desde então espalhou-se por muitos outros sistemas operativos, e tornou-se uma das linguagens de programação mais usadas. C tem como ponto-forte a sua eficiência e é a linguagem de programação de preferência para o desenvolvimento de software de sistemas, apesar de também ser usada para desenvolver aplicações. É também muito usada no ensino de ciências da computação, mesmo não tendo sido projectada para novatos.

Em que consiste?

C é uma linguagem de programação relativamente minimalista que opera bem próximo do hardware, e é mais semelhante à linguagem assembly do que as restantes linguagens. Certamente, C é por vezes referida como uma “assembly portátil”. O código de C pode ser compilado para ser rodado em quase todos os computadores/sistemas operativos. C é tipicamente chamada de uma linguagem de baixo nível ou de nível médio, indicando assim o quanto perto ela opera com o hardware. Essa propriedade não foi acidental – a Linguagem C foi criada com um objectivo em mente: facilitar a criação de programas extensos com menos erros recorrendo ao paradigma da programação algorítmica ou procedimental, mas sem nunca sobrecarregar o autor do compilador de C, cujo trabalho complica-se ao ter de realizar as características complexas da linguagem.

Vantagens

Para este fim, a linguagem C possui as seguintes características:

  • Uma linguagem nuclear extremamente simples, com funcionalidades não-essenciais, tais como funções matemáticas ou manuseamento de ficheiros (arquivos), fornecida por um conjunto de bibliotecas de rotinas padronizada;
  • A focalização no paradigma de programação procedimental;
  • Um sistema de tipos simples que evita várias operações que não fazem sentido;
  • Uso de uma linguagem de pré-processamento, o pré-processador de C, para tarefas tais como a definição de macros e a inclusão de múltiplos ficheiros de código fonte;
  • Um acesso de baixo-nível à memória do computador, através do uso de ponteiros;
  • Parâmetros que são sempre passados por valor para as funções e nunca por referência (É possível simular a passagem por referência com o uso de ponteiros);
  • Definição do alcance lexical de variáveis;
  • Estruturas de variáveis, (structs), que permitem que dados relacionados sejam combinados e manipulados como um todo.

Desvantagens

Algumas características úteis que faltam à linguagem C mas que são encontradas em outras linguagens incluem:

  • Segurança de tipo;
  • Colecta automática de lixo;
  • Classes ou objectos com comportamento (ver programação orientada por objectos);
  • Um sistema avançado de sistema de tipos;
  • Funções aninhadas;
  • Programação genérica;
  • Sobrecarga de operadores;
  • Meta-programação;
  • Apoio nativo de multithreading e networking.

Apesar da lista de características úteis que C não possui 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 correr de uma forma mais eficiente que muitas outras linguagens. Tipicamente, só código de assembly “afinado à mão” é que corre mais rapidamente, pois possui um controle completo da máquina, mas avanços na área de compiladores juntamente com uma nova complexidade nos processadores modernos permitiram que a diferença tenha sido rapidamente eliminada. Uma consequência da aceitação geral da linguagem C é que frequentemente os compiladores, bibliotecas e até intérpretes de outras linguagens de nível maior sejam eles próprios implementados em C.

Adaptado da wikipedia.

Para que serve este tutorial e a quem é dirigido?

Serve para ficar com uma ideia muito básica de como programar na linguagem C, ficando com noções suficientes para poder criar programas também eles básicos nesta linguagem.

Obviamente que quem já sabe programar em C não vai aprender aqui nada. Eventualmente quem sabe programar noutras linguagens, poderá comparar as diferenças de sintaxe entre esta linguagem e as suas conhecidas. No entanto, este tutorial dirige-se mais a quem nunca teve programação, mas tem curiosidade e ânsia de aprender alguma coisa nesta linguagem.

Nota: Se não compreenderam algumas coisas nesta introdução, não se preocupem – é natural, já que alguma da “linguagem” usada é mais dirigida a informáticos. De qualquer forma, esse conhecimento é desnecessário para compreender as próximas partes deste tutorial (que só irá tomar realmente a “forma” de tutorial nas próximas duas partes).

Marinho Lopes