Recursão David Déharbe

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

Download "Recursão David Déharbe"

Transcrição

1 Recursão David Déharbe 1 1

2 Objetivos da aula O conceito de recursão. Exemplos. Programação em C. 2 2

3 Roteiro da aula Revisão de funções; Motivação; Definição; Dois exemplos básicos; Recursão mútua; Dois exemplos avançados. comparação com iteração. 3 3

4 Revisão das sub-rotinas. Exemplo: int f (int c) return c * 2; int main (void) int a = 1, b = 0; b = f(a); a = f(b); printf("a = %i, b = %i\n", a, b); 4 4

5 Revisão das sub-rotinas. Exemplo: int f (int c) return c * 2; int main (void) int a = 1, b = 0; b = f(a); a = f(b); printf("a = %i, b = %i\n", a, b); a b

6 Revisão das sub-rotinas. Exemplo: int f (int c) return c * 2; int main (void) int a = 1, b = 0; b = f(a); a = f(b); printf("a = %i, b = %i\n", a, b); a b c

7 Revisão das sub-rotinas. Exemplo: int f (int c) return c * 2; int main (void) int a = 1, b = 0; b = f(a); a = f(b); printf("a = %i, b = %i\n", a, b); a b c

8 Revisão das sub-rotinas. Exemplo: int f (int c) return c * 2; int main (void) int a = 1, b = 0; b = f(a); a = f(b); printf("a = %i, b = %i\n", a, b); a b

9 Revisão das sub-rotinas. Exemplo: int f (int c) return c * 2; int main (void) int a = 1, b = 0; b = f(a); a = f(b); printf("a = %i, b = %i\n", a, b); a b c

10 Revisão das sub-rotinas. Exemplo: int f (int c) return c * 2; int main (void) int a = 1, b = 0; b = f(a); a = f(b); printf("a = %i, b = %i\n", a, b); a b c

11 Revisão das sub-rotinas. Exemplo: int f (int c) return c * 2; int main (void) int a = 1, b = 0; b = f(a); a = f(b); printf("a = %i, b = %i\n", a, b); a b

12 Motivação Recursão é uma outra forma de calcular repetições. Aplicável no processamento de dados cuja definição pode ser feita com uma auto-referência: os ancestrais de X = os pais de X, digamos P + os ancestrais de P. os números naturais = 0 sucessor de um número natural. (sucessor n)! = (sucessor n) n! Não usa construção específica como while. Usa chamada de sub-rotina. Aplicável quando o resultado de uma sub-rotina pode ser calculado usando uma outra chamada à mesma sub-rotina. 5 5

13 Definição Recursão 1. ver "Recursão". 6 6

14 Definição É um método de resolução de problema aplicado quando a solução pode ser calculada a partir da solução de uma instância menor do problema. Exemplo: Ordenar um conjunto L de n itens. (Recursivamente) ordenar os n-1 primeiros itens, seja L' o resultado ; inserir o último item de L em L'. - (inserção em um conjunto já ordenado) 7 7

15 Término A execução de uma função recursiva provoca uma nova chamada à mesma função. Como fazer com que o cálculo termine? São dois critérios que devem ser obecedidos para garantir o término: Se o cálculo de f(a) chama recursivamente f(b), então, de alguma forma, b tem que ser menor que a. (lembre-se do variante do laço, deve haver um variante de parâmetro: uma medida que decresce à cada chamada recursiva) O corpo da função deve incluir pelo menos um caso onde o valor de retorno não depende de uma chamada recursiva: é o caso de base. 8 8

16 Exemplo 1: problema e solução recursiva. Impressão de uma linha com os n primeiros elementos de uma progressão geométrica q: elemento inicial r: razão n: quantidade de elementos a imprimir q q r q r r q r r r... q r n-1 \n Solução recursiva: se n > 0: imprime q, o primeiro elemento, e imprime uma linha com os n-1 primeiros elementos de uma progressão geométrica com elemento iniciao q r e razão r. se n = 0: imprime uma quebra de linha. 9 9

17 Exemplo 1: implementação #include <stdio.h> /* para printf */ void imprime_pg (double q, double r, int n) if (n == 0) printf("\n"); else printf("%.2lf ", q); imprime_pg (q * r, r, n-1); int main () int n; double q, r; scanf("%lf %lf %i", &q, &r, &n); imprime_pg(q, r, n); 10 10

18 Exemplo 1: implementação #include <stdio.h> /* para printf */ void imprime_pg (double q, double r, int n) if (n == 0) printf("\n"); else main printf("%.2lf ", q); imprime_pg (q * r, r, n-1); q r n int main () int n; double q, r; scanf("%lf %lf %i", &q, &r, &n); imprime_pg(q, r, n); 10 10

19 Exemplo 1: implementação #include <stdio.h> /* para printf */ void imprime_pg (double q, double r, int n) if (n == 0) printf("\n"); else printf("%.2lf ", q); imprime_pg (q * r, r, n-1); main imprime_pg q r n q r n int main () int n; double q, r; scanf("%lf %lf %i", &q, &r, &n); imprime_pg(q, r, n); 10 10

20 Exemplo 1: implementação #include <stdio.h> /* para printf */ void imprime_pg (double q, double r, int n) if (n == 0) printf("\n"); else printf("%.2lf ", q); imprime_pg (q * r, r, n-1); main imprime_pg q r n q r n int main () int n; double q, r; scanf("%lf %lf %i", &q, &r, &n); imprime_pg(q, r, n); 10 10

21 Exemplo 1: implementação #include <stdio.h> /* para printf */ void imprime_pg (double q, double r, int n) if (n == 0) printf("\n"); else printf("%.2lf ", q); imprime_pg (q * r, r, n-1); main imprime_pg q r n q r n int main () int n; double q, r; scanf("%lf %lf %i", &q, &r, &n); imprime_pg(q, r, n);

22 Exemplo 1: implementação #include <stdio.h> /* para printf */ void imprime_pg (double q, double r, int n) if (n == 0) printf("\n"); else printf("%.2lf ", q); imprime_pg (q * r, r, n-1); main imprime_pg imprime_pg q r n q r n q r n int main () int n; double q, r; scanf("%lf %lf %i", &q, &r, &n); imprime_pg(q, r, n);

23 Exemplo 1: implementação #include <stdio.h> /* para printf */ void imprime_pg (double q, double r, int n) if (n == 0) printf("\n"); else printf("%.2lf ", q); imprime_pg (q * r, r, n-1); main imprime_pg imprime_pg q r n q r n q r n int main () int n; double q, r; scanf("%lf %lf %i", &q, &r, &n); imprime_pg(q, r, n);

