1 se n = 0 n (n 1)! se n 1
|
|
- Alessandra Graça Gorjão
- 8 Há anos
- Visualizações:
Transcrição
1 Recursão versus Iteração Problema: Cálculo de n! = n (n 1)... 1 int facti(int n) { int fac=n; while(n>0){ fac=fac*n; n--; } return fac; } [epd94, Cap ] Definição recursiva: n! = { 1 se n = 0 n (n 1)! se n 1 int factr(int n){ if(n==0) return(1); else return(n*factr(n-1)); } Departamento de Ciência de Computadores da FCUP PI Aula 10 1
2 Chamadas recursivas e valores retornados de cada chamada 5! 5*4! 4*3! 3*2! 5! 5*24=120 5*4! 4*6=24 4*3! 3*2=6 3*2! Suponhamos n = 5 2*1! 1*0! 1 2*1! 1*0! 1 2*1=2 1*1=1 1 Departamento de Ciência de Computadores da FCUP PI Aula 10 2
3 Paradigmas Paradigma iterativo: uma sequência de instruções é excutada duma forma repetitiva, controlada por uma dada condição (p.e. decremento de um contador)(ciclo iterativo). Paradigma recursivo: 1. existência de casos simples, em que a resposta é determinada directamente; 2. ser possível uma decomposição duma instância do problema, em instâncias mais simples da mesma forma. 3. repetição por chamadas sucessivas: numa função recursiva, são criadas várias activações dela própria que desaparecem há medida que a execução avança. Em cada momento apenas uma das activações está activa, estando as restantes à espera que essa termine para continuarem. Departamento de Ciência de Computadores da FCUP PI Aula 10 3
4 Equivalência entre os paradigmas Os dois paradigmas são equivalentes: dada uma função recursiva existe sempre uma iterativa e vice-versa. Departamento de Ciência de Computadores da FCUP PI Aula 10 4
5 Escrever a representação dum inteiro n na base b. Função Iterativa void num_b_ite(int n,int b) { if (n<0) { printf("-"); n= -n;} if(n==0) {printf("%d",n); return;} while(n) { printf("%d",n%b); n=n/b; } } Função Recursiva: void num_b(int n,int b) { if (n<0) {printf("-");n= -n;} if(n/b) num_b(n/b,b); printf("%d",n%b); } Departamento de Ciência de Computadores da FCUP PI Aula 10 5
6 Estas funções não são exactamente equivalentes! Porquê? Como torná-las equivalentes? Departamento de Ciência de Computadores da FCUP PI Aula 10 6
7 Sequência de Fibonacci (outra vez...) Começando com 0 e 1, cada termo seguinte é a soma dos dois anteriores Assim o n-ésimo termo é calculado por f n = f n 1 + f n 2 e f 0 = 0 e f 1 = 1. Então, escrever uma função recursiva é imediato int fib(int n) { if(n==0 n==1) return n; return fib(n-1)+fib(n-2); } Segue a execução para f(4);. Como é uma versão iterativa? Departamento de Ciência de Computadores da FCUP PI Aula 10 7
8 O Puzzle das Torres de Hanoi (inventado por Eduoard Lucas (1880)) São dados três suportes (a, b e c) e n discos de tamanhos diferentes.os discos estão empilhados num dos suportes por ordem crescente de tamanhos.pretende-se mover os discos para outro suporte de modo que: em cada passo exactamente um disco seja movido de um suporte para o outro um disco não pode nunca estar por cima de um menor o terceiro suporte pode ser usado como auxiliar Departamento de Ciência de Computadores da FCUP PI Aula 10 8
9 Algoritmo (Função recursiva) 1. Representar cada suporte por um caracter ( a, b e c ). Pretende-se uma função recursiva: void hanoi(int n, char inicio, char fim, char temp); 2. Escrever uma função moveum(char ini, char fim) que move a peça do cimo do suporte ini para o suporte fim. moveum(char ini, char fim){ printf("%c-> %c",ini,fim); } Departamento de Ciência de Computadores da FCUP PI Aula 10 9
10 3. A função hanoi() fica: void hanoi(int n, char inicio, char fim, char temp) { if (n==1) moveum(inicio,fim); else { hanoi(n-1,inicio,temp,fim); moveum(inicio,fim); hanoi(n-1,temp,fim,inicio); } } Departamento de Ciência de Computadores da FCUP PI Aula 10 10
11 Execução %hanoi 3 a-> b a-> c b-> c a-> b c-> a c-> b a-> b % O algoritmo é expon^encial O(2 n ): O número de movimentos é exponencial com n, T n = 2T n isto é, T n = 2 n 1...(porquê?) Departamento de Ciência de Computadores da FCUP PI Aula 10 11
12 Método de ordenação Quicksort C.A.R.Hoare Método: Dada uma sequência de valores, escolhe-se um elemento (pivot) e os restantes valores são reagrupados em duas subsequências (partição): os que são menores que esse elemento os que são maiores. O mesmo processo é aplicado recursivamente a cada subsequência.quando um subconjunto tem menos que 2 elementos a recursão pára. Vamos escolher sempre o elemento do meio, como pivot Departamento de Ciência de Computadores da FCUP PI Aula 10 12
13 void quicksort(int v[], int esq, int dir){ int i; if(esq>=dir) return ; i=particao(v,esq,dir); quicksort(v,esq,i-1); quicksort(v,i+1,dir); } int particao(int v[],int esq,int dir){ int i, fim; troca(v,esq,(esq+dir)/2); fim=esq; for(i=esq+1;i<=dir;i++) if(v[i]<v[esq]) troca(v,++fim,i); troca(v,esq,fim); return fim; void troca(int v[], int i,int j){ int temp; temp=v[i]; v[i]=v[j]; v[j]=temp;} Departamento de Ciência de Computadores da FCUP PI Aula 10 13
14 Subvector: Pivot: 58 Particao esq: Particao dir: Subvector: Pivot: 25 Particao esq: 19 Particao dir: Subvector: Pivot: 37 Particao esq: Particao dir: 56 Subvector: Pivot: 95 Particao esq: 73 Particao dir: Ordenado: Execução Departamento de Ciência de Computadores da FCUP PI Aula 10 14
15 Departamento de Ciência de Computadores da FCUP PI Aula 10 15
16 Quicksort para ordenar uma variável indexada de strings void quicksort_s(char v[][maxcol],int esq, int dir){ int i; if(esq>=dir) return; i=particao_s(v,esq,dir); quicksort_s(v,esq,fim-1); quicksort_s(v,fim+1,dir); } void particao(char v[][maxcol], int esq,int dir) { int i,fim; troca_s(v,esq,(esq+dir)/2); fim=esq; for(i=esq+1;i<=dir;i++) if(strcmp(v[i],v[esq])<0) troca_s(v,++fim,i) troca_s(v,esq,fim); returm fim;} void troca_s(char v[][maxcol], int i,int j) { char temp[maxcol]; strcpy(temp,v[i]); strcpy(v[i],v[j]); strcpy(v[j],temp);} Exercício Escreve uma função recursiva da pesq. binária em variável Departamento de Ciência de Computadores da FCUP PI Aula 10 16
17 indexada de strings. Exercício Escreve uma função recursiva que implemente o método de ordenação por seleção. Exercício Escreve uma função recursiva que dado n e k determine a potência k de n. Exercício Escreve uma função recursiva que determine o máximo divisor comun entre dois inteiros. Exercício Escreve uma função recursiva que gere todas as permutações de n elementos. Departamento de Ciência de Computadores da FCUP PI Aula 10 17
18 Retrocesso na Resolução de Problemas de Pesquisa Para muitos problemas, o método de resolução consiste em percorrer uma sequência de decisões, cada uma fazendo avançar no caminho para a solução. Se se fizerem as escolhas correctas chega-se a uma solução senão tem de ser retrocecer e escolher outros caminhos. Divisão em subtarefas Pesquisar exaustivamente um árvore de sub-tarefas Uso de Recursão Exemplos: procura de uma solução de um puzzle procura duma estratégia vencedora num jogo de dois jogadores Departamento de Ciência de Computadores da FCUP PI Aula 10 18
19 procura da saída de um labirinto procura de um caminho numa rede que liga vários pontos INCONVENIENTE: O tamanho da árvore de pesquisa cresce exponencialmente com o tamanho dos dados A saltar vai a todo o lado... Problema: dado um tabuleiro n n determinar se um cavalo do jogo de xadrez consegue percorrer todas as posições do tabuleiro, uma só vez,em n 2 1 movimentos. Estado Inicial: uma posição do tabuleiro Estado Final: Ter visitado todas as posições Mudança de Estado: salto em L 2 por 1, de uma posição para outra (candidata) Movimento válido: se existe uma posição para saltar e essa posição ainda não foi visitada Se o cavalo estiver na posição C estão marcadas as possíveis soluções: Departamento de Ciência de Computadores da FCUP PI Aula 10 19
20 C Departamento de Ciência de Computadores da FCUP PI Aula 10 20
21 Algoritmo de Procura com Retrocesso (Backtracking) tenta inicializa seleção de candidaos repete seleciona um candidato se aceitável marcar posição se não estado final tenta o passo seguinte se não sucedeu retira marca da posição até estado final ou não haver mais candidatos Importante: Número de candidatos é finito!!! Departamento de Ciência de Computadores da FCUP PI Aula 10 21
22 Salto de Cavalo I int h[10][10], tab_max; main(){ int i,j; do { printf(" Tamanho do tabuleiro[3-10]: "); scanf("%d",&tab_max); for(i=1;i<=tab_max; i++) for(j=1;j<=tab_max; j++) h[i][j]=0; printf("posicao inicial:\n"); printf("linha: "); scanf("%d",&i); printf("coluna: "); scanf("%d",&j); h[i][j]=1; if (try(2,i,j)==1) for(i=1;i<=tab_max;i++) { for(j=1;j<=tab_max;j++) printf("%d ",h[i][j]); printf("\n \n");} else printf("nao ha solucao \n"); printf("ctrl C para terminar \n"); } while(getchar()!=eof); } Departamento de Ciência de Computadores da FCUP PI Aula 10 22
23 #define tab_sq tab_max*tab_max #define in_tab(x) (x>0 && x<=tab_max) int casasx[]={2,1,-1,-2,-2,-1,1,2}; int casasy[]={1,2,,2, 1,-1,-2,-2,-1}; int try(int i,int x,int y){ int k = 0, u, v; while( k < 8 ){ u=x+casasx[k]; v=y+casasy[k]; if(in_tab(u) && in_tab(v)) if (h[u][v] == 0) { h[u][v]=i; if (i >= tab_sq) return 1; if (try(i+1,u,v)==1) return 1; h[u][v]=0; } k++; } return 0;} Departamento de Ciência de Computadores da FCUP PI Aula 10 23
24 Tamanho do tabuleiro[3-10]: 5 Posicao inicial: Linha: 1 Coluna: Ctrl C para terminar Tamanho do tabuleiro[3-10]: 5 Posicao inicial: Linha: 3 Coluna: Ctrl C para terminar ^C Exercício Problema das 8 rainhas É possível colocar 8 rainhas num Departamento de Ciência de Computadores da FCUP PI Aula 10 24
25 tabuleiro de xadrez (8x8) por forma a que não se ataquem mutuamente, isto é, que não haja duas rainhas numa mesma linha, coluna ou diagonal? Sugestão: Considere uma variável indexada v[8] tal que v[i] corresponde à linha em que estará a rainha da coluna i. A condição para que duas rainhas estejam na mesma linha é: #define linha(i,j) v[i] == v[j] e na mesma diagonal é #define abs(x) (x >= 0? x: -x) #define diagonal(i,j) abs(v[i]-v[j]) == abs(i-j) Podemos tentar gerar uma solução: colocando aleatóriamente valores de 0 a 8 (todos distintos) em v[] e depois ver se as condições anteriores se verificam para todos. Para cada hipótese há 56 testes e há 8 8 hipóteses... o método é muito ineficiente Tentar gerar uma solucao da esquerda para a direita, começando por fazer: i=0 -> v(i)=0 Departamento de Ciência de Computadores da FCUP PI Aula 10 25
26 i=1 -> procurar o primeiro valor que satisfaca as condicoes,i.e, v[1]=2 Em geral para cada i, se existe j > v[i] que satisfaz as condições relativamente às rainhas já colocadas, fazemos v[i]=j e passa-se para o i seguinte. Senão existe tal j, volta-se ao i anterior e tenta-se aplicar o processo. Departamento de Ciência de Computadores da FCUP PI Aula 10 26
27 Leituras [epd94, Cap ] [Bro97, Cap. 4.5] Departamento de Ciência de Computadores da FCUP PI Aula 10 27
28 Referências [Bro97] J. Glenn Brookshear. Computer Science, an overview. Addison-Wesley, [epd94] H.M. Deitel e P.J. Deitel. C:How to Program. Prentice Hall International Editions, 2 edition, Departamento de Ciência de Computadores da FCUP PI Aula 10 28
Introdução à Programação
Introdução à Programação 1.Ano LCC-MIERSI DCC - FCUP Nelma Moreira Aula 12 Recursividade Recursão versus Iteração FACTORIAL outra vez! Muitas versões. n! = n (n - 1)... 1 int facti(int n){ int fac=n; while(--n>0){
Leia maisOperador de atribuição
Operador de atribuição Variavel = Express~ao [epd94, Cap. 3.11-3.12] Suponhámos que y tem valor 5: x = y + 1; É calculada assim (e por esta ordem): A expressão da direita é calculada, susbtituindo a variável
Leia maisEstrutura de Dados Básica
Estrutura de Dados Básica Professor: Osvaldo Kotaro Takai. Aula 7: Recursividade O objetivo desta aula é apresentar o conceito de recursão para solução de problemas. A recursão é uma técnica de programação
Leia maisAlgoritmos de Busca em Tabelas
Dentre os vários algoritmos fundamentais, os algoritmos de busca em tabelas estão entre os mais usados. Considere por exemplo um sistema de banco de dados. As operações de busca e recuperação dos dados
Leia maisBusca. Pesquisa sequencial
Busca Banco de dados existem para que, de tempos em tempos, um usuário possa localizar o dado de um registro, simplesmente digitando sua chave. Uma tabela ou um arquivo é um grupo de elementos, cada um
Leia maisProgramas simples em C
Programas simples em C Problema 1. Escreve um programa em C que dados dois inteiros indique se são iguais ou qual o maior. Utilizar a construção em 5 etapas... quais? 1. Perceber o problema 2. Ideia da
Leia maisPrimos... Determinar se um inteiro é primo. 1. Um número é primo se apenas é divisível por ele próprio e por 1.
Primos... Problema 1. Determinar se um inteiro é primo. 1. Um número é primo se apenas é divisível por ele próprio e por 1. 2. Algoritmo: percorrer os inteiros de 2 a n-1 e verificar se dividem n:se nenhum
Leia maisÁrvore Binária de Busca
Árvore Binária de Busca 319 Árvore Binária de Busca! construída de tal forma que, para cada nó:! nós com chaves menores estão na sub-árvore esquerda! nós com chaves maiores (ou iguais) estão na subárvore
Leia maisALGORITMOS E ESTRUTURAS DE DADOS CES-11 CES-11 CES-11
ALGORITMOS E ESTRUTURAS DE DADOS Prof. Paulo André Castro pauloac@ita.br Sala 110 Prédio da Computação www.comp.ita.br/~pauloac IECE - ITA Uma árvore binária é: uma árvore vazia; ou uma árvore onde qualquer
Leia maisPesquisa em Memória Primária. Prof. Jonas Potros
Pesquisa em Memória Primária Prof. Jonas Potros Pesquisa em Memoria Primária Estudo de como recuperar informação a partir de uma grande massa de informação previamente armazenada. A informação é dividida
Leia maisIntrodução à Programação. Recursão
Introdução à Programação Recursão Recursão decoração Substantivo feminino. 1.Ato ou efeito de decorar decorar Verbo transitivo direto. 1.Guarnecer com adorno(s); dispor formas e cores em; ornamentar, embelezar;
Leia maisFaculdade Alagoana de Administração FAA Ciência da Computação. (Resolução de Problemas em) Espaço de Estados
Faculdade Alagoana de Administração FAA Ciência da Computação (Resolução de Problemas em) Espaço de Estados (Adaptado de O.B. Coelho & G. Bittencourt & C. Moraes) Maria Aparecida Amorim Sibaldo maasibaldo@gmail.com
Leia maisJorge Figueiredo, DSC/UFCG. Análise e Técnicas de Algoritmos 2005.1. Jorge Figueiredo, DSC/UFCG. Análise e Técnicas de Algoritmos 2005.
genda nálise e Técnicas de lgoritmos Jorge Figueiredo onceitos ásicos O Problema das Rainhas Template Genérico Mochila inária acktracking and ranch-and-ound Jogo da Troca de olas Jogo da Troca de olas
Leia maisÁrvores Binárias e Busca. Jeane Melo
Árvores Binárias e Busca Jeane Melo Roteiro Parte 1 Árvores Relação hierárquica Definição Formal Terminologia Caminhamento em Árvores Binárias Exemplos Parte 2 Busca seqüencial Busca Binária Grafos Conjunto
Leia maisAnalise o código abaixo:
Recursão - introdução Analise o código abaixo: 1 # include 2 # include 3 int Fatorial ( int x) 4 int k, s =1; for (k =0;k
Leia maisXXXVI OLIMPÍADA PAULISTA DE MATEMÁTICA Prova da Primeira Fase (11 de agosto de 2012) Nível (6 o e 7 o anos do Ensino Fundamental)
Instruções: XXXVI OLIMPÍADA PAULISTA DE MATEMÁTICA Prova da Primeira Fase (11 de agosto de 2012) Nível (6 o e 7 o anos do Ensino Fundamental) Folha de Perguntas A duração da prova é de 3h30min. O tempo
Leia maisAlgoritmos de Pesquisa e Ordenação em Vectores
Algoritmos de Pesquisa e Ordenação em Vectores FEUP - MIEEC Programação 2-2008/2009 Pesquisa Sequencial Problema (pesquisa de valor em vector): Verificar se um valor existe no vector e, no caso de existir,
Leia maisCIÊNCIA DA COMPUTAÇÃO PROVA PARA TRANSFERÊNCIA
COM. 1 CIÊNCIA DA COMPUTAÇÃO PROVA PARA TRANSFERÊNCIA 1. A CEF concederá um crédito especial com juros de 2% aos seus clientes de acordo com o saldo médio no último ano. Escreva um programa em C que leia
Leia maisBUSCA EM LISTAS LISTAS SEQÜENCIAIS, LISTAS SIMPLESMENTE E DUPLAMENTE ENCADEADAS E LISTAS CIRCULARES
BUSCA EM LISTAS LISTAS SEQÜENCIAIS, LISTAS SIMPLESMENTE E DUPLAMENTE ENCADEADAS E LISTAS CIRCULARES ALGORITMOS DE BUSCA EM LISTAS COM ALOCAÇÃO SEQÜENCIAL Busca em Listas Lineares A operação de busca é
Leia maisFunções recursivas. O exemplo mais comum: int fat(int n){ if(n == 0) return 1; return n*fat(n-1); }
Funções Recursivas Funções recursivas O exemplo mais comum: int fat(int n){ if(n == 0) return 1; return n*fat(n-1); Versão sem recursão: int fat(int n){ int i = 0; int f = 1; for(i=1; i
Leia maisINF 1007 Programação II
INF 1007 Programação II Aula 14 Árvores Binárias Edirlei Soares de Lima Árvores Uma estrutura de dados do tipo árvore permite que dados sejam organizados de maneira hierárquica.
Leia maisALGORITMOS DE ORDENAÇÃO. Algoritmos de comparação-e-troca. Bubble Sort Merge Sort Quick Sort
ALGORITMOS DE ORDENAÇÃO ALGORITMOS DE ORDENAÇÃO Algoritmos de comparação-e-troca Bubble Sort Merge Sort Quick Sort 1 BUBBLE SORT Usa a estratégia de comparação-e-troca É constituído por várias fases Cada
Leia maisÁrvores Binárias - continuação
Tópicos Avançados em Estrutura de Dados 6º Período Ciência da Computação Uma Aplicação de Árvores Binárias Árvores Binárias - continuação As árvore binárias são estruturas importantes toda vez que uma
Leia maisEstruturas de Dados. Prof. Gustavo Willam Pereira Créditos: Profa. Juliana Pinheiro Campos
Estruturas de Dados Prof. Gustavo Willam Pereira Créditos: Profa. Juliana Pinheiro Campos Árvores Conceitos Árvores binárias Árvores binárias de pesquisa Árvores binárias balanceadas Árvores ESTRUTURAS
Leia maisProblemas de Jogos e Tabuleiros
Problemas de Jogos e Tabuleiros Professor Emiliano Augusto Chagas Para esquentar! 01) Duas crianças se revezam em turnos quebrando uma barra retangular de chocolate, com seis quadrados de altura e oito
Leia maisÍndice. Capítulo 2 Estrutura de Dados sequencial com armazenamento sequencial
Índice i Índice Capítulo 2 Estrutura de Dados sequencial com armazenamento sequencial 1. A Estrutura Abstrata de Dados Lista... 1 1.1. Definição... 1 1.2. Implementação de Listas utilizando armazenamento
Leia maisO Problema do Troco Principio da Casa dos Pombos. > Princípios de Contagem e Enumeração Computacional 0/48
Conteúdo 1 Princípios de Contagem e Enumeração Computacional Permutações com Repetições Combinações com Repetições O Problema do Troco Principio da Casa dos Pombos > Princípios de Contagem e Enumeração
Leia maisAV2 - MA 12-2012. (a) De quantos modos diferentes posso empilhá-los de modo que todos os CDs de rock fiquem juntos?
Questão 1. Num porta-cds, cabem 10 CDs colocados um sobre o outro, formando uma pilha vertical. Tenho 3 CDs de MPB, 5 de rock e 2 de música clássica. (a) De quantos modos diferentes posso empilhá-los de
Leia maisRecursividade. Túlio Toffolo tulio@toffolo.com.br www.toffolo.com.br. BCC202 Aula 08 Algoritmos e Estruturas de Dados I
Recursividade Túlio Toffolo tulio@toffolo.com.br www.toffolo.com.br BCC202 Aula 08 Algoritmos e Estruturas de Dados I Outros Exemplos de Recursividade Factais são outros exemplos de recursividade Quando
Leia maisMC-102 Aula 17 Strings e Matrizes
MC-102 Aula 17 Strings e Matrizes Instituto de Computação Unicamp 5 de Maio de 2015 Roteiro 1 Strings Strings: Exemplos 2 Matrizes Exemplos com Matrizes 3 Exercícios (Instituto de Computação Unicamp) MC-102
Leia maisCap.2.5: Design de Algoritmos e Programação Estruturada. Algoritmos, fluxogramas e pseudo-código
Cap.2.5: Design de Algoritmos e Programação Estruturada Algoritmos, fluxogramas e pseudo-código 1 Sumário Problemas e algoritmos Desenho de algoritmos/programas Passos na construção de algoritmos Método
Leia maisAlgoritmos e Estruturas de Dados
Introdução aos Algoritmos e Estruturas de Dados 2 o Teste - A Ano lectivo: 2010/2011 2 o Semestre RESOLUÇÃO DO 2 o TESTE Grupo I (2.0 + 2.5 + 2.0 = 6.5 val.) I.a) Considere os tipos enum ocasiao e Presente
Leia maisRegras dos Jogos da Exposição Matemática em Jogo. Alquerque
Regras dos Jogos da Exposição Matemática em Jogo Alquerque (Regras de Afonso X) Colocam-se as peças no tabuleiro (em número de 7 ou 12 para cada jogador), como na figura. Os jogadores jogam alternadamente,
Leia maisProcessamento da Informação Teoria. Algoritmos e Tipos de dados
Processamento da Informação Teoria Algoritmos e Tipos de dados Semana 01 Prof. Jesús P. Mena-Chalco 24/04/2013 (*) Slides adaptados das aulas do Prof. Harlen Costa Batagelo Algumas definições de algoritmo
Leia maisContagem I. Figura 1: Abrindo uma Porta.
Polos Olímpicos de Treinamento Curso de Combinatória - Nível 2 Prof. Bruno Holanda Aula 4 Contagem I De quantos modos podemos nos vestir? Quantos números menores que 1000 possuem todos os algarismos pares?
Leia maisBusca em Espaço de Estados
Busca em Espaço de Estados Jomi Fred Hübner jomi@inf.furb.br FURB / BCC Introdução 2 Agente orientado a meta O projetista não determina um mapeamento entre percepções e ações, mas determina que objetivo
Leia maisModule Introduction. Programação. Cap. 4 Algoritmos e Programação Estruturada
5374 : Engenharia Informática 6638 : Tecnologias e Sistemas de Informação 9099 : Bioengenharia 10135 : Ciências Biomédicas Cap. 4 Algoritmos e Estruturada Module Introduction Algoritmos e Estruturada Objectivos:
Leia maisComandos Sequenciais if else, e Switch
Introdução à Programação Comandos Sequenciais if else, e Switch 1º ano - ESI e IGE (2011/2012) Engenheiro Anilton Silva Fernandes (afernandes@unipiaget.cv) O computador pensa? Muitas vezes utiliza-se a
Leia maisAlguns Exercícios de Programação de em Linguagem C
Alguns Exercícios de Programação de em Linguagem C Nelma Moreira Departamento de Ciência de Computadores Faculdade de Ciências, Universidade do Porto email: nam@ncc.up.pt 1997 1 Execução de algumas instruções
Leia mais2. ALGORITMOS. Unesp Campus de Guaratinguetá. Curso de Programação Computadores Prof. Aníbal Tavares Profa. Cassilda Ribeiro
2. ALGORITMOS Unesp Campus de Guaratinguetá Curso de Programação Computadores Prof. Aníbal Tavares Profa. Cassilda Ribeiro 2 - Algoritmo 2.1: Introdução Antes de se utilizar uma linguagem de computador,
Leia maisPesquisa em Memória Primária. Algoritmos e Estruturas de Dados II
Pesquisa em Memória Primária Algoritmos e Estruturas de Dados II Pesquisa em Memória Primária Pesquisa: Recuperação de informação em um grande volume de dados Informação é dividida em registros e cada
Leia maisProf. Dr. Abel Gomes (agomes@di.ubi.pt) Cap.4: Design de Algoritmos e Programação Estruturada. Algoritmos, fluxogramas e pseudo-código
Prof. Dr. Abel Gomes (agomes@di.ubi.pt) Cap.4: Design de Algoritmos e Programação Estruturada Algoritmos, fluxogramas e pseudo-código 1 Sumário Problemas e algoritmos Desenho de algoritmos/programas Passos
Leia maisLógica de Programação
Lógica de Programação Significa o uso correto das leis do pensamento e de processos de raciocínio para a produção de soluções logicamente válidas e coerentes, que resolvam com qualidade os problemas que
Leia maisPesquisa Sequencial e Binária
Pesquisa Sequencial e Binária Prof. Túlio Toffolo http://www.toffolo.com.br BCC202 Aula 20 Algoritmos e Estruturas de Dados I Pesquisa em Memória Primária Introdução - Conceitos Básicos Pesquisa Sequencial
Leia maisAnálise de complexidade
Introdução Algoritmo: sequência de instruções necessárias para a resolução de um problema bem formulado (passíveis de implementação em computador) Estratégia: especificar (definir propriedades) arquitectura
Leia maisINF 1005 Programação I
INF 1005 Programação I Aula 03 Introdução a Linguagem C Edirlei Soares de Lima Estrutura de um Programa C Inclusão de bibliotecas auxiliares: #include Definição de constantes:
Leia maisBatalha Naval Algoritmos de Busca. Correlações curriculares Matemática: Números: maior que, menor que, iguais a.
Atividade 6 Batalha Naval Algoritmos de Busca Sumário Computadores são freqüentemente requisitados a encontrar informação em grandes coleções de dados. Estes precisam desenvolver métodos rápidos e eficientes
Leia maisEstruturas de Repetição
Estruturas de Repetição Lista de Exercícios - 04 Linguagem e Técnicas de Programação Professor: Edwar Saliba Júnior Estruturas de Repetição O que são e para que servem? São comandos que são utilizados
Leia maisExercícios de Java Aula 19
Exercícios de Java Aula 19 Link do curso: http://www.loiane.com/2013/10/curso-java-basico-java-se-gratuito/ 1. Criar um vetor A com 5 elementos inteiros. Construir um vetor B de mesmo tipo e tamanho e
Leia maisAlgoritmos e Estrutura de Dados III. Árvores
Algoritmos e Estrutura de Dados III Árvores Uma das mais importantes classes de estruturas de dados em computação são as árvores. Aproveitando-se de sua organização hierárquica, muitas aplicações são realizadas
Leia maisALGORITMO I VARIÁVEIS INDEXADAS
VARIÁVEIS INDEXADAS Array Auxiliadora Freire Slide 1 Array: Conjunto de informações do mesmo tipo, cada informação é representada na memória do computador por uma variável. O nome de qualquer variável
Leia maisEstruturas de entrada e saída
capa Estruturas de entrada e saída - A linguagem C utiliza de algumas funções para tratamento de entrada e saída de dados. - A maioria dessas funções estão presentes na biblioteca . - As funções
Leia maisProgramação Recursiva versão 1.02
Programação Recursiva versão 1.0 4 de Maio de 009 Este guião deve ser entregue, no mooshak e no moodle, até às 3h55 de 4 de Maio. AVISO: O mooshak é um sistema de avaliação e não deve ser utilizado como
Leia maisJosé Romildo Malaquias 2011-1
Programação de Computadores I Aula 08 Programação: Estruturas de Repetição José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2011-1 1/58 Motivação Como imprimir os três
Leia maisSistemas Operacionais e Introdução à Programação. Vetores e matrizes
Sistemas Operacionais e Introdução à Programação Vetores e matrizes 1 Matrizes Cada elemento de uma matriz é referenciado indicando-se sua posição dentro da matriz. Na Matemática, matrizes são arranjos
Leia maisRecursividade. Aula 9
Recursividade Aula 9 Em matemática vários objetos são definidos apresentando-se um processo que os produz. Ex PI (circunferência/diâmetro) Outra definição de um objeto por um processo é o fatorial de um
Leia maisINF1007: Programação 2 10 Árvores Binárias. (c) Dept. Informática - PUC-Rio 1
INF1007: Programação 2 10 Árvores Binárias (c) Dept. Informática - PUC-Rio 1 Tópicos Principais Introdução Árvores binárias Representação em C Ordens de percurso em árvores binárias Altura de uma árvore
Leia maisAlgoritmos e Programação Estruturada
Algoritmos e Programação Estruturada Virgínia M. Cardoso Linguagem C Criada por Dennis M. Ritchie e Ken Thompson no Laboratório Bell em 1972. A Linguagem C foi baseada na Linguagem B criada por Thompson.
Leia maisCapítulo 2: Introdução à Linguagem C
Capítulo 2: Introdução à Linguagem C INF1005 Programação 1 Pontifícia Universidade Católica Departamento de Informática Programa Programa é um algoritmo escrito em uma linguagem de programação. No nosso
Leia maisESTRUTURAS DE DADOS AVANÇADAS (INF 1010) (a) Seja um TAD definido por uma lista circular implementada em um vetor.
PUC-Rio Departamento de Informática Período: 2015.1 Horário: 2as-feiras e 4as-feiras de 17-19 30 de março de 2015 ESTRUTURAS DE DADOS AVANÇADAS (INF 1010) 1 a Lista de Exercícios 1. Lista (a) Seja um TAD
Leia maisAlgoritmos em Javascript
Algoritmos em Javascript Sumário Algoritmos 1 O que é um programa? 1 Entrada e Saída de Dados 3 Programando 4 O que é necessário para programar 4 em JavaScript? Variáveis 5 Tipos de Variáveis 6 Arrays
Leia maisProjeto e Análise de Algoritmos
Projeto e Análise de Algoritmos Aula 10 Distâncias Mínimas Edirlei Soares de Lima Distâncias Mínimas Dado um grafo ponderado G = (V, E), um vértice s e um vértice g, obter o caminho
Leia maisLinguagem C: agregados heterogêneos, arquivos binários, recursividade. Prof. Críston Algoritmos e Programação
Linguagem C: agregados heterogêneos, arquivos binários, recursividade Prof. Críston Algoritmos e Programação Agregados heterogêneos Permitem agrupar variáveis de diferentes tipos em um único registro struct
Leia maisAluísio Eustáquio da Silva
1 Aluísio Eustáquio da Silva SciLab Programável Material didático usado em aulas de Programação de Computadores, Algoritmos e Lógica de Programação Betim Maio de 2012 2 PROGRAMAÇÃO O SciLab permite que
Leia maisProjeto e Análise de Algoritmos. Profa. Juliana Kaizer Vizzotto. Projeto e Análise de Algoritmos - Aula 1
Projeto e Análise de Algoritmos Profa. Juliana Kaizer Vizzotto Projeto e Análise de Algoritmos - Aula 1 Roteiro Introdução Exemplo: ordenação Introdução Análise de Algoritmos Estudo teórico da performance
Leia mais3ª Lista de Exercícios Representação de dados com agregados: Arrays e Matrizes
1 Universidade Federal Fluminense Instituto de Computação Departamento de Ciência da Computação Programação de Computadores II Professores: Leandro A. F. Fernandes, Marcos Lage, Pedro Velloso 3ª Lista
Leia mais1 Resumo: Strings e vetores de caracteres. Departamento de Ciência da Computação IME/USP
Departamento de Ciência da Computação MAC2166 Introdução a Computação IME/USP Strings e vetores de caracteres 1 Resumo: O uso de strings facilita a manipulação de palavras e textos. Strings são basicamente
Leia maisINSTITUTO VIANNA JÚNIOR FACULDADES INTEGRADAS VIANNA JÚNIOR ANÁLISE DA COMPLEXIDADE DE ALGORITMOS DE ORDENAÇÃO
INSTITUTO VIANNA JÚNIOR FACULDADES INTEGRADAS VIANNA JÚNIOR ANÁLISE DA COMPLEXIDADE DE ALGORITMOS DE ORDENAÇÃO Lúcia Helena de Magalhães 1 Mônica de Lourdes Souza Batista 2 Teresinha Moreira Magalhães
Leia maisFACULDADE CAMPO LIMPO PAULISTA MESTRADO EM CIÊNCIA DA COMPUTAÇÃO. Projeto e Análise de Algoritmos II Lista de Exercícios 2
FACULDADE CAMPO LIMPO PAULISTA MESTRADO EM CIÊNCIA DA COMPUTAÇÃO Projeto e Análise de Algoritmos II Lista de Exercícios 2 Prof. Osvaldo. 1. Desenvolva algoritmos para as operações abaixo e calcule a complexidade
Leia maisInteligência Artificial. Prof. Tiago A. E. Ferreira Aula 11 Problemas com Satisfação de Vínculos
Inteligência Artificial Prof. Tiago A. E. Ferreira Aula 11 Problemas com Satisfação de Vínculos 1 Constraint Satisfaction Problems (CSP) Conceitos básicos Busca cega simples e refinada Busca heurística
Leia maisSomatórias e produtórias
Capítulo 8 Somatórias e produtórias 8. Introdução Muitas quantidades importantes em matemática são definidas como a soma de uma quantidade variável de parcelas também variáveis, por exemplo a soma + +
Leia maisLista de Exercícios 4: Soluções Sequências e Indução Matemática
UFMG/ICEx/DCC DCC Matemática Discreta Lista de Exercícios : Soluções Sequências e Indução Matemática Ciências Exatas & Engenharias o Semestre de 05 O conjunto dos números racionais Q é enumerável, ou seja,
Leia maisJAVA NETBEANS PGOO Prof. Daniela Pires Conteúdo
Conteúdo Estruturas de repetição (loops, laços)... 2 WHILE (enquanto)... 2 DO... WHILE (faça... enquanto)... 2 FOR... 3 FOREACH... 4 EXERCICIO LOOP FOR... 4 Novo Projeto... 5 Controles SWING... 10 1 Estruturas
Leia maisDEPARTAMENTO DE ENGENHARIA INFORMÁTICA FACULDADE DE CIÊNCIAS E TECNOLOGIA DA UNIVERSIDADE DE COIMBRA
DEPARTAMENTO DE ENGENHARIA INFORMÁTICA FACULDADE DE CIÊNCIAS E TECNOLOGIA DA UNIVERSIDADE DE COIMBRA Sistemas Operativos 2003/2004 Trabalho Prático #2 -- Programação em C com ponteiros -- Objectivos Familiarização
Leia maisFaculdade de Ciências Universidade Agostinho Neto Departamento de Matemática e Engenharia Geográfica Ciências da Computação
FaculdadedeCiências UniversidadeAgostinhoNeto DepartamentodeMatemáticaeEngenhariaGeográfica CiênciasdaComputação ProgramaçãoII SegundaParte Adaptado de um original dos docentes de ISCTE Objectivos Os alunos
Leia maisExperimentos com a memória cache do CPU
Experimentos com a memória cache do CPU Alberto Bueno Júnior & Andre Henrique Serafim Casimiro Setembro de 2010 1 Contents 1 Introdução 3 2 Desvendando o cache 3 2.1 Para que serve o cache?.....................
Leia maisÁrvores Binárias de Busca
Árvores Binárias de Busca Definição Uma Árvore Binária de Busca possui as mesmas propriedades de uma AB, acrescida da seguinte propriedade: Para todo nó da árvore, se seu valor é X, então: Os nós pertencentes
Leia maisMétodos Computacionais. Árvores
Métodos Computacionais Árvores Árvores Vetores e Listas são ótimos para representar estrutura de dados lineares, mas não para modelar dados hierárquicos Exemplos de dados hierárquicos: sistema de arquivos
Leia maisContagem II. Neste material vamos aprender novas técnicas relacionadas a problemas de contagem. 1. Separando em casos
Polos Olímpicos de Treinamento Curso de Combinatória - Nível 2 Prof. Bruno Holanda Aula 5 Contagem II Neste material vamos aprender novas técnicas relacionadas a problemas de contagem. 1. Separando em
Leia maisAnálises Geração RI (representação intermediária) Código Intermediário
Front-end Análises Geração RI (representação intermediária) Código Intermediário Back-End Geração de código de máquina Sistema Operacional? Conjunto de Instruções do processador? Ambiente de Execução O
Leia maisIntrodução a Algoritmos Parte 04
Universidade Federal do Vale do São Francisco Curso de Engenharia de Computação Introdução a Algoritmos Parte 04 Prof. Jorge Cavalcanti jorge.cavalcanti@univasf.edu.br www.univasf.edu.br/~jorge.cavalcanti
Leia maisOs objetivos indicados aplicam-se a duas linguagens de programação: C e PHP
AGRUPAMENTO DE ESCOLAS DE SANTA COMBA DÃO CURSO PROFISSIONAL DE TÉCNICO DE GESTÃO E PROGRAMAÇÃO DE SISTEMAS INFORMÁTICOS 2012-2015 PROGRAMAÇÃO E SISTEMAS DE INFORMAÇÃO MÓDULO 2 Mecanismos de Controlo de
Leia maisA lógica de programação ajuda a facilitar o desenvolvimento dos futuros programas que você desenvolverá.
INTRODUÇÃO A lógica de programação é extremamente necessária para as pessoas que queiram trabalhar na área de programação, seja em qualquer linguagem de programação, como por exemplo: Pascal, Visual Basic,
Leia maisEstruturas de Dados I
UFES - Curso de verão 2011 Estruturas de Dados I Profa. Juliana Pinheiro Campos jupcampos@gmail.com Árvores binárias de busca (ou São árvores projetadas para dar suporte a operações de busca de forma eficiente.
Leia maisESTRUTURAS DE DADOS I. Notas de Aula. Prof. Dr. Gilberto Nakamiti
ESTRUTURAS DE DADOS I Notas de Aula 1 SUMÁRIO 1. INTRODUÇÃO... 2 1.1 Array (vetores)... 2 2. BUSCA DE ELEMENTOS... 3 2.1 Busca Seqüencial... 3 2.2 Busca Binária... 3 2.3 Busca Indexada... 3 2.4 Busca Hash...
Leia maisPesquisa: localização de um Registo num Ficheiro (para aceder ao registo: ler/alterar informação) R. P. António Viera, 23. R. Carlos Seixas, 9, 6º
Pesquisa Pesquisa: localização de um Registo num Ficheiro (para aceder ao registo: ler/alterar informação) Ficheiro (ou tabela) Campos Nome Endereço Telefone Antunes, João A. R. P. António Viera, 23 720456
Leia maisFaculdade de Engenharia Optimização. Prof. Doutor Engº Jorge Nhambiu
1 Programação Não Linear Aula 25: Programação Não-Linear - Funções de Uma única variável Mínimo; Mínimo Global; Mínimo Local; Optimização Irrestrita; Condições Óptimas; Método da Bissecção; Método de Newton.
Leia maisÁrvores Binárias de Busca
Árvores Binárias de Busca Uma Árvore Binária de Busca T (ABB) ou Árvore Binária de Pesquisa é tal que ou T = 0 e a árvore é dita vazia ou seu nó contém uma chave e: 1. Todas as chaves da sub-árvore esquerda
Leia maisAlgoritmo. Prof. Anderson Almeida Ferreira. Agradeço ao prof. Guilherme Tavares de Assis por fornecer slides que fazem parte desta apresentação
1 Algoritmo Prof. Anderson Almeida Ferreira Agradeço ao prof. Guilherme Tavares de Assis por fornecer slides que fazem parte desta apresentação Desenvolvimento de programas 2 Análise do problema Desenvolvimento
Leia maisOFICINA DE JOGOS APOSTILA DO PROFESSOR
OFICINA DE JOGOS APOSTILA DO PROFESSOR APRESENTAÇÃO Olá professor, Essa apostila apresenta jogos matemáticos que foram doados a uma escola de Blumenau como parte de uma ação do Movimento Nós Podemos Blumenau.
Leia mais2ª Lista de Exercícios
Universidade Federal de Minas Gerais Departamento de Ciência da Computação Algoritmos e Estruturas de Dados II (Turmas M, N, W, F) 1º Semestre de 2012 Profs. Camilo Oliveira, Gisele Pappa, Ítalo Cunha,
Leia maisMétodos de Pesquisa em Memória Primária
Algoritmos e Estrutura de Dados II Métodos de Pesquisa em Memória Primária Prof Márcio Bueno ed2tarde@marciobueno.com / ed2noite@marciobueno.com Pesquisa Por pesquisa (procura ou busca) entende-se o ato
Leia maisInstrumento de Intervenção
UNIVERSIDADE TÉCNICA DE LISBOA FACULDADE DE MOTRICIDADE HUMANA ANEXO Instrumento de Intervenção Ana Isabel Mendes Codeço 2010 Planeamento da Sessão nº. 1 Data: 04/03/2010 Objectivo Geral: Desenvolver a
Leia maisResolução de Problemas Com Procura. Capítulo 3
Resolução de Problemas Com Procura Capítulo 3 Sumário Agentes que resolvem problemas Tipos de problemas Formulação de problemas Exemplos de problemas Algoritmos de procura básicos Eliminação de estados
Leia maisAlgoritmos de pesquisa. Tabelas de dispersão/hash
Algoritmos de pesquisa Tabelas de dispersão/hash Introdução Motivação: Considerar o problema de pesquisar um determinado valor num vetor (array). Se o vetor não está ordenado, a pesquisa requer O(n) de
Leia maisEstruturas de Repetição. Programação em Java 2006-2007. Estruturas de Repetição
Aula 4 Estruturas de Repetição Programação em Java 2006-2007 Estruturas de Repetição As estruturas repetitivas ou ciclos permitem repetir um conjunto de uma ou mais instruções O Java apresenta três variantes
Leia maisÁrvores de Suporte de Custo Mínimo
Árvores de Suporte de Custo Mínimo Pedro Ribeiro DCC/FCUP 2014/2015 Pedro Ribeiro (DCC/FCUP) Árvores de Suporte de Custo Mínimo 2014/2015 1 / 28 Árvore de Suporte Uma árvore de suporte ou árvore de extensão
Leia maisEAD Árvore árvore binária
EAD Árvore árvore binária - Uma árvore binária é um conjunto finito de elementos (nodos) que pode ser vazio ou particionado em três subconjuntos: - raiz da árvore (elemento inicial, que é único); - subárvore
Leia maisPossui como idéia central a divisão de um universo de dados a ser organizado em subconjuntos mais gerenciáveis.
3. Tabelas de Hash As tabelas de hash são um tipo de estruturação para o armazenamento de informação, de uma forma extremamente simples, fácil de se implementar e intuitiva de se organizar grandes quantidades
Leia mais