informatica

Linguagem informática.

Chama-se “linguagem informática” a uma linguagem destinada a descrever o conjunto das acções consecutivas que um computador deve executar. Uma linguagem informática é assim uma maneira prática para nós (humanos) darmos instruções a um computador.

Ao contrário, o termo “linguagem natural” representa as possibilidades de expressão partilhadas por um grupo de indivíduos (por exemplo o inglês ou o português).

As linguagens que servem para os computadores comunicarem entre eles não têm nada a ver com linguagens informáticas, fala-se neste caso de protocolos de comunicação, são duas noções totalmente diferentes. Uma linguagem informática é rigorosa :

A CADA instrução corresponde UMA acção do processador.

 

A linguagem utilizada pelo processador chama-se linguagem máquina. Tratam-se dos dados tal como chegam ao processador, constituídos por uma sequência de 0 e de 1 (dados binários).

A linguagem máquina não é assim compreensível para o ser humano, é por isso que foram criadas linguagens intermédias, compreensíveis pelo homem. O código escrito neste tipo de linguagem é transformado em linguagem máquina para ser explorável pelo processador.

O compilador / assembler é a primeira linguagem informática a ser utilizada. Este é muito próximo da linguagem máquina mas continua a ser compreensível para os programadores. Contudo, esta linguagem é tão parecida com a linguagem máquina que depende estreitamente do tipo de processador utilizado (cada tipo de processador pode ter a sua própria linguagem máquina). Assim, um programa desenvolvido para uma máquina não poderá ser aplicado noutro tipo de máquina. O termo “mobilidade” designa a aptidão de um programa informático tem em ser utilizado sobre máquinas de tipos diferentes. Para poder utilizar um programa informático escrito em compilador noutro tipo de máquina, poderá às vezes ser necessário reescrever todo o programa!


Uma linguagem informática tem por conseguinte várias vantagens:

  • é mais facilmente compreensível que a linguagem máquina;
  • permite maior mobilidade, quer dizer, mais facilidade de adaptação a máquinas de tipos diferentes;


Linguagens imperativas e funcionais

Distinguem-se habitualmente duas grandes famílias de linguagens de programação, de acordo com a maneira como as instruções são tratadas :

  • as linguagens imperativas;
  • as linguagens funcionais.


Linguagem imperativa

Uma linguagem imperativa organiza o programa sob a forma de uma série de instruções, agrupadas por blocos e compreendendo saltos condicionais que permitem retornar a um bloco de instruções se a condição for realizada. Tratam-se, historicamente, das primeiras linguagens, mesmo se numerosas linguagens modernas utilizam ainda este princípio de funcionamento.

As linguagens imperativas estruturadas sofrem no entanto de uma falta de flexibilidade dado o carácter sequencial das instruções.

Linguagem funcional

Uma linguagem funcional (às vezes chamada linguagem processual) é uma linguagem na qual o programa é construído por funções, devolvendo um novo estado à saída e tomando como entrada a saída de outras funções. Quando a função se chama a si própria, fala-se então de recursividade.

Interpretação e compilação

As linguagens informáticas podem, grosso modo, classificar-se em duas categorias:

  • as linguagens interpretadas
  • as linguagens compiladas.


Linguagem interpretada


Uma linguagem informática é por definição diferente da linguagem máquina. É necessário, por isso, traduzi-la para a tornar compreensível do ponto de vista do processador. Um programa escrito numa linguagem interpretada tem necessidade de um programa auxiliar (o intérprete) para traduzir progressivamente as instruções do programa.

Linguagem compilada

Um programa escrito numa linguagem dita “compilada” vai ser traduzido de uma vez por todas por um programa anexo, chamado compilador, para gerar um novo ficheiro que será autónomo, o que quer dizer que já não terá necessidade de outro programa para se executar; diz-se, de resto, que este ficheiro é executável.


Um programa escrito numa linguagem compilada tem a vantagem de não ter a necessidade, uma vez compilado, de um programa anexo para se executar. Além disso, como a tradução é feita de uma vez por todas, é mais rápida de executar.
Contudo, é menos flexível do que um programa escrito com uma linguagem interpretada, porque a cada modificação do ficheiro fonte (ficheiro compreensível pelo homem: o que vai ser compilado) será necessário recompilar o programa de modo a que as modificações tenham efeito.

Por outro lado, um programa compilado tem a vantagem de garantir a segurança do código fonte. Com efeito, uma linguagem interpretada, directamente compreensível (legível), permite a qualquer um conhecer os segredos de fabrico de um programa e por conseguinte copiar o código ou mesmo alterá-lo. Há, por isso, o risco de incumprimento dos direitos de autor. Por outro lado, certas aplicações protegidas precisam da confidencialidade do código para evitar a pirataria (transacção bancária, pagamento em linha, comunicações protegidas,…).

Linguagens intermédias

