SlideShare uma empresa Scribd logo
1 de 30
Baixar para ler offline
Introdução ao Paradigma Imperativo
Prof. Tony Alexander Hild
Paradigmas de Linguagem de Programação – 3 CC – Unicentro – 2013
2
Definição da paradigmaDefinição da paradigma
pa·ra·dig·ma
(grego parádeigma, -atos)
substantivo masculino
1. Algo que serve de exemplo geral ou de modelo. = PADRÃO
2. [Gramática]  Conjunto das formas que servem de modelo de derivação
ou de flexão. = PADRÃO
3. [Linguística]  Conjunto dos termos ou elementos que podem ocorrer na
mesma posição ou contexto de uma estrutura.
"paradigma", in Dicionário Priberam da Língua Portuguesa [em linha], 2008-
2013, http://www.priberam.pt/dlpo/paradigma [consultado em 27-09-2013].
3
Definição de imperativoDefinição de imperativo
im·pe·ra·ti·vo
adjetivo
1. Que impera ou manda.
2. Autoritário, arrogante.
substantivo masculino
3. [Gramática]  Modo do verbo que exprime ordem, exortação ou pedido.
4. Princípio que tem o caráter de obrigação imperiosa.
"imperativo", in Dicionário Priberam da Língua Portuguesa [em linha], 2008-
2013, http://www.priberam.pt/dlpo/imperativo [consultado em 27-09-2013].
4
Relembrando a história...Relembrando a história...
●
John von Neumann:
– Primeira pessoa a documentar os
conceitos básicos de
computadores de programas
armazenados;
– Famoso matemático húngaro que
foi para os EUA em 1930 e
interessou-se por computadores
enquanto participava no
desenvolvimento da bomba de
hidrogênio.
5
O computador “von Neumann”O computador “von Neumann”
●
Uma unidade de memória: é capaz de armazenar dados e instruções:
– Acesso aleatório;
●
Internamente, os dados e as instruções são armazenadas no mesmo espaço de
endereço e são indistinguíveis;
●
Uma unidade de cálculo (ALU);
●
Uma unidade de controle (CPU);
– Programa armazenado → conjunto de instruções;
●
Dualidade entre instruções e dados → programas podem automodificar-se;
●
von Neumann delineou essa estrutura em um documento conhecido como o
“First Draft of a Report on the EDVAC” de junho de 1945.
6
O computador “von Neumann”O computador “von Neumann”
7
● Alan Turing: um matemático
britânico e um dos primeiros
cientistas da computação;
● Uma linguagem é Turing
completa se puder ser utilizada
para implementar qualquer
algoritmo;
● Muito importante para o estudo
da computabilidade.
Completude de TuringCompletude de Turing
8
O que torna uma linguagemO que torna uma linguagem
imperativa?imperativa?
●
Programas escritos em linguagens de
programação imperativas consistem em:
– Um estado do programa;
– Instruções que alteram o estado do programa.
●
Instruções do programa são "imperativas", no
sentido gramatical dos verbos imperativos que
expressam um comando.
Primeiro faça isto, depois faça aquilo.
9
● Primeiras linguagens imperativas: linguagens de
montagem (assembly);
● 1954-1955: Fortran (FORmula TRANslator):
– John Backus desenvolvido para IBM 704.
● Final de 1950: Algol (ALGOrithmic Language);
● 1958: Cobol (Common Business Oriented
Language), desenvolvido por uma comissão do
governo, Grace Hopper muito influente.
História das Linguagens ImperativasHistória das Linguagens Imperativas
10
Elementos das linguagens imperativasElementos das linguagens imperativas
●
Definições de tipo de dados;
●
Declarações de variáveis:
– São normalmente "tipadas" estaticamente ou dinamicamente:
●
Tipos básicos de dados (e.g., int, float, boolean, char);
●
Tipos de dados compostos (structs, arrays).
●
Expressões e declarações de atribuição;
●
Declarações de controle de fluxo (geralmente estruturados);
– Desvios condicionais, laços;
– As declarações são comandos e sua ordem é fundamental para a execução correta;
●
Escopos lexicais e blocos:
– Objetivo: proporcionar localidade de referência.
●
Declarações e definições de procedimentos e funções (isto é, blocos parametrizados);
●
Manipulação de erros e exceções;
●
Comandos de E/S;
●
Estruturas de dados.
11
Características das linguagensCaracterísticas das linguagens
imperativasimperativas
●
São Turing completas se suportarem inteiros, operadores aritméticos básicos, atribuições,
sequenciamento, laços e desvios condicioanis;
●
O estado do programa é mantido em variáveis associadas à localizações de memória:
– 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;
– a = 1;
– &a = 1;
●
Uma 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;
– print(a) => 1;
– a = 2; dependência de ordem
– print(a) => 2;
12
Características das linguagensCaracterísticas das linguagens
imperativasimperativas
● Repetição ou laço ou loop:
– Usada extensivamente para processar valores ou acumular um valor em uma variável
específica; ou
– Usada para varrer uma sequência de localizações de memória tal como vetores.
● Funções:
– Algoritmos que especificam como processar um intervalo de valores, a partir de um valor
de domínio, com uma série de passos prescritos;
● Comandos:
– Semelhantes às instruções de máquina nativas de um hardware de computador tradicional
- o modelo de von Neumann-Eckley;
● 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;
● Usa-se abstração procedural e refinamento gradual para melhorar um programa imperativo.
13
Gráfico de fluxoGráfico de fluxo
● Usado para modelar programas
imperativos;
● Com base nas três declarações
de controle que são essenciais
para se obter toda a
capacidade de uma máquina
de Turing;
● Precursor da UML e outras
técnicas modernas;
● Criado para descrever fluxos
de processos em geral.
14
Abstração ProceduralAbstração Procedural
● Nicholas Wirth descreveu programas (imperativos)
como "algoritmos + estruturas de dados";
● Algoritmos tornam-se programas através do
processo de abstração procedural e refinamento
gradual;
● Bibliotecas de funções reutilizáveis facilitam este
processo (funções = procedimentos);
● Programação imperativa + procedimentos =
programação procedural.
15
● A abstração procedural permite que o programador
se preocupe principalmente com as interfaces
entre as funções (procedimentos) e o que elas
calculam, ignorando os detalhes de como o cálculo
é realizado;
● Abstração permite pensar sobre o que está sendo
feito, e não como é implementado.
Abstração ProceduralAbstração Procedural
16
Refinamento gradual (passo aRefinamento gradual (passo a
passo)passo)
● Refinamento gradual (também chamado de decomposição
funcional) utiliza abstração procedural para desenvolver um
algoritmo a partir de sua forma mais geral, (a abstração) para
sua implementação específica (método top-down);
● Os programadores começam com a descrição do que o
programa deve fazer, incluindo E/S, e repetidamente quebram
o problema em partes menores, até que os subproblemas
possam ser expressados em termos dos estados primitivos e
dos tipos de dados da linguagem.
17
●
Uma abordagem disciplinada para projetos de programas imperativos;
●
Usa abstração procedural e projeto top-down para identificar os
componentes do programa (também chamados de módulos ou
estruturas);
●
Estruturas do programa combinadas em um número limitado de formas,
de modo que a compreensão de como funciona cada estrutura significa
entender como funciona o programa;
●
O fluxo de controle do programa é baseado em decisões, sequências,
laços, mas...
– Não usa instruções goto.
●
Os módulos são desenvolvidos, testados separadamente e depois
integradas no conjunto do programa.
Programação EstruturadaProgramação Estruturada
18
Instruções gotoInstruções goto
Código Spaghetti
19
AtribuiçõesAtribuições
● Lembre-se: linguagens imperativas operam
alterando o estado do programa. Isso é feito
usando comandos de atribuição destrutivos.
● Formato geral:
– destino = expressão
● Operadores de atribuição: = ou :=
● Baseado em operações de máquina, tais como
MOV ou STO.
20
Semântica de AtribuiçãoSemântica de Atribuição
● Avalia a expressão para obter um único valor;
● Copia o valor da expressão para o destino;
● Programas imperativos puros implementam a
semântica de cópia (em oposição à semântica de
referência utilizadas em linguagens orientadas a
objetos).
21
ExpressõesExpressões
● Expressões representam um valor e têm um tipo;
● Compreender as expressões significa entender a
precedência do operador, sobrecarga de
operadores, casting e conversão de tipo, entre
outras questões;
● Expressões aritméticas simples são baseados em
operadores aritméticos (DIV, MUL, etc) de
linguagem de máquina (LM).
22
ExpressõesExpressões
● Os operadores lógicos são baseadas em instruções de LM
semelhantes (AND, XOR, …);
● LM suporta tipos de dados indiretamente através de diferentes
instruções:
– add/sub/mul/div de inteiros
vs
– add/sub/mul/div de ponto flutuante, por exemplo.
● Internamente, não há maneira visível para distinguir inteiros de
ponto flutuantes de caracteres;
● Línguagens a partir do Fortran fornecem alguma proteção contra
erros de tipo, e alguma capacidade para definir novos tipos.
23
Linguagens Imperativas X DeclarativasLinguagens Imperativas X Declarativas
● Linguagens imperativas (Java, Pascal, C/C++, C#):
– Especificam uma sequência de operações para o computador
executar.
● Linguagens declarativas (SQL, Haskell, Prolog)
– Descrevem o espaço de soluções;
– Fornecem o conhecimento necessário para chegar lá;
– Não descrevem os passos necessários para chegar lá.
– Linguagens funcionais e linguagens lógicas são declarativas.
24
Vantagens e DesvantagensVantagens e Desvantagens
● 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).
25
ExemplosExemplos
●
Ada
●
Algol
●
C
●
Pascal
26
ADAADA
27
ADAADA
28
ALGOLALGOL
29
CC
30
PascalPascal

