Passar para o conteúdo principal
x
algorimia

LINGUAGEM DE PROGRAMAÇÃO = SÍMBOLOS + REGRAS DE SINTAXE

Uma linguagem de programação é uma notação formal para descrição de algoritmos que serão executados pelo computador. Como todas as notações formais, uma linguagem de programação tem dois componentes: Sintaxe e Semântica. A sintaxe consiste em um conjunto de regras formais, que especificam a composição de programas a partir de letras, dígitos, e outros símbolos.

Por exemplo, regras de sintaxe podem especificar que cada parênteses aberto em uma expressão aritmética deve corresponder a um parênteses fechado, e que dois comandos quaisquer devem ser separados por um ponto-e-vírgula. As regras de semântica especificam o “significado” de qualquer programa, sintaticamente válido, escrito na linguagem.

 

Tipos de Linguagens de Programação

Existem diversas linguagens de programação, cada uma com suas características específicas e com níveis de complexidade e objetivos diferentes, no fundo são dividas em 3 grandes grupos, linguagem máquina, de baixo e de alto nível.

 

LINGUAGEM

CARACTERÍSTICAS

Linguagem de Máquina

Unicamente compreendida pelo computador.

Linguagens de Baixo Nível

Utiliza mnemónicas para representar instruções. Por Ex. Assembly

Linguagens de Alto Nível

Utiliza instruções próximas da linguagem humana de forma a facilitar o raciocínio.

  • Uso Geral
    • Java, C, C# (Sharp), Visual Basic, PHC, etc
  • Inteligencia Artificial
    • Prolog, Lisp, etc

 

Processo de Criação e Execução de um Programa

Embora seja teoricamente possível a construção de computadores especiais, capazes de executar programas escritos em uma linguagem de programação qualquer, os computadores, existentes hoje em dia são capazes de executar somente programas em linguagem de baixo nível, a Linguagem de Máquina.

Linguagens de Máquina são projetadas levando-se em conta os seguintes aspectos :

  • Rapidez de execução de programas;
  • Custo de sua implementação;
  • Flexibilidade com que permite a construção de programas de nível mais alto.

Por outro lado, linguagens de programação de alto nível são projetadas em função de :

  • Facilidade de construção de programas;
  • Confiabilidade dos programas.

 

O PROBLEMA É:  Como a linguagem de nível mais alto pode ser implementada em um computador, cuja linguagem é bastante diferente e de nível mais baixo ?

 

SOLUÇÃO:  Através da tradução de programas escritos em linguagens de alto nível para a linguagem de baixo nível do computador.

 

 

 

Para isso existem três tipos de programas tradutores: Montador, Interpretadores e Compiladores.

Vejamos o que cada um deles representa.

 

MONTADOR

Efetua a tradução de linguagem de montagem (Assembly) para a linguagem de máquina, da seguinte forma:

  • Obtém a próxima instrução do Assembly;
  • Traduz para as instruções correspondentes em linguagem de máquina;
  • Executa as instruções em linguagem de máquina; e
  • Repete o passo 1 até o fim do programa.

 

INTERPRETADOR

Efetua a tradução a de uma linguagem de alto nível para linguagem de máquina da seguinte forma:

  • Obtém próxima instrução do código-fonte em linguagem de alto nível;
  • Traduz para as instruções correspondentes em linguagem de máquina;
  • Executa as instruções em linguagem de máquina; e
  • Repete o passo 1 até o fim do programa

 

COMPILADOR

Efetua a tradução de todo o código-fonte em linguagem de alto nível para as instruções correspondentes em linguagem de máquina, gerando o código-objeto do programa. Em seguida é necessário o uso de um outro programa (Link-Editor) que é responsável pela junção de diversos códigos-objeto em um único programa executável.

Algoritmia_2.jpg

Critérios de Qualidade de um Programa

Vejamos alguns critérios para escrevermos um programa com qualidade:

 

Integridade: refere-se à precisão das informações manipuladas pelo programa, ou seja, os resultados gerados pelo processamento do programa devem estar corretos, caso contrário o programa simplesmente não tem sentido;

 