Certas linguagens pertencem, em certa medida, às duas categorias (LISP, Java, Python.) porque o programa escrito com estas linguagens pode, em certas condições, sofrer uma fase de compilação intermédia para um ficheiro escrito numa linguagem que não é compreensível (por conseguinte, diferente do ficheiro fonte) e não executável (necessidade de um intérprete). Os applets Java, pequenos programas inseridos às vezes nas páginas Web, são ficheiros que são compilados mas que se podem executar apenas a partir de um navegador Internet (são ficheiros cuja extensão é .class).

Alguns exemplos de linguagens utilizadas correntemente

Eis uma lista não exaustiva de linguagens informáticas existentes :

Linguagem Domínio de aplicação principal Compilada/interpretada
ADA O tempo real Linguagem compilada
BASIC Programação básica com objectivos educativos Linguagem interpretada
C Programação sistema Linguagem compilada
C++ Programação sistema objecto Linguagem compilada
Cobol Gestão Linguagem compilada
Fortran Cálculo Linguagem compilada
Java Programação orientada Internet Linguagem intermédia
MATLAB Cálculo matemático Linguagem interpretada
Mathematica Cálculo matemático Linguagem interpretada
LISP Inteligência artificial Linguagem intermédia
Pascal Ensino Linguagem compilada
PHP Desenvolvimento de sites web dinâmicos Linguagem interpretada
Prolog Inteligência artificial Linguagem interpretada
Perl Tratamento de cadeias de caracteres Linguagem interpretada

 

O que é um programa informático?

Um programa informático é uma sucessão de instruções realizável pelo computador. Contudo, o computador sabe manipular apenas dados binários, isto é, uma sucessão de 0 e de 1. Por isso, é necessário utilizar uma linguagem de programação para escrever de maneira legível, ou seja, com instruções compreensíveis para o ser humano, parecidas com a sua linguagem, as instruções a executar pelo computador.

Assim, estes programas são traduzidos em linguagem máquina (binário) por um compilador.

A maneira de escrever um programa está intimamente ligada à linguagem de programação que se escolheu porque existem imensos. Além disso, o compilador deverá corresponder à linguagem escolhida: para cada linguagem de programação, o seu compilador (exceptuando as linguagens interpretadas…).

Geralmente, o programa é um simples ficheiro texto (escrito com um tratamento de texto ou um editor de texto), que se chama ficheiro fonte.

O ficheiro fonte contém as linhas de programas a que chamamos código fonte. Este ficheiro fonte, uma vez terminado, deve ser compilado. A compilação desenrola-se em duas etapas:

  • o compilador transforma o código fonte em código objecto, e salvaguarda-o num ficheiro objecto, quer dizer que traduz o ficheiro fonte em linguagem máquina (certos compiladores criam também um ficheiro em assembler, uma linguagem próxima da linguagem máquina pois piossui funções muito simples, mas legíveis)
  • o compilador recorre de seguida a um editor de relações (em inglês linker ou binder) que permite integrar no ficheiro final todos os elementos adicionais (funções ou livrarias) aos quais o programa faz referência mas que não estão armazenados no ficheiro fonte.


Seguidamente, cria um ficheiro executável que contém tudo o que precisa para funcionar independentemente, (nos sistemas de exploração Microsoft Windows ou MS-Dos o ficheiro criado possui a extensão .exe)

 

 

A que se assemelha um programa informático?

O andamento de um programa depende do tipo de linguagem utilizada para fazer o programa…

Contudo, mais ou menos todas as linguagens de programação se baseiam no mesmo princípio:
O programa é constituído por uma sequência de instruções que a máquina deve executar. Esta executa as instruções à medida que lê o ficheiro (por conseguinte, de cima para baixo) até encontrar uma instrução (chamada às vezes instrução de ligação) que lhe indica para ir para um lugar preciso do programa. Trata-se de uma espécie de jogo de pista, no qual a máquina deve seguir o fio condutor e executar as instruções que encontra até chega ao fim do programa e este parar.

A noção de variável

Na maior parte das linguagens, trabalha-se geralmente com variáveis, isto é, associa-se um nome a um conteúdo. Podemos ter uma variável “toto” e armazenar aí o número 8.

Tipo de dado

Certas linguagens aceitam que se associe um nome de variável a qualquer tipo de dado (quer dizer, um número inteiro ou um carácter), chamamos a estas linguagens linguagens não caracterizadas.
Com efeito, como poderá ver no capítulo representação dos dados, o tipo de dado condiciona o número de bytes sobre os quais o dado é codificado, quer dizer, a ocupação em memória deste dado bem como o formato no qual é representado.
É a razão pela qual as linguagens evoluídas (C, Java) são linguagens caracterizadas, isto significa que a uma variável é associado não somente um nome mas também um tipo de dado que será necessário precisar quando se declarar a variável, quer dizer que, quando se escrever o nome da variável pela primeira vez, vai ser necessário indicar ao compilador que espécie de dados este vai poder conter (a maneira de declarar a variável dependerá da linguagem).

