• Nenhum resultado encontrado

FACULDADE LEÃO SAMPAIO

N/A
N/A
Protected

Academic year: 2022

Share "FACULDADE LEÃO SAMPAIO"

Copied!
55
0
0

Texto

(1)

Paradigmas de Programação

Curso de Análise e Desenvolvimento de Sistemas

Turma: 309-5 Semestre - 2014.2

FACULDADE LEÃO SAMPAIO

Paradigmas de Programação – Prof. MSc. Isaac Bezerra de Oliveira. 1

ISAAC BEZERRA DE OLIVEIRA Formação:

Bacharel em Sistemas de Informação pela Faculdade de Juazeiro do Norte - FJN.

Curso de Extensão na Especialização Engenharia de Software com ênfase em padrões de softwares na Faculdade de Juazeiro do Norte - FJN.

Especialista - MBA em Logística Empresarial pela Faculdade de Juazeiro do Norte - FJN

Mestrado Profissional em Engenharia de Software – C.E.S.A.R. (Centro de Estudos e Sistemas Avançados do Recife).

Apresentação

(2)

Apresentação

ISAAC BEZERRA DE OLIVEIRA

Cursos Técnicos/Profissionalizantes:

• Curso de Infraestrutura - Programa Microsoft S2B - Students to Business;

• Formação em Android – UTD (Universidade do Trabalho Digital) CENTEC Fortaleza/CE.

• Programação em Delphi – SENAI Juazeiro do Norte /CE;

• Redes de Computadores – Microlins Fortaleza/CE;

• Montagem e Manutenção de Computadores - SENAI Juazeiro do Norte;

• Inglês Básico – FJN, Faculdade de Juazeiro do Norte;

• Cursos Básico em Informática;

Paradigmas de Programação – Prof. MSc. Isaac Bezerra de Oliveira. 3

ISAAC BEZERRA DE OLIVEIRA

Experiências de Trabalho

• Office-boy e Digitador

• Vendedor Varejista

• Auxiliar de Contabilidade

• Técnico e Vendedor em Informática

• Almoxarife

• Professor

Apresentação

(3)

ISAAC BEZERRA DE OLIVEIRA

Quatro Anos de Experiências como Docente

CENTEC - EEEP. Prof. Moreira de Sousa

Coordenador e Professor do Curso de Informática

SENAI – Juazeiro do Norte

Professor do Curso de Montagem e Manutenção

FVS – Faculdade Vale do Salgado

Professor do Curso de ADS.

FALS – Faculdade Leão Sampaio

Professor do Curso de ADS.

Paradigmas de Programação – Prof. MSc. Isaac Bezerra de Oliveira. 5

Apresentação

Contatos:

E-mail:

isaacbezerra@leaosampaio.edu.br professor@isaacbezerra.com.br

Site:

www.isaacbezerra.com.br

Apresentação

(4)

PARADIGMAS DE PROGRAMAÇÃO CH: 80 HORAS

• Introdução a paradigmas de linguagens de programação:

• Conceitos de linguagens de programação, Domínio de programação, Critérios de avaliação de linguagens e Categoria de linguagens.

• Linguagens de programação:

• evolução, características; sintaxe e semântica: notações e gramáticas; Tipos de dados; Expressões e sentença de atribuição, Estrutura de controle, Subprogramas;

• Paradigmas:

• imperativas, funcionais, orientadas a objetos, programação lógica e concorrente.

Paradigmas de Programação – Prof. MSc. Isaac Bezerra de Oliveira. 7

PARADIGMAS DE PROGRAMAÇÃO CH: 80 HORAS

OBJETIVO

• Possibilitar aos alunos de paradigmas de programação o conhecimento sobre as características dos principais modelos de linguagens de programação e sua adequação à solução de problemas. Conceituam os aspectos das linguagens de programação, o que são, para quê serve e como funcionam. Isso possibilita uma aprendizagem de novas linguagens com mais facilidade, uma visão crítica e comparativa das linguagens de programação e dos paradigmas de programação.

Ementa

(5)

UNIDADE I: INTRODUÇÃO

Conceitos de Linguagens de Programação Evolução das Linguagens de Programação Sintaxe e Semântica

Analise Léxica e Sintática

UNIDADE II: CARACTERIZAÇÃO DOS PRINCIPAIS PARADIGMAS DE PROGRAMAÇÃO

Tipos de Dados

Expressões e sentenças de atribuição Estruturas de controle

Subprogramas Orientação a Objeto Concorrência

UNIDADE III: PARADIGMA ORIENTADO A OBJETO

Programação orientada a objetos

Questões de projeto para programação a objetos

Orientação a objeto em algumas linguagens Tratamento de eventos

UNIDADE IV: PARADIGMA FUNCIONAL Funções matemáticas

Fundamentos de linguagens de programação funcional

Apresentação de linguagens funcionais Aplicações de linguagens funcionais UNIDADE V: PARADIGMA LÓGICO Cálculos de predicados e prova de teoremas Visão geral do paradigma lógico

Apresentação do Prolog Aplicação da programação lógica Conteúdo Programático

Paradigmas de Programação – Prof. MSc. Isaac Bezerra de Oliveira. 9

Ementa

SEBESTA, Robert W. Conceitos de Linguagens de Programação. 9. ed. Brasil:

Bookman Companhia, 2011.

TUCKER, Allen. NOONAN, Robert. Linguagens de Programação: Princípios e Paradigmas. 2. ed. Brasil: MCGraw Hill - Artmed, 2009.

SILVA, Flavio S. C. Da. MELO, Ana Cristina V. De. Princípios de Linguagens de Programação.: Edgard Blucher, 2003.

WAMPLER, Dean. Programação Funcional para Desenvolvedores Java.: Novatec, 2012.

Sá, C. S.; Silva, M. F. Haskell: uma abordagem prática.: Novatec, 2006.

AHO, Alfred V. SETHI, Ravi; LAM, Monica S. Compiladores.: Longman do Brasil, 2007.

CASANOVA, Marco A.; GIORNO, Fernando A.C. Programação em Lógica e a Linguagem Prolog.: Edgard Blucher, 1987.

PAGGIOLI, Sergio R. LISP: uma nova linguagem. Penha: Século Futuro, 1986.

Sugestão de Bibliográficas:

(6)

NOME DA DISCIPLINA – PROFESSOR THIAGO BESSA PONTES. ESP., MBA. 11

Paradigmas de Programação – Prof. MSc. Isaac Bezerra de Oliveira. 11

Sugestão de Bibliográficas:

Metodologia, Técnicas de Ensino

Metodologia de Ensino 1. Estratégias de Ensino (X) Aulas Expositivas ( ) Seminários

( ) Aulas práticas (X) Práticas demonstrativas ( ) Estudo dirigido ( ) Preleção dialogada ( ) Leituras programadas ( ) Atividades integradas (X) Aulas teóricas ( ) Outras (especificar):

(X) Discussão em pequenos grupos

2. Recursos Audio-Visuais (X) Quadro Branco ( ) Vídeos/Filmes

( ) Retroprojetor (X) Textos

( ) Projetor de Slides ( ) Projetor de Lâminas (X) Data-show ( ) Outros (especificar):

(7)

Formas de Avaliação

Descrição do Processo Avaliativo:

Avaliações Obrigatórias : AV-1 , AV-2, AVF Avaliações Opcionais : AP-1, AP-2

AV-1 : A nota será composta pela seguinte ponderação

70% Prova escrita.

20% Realização das atividades em sala de aula no bimestre referente a AV-1

10% Assiduidade e participação.

AV-2 : A nota será composta pela seguinte ponderação

70% Prova escrita.

20% Realização das atividades em sala de aula no bimestre referente a AV-2

10% Assiduidade e participação..

Paradigmas de Programação – Prof. MSc. Isaac Bezerra de Oliveira. 13

Descrição da Média:

M = [AV1 + (AV2*2)]/3 M >= 7 Aprovação direta

M >=4 e M < 7 Aluno com direito a prova final M < 4 Reprovação sem direito a prova final Alunos que realizaram final:

MF = (M + NF)/ 2

MF >= 5 e NF >= 5 Aluno aprovado na final MF >= 5 e NF < 5 Aluno reprovado na final MF < 5 e NF > 5 Aluno reprovado na final Legenda: M – Média

MF – Média Final

AV1 – Avaliação da Primeira Unidade AV2 – Avaliação da Segunda Unidade AVF – Avaliação Final

Formas de Avaliação

(8)

Frequência

Número Máxima de Falta é de 25%;

Falta não possui recuperação;

Sempre justificar as faltas, quando tiver justificativa (atestado ou documento equivalente), com a coordenação e acadêmico.

Atenção para as datas das avaliações, atividades e trabalhos.

Paradigmas de Programação – Prof. MSc. Isaac Bezerra de Oliveira. 15

IMPORTANTE: Anotem as Datas !!!

Horário de Aulas – 20:20 até as 22:00

Data da AV1 – 22 ou 23 do 09 de 2014

Data da AV2 – 24 ou 25 do 11 de 2014

Data da 2º Chamada – 03 a 05 do 12 de 2014

Data da AVF – 15 ou 16 do 12 de 2014

Calendário Acadêmico

• Período de Solicitação de 2º Chamada, 19/11 a 01/12.

Horários em que estarei na FALS

Segunda-feira  AB e CD

Terça-feira  AB e CD

Quinta-feira  CD

Sexta-feira  AB

(9)

Conhecendo Vocês

• 1º FREQUÊNCIA

Cidade natal e cidade onde reside atualmente?

Experiências na área de TI?

Opinião sobre o curso de ADS?

O que espera da disciplina:

Paradigmas de Programação

Paradigmas de Programação – Prof. MSc. Isaac Bezerra de Oliveira. 17

Conhecendo a área de :

Paradigmas de Programação

(10)

O que é um paradigma de programação?

Etimologia da Palavra

PARADIGMA pa.ra.dig.ma

sm (gr parádeigma) 1 Modelo, padrão, protótipo. 2 Ling Conjunto de unidades suscetíveis de aparecerem num mesmo contexto, sendo, portanto, comutáveis e mutuamente exclusivas. No paradigma, as unidades têm, pelo menos, um traço em comum (a forma, o valor ou ambos) que as relaciona, formando conjuntos abertos ou fechados, segundo a natureza das unidades.

Dicionário Michaelis em: http://michaelis.uol.com.br/

19

O que é um paradigma de programação?

Forma geral de pensar ao programar

Principais elementos que compõem o programa

Linguagens seguem/suportam um ou mais paradigmas

Há centenas de linguagens, mas poucos paradigmas

(11)

Porque devo Estudar

Paradigmas de Programação

Aumenta a capacidade de expressar ideias;

Embasa a escolha adequada de linguagem;

Aumenta a habilidade de aprender novas linguagens

Melhora o uso de linguagens já conhecidas

21

Conhecendo a área

Mercado de Trabalho

BUSCA POR ANALISTA DE SISTEMAS

• EM TODO O BRASIL

• 1.743 vagas de emprego em 1.307 anúncios.

R$: 1.000,00 a R$: 7.000,00

• CEARÁ

• 46 vagas de emprego em 19 anúncios.

• R$: 1.000,00 a R$: 7.000,00 Fonte: www.catho.com.br

(12)

Conhecendo a área

Mercado de Trabalho

BUSCA POR ANALISTA PROGRAMADOR

• EM TODO O BRASIL

• 806 vagas de emprego em 544 anúncios.

R$: 2.000,00 a R$: 10.000,00

• CEARÁ

• 5 vagas de emprego em 4 anúncios.

• R$: 2.000,00 a R$: 4.000,00 Fonte: www.catho.com.br

Conhecendo a área

Mercado de Trabalho

BUSCA POR ANALISTA PROGRAMADOR JAVA

• EM TODO O BRASIL

• 203 vagas de emprego em 120 anúncios.

R$: 2.000,00 a R$: 10.000,00

• CEARÁ

• 3 vagas de emprego em 3 anúncios.

• R$: 2.000,00 a R$: 4.000,00

(13)

Na Região Metropolitana do Cariri

Empresas e setor público

Faculdade e instituições de ensino

Empresas Especializadas na área

O mundo é sua possibilidade!

Home Office!

Ex.:

Porto Digital– 89% dos projetos são para fora do país

TI brasileiro representa apenas 2% do share global

500 bilhões de dólares por ano.

Cera de 90% do que é desenvolvido no Porto Digital é destinado ao mercado Externo.

Conhecendo a área

* Fonte: revista Você S/A e Faturamento anual do Porto G

Quais são os principais paradigmas?

• Imperativo

• Estruturado / Procedural ou procedimental

• Orientado a objetos

• Funcional

• Lógico

• Concorrente (se mistura aos demais)

• Outros

• Orientado a aspectos,

• Visual,

• Orientado a eventos,

• etc.

(14)

Paradigmas de Programação

Categorias: imperativo X declarativo

• Imperativo

ênfase nas ações, em "como fazer"

paradigmas procedimental, orientado a objetos

• Declarativo

ênfase nos resultados, no que se deseja obter

paradigmas funcional, lógico

27

Categorias: sequencial X concorrente

• Sequencial

um único fluxo de execução, uma operação por vez

• Concorrente

vários fluxos de execução, várias operações simultâneas

Paradigmas de Programação

(15)

Domínios de programação

Aplicações científicas

Fortran(IV-95), C, ..., Python, ...

Aplicações comerciais

SQL, Cobol, ..., Pascal/Delphi..., Java, C#, ...

Software básico

C, C++, ...

Educação

Cobol, ..., Pascal/Delphi, C, ...

Scripting

Perl, Python, PHP, Ruby, bash, ...

Inteligência artificial

Prolog, LISP, Java, ...

Web

Perl, Java, PHP, Python, ...

29

Breve Histórico das Linguagens

• Augusta Ada

Filha de um Lord Inglês

Não recebeu educação formal

Ada tomava Aulas Particulares

Casou-se as 19 anos e passou a ser chamada de Lady Lovelace.

Teve três filhos

(16)

31

Breve Histórico das Linguagens

• Charles Baddage

Matemático Inglês

Projetou computadores mecânicos

A Máquina Diferencial

A Máquina Analítica

Breve Histórico das Linguagens

• Ada e Charles

Ficaram amigos e trabalharam juntos em muitas das ideias de Charles

Ada descreveu um algoritmo para calcular usando a máquina diferencial.

Não chegou a ser testado, pois a máquina nunca existiu de fato

É considerado como sendo o primeiro programa

(17)

33

Breve Histórico das Linguagens

• Programar era um atividade trabalhosa

Programar era uma atividade de semanas a 60 anos atrás.

Programar era trocar fios

Na melhor das hipóteses era perfurar cartões

é difícil mensurar quão difícil era essa atividade

Breve Histórico das Linguagens

As linguagens de programação são classificadas por gerações.

Primeira geração 1950-1962 : linguagens de baixo nível, como Assembly.

Segunda geração 1962-1974: as primeiras linguagens criadas, como Fortran e ALGOL.

Terceira geração 1974-1986: procedurais e estruturadas, como C e Pascal.

Quarta geração 1986 até os dias atuais: linguagens que geram programas em outras linguagens, como Java e C++.

(18)

35

Breve Histórico das Linguagens

Breve Histórico das Linguagens

(19)

37

Breve Histórico das Linguagens

COBOL

É datada do ano de 1959

COmmon Business Oriented Language

Linguagem Comum Orientada para os Negócios

É uma linguagem de programação orientada para o processamento de banco de dados comerciais.

Produto do Departamento de Defesa norte-americano

Breve Histórico das Linguagens

(20)

39

Breve Histórico das Linguagens

Breve Histórico das Linguagens

(21)

41

Breve Histórico das Linguagens

Breve Histórico das Linguagens

(22)

43

Breve Histórico das Linguagens

Breve Histórico das Linguagens

(23)

45

Sucesso de uma LP

Como uma linguagem de programação surge e se torna bem-sucedida?

Quais são as características-chave que tornam uma linguagem de programação ideal?

Características-Chave

Legibilidade

Simplicidade

Ortogonalidade

Portabilidade

Confiabilidade

Suporte

Abstração

Implantação Eficiente

Custo

(24)

47

Características-Chaves

LEGIBILIDADE

Forte Influência da “CRISE DO SOFTWARE”

Refere-se a um conjunto de problemas encontrados no desenvolvimento de software e na etapa de Manutenção.

Anticrise do Software

é a união e o trabalho conjunto e harmonia de três elementos:

empresa, cliente e departamento de TI. O departamento de TI é o responsável e o principal elemento em aceitar estes conceitos e fazer de tudo para aceitar estas metodologias e teses, utilizando de todos os recursos disponíveis.

Características-Chaves

LEGIBILIDADE

Principais problemas da área de Informática

Questionário aplicado à alta direção de 200 empresas de porte médio/grande, sobre as principais falhas/dificuldades com a Informática:

Cumprimento dos prazos 26,3%

Custos elevados 25,4%

Prioridade desenvolvimento x manutenção 25,4%

Manutenção dos sistemas em uso 21,1%

Recrutar profissionais qualificados(*) 18,4%

(*) Boa formação e atualizados

(25)

49

Características-Chaves

LEGIBILIDADE

Facilidade de ler e escrever programas

Legibilidade influi:

desenvolvimento e depuração de programas

manutenção de programas

desempenho de equipes de programação

Fatores que melhoram a legibilidade:

Abstração de dados

Comandos de controle

Modularização de programas

Documentação

Convenções léxicas, sintaxe e semântica

Exemplo em Java: nomes de classes iniciam por letra maiúscula, nomes de campos usam letras minúsculas

Características-Chaves

LEGIBILIDADE

Tipos e Estruturas de Dados

• A possibilidade de definir estruturas e tipos de dados também afeta a legibilidade

• INT fim_de_arquivo = 1;

• BOOLEAN fim_de_arquivo = true;

• while( not fim_de_arquivo == 1)

• while (not fim_de_arquivo )

(26)

51

Características-Chaves

LEGIBILIDADE

Quanto mais fácil de escrever um programa, maior e a probabilidade dele esta certo

Quanto mais fácil de escrever um programa, maior é a facilidade de corrigi-lo e de reescreve-lo.

Características-Chaves

SIMPLICIDADE

Representação de cada conceito seja simples de aprender e dominar

Simplicidade sintática exige que a representação seja feita de modo preciso, sem ambigüidades

contra-exemplo: A++; A=A+1; A+=1; ++A.

Simplicidade semântica exige que a representação possua um significado independente de contexto

while (Sempre será um enquanto).

Simplicidade não significa concisão

Exemplo - Identificadores

FORTRAN 77 (6 caracteres)

BASIC (1 caractere ou 1 caractere seguido de 1número)

(27)

53

Características-Chaves

SIMPLICIDADE

Palavras Especiais:

PASCAL (begin--end)

FORTRAN 90 e ADA ( if--endif)

FORTRAN 90 permite que se defina variáveis com nomes do e end

» if if > then then then = else else else = endif endif endif endif

Forma e significado

A aparência deve ao menos parcialmente indicar o propósito.

» static em C; begin – end; if

Características-Chaves

ORTOGONALIDADE

Possibilidade de combinar entre si, sem restrições, os componentes básicos da LP

Exemplo:

• permitir combinações de estruturas de dados, como arrays de registros

Contra exemplo:

não permitir que um array seja usado como parâmetro de um procedimento

(28)

55

Características-Chaves

ORTOGONALIDADE

Se uma linguagem tiver um grande número de construções, programadores podem não se familiarizar com todas

Mal uso de algumas e desuso de outras

Sendo assim, Ortogonalidade demais pode prejudicar a escrita da linguagem

Características-Chaves

PORTABILIDADE

Multiplataforma:

capacidade de um software rodar em diferentes

plataformas sem a necessidade de maiores adaptações

Sem exigências especiais de hardware/software

Exemplo: aplicação compatível com sistemas Unix e Windows

Longevidade:

ciclo de vida útil do software e o do hardware não precisam ser síncronos; ou seja, é possível usar o mesmo software após uma mudança de hardware

(29)

57

Características-Chaves

CONFIABILIDADE

Mecanismos que facilitem a produção de programas que atendam às sua especificações

Tipagem forte: o processador da linguagem deve

assegurar que a utilização dos diferentes tipos de dados seja compatível com a sua definição

evitar que operações perigosas, tal como aritmética de ponteiros, seja permitida

Tratamento de exceções: sistemas de tratamento de exceções permitem construir programas que

possuam definições de como proceder em caso de comportamento não usual

possibilitem tanto o diagnóstico quanto o tratamento de erros em tempo de execução

Características-Chaves

CONFIABILIDADE Tipagem

Verifica se os valores atribuídos aos tipos estão de acordo com os definidos

Quando uma linguagem faz uma verificação rigorosa de seus tipos, diz-se que ela é fortemente tipada.

Exemplo:

Java e Pascal Contra Exemplo:

C , PHP

(30)

59

Características-Chaves

CONFIABILIDADE

Tratamento de exceções

É a possibilidade de um programa interceptar um erro em tempo de execução, tomar as medidas adequadas e continuar (ou não) a execução

Exemplos

Java, C++ e Ada

Contra exemplo

Pascal, C e FORTRAN

Características-Chaves

CONFIABILIDADE

“ Aliasing”

É a possibilidade de se ter duas ou mais referências para um mesmo local da memória

É uma técnica perigosa de programação Exemplo

C (apontadores) Contra Exemplo:

Java não possui essa propriedade

(31)

61

Características-Chaves

SUPORTE

Acessibilidade a informações, documentos e ferramentas para o desenvolvimento na linguagem

Compiladores de Domínio Público

Múltiplas Plataforma

Cursos, Livros, Tutoriais e Comunidades sobre a Linguagem

Linguagens Proprietárias x Não Proprietárias

Governamentais e Corporativos

Sucesso em ambos os lados

Características-Chaves

ABSTRAÇÃO

Possibilidade de se definir e usar estruturas complexas sem que os aspectos internos de implementação dessas estruturas sejam vistos pelo programador

Exemplo

Implementação de uma Árvore Binária em FORTRAN,

Pascal e em Java

(32)

63

Características-Chaves

ABSTRAÇÃO

Aspecto fundamental no projeto de programas pois:

Reuso de código

Evita reinventar a roda

Bibliotecas que acompanham a linguagem

Exemplo:

• JAVA: Classe Scanner para entrada de dados

Características-Chaves

IMPLANTAÇÃO EFICIENTE

Implementação Prática e Eficiente em Plataformas Contemporâneas

Ineficiência de tempo de execução

Necessidade de respostas imediatas a mudanças bruscas aos valores de entrada.

Exemplo:

ADA e JAVA

(33)

65

Características-Chaves

CUSTO

É uma função de algumas outras características

Linguagem Proprietária x Domínio Público

Custo de Treinamento

Custo de Escrever Programas na Linguagem

Custo de Confiabilidade

Custo de Execução e Compilação

Custo de Manutenção

Conceitos

Algoritmos e programas

Linguagens de programação

Desenvolvimento de programas

(34)

Algoritmos e programas

• Algoritmos

Conjunto finito de passos sequenciais que descrevem como resolver um determinado problema.

Informações de entrada, modificação da informação, informações de saída.

Paradigmas de Programação – Prof. MSc. Isaac Bezerra de Oliveira. 67

Algoritmos e programas

Exemplo:

Receita de bolo:

Misture os ingredientes Unte a forma com manteiga Despeje a mistura na forma Se houver coco ralado então despeje sobre a mistura Leve a forma ao forno Enquanto não corar deixe a forma no forno Retire do forno Deixe esfriar

(35)

Algoritmos e programas

Construção de algoritmos

Dividir-e-conquistar: divide-se sucessivamente o problema em subproblemas cada vez menores.

Exemplo:

Trocar pneu de um carro 1. pegue o macaco

2. levante o carro 3. retire o pneu furado 4. pegue o estepe 5. coloque-o na roda 6. aperte os parafusos 7. abaixe o carro 8. reaperte os parafusos

Paradigmas de Programação – Prof. MSc. Isaac Bezerra de Oliveira. 69

Algoritmos e programas

Construção de algoritmos

Exemplo: Refinamento do passo 1.

Refinamento ou procedimento do passo 1

1.1 abra a mala

1.2 remova o macaco do porta-malas

1.3 coloque o macaco sob o carro, próximo ao pneu furado 1.4 desaperte os parafusos da roda

1.5 insira a manivela no macaco

1.6 coloque um calço sob o carro para impedi-lo de se mover

1.7 levante o carro com o macaco até que haja espaço suficiente para colocar o estepe

(36)

Algoritmos e programas

• Construção de algoritmos

Qual o limite do refinamento?

Um algoritmo pode ser escrito de forma gráfica ou textual.

Paradigmas de Programação – Prof. MSc. Isaac Bezerra de Oliveira. 71

• Formas de representação dos algoritmos

Descrição narrativa

Fluxograma convencional

Pseudocódigo

Algoritmos e programas

(37)

Algoritmos e programas

• Descrição narrativa

Pouco usada na prática (permite equívocos).

Algoritmos expressos em linguagem natural.

Paradigmas de Programação – Prof. MSc. Isaac Bezerra de Oliveira. 73

Algoritmos e programas

Descrição narrativa

Exemplo:

Calcular média de um aluno

Obter as suas 2 notas de provas Calcular a média aritmética Se a média for maior que 7, o aluno foi aprovado, senão ele foi reprovado

(38)

Algoritmos e programas

• Fluxograma convencional

Formas geométricas diferentes implicam ações distintas.

Não se preocupa com detalhes de implementação do programa

.

Paradigmas de Programação – Prof. MSc. Isaac Bezerra de Oliveira. 75

Algoritmos e programas

Fluxograma convencional

Início e final do fluxograma

Operação de entrada de dados

Operação de saída de dados

Operação de atribuição

Decisão

(39)

Algoritmos e programas

Fluxograma convencional

Exemplo:

Início

N1, N2

"Aprovado"

MEDIA aaa

(N1 + N2) / 2

MEDIA >= 7

"Reprovado"

Fim

.V. .F.

Paradigmas de Programação – Prof. MSc. Isaac Bezerra de Oliveira. 77

Algoritmos e programas

• Pseudocódigo

Algoritmo escrito em português utilizando convenções próximas de uma linguagem de programação.

Forma de representação rica em detalhes.

Encontra bastante aceitação.

(40)

Algoritmos e programas

Pseudocódigo

Algoritmo <nome_do_algoritmo>

<declaração_de_variáveis>

<subalgoritmos>

Início

<corpo do algoritmo>

Fim

Paradigmas de Programação – Prof. MSc. Isaac Bezerra de Oliveira. 79

Algoritmos e programas

Pseudocódigo

Exemplo:

Algoritmo Calculo_Media Var N1, N2, MEDIA: real Início

Leia N1, N2

MEDIA (N1 + N2) / 2 Se MEDIA >= 7 então

Escreva “Aprovado”

Senão

Escreva “Reprovado”

Fim_se Fim

(41)

Algoritmos e programas

• Programas

Conjunto de instruções executadas numa certa sequência de modo a resolver algum problema.

Formalização de um algoritmo em alguma linguagem de programação.

Paradigmas de Programação – Prof. MSc. Isaac Bezerra de Oliveira. 81

Linguagens de programação

• Linguagens de programação

Conjunto limitado de instruções (vocabulário), associado a um conjunto de regras (sintaxe) que define como as instruções podem ser associadas.

Cada linguagem possui um conjunto único de palavras-

chave ou palavras reservadas e uma sintaxe

específica.

(42)

Linguagens de programação

O que caracteriza uma linguagem de programação?

Sintaxe e semântica bem definidas;

Implementável (executável) com eficiência aceitável.

Universal: deve ser possível expressar todo problema computável.

Natural para expressar soluções de problemas (em um certo domínio de aplicação).

Paradigmas de Programação – Prof. MSc. Isaac Bezerra de Oliveira. 83

Por que existem tantas linguagens?

• Propósitos Diferentes;

• Avanços Tecnológicos.

• Interesses comerciais.

• Cultura e background

científico.

(43)

Linguagens de programação

• De acordo com a sua similaridade com a linguagem humana:

Linguagem de máquina

Linguagem simbólica

Linguagem de alto nível

Paradigmas de Programação – Prof. MSc. Isaac Bezerra de Oliveira. 85

Linguagens de programação

• Linguagem de máquina - Baixo Nível

Mais baixo nível de entendimento pelo ser humano e a única entendida pelo processador (UCP).

Instrução típica em linguagem de máquina:

1001 0100 1111 1010 1001 0100 1111 1010

(44)

Linguagens de programação

Linguagem simbólica (Assembly) – Baixo Nível

Linguagem de nível imediatamente acima da linguagem de máquina.

Permite o uso de nomes (mnemônicos) e símbolos em lugar de números.

Linguagem simbólica para linguagem de máquina (Montador:

Assembler).

Instrução típica em linguagem simbólica:

MOV R1, R2

ADD R1, R2

Paradigmas de Programação – Prof. MSc. Isaac Bezerra de Oliveira. 87

Linguagens de programação

• Linguagem de alto nível

Possui uma estrutura e palavras-chave mais próximas da linguagem humana.

Programas escritos em linguagem de alto nível são convertidos para linguagem de baixo nível através de um programa denominado compilador ou de um interpretador.

Instrução típica em linguagem de alto nível:

(45)

Linguagens de programação

Compilador x Interpretador.

A implementação de cada um dos elementos de uma LP é feita através de processadores:

Compiladores: os programas são transformados por inteiro em um conjunto de instruções que podem ser fisicamente efetuadas por um computador.

Interpretadores: cada expressão é transformada nas instruções correspondentes e acionada no computador.

Um programa compilado geralmente executa mais rapidamente que um programa interpretado.

Paradigmas de Programação – Prof. MSc. Isaac Bezerra de Oliveira. 89

Desenvolvimento de programas

• Processo

• É associado ao uso de ferramentas ou ambientes de desenvolvimento

• Exemplo: IDEs Eclipse e Delphi ...

• Principais etapas:

Geração de código-fonte

Tradução do código-fonte

Editores de ligação

Depuradores

(46)

Desenvolvimento de programas

• Geração de código-fonte

Codificação em alguma linguagem de programação

Editores

Paradigmas de Programação – Prof. MSc. Isaac Bezerra de Oliveira. 91

Desenvolvimento de programas

• Tradução do código-fonte

O código-fonte não é executável.

É necessário que o código-fonte seja traduzido para o código de máquina.

Esta tradução (ou conversão) é realizada de forma automática graças à existência de ferramentas como os montadores (ou Assemblers) e os compiladores.

O código gerado por essas ferramentas é denominado

código-objeto.

(47)

Desenvolvimento de programas

• Editores de ligação

Conhecidos como “Linkers”

Rearranjar o código do programa, incorporando a ele todas as partes referenciadas no código original.

Paradigmas de Programação – Prof. MSc. Isaac Bezerra de Oliveira. 93

Desenvolvimento de programas

Editores de ligação

Conhecidos como linkers

Programa executável Linker

Código Fonte Código

Fonte

Código Fonte

Código Fonte

Biblioteca Código Objeto

Código Objeto

Código Objeto

Código Objeto

(48)

Desenvolvimento de programas

Depuradores ou debuggers

Auxilia o programador a eliminar (ou reduzir) a quantidade de

“bugs” (erros) de execução no seu programa

Executam o programa gerado através de uma interface apropriada que possibilita uma análise efetiva do código do programa

Graças à:

execução passo-a-passo (ou instrução por instrução) de partes do programa

visualização do “estado” do programa através das variáveis e eventualmente dos conteúdos dos registros internos do processador

alteração em tempo de execução de conteúdos de memória ou de variáveis ou de instruções do programa

etc...

95Paradigmas de Programação – Prof. MSc. Isaac Bezerra de Oliveira. 95

Métodos de implementação

Compilação

Programas são traduzidos para linguagem de máquina

Interpretação pura

Programas são interpretados por outro programa chamado interpretador

Sistemas de implementação híbridos

Um meio termo entre os compiladores e os interpretadores puros

(49)

Visão em camadas de um computador

O Sistema operacional e as implementações de linguagem são

colocados em camadas superiores à interface de linguagem de máquina de um computador

Compilação

Traduz programas (linguagem de fonte) em código de máquina (linguagem de máquina)

Tradução lenta, execução rápida

Processo de compilação tem várias fases:

análise léxica: agrupa os caracteres do programa fonte em unidades léxicas

análise sintática: transforma unidades léxicas em árvores de análise sintática (parse trees), que representam a estrutura sintática do programa

análise semântica: gera código intermediário geração de código: código de máquina é gerado

(50)

O processo de compilação

The Compiling Process

(51)

Gargalo de Von Neumann

A velocidade de conexão entre a memória de um computador e seu processador determina a velocidade do computador

Instruções de programa normalmente podem ser executadas mais rapidamente do que a velocidade de conexão, o que resulta em um gargalo

Conhecido como gargalo de von Neumann; é o fator limitante primário na velocidade dos computadores

Interpretação pura

Sem tradução

Fácil implementação de programas (mensagens de erro em tempo de execução podem referenciar unidades de código fonte)

Execução mais lenta (tempo de execução de 10 a 100 vezes mais lento do que nos sistemas compilados)

Geralmente requer mais espaço

Raramente usada em linguagens de alto nível

Volta significativa com algumas linguagens de scripting e para a

Web (como JavaScript e PHP)

(52)

Processo de interpretação pura

Sistemas de implementação híbridos

Um meio termo entre os compiladores e os interpretadores puros

Uma linguagem de alto nível é traduzida para uma linguagem intermediária que permite fácil interpretação

Mais rápido do que interpretação pura

Exemplos

Programas em Perl eram parcialmente compilados para detectar erros antes da interpretação

As primeiras implementações de Java eram todas híbridas; seu formato intermediário, byte code, fornece portabilidade para qualquer máquina que tenha um interpretador de bytecodes e um sistema de tempo de execução associado (juntos, são chamados de Máquina Virtual Java)

(53)

Sistema de implementação híbrido

The Interpreting Process

(54)

Sistemas de implementação Just-in-Time

Inicialmente traduz os programas para uma linguagem intermediária

Então, compila os métodos da linguagem intermediária para linguagem de máquina quando esses são chamados

A versão em código de máquina é mantida para chamadas subsequentes

Sistemas JIT são agora usados amplamente para programas Java

As linguagens .NET também são implementadas com um sistema JIT

Pré-processadores

As instruções de pré-processador são comumente usadas para especificar que o código de outro arquivo deve ser incluído

Um pré-processador é um programa que processa um programa imediatamente antes de o programa ser compilado para expandir macros embutidos

Um exemplo conhecido: pré-processador de C

expande#include, #define e macros similares

(55)

Ambientes de programação

Coleção de ferramentas usadas no desenvolvimento de software

UNIX

Um ambiente de programação mais antigo

Agora bastante usado por meio de uma interface gráfica com o usuário (GUI) que roda sobre o UNIX

Microsoft Visual Studio .NET

Grande e complexo

Usado para desenvolver software em qualquer uma das linguagens .NET

NetBeans

Usado primariamente para o desenvolvimento de aplicações Web usando Java, mas também oferece suporte a JavaScript, Ruby e PHP

Exercício de Fixação - 01

1.

O que é um paradigma de programação?

2.

Qual o objetivo de conhecer Paradigmas de Programação?

3.

Quais são os principais paradigmas?

4.

Quais são as Categorias dos paradigmas de programação?

5.

Quais os Domínios de programação e no que isso implica na escolha de uma linguagem?

6.

O que uma linguagem necessita para obter sucesso de uso?

7.

Apresente a definição de cada umas das Características-

Chaves das linguagens de programação.

Referências

Documentos relacionados

O desenvolvimento do sistema unificado de inscrição e administração da concessão de bolsas de auxílio estudantil essenciais foi crucial para atender de forma correta e

Se você quiser, que ninguem mais entre no grupo, mude de privado para bloqueado. Ninguem pode perdir mais permissão

O motor deve sempre funcionar na rotação máxima para evitar vibra- ções anormais na máquina.. Mantenha as mãos e os pés afastados da(s)

Na hipótese de os preços registrados tornarem-se superiores aos valores praticados no mercado, caberá ao TRT da 4ª Região convocar o(s) detentor(es) do(s)

Em seguida, ainda fazendo uso da palavra e condicionada à celebração do Aditamento a ser oportunamente aprovado pela Assembléia Geral de Debenturistas, o Diretor

Assinale a afirmativa CORRETA. A) Programas escritos em linguagem assembly são portáveis. B) Interpretador é um programa que, a partir de um código fonte em linguagem de

17.Promover capacitação/formação de servidores públicos para utilização de software livre. 18.Formular uma política nacional para o software livre... Objetivos da Câmara

6.4 Em caso de abertura de vaga com o perfil exigido neste Comunicado para outras Unidades pertencentes ao Sistema Findes, num prazo de até 1 (um) ano, a contar da data da