Principais paradigmas de programação. Programação imperativa Programação funcional Programação lógica Programação OO

Tamanho: px
Começar a partir da página:

Download "Principais paradigmas de programação. Programação imperativa Programação funcional Programação lógica Programação OO"

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; }

Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa.

Funçõ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 mais

Estruturas de dados funcionais

Estruturas 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 mais

Universidade 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 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 mais

ALGORITMOS I. Procedimentos e Funções

ALGORITMOS 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 mais

Linguagens de Programação Funcional

Linguagens 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 mais

Linguagem 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 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 mais

LINGUAGEM 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 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 mais

Técnicas de projeto de algoritmos: Indução

Té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 [email protected] 08/2008

Leia mais

Suponha um conjunto habitacional, com várias famílias... imagina se todas elas morassem em uma única casa?

Suponha 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 mais

Computação I: Linguagem de Programação Python

Computação I: Linguagem de Programação Python Computação I: Linguagem de Programação Python [email protected] * Parte da apresentação foi gentilmente cedida pelo prof. Igor Steinmacher Agenda Objetivos Python: conceitos básicos O Ambiente

Leia mais

Algoritmos e Programação

Algoritmos e Programação Algoritmos e Programação Aula 7 Vetores Profa. Marina Gomes [email protected] 19/05/2017 Engenharia de Computação - Unipampa 1 Motivação Problema: Leia as notas de uma turma de cinco estudantes

Leia mais

3. Linguagem de Programação C

3. 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 mais

Nomes, vinculações e escopos

Nomes, 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 mais

Aula de hoje. Comandos. Comandos simples. Comandos. Comandos de controle. Bloco de comandos. SCC Introdução à Programação para Engenharias

Aula 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 mais

Técnicas de análise de algoritmos

Té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/ [email protected]

Leia mais

LINGUAGEM 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 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 mais

Ederson 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 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 mais

Programação: Vetores

Programaçã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 mais

Introduçã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 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 mais

ao paradigma imperativo

ao 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 mais

PROGRAMAÇÃO de COMPUTADORES: LINGUAGEM FORTRAN 90/95

PROGRAMAÇÃ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 mais

Modularidade - Funções e Procedimentos

Modularidade - 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 mais

Introduçã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 Colegiado de Engenharia de Computação Introdução à Programação Aula 09 Prof. Max Santana Rolemberg Farias [email protected] Colegiado de Engenharia de Computação A linguagem C, como qualquer outra linguagem de programação, permite

Leia mais

Aula 11: Modularização

Aula 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 mais

Nomes, vinculações e escopos

Nomes, 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 mais

Aula prática 5. Funções Recursivas

Aula 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 mais

Variáveis primitivas e Controle de fluxo

Variá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 mais

Ponteiros de Variáveis

Ponteiros 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 mais

UNIVERSIDADE 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. 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 mais

Recursividade. Prof. Jesus José de Oliveira Neto

Recursividade. 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 mais

Permite modularidade (dividir programa em partes): Facilita a depuração (debug) e portabilidade.

Permite 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 mais

Programação Estruturada

Programaçã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 mais

DAS5102 Fundamentos da Estrutura da Informação

DAS5102 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 mais

ALGORITMOS AVANÇADOS UNIDADE II Recursividade. Luiz Leão

ALGORITMOS AVANÇADOS UNIDADE II Recursividade. Luiz Leão Luiz Leão [email protected] 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 mais

Estruturas de Repetição

Estruturas 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 mais

1. Faça um programa que leia uma string digitada pelo usuário e salve em um arquivo em branco.

1. 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 mais

Algoritmos e Programação

Algoritmos e Programação Algoritmos e Programação Aula 3 Introdução a Linguagem C Profa. Marina Gomes [email protected] 1 Aula de Hoje - Criar programas simples em C utilizando a estrutura básica; - Declarar variáveis;

Leia mais

MC102 Aula 26. Instituto de Computação Unicamp. 17 de Novembro de 2016

MC102 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 mais

Linguagens de Programação Aula 11

Linguagens de Programação Aula 11 Linguagens de Programação Aula 11 Celso Olivete Júnior [email protected] Na aula passada Uma definição de subprograma descreve as ações representadas pelo subprograma Subprogramas podem ser funções

Leia mais

Suponha um conjunto habitacional, com várias famílias... imagina se todas elas morassem em uma única casa?

Suponha 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 mais

Sub Rotinas. Estrutura de Dados. Prof. Kleber Rezende

Sub 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 mais

Recursividade. Métodos iterativos. Prof. Cesar Augusto Tacla. Métodos iterativos utilizam estruturas de repetição

Recursividade. 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 mais

Capacitação em Linguagem C Parte 1

Capacitaçã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 mais

A resposta apresentada em aula, no quadro, (em Chapin e/ou Português Estruturado) está correta?

A 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 mais

PLANO DE UNIDADE DIDÁTICA- PUD

PLANO 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 mais

CURSO 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 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 mais

Paradigmas de Linguagem de. Programação Profª. Roberta B Tôrres de programação referem-se a:

Paradigmas 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 [email protected] Conceitos Elementares de uma Linguagem de Programação Os conceitos mais elementares, suportados

Leia mais

Recursividade. Objetivos do módulo. O que é recursividade

Recursividade. 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 mais

Algoritmos e Programação. Linguagem C Procedimentos e. Eliane Pozzebon

Algoritmos 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 mais

Revisão: Tipo Abstrato de Dados Recursividade

Revisão: Tipo Abstrato de Dados Recursividade Algoritmos e Estrutura de Dados II Revisão: Tipo Abstrato de Dados Recursividade Prof a Karina Oliveira [email protected] Introdução Estudo das estruturas de dados envolve dois objetivos complementares:

Leia mais

Subprogramação. Vanessa Braganholo

Subprogramação. Vanessa Braganholo Subprogramação Vanessa Braganholo [email protected] 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 mais

Uma 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 Uma proposta de implementação de árvores rubro-negras em Haskell de forma concorrente AUTOR: THAÍS S. HÜBNER BOLSISTA PBIP/UFPEL EMAIL: [email protected] ORIENTADOR ANDRÉ RAUBER DU BOIS Sumário

Leia mais

Vetores. e o programa deverá ler os valores separadamente:

Vetores. 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 mais

Python - Variáveis e expressões

Python - 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 mais

Universidade 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 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 mais

4. Constantes. Constantes pré-definidas

4. 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 mais

Lógica de Hoare. Abordagem que usaremos: aplicar o método de Hoare sobre uma linguagem de programação imperativa simplificada.

Ló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 mais