Mais conteúdo relacionado

Mais procurados

Algoritmos e Estrutura de Dados - Aula 01
Algoritmos e Estrutura de Dados - Aula 01Algoritmos e Estrutura de Dados - Aula 01
Algoritmos e Estrutura de Dados - Aula 01thomasdacosta
 
Banco de Dados - Sistemas de Gerenciamento de Banco de Dados
Banco de Dados - Sistemas de Gerenciamento de Banco de DadosBanco de Dados - Sistemas de Gerenciamento de Banco de Dados
Banco de Dados - Sistemas de Gerenciamento de Banco de DadosNatanael Simões
 
Aula 4 - Teste de mesa
Aula 4 - Teste de mesaAula 4 - Teste de mesa
Aula 4 - Teste de mesaPacc UAB
 
Lógica de Programação - Estrutura condicional
Lógica de Programação - Estrutura condicionalLógica de Programação - Estrutura condicional
Lógica de Programação - Estrutura condicionalWesley R. Bezerra
 
Aula 01 - Fundamentos de Banco de Dados (2).pdf
Aula 01 - Fundamentos de Banco de Dados (2).pdfAula 01 - Fundamentos de Banco de Dados (2).pdf
Aula 01 - Fundamentos de Banco de Dados (2).pdfMarcelo Silva
 
Aula Introdução a Arquitetura e Organização de Computadores
Aula Introdução a Arquitetura e Organização de ComputadoresAula Introdução a Arquitetura e Organização de Computadores
Aula Introdução a Arquitetura e Organização de ComputadoresGilvan Latreille
 
Arquitetura de Hardware
Arquitetura de HardwareArquitetura de Hardware
Arquitetura de HardwareMiguel Correia
 
