Subindo uma escada. Ação: Subir 1 degrau da escada

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

Download "Subindo uma escada. Ação: Subir 1 degrau da escada"

Transcrição

1 Recursão

2 Subindo uma escada Ação: Subir 1 degrau da escada 2

3 Subindo uma escada Ação: Subir 1 degrau da escada 3

4 Subindo uma escada Ação: E agora??? 4

5 Subindo uma escada Ação: E agora??? Tem uma escada... 5

6 Subindo uma escada Ação: Subir 1 degrau da escada 6

7 Subindo uma escada Ação: E agora??? 7

8 Subindo uma escada Ação: E agora??? Tem uma escada... Subir 1 degrau da escada 8

9 Subindo uma escada Ação: E agora??? Tem uma escada... Que sequência de ações o bot está realizando? Subir 1 degrau da escada 9

10 Subindo uma escada Que sequência de ações o bot está realizando? Subir 1 degrau Subir escada restante (de n-1 degraus) 10

11 Subindo uma escada Subir uma escada de n degraus é: Subir 1 degrau Subir uma escada de n-1 degraus 11

12 Subindo uma escada Subir uma escada de n degraus é: Subir 1 degrau Subir uma escada de n-1 degraus 12

13 Subindo uma escada Subir uma escada de n degraus é: Subir 1 degrau Subir uma escada de n-1 degraus 13

14 Subindo uma escada Subir uma escada de n degraus é: Subir 1 degrau Subir uma escada de n-1 degraus 14

15 Subindo uma escada Subir uma escada de n degraus é: Subir 1 degrau Subir uma escada de n-1 degraus 15

16 Subindo uma escada Subir uma escada de n degraus é: Subir 1 degrau Subir uma escada de n-1 degraus 16

17 Subindo uma escada Subir uma escada de n degraus é: Subir 1 degrau Subir uma escada de n-1 degraus 17

18 Subindo uma escada Subir uma escada de n degraus é: Subir 1 degrau Subir uma escada de n-1 degraus 18

19 Subindo uma escada Subir uma escada de n degraus é: Subir 1 degrau Subir uma escada de n-1 degraus 19

20 Subindo uma escada Subir uma escada de n degraus é: Subir 1 degrau Subir uma escada de n-1 degraus O que aconteceu????? Por que ele caiu???? 20

21 Subindo uma escada Subir uma escada de n degraus é: Subir 1 degrau Subir uma escada de n-1 degraus a ação é definida em termos de si mesma Subir uma escada aparece como parte da definição de subir uma escada!! Forma um ciclo Quando interromper o ciclo para que o bot não caia? 21

22 Subindo uma escada Quando interromper o ciclo para que o bot não caia? Escada com degraus deve subir Escada sem degraus deve parar 22

23 Subindo uma escada Subir uma escada de n degraus é: Se não há degraus na escada ( n == 0) chegou no topo da escada/não há escada Senão Subir 1 degrau Subir uma escada de n-1 degraus 23

24 Subindo uma escada Subir uma escada de n degraus é: Se não há degraus na escada ( n == 0) chegou no topo da escada/não há escada Senão Subir 1 degrau Subir uma escada de n-1 degraus 24

25 Subindo uma escada Subir uma escada de n degraus é: Se não há degraus na escada ( n == 0) chegou no topo da escada/não há escada Senão Subir 1 degrau Subir uma escada de n-1 degraus 25

26 Subindo uma escada Subir uma escada de n degraus é: Se não há degraus na escada ( n == 0) chegou no topo da escada/não há escada Senão Subir 1 degrau Subir uma escada de n-1 degraus 26

27 Subindo uma escada Subir uma escada de n degraus é: Se não há degraus na escada ( n == 0) chegou no topo da escada/não há escada Senão Subir 1 degrau Subir uma escada de n-1 degraus 27

28 Subindo uma escada Subir uma escada de n degraus é: Se não há degraus na escada ( n == 0) chegou no topo da escada/não há escada Senão Subir 1 degrau Subir uma escada de n-1 degraus 28

29 Subindo uma escada Subir uma escada de n degraus é: Se não há degraus na escada ( n == 0) chegou no topo da escada/não há escada Senão Subir 1 degrau Subir uma escada de n-1 degraus 29

30 Subindo uma escada 30

31 Recursividade Um objeto é dito recursivo se pode ser definido em termos de si próprio: "o quê está sendo definido aparece como parte da definição" Para fazer iogurte, você precisa de leite e de um pouco de iogurte. Para subir uma escada você precisa subir um degrau e depois o resto da escada Em toda definição recursiva, existe um caso trivial ( caso base), cuja solução é conhecida e interrompe a recorrência. Sequências, funções e conjuntos podem ser definidos recursivamente. 31