24 Exemplo 1: implementação #include <stdio.h> /* para printf */ void imprime_pg (double q, double r, int n) if (n == 0) printf("\n"); else printf("%.2lf ", q); imprime_pg (q * r, r, n-1); main imprime_pg imprime_pg q r n q r n q r n int main () int n; double q, r; scanf("%lf %lf %i", &q, &r, &n); imprime_pg(q, r, n);

25 Exemplo 1: implementação #include <stdio.h> /* para printf */ void imprime_pg (double q, double r, int n) if (n == 0) printf("\n"); else printf("%.2lf ", q); imprime_pg (q * r, r, n-1); main imprime_pg imprime_pg imprime_pg q r n q r n q r n q r n int main () int n; double q, r; scanf("%lf %lf %i", &q, &r, &n); imprime_pg(q, r, n);

26 Exemplo 1: implementação #include <stdio.h> /* para printf */ void imprime_pg (double q, double r, int n) if (n == 0) printf("\n"); else printf("%.2lf ", q); imprime_pg (q * r, r, n-1); main imprime_pg imprime_pg imprime_pg q r n q r n q r n q r n int main () int n; double q, r; scanf("%lf %lf %i", &q, &r, &n); imprime_pg(q, r, n);

27 Exemplo 1: implementação #include <stdio.h> /* para printf */ void imprime_pg (double q, double r, int n) if (n == 0) printf("\n"); else printf("%.2lf ", q); imprime_pg (q * r, r, n-1); main imprime_pg imprime_pg imprime_pg q r n q r n q r n q r n int main () int n; double q, r; scanf("%lf %lf %i", &q, &r, &n); imprime_pg(q, r, n);

28 Exemplo 1: implementação #include <stdio.h> /* para printf */ void imprime_pg (double q, double r, int n) if (n == 0) printf("\n"); else printf("%.2lf ", q); imprime_pg (q * r, r, n-1); main imprime_ imprime_ imprime_ imprime_ pg pg pg pg q r n q r n q r n q r n q r n int main () int n; double q, r; scanf("%lf %lf %i", &q, &r, &n); imprime_pg(q, r, n);

29 Exemplo 1: implementação #include <stdio.h> /* para printf */ void imprime_pg (double q, double r, int n) if (n == 0) printf("\n"); else printf("%.2lf ", q); imprime_pg (q * r, r, n-1); main imprime_ imprime_ imprime_ imprime_ pg pg pg pg q r n q r n q r n q r n q r n int main () int n; double q, r; scanf("%lf %lf %i", &q, &r, &n); imprime_pg(q, r, n);

30 Exemplo 1: implementação #include <stdio.h> /* para printf */ void imprime_pg (double q, double r, int n) if (n == 0) printf("\n"); else main printf("%.2lf ", q); imprime_pg (q * r, r, n-1); q r n int main () int n; double q, r; scanf("%lf %lf %i", &q, &r, &n); imprime_pg(q, r, n); \n 10 10

31 Exemplo 1: implementação #include <stdio.h> /* para printf */ void imprime_pg (double q, double r, int n) if (n == 0) printf("\n"); else main printf("%.2lf ", q); imprime_pg (q * r, r, n-1); q r n Caso de base? int main () int n; double q, r; Variante? scanf("%lf %lf %i", &q, &r, &n); imprime_pg(q, r, n); \n 10 10

32 Exemplo 2: problema e solução recursiva. Cálculo do fatorial. n: valor dado se n > 1, então n! = (n-1) n = (n-1)! n Solução recursiva: se n > 1: calcule (n-1)!, seja r o valor obtido multiplique n com r, o valor obtido é o resultado. se n = 1: o resultado é

33 Exemplo 2: implementação #include <stdio.h> /* para printf */ int fatorial (int n) if (n == 1) return 1; else int r; r = fatorial(n-1); return r * n; int main () int n, f; scanf("%i", &n); f = fatorial(n); printf("%i\n", f); 12 12

34 Exemplo 2: implementação #include <stdio.h> /* para printf */ int fatorial (int n) if (n == 1) return 1; else return fatorial(n-1) * n; int main () int n, f; scanf("%i", &n); f = fatorial(n); printf("%i\n", f); 12 12

35 Exemplo 2: implementação #include <stdio.h> /* para printf */ int fatorial (int n) if (n == 1) return 1; else return fatorial(n-1) * n; int main () int n, f; Caso de base? Variante? scanf("%i", &n); f = fatorial(n); printf("%i\n", f); 12 12

36 Recursão mútua Vimos exemplos de uma função chamando a si mesmo. É possível que hajá uma chamada a si mesmo indireta, através de outra função (ou funções). Esta possibilidade é muito útil para tratar entidades com definições inter-dependentes ver a sintaxe dos comandos da linguagem C vistos até agora. <comando> ::= <comando condicional>... <comando condicional> ::= if ( <expressao> ) <comando> 13 13

37 Recursão mútua: exemplo #include <stdio.h> int par (int); int impar (int); int main () int n; scanf("%i", &n); if (par(n)) printf("%i eh par.\n", n); else printf("%i eh impar.\n", n); int par (int n) if (n == 0) return 1; else return impar(n-1); int impar (int n) if (n == 0) else return par(n-1); 14 14

38 Recursão mútua: exemplo #include <stdio.h> int par (int); int impar (int); int main () int n; scanf("%i", &n); if (par(n)) printf("%i eh par.\n", n); else printf("%i eh impar.\n", n); int par (int n) if (n == 0) return 1; else return impar(n-1); int impar (int n) if (n == 0) else return par(n-1); 14 Caso de base? Variante? 14

39 Exemplo 3: descrição O quebra-cabeça das Torres de Hanoi foi proposto pelo matemático francês Édouard Lucas em Considerando uma torre de n discos de circonferência crescente, inicialmente empilhados em ordem crescente de circonferência sobre uma entre três varas. O objetivo é transferir a torre inteira para uma outra vara, movendo apenas um disco de cada vez, e nunca colocando um disco em cima de um disco de menor tamanho. A B C 15 15

40 Exemplo 3: uma solução manual 16 16

41 Exemplo 3: uma solução manual 16 16

42 Exemplo 3: requisitos Definir uma sub-rotina que imprime as instruções para resolver o quebra-cabeça das torres de Hanoi. A sub-rotina deve ter como parâmetro o número de discos, e deve imprimir uma lista de comandos no formato "mover X para Y" onde 1 X, Y 3. Exemplos: para 1 disco mover 1 para 3 para 2 discos mover 1 para 2 mover 1 para 3 mover 2 para