Introdução a Sistemas Distribuídos
Introdução a Sistemas DistribuídosIntrodução a Sistemas Distribuídos
Introdução a Sistemas DistribuídosVictor Hazin da Rocha
 
Introdução - Arquitetura e Organização de Computadores
Introdução - Arquitetura e Organização de ComputadoresIntrodução - Arquitetura e Organização de Computadores
Introdução - Arquitetura e Organização de ComputadoresWellington Oliveira
 
Redes de Computadores
Redes de Computadores Redes de Computadores
Redes de Computadores claudioatx
 
Introdução à Lógica de Programação
Introdução à Lógica de ProgramaçãoIntrodução à Lógica de Programação
Introdução à Lógica de ProgramaçãoAndré Agostinho
 
Aula 04 arquitetura de computadores
Aula 04   arquitetura de computadoresAula 04   arquitetura de computadores
Aula 04 arquitetura de computadoresDaniel Moura
 
Lógica de programação { para iniciantes }
Lógica de programação { para iniciantes }Lógica de programação { para iniciantes }
Lógica de programação { para iniciantes }Mariana Camargo
 

Mais procurados (20)

Algoritmos e Estrutura de Dados - Aula 01
Algoritmos e Estrutura de Dados - Aula 01Algoritmos e Estrutura de Dados - Aula 01
Algoritmos e Estrutura de Dados - Aula 01
 
Banco de Dados - Sistemas de Gerenciamento de Banco de Dados
Banco de Dados - Sistemas de Gerenciamento de Banco de DadosBanco de Dados - Sistemas de Gerenciamento de Banco de Dados
Banco de Dados - Sistemas de Gerenciamento de Banco de Dados
 
Aula 4 - Teste de mesa
Aula 4 - Teste de mesaAula 4 - Teste de mesa
Aula 4 - Teste de mesa
 
Lógica de Programação
Lógica de ProgramaçãoLógica de Programação
Lógica de Programação
 
Lógica de Programação - Estrutura condicional
Lógica de Programação - Estrutura condicionalLógica de Programação - Estrutura condicional
Lógica de Programação - Estrutura condicional
 
Fundamentos do java
Fundamentos do javaFundamentos do java
Fundamentos do java
 
Aula 01 - Fundamentos de Banco de Dados (2).pdf
Aula 01 - Fundamentos de Banco de Dados (2).pdfAula 01 - Fundamentos de Banco de Dados (2).pdf
Aula 01 - Fundamentos de Banco de Dados (2).pdf
 
Aula Introdução a Arquitetura e Organização de Computadores
Aula Introdução a Arquitetura e Organização de ComputadoresAula Introdução a Arquitetura e Organização de Computadores
Aula Introdução a Arquitetura e Organização de Computadores
 
Algoritmos: Variáveis e Constantes
Algoritmos: Variáveis e ConstantesAlgoritmos: Variáveis e Constantes
Algoritmos: Variáveis e Constantes
 
Aula - Metodologias Ágeis
Aula - Metodologias ÁgeisAula - Metodologias Ágeis
Aula - Metodologias Ágeis
 
Arquitetura de Hardware
Arquitetura de HardwareArquitetura de Hardware
Arquitetura de Hardware
 
Variáveis e portugol
Variáveis e portugolVariáveis e portugol
Variáveis e portugol
 
Introdução a Sistemas Distribuídos
Introdução a Sistemas DistribuídosIntrodução a Sistemas Distribuídos
Introdução a Sistemas Distribuídos
 
Linguagem C - Ponteiros
Linguagem C - PonteirosLinguagem C - Ponteiros
Linguagem C - Ponteiros
 
Introdução - Arquitetura e Organização de Computadores
Introdução - Arquitetura e Organização de ComputadoresIntrodução - Arquitetura e Organização de Computadores
Introdução - Arquitetura e Organização de Computadores
 
Redes de Computadores
Redes de Computadores Redes de Computadores
Redes de Computadores
 
Introdução à Lógica de Programação
Introdução à Lógica de ProgramaçãoIntrodução à Lógica de Programação
Introdução à Lógica de Programação
 
Aula 04 arquitetura de computadores
Aula 04   arquitetura de computadoresAula 04   arquitetura de computadores
Aula 04 arquitetura de computadores
 
Lógica de programação { para iniciantes }
Lógica de programação { para iniciantes }Lógica de programação { para iniciantes }
Lógica de programação { para iniciantes }
 
Aula01 - Logica de Programação
Aula01 - Logica de ProgramaçãoAula01 - Logica de Programação
Aula01 - Logica de Programação
 

Destaque

Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.Valmon Gaudencio
 
Programação 1
Programação 1Programação 1
Programação 1essa
 
Critérios de avaliação de linguagens
Critérios de avaliação de linguagensCritérios de avaliação de linguagens
Critérios de avaliação de linguagensPaulo Muniz
 
Elementos Fundamentais de Linguagens de Programação e a Linguagem Python
Elementos Fundamentais de Linguagens de Programação e a Linguagem PythonElementos Fundamentais de Linguagens de Programação e a Linguagem Python
Elementos Fundamentais de Linguagens de Programação e a Linguagem PythonCaliane Z. Pecenin
 
Aula Inaugural - Programação Imperativa
Aula Inaugural - Programação ImperativaAula Inaugural - Programação Imperativa
Aula Inaugural - Programação ImperativaIvna Valença
 
Linguágens de programação
Linguágens de programaçãoLinguágens de programação
Linguágens de programaçãoAlbertoVach
 
Paradigmas de Linguagens de Programação - Escopo estático/dinâmico
Paradigmas de Linguagens de Programação - Escopo estático/dinâmicoParadigmas de Linguagens de Programação - Escopo estático/dinâmico
Paradigmas de Linguagens de Programação - Escopo estático/dinâmicoAdriano Teixeira de Souza
 
Apresentação linguagem cobol
Apresentação linguagem cobolApresentação linguagem cobol
Apresentação linguagem cobolLorranna Machado
 
