A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Paradigmas de Programação. Paradigma de Programação Um paradigma de programação fornece e determina a visão que o programador possui sobre a estruturação.

Apresentações semelhantes


Apresentação em tema: "Paradigmas de Programação. Paradigma de Programação Um paradigma de programação fornece e determina a visão que o programador possui sobre a estruturação."— Transcrição da apresentação:

1 Paradigmas de Programação

2 Paradigma de Programação Um paradigma de programação fornece e determina a visão que o programador possui sobre a estruturação e execução do programa.

3 Paradigma de Programação É muito importante, para o desenvolvedor de uma linguagem, definir que conceitos omitir e que conceitos incluir na linguagem de programação sendo projetada. –Muitas vezes o desenvolvedor é forçado a abdicar da inclusão de certas características em uma linguagem de programação para torná-la mais enxuta e simples de ser utilizada. Linguagens de propósito geral não são vistas com bons olhos. Torna-se necessário, portanto, focar a linguagem em uma idéia central e em um estilo de programação específico. –Ou seja, um paradigma de programação.

4 Paradigma Imperativo O paradigma imperativo de programação é assim chamado por ser baseado em comandos que utilizam/manipulam variáveis armazenadas em memória. –Imperativo origina-se do latim e significa “comandar”. –Fundamenta-se em comandos que manipulam posições de memória através de variáveis. Exemplo: #include stdio.h main(){ char ch = ‘’; char ch = ‘’; scanf(“%c”, &ch); scanf(“%c”, &ch); printf(“A letra é : %c”,ch). printf(“A letra é : %c”,ch).} Manipulação de Memória através de comandos

5 Paradigma Imperativo O paradigma imperativo possui uma história relativamente longa. –Já em 1950, desenvolvedores de software reconheceram que o uso de variáveis e comandos constituía uma simples, mas poderosa, abstração para a busca e atualização dos comandos em memória. O paradigma imperativo ainda é predominante hoje em dia. –Muitos dos softwares estão escritos em linguagens imperativas Cobol, Clipper, C,...

6 Paradigma Imperativo Ao longo dos anos o domínio do paradigma imperativo deve-se inteiramente a inércia. –Linguagens dominantes, em aplicações comerciais, são: Basic, Cobol e Fortran. –É muito difícil migrar de um sistema implementado em Basic para Java (por exemplo). –Empurra-se com a “barriga” até quando for possível. Necessidade de funcionalidades não suportadas pela linguagem. –Aplicações Internet-enabled. –Acesso ao sistema via Thin-Clients Linguagens arcaicas não disponibilizam tais possibilidades.

7 Paradigma Imperativo Podemos classificar as linguagens que seguem o paradigma imperativo em duas categorias –Linguagens não estruturadas: Possuem quebras incondicionais na ordem de execução do programa –Comando “goto”. Linguagens: Cobol, Fortran, Algol 60,.. –Linguagens estruturadas: Seguem uma seqüência lógica de execução –Laços, chamadas de procedimentos, chamadas de funções... Linguagens: C, Pascal, Ada,...

8 LGG Imperativas X LGG Declarativas Linguagens imperativas requerem a produção de programas que especifiquem COMO resolver o problema, direta ou indiretamente, através da execução de transições entre estados. –O-O também segue o paradigma imperativo, porém com maior disciplina. Em linguagens declarativas, um programa deve especificar: –Ou qual é a resposta para o problema (funcional). –Ou quais as relações que definem o problema (lógico).

9 Programação Imperativa Na programação imperativa, programas são escritos para modelar processos do mundo real. –Estes processos afetam objetos do mundo real. –Tais objetos são modelados por variáveis. Em O-O, o mundo real é modelado através de abstrações que representam os próprios objetos presentes no mundo real. Na programação declarativa descreve-se O QUE deve ser feito, mas não COMO deve ser feito.

10 LGG Imperativas X LGG Declarativas Exemplo: Considere uma função que retorne o menor elemento de um vetor. Programação Imperativa - Pascal function menor(v: array of real): real; var i : integer; begin menor := v[0]; for i := 0 to 3 do if(v[i] > v[i +1]) then menor := v[i+1]; end; Programação Declarativa - Prolog menor(E,L) :- pertence(E,L) not (pertence (E1,L), E1<E).

11 LGG Imperativas X LGG Declarativas Comparação: (a - Imperativa) x (b - Declarativa). –(a) descreve, detalhadamente, como alcançar a SOLUÇÃO do problema. (b) descreve o PROBLEMA. –(a) trabalha com repetição e usa variáveis locais para acumular resultados e controlar a repetição. (b) trabalha com recursão. Linguagens imperativas podem utilizar o conceito de recursão. Porém continuarão necessitando de variáveis para armazenar resultados intermediários. O uso de variáveis e repetição constitui-se na maneira mais natural para representar processos do mundo real em linguagens imperativas –(a) fundamenta-se em comandos que manipulam posições de memória através de variáveis. (b) descreve, através de fatos e regras, o problema a ser resolvido.

12 Reuso de Software Um dos grandes problemas do paradigma imperativo é a dificuldade para a implementação de software reutilizável. –Uso de variáveis globais Efeito gelatina –Baixa coesão: encapsulação fraca Dificuldade para alcançar a encapsulação de conceitos que possam ser entendidos individualmente.

13 Por que é difícil alcançar o reuso? Reuso não acontece automaticamente. Para reusar, tem que: –Projetar boas abstrações –Empacotá-las para facilitar o reuso. Softwares reutilizáveis são raros de ser encontrados –Como fazer isso? –Que técnicas usar? O-O veio para solucionar o problema do reuso. –Porém, até o final da década de 90, o pessoal de O-O ainda não tinha cumprido com a promessa de gerar software reutilizável.

14 Solução para o Reuso Na metade da década de 90, as lições e caminhos cristalizaram-se com: –Design Patterns, Documentação das melhores idéias de projeto O-O –Frameworks, Encapsulação das características genéricas de um domínio de problema. –Componentes. Encapsulação das particularidades de cada problema.

15 Um Breve Histórico A linguagem C foi criada em 1972, por Dennis Ritchie, nos laboratórios da Bell Telephone. Finalidade: foi criada para projetar o sistema operacional UNIX –Código fonte do Unix é em C. Como a linguagem C é extremamente poderosa e flexível, sua utilização espalhou-se rapidamente a partir dos laboratórios Bell. –Programadores de todos os setores começaram a usá-la para desenvolver variados tipos de programas. E quanto ao nome? –O nome da linguagem C vem simplesmente do fato de que o seu predecessor era chamado de B. A linguagem B foi desenvolvida por Ken Thompson nos laboratórios Bell

16 Características Linguagem poderosa e flexível: C pode ser utilizado para projetos diversos tais como: Sistemas Operacionais, processadores de textos, programas básicos, planilhas eletrônicas e até mesmo compiladores. A linguagem C é extremamente popular: consequentemente, há uma ampla variedade de compiladores e acessórios disponíveis. Portabilidade: Um programa em C que tenha sido desenvolvido para um determinado sistema, pode ser compilado e executado em outros sistemas com pouca ou nenhuma modificação. Linguagem Modular: facilita a especificação de código através de rotinas e bibliotecas. (linguagem estruturada)

17 Características Linguagem compilada: existem vários compiladores diferentes para a linguagem C. Linguagem Tipada: Suporta o conceito de tipos mas não é fortemente tipada como o pascal –Compiladores C realizam poucas verificações de erros com relação a tipos de dados. Não possui um “coletor de lixo” para liberar memória alocada e não mais utilizada. –A desalocação de memória deve ser feita manualmente.

18 Ciclo de Desenvolvimento de um Programa em C.

19 Estrutura de um Programa em C # include A diretiva include realiza a inclusão de um arquivo fonte em outro. # define pi 3,14159 A diretiva define é utilizada para a definição de constantes simbólicas globais. funçãoX( ); prototipação: informar ao compilador que a função foi declarada e desenvolvida abaixo. void main( ){ A função main é a primeira função a ser executada... funçãoX( ); chamada de função.... } void funçãoX( ){ especificação de uma função.... }

20 Exemplo Um exemplo que lê e soma dois floats:

21 #include Float recebe( ); prototipação de função Float soma(Float, Float); prototipação de função void mostra(Float); prototipação de função void main( ){ Float a = 0, b = 0, c = 0; declaração de variáveis a = recebe( ); chamada de função. b = recebe( ); chamada de função. c = soma(a,b); chamada de função. mostra(c); chamada de função. } Float recebe( ){ implementação da função recebe. float x; scanf("%f",&x); return(x); } Float soma(Float x, Float y){ implementação da função soma. return(x+y); } void mostra(Float x){ implementação da função mostra. printf("valor = %f", x); getch( ); }


Carregar ppt "Paradigmas de Programação. Paradigma de Programação Um paradigma de programação fornece e determina a visão que o programador possui sobre a estruturação."

Apresentações semelhantes


Anúncios Google