43 Exemplo 3: requisitos Definir uma sub-rotina que imprime as instruções para resolver o quebra-cabeça das torres de Hanoi. A sub-rotina deve ter como parâmetro o número de discos, e deve imprimir uma lista de comandos no formato "mover X para Y" onde 1 X, Y 3. Exemplos: para 1 disco mover 1 para 3 para 2 discos mover 1 para 2 mover 1 para 3 mover 2 para 3 hanoi 3 Mover de 1 para 3 Mover de 1 para 2 Mover de 3 para 2 Mover de 1 para 3 Mover de 2 para 1 Mover de 2 para 3 Mover de 1 para

44 Exemplo 3: resolução recursiva Hanoi (k, V1, V2, V3) move k discos da vara V1 para a vara V3, utilizando a vara V2 como ponto intermediário. Hanoi (k, V1, V2, V3): Para k = 0: nada a fazer Para k > 1: realizar Hanoi (k-1, V1, V3, V2), mover o k-ésimo disco de V1 para V2, realizar Hanoi(k-1, V3, V2, V1) A B C V1 V2 18 V3 18

45 Exemplo 3: resolução recursiva Hanoi (k, V1, V2, V3) move k discos da vara V1 para a vara V3, utilizando a vara V2 como ponto intermediário. Hanoi (k, V1, V2, V3): Para k = 0: nada a fazer Para k > 1: realizar Hanoi (k-1, V1, V3, V2), mover o k-ésimo disco de V1 para V2, realizar Hanoi(k-1, V3, V2, V1) A B C V1 V2 18 V3 18

46 Exemplo 3: resolução recursiva Hanoi (k, V1, V2, V3) move k discos da vara V1 para a vara V3, utilizando a vara V2 como ponto intermediário. Hanoi (k, V1, V2, V3): Para k = 0: nada a fazer Para k > 1: realizar Hanoi (k-1, V1, V3, V2), mover o k-ésimo disco de V1 para V2, realizar Hanoi(k-1, V3, V2, V1) A B C V1 V2 18 V3 18

47 Exemplo 3: resolução recursiva Hanoi (k, V1, V2, V3) move k discos da vara V1 para a vara V3, utilizando a vara V2 como ponto intermediário. Hanoi (k, V1, V2, V3): Para k = 0: nada a fazer Para k > 1: realizar Hanoi (k-1, V1, V3, V2), mover o k-ésimo disco de V1 para V2, realizar Hanoi(k-1, V3, V2, V1) A B C V1 V2 18 V3 18

48 Exemplo 3: implementação #include <stdio.h> /* para printf */ void hanoi_rec (int n, int v1, int v2, int v3) if (n == 0) return; else hanoi_rec(n-1, v1, v3, v2); printf("mover de %i para %i\n", v1, v2); hanoi_rec(n-1, v3, v2, v1); void hanoi (int n) hanoi_rec(n, 1, 3, 2); int main () int n; scanf("%i", &n); hanoi(n); 19 19

49 Exemplo 3: implementação #include <stdio.h> /* para printf */ void hanoi_rec (int n, int v1, int v2, int v3) if (n == 0) return; else hanoi_rec(n-1, v1, v3, v2); printf("mover de %i para %i\n", v1, v2); hanoi_rec(n-1, v3, v2, v1); void hanoi (int n) hanoi_rec(n, 1, 3, 2); int main () int n; scanf("%i", &n); hanoi(n); 19 Caso de base? Variante? 19

50 Exemplo 4: Progressão de Fibonacci Os primeiros números de Fibonacci são: 0, 1, 1, 2, 3, 5, 8, 13, 21,... Os dois primeiros números da progressão de Fibonacci são 0 e 1. Os demais números são iguais à soma dos dois números anteriores. Seja fib(i) o elemento i da progressão de Fibonacci. fib(0) = 0, fib(1) = 1 se n 2, fib(n) = fib(n-1) + fib(n-2) Escreva uma sub-rotina que, dado n, calcula fib(n)

51 Exemplo 4: Solução A natureza do problema é recursiva. A solução é direta

52 Exemplo 4: implementação #include <stdio.h> /* para printf */ int fibonacci (int n) if (n == 0) else if (n == 1) return 1; else return fibonacci(n-1) + fibonacci(n-2); int main () int n; scanf("%i", &n); fibonacci(n); 22 22

53 Exemplo 4: implementação #include <stdio.h> /* para printf */ int fibonacci (int n) if (n == 0) else if (n == 1) return 1; else return fibonacci(n-1) + fibonacci(n-2); int main () int n; scanf("%i", &n); fibonacci(n); Caso de base? Variante? 22 22

54 Questões de custo

55 Questões de custo... Com esta implementação recursiva, quantas somas são necessárias para calcular fib(n)? Seja custo(n) este valor

56 Questões de custo... Com esta implementação recursiva, quantas somas são necessárias para calcular fib(n)? Seja custo(n) este valor. Para n = 0:

57 Questões de custo... Com esta implementação recursiva, quantas somas são necessárias para calcular fib(n)? Seja custo(n) este valor. Para n = 0: 0 Para n = 1:

58 Questões de custo... Com esta implementação recursiva, quantas somas são necessárias para calcular fib(n)? Seja custo(n) este valor. Para n = 0: 0 Para n = 1: 0 Para n = 2:

59 Questões de custo... Com esta implementação recursiva, quantas somas são necessárias para calcular fib(n)? Seja custo(n) este valor. Para n = 0: 0 Para n = 1: 0 Para n = 2: 1 Para n = 3: =

60 Questões de custo... Com esta implementação recursiva, quantas somas são necessárias para calcular fib(n)? Seja custo(n) este valor. Para n = 0: 0 Para n = 1: 0 Para n = 2: 1 Para n = 3: = 2 Para n = 4: =

61 Questões de custo... Com esta implementação recursiva, quantas somas são necessárias para calcular fib(n)? Seja custo(n) este valor. Para n = 0: 0 Para n = 1: 0 Para n = 2: 1 Para n = 3: = 2 Para n = 4: = 4 Para n = 5: =

62 Questões de custo... Com esta implementação recursiva, quantas somas são necessárias para calcular fib(n)? Seja custo(n) este valor. Para n = 0: 0 Para n = 1: 0 Para n = 2: 1 Para n = 3: = 2 Para n = 4: = 4 Para n = 5: = 7 Em geral, se n 2, custo(n) = custo(n-1) + custo(n-2)