Clareza: refere-se à facilidade de leitura do programa. Se um programa for escrito com clareza, deverá ser possível a outro programador seguir a lógica do programa sem muito esforço, assim como o próprio autor do programa entendê-lo após ter estado um longo período afastado dele. O Pascal favorece a escrita de programas com clareza e legibilidade;

 

 

Simplicidade: a clareza e precisão de um programa são normalmente melhoradas tornando seu entendimento o mais simples possível, consistente com os objetivos do programa. Muitas vezes torna-se necessário sacrificar alguma eficiência de processamento, de forma a manter a estrutura do programa mais simples;

 

Eficiência: refere-se à velocidade de processamento e a correta utilização da memória. Um programa deve ter performance SUFICIENTE para atender às necessidade do problema e do usuário, bem como deve utilizar os recursos de memória de forma moderada, dentro das limitações do problema;

 

Modularidade: consiste no particionamento do programa em módulos menores bem identificáveis e com funções específicas, de forma que o conjunto desses módulos e a interação entre eles permite a resolução do problema de forma mais simples e clara; e

 

Generalidade: é interessante que um programa seja tão genérico quanto possível de forma a permitir a reutilização de seus componentes em outros projetos.

 

Exemplo

OMELETA DE QUEIJO FRESCO

Ingredientes:

 

  • 170 gr de queijo fresco
  • 6 ovos grandes
  • 30 gr de manteiga ou margarina
  • Sal q.b.

 

Modo de Preparação:

Ponha o queijo fresco numa tigela e esmague-o com uma colher de pau, até formar um puré espesso e cremoso. Bata os ovos e misture-os com o queijo, adicionando um pouco de água fria. Tempere a gosto. Derreta um pouco de gordura numa frigideira de base larga e adicione a mistura de ovos e queijo. Cozinhe em lume brando até que a omeleta fique pronta mas não demasiado cozida.

Estabelecendo um paralelo entre esta receita culinária e um programa, os ingredientes são as estruturas de dados e o modo de preparação é o algoritmo. Naturalmente que uma receita culinária usa a linguagem natural e como tal é muito difícil a sua interpretação por parte de um computador.

De acordo com o paradigma da programação estruturada qualquer programa pode ser descrito utilizando exclusivamente as três estruturas básicas de controlo:

  • Instruções de Sequência - as instruções de sequência são instruções atómicas (simples) permitem a leitura/escrita de dados, bem como o cálculo e atribuição de valores;
  • Instruções de Decisão - as instruções de decisão, ou selecção, permitem a selecção em alternância de um ou outro conjunto de acções após a avaliação lógica de uma condição;
  • Instruções de Repetição - as instruções de repetição, ou ciclos, permitem a exe- cução, de forma repetitiva, de um conjunto de instruções. Esta execução de- pende do valor lógico de uma condição que é testada em cada iteração para decidir se a execução do ciclo continua ou termina.

 

Na descrição de algoritmos são utilizados diferentes formalismos conforme o objectivo ou audiência.

Entre os mais comuns encontram-se o pseudo-código e fluxogramas.

  • Pseudo-código - consiste na descrição do algoritmo numa linguagem parecida com a linguagem natural (português, inglês ou outra) de forma estruturada. O objectivo deste formalismo é centrar a atenção do programador na lógica ou fluxo do algoritmo, abstraindo-se das questões relacionadas com a sintaxe específica de uma determinada linguagem de programação;
  • Fluxograma - consiste na descrição de um algoritmo de forma gráfica. Este formalismo inclui um conjunto de símbolos gráficos que representação os diferen- tes tipos de instruções anteriormente descritas: sequência, decisão e repetição.

