Copyright ©2001 - Adriano Joaquim de Oliveira Cruz
Data da última atualização: 16/08/2001

Expressões

-------------------------------------------

  1. Introdução
  2. Conceito de Memória
  3. Identificadores de Variáveis
  4. Tipos de Variaeis
  5. Exercícios

-------------------------------------------

Introdução

-------------------------------------------

Variáveis

São os nomes que utilizamos para referenciar as posições de memória. Como já foi mostrado no capítulo de Introdução, a memória de um computador pode ser entendida como um conjunto ordenado e numerado de palavras. Na maioria dos PCs que usamos diariamente a memória pode ser considerada como um conjunto ordenado e numerado de bytes (8 bits). As linguagens de programação de alto nível atribuem nomes as posições de memória que armazenam os dados a serem processados. Deste modo os programadores tem mais facilidade para construir seus algoritmos.

Na linguagem a-- um nome de variável é contruído da seguinte maneira: uma letra seguida por um conjunto de letras ou algarismos. Por exemplo, os nomes seguintes são nomes de variáveis válidos:

Como nomes inválidos podemos dar os seguintes exemplos:

Durante a apresentação da linguagem iremos fazer referências a listas de variáveis. Uma lista de variáveis é um conjunto de nomes de variáveis separados por vírgulas, por exemplo: Ex. nota1, nota2, media

Na linguagem a-- uma variável não precisa ser definida antes de ser usada em um algoritmo. A variável irá assumir, dinamicamente, o tipo do dado que estiver sendo atribuído a esta variável. Por exemplo se armazenarmos o valor 5 em uma variável ela passará a ser do tipo inteiro. Caso resolvamos trocar o valor para 3.14 a variável passará a ser real.

-------------------------------------------

Expressões

Uma vez que já temos os dados e as variáveis podemos passar ao próximo estágio que seria a criação de expressões. No entanto, para que a expressão possa estar completa precisamos de operadores que possam ser aplicados a estes dados. Os operadores da linguagem a-- são basicamente os mesmos encontrados em outras linguagens de programação.

Na linguagem a-- existem basicamente três tipos de expressões:

Cada um deste tipos tem os seus operadores próprios.


Expressões Aritméticas

Expressões aritméticas são aquelas que apresentam como resultado um valor numérico que pode ser um número inteiro ou real, dependendo dos operandos e operadores. Os operadores aritméticos disponíveis em a-- estão mostrados na Tabela a seguir.
Operador
Descrição
Prioridade
+
Soma
3
-
Subtração
3
*
Multiplicação
2
/
Divisão
2
mod
Módulo (Resto da divisão inteira)
2
+
Operador unário (sinal de mais)
1
-
Operador unário (sinal de menos)
1

A prioridade indica a ordem em que cada operação deverá ser executada. Quanto menor o número maior a prioridade da operação. Observe que o operador de multiplicação é o caracter asterisco, um símbolo que é empregado na maioria das linguagens para esta operação.

Expressões aritméticas podem manipular operandos de dois tipos: reais e inteiros. Se todos os operandos de uma expressão são do tipo inteiro então a expressão fornece como resultado um número inteiro. Caso pelo menos um dos operandos seja real o resultado será real. Isto pode parecer estranho a princípio, mas este procedimente reflete a forma como as operações são executadas pelos processadores. Por exemplo o resultado da operação 1/5 é 0, porque os dois operadores são inteiros. Caso a expressão tivesse sido escrita como 1.0/5 então o resultado 0.2 seria o correto. A seguir mostramos exemplos de algumas expressões aritméticas:

Observar que as expressões somente podem ser escritas de forma linear, isto é o sinal de divisão é uma barra inclinada. Portanto frações somente podem ser escritas conforme o exemplo acima (a/b). Outro ponto importante é a ordem de avaliação das expressões, as prioridades mostradas na Tabela dos operadores não é suficiente para resolver todas as situações e precisamos apresentar algumas regras adicionais:

  1. Deve-se primeiro observar a prioridade dos operadores conforme a Tabela dos operadores, ou seja operadores com maior prioridade (números menores) são avaliados primeiro. Caso haja empate na ordem de prioridade resolver a expressão da esquerda para a direita.
  2. Parênteses servem para mudar a ordem de prioridade de execução das operações. Quando houver parênteses aninhados (parênteses dentro de parênteses) as expressões dentro dos mais internos são avaliadas primeiro.