63 Questões de custo... Com esta implementação recursiva, quantas somas são necessárias para calcular fib(n)? Seja custo(n) este valor. Para n = 0: 0 Para n = 1: 0 Para n = 2: 1 Para n = 3: = 2 Para n = 4: = 4 Para n = 5: = 7 Em geral, se n 2, custo(n) = custo(n-1) + custo(n-2) + 1. Essa progressão cresce mais rápido que a progressão de Fibonacci

64 Questões de custo... Com esta implementação recursiva, quantas somas são necessárias para calcular fib(n)? Seja custo(n) este valor. Para n = 0: 0 Para n = 1: 0 Para n = 2: 1 Para n = 3: = 2 Para n = 4: = 4 Para n = 5: = 7 Em geral, se n 2, custo(n) = custo(n-1) + custo(n-2) + 1. Essa progressão cresce mais rápido que a progressão de Fibonacci... Podemos fazer melhor? 23 23

65 Exemplo 4: implementação iterativa #include <stdio.h> /* para printf */ int fibonacci (int n) if (n == 0) else if (n == 1) return 1; else int pen = 0, ult = 1, k, atual; k = 2; while (k <= n) atual = pen + ult; pen = ult; ult = atual; k = k + 1; return atual; 24 24

66 Exemplo 4: implementação recursiva 2 #include <stdio.h> /* para printf */ int fibonacci_rec (int n, int ult, int pen, int k) if (k == n) return ult + pen; else return fibonacci_rec(n, pen+ult, ult, k+1); int fibonacci (int n) if (n == 0) else if (n == 1) return 1; else return fibonacci_rec(n, 1, 0, 2); 25 25

67 Exemplo 4: implementação recursiva 2 #include <stdio.h> /* para printf */ int fibonacci_rec (int n, int ult, int pen, int k) if (k == n) return ult + pen; else return fibonacci_rec(n, pen+ult, ult, k+1); int fibonacci (int n) if (n == 0) else if (n == 1) return 1; else return fibonacci_rec(n, 1, 0, 2); Caso de base? Variante? 25 25

68 Conclusão Recursão: uma nova ferramenta para resolução de problemas. A recursão tem o mesmo poder de resolução que a iteração. Para determinados problemas, é muito mais fácil resolver com recursão. Para outros, é mais fácil com iteração. Em geral, é mais fácil programar uma solução recursiva correta; iteração é mais rápida que recursão; iteração consome menos memória que recursão.... mas cada caso é um caso

69 Exercícios David Déharbe 27 27

70 Exercício: MDC. O maior divisor comum de dois números inteiros positivos N e M, notado MDC(N, M), é maior número inteiro positivo P tal que P é um divisor de N; P é um divisor de M. Propriedades: Se M > N e N é um divisor de M, então MDC(N, M) = N senão MDC(N, M) = MDC(N, R) onde R é o resto da divisão de M por N. MDC(N, M) = MDC(M, N)

71 Exercícios. Considere o seguinte processo para gerar uma seqüência de números: Comece com um inteiro n. Se n é par, divida por 2. Se n é ímpar, multiplique por 3 e some 1. Repita esse processo com o novo valor de n, se n 1. Termina o processo quando n = 1. Por exemplo, a seqüência de números a seguir é gerada para n = 22: Escreva uma função não recursiva que, dado um inteiro positivo, imprime a sequência de números acima

72 Exercícios. 2.Escreva agora uma função recursiva que, dado um inteiro positivo, imprime a sequência de números. O comprimento da sequência gerada a partir de n é chamada o comprimento do ciclo de n. 3.Escreva uma função não recursiva que, dado n, retorna o comprimento do ciclo de n. 4.Escreva uma função recursiva que, dado n, retorna o comprimento do ciclo de n

73 Exercícios. Usando recursão: 1.Escreva uma rotina que tem como parâmetros N, o tamanho de um arranjo de int, V, o próprio arranjo, e K, um valor int, e retorna 1 se K pertence a V e 0 caso contrário. Assume que o conteúdo do arranjo é ordenado em ordem crescente. A recursão deve ser realizada com uma rotina auxiliar. 2.Escreva uma rotina que tem como parâmetros N, o tamanho de um arranjo de int, V, o próprio arranjo, e ordena o conteúdo de V em ordem crescente. A recursão deve ser realizada com uma rotina auxiliar

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

Sub-rotinas David Déharbe

Sub-rotinas David Déharbe Sub-rotinas David Déharbe 1 1 Objetivos da aula Os conceitos de sub-rotina, funções e procedimentos; Como usar sub-rotinas em C: parâmetros de sub-rotinas: parâmetros formais e parâmetros efetivos. passagem

Leia mais

Aula 21 - Algoritmos e Funções Recursivas

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

Leia mais

MC102 Algoritmos e Programação de Computadores

MC102 Algoritmos e Programação de Computadores MC102 Algoritmos e Programação de Computadores Instituto de Computação UNICAMP Primeiro Semestre de 2014 Roteiro 1 Maior número 2 Soma de n números 3 Fatorial 4 Máximo Divisor Comum (MDC) 5 Números primos

Leia mais

Arranjos. David Déharbe

Arranjos. David Déharbe Arranjos. David Déharbe 1 1 Roteiro da aula Exercícios motivadores para arranjos; Motivação; Definição; Arranjos em C; Arranjos e ponteiros; Exemplos. 2 2 Exercícios. Escreva um programa que lê cinco números

Leia mais

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

Leia mais

Aula 15: Repetição (Parte 3)

Aula 15: Repetição (Parte 3) Aula 15: Repetição (Parte 3) Introdução a Programação Túlio Toffolo & Puca Huachi http://www.toffolo.com.br BCC201 2019/1 Departamento de Computação UFOP Aula Anterior Breve Revisão Comandos de Decisão

Leia mais

Laboratório 3 Comandos de repetição while, do-while e for

Laboratório 3 Comandos de repetição while, do-while e for Laboratório 3 Comandos de repetição while, do-while e for Computação I (MAB-120) Prof. Silvana Rossetto 1 DCC/IM/UFRJ 29 de março de 2019 O objetivo desta aula de laboratório é praticar o uso dos comandos

Leia mais

Algoritmos e Estruturas de Dados I Linguagem C

Algoritmos e Estruturas de Dados I Linguagem C Algoritmos e Estruturas de Dados I (DCC/003) Algoritmos e Estruturas de Dados I Linguagem C Aula Tópico 11 Recursividade 1 Recursão Na linguagem C, uma função pode chamar outra função. A função main()

