You are on page 1of 45

Curso de Licenciatura em Informtica

Programao Funcional
Conceitos genericos e Introduo linguagens de programao Aula 1

MSc Geraldo C. Nhadumbuque

Outline Conceitos gerais; Linguagens de programao; Tipos de linguagens; Paradigmas de programao.

MSc. Geraldo Carlos Nhadumbuque

Conceitos gerais

MSc. Geraldo Carlos Nhadumbuque

Conceitos gerais

Algumas definies
DADOS Para Bio apud Freitas (1997) dado um elemento da informao (um conjunto de letras ou dgitos) que, tomado isoladamente, no transmite nenhum conhecimento. INFORMAO Chiavenato(1999, p. 366) define informao como, [...] um conjunto de dados com um significado, ou seja, que reduz a incerteza ou que aumenta o conhecimento a respeito de algo.
MSc. Geraldo Carlos Nhadumbuque

Conceitos gerais

Algumas definies
Dado 34C MLA 39-60 Informao Temperatura Identificao duma viatura (marca/cor/reg.) Menina de Ouro em Moambique

Lurdes Mutola
MSc. Geraldo Carlos Nhadumbuque

Conceitos gerais

Algumas definies
Processo Uma sequncia semntica de operaes realizadas com a finalidade de produzir um resultado especfico.

input

Processo

output

MSc. Geraldo Carlos Nhadumbuque

Conceitos gerais

Conceito de algoritmo

Porque precisamos de Algoritmos ?

MSc. Geraldo Carlos Nhadumbuque

Conceitos gerais

Conceito de algoritmo
Uma srie de procedimentos utilizados para a resoluo de um problema. SAWAYA Um conjunto finito de regras que prov uma sequncia de operaes para resolver um tipo de problema especfico[KNUTH] Seqncia ordenada, e no ambgua, de passos que levam soluo de um dado problema [TREMBLAY] Processo de clculo, ou de resoluo de um grupo de problemas semelhantes, em que se estipulam, com generalidade e sem restries, as regras formais para a obteno do resultado ou da soluo do problema [AURLIO]
MSc. Geraldo Carlos Nhadumbuque

Conceitos gerais

Conceito de algoritmo
Objecto: Criar um um algoritmo para mostrar o resultado da diviso de dois nmeros.
Representar recorrendo a um pseudo-cdigo. 2. Representar atravs de um fluxograma.
1.

MSc. Geraldo Carlos Nhadumbuque

Conceitos gerais

Conceito de algoritmo
1. Representa utilizando um pseudo-cdigo
Algoritmo Dividir Incio declare N1, N2, D : inteiro Escreva(Digite dois nmeros) Leia(N1,N2) Se N2 = 0 Ento Escreva(Impossvel dividir) seno D N1 / N2 Escreva(D) Fim se Fim

MSc. Geraldo Carlos Nhadumbuque

Conceitos gerais

Conceito de algoritmo
2. Representa utilizando um fluxograma

MSc. Geraldo Carlos Nhadumbuque

Conceitos gerais

Conceito de programa
PROGRAMA Um plano completo para a soluo de um problema, mais especificamente, a sequncia completa de instrues de mquina e rotinas necessrias para resolver um problema. SAWAYA, (1999)

MSc. Geraldo Carlos Nhadumbuque

Linguagens de programao

MSc. Geraldo Carlos Nhadumbuque

Linguagens de programao

Conceito de linguagem de programao


Uma Linguagem de Programao (LP) uma ferramenta utilizada pelo profissional de computao para escrever programas, isto , conjuntos de instrues a serem seguidas pelo computador para realizar um determinado processo.

MSc. Geraldo Carlos Nhadumbuque

Linguagens de programao

Propsito de uma LP
Uma maior capacidade de resoluo de problemas; Desenvolver a habilidade de utilizao de uma LP; Possibilitar a escolha de uma LP apropriada; Ampliar a possibilidade de aprendizagem de novas LPs; Desenvolver a habilidade de criao de novas LPs.

MSc. Geraldo Carlos Nhadumbuque

Linguagens de programao

LP no processo de desenvolvimento
As linguagens de programao surgiram da necessidade de tornar o processo de desenvolvimento de software mais produtivo. Processo de desenvolvimento de software: Especificao de requisitos; Projeto do software; Implementao; Validao; Manuteno.

MSc. Geraldo Carlos Nhadumbuque

Linguagens de programao

Algumas propriedades desejveis


As propriedades desejveis numa LP so:
Legibilidade; Confiabilidade; Eficincia; Facildade de aprendizagem; Ortogonalidade; Reusabilidade; Portabilidade.

MSc. Geraldo Carlos Nhadumbuque

Linguagens de programao

Especificao
Ao se criar uma LP necessrio definir como se faz para escrever programas nessa linguagem e como os programas vlidos devem se comportar. A especificao de uma LP requer a descrio de um lxico, de uma sintaxe e de uma semntica para a LP.

MSc. Geraldo Carlos Nhadumbuque

Linguagens de programao

Mtodos de Implementao
Todo e qualquer programa escrito em uma LP necessita ser traduzido para a linguagem mquina para ser executado. Segundo SEBESTA (1999), para isso pode se recorrer a trs mtodos:
Compilao; Interpretao; e Hbrido.

MSc. Geraldo Carlos Nhadumbuque

Linguagens de programao

Mtodos de Implementao
Compilao

MSc. Geraldo Carlos Nhadumbuque

Linguagens de programao

Mtodos de Implementao
Interpretao

MSc. Geraldo Carlos Nhadumbuque

Linguagens de programao

Mtodos de Implementao
Hbrido

MSc. Geraldo Carlos Nhadumbuque

Tipos de linguagens

MSc. Geraldo Carlos Nhadumbuque

Tipos de linguagens

Tipos de linguagens
LINGUAGEM Linguagem Mquina Linguagens de Baixo Nvel CARACTERSTICAS nica compreendida pelo computador. Especfica de cada computador. Utiliza mnemnicas para representar instrues elementares Ex.: Assembly Utiliza instrues prximas da linguagem humana de forma a facilitar o raciocnio. Ex.: Uso Cientfico : Fortran Propsito Geral : Pascal, C, Basic Uso Comercial : Cobol, Clipper Uso especfico : Lisp, Prolog

Linguagens de Alto Nvel

MSc. Geraldo Carlos Nhadumbuque

Tipos de linguagens

Tipos de linguagens
Ilustrao de um programa em linguagem mquina

MSc. Geraldo Carlos Nhadumbuque

Tipos de linguagens

Tipos de linguagens

MSc. Geraldo Carlos Nhadumbuque

Tipos de linguagens

Tipos de linguagens
Linguagem de alto nvel Linguagem de baixo nvel Linguagem mquina Hardware

Similaridade com linguagem humana

MSc. Geraldo Carlos Nhadumbuque

Paradigmas de programao

MSc. Geraldo Carlos Nhadumbuque

Paradigmas

Paradigmas
Os paradigmas podem ser tipo imperativo ou declarativo.
Paradigmas

Imperativo

Declarativo

Estruturado

Orientado a Objetos

Concorrente

Funcional

Lgico

MSc. Geraldo Carlos Nhadumbuque

Paadigmas

Paradigma imperativo
computao como um processo que realiza mudanas de estados; Os conceitos fundamentais so de varivel, valor e atribuio; Variveis so vistas como sendo um conjunto de clulas de memria; O paradigma imperativo subdividido nos paradigmas estruturado, orientado a objetos e concorrente.
MSc. Geraldo Carlos Nhadumbuque

Paadigmas

Paradigma imperativo
Modelo computacional

MSc. Geraldo Carlos Nhadumbuque

Paadigmas

Paradigma imperativo estruturado


As primeiras LPs foram fortemente influenciadas pela programao em linguagem mquina; Logo se percebeu que esse estilo de programao estimulava a ocorrncia de erros e reduzia a produtividade do programador; Para contornar essa dificuldade surgiu a programao estruturada; Baseia na idia de desenvolvimento de programas por refinamentos sucessivos (top-down).
MSc. Geraldo Carlos Nhadumbuque

Paadigmas

Paradigma imperativo orientado a objectos


Conceitos que tm objetivo de tornar mais rpido e confivel o desenvolvimento de sistemas.; Enfocam as abstraes de dados como elemento bsico de programao; Classes so abstraes que definem uma estrutura de dados e um conjunto de operaes que podem ser realizadas sobre elas, chamadas mtodos;

MSc. Geraldo Carlos Nhadumbuque

Paadigmas

Paradigma imperativo orientado a objectos


Modelo computacional

MSc. Geraldo Carlos Nhadumbuque

Paadigmas

Paradigma imperativo concorrente


A programao concorrente ocorre quando vrios processos executam simultaneamente e concorrem por recursos. Permitem utilizar uma nica unidade de processamento ou vrias unidades em paralelo. As linguagens Pascal Concorrente e Java (entre outras) so exemplos de LPs que permitem desenvolver sistemas concorrentes.

MSc. Geraldo Carlos Nhadumbuque

Paadigmas

Paradigma imperativo concorrente


public class SimpleThread extends Thread { public SimpleThread(String str) { Programa super(str); em } public void run() { Linguagem for (int i = 0; i < 10; i++) { Java System.out.println(i + " " + getName()); try { sleep((long)(Math.random() * 1000)); } catch (InterruptedException e) {} } System.out.println("DONE! " + getName()); } } public class TwoThreadsDemo { public static void main (String[] args) { new SimpleThread("Jamaica").start(); new SimpleThread("Fiji").start(); } } MSc. Geraldo Carlos Nhadumbuque

Paadigmas

Paradigma declarativo
Tipicamente, programas em linguagens declarativas so especificaes de relaes ou funes; No existem atribuies a variveis dos programas uma vez que as variveis declarativas so de fato incgnitas e no representam clulas de memria; Os interpretadores ou compiladores das LPs declarativas gerenciam a memria do computador.

MSc. Geraldo Carlos Nhadumbuque

Paadigmas

Paradigma declarativo funcional


operam apenas sobre funes; Recebem listas de valores e retornam um valor; Objetivo da programao funcional definir uma funo que retorne um valor como a resposta do problema;

MSc. Geraldo Carlos Nhadumbuque

Paadigmas

Paradigma declarativo funcional


Modelo computacional

MSc. Geraldo Carlos Nhadumbuque

Paadigmas

Paradigma declarativo lgico


Baseadas em um subconjunto do clculo de predicados; Um predicado define uma relao entre fatos ou entre variveis; A execuo de um programa lgico corresponde a um processo de deduo automtica. Ex.: Prolog

MSc. Geraldo Carlos Nhadumbuque

Paadigmas

Paradigma declarativo lgico


Exemplo: Paradigma Lgico: Programa em Prolog

Ex1: Pai(ana,jose), pai(jose,ana) Ex2: Avo(X,Z) Avo(X,Z) ::- pai(X,Y), pai(X,Y), pai(Y,Z) pai(Y,Z)

MSc. Geraldo Carlos Nhadumbuque

Paadigmas

Paradigma declarativo lgico


Modelo computacional

MSc. Geraldo Carlos Nhadumbuque

Paadigmas

Paradigmas Paradigmas

MSc. Geraldo Carlos Nhadumbuque

Paadigmas

Ranking de Linguagens (2012(2012-2013)


Maro 2013 Maro 2012 1 2 3 4 5 6 7 8 9 10 32
MSc. Geraldo Carlos Nhadumbuque

PL Java C Objective-C C++ C# PHP VB Python Ruby Perl Haskell

Rate % 18,156 17,141 10,23 9,115 6,597 4, 809 4,607 4,388 2,150 1,959 0,332

1 2 5 4 3 6 7 9 13 10

Fonte: TIOBE

End

MSc. Geraldo Carlos Nhadumbuque

You might also like