Vamos considerar alguns exemplos para mostrar como estas regras são aplicadas. Considere as seguintes variáveis:

Vamos então analisar expressões com estas variáveis e seus resultados.

  1. A*B-C
  2. A*(B-C)
  3. B+A/C+5
  4. (B+A)/(C+5)

A primeira expressão tem como resultado o valor 7, como era de se esperar. Na segunda expressão a ordem de avaliação é alterada pelo parênteses e primeiro é feita a subtração e o resultado passa ser 6. A primeira operação na terceira expressão é a divisão que tem maior prioridade. Neste caso o resultado final é 11. Na última expressão as somas são realizadas primeiro e por último a divisão, ficando o resultado igual a 1.


Expressões Lógicas

Expressões lógicas são aquelas cujo resultado pode somente assumir os valores verdadeiro ou falso. Os operadores lógicos e sua ordem de precedência são mostrados na Tabela a seguir.

Operador
Descrição
Prioridade
ou
Ou lógico
3
e
E lógico
2
não
Não lógico
1

Estes operadores e seus dados também possuem uma espécie de tabuada que mostra os resultados de operações básicas. A Tabela a seguir mostra os resultados da aplicação destes operadores à duas variáveis lógicas.
A B A ou B A e B não A
falso falso falso falso verdade
falso verdade verdade falso verdade
verdade falso verdade falso falso
verdade verdade verdade verdade falso

Há ainda um outro tipo de operadores que podem aparecer em expressões lógicas que são os operadores relacionais. Estes operadores estão mostrados na Tabela a seguir.
Operador
Descrição
>
maior que
<
menor que
>=
maior ou igual a
<=
menor ou igual a
==
igual a
!=
diferente de

Alguns exmplos de expressões lógicas são:

-------------------------------------------

Comandos

Agora iremos apresentar uma série de definições informais dos comandos da linguagem a--.











---------

Exemplos de Algoritmos

  1. Algoritmo de Euclides
    Dados dois números positivos m e n encontre seu maior divisor comum, isto é o maior inteiro positivo que divide tanto m como n. Assuma que m é sempre maior que n, e n diferente de zero.

    • principal () início
      • ler m, n;
      • r = m mod n; // resto da divisão de m por n
      • enquanto r != 0 faça
        • m = n;
        • n = r;
        • r = m mod n;
      • fim do enquanto
      • imprimir n;
    • fim de principal

    Este algoritmo escrito em C pode ser visto no arquivo: au1ex1.c


  2. Multiplicação de dois números inteiros positivos

    • principal () início// achar quanto vale m*n
      • ler m, n;
      • r = 0;
      • enquanto n != 0 faça
        • r = r + m;
        • n = n-1;
      • fim do enquanto
      • imprimr r;
    • fim de principal

    Este algoritmo escrito em C pode ser visto no arquivo: au1ex2.c


  3. Resolução de uma equação do segundo grau.
    Neste algoritmo vamos assumir que o coeficiente a da equação é sempre diferente de 0.

    • principal () início
      • ler a, b, c
      • delta = b*b-4*a*c
      • se delta < 0
        • então
          • imprimir ¨Não há raizes reais.¨
        • senão início
          • x1 = (-b + sqrt(delta))/(2*a)
          • x2 = (-b + sqrt(delta))/(2*a)
          • imprimir x1, x2
      • fim de se
    • fim

    Este algoritmo escrito em C pode ser visto no arquivo: au1ex3.c


-------------------------------------------

Exercícios

Para resolver estes exercícios encorajamos fortemente os alunos a procurarem na biblioteca as referências bibliográficas dadas e outros livros sobre o assunto.

  1. Defina os termos Unidade de Controle e Unidade Aritmética.
  2. Discuta as diferenças entre um microprocessador e o microcomputador.
  3. Escreva um programa que apresente a mensagem "Alo mundo" ao usuário.
    Solução: Alo Mundo
  4. Qual o número exato de bytes em 64Kbytes?
  5. Defina brevemente Sistema Operacional.
  6. Qual a primeira função a ser executada em um programa C?
-------------------------------------------

Índice do Capítulo