Programação Imperativa (Teoria)

Propaganda
1
LINGUAGENS
IMPERATIVAS
Dupla: Ana Carolina e Danniel Araújo
Sumário
2
1- Introdução

Paradigmas de Programação
2- Paradigma Imperativo

Modelo Computacional
•
Arquitetura de Von Neumann
Características Centrais
3- Efeitos Colaterais
4- Exemplos Linguagens Imperativas
5- Linguagens Imperativas não Estruturadas
6- Linguagens Imperativas Estruturada

Introdução
3

Na Ciência da Computação, programação
imperativa é um paradigma de programação que
descreve a computação como ações, enunciados ou
comandos que mudam o estado(variáveis) de um
programa.
Paradigmas de Programação
4
Fornece e determina a visão que o
programador possui sobre a estruturação e
execução do programa.
 Assim como diferentes grupos em engenharia
de software propõem diferentes metodologias,
diferentes linguagens de programação
propõem diferentes paradigmas de
programação.

Paradigmas de Programação
5

•
•

•
Um paradigma específico:
SmallTalk e Java- Orientações a objetos
Haskell- Funcional
Múltiplos paradigmas:
LISP, Perl, Python, C++, Oz
Paradigmas de programação
6
Os paradigmas de programação são muitas
vezes diferenciados pelas técnicas de
programação que proíbem ou permitem. Por
exemplo, a programação estruturada não
permite o uso de goto.
 O relacionamento entre paradigmas de
programação e linguagens de programação
pode ser complexo.

Quanto ao paradigma
7

•
•
Se dividem em dois grandes grupos:
Imperativo
Declarativo
Paradigma Imperativo
8

•
•
•
•
Os paradigmas imperativos são aqueles que
facilitam a computação por meio de mudanças
de estado. Se dividem em:
O paradigma procedural: Fortran e o Basic.
O paradigma de estrutura de blocos: Algol 60,
Pascal e C.
O paradigma de orientação a objetos: C++, Java,
Python e Ruby.
O paradigma da computação distribuída: Ada.
Modelo Computacional
9
A arquitetura dos computadores exerceu um
efeito crucial sobre o projeto das linguagens de
programação.
 Arquitetura de Von Neumann.
 Se caracteriza pela possibilidade
de uma máquina digital
armazenar seus programas no
mesmo espaço de memória que
os dados, podendo assim manipular
tais programas.

Modelo Computacional
10

Arquitetura de Von Neumann
Modelo Computacional
11
O modelo imperativo de programação
baseia-se no modo de funcionamento do
computador.
 O paradigma imperativo é predominante nas
LPs, pois tais linguagens são mais fáceis de
traduzir para uma forma adequada para
execução na máquina.

Modelo Computacional
12



Linguagens imperativas são caracterizadas por três
conceitos: variáveis, atribuições e sequências.
O estado de um programa imperativo é mantido em
variáveis de programa que são associados com
localizações de memória que correspondem a um
endereço e um valor de armazenamento.
O valor da variável pode ser acessado direta e
indiretamente, e pode ser alterado através de um
comando de atribuição. O comando de atribuição
introduz uma dependência de ordem no programa: o
valor de uma variável é diferente antes e depois de um
comando de atribuição.
Modelo Computacional
13


Já as funções de linguagem de programação
imperativas são descritas como algoritmos que
especificam como processar um intervalo de
valores, a partir de um valor de domínio, com uma
série de passos prescritos.
A repetição, ou laço, é usada extensivamente
para processar os valores desejados. Laços são
usados para varrer uma sequência de
localizações de memória tal como vetores, ou
para acumular um valor em uma variável
específica.
Características centrais
14

•
•
•
•
As características centrais das linguagens
imperativas são:
as variáveis, que modelam as células de memória;
comandos de atribuição, que são baseados nas
operações de transferência dos dados e
instruções;
a execução sequencial de instruções;
e a forma iterativa de repetição, que é o método
mais eficiente desta arquitetura.
Características Centrais
15
Ex.: O valor da variável é modificado através de
atribuições. Por exemplo, em Pascal:
X := 5;
O termo à esquerda do operador de atribuição (:=)
é a variável cujo valor está sendo modificado e à
direita está o novo valor. X tem valores diferentes antes
e depois da atribuição. Portanto o significado (efeito)
de um programa depende da ordem em que as
atribuições são escritas e executadas.
Características Centrais
16
Uma última característica importante é que a
repetição (laços) é utilizada extensivamente
para computar valores desejados. Laços são
usados para varrer um vetor ou acumular
valores numa variável.
 Por causa dessas características, as linguagens
imperativas têm sido chamadas de orientadas
a estado ou orientadas à atribuição.

Efeitos Colaterais
17

•
•
•
•
•

•
•
•
Vantagens
Eficiência (embute o modelo de Von Neumann)
Mais fácil de traduzir para a linguagem de máquina
Paradigma dominante e bem estabelecido
Modelagem “Natural” de aplicações do mundo real
Também é muito flexível
Desvantagens
Descrições demasiadamente operacionais
Focaliza o “como” e não o “quê”
Relacionamento indireto com a E/S (indução a
erros/estados)
Exemplos de Linguagens Imperativas
18

•
•
•
•
•
•
•
•
•
•
•
•
Alguns exemplos de linguagens de programação que baseiam-se no
modelo imperativo:
Ada
Algol
Basic
C
PHP
Java
Cobol
Fortran
Pascal
Python
Lua
Mathematica
Fortran
19
Valores e tipos:
interger, real, double precision, complex, logical;
• vetor: dimension<nome>(dim1, dim2, dim3), real,
interger
• constantes lógicas: .true., .false.

