Você está na página 1de 2

Paradigma Imperativo

LPs criadas para esta arquitetura são chamadas de imperativas ou procedurais.

 variáveis modelam as células de memória


 comandos de atribuição são baseados nas operações de transferência dos dados e
instruções
 Os operandos das expressões são passados da memória para a CPU
 A execução é sequencial de instruções
 Método mais eficiente: iterativa de repetição
 as instruções são armazenadas em células adjacentes da memória -> iteração é rápida.

Algumas vezes as linguagens de programação imperativas são também chamadas de


procedurais.

É o mais antigo de todos os paradigmas de programação

É influenciado pela arquitetura do computador.

É refletido na execução sequencial baseada em comandos e no armazenamento de dados


alterável.

O termo “imperare” em Latim significa “comandar”.

O paradigma imperativo foi predominante nas LP, pois tais linguagens são mais fáceis de
traduzir para uma forma adequada para execução na máquina

3 conceitos que caracterizam:

Variáveis: mantém o estado do programa; armazenam endereços valor de uma memória, que
tem uma localização; pode ser alterado e acessado.

Atribuições: antes e depois da execução do comando de atribuição o valor de uma variável vai
ser alterado, pois induz dependência de ordem de um programa.

Sequência: o resultado do programa depende da ordem que os comandos são escritos e


colocados.

É conhecida por “baseada em comandos” ou “orientados a atribuições”.

Exemplos:

O paradigma imperativo de linguagens de programação pode ser encontrado, por exemplo, nas
linguagens Fortran, Cobol, Basic, Pascal, Modula-2, C e Ada.

Um programa desenvolvido a partir deste modelo, por exemplo nas linguagens C e Modula-2,
consiste em uma sequência de modificações no armazenamento de dados na memória do
computador.

Python/Pearl/C/C++

Expressões e Sentenças de Atribuição

Expressões em uma linguagem de programação são fundamentais visto que é importante


entender a sintaxe e a semântica em uma LP.
Para entender a avaliação de expressões é preciso conhecer a ordem a avaliação de operadores
e operandos. Operadores: regras e precedência da linguagem. Operandos: ordem que os
comandos são escritos e executados.

(Slide 39)

Operadores de expressões aritméticas: unário (um operando A++), binário (dois operandos
A*B) e ternário (três operandos A < B ? 1)

Avaliando uma expressão:

 Regra de precedências: define a ordem de quais operadores de precedência diferentes


serão executados e avaliados primeiro. Algumas expressões podem ser mais fáceis e
intuitivas de se entender (&estrutura->vetor[10]) enquanto outras é mais fácil usar
parênteses (terceiro_bit = (num >> 2) & 1), por isso influenciam na facilidade de escrita
e leitura.
 Regra de Associatividade define a ordem de quais operadores de mesma precedência
serão avaliados e executados. Geralmente avaliado da esquerda pra direita. (Ex: A + B –
C + D).
 Parênteses: expressões dentro de parênteses são avaliadas primeiro antes que o seu
valor possa ser usado como operando.
 Expressões condicionais : operador ternário “?”

Efeitos colaterais: ocorrem quando uma função altera um de seus parâmetros ou uma variável
não local.

Soluções para efeitos colaterais: impedir que a avaliação da expressão afetasse o programa, ou
declarar no inicio a ordem de avaliação dos operandos e exigir que o programa garantam a
ordem.

Sobrecarga de operandos: operador com mais de um propósito. Em java + para concatenação e


em C + para soma e * para referência. Pode haver a perda de capacidade de detectar erros e
podendo ser resolvido pela introdução de símbolos.

Estruturas de Controle no Nível de Sentença

Controle de fluxo: dentro de expressões, unidade de programas e entre sentenças.

Tipos de Sentença:

 Sentença de Controle: estrutura de controle é uma sentença de controle pois a


execução de sentença está sob seu controle.
 Sentença de Seleção: busca meios para escolher dois ou mais caminhos para execução
de um programa. Categoria de duas vias (IF e ELSE/THEN e ELSE) e múltiplas sentenças
(switch case em C).
 Sentenças de Iteração: também conhecida como laço, executa zera, uma ou mais
sentenças. Laços controlados por contador (em C for(cont=0; cont<=10; cont++).
Controle de laço é baseado em uma expressão booleana. A iteração é controlada pelos
elementos de uma estrutura de dados. No início de cada iteração, o iterador é
chamado e a cada chamada um valor é retornado (em uma ordem específica).

Você também pode gostar