Principais paradigmas de programação. Programação imperativa Programação funcional Programação lógica Programação OO
|
|
- Adelino Affonso Ramalho
- 6 Há anos
- Visualizações:
Transcrição
1
2 Principais paradigmas de programação Programação imperativa Programação funcional Programação lógica Programação OO
3 Programação Imperativa É o paradigma mais usado. Programas são definidos através de sequências de comandos. Ocorre mutação de variáveis (atribuição). Laços são as estruturas básicas de controle. Programação OO: dependência do paradigma imperativo.
4 Programação Funcional Programas são expressões que eventualmente retornam um valor. Programação é feita através de valores imutáveis e operações envolvendo esses valores. Sem variáveis mutáveis, sem atribuição, sem laços e outras estruturas de controle imperativas. Funções como mecanismo básico de abstração. Funções como valores que podem ser produzidos, consumidos e combinados. Proximidade com a matemática -> facilita o trabalho dos compiladores
5 Introdução à Programação Funcional Origem do paradigma Alonzo Church and Haskell Curry. Década de 30: Alonzo Church desenvolveu as bases do Cálculo Lambda. Formalismo matemático para definir e invocar funções
6 Introdução à Programação Funcional Haskell Curry desenvolveu os princípios da lógica combinatória Mostra como combinar funções para representar tarefas de computação.
7 Introdução à Programação Funcional Expansão do paradigma Permite estruturar computações com efeitos colaterais (que mudam o estado do programa) separados do código. Objetivo do Paradigma Funcional: Escrever código sem efeitos colaterais
8 Introdução à Programação Funcional Efeitos colaterais Na matemática, uma função possui efeito colateral se ela realiza alguma operação diferente do cálculo de seu retorno Qualquer operação além do retorno altera o estado do programa. Exemplos: Modificar uma variável dentro da função; Modificar uma estrutura de dados; Ler uma entrada digitada pelo usuário; Imprimir alguma informação na console;...
9 Introdução à Programação Funcional Conceito: Funções sem efeitos colaterais: não alteram o estado do programa. São chamadas de funções puras. Vantagens no uso de funções puras: Facilidade para analisar, testar e depurar programas. As variáveis não mudam! Facilita a programação concorrente.
10 Introdução à Programação Funcional Conceito: Transparência referencial Capacidade de referenciar uma função pura através da computação de seu retorno. Exemplo: y = sin(x) Ao longo do programa, podemos fazer referência a y no lugar de sin(x).
11 Introdução à Programação Funcional Princípios da Programação Funcional Imutabilidade de Estado Funções de Primeira Classe Funções de Alta Ordem Funções Puras e Efeitos Colaterais Recursividade Avaliação Não-estrita Programação declarativa
12 Imutabilidade de Estado Começando com um exemplo int s = 0; for (int i = 0; i < data.length; i++) { s += data[i]; } O que faz o trecho de código acima? O que pode dar errado nesse código?
13 Imutabilidade de Estado int s = 0; for (int i = 0; i < data.length; i++) { s += data[i]; } Se algum processo externo ao trecho alterar algum elemento de data, ocorrerá um efeito colateral. A variável data deve ser tratada como imutável. Após a sua definição, não serão permitidas alterações em seus valores
14 Imutabilidade de Estado Valores imutáveis Variáveis e objetos imutáveis são thread-safe A maioria das linguagens de programação não fazem distinção entre um valor (o conteúdo armazenado na memória) e a variável ao qual o valor se refere. Não alteram o estado do programa Os compiladores conseguem otimizar com maior eficiência objetos imutáveis
15 Imutabilidade de Estado Por que precisamos de variáveis imutáveis? Para facilitar a programação concorrente Várias threads alterando o mesmo valor -> necessidade de sincronização Para facilitar os testes Não é necessário acompanhar e testar as alterações na variável
16 Imutabilidade de Estado Entretanto... Algum nível de mutação é inevitável. Exemplo: rotinas de I/O Como resolver? Encapsular as partes dos programas que são mutáveis. Padrões de projetos Actor e Software Transactional Memory.
17 Imutabilidade de Estado Como resolver? int s = 0; for (int i = 0; i < data.length; i++) { s += data[i]; } Em Java final int data[]; int s = 0; for (int i = 0; i < data.length; i++) { s += data[i]; }
18 Imutabilidade de Estado Em Scala (versão 1) var s = 0 for(i <- data) s+=i Outra versão var s = 0 data.foreach(i => s+=i)
19 Funções com valores de 1ª classe Método tradicional de passagem de parâmetros em Java: Passar valores primitivos ou objetos. Valores primitivos e objetos são valores de 1ª classe em Java. É possível passar um método como parâmetro de outro método? Qual a diferença entre um método e uma função?
20 Funções com valores de 1ª classe Métodos Bloco de código pertencente obrigatoriamente à uma classe; Só pode ser invocado no contexto da própria classe; Java só possui métodos -> não são valores de primeira classe! (i) Não é possível passar um método como parâmetro, (ii) retornar um método de outro método ou (iii) atribuir um método como valor de uma variável Funções Função não é amarrada com nenhuma classe ou objeto; Pode ser invocada em qualquer parte do programa;
21 Funções com valores de 1ª classe Em programação funcional Uma função pode ser composta com outras funções; Uma função pode ser passada como parâmetro de outra função; Uma função pode retornar outra função como valor; Uma função pode ser atribuída a uma variável como valor. Funções denotam valores de 1ª classe
22 Funções com valores de 1ª classe Exemplos da matemática Seja f a função f(x)=x+1 e g a função g(x)=x 2 +x Construções válidas: (i) f(g(x)), g(f(x)), f(f(x)),... (ii) f(g(x))(10)(funções se associam à direita) (iii) f(x)= y (y é imutável)
23 Lambdas e Closures Em linguagens funcionais, a legibilidade do código pode ser melhorada através de funções anônimas, ou lambdas. Função anônima: é uma expressão cujo resultado é avaliado por uma função. A função é definida sem um nome Exemplo: (x,y) -> x+y Qual o tipo de (x,y)? Solução: inferência de tipos
24 Lambdas e Closures Recurso avançado de linguagens funcionais Um bloco de código pode fazer referência à variáveis livres. Variável livre: não é passada como argumento ou definida localmente (no escopo do bloco). Em Java: inner classes são exemplos de variáveis livres. Um closure é a formação de um bloco de código com as características acima
25 Funções de alta ordem Recurso avançado de linguagens funcionais São funções de 1ª classe que permitem a passagem de outras funções como parâmetro ou retornam uma função. São chamadas de funções de alta ordem. Exemplos típicos: Funções com operações sobre estrutura de dados: Listas, pilhas, filas, árvores, etc. Padrões de combinação de funções. Exemplo: f(g(x)), (succ(pred e))->e, (pred (succ e))->e
26 Efeitos colaterais Mutação de estado é fonte de erros nos programas concorrentes -> provocam efeitos colaterais. Na matemática, funções não possuem efeitos colaterais. Exemplo: a função sin(x) não altera o estado externo do programa quando calculada. A função sin(x) e o valor retornado são sinônimos. É possível representar o resultado da chamada pela própria chamada! Os compiladores podem armazenar sin(x)ao invés do valor retornado pela função.
27 Efeitos colaterais Estilo de programação: criação de funções puras. Permitir que a função só possa alterar valores internamente Em programação funcional, uma função não deve alterar variáveis globais.
28 Recursão Em linguagens tipicamente funcionais um loop clássico não é permitido: for (int i=0; i<x; i++ {... Motivo: a variável i é mutável. Solução: usar recursão para iterar sobre valores.
29 Recursão Resolvendo o problema imutabilidade com recursão int s = 0; for (int i = 0; i < data.length; i++) { s += data[i]; }
30 Recursão Resolvendo o problema imutabilidade com recursão // versão com Array def somaarray(x:array[int], size:int):int = { if (size == 1) return x(0) else return x(size-1) + somaarray(x, size-1) } // Versão com List def somalista(xs: List[Int]): Int = { if(xs.isempty) 0 else xs.head + somalista(xs.tail) }
31 Recursão Resolvendo o problema imutabilidade com recursão // versão com List e operação de redução x.foldleft(0)(_+_) // Obs.: em Scala, o mais indicado seria usar o // método sum da classe List // Exemplo: x.sum
32 Exercício 1 Para relembrar e praticar o uso de algoritmos recursivos, resolva os exercícios abaixo: 1. Crie um algoritmo recursivo para imprimir os elementos de um array com N posições na ordem crescente. 2. Crie um algoritmo recursivo para calcular o valor de x y (x elevado a y), onde x e y são inteiros. 3. Dada uma estrutura de dados do tipo pilha de tamanho N, escreva um algoritmo recursivo para retirar da pilha o elemento i, onde 1 i N.
33 Avaliação não-estrita de funções Em outros paradigmas de programação, devemos atribuir um valor para uma variável, logo após a sua declaração. Exemplo (em Java): int i =10; Chamado de avaliação estrita. No paradigma funcional podemos utilizar variáveis que não foram computadas após a sua declaração. O valor da variável será avaliado sob demanda. Chamado de avaliação não-estrita.
34 Avaliação não-estrita de funções Exemplo de aplicação: Vamos usar a função range em Python 2.x: >>> r = range(10) >>> print r [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] Os 10 valores da lista são atribuídos logo após a sua declaração (avaliação estrita) Imagine agora uma lista gigante, com bilhões de elementos. Toda a lista é alocada na memória logo após a sua atribuição.
35 Avaliação não-estrita de funções Exemplo de aplicação: A função xrange em Python 2.7 funciona com avaliação não-estrita: >>> r = xrange(10) >>> print r xrange(10) Os valores de r são atribuídos sob demanda, em tempo de execução. Para imprimir a lista: >>> lst = [x for x in r] >>> print(lst) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
36 Avaliação não-estrita de funções Na matemática, existem inúmeros conjuntos infinitos Exemplo: números inteiros Esses conjuntos só podem ser representados de forma simbólica. Não é possível escrever um programa que imprima todos os número inteiros! Como lidamos com esses conjuntos? Subconjuntos de valores finitos Cada subconjunto é avaliado sob demanda, de forma não-estrita.
37 Programação declarativa Linguagens funcionais são declarativas por natureza. Para entender, vamos olhar a função Fatorial factorial(n) = 1 if n = 1 n * factorial(n-1) if n > 1
38 Programação declarativa Solução Declarativa (Java) Solução Imperativa (Java) public static long declarativefactorial(int n) { assert n > 0 : "Argument must be greater than 0"; I f (n == 1) return 1; else return n * declarativefactorial(n-1); } public static long imperativefactorial(int n) { assert n > 0 : "Argument must be greater than 0"; Long result = 1; for (int i = 2; i<= n; i++) { result *= i; } return result; }
puras um ou mais apenas mesmos
Funções Relembrando um dos objetivos do paradigma de programação funcional: Escrever funções puras Na prática, uma função pura apresenta as seguintes características: Possui um ou mais parâmetros; Realiza
Leia maisLinguagens de Programação
Linguagens de Programação Fabio Mascarenhas - 2015.2 http://www.dcc.ufrj.br/~fabiom/lp Introdução Quais das expressões abaixo têm o mesmo significado? (vector-ref a 42) Introdução Quais das expressões
Leia maisLinguagens de Programação
Linguagens de Programação Fabio Mascarenhas 2017.2 http://www.dcc.ufrj.br/~fabiom/lp Introdução Quais das expressões abaixo têm o mesmo significado? (vector-ref a 42) Introdução Quais das expressões abaixo
Leia maisParadigmas de Programação
Paradigmas de Programação Fabrício Olivetti de França 14 de Junho de 2018 1 λ-cálculo 2 Computabilidade Computabilidade é uma área de estudo central da Ciência da Computação. Ela estuda a possibilidade
Leia maisFunções são blocos de código que podem ser nomeados e chamados de dentro de um programa.
Prof. André Backes Função Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa. print(): função que escreve na tela input (): função que lê o teclado 1 Função Facilitam
Leia mais3. Linguagem de Programação C
Introdução à Computação I IBM1006 3. Linguagem de Programação C Prof. Renato Tinós Departamento de Computação e Matemática (FFCLRP/USP) 1 Principais Tópicos 3.7. Funções 3.7.1. Introdução 3.7.2. Uso de
Leia maisEstruturas de dados funcionais
Estruturas de dados funcionais Relembrando... Programas funcionais não devem atualizar variáveis ou alterar o estado. Princípios da imutabilidade de estado e efeito colateral. Como utilizar estruturas
Leia maisParadigmas de Programação
Paradigmas de Programação Fabrício Olivetti de França 07 de Junho de 2018 1 Paradigmas de Programação 2 Paradigmas de Programação Definição: estilo de programação, a forma como você descreve a solução
Leia maisUniversidade Federal de Uberlândia Faculdade de Computação. Linguagem C: funções
Universidade Federal de Uberlândia Faculdade de Computação Linguagem C: funções Prof. Renato Pimentel 1 Subprogramas Subprograma: programa que auxilia o programa principal na realização de uma determinada
Leia maisALGORITMOS I. Procedimentos e Funções
Procedimentos e Funções Jaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 1 MÓDULOS São blocos de instruções que realizam tarefas específicas. Carregado uma vez e pode ser executado quantas vezes
Leia maisFundamentos de programação
Fundamentos de programação Recursividade Edson Moreno edson.moreno@pucrs.br http://www.inf.pucrs.br/~emoreno O que é recursividade? Técnica baseada em divisão e conquista Buscar solucionar o problema dividindo
Leia maisLinguagens de Programação Funcional
Linguagens de Programação Funcional Conceitos de Linguagens de Programação Pedro Libório Setembro de 2013 2 Roteiro Introdução Funções matemáticas Fundamentos das linguagens de programação funcionais A
Leia maisLinguagem Haskell. Universidade Estadual Santa Cruz Conceitos de Linguagens de Programação. Tiago Carneiro 19 Agosto 2013
Linguagem Haskell Universidade Estadual Santa Cruz Conceitos de Linguagens de Programação Tiago Carneiro 19 Agosto 2013 1 1 Linguagem Haskell Linguagem de programação funcional É um paradigma de programação
Leia maisProgramação II. Introdução a Funções. Bruno Feijó Dept. de Informática, PUC-Rio
Programação II Introdução a Funções Bruno Feijó Dept. de Informática, PUC-Rio Funções Matemáticas função é uma relação de um ou vários valores de argumentos de entrada em um ÚNICO resultado de saída. y
Leia maisLINGUAGEM C: FUNÇÕES FUNÇÃO 04/07/2017. Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa.
LINGUAGEM C: FUNÇÕES Prof. André Backes FUNÇÃO Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa. printf(): função que escreve na tela scanf(): função que lê o teclado
Leia maisScala: Primeiros passos com o paradigma funcional
Scala: Primeiros passos com o paradigma funcional Diego Saraiva diegosaraiva@gmail.com Ronualdo Maciel raxmac@gmail.com 28 de Outubro de 2010 Sumário 1 Introdução Apresentando Scala Por que utilizar Scala?
Leia maisTécnicas de projeto de algoritmos: Indução
Técnicas de projeto de algoritmos: Indução ACH2002 - Introdução à Ciência da Computação II Delano M. Beder Escola de Artes, Ciências e Humanidades (EACH) Universidade de São Paulo dbeder@usp.br 08/2008
Leia maisSuponha um conjunto habitacional, com várias famílias... imagina se todas elas morassem em uma única casa?
Funções Suponha um conjunto habitacional, com várias famílias...... imagina se todas elas morassem em uma única casa? Funções Introdução à Computação 1 de 28 Funções Na Programação, funções são conjuntos
Leia maisComputação I: Linguagem de Programação Python
Computação I: Linguagem de Programação Python reginaldo.re@utfpr.edu.br * Parte da apresentação foi gentilmente cedida pelo prof. Igor Steinmacher Agenda Objetivos Python: conceitos básicos O Ambiente
Leia maisAlgoritmos e Programação
Algoritmos e Programação Aula 7 Vetores Profa. Marina Gomes marinagomes@unipampa.edu.br 19/05/2017 Engenharia de Computação - Unipampa 1 Motivação Problema: Leia as notas de uma turma de cinco estudantes
Leia maisProgramação II RECURSÃO
Programação II RECURSÃO Bruno Feijó Dept. de Informática, PUC-Rio Motivação Escher: Metamorphosis (1937) - Drawing Hands (1948) Relativity (1953) http://www.worldofescher.com/gallery/ Alguém diz: Esta
Leia mais3. Linguagem de Programação C
Introdução à Computação I IBM1006 3. Linguagem de Programação C Prof. Renato Tinós Departamento de Computação e Matemática (FFCLRP/USP) 1 Principais Tópicos 3.2. Estrutura de Programas e Representação
Leia maisNomes, vinculações e escopos
Nomes, vinculações e escopos Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual
Leia maisAula de hoje. Comandos. Comandos simples. Comandos. Comandos de controle. Bloco de comandos. SCC Introdução à Programação para Engenharias
SCC 124 - Introdução à Programação para Engenharias Comandos Professor: André C. P. L. F. de Carvalho, ICMC-USP Pos-doutorando: Isvani Frias-Blanco Monitor: Henrique Bonini de Britto Menezes 1 Aula de
Leia maisTécnicas de análise de algoritmos
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS Técnicas de análise de algoritmos Algoritmos e Estruturas de Dados I Natália Batista https://sites.google.com/site/nataliacefetmg/ nataliabatista@decom.cefetmg.br
Leia maisProcessamento da Informação
Processamento da Informação Fabrício Olivetti de França 02 de Fevereiro de 2019 Topics 1. Processamento da Informação 2. Conceitos de Programação 3. Funções e Programas de Computador 1 Processamento da
Leia maisLINGUAGEM C: FUNÇÕES FUNÇÃO 08/01/2018. Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa.
LINGUAGEM C: FUNÇÕES Prof. André Backes FUNÇÃO Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa. printf(): função que escreve na tela scanf(): função que lê o teclado
Leia maisEderson Luiz da Silva Ciência da Computação. Algoritmos e Programação
Ederson Luiz da Silva Ciência da Computação Algoritmos e Programação Linguagem de programação Linguagem de Programação Linguagem de máquina http://www.assemblyprogressivo.net/p/curso.html Linguagem de
Leia maisProgramação: Vetores
Programação de Computadores I Aula 09 Programação: Vetores José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2011-1 1/62 Motivação Problema Faça um programa que leia
Leia maisLinguagens de Programação
Linguagens de Programação Fabio Mascarenhas - 2013.1 http://www.dcc.ufrj.br/~fabiom/lp Expressões condicionais Scala tem uma expressão if-else para expressar escolha entre alternativas que se parece muito
Leia maisIntrodução ao Python. Prof. Fabrício Olivetti de França Universidade Federal do ABC
Introdução ao Python Prof. Fabrício Olivetti de França Universidade Federal do ABC Python Linguagem interpretada criada em 1991 Objetivos: enfatizar a legibilidade do código e, encurtar o tamanho dos códigos.
Leia maisao paradigma imperativo
PARADIGMA FUNCIONAL PARADIGMA FUNCIONAL: INTRODUÇÃO G Exemplos de linguagens funcionais LISP - Início: LP puramente funcional - Depois: acréscimo de alguns recursos imperativos (aumentaram eficiência de
Leia maisPROGRAMAÇÃO de COMPUTADORES: LINGUAGEM FORTRAN 90/95
PROGRAMAÇÃO de COMPUTADORES: LINGUAGEM FORTRAN 90/95 Exercícios de revisão Lista 01: a) Monte um mapa conceitual indicando as relações entre os seguintes conceitos, no contexto do assunto visto em aula:
Leia maisModularidade - Funções e Procedimentos
Modularidade - Funções e Procedimentos José Gustavo de Souza Paiva Problema Em diversas situações, é preciso executar uma tarefa específica diversas vezes em um programa, variando apenas os dados de entrada
Leia maisIntrodução à Programação Aula 09. Prof. Max Santana Rolemberg Farias Colegiado de Engenharia de Computação
Introdução à Programação Aula 09 Prof. Max Santana Rolemberg Farias max.santana@univasf.edu.br Colegiado de Engenharia de Computação A linguagem C, como qualquer outra linguagem de programação, permite
Leia maisProcessamento da Informação
Processamento da Informação Fabrício Olivetti de França 02 de Fevereiro de 2019 Topics 1. Recursão 1 Recursão Indução Matemática Em bases matemáticas vocês aprenderam sobre indução matemática: Provamos
Leia maisAula 11: Modularização
Aula 11: Modularização Fernanda Passos Universidade Federal Fluminense Programação de Computadores IV Fernanda Passos (UFF) Modularização Programação de Computadores IV 1 / 37 Agenda 1 Revisão e Contexto
Leia maisNomes, vinculações e escopos
Nomes, vinculações e escopos Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual
Leia maisAula prática 5. Funções Recursivas
Programação Funcional UFOP DECOM 2014.1 Aula prática 5 Funções Recursivas Resumo Definições recursivas são comuns na programação funcional. Nesta aula vamos aprender a definir funções recursivas. Sumário
Leia maisInformações. Programação Funcional. Por que um curso de programação funcional? O que é Programação Funcional? Objetivos da programação funcional
Informações Sérgio Soares scbs@cin.ufpe.br Linguagens de Programação 2 Paradigma de Carga Horária: 60h Horário: 2 as e 6 as das 10h30 as 12h10 Local: 2 as no LIP4 e 6 as no LIP1 Grupo http://groups.yahoo.com/group/lp2_poli
Leia maisVariáveis primitivas e Controle de fluxo
Variáveis primitivas e Controle de fluxo Material baseado na apostila FJ-11: Java e Orientação a Objetos do curso Caelum, Ensino e Inovação, disponível para download em http://www.caelum.com.br/apostilas/
Leia maisProgramação. Prof Marcelo Zorzan Prof a Melissa Zanatta
Programação - Recursividade - Prof Marcelo Zorzan Prof a Melissa Zanatta É o processo de resolução de um problema, reduzindo-o em um ou mais subproblemas com as seguintes características: - São idênticos
Leia maisUniversidade Estadual de Santa Cruz
Universidade Estadual de Santa Cruz Conceitos de Linguagens de Programação Linguagens Imperativas e Funcionais Prof. Dr. Rogério Vargas Ilhéus-Ba, 16 de Maio de 2013. Linguagens Imperativas Linguagens
Leia maisPonteiros de Variáveis
Ponteiros de Variáveis C++ permite o armazenamento e a manipulação de valores de endereços de memória. Para cada tipo existente, há um tipo ponteirocapaz de armazenar endereços de memória em que existem
Leia maisIntrodução a Algoritmos Parte 08
Universidade Federal do Vale do São Francisco Curso de Engenharia de Computação Introdução a Algoritmos Parte 08 (Baseado no Material do Prof. Marcelo Linder) Prof. Jorge Cavalcanti jorge.cavalcanti@univasf.edu.br
Leia maisUNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo
UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO TEORIA DA COMPUTAÇÃO Aula 04 Programa Recursivo e Máquinas Prof.ª Danielle Casillo Funções recursivas Alguma função é recursiva quando
Leia maisParadigmas de Programação
Paradigmas de Programação Fabrício Olivetti de França 05 de Junho de 2018 1 Paradigmas de Programação 2 Paradigmas de Programação Haskell 3 Haskell Surgiu em 1990 com o objetivo de ser a primeira linguagem
Leia maisEstruturas de Dados. Módulo 4 Funções. 9/8/2005 (c) Dept. Informática - PUC-Rio 1
Estruturas de Dados Módulo 4 Funções 9/8/2005 (c) Dept. Informática - PUC-Rio 1 Referências Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora Campus (2004)
Leia maisRecursividade. Prof. Jesus José de Oliveira Neto
Recursividade Prof. Jesus José de Oliveira Neto Algoritmos podem ser definidos de duas formas: Forma iterativa ou não recursiva: utiliza laços de repetição (while, for, do/while) Forma recursiva: métodos
Leia maisLinguagens de Programação. Fluxo de Controle. Carlos Bazilio
Linguagens de Programação Fluxo de Controle Carlos Bazilio carlosbazilio@id.uff.br http://www.ic.uff.br/~bazilio/cursos/lp Fluxo de Controle Mecanismos utilizados para especificar ordem de execução de
Leia maisVisão Geral... e conceitos básicos
Visão Geral.. e conceitos básicos 1 Curso de... Programação O que se estuda aqui? Algoritmos 2 E o que são algoritmos? Sequência finita e não ambígua de passos para a solução de um problema. Lembre- se
Leia maisPermite modularidade (dividir programa em partes): Facilita a depuração (debug) e portabilidade.
222222222222222222222222222 8 - FUNÇÕES 81 - Características básicas É um trecho independente de código, com objetivos bem definidos Programas em C, geralmente consistem em várias pequenas funções, ao
Leia maisProgramação Estruturada
Programação Estruturada Recursão Professores Emílio Francesquini e Carla Negri Lintzmayer 2018.Q3 Centro de Matemática, Computação e Cognição Universidade Federal do ABC Recursão Recursão 1 Recursão 2
Leia maisIntrodução à Programação
Introdução à Programação Aula 02 Algoritmos e Ciclo de Desenvolvimento Edirlei Soares de Lima Modelo de um Computador Linguagem de Máquina Um processador executa instruções de máquina.
Leia maisLinguagens de Programação
Linguagens de Programação Fabio Mascarenhas - 2013.1 http://www.dcc.ufrj.br/~fabiom/lp Ambientes Substituição é uma semântica inspirada na forma como calculamos expressões algébricas, mas vimos que ela
Leia maisDAS5102 Fundamentos da Estrutura da Informação
Ponteiros e Funções Funções ou sub-rotinas são parcelas de código que podem ser invocadas a partir do programa principal ou até mesmo por outras sub-rotinas. Elas têm como objetivo a execução de uma tarefa
Leia maisALGORITMOS AVANÇADOS UNIDADE II Recursividade. Luiz Leão
Luiz Leão luizleao@gmail.com http://www.luizleao.com Conteúdo Programático 2.1 - Definições recursivas 2.2 - Como implementar recursividade 2.3 - Quando não usar recursividade 2.4 - Desenvolvendo algoritmos
Leia maisEstruturas de Repetição
Estruturas de Repetição Lista de Exercícios - 04 Programação de Computadores I Professor: Edwar Saliba Júnior Estruturas de Repetição O que são e para que servem? São comandos que são utilizados na programação
Leia maisProgramação WEB I Funções
Programação WEB I Funções Funções As funções podem ser definidas como um conjunto de instruções, agrupadas para executar uma determinada tarefa. Dentro de uma função pode existir uma chamada a outra função.
Leia maisRecursão. Prof. Fabrício Olivetti de França. (com inspirações do slide do prof. Rodrigo Hausen)
Recursão Prof. Fabrício Olivetti de França (com inspirações do slide do prof. Rodrigo Hausen) Recursão Para entender recursão, você primeiro deve entender recursão! Recursão Forma de pensar em uma solução
Leia mais1. Faça um programa que leia uma string digitada pelo usuário e salve em um arquivo em branco.
Segunda lista de exercícios v100 Engenharia Elétrica - Eletrônica 2º Semestre de 2015 Prof: Daniel Rodrigo Ferraz Bonetti SSC0300 Linguagem de Programação e Aplicações 1 Faça um programa que leia uma string
Leia maisAlgoritmos e Programação
Algoritmos e Programação Aula 3 Introdução a Linguagem C Profa. Marina Gomes marinagomes@unipampa.edu.br 1 Aula de Hoje - Criar programas simples em C utilizando a estrutura básica; - Declarar variáveis;
Leia maisMC102 Aula 26. Instituto de Computação Unicamp. 17 de Novembro de 2016
MC102 Aula 26 Recursão Instituto de Computação Unicamp 17 de Novembro de 2016 Roteiro 1 Recursão Indução 2 Recursão 3 Fatorial 4 O que acontece na memória 5 Recursão Iteração 6 Soma em um Vetor 7 Números
Leia maisDesafios de Programação
Desafios de Programação 2018.1 Programação Dinâmica É um método de projeto de algoritmos que utiliza a memorização para melhorar a eficiência de um algoritmo. Método parecido com o de divisão e conquista
Leia maisLinguagens de Programação Aula 11
Linguagens de Programação Aula 11 Celso Olivete Júnior olivete@fct.unesp.br Na aula passada Uma definição de subprograma descreve as ações representadas pelo subprograma Subprogramas podem ser funções
Leia maisINF 1005 Programação I
INF 1005 Programação I Aula 02 Algoritmos e Ciclo de Desenvolvimento Edirlei Soares de Lima Modelo de um Computador Linguagem de Máquina Um processador executa instruções de máquina
Leia maisO que é uma variável?
Escopo, Ligação e Ambiente de Execução mleal@inf.puc-rio.br 1 O que é uma variável? Uma variável pode ser definida como uma tupla r nome é um string usado para
Leia maisSuponha um conjunto habitacional, com várias famílias... imagina se todas elas morassem em uma única casa?
Funções Suponha um conjunto habitacional, com várias famílias...... imagina se todas elas morassem em uma única casa? Funções Programação de Computadores 1 de 28 Funções Na Programação, funções são conjuntos
Leia maisSub Rotinas. Estrutura de Dados. Prof. Kleber Rezende
Sub Rotinas Estrutura de Dados Prof. Kleber Rezende Considerações Iniciais Uma dos métodos mais comuns e amplamente utilizados em programação de computadores é o Top-Down. Nesta abordagem um problema é
Leia maisIntrodução à Programação / Programação I
Introdução à Programação / Programação I Aula 6: Mais sobre ciclos Rita P. Ribeiro 2018/2019 Departamento de Ciência de Computadores Nesta aula 1. Ciclos for 2. Ciclos while 3. Saída e continuação num
Leia maisMineração de Dados com Big Data. Prof. Fabrício Olivetti de França Universidade Federal do ABC
Mineração de Dados com Big Data Prof. Fabrício Olivetti de França Universidade Federal do ABC Introdução Mineração de Dados Extração e descoberta de conhecimentos de bases de dados. Interdisciplinar: aprendizado
Leia maisRecursividade. Métodos iterativos. Prof. Cesar Augusto Tacla. Métodos iterativos utilizam estruturas de repetição
Recursividade Prof. Cesar Augusto Tacla Métodos iterativos Métodos iterativos utilizam estruturas de repetição For While Do while Normalmente, um método invoca outros métodos, não a si mesmo. 2 1 Recursividade
Leia maisCapacitação em Linguagem C Parte 1
Capacitação em Linguagem C Parte 1 Andrey Souto Maior Giuseppe Portolese Universidade Estadual de Maringá - Centro de Tecnologia Departamento de Informática 21 de outubro de 2015 Sumário I Definição e
Leia maisLista de Linguagens de Programação 7
Lista de Linguagens de Programação 7 Nome: Matrícula: 1. Dizemos que uma linguagem é segura quando esta linguagem não permite que operações sejam aplicadas a argumentos que não possuam os tipos previstos
Leia maisA resposta apresentada em aula, no quadro, (em Chapin e/ou Português Estruturado) está correta?
23 Algoritmos com Repetição Nos exemplos e exercícios vistos até agora, sempre foi possível resolver os problemas com uma sequência de instruções que eram executadas apenas uma vez. Existem três estruturas
Leia maisLinguagens de Programação
Linguagens de Programação Fabio Mascarenhas - 2015.2 http://www.dcc.ufrj.br/~fabiom/lp Funções de alta ordem Em uma linguagem funcional, uma função é um valor como qualquer outro Isso quer dizer que funções
Leia maisPLANO DE UNIDADE DIDÁTICA- PUD
Professor: Marcus Vinícius Midena Ramos Coordenação: Ricardo Argenton Ramos Data: 03/08/2010 Página: 1 de 5 EMENTA: Conceitos básicos de linguagens. Histórico, classificação e principais aplicações de
Leia maisCURSO SUPERIOR DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS DISCIPLINA : INTRODUÇÃO À LÓGICA DE PROGRAMAÇÃO ASSUNTO: ALGORITMOS
CURSO SUPERIOR DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS DISCIPLINA : INTRODUÇÃO À LÓGICA DE PROGRAMAÇÃO ASSUNTO: ALGORITMOS PROFESSOR : Romilson Lopes Sampaio Introdução a Lógica de Programação
Leia maisParadigmas de Linguagem de. Programação Profª. Roberta B Tôrres de programação referem-se a:
Paradigmas de Linguagem de Programação Conceitos Elementares Profª. Roberta B Tôrres rbtorresiff@gmail.com Conceitos Elementares de uma Linguagem de Programação Os conceitos mais elementares, suportados
Leia maisRecursividade. Objetivos do módulo. O que é recursividade
Recursividade Objetivos do módulo Discutir o conceito de recursividade Mostrar exemplos de situações onde recursividade é importante Discutir a diferença entre recursividade e iteração O que é recursividade
Leia maisAlgoritmos e Programação. Linguagem C Procedimentos e. Eliane Pozzebon
Algoritmos e Programação Linguagem C Procedimentos e Funções Eliane Pozzebon Procedimentos e Funções Procedimentos são estruturas que agrupam um conjunto de comandos, que são executados quando o procedimento
Leia maisRevisão: Tipo Abstrato de Dados Recursividade
Algoritmos e Estrutura de Dados II Revisão: Tipo Abstrato de Dados Recursividade Prof a Karina Oliveira kkco@dei.unicap.br Introdução Estudo das estruturas de dados envolve dois objetivos complementares:
Leia maisSubprogramação. Vanessa Braganholo
Subprogramação Vanessa Braganholo vanessa@ic.uff.br O que vimos até agora } Programas usam apenas sequência, repetição e decisão } Capacidade de resolver diversos problemas, mas difícil de resolver problemas
Leia maisAula 13 Oficina de Programação Modularização. Profa. Elaine Faria UFU
Aula 13 Oficina de Programação Modularização Profa. Elaine Faria UFU - 2017 O que é modularização? No século XIX, Henry Ford, para baratear e massificar a montagem de carros, criou uma base modular. Esta
Leia maisSub-rotinas David Déharbe
Sub-rotinas David Déharbe 1 1 Objetivos da aula Os conceitos de sub-rotina, funções e procedimentos; Como usar sub-rotinas em C: parâmetros de sub-rotinas: parâmetros formais e parâmetros efetivos. passagem
Leia maisLista de Linguagens de Programação 16
Lista de Linguagens de Programação 16 Nome: Matrícula: 1. Abaixo existem duas implementações diferentes to Crivo de Erastótenes, um algoritmo bastante conhecido para a listagem de números primos: def sieveprimes0(candidates):
Leia maisUma proposta de implementação de árvores rubro-negras em Haskell de forma concorrente
Uma proposta de implementação de árvores rubro-negras em Haskell de forma concorrente AUTOR: THAÍS S. HÜBNER BOLSISTA PBIP/UFPEL EMAIL: TSHUBNER@INF.UFPEL.EDU.BR ORIENTADOR ANDRÉ RAUBER DU BOIS Sumário
Leia maisMODULARIZAÇÃO - PARTE 1
AULA 27 MODULARIZAÇÃO - PARTE 1 Os algoritmos que temos construído até então são muito simples, pois resolvem problemas simples e apresentam apenas os componentes mais elementares dos algoritmos: constantes,
Leia maisLeituras de valores numéricos
DIM0425 - Conceitos e Técnicas de Programação Leituras de valores numéricos 1 Leitura de valores numéricos em uma linha só... São dois comandos: read_int() read_float() Erro de execução quando não é digitado
Leia maisLinguagens de Programação
Linguagens de Programação Fabio Mascarenhas - 2015.2 http://www.dcc.ufrj.br/~fabiom/lp Recursão mútua com pares Agora podemos definir o par de funções mutuamente recursivas: letrec pi = cons( if x < 1
Leia maisAula 05. Modularização Função Subrotina Recursividade
Logo Aula 05 Modularização Função Subrotina Recursividade 2 Modularização A modularização é um processo que aborda os aspectos da decomposição de algoritmos em módulos. Módulo é um grupo de comandos, constituindo
Leia maisVetores. e o programa deverá ler os valores separadamente:
Vetores Vetor é um tipo de dado usado para representar uma certa quantidade de variáveis de valores homogêneos (do mesmo tipo). Imagine o seguinte problema: calcular a média das notas da prova de 5 alunos.
Leia maisIntrodução. Por que desenvolver ALGORITMO?
Introdução Programa Computacional busca da necessidade de solução de um problema particular: a geração automática de documentos, o controle de um equipamento eletrodoméstico, a transmissão de informações
Leia maisPython - Variáveis e expressões
Python - e expressões Prof. Paulo H R Gabriel (com base no material do Prof. André Backes) Linguagem de Máquina Computador entende apenas pulsos elétricos Presença ou não de pulso 1 ou 0 Tudo no computador
Leia maisProf. A. G. Silva. 25 de setembro de Prof. A. G. Silva INE5603 Introdução à POO 25 de setembro de / 35
INE5603 Introdução à POO Prof. A. G. Silva 25 de setembro de 2017 Prof. A. G. Silva INE5603 Introdução à POO 25 de setembro de 2017 1 / 35 Baseado em materiais da Recursividade Unisinos, Cesar Tacla (UTFPR),
Leia maisIntrodução a Programação de Jogos
Introdução a Programação de Jogos Aula 02 Algoritmos e Ciclo de Desenvolvimento Edirlei Soares de Lima Modelo de um Computador Linguagem de Máquina Um processador executa instruções
Leia maisUniversidade Federal de Uberlândia Faculdade de Computação. Linguagem C: ponteiros e alocação dinâmica
Universidade Federal de Uberlândia Faculdade de Computação Linguagem C: ponteiros e alocação dinâmica Prof. Renato Pimentel 1 Ponteiros 2 Prof. Renato Pimentel 1 Ponteiros: introdução Toda a informação
Leia mais4. Constantes. Constantes pré-definidas
4. Constantes Constantes pré-definidas O PHP possui algumas constantes pré-definidas, indicando a versão do PHP, o Sistema Operacional do servidor, o arquivo em execução, e diversas outras informações.
Leia maisLógica de Hoare. Abordagem que usaremos: aplicar o método de Hoare sobre uma linguagem de programação imperativa simplificada.
Lógica de Hoare Método axiomático para provar que determinados programas são corretos. Introduzido em 1969 por Charles Antony Richard Hoare. Também utilizado para especificar a semântica de linguagens
Leia maisCONCEITOS DE LINGUAGENS DE PROGRAMAÇÃO
CONCEITOS DE LINGUAGENS DE PROGRAMAÇÃO ROTEIRO 1. INTRODUÇÃO 2. LINGUAGENS IMPERATIVAS 1. CONCEITO 2. PARADIGMA IMPERATIVO 3. ORIGENS 4. MODELO COMPUTACIONAL 1. ARQUITETURA DE VON NEUMANN 2. CARACTERISTICAS
Leia mais