Fortran
20

•
Expressões:
operadores: **, *, /, +, -, .ge., .gt., .le., .lt., .eq.,
.ne., .not., .and., .or.
Fortran
21
Comandos e Sequências:
if(<exp>)then
...
end if
if(<exp>)
...
else if ( ) then
...
else
...
end if
•
comandos I/O: open, close, read, write,print, rewind, endfile
•
comandos: goto, continue, pause, stop

Fortran
22

•
Declarações:
declaração var.: <tipo> <id>
Fortran
23

•
•
Procedimentos e Funções:
funções: function <id> (<parâm.>)
proc.: procedure <id> (<parâm.>)
Pascal
24
Valores e tipo:
boolen, interger, char, real;
• estruturados: array, file, record, set

Pascal
25

•
•
•
•
Expressões:
boolean: and, or, not, xor
interger: +, -, *, div, mod, =, >=, <>. abs, sqr,
trunc, round
string: var a: string; a = 'abc';
file: type arq = file of interger;
Pascal
26

Comandos e Sequências:
•
comandos simples: write, writeln, read, clrscr, gotoxy, delay, readkey, upcase
if-then, if-then-else
case <exp> of
case <op1>:
case <op2>:
else
end
for x := <inic> to|downto <fim> do
while <cond> do
begin
...
end;
Pascal
27

•
Declarações:
var.: var <id>: <tipo>;
Pascal
28

•
•
Procedimentos e Funções:
procedure <id> (<parâm.>);
function <id> (<parâm.>): <tipo>;
C
29

•
Valores e tipos:
tipos: char, int, float, double, struct, union
C
30

•
•
Expressões:
operadores: -, +, *, /x, %, ++, >, >=, =, !=, &&,
||, !, &
bit a bit: &, |, ^, ~, >>, <<
C
31
Comandos e sequências:
if(<exp.>) <comando>
else <comandos>
for(inic; cond; incremento)

switch (<exp>){
case <op1>: ...; break;
case <op2>: ...; break;
default: ...;
}
while (<cond.>){ ...;}
do
...
while (<cond.>){ ...;}
return <exp>, goto <tótulo>, break
C
32

•
•
Declarações:
declaração var.: <tipo> <lista variáveis>;
constantes: const <tipo> <id> = <valor>;
C
33

Funções: <tipo> <id> (<parâm.>)
ADA
34

•
•
•
Valores e tipos:
array: <id> array(x..y) of <tipo> interger, natural,
positive, character, boolean;
string: type string is array(x..y) of character;
float
ADA
35

•
Expressões:
operadores: =, /=, >, >=, +, -, abs, **, and, or,
xor, not
ADA
36
Comandos e sequências:
if <cond> then
case <exp> is
elsif <cont> then
<alt. 1>
else
<alt. 2>
end if;
end case;

when <lista escolha> => <com.>
when <others> => <comandos>
while <cond.> loop
<comandos>
end loop;
for <id> in <interv> loop
<comandos>
end loop
ADA
37

•
Declarações:
var.: <id>: <tipo>;
ADA
38

•
•
Procedimentos e Funções:
procedure <id> (parâm.>) is
function <id> (<p.>) return <tipo>
Linguagens Imperativas Não
Estruturadas
39

São linguagens caracterizadas pela utilização da
expressão goto.
Necessária para determinar a repetição e a
seleção de execução de instruções.
 Uso de goto geralmente leva ao que chamam
na literatura de código spaguetti.

Linguagens Imperativas Não
Estruturadas
40
Exemplo de código com o uso de instrução goto,
baseado na sintaxe do Pascal:
read(x);
2: if x = 0 then goto 8;
writeln(x);
4: read(next);
if next = x then goto 4;
x := next;
goto 2;
8: ...;

Linguagens Imperativas Não
Estruturadas
41

Fortran, Assembly e Basic são algumas das
linguagens imperativas que possuem o conceito
de goto.
Linguagens Imperativas Estruturadas
42
Linguagens estruturadas surgiram com o
objetivo de facilitar a leitura e
acompanhamento da execução de algoritmos.
 Normalmente linguagens estruturadas não
fazem uso de comando goto.
 Instruções são agrupadas em blocos, os quais
podem ser considerados como unidades de
programa, abstraindo-se das suas estruturas
internas.

Linguagens Imperativas Estruturadas
43
Blocos de instruções podem ser selecionados
para execução através de declarações de
seleção como if...else, ou repetidamente
executados através de declarações de
repetição como while.
 Procedurais e Modulares.

Linguagens Imperativas Estruturadas
44

Exemplo de código estruturado, baseado na sintaxe do
Pascal, correspondente ao mesmo exemplo da seção
anterior:
read(x);
while x <> 0 do begin
writeln(x);
repeat
read(next);
until next <> x;
x := next;
end;
Referências
45





http://sistemasuniban.blogspot.com.br/2010/04/a
rquiterura-von-neumann-vs-harvard.html
http://pt.wikipedia.org/wiki/Programa%C3%A7%
C3%A3o_imperativa
http://www.inf.pucrs.br/~gustavo/disciplinas/pli/m
aterial/paradigmas-aula09.pdf
http://www.jairo.pro.br/lpi/ling_prog.pdf
http://pt.wikipedia.org/wiki/C%C3%B3digo_espa
guete
Download