32 Recursividade em conjuntos Exemplo: Conjunto dos números naturais (pelos axiomas de Peano) 0 não é sucessor de nenhum número Todo número natural tem um único sucessor que também é um número natural Obs: Todo conjunto definido recursivamente tem cardinalidade infinita (suc(0)) 2 -- (suc(suc(0)) 3 -- (suc(suc(suc(0))) 32

33 Recursividade na Natureza * 33

34 Definições Recursivas Composta de duas partes: (1) uma base, onde alguns casos simples do item que está sendo definido são dados explicitamente (ponto de partida) (2) um passo indutivo ou recursivo, onde outros casos do item que está sendo definido são dados em termos de casos anteriores. (novos casos construídos a partir dos casos simples, que são base para construir outros casos e assim por diante) 34

35 Mãos na massa! Encontre a definição recursiva de: 1. x*y Casos Triviais? Passos Recursivos? 2. x y, com y N Casos Triviais? Passos Recursivos? 3. Quantidade de caracteres em uma string Casos Triviais? Passos Recursivos? 4. x! Casos Triviais? Passos Recursivos? 5. DESAFIO: x:y, com x, y N Casos Triviais? Passos Recursivos? 6. DESAFIO: x%y com y N Casos Triviais? Passos Recursivos? 35

36 Solução Encontre a definição recursiva de: 1. x * y 3 * 4 = 3 + (3*3) 3 * 3 = 3 + (3*2) 3 * 2 = 3 + (3*1) 3 * 1 = 3 + (3*0) 3 * 0 = 0 Casos Triviais? Passo Recursivo? 36

37 Solução 1. x * y 3 * 4 = 3 + (3*3) 3 * 3 = 3 + (3*2) 3 * 2 = 3 + (3*1) 3 * 1 = 3 + (3*0) 3 * 0 = 0 Caso Trivial? x*0 = 0 Passo Recursivo? x* y = x + x*(y-1) x* y 0, y x 0 x*( y 1), y 0 37

38 Solução 2. x y 3 4 = 3 * = 3 * = 3 * = 3 * = 1 Caso Trivial? x 0 = 1 Passo Recursivo? x y = x * x (y-1) x y 1, y x* x 0 y 1, y 0 38

39 Solução 3. Quantidade de caracteres em uma string Mia = M + ia ia = i + a a = a + '' Caso Trivial? string vazia 0 Passos Recursivos? 1 (do 1º caractere) + quantidade de caracteres na string subsequente comprimento ( str) 0, se str '' 1 comprimento (str[1:]), sestr '' 39

40 Fatorial de um número 4. Fatorial de um número n! = n * (n-1)! (n-1)! = (n-1) * (n-2)! (n-2)! = (n-2) * (n-3)!... (n-(n-1))! = (n-(n-1)) * (n-n)! (n-n)! =1 1, se n 0 n! n (n 1)!, se n 0 Esta relação de recorrência é infinita? 40

41 Fatorial de um número 1, se n n! n ( n 0 1)!, se n 0 Caso base ( ou trivial): solução conhecida. não envolve a recursão Interrompe a recorrência 41

42 Fatorial de um número 1, se n 0 n! n (n 1)!, se n 0 Caso BASE Passo Recursivo 42

43 Fatorial de 3 3! = 3 * 2! = 2 * 1, se n 0 n! n (n 1)!, se n 0 1! = 1 * 0! = 1 43

44 Fatorial de 3 6 = 3! = 3 * 2 2! = 2 * 1 1, se n 0 n! n (n 1)!, se n 0 1! = 1 * 1 0! = 1 44

45 Solução 5. Quociente da divisão inteira x : y Repartir x em grupos de y unidades. Quantas vezes o y cabe inteiro dentro do x? Caso Trivial? x < y = 0 Passo Recursivo? x y 1 + (x-y):y 7:2 = 1+ ( 5:2) 5:2 = 1 + (3:2) 3:2 = 1+ (1:2) 1:2 = 0 x : y 0, x y 1 (x - y): y, x y 45

46 Solução 6. Resto da divisão inteira x % y O que sobra de x ao reparti-lo em grupos de y unidades. Caso Trivial? x < y = x Passo Recursivo? x y, 0 + (x-y) % y x % y x, x (x - y) y % y, x y 46

47 Estruturas Recursivas: Árvore Genealógica Eu e pais Eu, pais e avós Eu, pais, avós e bisavós Eu, pais, avós bisavós e tataravós Eu e meus ancestrais pais dos pais pais dos avós pais dos bisavós 47

48 Estruturas Recursivas: Árvore Genealógica-Principal Se o nível de ancestral desejado foi atingido parar Senão Desenhar galho do nível Desenhar árvore genealógica da mãe do nível (c/-30 0 ) Desenhar árvore genealógica do pai do nível (c/+30 0 ) 48

49 Figuras Recursivas (fractal) Fractais são objetos em que cada parte é semelhante ao objeto como um todo: O objeto é composto por partes reduzidas dele próprio Triângulo de Sierpinski: 1 nível 2 níveis 3 níveis 4 níveis 5 níveis Profundidade 2 Profundidade 3 Profundidade 4 Profundidade 5 49

50 Pensamento Recursivo Como somar estes números? ???? Quebrar o problema em subproblemas menores, de mesma natureza, até alcançar um problema simples o bastante para ser resolvido trivialmente 50

51 Pensamento Recursivo ?

52 Pensamento Recursivo ?

53 Pensamento Recursivo ? 8? 4 53

54 Pensamento Recursivo

55 Pensamento Recursivo ??

56 Pensamento Recursivo

57 Pensamento Recursivo ? 4 57

58 Pensamento Recursivo

59 Pensamento Recursivo

60 Pensamento Recursivo ?

61 Pensamento Recursivo ?

62 Pensamento Recursivo

63 Pensamento Recursivo

64 Pensamento Recursivo Qual foi o caso base? Só um número para somar Qual o passo recursivo? O que fazer com a solução retornada da chamada para o caso mais simples em cada instância? 64

65 Pensamento Recursivo Qual foi o caso base? Só um número para somar Qual o passo recursivo? Somar nºs restantes ( 2º ao último) O que fazer com a solução retornada da chamada para o caso mais simples em cada instância? 65

66 Pensamento Recursivo Qual foi o caso base? Só um número para somar Qual o passo recursivo? Somar nºs restantes ( 2º ao último) O que fazer com a solução retornada da chamada para o caso mais simples em cada instância? Adicionar o 1º número ao total computado pela chamada recursiva 66

67 Processo recursivo para a solução de um problema Divide os problemas em problemas menores de mesma natureza. Natureza do problema Natureza do subproblema Método para solução do problema Método para solução do subproblema Composto de duas partes: O caso trivial, cuja solução é conhecida, e interrompe a recorrência Um método geral, onde há chamada do método para um ou mais problemas menores (subproblemas) de mesma natureza. 67

68 Funções Recursivas Resolve o problema usando como método de solução a recursão. É definida em termos de si mesma, a partir das relações de recorrência e do(s) caso(s) base(s). Regras básicas - No corpo da função há: pelo menos uma condição de parada (testes dos casos bases) chamada de uma cópia de si mesma entregando como argumento um problema mais simples do que o recebido, convergindo para o caso base (passo recursivo) problema def função ( )(:( if caso trivial: return resposta conhecida solprobmaissimples = função( ) retorna a combinação da solução p/o Argumento mais simples com solprobmaissimples 68

69 Funções Recursivas: como funciona? A chamada recursiva é uma nova instância da função (uma "cópia ) parâmetros e variáveis locais são distintos Só os parâmetros/variáveis criados pela função (ou instância) são visíveis. Exemplo: Função SubirEscada Definição Recursiva: subirescada comn degraus parar, n 0 subir1degrau subirescada comn-1degraus, n 0 Do que a função precisa para realizar sua tarefa? 69

70 Funções Recursivas: como funciona? A chamada recursiva é uma nova instância da função (uma "cópia") parâmetros e variáveis locais são distintos Só os parâmetros/variáveis criados pela função (ou instância) são visíveis. Exemplo: Função SubirEscada Definição Recursiva: subirescada comn degraus parar, n 0 subir1degrau subirescada comn-1degraus, n 0 Do que a função precisa para realizar sua tarefa? Do nº de degraus da escada 70

71 Desenvolvendo a Solução def SubirEscada (n) Se n == 0 : chegou no topo da escada/não há escada senão: Subir 1 degrau SubirEscada ( n-1) 71

72 def SubirEscada (n): Se n == 0 : chegou no topo da escada/não há escada senão: Subir 1 degrau SubirEscada ( n-1) n 4 72

73 def SubirEscada (n): Se n == 0 : chegou no topo da escada/não há escada senão: Subir 1 degrau SubirEscada ( n-1) n 4 73

74 def SubirEscada (n): Se n == 0 : chegou no topo da escada/não há escada senão: Subir 1 degrau SubirEscada ( n-1) n 4 74

75 def SubirEscada (n): Se n == 0 : chegou no topo da escada/não há escada senão: Subir 1 degrau SubirEscada ( n-1) n 3 75

76 def SubirEscada (n): Se n == 0 : chegou no topo da escada/não há escada senão: Subir 1 degrau SubirEscada ( n-1) n 3 76

77 def SubirEscada (n): Se n == 0 : chegou no topo da escada/não há escada senão: Subir 1 degrau SubirEscada ( n-1) n 3 77

78 def SubirEscada (n): Se n == 0 : chegou no topo da escada/não há escada senão: Subir 1 degrau SubirEscada ( n-1) n 2 78

79 def SubirEscada (n): Se n == 0 : chegou no topo da escada/não há escada senão: Subir 1 degrau SubirEscada ( n-1) n 2 79

80 def SubirEscada (n): Se n == 0 : chegou no topo da escada/não há escada senão: Subir 1 degrau SubirEscada ( n-1) n 2 80

81 def SubirEscada (n): Se n == 0 : chegou no topo da escada/não há escada senão: Subir 1 degrau SubirEscada ( n-1) n 1 81

82 def SubirEscada (n): Se n == 0 : chegou no topo da escada/não há escada senão: Subir 1 degrau SubirEscada ( n-1) n 1 82

83 def SubirEscada (n): Se n == 0 : chegou no topo da escada/não há escada senão: Subir 1 degrau SubirEscada ( n-1) n 1 83

84 def SubirEscada (n): Se n == 0 : chegou no topo da escada/não há escada senão: Subir 1 degrau SubirEscada ( n-1) n 0 84

85 def SubirEscada (n): Se n == 0 : chegou no topo da escada/não há escada senão: Subir 1 degrau SubirEscada ( n-1) n 0 85

86 Roteiro Recursivo Para se aplicar a recursividade deve-se pensar na definição recursiva do problema. a) Caso base ( regra de parada): Qual é o caso base? Como reconhecer o caso base? O que deve ser feito no caso base? b) Passo Recursivo: "Como o problema pode ser dividido em problemas menores de mesma natureza? ". O que deve mudar na chamada recursiva para se aproximar do caso base? Como deve mudar na chamada recursiva para convergir para o caso base? c) O que deve ser feito após a chamada recursiva da função, usando o (valor de) retorno da função? 86

87 Resumo: Recursão: Forma Geral Esquematicamente, as funções recursivas têm a seguinte forma: se "condição para o caso de base 1 " então resolução direta para o caso de base 1 <senão se "condição para o caso de base n " então> <resolução direta para o caso de base n > senão divide a instância do problema em (pelo menos) uma mais simples (pelo menos) uma chamada recursiva, com instância menor do que a instância atual do problema, convergindo ao caso base retorna combinação de resultado das chamadas recursivas fimse 87

88 Desenhando a escada com o módulo turtle

89 Desenhando uma escada recursivamente ESCADA + ESCADA 89

90 Desenhando uma escada recursivamente ESCADA + ESCADA 90

91 Desenhando uma escada recursivamente ESCADA + ESCA DA 91

92 Desenhando uma escada recursivamente + ESCA DA 92

93 Exemplo: Função DesenharEscada Desenvolvendo a Solução Definição Recursiva: parar, n 0 desenharescada comn degraus desenhar1degrau desenharescada comn-1degraus, n 0 Do que a função precisa para realizar sua tarefa? alt do 1º degrau ESCADA nº de degraus Pto (x,y) largura do degrau 93

94 Desenhando uma escada: Solução recursiva import turtle def Degrau(t,l,a,x,y): t.goto(x,y) t.begin_fill() t.color('lightsteelblue') for i in range(2): t.fd(l) t.left(90) t.fd(a) t.left(90) t.end_fill() return def Escada(t,n,l,a,x,y): if n == 0: return Degrau(t,l,a,x,y) Escada(t,n-1,l,a+20,x+40,y) return 94

95 Escada(t,3,40,10,-100,0) n l a x y if n == 0: return Degrau(t,l,a,x,y) Escada(t,l,a+20,n-1,x+40,y) return

96 Escada(t,3,40,10,-100,0) n l a x y if n == 0: return Degrau(t,l,a,x,y) Escada(t,l,a+20,n-1,x+40,y) return

97 Escada(t,3,40,10,-100,0) n l a x y if n == 0: return Degrau(t,l,a,x,y) Escada(t,l,a+20,n-1,x+40,y) return

98 Escada(t,3,40,10,-100,0) n l a x y if n == 0: return Degrau(t,l,a,x,y) Escada(t,l,a+20,n-1,x+40,y) return 98

99 Escada(t,3,40,10,-100,0) Escada(t,2,40,30,-60,0) n l a x y if n == 0: return Degrau(t,l,a,x,y) Escada(t,l,a+20,n-1,x+40,y) return Lembre-se: Cada chamada é uma nova instância da função 99

100 Escada(t,3,40,10,-100,0) Escada(t,2,40,30,-60,0) n l a x y if n == 0: return Degrau(t,l,a,x,y) Escada(t,l,a+20,n-1,x+40,y) return 100

101 Escada(t,3,40,10,-100,0) Escada(t,2,40,30,-60,0) n l a x y if n == 0: return Degrau(t,l,a,x,y) Escada(t,l,a+20,n-1,x+40,y) return 101

102 Escada(t,3,40,10,-100,0) Escada(t,2,40,30,-60,0) n l a x y if n == 0: return Degrau(t,l,a,x,y) Escada(t,l,a+20,n-1,x+40,y) return 102

103 Escada(t,3,40,10,-100,0) Escada(t,2,40,30,-60,0) Escada(t,1,40,50,-20,0) n l a x y if n == 0: return Degrau(t,l,a,x,y) Escada(t,l,a+20,n-1,x+40,y) return Lembre-se: Cada chamada é uma nova instância da função 103

104 Escada(t,3,40,10,-100,0) Escada(t,2,40,30,-60,0) Escada(t,1,40,50,-20,0) n l a x y if n == 0: return Degrau(t,l,a,x,y) Escada(t,l,a+20,n-1,x+40,y) return 104

105 Escada(t,3,40,10,-100,0) Escada(t,2,40,30,-60,0) Escada(t,1,40,50,-20,0) n l a x y if n == 0: return Degrau(t,l,a,x,y) Escada(t,l,a+20,n-1,x+40,y) return 105

106 Escada(t,3,40,10,-100,0) Escada(t,2,40,30,-60,0) Escada(t,1,40,50,-20,0) n l a x y if n == 0: return Degrau(t,l,a,x,y) Escada(t,l,a+20,n-1,x+40,y) return 106

107 Escada(t,3,40,10,-100,0) Escada(t,2,40,30,-60,0) Escada(t,1,40,50,-20,0) Escada(t,0,40,70,20,0) n l a x y if n == 0: return Degrau(t,l,a,x,y) Escada(t,l,a+20,n-1,x+40,y) return Lembre-se: Cada chamada é uma nova instância da função 107

108 Escada(t,3,40,10,-100,0) Escada(t,2,40,30,-60,0) Escada(t,1,40,50,-20,0) Escada(t,0,40,70,20,0) n l a x y if n == 0: return Degrau(t,l,a,x,y) Escada(t,l,a+20,n-1,x+40,y) return 108

109 Escada(t,3,40,10,-100,0) Escada(t,2,40,30,-60,0) Escada(t,1,40,50,-20,0) Escada(t,0,40,70,20,0) n l a x y if n == 0: return Degrau(t,l,a,x,y) Escada(t,l,a+20,n-1,x+40,y) return 109

110 Escada(t,3,40,10,-100,0) Escada(t,2,40,30,-60,0) Escada(t,1,40,50,-20,0) Escada(t,0,40,70,20,0) 110

111 Escada(t,3,40,10,-100,0) Escada(t,2,40,30,-60,0) Escada(t,1,40,50,-20,0) n l a X y if n == 0: return Degrau(t,l,a,x,y) Escada(t,l,a+20,n-1,x+40,y) return 111

112 Escada(t,3,40,10,-100,0) Escada(t,2,40,30,-60,0) Escada(t,1,40,50,-20,0) n l a x y if n == 0: return Degrau(t,l,a,x,y) Escada(t,l,a+20,n-1,x+40,y) return 112

113 Escada(t,3,40,10,-100,0) Escada(t,2,40,30,-60,0) Escada(t,1,40,50,-20,0) 113

114 Escada(t,3,40,10,-100,0) Escada(t,2,40,30,-60,0) n l a x y if n == 0: return Degrau(t,l,a,x,y) Escada(t,l,a+20,n-1,x+40,y) return 114

115 Escada(t,3,40,10,-100,0) Escada(t,2,40,30,-60,0) n l a x y if n == 0: return Degrau(t,l,a,x,y) Escada(t,l,a+20,n-1,x+40,y) return 115

116 Escada(t,3,40,10,-100,0) Escada(t,2,40,30,-60,0) 116

117 Escada(t,3,40,10,-100,0) n l a x y if n == 0: return Degrau(t,l,a,x,y) Escada(t,l,a+20,n-1,x+40,y) return

118 Escada(t,3,40,10,-100,0) n l a x y if n == 0: return Degrau(t,l,a,x,y) Escada(t,l,a+20,n-1,x+40,y) return

119 119

120 Complete o exercício 1. Crie a função recursiva subirescada que recebe a tartaruga, o número de degraus e as coordenadas do ponto inicial da escada 2. Utilize as funções: def sobedegrau(t,x,y): bola(t,'white') t.up() t.goto(x+25,y) bola(t,'yellow') return 3. Para testar sua função utilize o script: t=turtle.turtle() t.hideturtle() Escada(t,10,40,10,-100,0) t.goto(-112,0) bola(t,'yellow') subirescada(t,10,-110,12) def bola(t,cor): t.color(cor) t.begin_fill() t.down() t.circle(10) t.end_fill() return 120

121 Função SubirEscada Recursiva import turtle def sobedegrau(t,x,y): bola(t,'white') t.up() t.goto(x+25,y) bola(t,'yellow') return def subirescada(t,n,x,y): if n == 0: return sobedegrau(t,x,y) subirescada(t,n-1,x+40,y+20) return 121

122 Interpretação Recursiva de um número no sistema decimal

123 Sistema decimal No sistema decimal, como qualquer sistema posicional, o valor de cada algarismo depende do lugar que ele ocupa na escrita do número. Partindo da primeira casa, da direita para a esquerda, cada posição determina a multiplicação do algarismo por uma potência de 10 (1, 10, 100, ). Número sequência de algarismos 123

124 Interpretação Recursiva de um número no sistema decimal Um número no sistema decimal é: um algarismo ou um algarismo precedido por um nº Número alg

125 Mãos na massa!! Crie uma função recursiva para exibir os algarismos de um número positivo verticalmente Exemplo: Qual é o caso base? Qual o passo recursivo O que fazer com a solução retornada da chamada para o caso mais simples em cada instância? 125

126 Desenvolvendo a solução Qual é o caso base? Nº <10 apenas um algarismo Qual o passo recursivo? Separar a unidade, chamar para o número formado pelos algarismo sem a unidade O que fazer com a solução retornada da chamada para o caso mais simples em cada instância? Exibir a unidade do Nº impvertical ( número) exibir, número 10 impvertical( número//10) e exibir a unidadedonúmero, número

127 Escrever um número na vertical def ImpVertical(num): if num < 10: print(num) return ImpVertical(num//10) # separa o número que precede a unidade print(num%10) return # separa a unidade do número Número alg 127

128 impvertical(326) num if num < 10: 326 print(num) return impvertical(num//10) print(num%10) return _ 128

129 impvertical(326) num if num < 10: 326 print(num) return impvertical(num//10) print(num%10) return _ 129

130 impvertical(326) num if num < 10: 326 print(num) return impvertical(num//10) print(num%10) return _ 130

131 impvertical(326) impvertical(32) num if num <10: 32 print(num) return impvertical(num//10) print(num%10) return _ 131

132 impvertical(326) impvertical(32) num if num < 10: 32 print(num) return impvertical(num//10) print(num%10) return _ 132

133 impvertical(326) impvertical(32) num if num < 10: 32 print(num) return impvertical(num//10) print(num%10) return _ 133

134 impvertical(326) impvertical(32) _ impvertical(3) num if num < 10: 3 print(num) return impvertical(num//10) print(num%10) return 134

135 impvertical(326) impvertical(32) _ impvertical(3) num if num < 10: 3 print(num) return impvertical(num//10) print(num%10) return 135

136 impvertical(326) impvertical(32) 3 impvertical(3) num if num < 10: 3 print(num) return impvertical(num//10) print(num%10) return 136

137 impvertical(326) impvertical(32) 3 impvertical(3) num if num < 10: 3 print(num) return impvertical(num//10) print(num%10) return 137

138 impvertical(326) impvertical(32) 3 impvertical(3) 138

139 impvertical(326) impvertical(32) num if num < 10: 32 print(num) return impvertical(num//10) print(num%10) return 3 139

140 impvertical(326) impvertical(32) num if num <10: 32 print(num) return impvertical(num//10) print(num%10) return

141 impvertical(326) impvertical(32)

142 impvertical(326) num if num < 10: 326 print(num) return impvertical(num//10) print(num%10) return

143 impvertical(326) num if num < 10: 326 print(num) return impvertical(num//10) print(num%10) return

144 impvertical(326) num if num < 10: 326 print(num) return impvertical(num//10) print(num%10) return

145 impvertical(326)

146 O que muda para escrever um número de forma invertida, na vertical? def ImpVertical(num): if num < 10: print(num) return ImpVertical(num//10) # separa o número que precede a unidade # separa a unidade do número print(num%10) return O que muda para exibir o número invertido, verticalmente? Número alg impvertical ( número) exibir, número 10 impverticalnúmero ( //10) e exibir a unidadedonúmero, número

147 Uma Solução def ImpInvVertical(num): if num < 10: print(num) return print(num%10) ImpInvVertical(num//10) return # exibe a unidade do número # separa o núm que precede a unidade Número alg impinvvertical(número) exibir, número 10 exibir a unidadedonúmeroe impinvvertical( número//10), número

148 Exercícios 1) Crie uma função recursiva para contar algarismos de um número inteiro 2) Crie uma função recursiva para contar quantos algarismos 2 o número possui 3) Crie uma função recursiva para contar quantos algarismos iguais a um algarismo recebido, o número possui 4) Crie uma função recursiva que verifique se um número possui o algarismo 2. Esta função retorna True se o algarismo 2 ao número, False caso contrário 5) DESAFIOS a) Crie uma função que retorne o menor algarismo de um número b) Crie uma função recursiva que receba um número n e troque o 1º algarismo do número com o 2º, o 3º algarismo com o 4º, e assim sucessivamente 148

149 Desenvolvendo a Solução 1) Crie uma função recursiva para contar algarismos de um número inteiro Qual é o caso base? Nº com 1 algarismo (Nº <10), retornar 1 Qual o passo recursivo? Separar a unidade, chamar para Nº//10 O que fazer com a solução retornada da chamada para o caso mais simples em cada instância? Somar 1 à quantidade de algarismos contada pela chamada recursiva 149

150 Contar algarismos de um número Definição recursiva para contar algarismos de um número: 1, n 10 qtalg( n) 1 qtalg( n //10), n 10 Número alg 150

151 Solução Recursiva def contaalg (num): if num <10: return 1 qt=contaalg(num//10) return 1 + qt OU def contaalg (num): if num <10: return 1 return 1 + contaalg(num//10) 151

152 contaalg(326) if num <10: return 1 qt = contaalg(num//10) return 1 + qt num

153 contaalg(326) if num <10: return 1 qt = contaalg(num//10) return 1 + qt num

154 contaalg(326) if num <10: return 1 qt = contaalg(num//10) return 1 + qt num

155 contaalg(326) contaalg(32) if num <10: return 1 qt = contaalg(num//10) return 1 + qt num

156 contaalg(326) contaalg(32) if num <10: return 1 qt = contaalg(num//10) return 1 + qt num

157 contaalg(326) contaalg(32) if num <10: return 1 qt = contaalg(num//10) return 1 + qt num

158 contaalg(326) contaalg(32) contaalg(3) if num <10: return 1 qt = contaalg(num//10) return 1 + qt num 3 158

159 contaalg(326) contaalg(32) contaalg(3) if num <10: return 1 qt = contaalg(num//10) return 1 + qt num 3 159

160 contaalg(326) contaalg(32) contaalg(3) if num <10: return 1 qt = contaalg(num//10) return 1 + qt num 3 160

161 contaalg(326) contaalg(32) contaalg(3) 1 161

162 contaalg(326) contaalg(32) if num <10: return 1 qt = contaalg(num//10) return 1 + qt num 32 qt 162

163 contaalg(326) contaalg(32) if num <10: return 1 qt = contaalg(num//10) return 1 + qt num qt

164 contaalg(326) contaalg(32) if num <10: return 1 qt = contaalg(num//10) return 1 + qt num qt

165 contaalg(326) contaalg(32) 2 165

166 contaalg(326) if num <10: return 1 qt = contaalg(num//10) return 1 + qt num 326 qt 166

167 contaalg(326) if num <10: return 1 qt = contaalg(num//10) return 1 + qt num qt

168 contaalg(326) if num <10: return 1 qt = contaalg(num//10) return 1 + qt num qt

169 3 contaalg(326) 169

170 Interpretação Recursiva de uma sequência de caracteres

171 Interpretação recursiva de uma string Uma cadeia de caracteres é: uma sequência de caracteres vazia ou um caractere seguido de uma cadeia de caracteres ou car string T a l um caractere precedido por uma sequência de caracteres string car T a l 171

172 Mãos na massa!! Crie uma função que conte as letras maiúsculas de uma frase a) Caso base ( regra de parada) : Qual é o caso base? Como reconhecer o caso base? O que deve ser feito no caso base? b) Passo Recursivo: "Como o problema pode ser dividido em problemas menores de mesma natureza? ". O que deve mudar na chamada recursiva para se aproximar do caso base? Como deve mudar na chamada recursiva para convergir para o caso base? c) O que deve ser feito após a chamada recursiva da função, usando o (valor de) retorno da função? 172

173 Desenvolvendo a solução Qual é o caso base? string vazia Qual o passo recursivo? string[1:] O que fazer com a solução retornada da chamada para o caso mais simples em cada instância? Testar se o 1º caractere é letra maiúscula e somar 1 se for 173

174 Uma Solução def contamai(palavra): if not palavra: return 0 qt=contamai(palavra[1:]) if palavra[0]>='a' and palavra[0]<='z': return 1+qt else: return qt print(contamai('f1m!')) 174

175 Uma Solução def contamai(palavra): if not palavra: return 0 qt=contamai(palavra[1:]) Em Python, a string vazia tem valor lógico False!!! if palavra[0]>='a' and palavra[0]<='z': return 1+qt else: return qt print(contamai('f1m!')) 175

176 contamai('f1m!') def contamai(pal): pal if not palavra: F1M! return 0 qt=contamai(palavra[1:]) if palavra[0]>='a' and palavra[0]<='z': return 1+qt else: return qt 176

177 contamai('f1m!') def contamai(pal): pal if not palavra: F1M! return 0 qt=contamai(palavra[1:]) if palavra[0]>='a' and palavra[0]<='z': return 1+qt else: return qt 177

178 contamai('f1m!') def contamai(pal): pal if not palavra: F1M! return 0 qt=contamai(palavra[1:]) if palavra[0]>='a' and palavra[0]<='z': return 1+qt else: return qt 178

179 contamai('f1m!') contamai('1m!') def contamai(pal): pal if not palavra: 1M! return 0 qt=contamai(palavra[1:]) if palavra[0]>='a' and palavra[0]<='z': return 1+qt else: return qt 179

180 contamai('f1m!') contamai('1m!') def contamai(pal): pal if not palavra: 1M! return 0 qt=contamai(palavra[1:]) if palavra[0]>='a' and palavra[0]<='z': return 1+qt else: return qt 180

181 contamai('f1m!') contamai('1m!') def contamai(pal): pal if not palavra: 1M! return 0 qt=contamai(palavra[1:]) if palavra[0]>='a' and palavra[0]<='z': return 1+qt else: return qt 181

182 contamai('f1m!') contamai('1m!') contamai('m!') def contamai(pal): pal if not palavra: M! return 0 qt=contamai(palavra[1:]) if palavra[0]>='a' and palavra[0]<='z': return 1+qt else: return qt 182

183 contamai('f1m!') contamai('1m!') contamai('m!') def contamai(pal): pal if not palavra: M! return 0 qt=contamai(palavra[1:]) if palavra[0]>='a' and palavra[0]<='z': return 1+qt else: return qt 183

184 contamai('f1m!') contamai('1m!') contamai('m!') def contamai(pal): pal if not palavra: M! return 0 qt=contamai(palavra[1:]) if palavra[0]>='a' and palavra[0]<='z': return 1+qt else: return qt 184

185 contamai('f1m!') contamai('1m!') contamai('m!') contamai('!') def contamai(pal): pal if not palavra:! return 0 qt=contamai(palavra[1:]) if palavra[0]>='a' and palavra[0]<='z': return 1+qt else: return qt 185

186 contamai('f1m!') contamai('1m!') contamai('m!') contamai('!') def contamai(pal): pal if not palavra:! return 0 qt=contamai(palavra[1:]) if palavra[0]>='a' and palavra[0]<='z': return 1+qt else: return qt 186

187 contamai('f1m!') contamai('1m!') contamai('m!') contamai('!') def contamai(pal): pal if not palavra:! return 0 qt=contamai(palavra[1:]) if palavra[0]>='a' and palavra[0]<='z': return 1+qt else: return qt 187

188 contamai('f1m!') contamai('1m!') contamai('m!') contamai('!') contamai('') def contamai(pal): pal if not palavra: '' return 0 qt=contamai(palavra[1:]) if palavra[0]>='a' and palavra[0]<='z': return 1+qt else: return qt 188

189 contamai('f1m!') contamai('1m!') contamai('m!') contamai('!') contamai('') def contamai(pal): pal if not palavra: '' return 0 qt=contamai(palavra[1:]) if palavra[0]>='a' and palavra[0]<='z': return 1+qt else: return qt 189

190 contamai('f1m!') contamai('1m!') contamai('m!') contamai('!') contamai('') def contamai(pal): pal if not palavra: '' return 0 qt=contamai(palavra[1:]) if palavra[0]>='a' and palavra[0]<='z': return 1+qt else: return qt 190

191 contamai('f1m!') contamai('1m!') contamai('m!') contamai('!') contamai('') 0 191

192 contamai('f1m!') contamai('1m!') contamai('m!') contamai('!') def contamai(pal): pal if not palavra:! return 0 qt=contamai(palavra[1:]) if palavra[0]>='a' and palavra[0]<='z': return 1+qt else: return qt 192

193 contamai('f1m!') contamai('1m!') contamai('m!') contamai('!') def contamai(pal): pal qt if not palavra:! 0 return 0 qt=contamai(palavra[1:]) if palavra[0]>='a' and palavra[0]<='z': return 1+qt else: return qt 193

194 contamai('f1m!') contamai('1m!') contamai('m!') contamai('!') def contamai(pal): pal qt if not palavra:! 0 return 0 qt=contamai(palavra[1:]) if palavra[0]>='a' and palavra[0]<='z': return 1+qt else: return qt 194

195 contamai('f1m!') contamai('1m!') contamai('m!') contamai('!') def contamai(pal): pal qt if not palavra:! 0 return 0 qt=contamai(palavra[1:]) if palavra[0]>='a' and palavra[0]<='z': return 1+qt else: return qt 195

196 contamai('f1m!') contamai('1m!') contamai('m!') contamai('!') 0 196

197 contamai('f1m!') contamai('1m!') contamai('m!') def contamai(pal): pal if not palavra: M! return 0 qt=contamai(palavra[1:]) if palavra[0]>='a' and palavra[0]<='z': return 1+qt else: return qt 197

198 contamai('f1m!') contamai('1m!') contamai('m!') def contamai(pal): pal qt if not palavra: M! 0 return 0 qt=contamai(palavra[1:]) if palavra[0]>='a' and palavra[0]<='z': return 1+qt else: return qt 198

199 contamai('f1m!') contamai('1m!') contamai('m!') def contamai(pal): pal qt if not palavra: M! 0 return 0 qt=contamai(palavra[1:]) if palavra[0]>='a' and palavra[0]<='z': return 1+qt else: return qt 199

200 contamai('f1m!') contamai('1m!') contamai('m!') def contamai(pal): pal qt if not palavra: M! 0 return 0 qt=contamai(palavra[1:]) if palavra[0]>='a' and palavra[0]<='z': return 1+qt else: return qt 200

201 contamai('f1m!') contamai('1m!') contamai('m!') 1 201

202 contamai('f1m!') contamai('1m!') def contamai(pal): pal if not palavra: 1M! return 0 qt=contamai(palavra[1:]) if palavra[0]>='a' and palavra[0]<='z': return 1+qt else: return qt 202

203 contamai('f1m!') contamai('1m!') def contamai(pal): if not palavra: return 0 qt=contamai(palavra[1:]) pal 1M! qt 1 if palavra[0]>='a' and palavra[0]<='z': return 1+qt else: return qt 203

204 contamai('f1m!') contamai('1m!') def contamai(pal): if not palavra: return 0 qt=contamai(palavra[1:]) pal 1M! qt 1 if palavra[0]>='a' and palavra[0]<='z': return 1+qt else: return qt 204

205 contamai('f1m!') contamai('1m!') def contamai(pal): if not palavra: return 0 qt=contamai(palavra[1:]) pal 1M! qt 1 if palavra[0]>='a' and palavra[0]<='z': return 1+qt else: return qt 205

206 contamai('f1m!') contamai('1m!') 1 206

207 contamai('f1m!') def contamai(pal): pal if not palavra: F1M! return 0 qt=contamai(palavra[1:]) if palavra[0]>='a' and palavra[0]<='z': return 1+qt else: return qt 207

208 contamai('f1m!') def contamai(pal): pal qt if not palavra: F1M! 1 return 0 qt=contamai(palavra[1:]) if palavra[0]>='a' and palavra[0]<='z': return 1+qt else: return qt 208

209 contamai('f1m!') def contamai(pal): pal qt if not palavra: F1M! 1 return 0 qt=contamai(palavra[1:]) if palavra[0]>='a' and palavra[0]<='z': return 1+qt else: return qt 209

210 contamai('f1m!') def contamai(pal): pal qt if not palavra: F1M! 1 return 0 qt=contamai(palavra[1:]) if palavra[0]>='a' and palavra[0]<='z': return 1+qt else: return qt 210

211 contamai('f1m!') 2 211

212 Exercícios 1. Crie uma função recursiva que exiba verticalmente uma string 2. Crie uma função recursiva que receba uma string e retorne outra string repetindo os caracteres. Ex: prog1 => pprroogg11 3. Faça um programa que leia uma string e crie uma outra string repetindo apenas as vogais. Ex: carro => caarroo 4. Crie uma função recursiva que receba uma string e retorne uma nova string com os espaços substituídos por '#' 5. DESAFIO: Crie uma função recursiva que receba duas strings e retorne quantas vezes a segunda string ocorre na primeira 6. DESAFIO: Crie uma função recursiva que conte quantos 'c' há em uma string, a partir da posição k (também recebida) 212

213 Desenvolvendo a solução do ex. 1 1.Crie uma função recursiva que exiba verticalmente uma string a) Caso base ( regra de parada) : Qual é o caso base? Como reconhecer o caso base? O que deve ser feito no caso base? b) Passo Recursivo: "Como o problema pode ser dividido em problemas menores de mesma natureza? ". O que deve mudar na chamada recursiva para se aproximar do caso base? Como deve mudar na chamada recursiva para convergir para o caso base? c) O que deve ser feito após a chamada recursiva da função, usando o (valor de) retorno da função? 213

214 Desenvolvendo a solução do ex. 1 Qual é o caso base? string vazia Qual o passo recursivo? exibir o 1º caractere, chamar para string[1:] O que fazer com a solução retornada da chamada para o caso mais simples em cada instância? nada 214

215 Uma Solução do ex. 1 def exibevertical(palavra): if not palavra: return print(palavra[0]) exibevertical(palavra[1:]) return exibevertical('palavra') 215

216 Outros Exercícios 1) Cálculo do mdc entre dois números, usando o algoritmo de Euclides. a)escrever a definição recursiva b) criar uma função para testá-la 2) Seja uma linguagem hipotética na qual não existem operadores para adição, nem subtração. Sabe-se que nesta linguagem, existe uma função prox(n) que dá o sucessor do número n e existe também uma função ant(n) que dá o predecessor de um número n. Usando apenas essas funções (prox e ant), defina a função recursiva soma(x,y), que toma como argumento os números naturais x e y e retorna sua soma. 216

Lista de Exercícios sobre Recursividade

Lista de Exercícios sobre Recursividade Lista de Exercícios sobre Recursividade 1) Dado os algoritmos recursivos abaixo, apresente suas funções de complexidade de tempo. a) void Pesquisa(int n) if (n > 1) Inspecione n*n*n elementos; // custo

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

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

ALGORITMOS I. Procedimentos e Funções

ALGORITMOS I. Procedimentos e Funções Procedimentos e Funções Jaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 1 MÓDULOS São blocos de instruções que realizam tarefas específicas. Carregado uma vez e pode ser executado quantas vezes

Leia mais

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

Recursão. Dados recursivos

Recursão. Dados recursivos Vimos nas aulas passadas o que é recursão: resolução de um problema usando a solução de um problema semelhante (geralmente de menor dimensão); Um fractal é uma figura que tem estruturas semelhantes a si

Leia mais

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

USANDO UM MÉTODO INDUTIVO PARA RESOLVER PROBLEMAS. Bruno Maffeo Departamento de Informática PUC-Rio USANDO UM MÉTODO INDUTIVO PARA RESOLVER PROBLEMAS Bruno Maffeo Departamento de Informática PUC-Rio MÉTODO INDUTIVO O método indutivo para resolver problemas aqui empregado inspira-se na formulação mais

Leia mais

Números Inteiros Algoritmo da Divisão e suas Aplicações

Números Inteiros Algoritmo da Divisão e suas Aplicações Números Inteiros Algoritmo da Divisão e suas Aplicações Diferentemente dos números reais (R), o conjunto dos inteiros (Z) não é fechado para a divisão. Esse não-fechamento faz com que a divisão entre inteiros

Leia mais

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

UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO TEORIA DA COMPUTAÇÃO Aula 04 Programa Recursivo e Máquinas Prof.ª Danielle Casillo Funções recursivas Alguma função é recursiva quando

Leia mais

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

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

Programação I Aula 16 Mais exemplos de recursão Pedro Vasconcelos DCC/FCUP

Programação I Aula 16 Mais exemplos de recursão Pedro Vasconcelos DCC/FCUP Programação I Aula 16 Mais exemplos de recursão DCC/FCUP DCC/FCUP 2019 1/ 28 Nesta aula 1 Desenhar árvores 2 Calcular potências 3 Ordenação Quicksort DCC/FCUP 2019 2/ 28 Desenhar árvores Vamos fazer uma

Leia mais

Oficina: Programação para Android com o App Inventor. Profª. Alana Gama Licencianda em Ciências da Computação IF Baiano Campus Senhor do Bonfim

Oficina: Programação para Android com o App Inventor. Profª. Alana Gama Licencianda em Ciências da Computação IF Baiano Campus Senhor do Bonfim Oficina: Programação para Android com o App Inventor Profª. Alana Gama Licencianda em Ciências da Computação IF Baiano Campus Senhor do Bonfim Desenvolver o quinto Item da lista (Programação) Testa uma

Leia mais

1ª Lista de Exercícios

1ª Lista de Exercícios Universidade Federal do Rio de Janeiro Data: 26/04/05 Disciplina: Computação I 1ª Lista de Exercícios 1) Faça um programa, em pseudo-código, que peça ao usuário que informe n números reais e então calcule

Leia mais

BCC201 Introdução à Programação ( ) Prof. Reinaldo Silva Fortes. Prática 05 Modularização

BCC201 Introdução à Programação ( ) Prof. Reinaldo Silva Fortes. Prática 05 Modularização BCC Introdução à Programação (4-) Prof. Reinaldo Silva Fortes Funções: Passagem de parâmetros. Prática 5 Modularização ) Escreva uma função que receba um número inteiro e imprima o mês correspondente ao

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

Lista 1 - PMR2300. Fabio G. Cozman 3 de abril de 2013

Lista 1 - PMR2300. Fabio G. Cozman 3 de abril de 2013 Lista 1 - PMR2300 Fabio G. Cozman 3 de abril de 2013 1. Qual String é impressa pelo programa: p u b l i c c l a s s What { p u b l i c s t a t i c void f ( i n t x ) { x = 2 ; p u b l i c s t a t i c void

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

Lista de Exercícios 5 Funções e Strings

Lista de Exercícios 5 Funções e Strings Lista de Exercícios 5 Funções e Strings 1. Faça a função calcula_percent, que recebe como parâmetros dois valores, um valor real e um percentual inteiro, retornando o percentual deste valor. Por exemplo,

Leia mais

ALGORITMOS E APLICAÇÕES. FATEC IPIRANGA ADS Noturno 1º semestre de 2012 Prof. Luiz Carlos de Jesus Junior

ALGORITMOS E APLICAÇÕES. FATEC IPIRANGA ADS Noturno 1º semestre de 2012 Prof. Luiz Carlos de Jesus Junior ALGORITMOS E APLICAÇÕES FATEC IPIRANGA ADS Noturno 1º semestre de 2012 Prof. Luiz Carlos de Jesus Junior Formato Básico do Pseudocódigo Tipos de dados O VisuAlg prevê quatro tipos de dados: inteiro, real,

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

Listas: Sequências Mutáveis

Listas: Sequências Mutáveis Listas: Sequências Mutáveis Operações em sequências string: sequência imutável, lista: sequência mutável coleção ordenada e iterável de itens! Operações válidas em sequências: concatenação replicação pertinência

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

Sub-algoritmos (ou Funções)

Sub-algoritmos (ou Funções) Sub-algoritmos (ou Funções) Quando se deseja fazer um algoritmo cujo processo é composta por diversas etapas, costuma-se dividir o algoritmo em partes, cada uma realizando uma determinada função Cada uma

Leia mais

Lista de Exercícios 06 Modularização (Procedimentos e Funções)

Lista de Exercícios 06 Modularização (Procedimentos e Funções) Lista de Exercícios 06 Modularização (Procedimentos e Funções) Procedimentos: Passagem de parâmetros. 1) Escreva um procedimento que receba um número inteiro e imprima o mês correspondente ao número. Por

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

Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP. Recursividade

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

Leia mais

Estruturas da linguagem C. 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões.

Estruturas da linguagem C. 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões. 1 Estruturas da linguagem C 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões. Identificadores Os identificadores seguem a duas regras: 1. Devem ser começados por letras

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

Universidade Federal de Uberlândia - UFU Faculdade de Computação - FACOM Lista de exercícios de programação em linguagem Python

Universidade Federal de Uberlândia - UFU Faculdade de Computação - FACOM Lista de exercícios de programação em linguagem Python Universidade Federal de Uberlândia - UFU Faculdade de Computação - FACOM Lista de exercícios de programação em linguagem Python Exercícios: Funções 1. Crie uma função que recebe como parâmetro um número

Leia mais

Prof. Natalia Castro Fernandes Mestrado em Telecomunicações UFF 2º semestre/2012

Prof. Natalia Castro Fernandes Mestrado em Telecomunicações UFF 2º semestre/2012 Prof. Natalia Castro Fernandes Mestrado em Telecomunicações UFF 2º semestre/2012 Operações básicas + - / * ** ou pow(a,b) % = ==,!=, , = or, and, not Valor dos operadores 10/3 10.0/3 10/3.0 10%3

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

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

UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO Prof.ª Danielle Casillo Diferentes computadores podem ter diferentes arquiteturas e os diversos tipos de linguagem de programação.

Leia mais

Fundamentos de Programação em Python

Fundamentos de Programação em Python Fundamentos de Programação em Python Diego Silveira Costa Nascimento Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande do Norte diego.nascimento@ifrn.edu.br 23 de junho de 2017 Ementa do

Leia mais

INE5403 FUNDAMENTOS DE MATEMÁTICA DISCRETA

INE5403 FUNDAMENTOS DE MATEMÁTICA DISCRETA INE5403 FUNDAMENTOS DE MATEMÁTICA DISCRETA PARA A COMPUTAÇÃO PROF. DANIEL S. FREITAS UFSC - CTC - INE Prof. Daniel S. Freitas - UFSC/CTC/INE/2007 p.1/30 3 - INDUÇÃO E RECURSÃO 3.1) Indução Matemática 3.2)

Leia mais

Lista 2 - PMR2300/3200

Lista 2 - PMR2300/3200 Lista 2 - PMR2300/3200 Fabio G. Cozman, Thiago Martins 8 de março de 2015 1. Qual String é impressa pelo programa: p u b l i c c l a s s What { p u b l i c s t a t i c void f ( i n t x ) { x = 2 ; p u

Leia mais

Computação 1 - Python Aula 1 - Prática: Primeiros Passos - Função 1/ 19

Computação 1 - Python Aula 1 - Prática: Primeiros Passos - Função 1/ 19 Computação 1 - Python Aula 1 - Prática: Primeiros Passos - Função 1/ 19 Python - Modo Interativo Experiência com programação e uso do computador 2/ 19 Primeiros Passos - Operadores adição + subtração multiplicação

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. Tipos Padrões 2. Variáveis Auxiliares 3. Condicionais 1 Tipos Padrões Tipos Padrões A linguagem Python fornece

Leia mais

Fundamentos de Programação Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande do Norte 15 de maio de 2018.

Fundamentos de Programação Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande do Norte 15 de maio de 2018. 1 INSTRUÇÃO DE SAÍDA Fundamentos de Programação Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande do Norte 15 de maio de 2018 Exercícios 1 Instrução de Saída 1. Implementar um programa

Leia mais

Programação de Computadores 1 Lista 2. Prof. Álvaro A. F. de Souza DECSI - ICEA - UFOP

Programação de Computadores 1 Lista 2. Prof. Álvaro A. F. de Souza DECSI - ICEA - UFOP Programação de Computadores 1 Lista 2 Prof. Álvaro A. F. de Souza DECSI - ICEA - UFOP 0.1 Vetores e Cadeias de Caracteres 1. Codifique um programa que leia e armazene duas notas de 10 alunos e calcule

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

Fabio G. Cozman, Thiago Martins 2017

Fabio G. Cozman, Thiago Martins 2017 Lista 1 - adendo - PMR3201 Fabio G. Cozman, Thiago Martins 2017 Exercícios 1. (P1 2016) A listagem a seguir mostra o código de uma função que converte uma cadeia de caracteres com a representação decimal

Leia mais

ESTRUTURAS DE REPETIÇÃO - PARTE 2

ESTRUTURAS DE REPETIÇÃO - PARTE 2 AULA 16 ESTRUTURAS DE REPETIÇÃO - PARTE 2 16.1 A seqüência de Fibonacci Um problema parecido, mas ligeiramente mais complicado do que o do cálculo do fatorial (veja as notas da Aula 14), é o do cálculo

Leia mais

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

Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: funções Universidade Federal de Uberlândia Faculdade de Computação Linguagem C: funções Prof. Renato Pimentel 1 Subprogramas Subprograma: programa que auxilia o programa principal na realização de uma determinada

Leia mais

ALGORITMOS AULA 2. Profª Amanda Gondim

ALGORITMOS AULA 2. Profª Amanda Gondim ALGORITMOS AULA 2 Profª Amanda Gondim LINEARIZAÇÃO DE EXPRESSÕES Para a construção de algoritmos que realizam cálculo matemáticos, todas as expressões aritméticas devem ser linearizadas, ou seja, colocadas

Leia mais

Recursividade Exaustiva e Backtracking

Recursividade Exaustiva e Backtracking Universidade Federal do Espírito Santo Centro de Ciências Agrárias CCA UFES Departamento de Computação Recursividade Exaustiva e Tópicos Especiais em Programação Site: http://jeiks.net E-mail: jacsonrcsilva@gmail.com

Leia mais

Introdução à Programação / Programação I

Introdução à Programação / Programação I Introdução à Programação / Programação I Aula 18: Definições recursivas Rita P. Ribeiro 2017/2018 Departamento de Ciência de Computadores Nesta aula 1. Definições recursivas 2. Exemplos INTRODUÇÃO À PROGRAMAÇÃO

Leia mais

Recursão PROGRAMAÇÃO EM LÓGICA. Recursão. Sonho Recursivo. Recursão. Recursão. Linguagem Prolog Parte IV

Recursão PROGRAMAÇÃO EM LÓGICA. Recursão. Sonho Recursivo. Recursão. Recursão. Linguagem Prolog Parte IV PROGRAMAÇÃO EM LÓGICA Recursão CIÊNCIA DA COMPUTAÇÃO FACAPE Faculdade de Ciências Aplicadas e Sociais de Petrolina Linguagem Prolog Parte IV Usado desde a arte (em figuras, telas, etc) como também em Matemática

Leia mais

Tipo de argumentos. valor. argumentos

Tipo de argumentos. valor. argumentos Operação Numero de argumentos Tipo de argumentos valor (+ ) 2 ou + Numérico Soma ( ) 2 ou + Numérico Subtração ( ) 1 Numérico Simétrico (/ ...) 2 ou + Numérico Divisão (cos

Leia mais

Programação II RECURSÃO

Programação II RECURSÃO Programação II RECURSÃO Bruno Feijó Dept. de Informática, PUC-Rio Motivação Escher: Metamorphosis (1937) - Drawing Hands (1948) Relativity (1953) http://www.worldofescher.com/gallery/ Alguém diz: Esta

Leia mais

Algoritmos e Programação

Algoritmos e Programação Algoritmos e Programação Aula 9 Subalgoritmos, funções e passagem de parâmetros Profa. Marina Gomes marinagomes@unipampa.edu.br 22/06/2017 Engenharia de Computação - Unipampa 1 Modularização Facilita a

Leia mais

Programação Estruturada

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

Leia mais

Algoritmos de Ordenação

Algoritmos de Ordenação Algoritmos de Ordenação! Problema: encontrar um número de telefone em uma lista telefônica! simplificado pelo fato dos nomes estarem em ordem alfabética! e se estivesse sem uma ordem?! Problema: busca

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

Linguagem de programação métodos/funções

Linguagem de programação métodos/funções Instituto Federal de Minas Gerais Campus Ponte Nova Linguagem de programação métodos/funções Professor: Saulo Henrique Cabral Silva MÉTODOS / MODULARIZANDO Modularizando... 2 Métodos Funções Sub-rotinas

Leia mais

CADERNO DE EXERCÍCIOS ALGORITMOS

CADERNO DE EXERCÍCIOS ALGORITMOS J. EXERCÍCIOS SOBRE MODULARIZAÇÃO 77. Faça uma função que recebe um número inteiro por parâmetro e retorna verdadeiro se ele for par e falso se for ímpar. 78. Escreva um programa que leia o raio de um

Leia mais

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

Processamento da Informação Estruturas de seleção simples e composta Processamento da Informação Estruturas de seleção simples e composta Prof. Jesús P. Mena-Chalco CMCC/UFABC Q1/2017 1 Expressões Booleanas 2 Fonte: http://pt.wikipedia.org/wiki/george_boole Expressões Booleanas

Leia mais

Prova 1 PMR3201 Computação para Automação 1o. semestre 2016 Prof. Thiago de Castro Martins

Prova 1 PMR3201 Computação para Automação 1o. semestre 2016 Prof. Thiago de Castro Martins Prova 1 PMR3201 Computação para Automação 1o. semestre 2016 Prof. Thiago de Castro Martins 1. (25 pontos) A listagem a seguir mostra o código de uma função que converte uma cadeia de caracteres com a representação

Leia mais

Ocorrem em três tipos:

Ocorrem em três tipos: Ocorrem em três tipos: Numéricas: Representadas por todos os números do universo dos números reais Ex.: 2, 3.45, -6.78 Literais: Ocorrem em dois tipos: Strings: Qualquer sequência de até 256 caracteres

Leia mais

Computação Eletrônica. Tipos de dados, constantes, variáveis, operadores e expressões. Prof: Luciano Barbosa

Computação Eletrônica. Tipos de dados, constantes, variáveis, operadores e expressões. Prof: Luciano Barbosa Computação Eletrônica Tipos de dados, constantes, variáveis, operadores e expressões Prof: Luciano Barbosa Site da disciplina: www.cin.ufpe.br/~if165/ Recapitulando num cubo = n * n * n cubo Algoritmo

Leia mais

1. Considere o polígono irregular abaixo, formado por três retângulos e um triângulo.

1. Considere o polígono irregular abaixo, formado por três retângulos e um triângulo. 1. Considere o polígono irregular abaixo, formado por três retângulos e um triângulo. a Crie a função arearetangulo: recebe os lados de um retângulo e retorna a área b Crie a função hipotenusa(cateto1,cateto2

Leia mais

Modularização. Prof. Antonio Almeida de Barros Junior

Modularização. Prof. Antonio Almeida de Barros Junior Modularização Prof. Antonio Almeida de Barros Junior 1 Modularização A modularização consiste em decompor um programa em uma série de subprogramas individuais; Trata-se de um método utilizado para facilitar

Leia mais

Análise e Complexidade de Algoritmos

Análise e Complexidade de Algoritmos Análise e Complexidade de Algoritmos Principais paradigmas do projeto de algoritmos - Recursividade - Tentativa e erro - Divisão e Conquista - Programação dinâmica - Algoritmos Gulosos e de Aproximação

Leia mais

Variáveis e Entrada de Dados Marco André Lopes Mendes marcoandre.googlepages.

Variáveis e Entrada de Dados Marco André Lopes Mendes  marcoandre.googlepages. Variáveis e Entrada de Dados Marco André Lopes Mendes marcoandre@ifc-araquari.edu.br marcoandre@gmail.com marcoandre.googlepages.com Algoritmos é a base Primeiro programa Este programa possui apenas uma

Leia mais

imprimir seus quadrados.

imprimir seus quadrados. 1) Dada uma seqüência de números inteiros não-nulos, seguida por 0, imprimir seus quadrados. int numero, /* usada para leitura da sequencia */ quadrado; /* guarda o quadrado do numero lido */ printf("\n\tcalculo

Leia mais

Aula 13 Oficina de Programação Modularização. Profa. Elaine Faria UFU

Aula 13 Oficina de Programação Modularização. Profa. Elaine Faria UFU Aula 13 Oficina de Programação Modularização Profa. Elaine Faria UFU - 2017 O que é modularização? No século XIX, Henry Ford, para baratear e massificar a montagem de carros, criou uma base modular. Esta

Leia mais

Lista de Exercícios de Algoritmos - 04 Para cada um dos exercícios abaixo, faça um programa (em laboratório) que teste a função.

Lista de Exercícios de Algoritmos - 04 Para cada um dos exercícios abaixo, faça um programa (em laboratório) que teste a função. Lista de Exercícios de Algoritmos - 04 Para cada um dos exercícios abaixo, faça um programa (em laboratório) que teste a função. Funções e estruturas básicas 1. Faça uma função que recebe a idade de uma

Leia mais

INE5403 FUNDAMENTOS DE MATEMÁTICA DISCRETA

INE5403 FUNDAMENTOS DE MATEMÁTICA DISCRETA INE5403 FUNDAMENTOS DE MATEMÁTICA DISCRETA PARA A COMPUTAÇÃO PROF. DANIEL S. FREITAS UFSC - CTC - INE Prof. Daniel S. Freitas - UFSC/CTC/INE/2007 p.1/14 3 - INDUÇÃO E RECURSÃO 3.1) Indução Matemática 3.2)

Leia mais

Aula 2: Algoritmos: Intuição

Aula 2: Algoritmos: Intuição Aula 2: Algoritmos: Intuição Fernanda Passos Universidade Federal Fluminense Programação de Computadores IV Fernanda Passos (UFF) Algoritmos: Intuição Programação de Computadores IV 1 / 27 Agenda 1 Revisão

Leia mais

ESTRUTURAS DE REPETIÇÃO - PARTE 1

ESTRUTURAS DE REPETIÇÃO - PARTE 1 AULA 15 ESTRUTURAS DE REPETIÇÃO - PARTE 1 15.1 O comando enquanto-faca- Considere o problema de escrever um algoritmo para ler um número inteiro positivo, n, e escrever todos os números inteiros de 1 a

Leia mais

Lógica e Linguagem de Programação Aula 04 - Estruturas de Repetição Repetição com Teste no Início Enquanto - GABARITO Professor: Danilo Giacobo

Lógica e Linguagem de Programação Aula 04 - Estruturas de Repetição Repetição com Teste no Início Enquanto - GABARITO Professor: Danilo Giacobo Lógica e Linguagem de Programação Aula 04 - Estruturas de Repetição Repetição com Teste no Início Enquanto - GABARITO Professor: Danilo Giacobo Este guia irá lhe ajudar a entender o laço de repetição enquanto.

Leia mais

Análise de Problemas Recursivos. Algoritmos e Estruturas de Dados Flavio Figueiredo (

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

Leia mais

Manipulação de Strings

Manipulação de Strings Manipulação de Strings Prof. Wylliams Barbosa Santos wylliamss@gmail.com Introdução à Programação Crédito de Conteúdo: Professora Ceça Moraes Agenda String Conceitos Operações Métodos Exemplos Exercícios

Leia mais

Programação I Aula 19 Aritmética com racionais Pedro Vasconcelos DCC/FCUP

Programação I Aula 19 Aritmética com racionais Pedro Vasconcelos DCC/FCUP Programação I Aula 19 Aritmética com racionais DCC/FCUP DCC/FCUP 2019 1/ 30 Nesta aula 1 Aritmética com racionais 2 Simplificação 3 Operações 4 Comparações DCC/FCUP 2019 2/ 30 Aritmética com racionais

Leia mais

Exercícios: Recursão

Exercícios: Recursão Universidade Federal de Uberlândia - UFU Faculdade de Computação - FACOM Lista de exercícios de programação em linguagem C Exercícios: Recursão 1. Faça uma função recursiva que calcule e retorne o fatorial

Leia mais

Números são números, letras são números e sinais de pontuação, símbolos e até mesmo as instruções do próprio computador são números.

Números são números, letras são números e sinais de pontuação, símbolos e até mesmo as instruções do próprio computador são números. Para o computador, tudo são números. Números são números, letras são números e sinais de pontuação, símbolos e até mesmo as instruções do próprio computador são números. O método ao qual estamos acostumados

Leia mais

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO MARANHÃO - CAMPUS CAXIAS. Aluno (s): 01 ATIVIDADE. Revisão de Conteúdo

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO MARANHÃO - CAMPUS CAXIAS. Aluno (s): 01 ATIVIDADE. Revisão de Conteúdo INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO MARANHÃO - CAMPUS CAXIAS DISCIPLINA: Lab. de Programação PROF: MSc. Flávio Barros PERÍODO: 2 DATA: Aluno (s): 01 ATIVIDADE / / Revisão de Conteúdo

Leia mais

Informática Portugol IDE Revisão 1

Informática Portugol IDE Revisão 1 exatasfepi.com.br Informática Portugol IDE Revisão 1 André Luís Duarte Honra a teu pai e a tua mãe (que é o primeiro mandamento com promessa), para que te vá bem, e sejas de longa vida sobre a terra.(ef

Leia mais

Modularização de Programas

Modularização de Programas Modularização de Programas SSC 304 - Introdução à Programação para Engenharias Profa. Dra. Elisa Yumi Nakagawa Slides inicialmente preparados pela Profa. Dra. Simone Souza MODULARIZAÇÃO Um problema complexo

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

INFORMÁTICA APLICADA AULA 03 ALGORITMOS

INFORMÁTICA APLICADA AULA 03 ALGORITMOS UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: Bacharelado em Ciências e Tecnologia INFORMÁTICA APLICADA AULA 03 ALGORITMOS Profª ª Danielle Casillo LINEARIZAÇÃO DE EXPRESSÕES Para a construção de algoritmos

Leia mais

Linguagem Haskell. Universidade Estadual Santa Cruz Conceitos de Linguagens de Programação. Tiago Carneiro 19 Agosto 2013

Linguagem Haskell. Universidade Estadual Santa Cruz Conceitos de Linguagens de Programação. Tiago Carneiro 19 Agosto 2013 Linguagem Haskell Universidade Estadual Santa Cruz Conceitos de Linguagens de Programação Tiago Carneiro 19 Agosto 2013 1 1 Linguagem Haskell Linguagem de programação funcional É um paradigma de programação

Leia mais

Lógica de Programação

Lógica de Programação Lógica de Programação Aula 2 Conhecendo o Ruby Clenisson Calaça Variáveis Mais Ruby Já sabemos como atribuir um valor a uma variável escrevendo o seu identificador seguido

Leia mais

Python Funções. Introdução à Programação SI1

Python Funções. Introdução à Programação SI1 Python Funções Introdução à Programação SI1 Conteúdo Funções Conceitos Objetivos Modularização Exemplos Exercícios 2 Funções O que são? Qual a função de uma função? 3 Imagine o código 4 Imagine o código

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

Fundamentos de Arquiteturas de Computadores

Fundamentos de Arquiteturas de Computadores Fundamentos de Arquiteturas de Computadores Cristina Boeres Instituto de Computação (UFF) Conversões Entre Bases Numéricas Material de Fernanda Passos (UFF) Conversões Entre Bases Numéricas FAC 1 / 42

Leia mais

1 bases numéricas. capítulo

1 bases numéricas. capítulo capítulo 1 bases numéricas Os números são representados no sistema decimal, mas os computadores utilizam o sistema binário. Embora empreguem símbolos distintos, os dois sistemas formam números a partir

Leia mais

Linguagem Python. Processamento Estatístico da Linguagem Natural. Barra invertida em strings. Strings. Aspas triplas. Operações com Strings

Linguagem Python. Processamento Estatístico da Linguagem Natural. Barra invertida em strings. Strings. Aspas triplas. Operações com Strings Processamento Estatístico da Linguagem Natural Aula 7 Professora Bianca (Sala 302 Bloco E) bianca@ic.uff.br http://www.ic.uff.br/~bianca/peln/ Linguagem Python Introdução Características de Python Rodando

Leia mais

Conceitos de Linguagem de Programação - 2

Conceitos de Linguagem de Programação - 2 Conceitos de Linguagem de Programação - 2 Arthur Jovita Guerra Thalles Santos Silva Universidade Estadual de Santa Cruz - Ilhéus, BA 1 de novembro de 2011 1 Revisão Natureza das linguagens de Programação

Leia mais

EXERCÍCIOS: Estrutura Sequencial, IF (SE), ELSE (Senão)

EXERCÍCIOS: Estrutura Sequencial, IF (SE), ELSE (Senão) EXERCÍCIOS: Estrutura Sequencial, IF (SE), ELSE (Senão) Exercício 1) Escreva um programa para ler um número o o Se o número é par, mostre na tela o texto "O número é par" Senão, mostre na tela o texto

Leia mais

Exercícios sobre algoritmos

Exercícios sobre algoritmos Exercícios sobre algoritmos Exercícios envolvendo estruturas de decisão Fazer um algoritmo para: 1) Receber um número do usuário e mostrar se esse número é par ou não par 2) Receber 3 valores numéricos,

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

ALGORITMOS E ESTRUTURA DE DADOS

ALGORITMOS E ESTRUTURA DE DADOS ALGORITMOS E ESTRUTURA DE DADOS Algoritmos Tipos de Dados Prof. André Peixoto - Todo o trabalho realizado por um computador é baseado na manipulação dos dados/informações contidas em sua memória. Podemos

Leia mais

Roteiro de trabalho para o 3o ano

Roteiro de trabalho para o 3o ano Roteiro de trabalho para o 3o ano No volume do 3º ano estão assim organizados os conteúdos e as habilidades a serem desenvolvidos no decorrer do ano. LIÇÃO CONTEÚDO OBJETOS 1. Os números e sua história

Leia mais

BAC004 Informática Teórica T2 Professora: Fabiana Costa Guedes Lista 05 Vetores e Matrizes Vetores

BAC004 Informática Teórica T2 Professora: Fabiana Costa Guedes Lista 05 Vetores e Matrizes Vetores BAC004 Informática Teórica T2 Professora: Fabiana Costa Guedes Lista 05 Vetores e Matrizes Vetores 1- Faça um programa que preencha um vetor com seis elementos numéricos inteiros, calcule e mostre: a.

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

Interação com o usuário

Interação com o usuário Interação com o usuário E/S: entrada e saída Até agora, todos oscódigos desenvolvidos não se comunicaram com o usuário. Programador Dados necessários: programador ou por uma função randômica. Para mudar

Leia mais

LISTA DE EXERCÍCIOS MÊS 04

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

Leia mais