Leia mais

Primeiros programas.

Primeiros programas. Primeiros programas. David Déharbe 1 1 Objetivos da aula Revisar as atividades "edição", "compilação", ("correção" e) "execução". Revisar os primeiros elementos de linguagem C já vistos. Aprender a escrever

Leia mais

Processamento da Informação

Processamento da Informação Processamento da Informação Fabrício Olivetti de França 02 de Fevereiro de 2019 Topics 1. Recursão 1 Recursão Indução Matemática Em bases matemáticas vocês aprenderam sobre indução matemática: Provamos

Leia mais

SCC Capítulo 2 Recursão

SCC Capítulo 2 Recursão SCC-501 - 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 http://www.icmc.usp.br/~joaoluis

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

Aula 10 Algoritmos e Funções Recursivas

Aula 10 Algoritmos e Funções Recursivas Aula 10 Algoritmos e Funções Recursivas Considere a definição da função fatorial: n! = 1 se n 0 Considere agora a seguinte definição equivalente: n! = 1 se n

Leia mais

Recursividade. Estrutura de Dados. Prof. Kleber Rezende

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

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

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

Leia mais

Algoritmos e Estruturas de Dados I

Algoritmos e Estruturas de Dados I Algoritmos e Estruturas de Dados I Prof. Daniel M. Martin (daniel.martin@ufabc.edu.br) Aula 10 (Baseada nos slides do Prof. André Balan) Recursão Recursão Da wikipedia: A recursão é o processo pelo qual

Leia mais

Algoritmos e Funções Recursivas

Algoritmos e Funções Recursivas Considere a definição da função fatorial: n! = 1 se n 0 n.(n-1).(n-2).... 3.2.1 se n > 0 Considere agora a seguinte definição equivalente: n! = 1 se n 0 n.(n-1)! se n > 0 Dizemos que essa última definição

Leia mais

MC-102 Aula 07 Comandos Repetitivos

MC-102 Aula 07 Comandos Repetitivos MC-102 Aula 07 Comandos Repetitivos Instituto de Computação Unicamp 11 de Setembro de 2016 Roteiro 1 Variável Indicadora Números Primos Números em Ordem 2 Variável Contadora Números Primos 3 Outros Exemplos

Leia mais

Universidade Federal do ABC Programação Estruturada Fabrício Olivetti França Lista de Exercícios 02

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

Leia mais

Prof. A. G. Silva. 25 de setembro de Prof. A. G. Silva INE5603 Introdução à POO 25 de setembro de / 35

Prof. A. G. Silva. 25 de setembro de Prof. A. G. Silva INE5603 Introdução à POO 25 de setembro de / 35 INE5603 Introdução à POO Prof. A. G. Silva 25 de setembro de 2017 Prof. A. G. Silva INE5603 Introdução à POO 25 de setembro de 2017 1 / 35 Baseado em materiais da Recursividade Unisinos, Cesar Tacla (UTFPR),

Leia mais

Algoritmos e Programação. AULA 21: Recursividade UNIVERSIDADE FEDERAL DE PELOTAS CENTRO DE DESENVOLVIMENTO TECNOLÓGICO CIÊNCIA DA COMPUTAÇÃO

Algoritmos e Programação. AULA 21: Recursividade UNIVERSIDADE FEDERAL DE PELOTAS CENTRO DE DESENVOLVIMENTO TECNOLÓGICO CIÊNCIA DA COMPUTAÇÃO 1 Algoritmos e Programação AULA 21: Recursividade UNIVERSIDADE FEDERAL DE PELOTAS CENTRO DE DESENVOLVIMENTO TECNOLÓGICO CIÊNCIA DA COMPUTAÇÃO 2 Recursividade A recursão é o processo pelo qual passa um

Leia mais

Estrutura de Dados Conceitos Iniciais

Estrutura de Dados Conceitos Iniciais Engenharia de CONTROLE e AUTOMAÇÃO Estrutura de Dados Conceitos Iniciais Aula 04 DPEE 08 Estrutura de Dados para Automação Curso de Engenharia de Controle e Automação Universidade Federal de Santa Maria

Leia mais

Programação científica C++

Programação científica C++ Programação científica C++ NIELSEN CASTELO DAMASCENO Slide 8 Matrizes como argumento de funções O nome de uma matriz (sem os colchetes) representa o endereço onde a matriz está armazenada. Ao passar o

Leia mais

Processamento da Informação Teoria. Recursividade

Processamento da Informação Teoria. Recursividade Processamento da Informação Teoria Recursividade Semana 08 Prof. Jesús P. Mena-Chalco 15/06/2013 Uma função chama outra função Vimos exemplos de uma função chamar uma outra função. def fatorial1(n): mult

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

Aula 11 - Repetições Encaixadas

