SCC Capítulo 2 Recursão
|
|
|
- Leila Garrau Figueiredo
- 7 Há anos
- Visualizações:
Transcrição
1 SCC Capítulo 2 João Luís Garcia Rosa 1 1 Departamento de Ciências de Computação Instituto de Ciências Matemáticas e de Computação Universidade de São Paulo - São Carlos João Luís G. Rosa c SCC-501: II. 1/38
2 Sumário João Luís G. Rosa c SCC-501: II. 2/38
3 Sumário João Luís G. Rosa c SCC-501: II. 3/38
4 e Processos Na matemática, vários objetos são definidos através de um processo que os produz. Por exemplo, π é definido como a razão entre a circunferência de um círculo e seu diâmetro. Outro exemplo é a função fatorial. Dado um número inteiro positivo n o fatorial de n é o produto de todos os inteiros entre 1 e n: n! = 1, se n = 0. n! = n (n 1) (n 2)... 1, se n > 0. Programa iterativo para o fatorial de n: prod = 1; for (x = n; x > 0; x- -) prod *= x; return(prod); João Luís G. Rosa c SCC-501: II. 4/38
5 e Processos O algoritmo anterior é chamado de iterativo pois requer a repetição explícita de um processo até que determinada condição seja satisfeita. Este algoritmo pode ser traduzido para uma função em C que retorne n! quando recebe n como parâmetro Outra definição para o fatorial: n! = 1, se n = 0. n! = n (n 1)!, se n > 0. Observe que a função fatorial está definida em termos de si mesma: o fatorial de n depende do fatorial de n 1. Esta é uma definição recursiva do fatorial. João Luís G. Rosa c SCC-501: II. 5/38
6 e Processos Programa recursivo para cálculo do fatorial: unsigned long fat(int n) { int fato = 1; if (n > 1) fato = n * fat(n-1); return fato; } João Luís G. Rosa c SCC-501: II. 6/38
7 Sumário João Luís G. Rosa c SCC-501: II. 7/38
8 A recursão ocorre quando uma função chama a si própria. Quando isto acontece, várias ações ocorrem: A função começa a execução do seu primeiro comando cada vez que é chamada; Novas e distintas cópias dos parâmetros passados por valor e variáveis locais são criadas; A posição que chama a função é colocada em estado de espera, enquanto que o nível gerado recursivamente esteja executando. O próximo programa explica estes efeitos. João Luís G. Rosa c SCC-501: II. 8/38
9 Sumário João Luís G. Rosa c SCC-501: II. 9/38
10 Contador recursivo: #include <stdio.h> void cont (int); main() { cont(1); } void cont(int n) { if (n < 10) cont(n+1); printf( %d\n, n); } João Luís G. Rosa c SCC-501: II. 10/38
11 João Luís G. Rosa c SCC-501: II. 11/38
12 A seqüência de Fibonacci é a seqüência de inteiros: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34,... Cada elemento nesta seqüência é a soma dos dois elementos anteriores. Se fib(0) = 0 e fib(1) = 1: fib(n) = n, se n = 0 ou n = 1 fib(n) = fib(n 2) + fib(n 1), se n 2 Por exemplo, para calcular fib(6), pode-se aplicar a definição recursivamente: fib(6) = fib(4) + fib(5) = fib(2) + fib(3) + fib(5) = fib(0) + fib(1) + fib(3) + fib(5) = fib(3) + fib(5) = 1 + fib(1) + fib(2) + fib(5) = fib(0) + fib(1) + fib(5) = fib(5) = 3 + fib(3) + fib(4) = 3 + fib(1) + fib(2) + fib(4) = fib(0) + fib(1) + fib(4) = fib(4) = 5 + fib(2) + fib(3) = 5 + fib(0) + fib(1) + fib(3) = fib(3) = 6 + fib(1) + fib(2) = fib(0) + fib(1) = = 8 João Luís G. Rosa c SCC-501: II. 12/38
13 Seqüência de Fibonacci: int Fib(int n) { if (n < 2) return n; else return Fib(n-2) + Fib(n-1); } João Luís G. Rosa c SCC-501: II. 13/38
14 Sumário João Luís G. Rosa c SCC-501: II. 14/38
15 Busca binária consiste em buscar um elemento em um vetor classificado, dividindo-o em duas metades Caso o elemento procurado seja o elemento do meio do vetor, a operação é terminada Caso o elemento procurado seja menor que o elemento do meio do vetor, procura-se na metade inferior Caso o elemento procurado seja maior que o elemento do meio do vetor, procura-se na metade superior Trata-se portanto de um procedimento recursivo: o método de busca é definido em termos de si mesmo, com um vetor menor como entrada A busca terminará quando o tamanho deste vetor for 1 (operação não recursiva) João Luís G. Rosa c SCC-501: II. 15/38
16 Sumário João Luís G. Rosa c SCC-501: II. 16/38
17 Busca binária: 1: if (baixo > alto) 2: return(-1); 3: meio = (baixo + alto)/2; 4: if (x == a[meio]) 5: return(meio); 6: if (x < a[meio]) 7: procura x em a[baixo] até a[meio-1]; 8: else 9: procura x em a[meio+1] até a[alto]; : seja o seguinte vetor: x[0] x[1] x[2] x[3] x[4] x[5] x[6] x[7] Suponha que se queira procurar o elemento 48, isto é, x = 48, entre o item 0 (baixo = 0) e 7 (alto = 7). João Luís G. Rosa c SCC-501: II. 17/38
18 Aplicando o algoritmo, tem-se: linha 1: 0 > 7? Falso, executa linha 3 linha 3: meio = (0 + 7)/2 = 3 linha 4: x = a[3]? 48 não é igual a 37, executa linha 6 linha 6: x < a[3]? 48 não é menor que 37, executa linha 9 linha 9: repita com baixo = meio + 1 = 4 e alto = 7 linha 1: 4 > 7? Falso, executa linha 3 linha 3: meio = (4 + 7)/2 = 5 linha 4: x = a[5]? 48 não é igual a 57, executa linha 6 linha 6: x < a[5]? 48 é menor que 57, executa linha 7 linha 9: repita com baixo = 4 e alto = meio 1 = 4 linha 1: 4 > 4? Falso, executa linha 3 linha 3: meio = (4 + 4)/2 = 4 linha 4: x = a[4]? 48 é igual a 48, retorna meio = 4 como resposta. João Luís G. Rosa c SCC-501: II. 18/38
19 Sumário João Luís G. Rosa c SCC-501: II. 19/38
20 Propriedades das significa repetição. Da mesma forma que num comando repetitivo a parada é uma preocupação, o mesmo ocorre com a recursão. A função recursiva f deve ser definida de modo a não envolver f para um argumento ou grupo de argumentos. Esta será a saída da seqüência de chamadas recursivas. Nos exemplos vistos, as partes não-recursivas das definições são: fatorial: 0! = 1 seqüência de Fibonacci: fib(0) = 0; fib(1) = 1 busca binária: if (baixo > alto) return(-1); if (x == a[meio]) return(meio); João Luís G. Rosa c SCC-501: II. 20/38
21 O desenvolvimento de uma solução recursiva sem o algoritmo nem sempre é fácil Normalmente, não há porque propor uma solução recursiva Entretanto, para alguns problemas a solução recursiva é mais elegante Há problemas que são recursivos já na sua definição Para estes, a solução recursiva é mais natural. João Luís G. Rosa c SCC-501: II. 21/38
22 Torres de Hanói Considere o problema das Torres de Hanói. Há três torres A, B e C e há n discos de diâmetros diferentes dispostos na torre A, sempre com o disco de maior diâmetro abaixo de um disco de menor diâmetro. Como colocar todos os discos na torre C, usando a torre B como intermediária, passando um único disco de cada vez e sem inverter a ordem dos diâmetros (maior abaixo do menor) em nenhuma torre. Se uma solução para n 1 discos for encontrada, tem-se a solução para n discos. No caso trivial de n = 1, a solução é simples. Se for possível declarar uma solução para n discos em termos de n 1, haverá uma solução recursiva. João Luís G. Rosa c SCC-501: II. 22/38
23 Torres de Hanói Mover n discos de A para C, usando B como auxiliar: 1 Se n = 1, mova o único disco de A para C e pare. 2 Mova os n 1 discos de A para B, usando C como auxiliar. 3 Mova o último disco de A para C. 4 Mova os n 1 discos de B para C, usando A como auxiliar. Programa: void hanoi(char de, char para, char via, int n) { if (n >= 1) { hanoi(de, via, para, n-1); printf( %c => %c\n, de, para); hanoi(via, para, de, n-1); } } João Luís G. Rosa c SCC-501: II. 23/38
24 Sumário João Luís G. Rosa c SCC-501: II. 24/38
25 Simulando a Todo problema com solução recursiva pode ser resolvido iterativamente Algumas linguagens de programação não permitem recursão Basta examinar com detalhes os mecanismos usados para implementar a recursividade para que seja possível simulá-los usando técnicas não-recursivas A solução recursiva geralmente é mais cara computacionalmente do que a solução não-recursiva A possibilidade de gerar uma solução não-recursiva a partir de um algoritmo recursivo é muito interessante em várias situações. João Luís G. Rosa c SCC-501: II. 25/38
26 Sumário João Luís G. Rosa c SCC-501: II. 26/38
27 Simulando a Antes de examinar as ações de uma rotina recursiva, deve-se examinar a ação de uma rotina não-recursiva. Para o comando rota(x); onde rota é definida como rota(a) x é referido como um argumento (da função chamadora) e a como um parâmetro (da função chamada). 1 Passagem de argumentos, 2 Alocação e iniciação de variáveis locais, 3 Transferência do controle para a função. João Luís G. Rosa c SCC-501: II. 27/38
28 Simulando a Cada uma das três etapas: 1 Passagem de argumentos: para um parâmetro em C, uma cópia do argumento é criada localmente dentro da função. 2 Alocação e iniciação de variáveis locais: depois que os argumentos são passados, as variáveis locais da função serão alocadas. Incluem as declaradas diretamente na função e as temporárias criadas durante a execução. 3 Transferência do controle para a função: neste ponto, o endereço de retorno deve ser passado à função (armazenado na pilha), para que seja possível passar também o controle. Este controle deverá ser devolvido à função chamadora ao final da execução da função, daí a necessidade do endereço de retorno. João Luís G. Rosa c SCC-501: II. 28/38
29 Sumário João Luís G. Rosa c SCC-501: II. 29/38
30 Retorno de uma Função Quando uma função termina sua execução, o controle retorna para a função chamadora. Três ações são executadas: 1 O endereço de retorno é recuperado da pilha e armazenado em um lugar seguro 2 A área de dados da função é liberada. Essa área contém todas as variáveis locais (incluindo as cópias locais dos argumentos), as temporárias e o endereço de retorno 3 Desvia-se para o endereço de retorno salvo anteriormente. Isso devolve o controle à função chamadora no ponto imediatamente posterior ao comando que efetuou a chamada. Se a função retorna um valor, o mesmo será colocado num lugar seguro (registrador de hardware) de onde a função chamadora poderá recuperá-lo. João Luís G. Rosa c SCC-501: II. 30/38
31 Retorno de uma Função A seqüência de endereços de retorno forma uma pilha: se uma função A chama uma função B, que chama uma função C, a pilha conterá no topo o endereço de retorno da função C (endereço dentro de B), depois da função B (endereço dentro de A). Ou seja, de C só é possível retornar para a função B (função chamadora de C) e de B só é possível retornar para a função A (função chamadora de B). Conclusão: chamar uma função corresponde a colocar um endereço na pilha (push) e retornar corresponde a retirar um endereço da pilha (pop). E no caso da função recursiva? João Luís G. Rosa c SCC-501: II. 31/38
32 Implementando uma Função Recursiva Cada vez que uma função recursiva chama a si mesma, uma área de dados totalmente nova precisa ser alocada, Essa área de dados precisa ter todos os parâmetros, variáveis locais, temporárias e um endereço de retorno, No caso da recursividade, uma área de dados está associada não a uma função isolada, mas a uma chamada dessa função, Cada chamada acarreta a alocação de uma nova área de dados e toda a referência a um item na área de dados da função destina-se à área de dados da chamada mais recente, Da mesma forma, todo retorno provoca a liberação da atual área de dados e a área de dados alocada anteriormente torna-se a área atual. João Luís G. Rosa c SCC-501: II. 32/38
33 Implementando uma Função Recursiva Veja novamente a figura do contador recursivo: João Luís G. Rosa c SCC-501: II. 33/38
34 Eficiência da Geralmente uma versão não-recursiva (iterativa) de um programa executará com mais eficiência, em termos de tempo e espaço, do que uma versão recursiva, Isso acontece porque o trabalho extra dispendido para entrar e sair de um bloco é evitado na versão não-recursiva, Num programa não-recursivo muita atividade de empilhamento e desempilhamento pode ser evitada, Contudo, muitas vezes, uma solução recursiva é o método mais natural e lógico de solucionar um problema, Alguns problemas são recursivos por natureza e sua solução recursiva é muito mais simples (por exemplo, as Torres de Hanói). João Luís G. Rosa c SCC-501: II. 34/38
35 Sumário Apêndice Avaliação: Trabalho 1 Bibliografia Avaliação: Trabalho 1 João Luís G. Rosa c SCC-501: II. 35/38
36 MDC Apêndice Avaliação: Trabalho 1 Bibliografia Trabalho 1 (T1) - Individual: Submeter até dia 02/9 Escreva uma função iterativa (f i ) e uma função recursiva (f r ) que calculam o MDC (máximo divisor comum) de 2 números a e b recebidos como parâmetros. Compare f i e f r em termos de eficiência (notação big-oh: O). Para o cálculo do MDC, deve-se usar o Algoritmo de Euclides: Ex: a = 30 e b = 4: João Luís G. Rosa c SCC-501: II. 36/38
37 Referências I Apêndice Avaliação: Trabalho 1 Bibliografia Engelbrecht, Angela Estrutura e Recuperação de Informação II. Apostila. Engenharia de Computação. PUC-Campinas, Horowitz, E., Sahni, S. Rajasekaran, S. Computer Algorithms. Computer Science Press, Rosa, J. L. G.. SCC-201 Introdução à Ciência da Computação II (capítulo 2). Slides. Ciência de Computação. ICMC/USP, João Luís G. Rosa c SCC-501: II. 37/38
38 Referências II Apêndice Avaliação: Trabalho 1 Bibliografia Tenenbaum, A. M., Langsam, Y., Augestein, M. J. Estruturas de Dados Usando C. Makron Books, João Luís G. Rosa c SCC-501: II. 38/38
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
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
04 Recursão SCC201/501 - Introdução à Ciência de Computação II
04 Recursão SCC201/501 - Introdução à Ciência de Computação II Prof. Moacir Ponti Jr. www.icmc.usp.br/~moacir Instituto de Ciências Matemáticas e de Computação USP 2010/2 Moacir Ponti Jr. (ICMCUSP) 04Recursão
Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP. Recursividade
Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP Recursividade Conceito de Recursividade Fundamental em Matemática e Ciência da Computação Um programa recursivo é um programa que chama a si mesmo
Recursividade. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR
Recursividade David Menotti Algoritmos e Estruturas de Dados II DInf UFPR Conceito de Recursividade Fundamental em Matemática e Ciência da Computação Um programa recursivo é um programa que chama a si
Estruturas de Dados, Análise de Algoritmos e Complexidade Estrutural. Carlos Alberto Alonso Sanches
CT-234 Estruturas de Dados, Análise de Algoritmos e Complexidade Estrutural Carlos Alberto Alonso Sanches CT-234 2) Algoritmos recursivos Indução matemática, recursão, recorrências Indução matemática Uma
Recursão. Aula 1. Liana Duenha. Faculdade de Computação Universidade Federal de Mato Grosso do Sul
Recursão Aula 1 Liana Duenha Faculdade de Computação Universidade Federal de Mato Grosso do Sul Algoritmos e Programação II, Análise de Sistemas, 2010 Martinez & Rubert (FACOM) Recursão APIIAS 1 / 25 Conteúdo
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
Recursividade. Recursividade
A recursão é uma técnica que define um problema em termos de uma ou mais versões menores deste mesmo problema. Esta ferramenta pode ser utilizada sempre que for possível expressar a solução de um problema
Análise de Algoritmos Parte 4
Análise de Algoritmos Parte 4 Túlio Toffolo [email protected] www.toffolo.com.br BCC202 Aula 07 Algoritmos e Estruturas de Dados I Como escolher o algoritmo mais adequado para uma situação? (continuação)
LISTA DE EXERCÍCIOS MÊS 04
São José dos Campos, 05 de Junho de 2008 Disciplina: CES 10 Introdução à Computação. Semestre 2008-2º Período Professor: Carlos Henrique Quartucci Forster Estagiária: Michelle de Oliveira Parreira Instituto
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:
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
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
Análise de Complexidade para algoritmos iterativos e recursivos
Disciplina: Matemática Discreta Agostinho Iaqchan Ryokiti Homa Análise de Complexidade para algoritmos iterativos e recursivos Algoritmos iterativos - complexidade expressa através de somatórios. Algoritmos
Algoritmos e Estruturas de Dados I
Algoritmos e Estruturas de Dados I Prof. Daniel M. Martin ([email protected]) Aula 10 (Baseada nos slides do Prof. André Balan) Recursão Recursão Da wikipedia: A recursão é o processo pelo qual
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
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
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
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
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
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
Pesquisa e Ordenação
Pesquisa e Ordenação SC121 - Introdução à Programação ICMC - USP - São Carlos Maio de 2009 Algoritmo de Procura Algoritmo de Procura O problema de procurar, pesquisar alguma informação numa tabela ou num
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
Análise de Problemas Recursivos. Algoritmos e Estruturas de Dados Flavio Figueiredo (
Análise de Problemas Recursivos Algoritmos e Estruturas de Dados 2 2017-1 Flavio Figueiredo (http://flaviovdf.github.io) 1 Lembrando de Recursividade Procedimento que chama a si mesmo Recursividade permite
PROGRAMAÇÃO DE COMPUTADORES V - TCC Modulo 6 : Funções Escopo de Variáveis: Globais x Locais Aura - Erick
PROGRAMAÇÃO DE COMPUTADORES V - TCC- 00.323 Modulo 6 : Funções Escopo de Variáveis: Globais x Locais Aura - Erick [email protected], [email protected] Roteiro Funções Escopo de Variáveis Variáveis Globais
Introdução à Ciência da Computação II. Recursão. Prof. Ricardo J. G. B. Campello
Introdução à Ciência da Computação II Recursão Prof. Ricardo J. G. B. Campello Agradecimentos Parte dos slides a seguir são adaptações dos originais em Pascal gentilmente cedidos pelo Prof. Rudinei Goularte
MC102 Aula 27 Recursão II
MC102 Aula 27 Recursão II Instituto de Computação Unicamp 17 de Novembro de 2016 Roteiro 1 Recursão Relembrando 2 Cálculo de Potências 3 Torres de Hanoi 4 Recursão e Backtracking 5 Exercício (Instituto
SCC0601 Projeto de Algoritmos. Recursão
SCC0601 Projeto de Algoritmos Recursão Definição Uma função é dita recursiva quando é definida em seus próprios termos, direta ou indiretamente Dicionário Michaelis: ato ou efeito de recorrer Recorrer:
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
Linguagem de Programação I. Aula 10 Funções
Linguagem de Programação I Aula 10 Funções Da Aula Anterior Tipos de dados básicos e operadores em C Declaração de variáveis e modificadores de tipo Estruturas de Controle Arrays unidimensionais Geração
Aula 21 - Algoritmos e Funções Recursivas
Aula 21 - Considere a definição da função fatorial: n! = 1 se n 0 Considere agora a seguinte definição equivalente: n! = 1 se n 0 Dizemos que essa
SCC-501 Introdução à Ciência de Computação II
SCC-501 João Luís Garcia Rosa 1 1 Departamento de Ciências de Computação Instituto de Ciências Matemáticas e de Computação Universidade de São Paulo - São Carlos http://www.icmc.usp.br/~joaoluis 2011 João
Implementando subprogramas
Implementando subprogramas Linguagens de Programação Marco A L Barbosa cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual 4.0 Internacional. http://github.com/malbarbo/na-lp-copl
Aula 05: - Recursão (parte 1)
MCTA028 Programação Estruturada Aula 05: - Recursão (parte 1) Prof. João Henrique Kleinschmidt Material elaborado pelo prof. Jesús P. Mena-Chalco 3Q-20108 Recursão: Se você ainda não entendeu; Ver: "Recursão".
Implementação de subprogramas
Implementação de subprogramas 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
Universidade Federal do ABC Programação Estruturada Fabrício Olivetti França Lista de Exercícios 02
1 Objetivos da lista Universidade Federal do ABC Programação Estruturada Fabrício Olivetti França Lista de Exercícios 02 Esta lista de exercícios tem como objetivo introduzir funções na linguagem C. Como
Aula 15 - Aula sobre Funções e Procedimentos
MC-102 Algoritmos e Programação de Computadores IC-UNICAMP Aula 15 - Aula sobre Funções e Procedimentos 1 Objetivos Apresentar os conceitos de procedimentos e funções, suas vantagens e sua notação em C.
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
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
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.4. Estruturas de Controle 3.4.1. Comandos
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
INF1007: Programação 2. 0 Revisão. 06/08/2015 (c) Dept. de Informática - PUC-Rio 1
INF1007: Programação 2 0 Revisão 06/08/2015 (c) Dept. de Informática - PUC-Rio 1 Tópicos Principais Variáveis e Constantes Operadores e Expressões Entrada e Saída Tomada de Decisão Construção com laços
Lógica de Programação I
Gilson de Souza Carvalho [email protected] 1 Comando Do/While Além do comando while, existem outras estruturas para implementar laços repetitivos. O comando Do/While funciona de forma similar ao
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
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
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
SCC-201 Introdução à Ciência de Computação II
SCC-201 João Luís Garcia Rosa 1 Ricardo J. G. B. Campello 1 1 Departamento de Ciências de Computação Instituto de Ciências Matemáticas e de Computação Universidade de São Paulo - São Carlos http://www.icmc.usp.br
Recursividade. Estrutura de Dados. Prof. Kleber Rezende
Recursividade Estrutura de Dados Prof. Kleber Rezende Considerações Iniciais Em aulas anteriores fizemos uma função que permite calcular o fatorial de um número. Naquela função, a cada nova iteração o
# Estrutura de Dados # Aula 08 Recursão (conceito, utilização, exemplos) Prof. Leinylson Fontinele Pereira
# Estrutura de Dados # Aula 08 Recursão (conceito, utilização, exemplos) Prof. Leinylson Fontinele Pereira Na aula anterior... Alocação Dinâmica de Memória Introdução 3 O que vamos aprender? Recursividade
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
Aula 05: - Recursão (parte 1)
MCTA028 Programação Estruturada Aula 05: - Recursão (parte 1) Prof. Jesús P. Mena-Chalco [email protected] 3Q-20107 1 Recursão: Se você ainda não entendeu; Ver: "Recursão". Efeito Droste Anuncio
Aula 10 Comandos de Repetição For e Do While
Aula 10 Comandos de Repetição For e Do While 1) O comando for É muito comum usarmos o comando while para repetir alguns comandos um número definido de vezes. Fazemos isso usando um contador. Considere
ALGORITMOS E ESTRUTURAS DE DADOS CES-11
ALGORITMOS E ESTRUTURAS DE DADOS CES-11 Prof. Paulo André Castro [email protected] Sala 110 Prédio da Computação www.comp.ita.br/~pauloac IECE - ITA Revisão CES-11 Tipos escalares primitivos Tipos constituídos
Carlos Eduardo Batista. Centro de Informática - UFPB
Estrutura de Dados Carlos Eduardo Batista Centro de Informática - UFPB [email protected] Aritmética de ponteiros em C (continuação) O que acontece na memória? Ponteiro para ponteiro etc. Métodos de pesquisa
SCC Algoritmos e Estruturas de Dados I
SCC 202 - Algoritmos e Estruturas de Dados I TAD Pilha Lembrem...TADs são tipos definidos em termos de seu comportamento e não de sua representação (que pode variar na busca de eficiência) 12/8/2010 Pilha
Universidade Federal da Grande Dourados Faculdade de Ciências Exatas e Tecnologia Bacharelado em Sistemas de Informação Estruturas de Dados I Lista II
Universidade Federal da Grande Dourados Faculdade de Ciências Exatas e Tecnologia Bacharelado em Sistemas de Informação Estruturas de Dados I Lista II Professor: MSc. Rodrigo Porfírio da Silva Sacchi 30
