Sintaxe

Introdução

Sintaxe e Semântica

Java Sintaxe Introdução

Tudo na vida possui forma e conteúdo, mas um bom conteúdo com forma ruim é um problema, e uma forma bacana com conteúdo ruim é pior ainda.

Projetar software é lidar com isso toda hora. Modelos, especificações, código, e precisam de uma boa forma (sintaxe) e um bom conteúdo (semântica).

Entender como ter qualidade na sintaxe e na semântica é fundamental.

Quanto à semântica, de um modo geral é o estudo do significado das coisas (do conteúdo das “formas”). Na Engenharia de Software, quando falamos de semântica nos referimos ao significado dos modelos, ao nível de entendimento (clareza, objetividade, detalhamento, coesão, etc.) de algo.

Por exemplo: uma redação bem escrita (sem erros de concordância, gramática, etc.), mas com um texto ruim (sem contexto, sem concordância, com uma estória confusa, sem clareza e fluidez) possui boa “sintaxe”, mas uma “semântica” ruim.

Anatomia e Escopo

Em Ciência da Computação escopo é um contexto delimitante aos quais valores e expressões estão associados. Linguagens de programação têm diversos tipos de escopos. O tipo de escopo vai determinar quais tipos de entidades este pode conter e como estas são afetadas, em outras palavras, a sua semântica.

Normalmente, o escopo é utilizado para definir o grau de ocultação da informação, isto é, a visibilidade e acessibilidade às variáveis em diferentes partes do programa.

Escopos podem:

  • Conter declarações ou definições de identificadores;
  • Conter instruções e/ou expressões, que definem um algoritmo executável ou parte dele;
  • Aninhar ou ser aninhados.
Em resumo, escopo é a acessibilidade de objetos, variáveis e métodos em diferentes partes do código.

A grande maioria das linguagens oferecem uma estrutura bem definida de codificação, seguindo o pseudocódigo conforme abaixo:

class { 

  //escopo global ou de classe
  globalNumber = 10

  methodOne(){
    //escopo de método
    myNumber = 1

    print(globalNumber)  //10
  }

  methodTwo(){
     //escopo de método
    myNumber = 1
    
    //escopo de bloco ou de fluxo
    if(true){

        yourNumber = 2

        myNumber = yourNumber
    }

    print(myNumber) //2
    print(yourNumber) //error - acesso somente dentro do fluxo
  
  }

}

Exemplo

Uma parte fundamental na elaboração de algoritmos simples ou complexos é determinar a localização do código em questão. Sem um domínio sobre escopo de códigos, seu projeto tende a conter falhas estruturais e comprometer a proposta principal da aplicação.

public class Conta {
    //variável da classe conta
    double saldo=10.0;
    
    public void sacar(Double valor) {
        //variável do método
        double novoSaldo = saldo - valor;
    }
    public void imprimirSaldo(){
        //disponível em toda classe
        System.out.println(saldo);
        //somente o método sacar conhece esta variável
        System.out.println(novoSaldo);
    
    }
}
O exemplo ilustrado acima segue as diretrizes recomendadas e aplicadas em qualquer projeto acadêmico ou corporativo. A seguir você terá mais esclarecimentos destas regras e convenções de escrita no tópico Anatomia.