Aula 11 - Repetições Encaixadas Aula 11 - Repetições Encaixadas Já vimos os seguintes comandos de repetição: while for do while O formato geral destes comando é: while (comparação) {c1; c2;...; cn; for (inicialização; comparação; incremento)

Leia mais

SCC0214 Projeto de Algoritmos

SCC0214 Projeto de Algoritmos SCC0214 Projeto de Algoritmos Recursão Implemente uma função para calcular o fatorial de um número inteiro positivo 2 1 Definição Uma função é dita recursiva quando é definida em seus próprios termos,

Leia mais

Estruturas de Repetição

Estruturas de Repetição Estruturas de Repetição Disciplina: Algoritmos e Programação Luciano Moraes Da Luz Brum Universidade Federal do Pampa Unipampa Campus Bagé Email: lucianobrum18@gmail.com Horários de atendimento: (outros

Leia mais

MC-102 Aula 04 Expressões Relacionais, Lógicas e Comandos Condicionais

MC-102 Aula 04 Expressões Relacionais, Lógicas e Comandos Condicionais MC-102 Aula 04 Expressões Relacionais, Lógicas e Comandos Condicionais Instituto de Computação Unicamp 26 de Agosto de 2016 Roteiro 1 Expressões relacionais 2 Expressões lógicas 3 4 Exercícios (Instituto

Leia mais

Aula 16: Laços aninhados e desvios

Aula 16: Laços aninhados e desvios Aula 16: Laços aninhados e desvios Introdução a Programação Túlio Toffolo & Puca Huachi http://www.toffolo.com.br BCC201 2019/1 Departamento de Computação UFOP Aula Anterior Comandos de Repetição (Parte

Leia mais

Estruturas condicionais

Estruturas condicionais Estruturas condicionais David Déharbe 1 1 Objetivos da aula Revisar os primeiros elementos de linguagem C já vistos. Condicionais simples Condicionais compostas Operadores lógicos 2 2 Objetivos da aula

Leia mais

Introdução à Programação

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 mais

Estruturas de Dados Aula 14: Recursão

Estruturas de Dados Aula 14: Recursão Estruturas de Dados Aula 14: Recursão Fontes Bibliográficas Livros: Projeto de Algoritmos (Nivio Ziviani): Capítulo 2; Estruturas de Dados e seus Algoritmos (Szwarefiter, et. al): Capítulo 1; Algorithms

Leia mais

Aula 3: Algoritmos: Formalização e Construção

Aula 3: Algoritmos: Formalização e Construção Aula 3: Algoritmos: Formalização e Construção Fernanda Passos Universidade Federal Fluminense Programação de Computadores IV Fernanda Passos (UFF) Algoritmos: Formalização e Pseudo-Código Programação de

Leia mais

Estruturas de Dados Aula 14: Recursão 19/05/2011

Estruturas de Dados Aula 14: Recursão 19/05/2011 Estruturas de Dados Aula 14: Recursão 19/05/2011 Fontes Bibliográficas Livros: Projeto de Algoritmos (Nivio Ziviani): Capítulo 2; Estruturas de Dados e seus Algoritmos (Szwarefiter, et. al): Capítulo 1;

Leia mais

Linguagem C. Prof.ª Márcia Jani Cícero

Linguagem C. Prof.ª Márcia Jani Cícero Linguagem C Prof.ª Márcia Jani Cícero A estrutura Básica de um Programa em C Consiste em uma ou várias funções ou programas. main( ) // primeira função a ser executada // inicia a função // termina a função

Leia mais

Recursão. Prof. Fabrício Olivetti de França. (com inspirações do slide do prof. Rodrigo Hausen)

Recursão. Prof. Fabrício Olivetti de França. (com inspirações do slide do prof. Rodrigo Hausen) Recursão Prof. Fabrício Olivetti de França (com inspirações do slide do prof. Rodrigo Hausen) Recursão Para entender recursão, você primeiro deve entender recursão! Recursão Forma de pensar em uma solução

Leia mais

Algoritmos e Funções Recursivas

Algoritmos e Funções Recursivas 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 última

Leia mais

Aula 05: Condicionais (if / else)

Aula 05: Condicionais (if / else) Aula 05: Condicionais (if / else) Introdução a Programação Túlio Toffolo & Puca Huachi http://www.toffolo.com.br BCC201 2019/1 Departamento de Computação UFOP Aula Anterior Breve Revisão Comandos de Decisão

Leia mais

Algoritmos e Estruturas de Dados

Algoritmos e Estruturas de Dados Algoritmos e Estruturas de Dados Prof. Yandre Maldonado - 1 RECURSIVIDADE Prof. Yandre Maldonado e Gomes da Costa Prof. Yandre Maldonado - 2 Um objeto é dito recursivo se ele consistir parcialmente ou

Leia mais

INF 1007 Programação II

INF 1007 Programação II INF 1007 Programação II Aula 05 Recursividade Edirlei Soares de Lima Introdução As seguintes sentenças são Verdadeiras ou Falsas? 1. Alguém diz: Estou mentido agora! ; 2. Alguém

Leia mais

Universidade de São Paulo São Carlos Instituto de Ciências Matemáticas e de Computação. Recursão em C

Universidade de São Paulo São Carlos Instituto de Ciências Matemáticas e de Computação. Recursão em C Universidade de São Paulo São Carlos Instituto de Ciências Matemáticas e de Computação Recursão em C Material preparado pela profa Silvana Maria Affonso de Lara 2º semestre de 2010 ROTEIRO DA AULA Definição

Leia mais

Aula 05. Modularização Função Subrotina Recursividade

Aula 05. Modularização Função Subrotina Recursividade Logo Aula 05 Modularização Função Subrotina Recursividade 2 Modularização A modularização é um processo que aborda os aspectos da decomposição de algoritmos em módulos. Módulo é um grupo de comandos, constituindo

Leia 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

Algoritmos e Estruturas de Dados

Algoritmos e Estruturas de Dados Algoritmos e Estruturas de Dados Prof. Yandre Maldonado - 1 RECURSIVIDADE Prof. Yandre Maldonado e Gomes da Costa Prof. Yandre Maldonado - 2 Um objeto é dito recursivo se ele consistir parcialmente ou

Leia mais

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

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/ nataliabatista@decom.cefetmg.br

Leia mais

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 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 aconci@ic.uff.br, erickr@id.uff.br Roteiro Funções Escopo de Variáveis Variáveis Globais

Leia mais

Introdução a Algoritmos Parte 08

Introdução a Algoritmos Parte 08 Universidade Federal do Vale do São Francisco Curso de Engenharia de Computação Introdução a Algoritmos Parte 08 (Baseado no Material do Prof. Marcelo Linder) Prof. Jorge Cavalcanti jorge.cavalcanti@univasf.edu.br

Leia mais

Roteiro Prático Nº 13 Recursividade

Roteiro Prático Nº 13 Recursividade UNIVERSIDADE FEDERAL DE ITAJUBÁ UNIFEI CAMPUS ITABIRA BAC004 TÉCNICAS DE PROGRAMAÇÃO Professores: Claudia, Denílson, Fabiana, Fernando, Juliano, Natália, Raquel, Rodrigo, Sandro e Walter Roteiro Prático

Leia mais

Estruturas de Dados, Análise de Algoritmos e Complexidade Estrutural. Carlos Alberto Alonso Sanches

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

Leia mais

Fundamentos de programação

Fundamentos de programação Fundamentos de programação Recursividade Edson Moreno edson.moreno@pucrs.br http://www.inf.pucrs.br/~emoreno O que é recursividade? Técnica baseada em divisão e conquista Buscar solucionar o problema dividindo

Leia mais

MC102 Aula 27 Recursão II

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

Leia mais

Programação Estruturada Prof. Rodrigo Hausen Recursão

Programação Estruturada Prof. Rodrigo Hausen  Recursão Programação Estruturada Prof. Rodrigo Hausen http://progest.compscinet.org Recursão 1 O QUE É? Definição recursiva é aquela que define os elementos de um conjunto em função de outros elementos desse mesmo

Leia mais

INF1005: Programação 1. Repetições. 08/03/10 (c) Paula Rodrigues 1

INF1005: Programação 1. Repetições. 08/03/10 (c) Paula Rodrigues 1 INF1005: Programação 1 Repetições 08/03/10 (c) Paula Rodrigues 1 Tópicos Principais Construção de Laços com while Algoritmos com Repetição Construção de Laços com for Repetição com Teste no Final 08/03/10

Leia mais

Aula 14: Repetição (Parte 2)

Aula 14: Repetição (Parte 2) Aula 14: Repetição (Parte 2) Introdução a Programação Túlio Toffolo & Puca Huachi http://www.toffolo.com.br BCC201 2019/1 Departamento de Computação UFOP Aula Anterior Laços de repetição Comando de repetição

Leia mais

INF 1005 Programação I

INF 1005 Programação I INF 1005 Programação I Aula 07 Estruturas de Repetição Edirlei Soares de Lima Estruturas de Repetição Diversos problemas somente podem ser resolvidos numericamente por um computador

Leia mais

Linguagem C estruturas de repetição

Linguagem C estruturas de repetição Linguagem C estruturas de repetição IF61A/IF71A - Computação 1 Prof. Leonelo Almeida Universidade Tecnológica Federal do Paraná Até agora... Introdução à linguagem C Estrutura de um programa Escrita e

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 kkco@dei.unicap.br Introdução Estudo das estruturas de dados envolve dois objetivos complementares:

Leia mais

Aula 03 -Introdução àlinguagc Programação: Estrutura-Repetição. OPL e IC1 Prof: Anilton Joaquim da Silva

Aula 03 -Introdução àlinguagc Programação: Estrutura-Repetição. OPL e IC1 Prof: Anilton Joaquim da Silva Aula 03 -Introdução àlinguagc Programação: Estrutura-Repetição OPL e IC1 Prof: Anilton Joaquim da Silva Anilton.ufu@outlook.com 1 Estrutura de Repetição Em certas situações é necessária a repetição de

Leia mais

Estruturas de repetição

Estruturas de repetição Título em português: FEITIÇO DO TEMPO (1993) Sinopse: Um repórter de televisão que faz previsões de meteorologia vai à uma pequena cidade para fazer uma matéria especial sobre o inverno. Querendo ir embora

Leia mais

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

ALGORITMOS AVANÇADOS UNIDADE II Recursividade. Luiz Leão Luiz Leão luizleao@gmail.com http://www.luizleao.com Conteúdo Programático 2.1 - Definições recursivas 2.2 - Como implementar recursividade 2.3 - Quando não usar recursividade 2.4 - Desenvolvendo algoritmos

Leia mais

Programação para Games I

Programação para Games I Programação para Games I Estrutura de Decisão Estrutura de Decisão Uma estrutura de decisão examina uma ou mais condições e decide quais delas serão executadas Em jogos digitais, considere inicialmente

Leia mais

INF1005 Programação I. Pontifícia Universidade Católica Departamento de Informática

INF1005 Programação I. Pontifícia Universidade Católica Departamento de Informática INF1005 Programação I Pontifícia Universidade Católica Departamento de Informática 1 INF1005 Exemplo 1 Pontifícia Universidade Católica Departamento de Informática 2 Computação Científica 3 Processador

Leia mais

Lógica de Programação I

Lógica de Programação I Gilson de Souza Carvalho gaucho.gilson@hotmail.com 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

Leia mais

Algoritmos e Programação

Algoritmos e Programação Algoritmos e Programação Aula 3 Introdução a Linguagem C Profa. Marina Gomes marinagomes@unipampa.edu.br 1 Aula de Hoje - Criar programas simples em C utilizando a estrutura básica; - Declarar variáveis;

Leia 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 à Computação II Unesp Rio Claro 2012Prof. Rafael Oliveira

Introdução à Computação II Unesp Rio Claro 2012Prof. Rafael Oliveira Recursão A recursão é bastante usada na matemática para definir funções, usando elas mesmas nas suas próprias definições. Por exemplo o cálculo de um fatorial, pode ser representada em forma de recursão

Leia mais

Programação Estruturada

Programação Estruturada Programação Estruturada Estruturas de repetição Professores Emílio Francesquini e Carla Negri Lintzmayer 2018.Q3 Centro de Matemática, Computação e Cognição Universidade Federal do ABC Comandos de repetição

Leia mais

Roteiro da aula. Resolução de exercícios O operador de indireção Sub-rotinas e tipos. DIM Conceitos e Técnicas de Programação

Roteiro da aula. Resolução de exercícios O operador de indireção Sub-rotinas e tipos. DIM Conceitos e Técnicas de Programação Roteiro da aula Resolução de exercícios O operador de indireção Sub-rotinas e tipos. 1 1 Exercícios David Déharbe 2 2 Uma definição de sub-rotina em C int max (int x, int y) int result; if (x > y) result

Leia mais

INF 1010 Estruturas de Dados Avançadas

INF 1010 Estruturas de Dados Avançadas INF 1010 Estruturas de Dados Avançadas Complexidade de Algoritmos 2012 DI, PUC-Rio Estruturas de Dados Avançadas 2012.2 1 Introdução Complexidade computacional Termo criado por Hartmanis e Stearns (1965)

Leia mais

Aula 06: Análise matemática de algoritmos recursivos

Aula 06: Análise matemática de algoritmos recursivos Aula 06: Análise matemática de algoritmos recursivos David Déharbe Programa de Pós-graduação em Sistemas e Computação Universidade Federal do Rio Grande do Norte Centro de Ciências Exatas e da Terra Departamento

Leia mais

Programação Estruturada Prof. Rodrigo Hausen Condicionais e Laços

Programação Estruturada Prof. Rodrigo Hausen  Condicionais e Laços Programação Estruturada Prof. Rodrigo Hausen http://progest.compscinet.org Condicionais e Laços 1 RELEMBRANDO - AULA PASSADA Definindo Funções tipo de retorno (saída) tipo nomefuncao(tipo par1, tipo par2)

Leia mais

Python: Recursão. Claudio Esperança

Python: Recursão. Claudio Esperança Python: Recursão Claudio Esperança Recursão É um princípio muito poderoso para construção de algoritmos A solução de um problema é dividido em Casos simples: São aqueles que podem ser resolvidos trivialmente

Leia mais

Aula 12- Variáveis e valores reais

Aula 12- Variáveis e valores reais Aula 12- Variáveis e valores reais Até agora todos os nossos problemas continham apenas valores inteiros e portanto variáveis do tipo int. Para resolver problemas que usam valores com parte fracionária,

Leia mais

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

Estruturas de Controle de Fluxo

Estruturas de Controle de Fluxo Aula Prática IX Aula Prática IX Teoria Estruturas de Controle de Fluxo Instrução condicional simples Em pseudocódigo: Na linguagem C: se entao fimse if ()

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

Introdução à Programação C

Introdução à Programação C Introdução à Programação C Fabio Mascarenhas - 2014.2 http://www.dcc.ufrj.br/~fabiom/introc Recapitulando Um programa C é uma sequência de diretivas (#include e #define), declarações de funções auxiliares,

Leia mais

controle de fluxo repetições iterativas

controle de fluxo repetições iterativas Controle de Fluxo Repetições iterativas INF1005 Programação I Prof. Hélio Lopes lopes@inf.puc-rio.br sala 408 RDC 1 controle de fluxo repetições iterativas tópicos while for do while break continue referência

Leia mais

Aula 07: Introdução a Funções

Aula 07: Introdução a Funções Aula 07: Introdução a Funções Introdução a Programação Túlio Toffolo & Puca Huachi http://www.toffolo.com.br BCC201 2019/1 Departamento de Computação UFOP Aula Anterior Comandos condicionais Exemplos diversos

Leia mais

2º Roteiro de Laboratório Estruturas condicionais

2º Roteiro de Laboratório Estruturas condicionais 2º Roteiro de Laboratório Estruturas condicionais Tópicos abordados 1. Estruturas if e if/ 1.1. Sintaxe 1.2. Exemplo: par_impar.c 2. Aplicação 2.1. Problema resolvido: [PR 1] 2.2. Problemas propostos:

Leia mais

Algoritmos e Lógica de Programação. 6ª Lista de Exercícios Comandos de Repetição

Algoritmos e Lógica de Programação. 6ª Lista de Exercícios Comandos de Repetição Algoritmos e Lógica de Programação 6ª Lista de Exercícios Comandos de Repetição 1. Qual a saída do programa abaixo? int i; for (i = 0; i < 10; i += 2) printf("%d\n", i / 2); 2. Qual a saída do programa

Leia mais

Linguagem C++ Estruturas de controle Parte II Estruturas de repetição

Linguagem C++ Estruturas de controle Parte II Estruturas de repetição Fundamentos de Programação Linguagem C++ Estruturas de controle Parte II Estruturas de repetição Prof. Bruno E. G. Gomes IFRN 1 Estruturas de Controle Permitem o controle da sequência de execução de um

Leia mais

MC-102 Aula 06 Comandos Repetitivos

MC-102 Aula 06 Comandos Repetitivos MC-102 Aula 06 Comandos Repetitivos Instituto de Computação Unicamp 2 de Setembro de 2016 Roteiro 1 Comandos Repetitivos 2 Comando while 3 Comando do-while 4 O comando for 5 Exemplos com Laços Variável

Leia mais

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

Recursão. Prof. Cristiano André da Costa. [Versão de Março de 2000] Definição Recursão [Versão de Março de 2000] Definição Um objeto é dito recursivo se ele consistir parcialmente ou for definido em termos de si próprio Recursões ocorrem na matemática, informática, no dia a dia...

Leia mais

Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Condicionais e de Repetição

Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Condicionais e de Repetição Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Condicionais e de Repetição 1 Comando while Deseja-se calcular o valor de: 1 + 2 + 3 +... + N. Observação: não sabemos, a priori, quantos termos

Leia mais

Programação Estruturada

Programação Estruturada Programação Estruturada Estruturas condicionais Professores Emílio Francesquini e Carla Negri Lintzmayer 2018.Q3 Centro de Matemática, Computação e Cognição Universidade Federal do ABC Comandos condicionais

Leia mais

Recursividade. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR

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

Leia mais

Programação. Prof Marcelo Zorzan Prof a Melissa Zanatta

Programação. Prof Marcelo Zorzan Prof a Melissa Zanatta Programação - Recursividade - Prof Marcelo Zorzan Prof a Melissa Zanatta É o processo de resolução de um problema, reduzindo-o em um ou mais subproblemas com as seguintes características: - São idênticos

Leia mais

PROGRAMAÇÃO INSTRUÇÕES DA LINGUAGEM C

PROGRAMAÇÃO INSTRUÇÕES DA LINGUAGEM C PROGRAMAÇÃO INSTRUÇÕES DA LINGUAGEM C 1 2 Condicional 1 Se 'C' é verdadeira Então?; 3 Condicional 1 Se 'C' é verdadeira Então? if (C)?; 4 Condicional 2 Se 'C' é verdadeira Então? Senão?? 5 Condicional

Leia mais

Capítulo 3: Repetições. Pontifícia Universidade Católica Departamento de Informática

Capítulo 3: Repetições. Pontifícia Universidade Católica Departamento de Informática Capítulo 3: Repetições Pontifícia Universidade Católica Departamento de Informática Construção de Laços Repetição: Diversos problemas de difícil solução podem ser resolvidos numericamente por um computador

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

Programação de Computadores II

Programação de Computadores II Programação de Computadores II Aula de Revisão 01 Karina Mochetti 2019.1 Formato da Prova Questões teóricas. Escrever um programa do zero. Dar valores finais de variáveis. Completar um programa. Achar

Leia mais

Algoritmos e Estruturas de Dados I. Universidade Federal de São João del-rei Pedro Mitsuo Shiroma Sala 119 Bloco 3

Algoritmos e Estruturas de Dados I. Universidade Federal de São João del-rei Pedro Mitsuo Shiroma Sala 119 Bloco 3 Algoritmos e Estruturas de Dados I Universidade Federal de São João del-rei Pedro Mitsuo Shiroma Sala 119 Bloco 3 Laboratório de AEDS 1 Aula 01 Linguagens de Programação Cada linguagem de programação obedece

Leia mais

Algoritmos e Estruturas de Dados I 01/2013. Vetores e Recursividade. Pedro O.S. Vaz de Melo

Algoritmos e Estruturas de Dados I 01/2013. Vetores e Recursividade. Pedro O.S. Vaz de Melo Algoritmos e Estruturas de Dados I 01/2013 Vetores e Recursividade Pedro O.S. Vaz de Melo Problema 1 Implemente uma função que classifique os elementos de um vetor em ordem crescente usando o algoritmo

Leia mais

PROTÓTPOS DE FUNÇÕES/PROCEDIMENTOS

PROTÓTPOS DE FUNÇÕES/PROCEDIMENTOS PROTÓTPOS DE FUNÇÕES/PROCEDIMENTOS Uma função (ou procedimento) deve ser declarada sempre antes da sua primeira utilização. É por essa razão que devemos escrever todas as funções antes da função main().

Leia mais