Na escrita dos programas em pseudo-código serão considerados as seguintes opções:

  • Os algoritmos são delimitados pelas etiquetas início e fim;
  • As etiquetas Entrada: e Saída: são utilizadas na explicitação das entradas e saídas de dados, respectivamente, mais relevantes para o funcionamento do algoritmo;
  • Os comentários são precedidos do caracter ’#’ e são meramente documentais, como tal, não são executados;
  • As acções são descritas através de verbos no infinitivo;
  • Foram utilizadas diferentes formatações para os conceitos a seguir explicitados, com o objectivo de tornar a leitura dos algoritmos mais simples: variável; palavra chave; # comentário;
  • Operadores aritméticos, lógicos e relacionais.
  • As instruções de decisão, ou selecção, permitem a selecção em alternância de um ou outro conjunto de acções após a avaliação lógica de uma condição. (Se, Senão Se, Senão, Caso, etc.) e permite bifurcar a execução de um algoritmo em dois fluxos distintos.

 

Operadores

Existem 3 tipos distintos de operadores, os aritméticos que já utilizamos, os  lógicos e os relacionais.

Operadores Aritméticos

                Aritméticos

  • +                    Adição
  • -     Subtracção
  • /    Divisão inteira
  • *    Multiplicação
  • %                   Resto da divisão inteira
  • ^                    Potenciação      

 

Lógicos

  • E    Disjunção
  • OU   Conjunção
  • XOU  Conjunção Exclusiva
  • NAO  Negação

 

Relacionais

  • =    Igual
  • =/=  Diferente
  • >    Maior
  • >=   Maior ou igual
  • <    Menor
  • <=   Menor ou igual

 

Instruções de Decisão

As instruções de decisão permitem comparar se por exemplo um valor é maior que outro, se mediante o caracter introduzido, executamos determinada função, etc.

 

Escolhe [expressão_0]

               Caso [Expressão_1o]:

                                [instruções]

               Caso [Expressão_no]:

                               [instruções]   

               Defeito:

                               [instruções]   

FimEscolhe

 

Escolhe [expressão]

    Caso [Expressão_1]:

 [instruções]

    Caso [Expressão_2]:

 [instruções]

    Defeito:

  [instruções]   

FimEscolhe

Algoritmia_3.jpg

 

 

inicio

                caracter sexo

                escrever "Qual o seu sexo :"

                ler sexo

                escrever "Olá "

                escolhe sexo

                               caso "m" :

                                               escrever "Homem"

                               caso "f" :

                                               escrever "Mulher"

                               defeito :

                                               escrever "Sexo indefinido"

                               fimescolhe

    escrever ", bem vindo!"

fim

 

Qual o seu sexo ?: m

Olá Homem, bem vindo l

 

Instruções de Repetição

As instruções de repetição, permitem executar ciculos de teste e pedidos de dados até estar satisfeita uma determinada condição.

 

Enquanto

inicio

    inteiro contador

    contador <- 0

    enquanto contador < 10 faz

        escrever contador , "\t"

        contador <- contador + 1

    fimenquanto

fim

Algoritmia_4.jpg

 

 

 

Faz

 

 

inicio

    inteiro mes

    faz

        escrever "introduza um mes :"

        ler mes

    enquanto mes < 0 ou mes > 13

    escrever "\nmes introduzido :" , mes

fim

Algoritmia_5.jpg

 

 

 

Para

inicio

    inteiro contador

    para contador de 0 ate 9 passo 1

        escrever contador , "\t"

    proximo

fim

Algoritmia_6.jpg

 

 

 

Repete

inicio

    inteiro mes

    repete

        escrever "introduza um mes :"

        ler mes

    ate mes > 0 e mes < 13

    escrever "\nmes introduzido :" , mes

fim

Algoritmia_7.jpg

 

 

Veja os outros capítulos:

Algoritmia - Técnicas e Linguagens de  Programação - I

Algoritmia - Técnicas e Linguagens de  Programação - III

Algoritmia - Técnicas e Linguagens de  Programação - IV

 

Espero que a segunda parte deste tutorial lhe tenha sido útil!

Até à próxima!

 

Deixem ficar os vossos comentários e sugestões!


Detectou algum erro ou gostaria de adicionar alguma sugestão a esse artigo? Colabore, clique aqui e ajude a melhorar o conteúdo.