Fundamentos de Algoritmos

Documentos relacionados
Fundamentos de Algoritmos

Listas. CIC/UFRGS INF Fundamentos de Algoritmos 2006/1

Funções Compostas. Fundamentos de Algoritmos. Projeto de programas complexos. Roteiro. Um programa é composto por definições de funções e variáveis

Exercícios sobre Listas, Árvores, Grafos e Recursão Generativa

Vários Tipos de Dados

Combinação de modelos

Fundamentos de Algoritmos - Aula 5

Dados compostos. Paradigma de Programação Funcional. Marco A L Barbosa

Listas: nós de cabeçalho, listas não homogêneas, listas generalizadas. SCC-502 Algoritmos e Estruturas de Dados I

Folha 4.1 Análise sintática descendente

Algoritmos - Informação Simólica

Fundamentos de Algoritmos

Processamento da Informação Teoria. Conjuntos e Busca de dados

Dados Compostos: Estruturas

USANDO UM MÉTODO INDUTIVO PARA RESOLVER PROBLEMAS. Bruno Maffeo Departamento de Informática PUC-Rio

Naturais. Paradigma de Programação Funcional. Marco A L Barbosa

UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo

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

Métodos para a construção de algoritmo

Recursão David Déharbe

4. Constantes. Constantes pré-definidas

Processamento da Informação Teoria. Desvio Condicional

Aula 03 Introdução à Programação com a Linguagem Python

Linguagens de Programação

Pascal. -Cabeçalho do programa. - label - const - type - var - procedure - function. - integer - real - byte - boolean - char - string

Recursividade, Tentativa e Erro

MCG114 Programação de Computadores I. Comandos de condição 3/26/18. Comando if. Comando if. Até agora... Comandos de Condição! Comandos de Condição

Algoritmos e Estruturas de Dados

UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo

Processamento da Informação Estruturas de seleção simples e composta

Algoritmos e Estruturas de Dados

Comando de Seleção em Java

Árvores B (Parte III)

Árvores. Thiago Martins, Fabio Gagliardi Cozman. PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo

Sintaxe do Pascal Simplificado Estendido de 12 novas construções em Notação EBNF (BNF estendida)

BCC402 Algoritmos e Programação Avançada Prof. Marco Antonio M. Carvalho Prof. Túlio Ângelo M. Toffolo 2011/1

MAC 0316/5754 Conceitos de Linguagens de Programação Primeiro Semestre de 2011 Terceira Prova 21 de junho de 2011

Programação em C. Victor Amorim dos Santos

Árvores & Árvores Binárias

Módulo: PYTHON. Felipe Oliveira

Processamento da Informação

Árvores Binárias de Busca

Linguagens de Programação Aula 14

LINGUAGEM C: COMANDOS DE CONTROLE CONDICIONAL

Acesso Sequencial Indexado

Árvores Binárias de Busca

Grafos - Aplicação. Implemente na linguagem C a função procurarcaminho(...).

SCC 202 Algoritmos e Estruturas de Dados I. Listas Lineares Encadeadas Alocação dinâmica

O AMBIENTE DE PROGRAMAÇÃO VISUAL -PLANO DE ENSINO. Prof. Angelo Augusto Frozza, M.Sc.

Simulado de Linguagem de Programação Java

Pedro Vasconcelos DCC/FCUP. Programação Funcional 5 a Aula Definições recursivas

Recursão. Prof. Cristiano André da Costa. [Versão de Março de 2000] Definição

Fila e Deque. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich. *Baseado no material do Prof.

Recursividade. Recursividade

Aula de hoje. Expressões. Expressões. Expressões. Exemplos. Programa em Python. SCC Introdução à Programação para Engenharias

Estruturas de seleção. Prof.: Jesus

Tipo de argumentos. valor. argumentos

Melhores momentos AULA 3. Algoritmos p.148/188

Puca Huachi Vaz Penna

Aula 4: Álgebra booleana

INSTITUTO FEDERAL CATARINENSE Campus Ibirama

UNIVERSIDADE DE SÃO PAULO - ICMC Departamento de Ciências da Computação SCC-203 Algoritmos e Estruturas de Dados 2-2 Sem /2012 Profa.

Fluxogramas e variáveis

Problemas NP-completos

LÓGICA I ANDRÉ PONTES

Estruturas de seleção. Prof.: Jesus

Simulando Funções de Alta Ordem via o Padrão de Projetos Template

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

Estruturas de Dados Encadeadas