Apresentação sobre a linguagem lua
Apresentação sobre a linguagem luaApresentação sobre a linguagem lua
Apresentação sobre a linguagem luaRafael Sanches
 
Linguagens de Programação
Linguagens de ProgramaçãoLinguagens de Programação
Linguagens de ProgramaçãoBeDMK
 
Aula 02 POO - Meu Primeiro Código
Aula 02 POO - Meu Primeiro CódigoAula 02 POO - Meu Primeiro Código
Aula 02 POO - Meu Primeiro CódigoAislan Rafael
 
4 introdução ao paradigma funcional
4 introdução ao paradigma funcional4 introdução ao paradigma funcional
4 introdução ao paradigma funcionalPéricles Miranda
 
Linguagens de programação
Linguagens de programaçãoLinguagens de programação
Linguagens de programaçãoessa
 
Algoritmos - Paradigmas de Programação
Algoritmos - Paradigmas de ProgramaçãoAlgoritmos - Paradigmas de Programação
Algoritmos - Paradigmas de ProgramaçãoElaine Cecília Gatto
 
Paradigmas de Linguagens de programacao - Aula #2
Paradigmas de Linguagens de programacao - Aula #2Paradigmas de Linguagens de programacao - Aula #2
Paradigmas de Linguagens de programacao - Aula #2Ismar Silveira
 

Destaque (20)

Paradigmas de programação
Paradigmas de programaçãoParadigmas de programação
Paradigmas de programação
 
Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.
 
Programação 1
Programação 1Programação 1
Programação 1
 
Critérios de avaliação de linguagens
Critérios de avaliação de linguagensCritérios de avaliação de linguagens
Critérios de avaliação de linguagens
 
Elementos Fundamentais de Linguagens de Programação e a Linguagem Python
Elementos Fundamentais de Linguagens de Programação e a Linguagem PythonElementos Fundamentais de Linguagens de Programação e a Linguagem Python
Elementos Fundamentais de Linguagens de Programação e a Linguagem Python
 
Aula Inaugural - Programação Imperativa
Aula Inaugural - Programação ImperativaAula Inaugural - Programação Imperativa
Aula Inaugural - Programação Imperativa
 
Paradigmas de programação
Paradigmas de programaçãoParadigmas de programação
Paradigmas de programação
 
Linguágens de programação
Linguágens de programaçãoLinguágens de programação
Linguágens de programação
 
Paradigmas de Linguagens de Programação - Escopo estático/dinâmico
Paradigmas de Linguagens de Programação - Escopo estático/dinâmicoParadigmas de Linguagens de Programação - Escopo estático/dinâmico
Paradigmas de Linguagens de Programação - Escopo estático/dinâmico
 
Apresentação linguagem cobol
Apresentação linguagem cobolApresentação linguagem cobol
Apresentação linguagem cobol
 
01 aula1 habib
01 aula1 habib01 aula1 habib
01 aula1 habib
 
Apresentação sobre a linguagem lua
Apresentação sobre a linguagem luaApresentação sobre a linguagem lua
Apresentação sobre a linguagem lua
 
Linguagens de Programação
Linguagens de ProgramaçãoLinguagens de Programação
Linguagens de Programação
 
Aula 02 POO - Meu Primeiro Código
Aula 02 POO - Meu Primeiro CódigoAula 02 POO - Meu Primeiro Código
Aula 02 POO - Meu Primeiro Código
 
4 introdução ao paradigma funcional
4 introdução ao paradigma funcional4 introdução ao paradigma funcional
4 introdução ao paradigma funcional
 
Paradigma lógico
Paradigma lógicoParadigma lógico
Paradigma lógico
 
Linguagens de programação
Linguagens de programaçãoLinguagens de programação
Linguagens de programação
 
Algoritmos - Paradigmas de Programação
Algoritmos - Paradigmas de ProgramaçãoAlgoritmos - Paradigmas de Programação
Algoritmos - Paradigmas de Programação
 
Paradigmas de Linguagens de programacao - Aula #2
Paradigmas de Linguagens de programacao - Aula #2Paradigmas de Linguagens de programacao - Aula #2
Paradigmas de Linguagens de programacao - Aula #2
 
Linguagem da programação
Linguagem da programaçãoLinguagem da programação
Linguagem da programação
 

Semelhante a Introdução ao Paradigma Imperativo

Lista exercicios algoritmos
Lista exercicios algoritmosLista exercicios algoritmos
Lista exercicios algoritmosslashmelhor
 
Aula01 estrutura de dados - (começando as brincadeiras)
Aula01   estrutura de dados - (começando as brincadeiras)Aula01   estrutura de dados - (começando as brincadeiras)
Aula01 estrutura de dados - (começando as brincadeiras)Cleyton Fábio
 
Apresentação final
Apresentação finalApresentação final
Apresentação finalvalmon
 
Algoritmo estruturado
Algoritmo estruturadoAlgoritmo estruturado
Algoritmo estruturadodasko
 
paradigmasdlsksmmskskkekekekekedmmmdmdmmf.pdf
paradigmasdlsksmmskskkekekekekedmmmdmdmmf.pdfparadigmasdlsksmmskskkekekekekedmmmdmdmmf.pdf
paradigmasdlsksmmskskkekekekekedmmmdmdmmf.pdfAndreiaCristinaFlore
 
aula03-introprogy.pptx
aula03-introprogy.pptxaula03-introprogy.pptx
aula03-introprogy.pptxbrayankedroksi
 
CURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃO
CURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃOCURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃO
CURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃOMicrosoft
 
Introdução à programação
Introdução à programaçãoIntrodução à programação
Introdução à programação12anogolega
 
Aula01 introducao operacoes
Aula01   introducao operacoesAula01   introducao operacoes
Aula01 introducao operacoesYuri Passos
 
