Buscar

Programação imperativa Wikipédia, a enciclopédia livre

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 7 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 7 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

John von Neumann
Neumann, à época de Los Alamos (c. 1943-1945),
primeiro laboratório de armas nucleares dos
Estados Unidos
Conhecido(a)
por
Álgebra abeliana de von Neumann,
Álgebra de von Neumann,
Arquitetura de von Neumann,
Universo de von Neumann
Nascimento 28 de dezembro de 1903
Budapeste
Morte 8 de fevereiro de 1957 (53 anos)
Washington, D.C.
Nacionalidade Húngaro
 Estadunidense
Prêmios Prêmio Bôcher (1938),
Prêmio Enrico Fermi (1956)
Orientador(es) Lipót Fejér
Orientado(s) Israel Halperin,
Donald Bruce Gillies,
John Patterson Mayberry
Campo(s) Matemática
Tese 1926
Máquina de Turing
Programação imperativa
Origem: Wikipédia, a enciclopédia livre.
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. Muito parecido com o
comportamento imperativo das linguagens
naturais que expressam ordens, programas
imperativos são uma sequência de comandos para
o computador executar. O nome do paradigma,
Imperativo, está ligado ao tempo verbal
imperativo, onde o programador diz ao
computador: faça isso, depois isso, depois aquilo...
Este paradigma de programação se destaca pela
simplicidade, uma vez que todo ser humano, ao se
programar, o faz imperativamente, baseado na
ideia de ações e estados, quase como um
programa de computador.
O fundamento da programação imperativa é o
conceito de Máquina de Turing, que nada mais é
que uma abstração matemática que corresponde
ao conjunto de funções computáveis.
A Máquina de Turing foi aprimorada por John
Von Neumann a uma arquitetura de
computadores que fundamenta os computadores
construídos até hoje. Isso explica, em parte, o
sucesso das linguagens que seguem esse
paradigma em relação às demais. Nesta
arquitetura( usada hoje nos microcomputadores
comercializados), tanto os dados como os
programas são armazenados na mesma memória, e a CPU que processa as instruções, é separada da
memória. Dessa forma, os dados e instruções devem ser transportados da memória para a CPU e os
resultados das operações realizadas na CPU devem ser devolvidos para a memória.
As linguagens imperativas estruturadas sofrem no entanto de uma falta de flexibilidade dadas o
caráter sequencial das instruções. Contrariamente à programação declarativa, a programação
imperativa introduz um paradigma de programação que descreve a computação em termos de um
https://pt.wikipedia.org/wiki/Ficheiro:JohnvonNeumann-LosAlamos.jpg
https://pt.wikipedia.org/wiki/Laborat%C3%B3rio_Nacional_de_Los_Alamos
https://pt.wikipedia.org/wiki/1943
https://pt.wikipedia.org/wiki/1945
https://pt.wikipedia.org/wiki/Armas_nucleares
https://pt.wikipedia.org/wiki/Estados_Unidos
https://pt.wikipedia.org/wiki/%C3%81lgebra_abeliana_de_von_Neumann
https://pt.wikipedia.org/wiki/%C3%81lgebra_de_von_Neumann
https://pt.wikipedia.org/wiki/Arquitetura_de_von_Neumann
https://pt.wikipedia.org/wiki/Universo_de_von_Neumann
https://pt.wikipedia.org/wiki/28_de_dezembro#Nascimentos
https://pt.wikipedia.org/wiki/1903
https://pt.wikipedia.org/wiki/Budapeste
https://pt.wikipedia.org/wiki/8_de_fevereiro
https://pt.wikipedia.org/wiki/1957
https://pt.wikipedia.org/wiki/Washington,_D.C.
https://pt.wikipedia.org/wiki/Hungria
https://pt.wikipedia.org/wiki/Hungria
https://pt.wikipedia.org/wiki/Estados_Unidos
https://pt.wikipedia.org/wiki/Estadunidenses
https://pt.wikipedia.org/wiki/Pr%C3%AAmio_B%C3%B4cher
https://pt.wikipedia.org/wiki/Pr%C3%AAmio_Enrico_Fermi
https://pt.wikipedia.org/wiki/Lip%C3%B3t_Fej%C3%A9r
https://pt.wikipedia.org/wiki/Israel_Halperin
https://pt.wikipedia.org/wiki/Donald_Bruce_Gillies
https://pt.wikipedia.org/w/index.php?title=John_Patterson_Mayberry&action=edit&redlink=1
https://pt.wikipedia.org/wiki/Matem%C3%A1tica
https://pt.wikipedia.org/wiki/Ficheiro:M%C3%A1quina_de_Turing.png
https://pt.wikipedia.org/wiki/Ci%C3%AAncia_da_Computa%C3%A7%C3%A3o
https://pt.wikipedia.org/wiki/Paradigma_de_programa%C3%A7%C3%A3o
https://pt.wikipedia.org/wiki/Computa%C3%A7%C3%A3o
https://pt.wikipedia.org/wiki/Paradigma
https://pt.wikipedia.org/wiki/M%C3%A1quina_de_Turing
https://pt.wikipedia.org/wiki/John_Von_Neumann
https://pt.wikipedia.org/wiki/Paradigma
https://pt.wikipedia.org/wiki/Computa%C3%A7%C3%A3o
Visão simplificada da arquitetura de
Von Neumann.
estado de um programa e ações que modificam esse estado, tal como o modo imperativo nas
linguagens naturais (faladas e escritas) expressa comandos para perfazer ações, as linguagens
imperativas expressam uma sequencia de comandos para um computador efetuar.
As linguagens de programação imperativa contrastam com
outros tipos de linguagem, tais como linguagens de programação
declarativa, funcional e lógica. Linguagens de programação
funcional, como por exemplo Haskell, não são uma sequência de
afirmações e não possuem, por consequência, um estado global
como as linguagens imperativas. Linguagens de programação
lógica, como exemplo Prolog, frequentemente definem "o que" é
para ser computado, mais do que "como" computar, como seria
normal em uma linguagem imperativa.
Em linguagens puramente imperativas, como Assembly, é muito
fácil o programador criar códigos de difícil leitura, pois esse tipo de linguagem possui o que se chama
de saltos (jumps) em sua estrutura. Estes saltos funcionam da seguinte forma: o programador define
uma marcação (label) no código e depois, a partir de qualquer parte do programa, ele pode executar
um desvio de fluxo de execução (salto) para aquela marcação. Pode ser que à primeira vista isso não
tenha problema, contudo, na depuração do código, o programador fica em apuros com tantas
marcações e saltos, pois isso dificulta o entendimento do fluxo de execução do programa.
Neste contexto, surge a programação estruturada, como uma forma de possibilitar que o
programador tenha maior controle sobre o fluxo de execução do programa. Para isso, qualquer
programa pode ser reduzido a 3 estruturas:
Estruturas de sequência: Onde uma tarefa é executada após a outra, linearmente.
Estruturas de decisão: Onde, a partir de um teste lógico, determinado trecho de código é
executado, ou não.
Estruturas de iteração: Onde, a partir de um teste lógico, determinado trecho de código é
repetido por um número finito de vezes.
Programação estruturada é uma forma de programação de computadores que preconiza que todos os
programas possíveis podem ser reduzidos a apenas três estruturas: sequência, decisão e iteração,
desenvolvida por Michael A. Jackson no seu livro "Principles of Program Design" de 1975.
Tendo, na prática, sido transformada na programação modular, a Programação estruturada orienta
os programadores para a criação de estruturas simples em seus programas, usando as subrotinas e as
funções. Foi a forma dominante na criação de software anterior à programação orientada por objetos.
Apesar de ter sido sucedida pela programação orientada por objetos, pode-se dizer que a
programação estruturada ainda é muito influente, uma vez que grande parte das pessoas ainda
aprendem programação através dela. Para a resolução de problemas relativamente mais simples e
diretos a programação estruturada é muito eficiente. Além disso, por exigir formas de pensar
relativamente complexas, a programação orientada a objetos até hoje ainda não é bem compreendida
ou usada pela maioria.
Há de se acrescentar também que inúmeras linguagens ainda extremamente relevantes nos dias de
hoje, como Cobol, PHP e Perl ainda utilizam o paradigma estruturado (muito embora possuam
suporte para a orientação à objetos).
Origens
Índice
https://pt.wikipedia.org/wiki/Ficheiro:Arquiteturavn.png
https://pt.wikipedia.org/wiki/Programa%C3%A7%C3%A3o_declarativa
https://pt.wikipedia.org/wiki/Programa%C3%A7%C3%A3o_funcional
https://pt.wikipedia.org/wiki/Programa%C3%A7%C3%A3o_l%C3%B3gica
https://pt.wikipedia.org/wiki/Haskell_(linguagem_de_programa%C3%A7%C3%A3o)
https://pt.wikipedia.org/wiki/Prolog
https://pt.wikipedia.org/wiki/Assembly
https://pt.wikipedia.org/wiki/Programa%C3%A7%C3%A3o_estruturadahttps://pt.wikipedia.org/wiki/Programa%C3%A7%C3%A3o_estruturada
https://pt.wikipedia.org/wiki/Programa%C3%A7%C3%A3o_de_computadores
https://pt.wikipedia.org/wiki/Programa%C3%A7%C3%A3o_modular
https://pt.wikipedia.org/wiki/Software
https://pt.wikipedia.org/wiki/Cobol
https://pt.wikipedia.org/wiki/PHP
https://pt.wikipedia.org/wiki/Perl
Ken Thompson e Dennis Ritchie (da esquerda
para direita), os criadores das linguagens B e C,
respectivamente.
Histórico
Características Principais da Linguagem Imperativa
Como Funciona a Programação Imperativa
Modelo Computacional do Paradigma Imperativo
Elementos da Programação Imperativa
Técnicas em Programação Imperativa
Vantagens
Desvantagens
Linguagens de programação
Leitura Recomendada
Ver também
Ligações externas
Linguagens imperativas têm uma história rica e variada. As primeiras linguagens de programação
imperativas eram linguagens de máquina, com instruções simples mas de construção complexa.
Instruções de máquina foram logo substituídos com linguagens de montagem que são essencialmente
transliterações de código de máquina.
Fortran (FORmula TRANslation) foi a primeira linguagem de alto nível para ganhar ampla aceitação.
Ele foi projetado para aplicações científicas e contou com uma notação algébrica, tipos,
subprogramas, e entrada/saída formatada. Foi implementado em 1956 por John Backus na IBM
especificamente para a máquina IBM 704. Execução eficiente foi uma grande preocupação,
consequentemente, sua estrutura e comandos têm muito em comum com linguagens de montagem.
FORTRAN ganhou ampla aceitação e continua a ser largamente utilizado na comunidade de
computação científica.
COBOL (COmmon Business Oriented Language) foi projetada (por um comitê de representantes de
fabricantes de computadores e do Departamento de Defesa), por iniciativa do Departamento de
Defesa dos EUA em 1959 e implementado em 1960. COBOL caracteriza registros, arquivos e dados
fixos decimais. Ele também forneceu uma linguagem natural como sintaxe para que os programas
sejam capazes de ser lido e entendido por não programadores. COBOL ganhou ampla aceitação na
comunidade de processamento de dados e continua a ser largamente utilizado.
ALGOL 60 (ALGorithmic Oriented Language) foi
concebido em 1960 por um comitê internacional para
uso em resolução de problemas científicos. Ao
contrário FORTRAN foi concebido de forma
independente de uma aplicação, uma escolha que
conduzem a uma linguagem elegante. A descrição do
ALGOL 60 introduziu a notação BNF para a definição
de sintaxe e é um modelo de clareza e completude.
Embora ALGOL 60 não conseguiu ganhar grande
aceitação, introduziu estrutura de bloco, instruções de
controle estruturados e procedimentos recursivos no
paradigma de programação imperativa.
FORTRAN (1956) → variáveis com nome,
subprogramas, expressões complexas
Origens
https://pt.wikipedia.org/wiki/Ficheiro:Ken_Thompson_and_Dennis_Ritchie--1973.jpg
https://pt.wikipedia.org/wiki/Ken_Thompson
https://pt.wikipedia.org/wiki/Dennis_Ritchie
https://pt.wikipedia.org/wiki/B_(linguagem_de_programa%C3%A7%C3%A3o)
https://pt.wikipedia.org/wiki/Linguagens_de_programa%C3%A7%C3%A3o
https://pt.wikipedia.org/wiki/Fortran
https://pt.wikipedia.org/wiki/John_Backus
https://pt.wikipedia.org/wiki/IBM
https://pt.wikipedia.org/wiki/IBM_704
https://pt.wikipedia.org/wiki/COBOL
https://pt.wikipedia.org/wiki/Processamento_de_dados
https://pt.wikipedia.org/wiki/ALGOL_60
https://pt.wikipedia.org/wiki/BNF
https://pt.wikipedia.org/wiki/Sintaxe
https://pt.wikipedia.org/wiki/FORTRAN
ALGOL (1960) → maior facilidade de expressar algoritmos matemáticos
COBOL (1960)
BASIC (1964) → sintaxe mais próxima do inglês
PASCAL (1970)
C (1970)
ADA (1974-1983)
Computador Hipotético
Introdução à Programação
Construção de Algoritmos
Componentes de Algoritmos
Controle de Fluxo de Execução
Estrutura de Decisão SE
Estrutura de Decisão CASO
As linguagens imperativas também são chamadas de procedurais e se trata do modelo mais antigo de
todos, a execução é baseada em comandos e armazenamento de dados. O paradigma imperativo foi
predominante nas LP, pois são mais fáceis de traduzir para uma forma adequada para execução da
máquina. Um programa imperativo é mantido em variáveis que são associadas 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 ou 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, ou seja, o valor da variável
pode se modificar antes e depois do comando e isso garante a sequencia de instruções.
As funções de linguagem de programação imperativa 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
descritos. A repetição é usada para processar os valores e laços para varrer uma sequencia de
localizações de memória (vetores, por exemplo), ou para acumular valor nas variáveis.
Variáveis: modelam as células de memória
Comandos de atribuição: são baseados nas operações de transferências de dados e instruções.
Execução sequencial de procedimentos
Forma interativa de repetição
A essência da programação imperativa e também da Máquina de Turing se resume a três conceitos:
A descrição de estados de uma máquina abstrata por valores de um conjunto de variáveis
Reconhecedores desses estados - expressões compostas por relações entre esses valores ou
os resultados de operações utilizando valores
Comandos de atribuição e controle
O código fonte dos programas e computador, seguindo o paradigma imperativo possui marcações
especiais (implíticas ou explícitas) que direcionam a sua execução pelo sistema operacional e, em
última análise, pelo hardware. Embora as linguagens de programação modernas pertencentes a
Histórico
Características Principais da Linguagem Imperativa
Como Funciona a Programação Imperativa
https://pt.wikipedia.org/wiki/ALGOL
https://pt.wikipedia.org/wiki/COBOL
https://pt.wikipedia.org/wiki/BASIC
https://pt.wikipedia.org/wiki/PASCAL
https://pt.wikipedia.org/wiki/C_(linguagem_de_programa%C3%A7%C3%A3o)
https://pt.wikipedia.org/wiki/Ada_(linguagem_de_programa%C3%A7%C3%A3o)
outros paradigmas tendam a facilitar cada vez mais a escrita do código, camuflando operações mais
próximas às linguagens de baixo nível, podemos encontrar ainda a presença de estruturas de controle
da mesma forma que ocorria em linguagens de programação de vinte ou trinta anos atrás.
As marcações utilizadas para controlar a execução dos programas são chamadas de estruturas de
controle. As estruturas de controle são divididas em três grupos: sequência, seleção e repetição. A
estrutura de sequência é implícita nos programas e indica que as instruções são executadas uma após
a outra, seguindo uma sequência.
Programas centrados no conceito de um estado (modelado por variáveis) e ações (comandos) que
manipulam o estado, são programas projetados em um paradigma imperativo, paradigma esse que
também é denominado de procedural, por incluir subrotinas ou procedimentos como mecanismo de
estruturação. Foi o primeiro paradigma a surgir e ainda é o dominante.
O paradigma imperativo está baseado na ideia de um estado que sofre modificações durante a
computação. O estado é representado por um conjunto de associações de identificadores (variáveis
globais e locais ativas do programa) em valores. A diferença fundamental com relação ao paradigma
funcional é que esta associação é dinâmica, sendo constantemente modificada durante a execução de
um programa. As linguagens imperativas oferecem uma variedade de comandos cuja execução
envolve aspectos de controle, mas essencialmente modificação do estado do programa.
O elemento central de um programa imperativo é o comando, que pode ser primitivo (como
atribuição, leitura e escrita) ou composto, como seqüência, condicional e iteração. Um importante
mecanismo de estruturação das linguagens imperativas é o procedimento, que, como uma função,
pode ser parametrizado,mas tem como corpo um comando, ao invés de uma expressão. Em geral, um
programa em uma linguagem imperativa deixa de ser uma expressão e passa a ser um comando.
Os principais elementos da programação imperativa são:
Definição de tipos de dados
Expressões e atribuições
Estruturas de controle de fluxo (programação estruturada)
Definição de sub-rotinas (programação procedimental)
Modularidade dos Algoritmos (Programação estruturada)
Modularidade das Estruturas de dados (Tipos abstratos de dados)
Recorrência
Eficiência (embute o modelo Von Neumann)
Paradigma dominante e bem estabelecido
Modelagem natural de aplicações do mundo real
Possui tipagem fraca e também muito flexível (alguns especialistas consideram isso uma
desvantagem)
Modelo Computacional do Paradigma Imperativo
Elementos da Programação Imperativa
Técnicas em Programação Imperativa
Vantagens
https://pt.wikipedia.org/wiki/Computa%C3%A7%C3%A3o
https://pt.wikipedia.org/wiki/Von_Neumann
É fácil de se entender, sendo amplamente usada em cursos introdutórios de programação.
Possui difícil legibilidade
Descrições demasiadamente profissional focaliza o "como" e não o "quê"
Relacionamento indireto com a E/S (indução a erros/estados)
Ainda se foca em como a tarefa deve ser feita e não em o que deve ser feito.
Tende a gerar códigos confusos, onde tratamento dos dados são misturados com o
comportamento do programa
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
Pratt, Terrence W. e Marvin V. Zelkowitz. Línguas De Programação: Projeto e execução. ó ed.
Penhascos De Englewood, N.J.: Prentice Salão, 1996.
Sebesta, Robert W. Conceitos de línguas de programação. ó ed. Leitura, Massa.: Addison-Wesley
Publishing Companhia, 1996.
Paradigma de programação
Linguagem de programação
Programação funcional
Programação procedural
Programação orientada a objetos
Programação estruturada
Linha do tempo das linguagens (http://embed.verite.co/timeline/?source=0AjCODbGJQpJSdDdB
RTJpTlZWUEpzelE1bnc2cEJLYUE&font=Bevan-PotanoSans&maptype=toner&lang=en&height=
Desvantagens
Linguagens de programação
Leitura Recomendada
Ver também
Ligações externas
https://pt.wikipedia.org/wiki/Ada_(linguagem_de_programa%C3%A7%C3%A3o)
https://pt.wikipedia.org/wiki/ALGOL
https://pt.wikipedia.org/wiki/Basic
https://pt.wikipedia.org/wiki/Linguagem_de_programa%C3%A7%C3%A3o_C
https://pt.wikipedia.org/wiki/PHP
https://pt.wikipedia.org/wiki/Java_(linguagem_de_programa%C3%A7%C3%A3o)
https://pt.wikipedia.org/wiki/Cobol
https://pt.wikipedia.org/wiki/Fortran
https://pt.wikipedia.org/wiki/Pascal_(linguagem_de_programa%C3%A7%C3%A3o)
https://pt.wikipedia.org/wiki/Python
https://pt.wikipedia.org/wiki/Lua_(linguagem_de_programa%C3%A7%C3%A3o)
https://pt.wikipedia.org/wiki/Mathematica
https://pt.wikipedia.org/wiki/Paradigma_de_programa%C3%A7%C3%A3o
https://pt.wikipedia.org/wiki/Linguagem_de_programa%C3%A7%C3%A3o
https://pt.wikipedia.org/wiki/Programa%C3%A7%C3%A3o_funcional
https://pt.wikipedia.org/wiki/Programa%C3%A7%C3%A3o_procedural
https://pt.wikipedia.org/wiki/Programa%C3%A7%C3%A3o_orientada_a_objetos
https://pt.wikipedia.org/wiki/Programa%C3%A7%C3%A3o_estruturada
http://embed.verite.co/timeline/?source=0AjCODbGJQpJSdDdBRTJpTlZWUEpzelE1bnc2cEJLYUE&font=Bevan-PotanoSans&maptype=toner&lang=en&height=650
650)
Obtida de "https://pt.wikipedia.org/w/index.php?title=Programação_imperativa&oldid=52834435"
Esta página foi editada pela última vez às 15h08min de 5 de agosto de 2018.
Este texto é disponibilizado nos termos da licença Atribuição-CompartilhaIgual 3.0 Não Adaptada (CC BY-SA 3.0) da
Creative Commons; pode estar sujeito a condições adicionais. Para mais detalhes, consulte as condições de utilização.
http://embed.verite.co/timeline/?source=0AjCODbGJQpJSdDdBRTJpTlZWUEpzelE1bnc2cEJLYUE&font=Bevan-PotanoSans&maptype=toner&lang=en&height=650
https://pt.wikipedia.org/w/index.php?title=Programa%C3%A7%C3%A3o_imperativa&oldid=52834435
https://creativecommons.org/licenses/by-sa/3.0/deed.pt
https://foundation.wikimedia.org/wiki/Condi%C3%A7%C3%B5es_de_Uso

Outros materiais