Sintaxe

As linguagens pedem uma sintaxe rigorosa, por isso não se podem escrever as coisas como queremos.

Assim, certas linguagens são case sensitive (em português “sensíveis à ruptura”), o que significa que um nome que não comporta apenas minúsculas não será considerado como equivalente ao mesmo nome que compreende maiúsculas. Assim, a variável “Toto” será uma variável diferente da variável “toto”.

Os nomes de variáveis admitem geralmente um comprimento máximo (que depende da linguagem) e um jogo de caracteres reduzido, entre os quais se encontram geralmente os caracteres seguintes :


Assim, um espaço (“ “) é realmente um carácter, chamado carácter especial). É assim raro que uma linguagem aceite caracteres especiais num nome de variável !

Palavras reservadas

Na maior parte das linguagens, existe um pequeno grupo de palavras que não se pode atribuir aos nomes variáveis, são as palavras reservadas (em inglês reserved words). Estes serão indicadas em cada capítulo que corresponde a uma linguagem específica.

As constantes

As constantes são dados cujo valor não pode ser alterado. Definem-se geralmente no início do programa. O valor que a constante contém pode ser de qualquer tipo, de acordo com o que a linguagem autoriza.

Os comentários

É bom poder acrescentar num programa linhas de texto que não serão tomadas em conta pelo compilador. Estas linhas de textos são precedidas geralmente (ou enquadradas) por instruções especiais que assinalarão ao compilador para as ignorar.

Os comentários servem para clarificar um programa, dando explicações. Servirão se, por acaso, uma outra pessoa tentar compreender o funcionamento do programa lendo o ficheiro fonte, para a pessoa que o criou, se por acaso reler o ficheiro fonte alguns anos após tê-lo escrito…

 

 

Qual o aspecto de uma instrução?

A instrução é o elemento chave do computador porque é ela que permite especificar ao processador a acção a efectuar. As instruções a efectuar são indicadas no ficheiro fonte e o computador passa de uma instrução à outra seguindo as instruções indicadas de cima para baixo (porque a leitura de um ficheiro faz-se de cima para baixo).
Uma instrução é geralmente composta por dois elementos:

  • o operador : acção a efectuar pelo processador
  • os operandos : um ou vários dados sobre os qual se vai efetcuar a operação


 

operador operando (s)


Os tipos de operadores

Distinguem-se habitualmente dois ou três tipos de operadores :

  • Os operadores unários: são operadores que admitem um só operando
  • Os operadores binários: são operadores que, contrariamente ao que poderíamos pensar, não trabalham em operandos binários, mas admitem dois operandos (binário designa, por isso, o número de operandos manipulados, a adição, frequentemente notada +, é por conseguinte um operador binário)
  • Os operadores ternários: são operadores que admitem três operandos (os operadores condicionais são, por exemplo, operadores ternários)


Os operadores podem também ser repartidos de acordo com várias categorias segundo o tipo de acção que a sua execução desencadeia :

  • os operadores aritméticos
  • os operadores de comparação
  • os operadores lógicos
  • os operadores de bits
  • os operadores de afectação
  • os operadores condicionais
  • os operadores sequenciais


As prioridades dos operadores

Em cada linguagem existem prioridades de avaliação dos operadores, para que o computador saiba em que sentido avaliar os operadores quando vários dentre eles estão presentes numa mesma expressão.

 

 

API


Uma API (Aplicação Programável Interface, ou “interface de programação” ou “interface para o acesso programado às aplicações) é um conjunto de funções que permitem aceder aos serviços de uma aplicação, através de uma linguagem de programação.

Uma API permite fornecer um certo nível de abstracção ao programador, o que auer dizer que ela mascara a complexidade do acesso a um sistema ou a uma aplicação, propondo um jogo de funções standard das quais só os parâmetros e os valores devolvidos são conhecidos. Assim, por analogia com um automóvel, o motorista não tem de conhecer o funcionamento mecânico do motor de um veículo para poder conduzi-lo. Apenas um interface, composto por um volante, pedais (acelerador, embraiagem, travão), manípulos (piscas, faróis, caixa de velocidade) e botões (quatro piscas, faróis de nevoeiro, buzina, etc.) lhe é acessível: trata-se, de certa maneira, do interface proposto ao utilizador.

Graças ao API, um programador não tem, por conseguinte, de se preocupar com a forma como uma aplicação distante funciona, nem com a maneira como as funções foram aplicadas para poder utilizá-las num programa. Uma API pode estar disponível para uma linguagem específica ou estar disponível para várias linguagens de programação.

 

 

Framework

O termo “Aplication Framework” (traduzam “Quadro de aplicação”, “planos de aplicação” ou “base de aplicação”) designa um conjunto estruturado de API, organizado num ambiente de execução. O termo “Aplicação Framework” é utilizado geralmente sob a forma abreviada de “Framework