Int. sistemas de informação iii
Int. sistemas de informação iiiInt. sistemas de informação iii
Int. sistemas de informação iiiRay Fran Pires
 
Técnicas_Implementação
Técnicas_ImplementaçãoTécnicas_Implementação
Técnicas_ImplementaçãoWagner Zaparoli
 
Algoritmos - Aula 03 - Necessidade Do Uso da Logica
Algoritmos - Aula 03 - Necessidade Do Uso da LogicaAlgoritmos - Aula 03 - Necessidade Do Uso da Logica
Algoritmos - Aula 03 - Necessidade Do Uso da LogicaRodrigo Kiyoshi Saito
 

Semelhante a Introdução ao Paradigma Imperativo (20)

Linguagem da programação
Linguagem da programaçãoLinguagem da programação
Linguagem da programação
 
Lista exercicios algoritmos
Lista exercicios algoritmosLista exercicios algoritmos
Lista exercicios algoritmos
 
1.1.paradigmas
1.1.paradigmas1.1.paradigmas
1.1.paradigmas
 
Aula01 estrutura de dados - (começando as brincadeiras)
Aula01   estrutura de dados - (começando as brincadeiras)Aula01   estrutura de dados - (começando as brincadeiras)
Aula01 estrutura de dados - (começando as brincadeiras)
 
Cap02
Cap02Cap02
Cap02
 
Cap02
Cap02Cap02
Cap02
 
Cap02
Cap02Cap02
Cap02
 
Apresentação final
Apresentação finalApresentação final
Apresentação final
 
Principios e paradigmas_de_computacao2
Principios e paradigmas_de_computacao2Principios e paradigmas_de_computacao2
Principios e paradigmas_de_computacao2
 
Aula01 - Analise e Programação
Aula01 - Analise e ProgramaçãoAula01 - Analise e Programação
Aula01 - Analise e Programação
 
Algoritmo estruturado
Algoritmo estruturadoAlgoritmo estruturado
Algoritmo estruturado
 
paradigmasdlsksmmskskkekekekekedmmmdmdmmf.pdf
paradigmasdlsksmmskskkekekekekedmmmdmdmmf.pdfparadigmasdlsksmmskskkekekekekedmmmdmdmmf.pdf
paradigmasdlsksmmskskkekekekekedmmmdmdmmf.pdf
 
aula03-introprogy.pptx
aula03-introprogy.pptxaula03-introprogy.pptx
aula03-introprogy.pptx
 
CURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃO
CURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃOCURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃO
CURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃO
 
Introdução à programação
Introdução à programaçãoIntrodução à programação
Introdução à programação
 
Aula01 introducao operacoes
Aula01   introducao operacoesAula01   introducao operacoes
Aula01 introducao operacoes
 
Int. sistemas de informação iii
Int. sistemas de informação iiiInt. sistemas de informação iii
Int. sistemas de informação iii
 
Mini Curso de C
Mini Curso de CMini Curso de C
Mini Curso de C
 
Técnicas_Implementação
Técnicas_ImplementaçãoTécnicas_Implementação
Técnicas_Implementação
 
Algoritmos - Aula 03 - Necessidade Do Uso da Logica
Algoritmos - Aula 03 - Necessidade Do Uso da LogicaAlgoritmos - Aula 03 - Necessidade Do Uso da Logica
Algoritmos - Aula 03 - Necessidade Do Uso da Logica
 

Mais de Tony Alexander Hild

Simplificação de expressões Booleanas utilizando mapas de Karnaugh
Simplificação de expressões Booleanas utilizando mapas de KarnaughSimplificação de expressões Booleanas utilizando mapas de Karnaugh
Simplificação de expressões Booleanas utilizando mapas de KarnaughTony Alexander Hild
 
Introdução aos Mapas de Karnaugh
Introdução aos Mapas de KarnaughIntrodução aos Mapas de Karnaugh
Introdução aos Mapas de KarnaughTony Alexander Hild
 
CEAD 2013 - Oficina 1: Ferramentas colaborativas e de comunicação WEB
CEAD 2013 - Oficina 1: Ferramentas colaborativas e de comunicação WEBCEAD 2013 - Oficina 1: Ferramentas colaborativas e de comunicação WEB
CEAD 2013 - Oficina 1: Ferramentas colaborativas e de comunicação WEBTony Alexander Hild
 
Introdução ao Desenvolvimento WEB
Introdução ao Desenvolvimento WEBIntrodução ao Desenvolvimento WEB
Introdução ao Desenvolvimento WEBTony Alexander Hild
 
Computação Gráfica - Transformações Geométricas no Plano e no Espaço
Computação Gráfica - Transformações Geométricas no Plano e no EspaçoComputação Gráfica - Transformações Geométricas no Plano e no Espaço
Computação Gráfica - Transformações Geométricas no Plano e no EspaçoTony Alexander Hild
 
Computação Gráfica - Introdução ao OpenGL
Computação Gráfica - Introdução ao OpenGLComputação Gráfica - Introdução ao OpenGL
Computação Gráfica - Introdução ao OpenGLTony Alexander Hild
 
Computação Gráfica - Artquitetura de Dispositivos Gráficos
Computação Gráfica - Artquitetura de Dispositivos GráficosComputação Gráfica - Artquitetura de Dispositivos Gráficos
Computação Gráfica - Artquitetura de Dispositivos GráficosTony Alexander Hild
 
Computação Gráfica - Informações Visuais Óculo-motoras
Computação Gráfica - Informações Visuais Óculo-motorasComputação Gráfica - Informações Visuais Óculo-motoras
Computação Gráfica - Informações Visuais Óculo-motorasTony Alexander Hild
 
Computação Gráfica - Percepção Tridimensional
Computação Gráfica - Percepção TridimensionalComputação Gráfica - Percepção Tridimensional
Computação Gráfica - Percepção TridimensionalTony Alexander Hild
 