Desenvolvimento de Aplicações Desktop

Paradigmas de Programação

Fundamentos de Programação

PROGRAMAÇÃO ESTRUTURADA E ORIENTADA A OBJETOS

Organizam dados de forma hierárquica. Acontecem com frequência na natureza. Fáceis de representar e manipular com computadores

Fila e Deque. Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista

Lista Encadeada: algoritmos. Algoritmos e Estruturas de Dados I

Recursão. Dados recursivos

Programação II. Aula 3

Unidade VI. Técnicas de Teste de Software Teste Estrutural. Profa. Dra. Sandra Fabbri

Processamento da Informação Teoria. Listas e Matrizes

RESULUÇÃO DOS EXERCÍCIOS E INSTRUÇÕES DE DECISÃO (if{} e else{}) Profº André Aparecido da Silva Disponível em:

Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: funções

Problema das n rainhas

Princípios de Desenvolvimento de Algoritmos MAC122

DOSSIER DA DISCIPLINA

Recursividade Exaustiva e Backtracking

Listas: a última das 3 estruturas lineares (Pilhas, Filas e Listas)... árvores e grafos são não lineares!

Introdução à Computação - aulas 01 e 02 -

Introdução a Programação

Aula 05: - Recursão (parte 1)

Departamento de Ciência de Computadores Estruturas de Dados (CC114)

Introdução à Geração de Código

Pilhas e Filas Encadeadas. Algoritmos e Estruturas de Dados I

Técnico Agropecuário/TO AOCP 2012

INE5403 FUNDAMENTOS DE MATEMÁTICA DISCRETA

Listas generalizadas. SCC-202 Algoritmos e Estruturas de Dados I

Programação de Computadores II TCC

Técnicas de análise de algoritmos

Algoritmos e Estruturas de Dados I IEC012. Linguagem C - Estruturas de Controle - Seleção. Prof. César Melo

Transcrição:

Fundamentos de Algoritmos CIC/UFRGS 2006/1

Mais em definições auto-referenciáveis foi visto como definir árvores de ascendência, definindo dois campos do tipo nó que indicam os dois pais árvores de descendência requerem uma forma de identificar um número arbitário de filhos 1

Roteiro 2 Listas de estruturas, listas em estruturas Definindo funções para definições mutuamente referenciáveis Mais sobre páginas web

3 Figura 1: Árvore de hereditariedade: tipo descendente

Estrutura de cada indivíduo 4 (define-struct parent (filhos nome data olhos)) um parent pode contar um número arbitário de filhos. filhos deve conter um número indeterminado de nós. Então o campo Um parent é uma estrutura: (make-parent lf n d o) onde lf é uma estrutura do tipo lista de filhos n e o são símbolos e d é número. lista de filhos é: empty ou (cons p lf) onde p é um parent e lf é uma lista de filhos

Definições Mutuamente Referenciáveis 5

6 Árvore de descendência ;; Geração nova: (define Gustav (make-parent empty Gustav 1988 brown)) (define Fred&Eva (list Gustav)) ;; Geração intermediária: (define Adam (make-parent empty Adam 1950 yellow)) (define Dave (make-parent empty Dave 1955 black)) (define Eva (make-parent Fred&Eva Eva 1965 blue)) (define Fred (make-parent Fred&Eva Fred 1966 pink)) (define Carl&Bettina (list Adam Dave Eva) ;; Geração antiga: (define Carl (make-parent Carl&Bettina Carl 1926 green)) (define Bettina (make-parent Carl&Bettina Bettina 1926 green))

Determinar descendente de olhos azuis ;; descendente-olhos-azuis? parent -> boolean ;; determina se p1 ou algum de seus descendentes ;; possui olhos azuis (define (descendente-olhos-azuis? p1)...) (boolean=? (descendente-olhos-azuis? Gustav) false) (boolean=? (descendente-olhos-azuis? Eva) true) (boolean=? (descendente-olhos-azuis? Bettina) true) 7

Template para funções que determina descendente de olhos azuis ;; descendente-olhos-azuis? parent -> boolean (define (descendente-olhos-azuis? p1)...) (cond [(symbol=? (parent-olhos p1) blue) true] [else... (parent-filhos p1)...... (parent-nome p1)...... (parent-data p1)...... (parent-olhos p1)... ] ) ) 8

