• Nenhum resultado encontrado

Sintaxe e Semântica

No documento Programação 1 Linguagem C (UFRPE) (páginas 58-62)

forma da linguagem e o significado associado a essa forma. A estes aspectos damos respectivamente o nome de sintaxe e semântica da linguagem. Vamos detalhá-los.

A sintaxe dita as regras de como os comandos de uma linguagem

e cada um dos seus termos deve ser construído corretamente. Ou seja, se o comando está correto ou não. Formalizando, sintaxe é um conjunto de regras formais que especificam a composição dos algoritmos a partir de letras, dígitos e outros símbolos. Por exemplo, o comando de entrada de dados, a sintaxe dele, ou seja, a sua forma correta é: leia (nomeVariavel). Se você escrever ler(nomeVariável)

a sintaxe vai estar incorreta, ou seja, a escrita do comando vai estar errada. A violação da sintaxe de uma instrução impede que ela seja executada. Ou seja, vai causar erro no algoritmo. Por exemplo, os comandos abaixo apresentariam problema de sintaxe:

mediaNotas “Ana Maria” (toda média, geralmente, é

um valor do tipo real e não poderia receber um valor do tipo caractere)

“nota” >= 7 (todo valor entre aspas é do tipo caractere. E um

caractere não poderia ser comparado com um valor do tipo inteiro (como é o caso do sete), uma vez que só se podem comparar valores do mesmo tipo).

A semântica diz respeito ao significado lógico das instruções que serão executadas pelo computador. Ou seja, se os comandos fazem sentido. Porque um comando (ou seqüência deles) pode estar escrito corretamente, mas não fazer nenhum sentido na prática. Formalmente, semântica é o conjunto de regras que especifica o “significado” de qualquer programa ou algoritmo, sintaticamente válido. A checagem da semântica de um algoritmo é mais difícil que a checagem da sintaxe, porque ela depende do conhecimento do problema que está sendo resolvido e do contexto do mesmo. E, também, porque a violação da semântica não impede que o algoritmo seja executado. Todavia, ele processará e mostrará ao usuário um resultado errado.

Em resumo, temos que a sintaxe dita as regras de como as frases de um a linguagem e cada um dos seus termos deve ser construídos corretamente. Já a semântica se preocupa com o significado das frases construídas. Podemos construir frases sintaticamente corretas,

comeu o rato” está, em termos da língua portuguesa, sintaticamente e semanticamente correta. Porque em termos de sintaxe, a frase tem sujeito, verbo e predicado e o verbo está corretamente conjugado. Semanticamente a frase também está correta, porque na vida real um gato pode mesmo comer um rato. Porém, se a frase fosse “O rato comeu o gato”, teríamos um problema. A frase continua sintaticamente correta. Porém a semântica apresenta problemas. Porque, na vida real, geralmente, um rato não come um gato. Agora, vamos dar um exemplo relacionado com programação, fazendo uso de uma estrutura que veremos na subseção 1.2.8, a estrutura SE. Suponha o trecho de código: Se (media >= 7.0) então Escreva (“REPROVADO”) Senão Escreva (“APROVADO”) fimse

Você vai ver na subseção 1.2.8 que, sintaticamente, a estrutura “Se-Então-Senão” está correta, mas o bloco de instruções está semanticamente errado. Na vida real sabemos que o aluno está APROVADO se obtém media maior ou igual a sete. E não reprovado como mostra o algoritmo.

Os erros sintáticos são identificados pelos tradutores (compiladores e interpretadores), enquanto que os erros semânticos não o são. Por isso, os erros semânticos exigem mais atenção para corrigi- los. Agora que já sabemos o que é sintaxe e semântica e já vimos todos os conceitos mais básicos relacionados a algoritmos (variáveis, constantes, tipos de dados, operadores e expressões e comandos de entrada e saída), podemos partir para construir as estruturas de controle de um algoritmo. Existem 3 estruturas básicas de controle nas quais se baseiam os algoritmos:

Seqüencial: conjunto de comandos separados que são

executados em uma seqüência linear de cima para baixo. • Seleção, Condicional ou de Decisão: a partir de um teste

condicional, uma instrução, ou um conjunto de instruções, podem ser executados ou não, dependendo exatamente do resultado do teste efetuado.

Repetição: uma instrução ou o conjunto de instruções que

será executado repetidamente, de acordo com o resultado de um teste condicional ou de uma contagem.

Detalharemos cada uma delas na subseções a seguir.

Estrutura Seqüencial

Na estrutura seqüencial os comandos de um algoritmo são executados numa seqüência pré-estabelecida. Cada comando é executado somente após o término do comando anterior. Os comandos deverão ser executados numa seqüência linear, seguindo-se o texto em que estão escritos, de cima para baixo, se não houver indicação em contrário (vide Figura 24).

Figura 24 - Estrutura Sequencial

Nesta estrutura da Figura 24, o comando-3 somente será executado após o comando-2 e o comando-2 após o comando-1 e assim por diante. Uma estrutura de seqüencial é delimitada pelas palavras- reservadas inicio e fimalgoritmo e contém basicamente comandos

de atribuição, de entrada e de saída. Em termos de fluxogramas, a estrutura seqüencial é caracterizada por um único fluxo de execução (um único caminho orientado) no diagrama. Vamos ver um exemplo de algoritmo seqüencial. Suponha um algoritmo para somar dois números e mostrar o resultado ao usuário.

Algoritmo Sequencial

var num1, num2, soma: inteiro inicio

Escreva(“Informe o segundo número”)

Leia(num2)

soma <- num1 + num2

Escreva(“A soma dos valores é: ”, soma) fimalgoritmo.

O algoritmo proposto respeita as regras de organização e sintaxe da linguagem algorítmica. Porém, qual é a primeira instrução a ser executada? Ele será executado de maneira sequencial, onde, a partir da palavra reservada var, as instruções vão sendo executadas de

cima para baixo e a próxima instrução só é executada após a anterior ser encerrada. É importante observar que sempre será executado primeiro o bloco de declarações (para poder criar as variáveis na memória do computador, como explicado antes) e depois, na seqüência, o bloco de instruções. A execução da palavra reservada

fimalgoritmo encerra a execução do algoritmo.

No documento Programação 1 Linguagem C (UFRPE) (páginas 58-62)