Computação Gráfica - Introdução
Computação Gráfica - IntroduçãoComputação Gráfica - Introdução
Computação Gráfica - IntroduçãoTony Alexander Hild
 

Mais de Tony Alexander Hild (16)

Circuitos combinacionais
Circuitos combinacionaisCircuitos combinacionais
Circuitos combinacionais
 
Paradigma funcional
Paradigma funcionalParadigma funcional
Paradigma funcional
 
Circuitos sequenciais
Circuitos sequenciaisCircuitos sequenciais
Circuitos sequenciais
 
Circuitos Integrados Digitais
Circuitos Integrados DigitaisCircuitos Integrados Digitais
Circuitos Integrados Digitais
 
Paradigma Orientado a Objeto
Paradigma Orientado a ObjetoParadigma Orientado a Objeto
Paradigma Orientado a Objeto
 
Simplificação de expressões Booleanas utilizando mapas de Karnaugh
Simplificação de expressões Booleanas utilizando mapas de KarnaughSimplificação de expressões Booleanas utilizando mapas de Karnaugh
Simplificação de expressões Booleanas utilizando mapas de Karnaugh
 
Introdução aos Mapas de Karnaugh
Introdução aos Mapas de KarnaughIntrodução aos Mapas de Karnaugh
Introdução aos Mapas de Karnaugh
 
Álgebra Booleana
Álgebra BooleanaÁlgebra Booleana
Álgebra Booleana
 
CEAD 2013 - Oficina 1: Ferramentas colaborativas e de comunicação WEB
CEAD 2013 - Oficina 1: Ferramentas colaborativas e de comunicação WEBCEAD 2013 - Oficina 1: Ferramentas colaborativas e de comunicação WEB
CEAD 2013 - Oficina 1: Ferramentas colaborativas e de comunicação WEB
 
Introdução ao Desenvolvimento WEB
Introdução ao Desenvolvimento WEBIntrodução ao Desenvolvimento WEB
Introdução ao Desenvolvimento WEB
 
Computação Gráfica - Transformações Geométricas no Plano e no Espaço
Computação Gráfica - Transformações Geométricas no Plano e no EspaçoComputação Gráfica - Transformações Geométricas no Plano e no Espaço
Computação Gráfica - Transformações Geométricas no Plano e no Espaço
 
Computação Gráfica - Introdução ao OpenGL
Computação Gráfica - Introdução ao OpenGLComputação Gráfica - Introdução ao OpenGL
Computação Gráfica - Introdução ao OpenGL
 
Computação Gráfica - Artquitetura de Dispositivos Gráficos
Computação Gráfica - Artquitetura de Dispositivos GráficosComputação Gráfica - Artquitetura de Dispositivos Gráficos
Computação Gráfica - Artquitetura de Dispositivos Gráficos
 
Computação Gráfica - Informações Visuais Óculo-motoras
Computação Gráfica - Informações Visuais Óculo-motorasComputação Gráfica - Informações Visuais Óculo-motoras
Computação Gráfica - Informações Visuais Óculo-motoras
 
Computação Gráfica - Percepção Tridimensional
Computação Gráfica - Percepção TridimensionalComputação Gráfica - Percepção Tridimensional
Computação Gráfica - Percepção Tridimensional
 
Computação Gráfica - Introdução
Computação Gráfica - IntroduçãoComputação Gráfica - Introdução
Computação Gráfica - Introdução
 

Último

Construção (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãConstrução (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãIlda Bicacro
 
INTERVENÇÃO PARÁ - Formação de Professor
INTERVENÇÃO PARÁ - Formação de ProfessorINTERVENÇÃO PARÁ - Formação de Professor
INTERVENÇÃO PARÁ - Formação de ProfessorEdvanirCosta
 
apostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médioapostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médiorosenilrucks
 
Estudar, para quê? Ciência, para quê? Parte 1 e Parte 2
Estudar, para quê?  Ciência, para quê? Parte 1 e Parte 2Estudar, para quê?  Ciência, para quê? Parte 1 e Parte 2
Estudar, para quê? Ciência, para quê? Parte 1 e Parte 2Maria Teresa Thomaz
 
Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Ilda Bicacro
 
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdfPROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdfHELENO FAVACHO
 
BNCC Geografia.docx objeto de conhecimento
BNCC Geografia.docx objeto de conhecimentoBNCC Geografia.docx objeto de conhecimento
BNCC Geografia.docx objeto de conhecimentoGentil Eronides
 
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfLeloIurk1
 
Introdução a Caminhada do Interior......
Introdução a Caminhada do Interior......Introdução a Caminhada do Interior......
Introdução a Caminhada do Interior......suporte24hcamin
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...azulassessoria9
 
A QUATRO MÃOS - MARILDA CASTANHA . pdf
A QUATRO MÃOS  -  MARILDA CASTANHA . pdfA QUATRO MÃOS  -  MARILDA CASTANHA . pdf
A QUATRO MÃOS - MARILDA CASTANHA . pdfAna Lemos
 
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...IsabelPereira2010
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...azulassessoria9
 
Revolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividadesRevolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividadesFabianeMartins35
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...azulassessoria9
 
planejamento_estrategico_-_gestao_2021-2024_16015654.pdf
planejamento_estrategico_-_gestao_2021-2024_16015654.pdfplanejamento_estrategico_-_gestao_2021-2024_16015654.pdf
planejamento_estrategico_-_gestao_2021-2024_16015654.pdfmaurocesarpaesalmeid
 
Reta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdf
Reta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdfReta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdf
Reta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdfWagnerCamposCEA
 
Historia da Arte europeia e não só. .pdf
Historia da Arte europeia e não só. .pdfHistoria da Arte europeia e não só. .pdf
Historia da Arte europeia e não só. .pdfEmanuel Pio
 
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSOLeloIurk1
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...azulassessoria9
 

Último (20)

Construção (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãConstrução (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! Sertã
 
INTERVENÇÃO PARÁ - Formação de Professor
INTERVENÇÃO PARÁ - Formação de ProfessorINTERVENÇÃO PARÁ - Formação de Professor
INTERVENÇÃO PARÁ - Formação de Professor
 
apostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médioapostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médio
 
Estudar, para quê? Ciência, para quê? Parte 1 e Parte 2
Estudar, para quê?  Ciência, para quê? Parte 1 e Parte 2Estudar, para quê?  Ciência, para quê? Parte 1 e Parte 2
Estudar, para quê? Ciência, para quê? Parte 1 e Parte 2
 
Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!
 
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdfPROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
 
BNCC Geografia.docx objeto de conhecimento
BNCC Geografia.docx objeto de conhecimentoBNCC Geografia.docx objeto de conhecimento
BNCC Geografia.docx objeto de conhecimento
 
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
 
Introdução a Caminhada do Interior......
Introdução a Caminhada do Interior......Introdução a Caminhada do Interior......
Introdução a Caminhada do Interior......
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
 
A QUATRO MÃOS - MARILDA CASTANHA . pdf
A QUATRO MÃOS  -  MARILDA CASTANHA . pdfA QUATRO MÃOS  -  MARILDA CASTANHA . pdf
A QUATRO MÃOS - MARILDA CASTANHA . pdf
 
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
 
Revolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividadesRevolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividades
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
 
planejamento_estrategico_-_gestao_2021-2024_16015654.pdf
planejamento_estrategico_-_gestao_2021-2024_16015654.pdfplanejamento_estrategico_-_gestao_2021-2024_16015654.pdf
planejamento_estrategico_-_gestao_2021-2024_16015654.pdf
 
Reta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdf
Reta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdfReta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdf
Reta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdf
 
Historia da Arte europeia e não só. .pdf
Historia da Arte europeia e não só. .pdfHistoria da Arte europeia e não só. .pdf
Historia da Arte europeia e não só. .pdf
 
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
 

Introdução ao Paradigma Imperativo

  • 1. Introdução ao Paradigma Imperativo Prof. Tony Alexander Hild Paradigmas de Linguagem de Programação – 3 CC – Unicentro – 2013
  • 2. 2 Definição da paradigmaDefinição da paradigma pa·ra·dig·ma (grego parádeigma, -atos) substantivo masculino 1. Algo que serve de exemplo geral ou de modelo. = PADRÃO 2. [Gramática]  Conjunto das formas que servem de modelo de derivação ou de flexão. = PADRÃO 3. [Linguística]  Conjunto dos termos ou elementos que podem ocorrer na mesma posição ou contexto de uma estrutura. "paradigma", in Dicionário Priberam da Língua Portuguesa [em linha], 2008- 2013, http://www.priberam.pt/dlpo/paradigma [consultado em 27-09-2013].
  • 3. 3 Definição de imperativoDefinição de imperativo im·pe·ra·ti·vo adjetivo 1. Que impera ou manda. 2. Autoritário, arrogante. substantivo masculino 3. [Gramática]  Modo do verbo que exprime ordem, exortação ou pedido. 4. Princípio que tem o caráter de obrigação imperiosa. "imperativo", in Dicionário Priberam da Língua Portuguesa [em linha], 2008- 2013, http://www.priberam.pt/dlpo/imperativo [consultado em 27-09-2013].
  • 4. 4 Relembrando a história...Relembrando a história... ● John von Neumann: – Primeira pessoa a documentar os conceitos básicos de computadores de programas armazenados; – Famoso matemático húngaro que foi para os EUA em 1930 e interessou-se por computadores enquanto participava no desenvolvimento da bomba de hidrogênio.
  • 5. 5 O computador “von Neumann”O computador “von Neumann” ● Uma unidade de memória: é capaz de armazenar dados e instruções: – Acesso aleatório; ● Internamente, os dados e as instruções são armazenadas no mesmo espaço de endereço e são indistinguíveis; ● Uma unidade de cálculo (ALU); ● Uma unidade de controle (CPU); – Programa armazenado → conjunto de instruções; ● Dualidade entre instruções e dados → programas podem automodificar-se; ● von Neumann delineou essa estrutura em um documento conhecido como o “First Draft of a Report on the EDVAC” de junho de 1945.
  • 6. 6 O computador “von Neumann”O computador “von Neumann”
  • 7. 7 ● Alan Turing: um matemático britânico e um dos primeiros cientistas da computação; ● Uma linguagem é Turing completa se puder ser utilizada para implementar qualquer algoritmo; ● Muito importante para o estudo da computabilidade. Completude de TuringCompletude de Turing
  • 8. 8 O que torna uma linguagemO que torna uma linguagem imperativa?imperativa? ● Programas escritos em linguagens de programação imperativas consistem em: – Um estado do programa; – Instruções que alteram o estado do programa. ● Instruções do programa são "imperativas", no sentido gramatical dos verbos imperativos que expressam um comando. Primeiro faça isto, depois faça aquilo.
  • 9. 9 ● Primeiras linguagens imperativas: linguagens de montagem (assembly); ● 1954-1955: Fortran (FORmula TRANslator): – John Backus desenvolvido para IBM 704. ● Final de 1950: Algol (ALGOrithmic Language); ● 1958: Cobol (Common Business Oriented Language), desenvolvido por uma comissão do governo, Grace Hopper muito influente. História das Linguagens ImperativasHistória das Linguagens Imperativas
  • 10. 10 Elementos das linguagens imperativasElementos das linguagens imperativas ● Definições de tipo de dados; ● Declarações de variáveis: – São normalmente "tipadas" estaticamente ou dinamicamente: ● Tipos básicos de dados (e.g., int, float, boolean, char); ● Tipos de dados compostos (structs, arrays). ● Expressões e declarações de atribuição; ● Declarações de controle de fluxo (geralmente estruturados); – Desvios condicionais, laços; – As declarações são comandos e sua ordem é fundamental para a execução correta; ● Escopos lexicais e blocos: – Objetivo: proporcionar localidade de referência. ● Declarações e definições de procedimentos e funções (isto é, blocos parametrizados); ● Manipulação de erros e exceções; ● Comandos de E/S; ● Estruturas de dados.
  • 11. 11 Características das linguagensCaracterísticas das linguagens imperativasimperativas ● São Turing completas se suportarem inteiros, operadores aritméticos básicos, atribuições, sequenciamento, laços e desvios condicioanis; ● O estado do programa é mantido em variáveis associadas à localizações de memória: – 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; – a = 1; – &a = 1; ● Uma 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; – print(a) => 1; – a = 2; dependência de ordem – print(a) => 2;
  • 12. 12 Características das linguagensCaracterísticas das linguagens imperativasimperativas ● Repetição ou laço ou loop: – Usada extensivamente para processar valores ou acumular um valor em uma variável específica; ou – Usada para varrer uma sequência de localizações de memória tal como vetores. ● Funções: – Algoritmos que especificam como processar um intervalo de valores, a partir de um valor de domínio, com uma série de passos prescritos; ● Comandos: – Semelhantes às instruções de máquina nativas de um hardware de computador tradicional - o modelo de von Neumann-Eckley; ● 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; ● Usa-se abstração procedural e refinamento gradual para melhorar um programa imperativo.
  • 13. 13 Gráfico de fluxoGráfico de fluxo ● Usado para modelar programas imperativos; ● Com base nas três declarações de controle que são essenciais para se obter toda a capacidade de uma máquina de Turing; ● Precursor da UML e outras técnicas modernas; ● Criado para descrever fluxos de processos em geral.
  • 14. 14 Abstração ProceduralAbstração Procedural ● Nicholas Wirth descreveu programas (imperativos) como "algoritmos + estruturas de dados"; ● Algoritmos tornam-se programas através do processo de abstração procedural e refinamento gradual; ● Bibliotecas de funções reutilizáveis facilitam este processo (funções = procedimentos); ● Programação imperativa + procedimentos = programação procedural.
  • 15. 15 ● A abstração procedural permite que o programador se preocupe principalmente com as interfaces entre as funções (procedimentos) e o que elas calculam, ignorando os detalhes de como o cálculo é realizado; ● Abstração permite pensar sobre o que está sendo feito, e não como é implementado. Abstração ProceduralAbstração Procedural
  • 16. 16 Refinamento gradual (passo aRefinamento gradual (passo a passo)passo) ● Refinamento gradual (também chamado de decomposição funcional) utiliza abstração procedural para desenvolver um algoritmo a partir de sua forma mais geral, (a abstração) para sua implementação específica (método top-down); ● Os programadores começam com a descrição do que o programa deve fazer, incluindo E/S, e repetidamente quebram o problema em partes menores, até que os subproblemas possam ser expressados em termos dos estados primitivos e dos tipos de dados da linguagem.
  • 17. 17 ● Uma abordagem disciplinada para projetos de programas imperativos; ● Usa abstração procedural e projeto top-down para identificar os componentes do programa (também chamados de módulos ou estruturas); ● Estruturas do programa combinadas em um número limitado de formas, de modo que a compreensão de como funciona cada estrutura significa entender como funciona o programa; ● O fluxo de controle do programa é baseado em decisões, sequências, laços, mas... – Não usa instruções goto. ● Os módulos são desenvolvidos, testados separadamente e depois integradas no conjunto do programa. Programação EstruturadaProgramação Estruturada
  • 19. 19 AtribuiçõesAtribuições ● Lembre-se: linguagens imperativas operam alterando o estado do programa. Isso é feito usando comandos de atribuição destrutivos. ● Formato geral: – destino = expressão ● Operadores de atribuição: = ou := ● Baseado em operações de máquina, tais como MOV ou STO.
  • 20. 20 Semântica de AtribuiçãoSemântica de Atribuição ● Avalia a expressão para obter um único valor; ● Copia o valor da expressão para o destino; ● Programas imperativos puros implementam a semântica de cópia (em oposição à semântica de referência utilizadas em linguagens orientadas a objetos).
  • 21. 21 ExpressõesExpressões ● Expressões representam um valor e têm um tipo; ● Compreender as expressões significa entender a precedência do operador, sobrecarga de operadores, casting e conversão de tipo, entre outras questões; ● Expressões aritméticas simples são baseados em operadores aritméticos (DIV, MUL, etc) de linguagem de máquina (LM).
  • 22. 22 ExpressõesExpressões ● Os operadores lógicos são baseadas em instruções de LM semelhantes (AND, XOR, …); ● LM suporta tipos de dados indiretamente através de diferentes instruções: – add/sub/mul/div de inteiros vs – add/sub/mul/div de ponto flutuante, por exemplo. ● Internamente, não há maneira visível para distinguir inteiros de ponto flutuantes de caracteres; ● Línguagens a partir do Fortran fornecem alguma proteção contra erros de tipo, e alguma capacidade para definir novos tipos.
  • 23. 23 Linguagens Imperativas X DeclarativasLinguagens Imperativas X Declarativas ● Linguagens imperativas (Java, Pascal, C/C++, C#): – Especificam uma sequência de operações para o computador executar. ● Linguagens declarativas (SQL, Haskell, Prolog) – Descrevem o espaço de soluções; – Fornecem o conhecimento necessário para chegar lá; – Não descrevem os passos necessários para chegar lá. – Linguagens funcionais e linguagens lógicas são declarativas.
  • 24. 24 Vantagens e DesvantagensVantagens e Desvantagens ● 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).
  • 29. 29 CC