Descendente com olhos azuis ;; descendente-olhos-azuis? parent -> boolean ;; determina se p1 ou algum de seus descendentes ;; possui olhos azuis (define (descendente-olhos-azuis? p1) (cond [(symbol=? (parent-olhos p1) blue) true] [else (filho-olhos-azuis? (parent-filhos p1))])) 9

Verifica filho com olhos azuis (define (filho-olhos-azuis? lf) (cond [(empty? lf)...] [else... (first lf)...... (filho-olhos-azuis? (rest lf))...])) 10

descendente de olhos azuis: versão com cond ;; descendente-olhos-azuis? parent -> boolean ;; determina se p1 ou algum de seus descendentes possui olhos azuis (define (descendent-olhos-azuis? p1) (cond [(symbol=? (parent-olhos p1) blue) true] [else (filho-olhos-azuis? (parent-filhos p1))])) ;; filho-olhos-azuis? : lista-de-filhos -> booleano ;; determina se um filho da lista, ou possui olhos azuis (define (filho-olhos-azuis? lf) (cond [(empty? lf) false] [else (cond [(descendent-olhos-azuis? (first lf)) true] [else (filho-olhos-azuis? (rest lf))])])) 11

descendente olhos azuis: versão or ;; descendente-olhos-azuis? parent -> boolean ;; determina se p1 ou algum de seus descendentes possui olhos azuis (define (descendent-olhos-azuis? p1) (or (symbol=? (parent-olhos p1) blue) (filho-olhos-azuis? (parent-filhos p1)))) ;; filho-olhos-azuis? : lista-de-filhos -> booleano ;; determina se um filho da lista possui olhos azuis (define (blue-eyed-children? lf) (cond [(empty? lf) false] [else (or (descendente-olhos-azuis? (first lf)) (filho-olhos-azuis? (rest lf)))])) 12

Exercícios 13 15.1.2 Desenvolva a função quanto-longe. A função determina o quanto longe está o mais próximo descendente de olhos azuis. Se nenhum é encontrado, retorne false. 15.1.3 Desenvolva a função conte-descendentes, o qual conta o número de descendentes. Desenvolva uma variante que conta o no atual como descendente e uma variante que não. 15.1.4 Desenvolva a função cor-dos-olhos o qual produz uma lista da cor dos olhos dos descendentes. Uma cor pode ocorrer mais que uma vez na lista.

Projetando Funções para Definições Mutuamente Referenciáveis Fase: Análise de dados e projeto Objetivo: formular um grupo de definições de dados Atividade: desenvolva um grupo de definições de dados mutuamente recursivas; identifique explicitamente todas as referências entre as definições de dados 14

Expressões Condicionais e Funções 15 Fase: Template Objetivo: determine esquemas para um grupo de funções Atividade: desenvolva tantos templates quanto as definições de dados simultâneas

Expressões Condicionais e Funções 16 Fase: Corpo da função Objetivo: determine um grupo de funções condicional Atividade: formule uma expressão para cada cláusula cond; use funções auxiliares quando necessário

(define-struct wp (header body)) Mais sobre páginas web Uma página web é uma estrutura do tipo: (make-wp h p) onde h é um símbolo e p é um documento web. Um documento web é: 17 1. empty 2. (cons s p) onde s é um símbolo e p é um documento 3. (cons w p) onde w é uma página web e p é um documento.

Exercícios 18 Exercício 15.3.1 Defina a função size, que consome um página Web e retorna o número de símbolos (words) que esta contém. Exercícios 15.3.2. Defina a função wp-to-file. A função consome uma página Web e produz uma lista de símbolos. A lista contém todas as palavras no corpo e todos os cabeçalhos das páginas associadas no mesmo domínio. Os corpo do texto das páginas associadas é ignorado. Exercício 15.3.3 Defina a função occurs. Ele consome um símbolo e uma página Web e determina se o símbolo ocorrem em algum lugar da página, incluindo páginas associadas no mesmo domínio.

Exercícios 19 Exercícios 15.3.4. Defina a função find. A função consome uma página Web e um símbolo. Ela produz false, se o símbolo não ocorre no corpo da página ou nas associadas. Se o símbolo ocorre pelo menos uma vez, é produzida uma lista dos cabeçalhos que foram encontrados no caminho ao símbolo. Dica: Defina uma auxiliar find que produz apenas true quando uma página Web contém a palavra desejada. Use esta para definir find. Alternativamente, use boolean? para determinar se uma recursão natural de find produziu uma lista ou um booleano. Então calcule o resultado novamente. Iremos discutiresta segunda técnica chamada backtracking, em seções adiante.