Controle de Execução e Programação Orientada a Objetos

Classificado em Computação

Escrito em em português com um tamanho de 5,93 KB

Resumo

A primeira forma de controle da execução de um programa acontece na avaliação das expressões, baseada nas regras de precedência e associatividade dos operadores. A segunda forma ocorre na execução das instruções, comandada por estruturas de seleção e iteração. A terceira forma acontece no nível de subprogramas, utilizando a pilha do sistema de execução.

Controle de execução em nível de expressões

Para entender a avaliação das expressões, é necessário compreender a ordem de avaliação dos operadores e operandos, regida pelas regras de precedência e associatividade da linguagem.

Avaliação de expressões aritméticas

As expressões aritméticas consistem em operadores, operandos, parênteses e chamadas a funções. A quantidade de operandos de um operador é sua aridade (unária, binária ou ternária). Operadores binários são geralmente infixos, mas podem ser pré-fixos ou pós-fixos (notação polonesa reversa).

Precedência de operadores

O valor de uma expressão depende da ordem de avaliação. Regras de precedência definem quais operações são realizadas primeiro. Por exemplo, a multiplicação tem precedência sobre a adição.

Associatividade de operadores

A associatividade decide qual operador escolher quando possuem o mesmo nível de prioridade. Geralmente, é feita pela esquerda, exceto para exponenciação em algumas linguagens.

Ordem de avaliação dos operandos

Se não houver efeitos colaterais, a ordem de avaliação dos operandos não influencia o resultado. Caso existam, a ordem pode gerar valores distintos.

Conversão de tipos

Existem dois tipos: estreitamento (perda de precisão) e alargamento (inclusão de valores). Podem ser explícitas (pelo usuário) ou implícitas (pelo compilador).

Operações de modo misto

Ocorrem quando operandos de tipos distintos são usados em uma operação binária, exigindo coerção (conversão implícita).

Avaliação curto-circuito

Ocorre quando uma expressão não precisa avaliar todos os seus operandos para chegar a um resultado, comum em expressões booleanas.

Controle de fluxo em nível de instruções

Instruções são executadas sequencialmente, exceto por desvios. Comandos estruturados, com ponto único de entrada e saída, substituem o uso excessivo de rótulos (goto).

Desvios explícitos

Representados pelo comando goto e, em Fortran, pelo IF aritmético.

Comandos de seleção

Incluem o IF (com estruturas como if-elsif-end if) e comandos case ou switch, que permitem escolher entre múltiplas alternativas.

Execução iterativa de instruções

Composta por uma instrução de iteração e um corpo. Pode ser controlada por expressões lógicas (while, do-while, repeat) ou contadores (for).

Controle do fluxo em nível de subprogramas

Subprogramas representam a abstração de processos. Podem ser funções (retornam valor) ou procedimentos (não retornam valor).

Parâmetros dos subprogramas

A comunicação ocorre por acesso a variáveis não locais ou passagem de parâmetros (formais e reais). Podem ser posicionais ou por palavra-chave.

Mecanismos de passagem de parâmetros

  • Passagem por referência: O procedimento acessa o endereço do argumento.
  • Passagem por valor: O parâmetro recebe uma cópia do valor do argumento.
  • Passagem por resultado: O valor final é passado ao argumento no retorno.
  • Passagem por valor-resultado: Combinação das duas anteriores.
  • Passagem por nome: O parâmetro é substituído pelo código do argumento.

Subprogramas sobrecarregados e genéricos

Subprogramas sobrecarregados possuem várias implementações para tipos distintos. Subprogramas genéricos (polimórficos) permitem reutilização em diferentes tipos de dados.

Corrotinas

Tipo especial de subprograma com múltiplos pontos de entrada, mantendo o histórico entre ativações, sem a relação mestre-escravo.

Unidade 4: Abstração e Orientação a Objetos

O conceito de abstração

Abstração simplifica a complexidade ao focar apenas nos atributos importantes. Divide-se em abstração de processos (subprogramas) e abstração de dados.

O conceito de encapsulamento

Agrupamento de subprogramas e dados relacionados em unidades de compilação, resolvendo problemas de administração de grandes sistemas e recompilação.

Tipos de dados abstratos (TDA)

Definição onde a representação e as operações estão contidas em uma única unidade sintática, ocultando a representação dos clientes.

Programação orientada a objetos (POO)

Baseia-se em tipos abstratos de dados, herança e vinculação dinâmica. Classes definem objetos (instâncias).

Herança

Permite que uma subclasse herde dados e funcionalidades de uma classe pai, facilitando a reutilização e a organização hierárquica.

Polimorfismo

Significa "muitas formas". Permite que um mesmo objeto realize ações diferentes ao receber a mesma mensagem, dependendo do contexto durante a execução.

Classes abstratas

Coleções de características comuns que não podem ser instanciadas isoladamente, servindo de base para outras classes.

Casting em POO

Força o sistema a tratar um objeto como sendo de um tipo diferente do original, essencial para o polimorfismo.

Entradas relacionadas: