Buscar

PARADIGMAS DE ANÁLISE E DESENVOLVIMENTOS - AULA 01

Prévia do material em texto

PARADIGMAS DE ANÁLISE E DESENVOLVIMENTOS
Aula 01
Abordagem Inicial
Nesta aula, você irá:
Reconhecer a importância das linguagens de programação no contexto de desenvolvimento de software.
Conhecer os conceitos e os principais paradigmas de Linguagens de Programação.
Conhecer os conceitos e os principais metodologias e técnicas de programação.
Saber relacionar as atividades de programação com atividades de análise de sistemas.
Entender a tênue relação entre os paradigmas de Linguagens de Programação, de programação e de Análise de Sistemas.
Por que linguagens de programação?
	As linguagens de programação exercem um papel preponderante no processo de desenvolvimento de software, pois possibilitam aos profissionais da área o exercício de  uma atividade fundamental: a programação. Ou seja, as linguagens de programação permitem a escrita dos programas, que serão integrados para compor o software. 
Os principais objetivos de uma linguagem de programação são:
Tornar mais produtivo o trabalho dos programadores, ou seja, desenvolver e manter softwares.
Propiciar ao programador desenvolver o software atendendo a padrões de qualidade pré-estabelecidos, sendo que as principais propriedades desejadas de um software são: confiabilidade, manutebilidade (capacidade de ser mantido) e eficiência. 
Propiciar ao programador escrever programas que atendam as expetativas e requisitos de seus usuários.
Linguagens de programação
Temos, hoje em dia, um vasto universo de linguagens de programação, que atendem a diferentes propósitos, ou seja, a diferentes tipos de problemas demandados para o desenvolvimento de sistemas. Surge então a dúvida: qual linguagem de programação deve ser usada no novo projeto?
A tendência, na prática, é que as empresas usem a linguagem com que seus programadores tenham experiência e, preferencialmente, possuam uma vasta biblioteca de rotinas e funções desenvolvidas, o que vai, certamente, agilizar o desenvolvimento. Quanto mais experiência um programador tiver no uso de uma linguagem de programação, com mais eficiência ele poderá atuar na programação de um software, maximizando os recursos da linguagem em prol de uma boa solução computacional.
À partir da década de 90 (noventa) muitas linguagens de programação passaram a ser de propósito geral (podendo ser usadas na maior dos problemas e vêm logrando êxito). Mas nem sempre é possível, ou seja, alguns sistemas vão requerer linguagens com características específicas para que possam ser confiáveis, manutíveis e eficientes. Ou seja, o tipo de problema a ser resolvido e consequentemente o tipo de sistema a ser desenvolvido influenciam na escolha da linguagem de programação a ser usada.
Por exemplo, o desenvolvimento de um Sistema Especialista, do ramo da IA (Inteligência Artificial), requer uma linguagem que possibilite a implementação da lógica de predicados e de um motor de inferência, o que não é viável usando linguagens de programação que, tipicamente, resolvem problemas comerciais das empresas, como por exemplo, contas a pagar, contas a receber e fluxo de caixa.
A linguagem de programação é fundamental dentro do contexto do desenvolvimento de software. Programadores devem conhecer cada vez mais as linguagens com as quais trabalhem. 
Vejamos os principais motivos:
Maior capacidade em desenvolver soluções para os problemas. Se os programadores tiverem uma maior compreensão e habilidade com a linguagem, seus elementos e sus comandos, terão mais facilidade ao darem as soluções computacionais para determinados problemas e terão mais habilidade em como pensar e resolver problemas. 
Maior habilidade ao usar uma linguagem de programação. O fato do programador conhecer a fundo as características da linguagem lhe confere a capacidade de escrever programas mais eficientes, do ponto de vista técnico.
Maior capacidade para escolher as linguagens mais apropriadas ao respectivo projeto, através de maior entendimento dos recursos e da forma de implementá-los na linguagem de programação. 
Maior habilidade para aprender novas linguagens de programação. Por exemplo o programador que conhece bem a linguagem C (e C++) tem mais facilidade para aprender JAVA (e C#). 
Ou seja, quanto mais conhecermos as propriedades das linguagens de programação, maior será a possibilidade de escrevermos programas com eficiência. 
A influência das linguagens de programação nas metodologias e técnicas de programação
	Nas décadas de 40 e 50, nos primórdios da computação, a linguagem dominante era a binária (composta por sequência de 1’s e 0’s) ou de linguagem máquina e a programação era feita pensando em como determinado processador funcionava. O tipo de problema que a computação se destinava a resolver era simples e limita-se a cálculos complexos, não demandando nenhuma técnica de programação. O programa era uma sequência de conjunto de bits, conforme o tamanho da palavra do processador. E cada sequência de bits representava uma instrução do programa.
Cada processador tem seu respectivo conjunto de instruções, que representa o chamado Set de Instruções do Processador.
No quadro, abaixo, temos um exemplo de uma instrução em código de maquina escrita em hexadecimal, de forma a diminuir a quantidade de dígitos.
Veja o exemplo de um programa em código máquina: 
A1 01 10 03 06 01 12 A3 01 14 
Trata-se da representação hexadecimal de um programa que soma os valores de duas casas da memória e armazena o resultado em uma terceira casa. É óbvio que este tipo de escrita é dificilmente legível por nós, humanos. 
Um pouco da história das linguagens de programação
Na década de 50, com o intuito de facilitar a vida do programador, minimizando seu esforço e fazê-lo abstrair-se do endereçamento direto de memória e da combinação de bits, surgiam as primeiras linguagens de montagem (assembly), onde as operações realizadas pelo processador eram representadas por mnemônicos como ADD (Adicione), SUB (Subtraia), MOV (carrega valores para o registrador) e etc.
É importante ressaltar que cada processador tinha seu respectivo conjunto de instruções em linguagem de montagem, na relação de 1 para 1 para o conjunto de instruções do processador em linguagem de máquina (set de instruções do processador).
A tabela 2, abaixo, mostra que em linguagem de montagem toda instrução tem uma notação simbólica associada (fornecida pelo fabricante do processador).
Instrução em código de máquina
	Hexadecimal
	Instrução em linguagem de montagem
	Comentários sobre a instrução
	 A1 01 10
	MOV AX, [0110] 
	Copiar o conteúdo de 0110 no registro AX
	03 06 01 12
	ADD AX, [0112]
	Adicionar o conteúdo de 0112 à AX e por o resultado no AX
	A3 01 14
	 MOV [0114], AX
	Armazenar AX no endereço da memória 0114
Tabela 2: exemplo de programa em linguagem de montagem
Inicialmente, tal qual na linguagem de máquina o tipo de problema a ser resolvido era simples, geralmente numérico e não existia técnica de programação. Porém a necessidade de programação crescia e os programas também, assim as linguagens de montagem mais avançada criaram o conceito de macro, que pode-se dizer foi a base da criação da técnica da programação modular. Um macro é um trecho de código (módulo) que se repete ao longo de um programa, que era escrito uma única vez e chamado sempre que necessário.
Abaixo, a figura 1 (Exemplo de código assembly com macro) mostra 2 colunas a primeira com o código sem macro e a segundo com o código com a macro de nome
�
CHANGE. Perceba que o código é o mesmo alterando apenas o conteudo (P,Q,R,S) que vai ser armazendo nos registradores (EAX e EBX). A macro change usa parâmetros (P1 e P2) e é chamada 2 vezes, para realizar as trocas de conteúdos desejados).
Figura 1: exemplo de código Assembly com Macro
Na final da década de 50 e início da década de 60 surgem as primeiras linguagens de alto nível, que são assim chamadas pela sintaxe dos comandos que são bem próximas alinguagem humana (no inglês, no caso). A primeira linguagem dessa geração de linguagens, que seria a 3a. Geração (1a. Geração, a linguagem de máquina e 2a geração, a linguagem assembly) foi o Fortran, desenvolvida inicialmente para computadores IBM, destinada a aplicações numérico-científicas (poucos dados e muita computação). Não focava a eficiência dos programas na medida em que as estruturas de controle eram todas focadas em GOTO (desvio incondicional), que são a implementação das macros nas linguagens de 3a. Geração. 
Nesse estado da arte, começa a surgir a idéia de programação modular, ou seja criação de sub-rotinas para parte de programas que se repetem, mas a programação com desvios dificultava a leitura e manutenção dos códigos dos programas
A tabela 3, abaixo, mostra o exemplo de um programa em Basic, uma linguagem de programação das décadas 60/70, usando desvio incondicional (GOTO), uma forma de simular repetições.
10 REM RESOLVE EQUACAO DO SEGUNDO GRAU
20 READ A,B,C
30 IF A=0 THEN GOTO 410
40 LET D=B*B-4*A*C
50 IF D<0 THEN GOTO 430
60 PRINT "SOLUCAO"
70 IF D=0 THEN GOTO 100
80 PRINT "PRIMEIRA SOLUCAO",(-B+SQR(D))/(2*A) 
90 PRINT "SEGUNDA SOLUCAO",(-B-SQR(D))/(2*A) 
100 GOTO 20
200 PRINT "SOLUCAO UNICA",(-B)/(2*A)
300 GOTO 20
400 PRINT "A DEVE SER DIFERENTE DE ZERO"
410 GOTO 20
420 PRINT "NAO HA SOLUCOES REAIS"
430 GOTO 20
490 DATA 10,20,1241,123,22,-1
500 END
Tabela 3: exemplo de programa em basic, usando GOTO
No início da década de 70 iniciou-se o movimento de técnica de programação estruturada, na tentativa de tornar os códigos dos programas mais legíveis. A essa altura os programas eram lotados de instruções de desvio incondicional (os chamados GOTO), que tiravam a seqüência lógica das instruções do programa e tornavam a leitura e conseqüente entendimento do programa em algo muito difícil. Nessa época as linguagens de programação eram pobres em estruturas de controle (decisão e repetição) e não verificavam consistência de tipos, onde destacavam-se na época: Fortran, Basic e Cobol (as mais usadas).
Em 1971 foi criada por Niklaus Wirth a linguagem Pascal, para fins acadêmicos de ensino da programação estruturada. Seu pequeno número de comandos básicos pode ser combinado de forma a torna-la mais poderosa, mas sem perder a clareza lógica de suas construções. O uso de subprogramas permite a técnica de refinamentos sucessivos (metodologia top-down) conseguindo hierarquia na estrutura do programa.
Além da técnica de refinamentos sucessivos, a programação estruturada caracteriza-se pela construção de programas com 3 estruturas básicas de controle: sequencia, decisão e repetição (iteração).
A tabela 4, abaixo, mostra um programa em Pascal que representa a linguagem clássica, onde predominava a técnica de programação estruturada.
program Soma_Pares;
 uses crt;
 var
 superior, soma, num: integer;
 begin
 soma:=0;
 write ('Entre com o limite superior');
 readln (superior);
 num:=2;
 repeat
 soma:=soma+num;
 num:=num+2;
 until (num > superior);
writeln('A soma dos números pares de 2 até ', superior,' é ', soma);
readln; end.
Tabela 4: exemplo de programa em Pascal – Programação estruturada
Durante os anos 80 houve um rápido crescimento do uso de computadores pessoais, em função do barateamento do hardware. Surge a fábrica de software e com ela a necessidade de produzir e atualizar software com mais rapidez, pois a demanda é grande. Assim sendo a reutilização de código, que já vinha sendo perseguida pela técnica de programação estruturada, passa a ser um conceito central para a produtividade no desenvolvimento de software. 
Na mesma época, iniciou-se as mudanças das metodologias de projeto de programas orientadas para o processo, para orientadas a dados, o que precisou que as linguagens implementassem os tipos abstratos de dados (TADs). 
Inicia-se então a programação orientada a objeto, que teve inicio com a abstração de dados, a qual encapsula o processamento com objeto de dados oculta o acesso a eles e adiciona herança e vinculação dinâmica de tipos.
O conceito de paradigma
Consultando o Minidicionário Aurélio,  7ª edição, temos a seguinte descrição para o vocábulo paradigma: sm (substantivo masculino). Modelo, padrão.
O Dicionário Didático SM (Ensino fundamental) define o termo paradigma como: substantivo masculino. Modelo ou exemplo. 
O ministro propôs um novo paradigma nacional de transporte, mais urbano e adequado ao meio ambiente. 
Trazendo a idéia para o contexto das linguagens de programação, temos que:
paradigma é o conjunto de características que servem para categorizar um grupo de linguagens com características semelhantes e que apoiem o desenvolvimento de sistemas com determinadas características. 
Ou seja um paradigma agrupa linguagens com características semelhantes, que são usadas para o desenvolvimento de sistemas que aproveitem essas características
Por que entender os paradigmas das linguagens de programação
O entendimento das características das categorias de linguagens é fundamental para entender o estado da arte e compreender o que cada linguagem pode prover e para que tipos de problemas devemos usar cada uma.
Os paradigmas de linguagens de programação 
Existem muitas classificações de paradigmas sendo a mais comum a que divide nos paradigmas Imperativo, Funcional, Lógico e Orientado a Objetos, conforme ilustrado pela figura 3 (Paradigmas de Linguagem de programação), abaixo.
�
Classificações de paradigmas de linguagens de programação
Paradigma Imperativo Ou Procedural
Visão:
 “ O computador é uma calculadora programável”
A maioria das linguagens, de alto nível, existentes até a década de 80 seguiam o paradigma imperativo, caracterizado basicamente por seguir as características da arquitetura de Von Neumann , que tem formado a base para o projeto de muitas linguagens de programação. Tais linguagens têm um forte compromisso com a eficiência.
A Arquitetura de von Neumann - de John von Neumann - é uma arquitetura de computador que 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.
As LPs incluídas nesse paradigma especificam como a computação é realizada por uma sequencia de alterações no estado da memória do computador. 
Os conceitos fundamentais são: 
Variável, valor e atribuição, ou seja o tempo todo atribui-se valor a variáveis.
Essa classe de LPs é caracterizada pelo desenvolvimento do programa através de refinamentos sucessivos (top down), incentivando a organização do programa em subprogramas (partes), construídos com 3 tipos de processamento: 
sequencial, condicional e iterativo (repetitivo). 
Ou seja o paradigma imperativo esta intimamente relacionado com as técnicas e linguagens estruturadas.
Esta classe de linguagens contendo membros tão díspares como FORTRAN, COBOL, PASCAL, CLU e ADA, deve seu nome ao papel dominante desempenhado pelos comandos ou instruções iterativas. Nestas linguagens a unidade de trabalho é o comando. Os efeitos de comandos individuais são combinados para a obtenção dos resultados desejados em um programa.
Com forte influência da arquitetura de Von Neumann , 3 características permeiam tal classe de linguagens :
Variáveis – a memória é um componente vital de tal arquitetura sistêmica, sendo composta por um conjunto de unidades, denominadas células, onde os dados ficam armazenados. Para acessar tais dados na memória necessitamos saber o endereço de cada célula. Como programar, referenciando os endereços físicos de memória é uma tarefa extremamente complexa, as linguagens de programação dispuseram aos programadores o conceito de variável, permitindo a eles abstraírem-se do conhecimento de que dado estaria armazenado emque célula (com endereço específico) de memória. Assim uma variável é em última análise, uma célula de memória, onde se armazenam dados, e que possuem um nome (identificador).
Operação de Atribuição – cada dado que precisa ser processado deve estar previamente armazenado na memória, isto é seu valor deve ser atribuído a uma célula de memória. O comando de atribuição tem alto grau de importância nas linguagens imperativas, forçando ao programador a um estilo de pensamento que é moldado pela arquitetura de Von Neumann. 
Repetição (iteração) – um programa, nesta classe de linguagens, geralmente cumpre seu objetivo, executando repetidamente uma seqüência de passos (comandos) elementares. Isto é uma conseqüência da arquitetura de Von Neumann, posto que as instruções também precisam estar previamente armazenadas na memória antes de sua execução. A única maneira de fazer algo mais complexo é repetindo uma seqüência de instruções.
As linguagens imperativas permitem descrever a resolução de problemas através de uma série de tarefas elementares (comandos) que o computador pode executar. A seqüência de comandos define o procedimento.
A fim de ilustrar a interação destas características e seus efeitos, consideremos o programa abaixo, escrito em PASCAL, que mostra os números primos compreendidos entre 2 e Num, sendo Num um valor lido do dispositivo de entrada DEFAULT (teclado).
Program Primo;
Var Num,I,J : Integer; Primo : Boolean;
Begin
Readln (Num);
For I:=2 to Num do
Begin
J:=2; Primo:=True;
While (Primo) and (J <= I div 2) do
If (I mod J) <> 0 Then J:=J+1
Else Primo:=False;
If Primo Then writeln (´O número ´, I , ´e primo´)
End;
End.
Considerações sobre o programa :
Baseia-se em duas malhas de repetição, uma dentro da outra. A repetição mais externa(For I:=1 to Num) percorre os valores no intervalo de interesse 3 (2 a Num), ao passo que a mais interna (While...) testa cada um destes números quanto a ser primo ou não.
A malha mais interna depende – de maneira não tão simples – da malha mais externa.
A malha mais externa também depende – na instrução If Primo Then..... – da atribuição feita na malha mais interna (primo:=false).
O programa não é hierárquico no sentido de cada componente ser composto de outros componentes (de nível mais baixo). Ao contrário cada componente usa efeito dos outros.
Um componente é usado não para produzir (calcular) um valor, mas para produzir um efeito, especificamente o efeito de atribuir valores a variáveis. 
As estruturas de controle são usadas para ordenar as instruções de maneira que os efeitos combinados atinjam o fim desejado
	Vantegens das LPs Imperativas
	Desvantagens das LPs Imperativas
	Os programas tendem a ser eficientes, pois essas LPs simulam o funcionamento da arquitetura do hardware
	Dificulta a escrita de programas complexos, pelas características das linguagens no que se refere a seguir a Maquina de Von Neumann.
	
	Inadequado a computação em paralelo
	
	Dificuldade em corrigir programas, já que essa atividade decorre da dependência do conteúdo de cada célula de memória.
Requer acompanhamento passo a passo do estado de cada variável.
Paradigma Orientado a Objetos 
Na medida em que os programas tornam-se maiores e mais complexos, cresce a dificuldade não só em desenvolvê-los, mas sobretudo mantê-los ao longo do tempo. As LPs desse paradigma oferecem recursos para tornar o desenvolvimento de software mais rápido e confiável.
A diferença básica entre as LPs desse paradigma e das LPs do paradigma estruturado é que enquanto essas focam nas abstrações de controle de execução dos programas, aquelas estão fundamentadas nas abstrações de dados 
Classes, nesse paradigma, são abstrações que definem uma estrutura de dados e um conjunto de operações, os chamados métodos, que podem ser realizadas sobre elas.
Na implementação dos métodos das classes são usados os conceitos do paradigma estruturado, daí dizermos que o paradigma OO é uma evolução do paradigma estruturado.
Uma linguagem é dita orientada à objetos quando ela dá suporte lingüístico para objetos, e requer que estes objetos sejam instâncias de classes e um mecanismo de herança deve ser permitido.
Linguagens Orientada a Objetos = Objetos + Classes + herança
Podemos identificar similaridades entre o paradigma imperativo (ou procedural) com o paradigma da orientação a objetos. A Tabela abaixo , traça um paralelo entre estas abordagens.
	Paradigma Imperativo
	Paradigma de Objetos
	Tipos de dados
	Classes / Tipos abstratos de dados
	Variável
	Objeto / Instância
	Função / Procedimento
	Operação / Serviços
	Chamada de procedimento / função
	Envio de mensagens
Paradigma Concorrente
O paradigma concorrente engloba LPs que oferecem recursos para o desenvolvimento de sistemas concorrentes, cada vez mais usados. A programação concorrente existe quando vários processos executam simultaneamente e concorrem por recursos, o que pode acontecer quando há uma ou mais unidades de processamento.
As principais linguagens para essa finalidade são: ADA e JAVA.
Paradigma Declarativo
Em contrates com o paradigma interativo, onde os programas especificam exatamente como o computador deve realizar a tarefa, nesse paradigma declara-se (descrição) o que é a tarefa, de forma abstrata.
Essas LPs especificam as relações ou funções, não tendo atribuição de valores a posições de memória. As variáveis são incógnitas e não células de memória. 
O paradigma declarativo é subdividido em: Paradigma funcional e lógico, que são abaixo descritos.
Paradigma Funcional
Visão : “ O computador calcula funções matemáticas complexasl”
O paradigma funcional contemplam linguagens que basicamente operam funções ou seja recebem um conjunto de valores e retornam um valor, como resposta ao problema. Exemplos dessas LPs são: LISP e HASKELL.
O paradigma funcional focaliza o processo de resolução de problemas. A visão funcional resulta num programa que descreve as operações que devem ser efetuadas para resolver o problema. O programa é uma função, ou grupo de funções composto por funções simples. A relação entre as funções é simples : uma função pode chamar outra, ou o resultado de uma função pode ser utilizado como argumento para outra função. 
A tendência são programas menores, com menos código, nas linguagens funcionais.
Exemplo: Considere a seguinte função para calcular o fatorial de um número, dada em uma linguagem imperativa C.
Int Fatorial (int n)
{
Int Fat=1;
While (n > 0)
{
fat=fat*n
n—
}
return fat
}
Podemos usar a mesma função sem utilizar a variável local fat para armazenar os 
valores. Para tal faremos uso da recursividade:
Int Fatorial (int n, inf f)
{
If (n > 0)
Factorial (n-1,f*n)
Else
Return f;
}
Se quisermos calcular o fatorial de 5, basta chamar Fatorial (5,1).6
A linguagem funcional mais conhecida é LISP, muito usada na área de Inteligência Artificial (especificamente para a construção de sistemas especialistas, processamento de linguagem natural e representação do conhecimento), devido a facilidade de interpretação recursiva.
A linguagem APL embora tenha comando de atribuição (por atender ao paradigma imperativo) também é considerada uma linguagem funcional e pode ser usada para vários tipos de aplicações, desde controle de hardware e dispositivos até sistemas de informação gerencial.
Paradigma Lógico
Visão : “ O computador entende a lógica formal (fatos e regras)”
A mais conhecida linguagem desse paradigma chama-se Prolog e como as demais LPs desse grupo estão baseadas em um conjunto de predicados. Um predicado define uma relação entre constantes ou variáveis.
No paradigma lógico, os programas são declarativos: declara-se os resultados e não os procedimentos e à partir daí o programa encontra o caminho.
O paradigma lógico está relacionado à perspectivada pessoa: ele encara o problema de uma perspectiva lógica. Um programa lógico é equivalente à descrição do problema expresso de maneira formal, similar à maneira como o ser humano raciocina sobre ele : de posse de vários fatos, derivam-se conclusões e novos fatos. Assim quando uma questão é formulada, um mecanismo de inferência tenta deduzir novos fatos a partir dos existentes para verificar a veracidade da questão.
A principal característica do paradigma lógico é que a execução dos programas corresponde a um processo de dedução automática.
A linguagem lógica mais conhecida é PROLOG. 
Tal paradigma é bastante utilizado na construção de linguagens de acesso a banco de dados, sistemas especialistas (IA), tutores inteligentes e etc.
Nesta aula, você: 
A importância das linguagens de programação no contexto de desenvolvimento de software.
Os conceitos e os principais paradigmas de Linguagens de Programação.
Os conceitos e as principais metodologias e técnicas de programação.
A relacionar as atividades de programação com atividades de análise de sistemas.
Sobre a tênue relação entre os paradigmas de Linguagens de Programação, de programação e de Análise de Sistemas.
Registro de Participação
1.Um paradigma de programação fornece e determina a visão que o programador possui sobre a estruturação e execução do programa. Por exemplo, em programação orientada a objetos, programadores podem abstrair um programa como uma coleção de objetos que interagem entre si, enquanto em programação funcional os programadores abstraem o programa como uma sequência de funções. Portanto, surge a necessidade de estudar diferentes paradigmas de programação de virtude de:
Habilidade maior de projetar novas linguagens.
Introdução de programas de inclusão social.
Aumenta-se a habilidade de aprender novas linguagens.
Maior capacidade em desenvolver soluções computacionais.
Com base na análise das assertivas apresentadas, assinale a ÚNICA alternativa CORRETA.
 1) Apenas I, III e IV corretas 
 2) Apenas I, II e III corretas 
 3) Apenas I, II e IV corretas 
 4) Apenas II, III e IV corretas 
 5) Apenas II e IV corretas 
2.Um paradigma é uma forma de abordar um problema. No paradigma da orientação a objetos, há um elemento, uma entidade autônoma que contém seus próprios dados que são manipulados pelos processos definidos para o objeto que interage com outros objetos para alcançar um determinado objetivo.  
O paradigma da orientação a objetos visualiza um sistema de software como: 
uma coleção de objetos interconectados.
Cada objeto é responsável por realizar tarefas específicas.
O sistema deve ser descrito a partir de suas funções mais amplas (funcional e não OO). 
Com base na análise das assertivas abaixo, assinale a alternativa CORRETA.
 1) Apenas I e II corretas 
 2) Apenas I correta 
 3) Apenas I correta 
 4) Apenas III correta 
 5) Apenas I e III corretas 
 
3.Com relação aos diversos paradigmas de linguagens estudados, analise as assertivas abaixo 
No paradigma lógico há predomínio do uso de funções (FUNCIONAL e não lógico)
No paradigma concorrente as linguagens oferecem recursos para os programas executarem simultaneamente e concorrerem aos recursos.
No paradigma lógico declaram-se os resultados e não os procedimentos
O paradigma OO, utiliza conceitos do paradigma imperativo na medida em que a programação dos métodos das classes é feira usando seus conceitos. 
Com base na análise das assertivas abaixo, assinale a alternativa CORRETA.
 1) Apenas II, III e IV corretas 
 2) Apenas II e III estão corretas 
 3) Apenas I, III e IV estão corretas 
 4) Apenas II e IV corretas 
 5) Apenas I e III estão corretas. 
 
4.A técnica de programação estruturada, caracterizada pela programação que se valia de 3 estruturas de comandos: sequencial, decisão e iteração, além de uso da técnica de refinamento sucessivos (top-down), surgia na época do paradigma:
	 1) Imperativo 
	4) Lógico
	 2) Orientado a objeto 
	5) Concorrente
	 3) Funcional 
	
�
Ilustração representando a "Arquitetura de von Neumann"
Neumann, à época de � HYPERLINK "http://pt.wikipedia.org/wiki/Laborat%C3%B3rio_Nacional_de_Los_Alamos" ��Los Alamos� (ca. 1943-1945)
 PARADIGMAS DE ANÁLISE E DESENVOLVIMENTOS � PAGE �1�
 PARADIGMAS DE ANÁLISE E DESENVOLVIMENTOS � PAGE �1�

Continue navegando