Estrutura de Dados Básica

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

Download "Estrutura de Dados Básica"

Transcrição

1 Estrutura de Dados Básica Professor: Osvaldo Kotaro Takai. Aula 7: Recursividade O objetivo desta aula é apresentar o conceito de recursão para solução de problemas. A recursão é uma técnica de programação em que uma rotina (função) chama a si mesma. A recursão é uma das técnicas mais interessantes e surpreendentemente eficazes em programação. Ela não só funciona, mas também oferece um quadro conceitual única para resolver muitos problemas. Demonstrando a recursão com números triangulares Diz-se que os pitagóricos, um bando de matemáticos da Grécia antiga que trabalhavam com o Pitágoras (do famoso teorema de Pitágoras), sentiram uma conexão mística com a seguinte seqüência de números: 1, 3, 6, 10, 15, 21,... O termo da n-ésima seqüência é obtido acrescentando-se n ao termo anterior. Dessa forma, o segundo termo é encontrado adicionando-se 2 ao primeiro termo (que é 1), dando 3. O terceiro é 3 adicionando ao segundo termo (que é 3) dando 6, etc. Os números da seqüência são chamados números triangulares porque eles podem ser visualizados como uma organização triangular de objetos, ilustrados como pequenos quadrados como na figura a seguir: Suponha que você quisesse encontrar o valor de algum termo na seqüência; digamos o quarto termo (cujo valor é 10). Você poderá perceber que o valor de qualquer termo pode ser obtido somando todas as colunas verticais de quadrados. Veja a figura abaixo: No quarto termo, a primeira coluna tem quatro pequenos quadrados, a segunda coluna tem três, etc. Adicionando, , temos 10. A seguinte função triangular() utiliza esta técnica, baseada em colunas, para encontrar um número triangular. Ela soma todas as colunas, da altura de n até a altura 1. 1

2 É claro que você poderia resolver o problema da seguinte forma: A abordagem anterior pode parecer direta, mas há outra forma de ver este problema. O valor do n-ésimo termo pode ser pensado como uma soma de duas coisas, em vez de uma seqüência. São elas: 1. A primeira coluna (mais alta), que tem n quadrados. 2. A soma de todos os quadrados das colunas restantes. Isto é: Se conhecêssemos uma função que descobrisse a soma de todas as colunas restantes, poderíamos escrever nossa função triangulo(), que retorna o valor do n-ésimo número triangular, da seguinte forma: Note que a função somadascolunasrestantes() fará exatamente a mesma coisa que a função triangulo(). Ou seja, somando todas as colunas para algum número n passado como argumento. Então, por que não usar a própria função triangulo(), em vez de alguma outra função? Isso se pareceria com: Pode parecer surpreendente que uma função possa chamar a si mesma, mas por que ela não deveria ser capaz de fazê-lo? Uma chamada da função é (entre outras coisas) uma transferência de controle para o início da função. Tudo isso se parece como uma transferência de responsabilidade para outro, só que reduzindo o tamanho do problema. Alguém me diz para encontrar o nono número triangular. Sei que ele é 9 mais o oitavo número triangular; então eu chamo o João e lhe peço para encontrar o oitavo número triangular. Quando o João me devolver o oitavo número triangular, acrescento 9 a esse valor e devolvo o resultado. 2

3 O João sabe que o oitavo número triangular é 8 mais o sétimo número triangular; então ele chama a Maria e pede para encontrar o sétimo número triangular. Esse processo continua com cada pessoa passando a responsabilidade para o outro. Onde este processo de transferência de responsabilidade acaba? Alguém em algum ponto deve ser capaz de descobrir uma resposta sem precisar pedir a uma outra pessoa para ajudálo. Se isso não ocorresse, haveria uma cadeia infinita de pessoas transferindo responsabilidades uma para as outras. Para evitar isso, a pessoa que receber a incumbência de encontrar o primeiro número triangular da seqüência (quando n é igual a 1), deve saber, sem perguntar a qualquer pessoa, que a resposta é 1. Não há números menores para perguntar a outras pessoas, não há nada para adicionar a qualquer outra coisa, então a transferência pára aqui. A condição que leva à função recursiva retornar sem fazer outra chamada recursiva é conhecida como caso base. É importante que cada função recursiva tenha um caso base para evitar recursão infinita e a conseqüente finalização da função. Método para solução de problemas de estrutura recursiva Muitos problemas têm a seguinte propriedade: cada instância ou seja, cada exemplo concreto do problema contém uma instância menor do mesmo problema. Dizemos que esses problemas têm estrutura recursiva. Para resolver tais problemas podemos aplicar o seguinte método: 1) Se o problema é pequeno (caso base). a) Resolva-o diretamente (use força bruta se necessário); 2) Se o problema é grande, a) Reduza-o a uma versão menor do mesmo problema, b) Aplique o método ao problema menor e c) Volte ao problema original. A aplicação desse método produz um algoritmo recursivo. Para mostrar como isso funciona, considere o seguinte problema: Determinar o valor do maior elemento de um vetor v que tem n elementos. É claro que o problema só faz sentido se o vetor não é vazio, ou seja, se n > 1. Para preparar o terreno, examine uma tradicional solução iterativa do problema: 3

4 Agora vamos usar o método para encontrar soluções recursivas. Imagine que n = 8 e o vetor v contenha os seguintes valores {5, 10, 3, 7, 2, 1, 30, 25 1) Se o problema é pequeno (caso base) a) Resolva-o diretamente (use força bruta se necessário). O problema pequeno para o problema de encontrar o maior elemento de um vetor de n posições é quando o vetor tem apenas um único número (n==1). Neste caso, o máximo é v[0]. 2) Se o problema é grande, a) Reduza-o a uma versão menor do mesmo problema. Como n é grande (n==8), reduzimos o problema dividindo o vetor em duas partes. Ultima posição do vetor: v[n-1] Vetor sem a última posição (possui n-1 posições) Assim, o máximo será o maior entre o v[n-1] e o máximo do vetor que possuir n-1 posições. b) Aplique o método ao problema menor. Se n-1 == 1, então aplicamos 1a. e retornamos v[0]. Se n-1 > 1 aplicamos novamente 2a. ao vetor com n-2 posições. Esse processo é aplicado sucessivamente até que o vetor tenha apenas uma posição. maximo (8, v) maior entre 25 e maximo(7, v) maximo (7, v) maior entre 30 e maximo(6, v) maximo (6, v) maior entre 1 e maximo(5, v) maximo (5, v) maior entre 2 e maximo(4, v) maximo (4, v) maior entre 7 e maximo(3, v) maximo (3, v) maior entre 3 e maximo(2, v) maximo (2, v) maior entre 10 e maximo(1, v) maximo (1, v) 5 c) Volte ao problema original. maximo(1, v) 5 maximo(2, v) maior entre 10 e 5 maximo(3, v) maior entre 3 e 10 maximo(4, v) maior entre 7 e 10 maximo(5, v) maior entre 2 e 10 maximo(6, v) maior entre 1 e 10 maximo(7, v) maior entre 30 e 10 maximo(8, v) maior entre 25 e 30 Logo maximo(8, v) 30. 4

5 A implementação dessa solução recursiva é a seguinte: Nota: Algumas pessoas acham que funções recursivas consomem muito tempo. Mas isso é apenas uma lenda propagada por programadores que não sabem usar a recursão. As função maximo recursiva discutida acima "puxa para a esquerda" o fim do vetor, ou seja, troca v[0..n-1] pelo vetor v[0..n-2]. É possível escrever uma versão que "empurre para a direita" o início do vetor. Observe que essa nova versão da função maximo é apenas uma "embalagem": o serviço pesado é executado pela função recursiva mx. A função mx resolve um problema mais geral que o original. Isso ocorre freqüentemente na construção de algoritmos recursivos: é preciso generalizar o problema para que uma solução recursiva se torne possível. 5

6 Exercícios 1. Faça um trabalho sobre As Torres de Hanói. Apresente o problema, a análise do algoritmo que soluciona o problema e implemente a solução. 2. Considere a função iterativa maximo exemplificado anteriormente. Faz sentido trocar "x = v[0]" por "x = 0", como fazem alguns programadores descuidados? Faz sentido trocar "x = v[0]" por "x = INT_MIN"? Faz sentido trocar "x < v[j]" por "x <= v[j]"? 3. A função abaixo promete encontrar o valor de um elemento máximo de v[0..n-1]. A função cumpre a promessa? int maxi (int n, int v[]) { int j, m = v[0]; for (j = 1; j < n; j++) if (v[j-1] < v[j]) m = v[j]; return m; 4. Critique a seguinte função recursiva; ela promete encontrar o valor de um elemento máximo de v[0..n-1]. int maximo1a (int n, int v[]) { int x; if (n == 1) return v[0]; if (n == 2) { if (v[0] < v[1]) return v[1]; else return v[0]; x = maximo1a (n-1, v); if (x < v[n-1]) return v[n-1]; else return x; 5. Critique a seguinte função recursiva; ela promete encontrar o valor de um elemento máximo de v[0..n-1]. int maximo1b (int n, int v[]) { if (n == 1) return v[0]; if (maximo1b (n-1, v) < v[n-1]) return v[n-1]; else return maximo1b (n-1, v); 6. Escreva uma função recursiva maxmin que calcule o valor de um elemento máximo e o valor de um elemento mínimo de um vetor v[0..n-1]. Quantas comparações envolvendo os elementos do vetor a sua função faz? 7. Escreva uma função recursiva que calcule a soma dos elementos positivos do vetor de inteiros v[0..n-1]. O problema faz sentido quando n é igual a 0? Quanto deve valer a soma nesse caso? 8. Escreva uma função recursiva que calcule a soma dos dígitos de um inteiro positivo n. A soma dos dígitos de 132, por exemplo, é Qual o valor de X (4)? int X (int n) { if (n == 1 n == 2) return n; else return X(n-1) + n * X(n-2); 10. Qual é o valor de f (1,10)? Escreva uma função equivalente que seja mais simples. double f(double x, double y) { if (x >= y) return (x + y)/2; else return f(f(x+2, y-1), f(x+1, y-2)); 6

7 11. Qual o resultado da execução do programa abaixo? int main (void) { printf ("%d", ff(7)); return 0; int ff(int n) { if (n == 1) return 1; if (n % 2 == 0) return ff(n/2); return ff((n-1)/2) + ff((n+1)/2); 12. Execute fusc(7,0). int fusc (int n, int profund) { int i; for (i = 0; i < profund; i++) printf (" "); printf ("fusc (%d,%d)\n", n, profund); if (n <= 1) return 1; if (n % 2 == 0) return fusc (n/2, profund+1); return fusc((n-1)/2, profund+1) + fusc((n+1)/2, profund+1); 13. A função de Fibonacci é definida assim: F (0) = 0, F (1) = 1 e F (n) = F(n-1) + F(n-2) para n > 1. Descreva a função F em linguagem C. Faça uma versão iterativa e uma recursiva. 14. A seguinte função calcula o maior divisor comum dos inteiros positivos m e n. Escreva uma função recursiva equivalente. int Euclides(int m, int n) { int r; do { r = m % n; m = n; n = r; while (r!= 0); return m; 15. Escreva uma função recursiva eficiente que receba inteiros positivos k e n e calcule k n. (Suponha que k n cabe em um int.) Quantas multiplicações sua função executa aproximadamente? 16. Faça um programa recursivo, em C, que calcule o n-ésimo número: Quadrado. Fatorial. 7

Algoritmos de Busca em Tabelas

Algoritmos de Busca em Tabelas Dentre os vários algoritmos fundamentais, os algoritmos de busca em tabelas estão entre os mais usados. Considere por exemplo um sistema de banco de dados. As operações de busca e recuperação dos dados

Leia mais

Aplicações de Combinatória e Geometria na Teoria dos Números

Aplicações de Combinatória e Geometria na Teoria dos Números Aplicações de Combinatória e Geometria na Teoria dos Números Nesse artigo vamos discutir algumas abordagens diferentes na Teoria dos Números, no sentido de envolverem também outras grandes áreas, como

Leia mais

5 Equacionando os problemas

5 Equacionando os problemas A UA UL LA Equacionando os problemas Introdução Nossa aula começará com um quebra- cabeça de mesa de bar - para você tentar resolver agora. Observe esta figura feita com palitos de fósforo. Mova de lugar

Leia mais

Orientação a Objetos

Orientação a Objetos 1. Domínio e Aplicação Orientação a Objetos Um domínio é composto pelas entidades, informações e processos relacionados a um determinado contexto. Uma aplicação pode ser desenvolvida para automatizar ou

Leia mais

Fração como porcentagem. Sexto Ano do Ensino Fundamental. Autor: Prof. Francisco Bruno Holanda Revisor: Prof. Antonio Caminha M.

Fração como porcentagem. Sexto Ano do Ensino Fundamental. Autor: Prof. Francisco Bruno Holanda Revisor: Prof. Antonio Caminha M. Material Teórico - Módulo de FRAÇÕES COMO PORCENTAGEM E PROBABILIDADE Fração como porcentagem Sexto Ano do Ensino Fundamental Autor: Prof. Francisco Bruno Holanda Revisor: Prof. Antonio Caminha M. Neto

Leia mais

x0 = 1 x n = 3x n 1 x k x k 1 Quantas são as sequências com n letras, cada uma igual a a, b ou c, de modo que não há duas letras a seguidas?

x0 = 1 x n = 3x n 1 x k x k 1 Quantas são as sequências com n letras, cada uma igual a a, b ou c, de modo que não há duas letras a seguidas? Recorrências Muitas vezes não é possível resolver problemas de contagem diretamente combinando os princípios aditivo e multiplicativo. Para resolver esses problemas recorremos a outros recursos: as recursões

Leia mais

Introdução à Programação. Recursão

Introdução à Programação. Recursão Introdução à Programação Recursão Recursão decoração Substantivo feminino. 1.Ato ou efeito de decorar decorar Verbo transitivo direto. 1.Guarnecer com adorno(s); dispor formas e cores em; ornamentar, embelezar;

Leia mais

Dadas a base e a altura de um triangulo, determinar sua área.

Dadas a base e a altura de um triangulo, determinar sua área. Disciplina Lógica de Programação Visual Ana Rita Dutra dos Santos Especialista em Novas Tecnologias aplicadas a Educação Mestranda em Informática aplicada a Educação ana.santos@qi.edu.br Conceitos Preliminares

Leia mais

O Problema do Troco Principio da Casa dos Pombos. > Princípios de Contagem e Enumeração Computacional 0/48

O Problema do Troco Principio da Casa dos Pombos. > Princípios de Contagem e Enumeração Computacional 0/48 Conteúdo 1 Princípios de Contagem e Enumeração Computacional Permutações com Repetições Combinações com Repetições O Problema do Troco Principio da Casa dos Pombos > Princípios de Contagem e Enumeração

Leia mais

Contagem I. Figura 1: Abrindo uma Porta.

Contagem I. Figura 1: Abrindo uma Porta. Polos Olímpicos de Treinamento Curso de Combinatória - Nível 2 Prof. Bruno Holanda Aula 4 Contagem I De quantos modos podemos nos vestir? Quantos números menores que 1000 possuem todos os algarismos pares?

Leia mais

O ESPAÇO NULO DE A: RESOLVENDO AX = 0 3.2

O ESPAÇO NULO DE A: RESOLVENDO AX = 0 3.2 3.2 O Espaço Nulo de A: Resolvendo Ax = 0 11 O ESPAÇO NULO DE A: RESOLVENDO AX = 0 3.2 Esta seção trata do espaço de soluções para Ax = 0. A matriz A pode ser quadrada ou retangular. Uma solução imediata

Leia mais

PROGRAMAÇÃO ESTRUTURADA. CC 2º Período

PROGRAMAÇÃO ESTRUTURADA. CC 2º Período PROGRAMAÇÃO ESTRUTURADA CC 2º Período PROGRAMAÇÃO ESTRUTURADA Aula 07: Funções O comando return Protótipo de funções O tipo void Arquivos-cabeçalho Escopo de variáveis Passagem de parâmetros por valor

Leia mais

Como fazer para deixar firme uma estante de hastes com prateleiras que está balançando para os lados?

Como fazer para deixar firme uma estante de hastes com prateleiras que está balançando para os lados? cesse: http://fuvestibular.com.br/ o triângulo é uma das figuras mais importantes da Geometria, e também uma das mais interessantes. Na nossa vida diária, existem bons exemplos de aplicação de triângulos

Leia mais

Equações do primeiro grau

Equações do primeiro grau Módulo 1 Unidade 3 Equações do primeiro grau Para início de conversa... Você tem um telefone celular ou conhece alguém que tenha? Você sabia que o telefone celular é um dos meios de comunicação que mais

Leia mais

Tutorial de Matlab Francesco Franco

Tutorial de Matlab Francesco Franco Tutorial de Matlab Francesco Franco Matlab é um pacote de software que facilita a inserção de matrizes e vetores, além de facilitar a manipulação deles. A interface segue uma linguagem que é projetada

Leia mais

Exercícios Teóricos Resolvidos

Exercícios Teóricos Resolvidos Universidade Federal de Minas Gerais Instituto de Ciências Exatas Departamento de Matemática Exercícios Teóricos Resolvidos O propósito deste texto é tentar mostrar aos alunos várias maneiras de raciocinar

Leia mais

A equação do 2º grau

A equação do 2º grau A UA UL LA A equação do 2º grau Introdução Freqüentemente, ao equacionarmos um problema, obtemos uma equação na qual a incógnita aparece elevada ao quadrado. Estas são as chamadas equações do 2º grau.

Leia mais

Excel Planilhas Eletrônicas

Excel Planilhas Eletrônicas Excel Planilhas Eletrônicas Capitulo 1 O Excel é um programa de cálculos muito utilizado em empresas para controle administrativo, será utilizado também por pessoas que gostam de organizar suas contas

Leia mais

Analise o código abaixo:

Analise o código abaixo: Recursão - introdução Analise o código abaixo: 1 # include 2 # include 3 int Fatorial ( int x) 4 int k, s =1; for (k =0;k

Leia mais

RESOLUÇÃO DAS QUESTÕES DE RACIOCÍNIO LÓGICO-MATEMÁTICO

RESOLUÇÃO DAS QUESTÕES DE RACIOCÍNIO LÓGICO-MATEMÁTICO RESOLUÇÃO DAS QUESTÕES DE RACIOCÍNIO LÓGICO-MATEMÁTICO Caro aluno, Disponibilizo abaixo a resolução das questões de Raciocínio Lógico- Matemático das provas para os cargos de Analista do TRT/4ª Região

Leia mais

casa. Será uma casa simples, situada em terreno plano, com sala, dois quartos, cozinha, banheiro e área de serviço.

casa. Será uma casa simples, situada em terreno plano, com sala, dois quartos, cozinha, banheiro e área de serviço. A UUL AL A A casa Nesta aula vamos examinar a planta de uma casa. Será uma casa simples, situada em terreno plano, com, dois quartos, cozinha, banheiro e área de serviço. Introdução terreno 20 m rua 30

Leia mais

Matemática Financeira II

Matemática Financeira II Módulo 3 Unidade 28 Matemática Financeira II Para início de conversa... Notícias como essas são encontradas em jornais com bastante frequência atualmente. Essas situações de aumentos e outras como financiamentos

Leia mais

Equações do segundo grau

Equações do segundo grau Módulo 1 Unidade 4 Equações do segundo grau Para início de conversa... Nesta unidade, vamos avançar um pouco mais nas resoluções de equações. Na unidade anterior, você estudou sobre as equações de primeiro

Leia mais

Problemas de volumes

Problemas de volumes Problemas de volumes A UUL AL A Nesta aula, vamos resolver problemas de volumes. Com isso, teremos oportunidade de recordar os principais sólidos: o prisma, o cilindro, a pirâmide, o cone e a esfera. Introdução

Leia mais

ARRAYS. Um array é um OBJETO que referencia (aponta) mais de um objeto ou armazena mais de um dado primitivo.

ARRAYS. Um array é um OBJETO que referencia (aponta) mais de um objeto ou armazena mais de um dado primitivo. Cursos: Análise, Ciência da Computação e Sistemas de Informação Programação I - Prof. Aníbal Notas de aula 8 ARRAYS Introdução Até agora, utilizamos variáveis individuais. Significa que uma variável objeto

Leia mais

Teoria dos Números. A Teoria dos Números é a área da matemática que lida com os números inteiros, isto é, com o conjunto

Teoria dos Números. A Teoria dos Números é a área da matemática que lida com os números inteiros, isto é, com o conjunto Teoria dos Números 1 Noções Básicas A Teoria dos Números é a área da matemática que lida com os números inteiros, isto é, com o conjunto Z = {..., 4, 3, 2, 1, 0, 1, 2, 3, 4...}. Ela permite resolver de

Leia mais

Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO)

Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO) Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO) Parte: 1 Prof. Cristóvão Cunha Objetivos de aprendizagem

Leia mais

Construção de tabelas verdades

Construção de tabelas verdades Construção de tabelas verdades Compreender a Lógica como instrumento da ciência e como estrutura formal do pensamento, conhecendo e compreendendo as operações com os principais conceitos proposicionais

Leia mais

Resolução de sistemas lineares

Resolução de sistemas lineares Resolução de sistemas lineares J M Martínez A Friedlander 1 Alguns exemplos Comecemos mostrando alguns exemplos de sistemas lineares: 3x + 2y = 5 x 2y = 1 (1) 045x 1 2x 2 + 6x 3 x 4 = 10 x 2 x 5 = 0 (2)

Leia mais

E A D - S I S T E M A S L I N E A R E S INTRODUÇÃO

E A D - S I S T E M A S L I N E A R E S INTRODUÇÃO E A D - S I S T E M A S L I N E A R E S INTRODUÇÃO Dizemos que uma equação é linear, ou de primeiro grau, em certa incógnita, se o maior expoente desta variável for igual a um. Ela será quadrática, ou

Leia mais

BCC202 - Estrutura de Dados I

BCC202 - Estrutura de Dados I BCC202 - Estrutura de Dados I Aula 04: Análise de Algoritmos (Parte 1) Reinaldo Fortes Universidade Federal de Ouro Preto, UFOP Departamento de Ciência da Computação, DECOM Website: www.decom.ufop.br/reifortes

Leia mais

A Torre de Hanói e o Princípio da Indução Matemática

A Torre de Hanói e o Princípio da Indução Matemática A Torre de Hanói e o Princípio da Indução Matemática I. O jogo A Torre de Hanói consiste de uma base com três pinos e um certo número n de discos de diâmetros diferentes, colocados um sobre o outro em

Leia mais

2. Representação Numérica

2. Representação Numérica 2. Representação Numérica 2.1 Introdução A fim se realizarmos de maneira prática qualquer operação com números, nós precisamos representa-los em uma determinada base numérica. O que isso significa? Vamos

Leia mais

Conceitos e fórmulas

Conceitos e fórmulas 1 Conceitos e fórmulas 1).- Triângulo: definição e elementos principais Definição - Denominamos triângulo (ou trilátero) a toda figura do plano euclidiano formada por três segmentos AB, BC e CA, tais que

Leia mais

FACULDADE CAMPO LIMPO PAULISTA MESTRADO EM CIÊNCIA DA COMPUTAÇÃO. Projeto e Análise de Algoritmos II Lista de Exercícios 2

FACULDADE CAMPO LIMPO PAULISTA MESTRADO EM CIÊNCIA DA COMPUTAÇÃO. Projeto e Análise de Algoritmos II Lista de Exercícios 2 FACULDADE CAMPO LIMPO PAULISTA MESTRADO EM CIÊNCIA DA COMPUTAÇÃO Projeto e Análise de Algoritmos II Lista de Exercícios 2 Prof. Osvaldo. 1. Desenvolva algoritmos para as operações abaixo e calcule a complexidade

Leia mais

Análise de complexidade

Análise de complexidade Introdução Algoritmo: sequência de instruções necessárias para a resolução de um problema bem formulado (passíveis de implementação em computador) Estratégia: especificar (definir propriedades) arquitectura

Leia mais

Universidade Federal de Mato Grosso do Sul Faculdade de Computação Disciplina de Verão: Algoritmos e Programação II

Universidade Federal de Mato Grosso do Sul Faculdade de Computação Disciplina de Verão: Algoritmos e Programação II Universidade Federal de Mato Grosso do Sul Faculdade de Computação Disciplina de Verão: Algoritmos e Programação II Professores: Liana Duenha 10 de março de 2014 Professores: Liana Duenha () Universidade

Leia mais

ALGORITMOS PARTE 01. Fabricio de Sousa Pinto

ALGORITMOS PARTE 01. Fabricio de Sousa Pinto ALGORITMOS PARTE 01 Fabricio de Sousa Pinto Algoritmos: Definição 2 É uma sequência de instruções finita e ordenada de forma lógica para a resolução de uma determinada tarefa ou problema. Algoritmos 3

Leia mais

Contagem (2) Anjolina Grisi de Oliveira. 2007.1 / CIn-UFPE. Centro de Informática Universidade Federal de Pernambuco

Contagem (2) Anjolina Grisi de Oliveira. 2007.1 / CIn-UFPE. Centro de Informática Universidade Federal de Pernambuco 1 / 24 Contagem (2) Anjolina Grisi de Oliveira Centro de Informática Universidade Federal de Pernambuco 2007.1 / CIn-UFPE 2 / 24 O princípio da multiplicação de outra forma O princípio da multiplicação

Leia mais

Comandos Sequenciais if else, e Switch

Comandos Sequenciais if else, e Switch Introdução à Programação Comandos Sequenciais if else, e Switch 1º ano - ESI e IGE (2011/2012) Engenheiro Anilton Silva Fernandes (afernandes@unipiaget.cv) O computador pensa? Muitas vezes utiliza-se a

Leia mais

Aula 06 - Funções. O que é uma Função - Comando return - Protótipos de Funções - Tipos de Funções - Escopo de Variáveis - Passagem de parâmetros

Aula 06 - Funções. O que é uma Função - Comando return - Protótipos de Funções - Tipos de Funções - Escopo de Variáveis - Passagem de parâmetros O que é uma Função - Comando return - Protótipos de Funções - Tipos de Funções - Escopo de Variáveis - Passagem de parâmetros Algoritmo e Programação Aula 06 - Funções Colegiado de Engenharia da Computação

Leia mais

PROGRAMAÇÃO ESTRUTURADA. CC 2º Período

PROGRAMAÇÃO ESTRUTURADA. CC 2º Período PROGRAMAÇÃO ESTRUTURADA CC 2º Período PROGRAMAÇÃO ESTRUTURADA Aula 06: Ponteiros Declarando e utilizando ponteiros Ponteiros e vetores Inicializando ponteiros Ponteiros para Ponteiros Cuidados a serem

Leia mais

Um jogo de preencher casas

Um jogo de preencher casas Um jogo de preencher casas 12 de Janeiro de 2015 Resumo Objetivos principais da aula de hoje: resolver um jogo com a ajuda de problemas de divisibilidade. Descrevemos nestas notas um jogo que estudamos

Leia mais

Universidade Federal da Grande Dourados Faculdade de Ciências Exatas e Tecnologia Bacharelado em Sistemas de Informação Estruturas de Dados I Lista II

Universidade Federal da Grande Dourados Faculdade de Ciências Exatas e Tecnologia Bacharelado em Sistemas de Informação Estruturas de Dados I Lista II Universidade Federal da Grande Dourados Faculdade de Ciências Exatas e Tecnologia Bacharelado em Sistemas de Informação Estruturas de Dados I Lista II Professor: MSc. Rodrigo Porfírio da Silva Sacchi 30

Leia mais

Orientação a Objetos

Orientação a Objetos Orientação a Objetos 1. Sobrecarga (Overloading) Os clientes dos bancos costumam consultar periodicamente informações relativas às suas contas. Geralmente, essas informações são obtidas através de extratos.

Leia mais

APLICAÇÕES DA DERIVADA

APLICAÇÕES DA DERIVADA Notas de Aula: Aplicações das Derivadas APLICAÇÕES DA DERIVADA Vimos, na seção anterior, que a derivada de uma função pode ser interpretada como o coeficiente angular da reta tangente ao seu gráfico. Nesta,

Leia mais

AV2 - MA 12-2012. (a) De quantos modos diferentes posso empilhá-los de modo que todos os CDs de rock fiquem juntos?

AV2 - MA 12-2012. (a) De quantos modos diferentes posso empilhá-los de modo que todos os CDs de rock fiquem juntos? Questão 1. Num porta-cds, cabem 10 CDs colocados um sobre o outro, formando uma pilha vertical. Tenho 3 CDs de MPB, 5 de rock e 2 de música clássica. (a) De quantos modos diferentes posso empilhá-los de

Leia mais

Por que o quadrado de terminados em 5 e ta o fa cil? Ex.: 15²=225, 75²=5625,...

Por que o quadrado de terminados em 5 e ta o fa cil? Ex.: 15²=225, 75²=5625,... Por que o quadrado de terminados em 5 e ta o fa cil? Ex.: 15²=225, 75²=5625,... 0) O que veremos na aula de hoje? Um fato interessante Produtos notáveis Equação do 2º grau Como fazer a questão 5 da 3ª

Leia mais

Notas de Cálculo Numérico

Notas de Cálculo Numérico Notas de Cálculo Numérico Túlio Carvalho 6 de novembro de 2002 2 Cálculo Numérico Capítulo 1 Elementos sobre erros numéricos Neste primeiro capítulo, vamos falar de uma limitação importante do cálculo

Leia mais

Resolvendo problemas com logaritmos

Resolvendo problemas com logaritmos A UA UL LA Resolvendo problemas com logaritmos Introdução Na aula anterior descobrimos as propriedades dos logaritmos e tivemos um primeiro contato com a tábua de logarítmos. Agora você deverá aplicar

Leia mais

5. EXPERIÊNCIAS E ANÁLISE DOS RESULTADOS. 5.1 - Os Programas de Avaliação

5. EXPERIÊNCIAS E ANÁLISE DOS RESULTADOS. 5.1 - Os Programas de Avaliação 36 5. EXPERIÊNCIAS E ANÁLISE DOS RESULTADOS 5.1 - Os Programas de Avaliação Programas de avaliação convencionais foram utilizados para análise de diversas configurações da arquitetura. Estes programas

Leia mais

Batalha Naval Algoritmos de Busca. Correlações curriculares Matemática: Números: maior que, menor que, iguais a.

Batalha Naval Algoritmos de Busca. Correlações curriculares Matemática: Números: maior que, menor que, iguais a. Atividade 6 Batalha Naval Algoritmos de Busca Sumário Computadores são freqüentemente requisitados a encontrar informação em grandes coleções de dados. Estes precisam desenvolver métodos rápidos e eficientes

Leia mais

quociente razão. mesma área a partes de um tablete de chocolate

quociente razão. mesma área a partes de um tablete de chocolate 1 As sequências de atividades Vamos relembrar, Como lemos os números racionais?, Como escrevemos os números racionais?, As partes das tiras de papel, Comparando e ordenando números racionais na forma decimal

Leia mais

Aulas de PHP Criptografia com Cifra de César. Paulo Marcos Trentin paulo@paulotrentin.com.br http://www.paulotrentin.com.br

Aulas de PHP Criptografia com Cifra de César. Paulo Marcos Trentin paulo@paulotrentin.com.br http://www.paulotrentin.com.br Aulas de PHP Criptografia com Cifra de César Paulo Marcos Trentin paulo@paulotrentin.com.br http://www.paulotrentin.com.br Cifra de César com ISO-8859-1 A cifra de Cesar existe há mais de 2000 anos. É

Leia mais

Problemas insolúveis. Um exemplo simples e concreto

Problemas insolúveis. Um exemplo simples e concreto Surge agora uma outra questão. Viemos buscando algoritmos para resolver problemas. No entanto, será que sempre seria possível achar esses algoritmos? Colocando de outra forma: será que, para todo problema,

Leia mais

O coeficiente angular

O coeficiente angular A UA UL LA O coeficiente angular Introdução O coeficiente angular de uma reta já apareceu na Aula 30. Agora, com os conhecimentos obtidos nas Aulas 40 e 45, vamos explorar mais esse conceito e descobrir

Leia mais

MATEMÁTICA: DESENVOLVENDO ATIVIDADES ENIGMÁTICAS COM MATEMÁGICA E LÓGICA PARA OS ANOS INICIAIS DO ENSINO FUNDAMENTAL

MATEMÁTICA: DESENVOLVENDO ATIVIDADES ENIGMÁTICAS COM MATEMÁGICA E LÓGICA PARA OS ANOS INICIAIS DO ENSINO FUNDAMENTAL MATEMÁTICA: DESENVOLVENDO ATIVIDADES ENIGMÁTICAS COM MATEMÁGICA E LÓGICA PARA OS ANOS INICIAIS DO ENSINO FUNDAMENTAL Francisca Terezinha Oliveira Alves (UFPB) ftoalves@yahoo.com.br Luciano Moreira da Silva

Leia mais

Como fazer contato com pessoas importantes para sua carreira?

Como fazer contato com pessoas importantes para sua carreira? Como fazer contato com pessoas importantes para sua carreira? - Tem alguém com quem você gostaria de fazer contato? - Porque você não o fez até agora? - Por que é importante aprender a fazer esses contatos?

Leia mais

Bases Matemáticas. Aula 2 Métodos de Demonstração. Rodrigo Hausen. v. 2013-7-31 1/15

Bases Matemáticas. Aula 2 Métodos de Demonstração. Rodrigo Hausen. v. 2013-7-31 1/15 Bases Matemáticas Aula 2 Métodos de Demonstração Rodrigo Hausen v. 2013-7-31 1/15 Como o Conhecimento Matemático é Organizado Definições Definição: um enunciado que descreve o significado de um termo.

Leia mais

SISTEMAS LINEARES CONCEITOS

SISTEMAS LINEARES CONCEITOS SISTEMAS LINEARES CONCEITOS Observemos a equação. Podemos perceber que ela possui duas incógnitas que são representadas pelas letras x e y. Podemos também notar que se e, a igualdade se torna verdadeira,

Leia mais

Recursividade. Túlio Toffolo tulio@toffolo.com.br www.toffolo.com.br. BCC202 Aula 08 Algoritmos e Estruturas de Dados I

Recursividade. Túlio Toffolo tulio@toffolo.com.br www.toffolo.com.br. BCC202 Aula 08 Algoritmos e Estruturas de Dados I Recursividade Túlio Toffolo tulio@toffolo.com.br www.toffolo.com.br BCC202 Aula 08 Algoritmos e Estruturas de Dados I Outros Exemplos de Recursividade Factais são outros exemplos de recursividade Quando

Leia mais

SUMÁRIO 1. AULA 6 ENDEREÇAMENTO IP:... 2

SUMÁRIO 1. AULA 6 ENDEREÇAMENTO IP:... 2 SUMÁRIO 1. AULA 6 ENDEREÇAMENTO IP:... 2 1.1 Introdução... 2 1.2 Estrutura do IP... 3 1.3 Tipos de IP... 3 1.4 Classes de IP... 4 1.5 Máscara de Sub-Rede... 6 1.6 Atribuindo um IP ao computador... 7 2

Leia mais

Projeção ortográfica de modelos com elementos paralelos e oblíquos

Projeção ortográfica de modelos com elementos paralelos e oblíquos A U L A Projeção ortográfica de modelos com elementos paralelos e oblíquos Introdução Você já sabe que peças da área da Mecânica têm formas e elementos variados. Algumas apresentam rebaixos, outras rasgos,

Leia mais

Problemas de Jogos e Tabuleiros

Problemas de Jogos e Tabuleiros Problemas de Jogos e Tabuleiros Professor Emiliano Augusto Chagas Para esquentar! 01) Duas crianças se revezam em turnos quebrando uma barra retangular de chocolate, com seis quadrados de altura e oito

Leia mais

Cálculo Numérico Aula 1: Computação numérica. Tipos de Erros. Aritmética de ponto flutuante

Cálculo Numérico Aula 1: Computação numérica. Tipos de Erros. Aritmética de ponto flutuante Cálculo Numérico Aula : Computação numérica. Tipos de Erros. Aritmética de ponto flutuante Computação Numérica - O que é Cálculo Numérico? Cálculo numérico é uma metodologia para resolver problemas matemáticos

Leia mais

Equacionando problemas - II

Equacionando problemas - II A UA UL LA Equacionando problemas - II Introdução Nossa aula Nas duas últimas aulas, resolvemos diversas equações do º grau pelo processo de completar o quadrado perfeito ou pela utilização da fórmula

Leia mais

Algoritmos em Javascript

Algoritmos em Javascript Algoritmos em Javascript Sumário Algoritmos 1 O que é um programa? 1 Entrada e Saída de Dados 3 Programando 4 O que é necessário para programar 4 em JavaScript? Variáveis 5 Tipos de Variáveis 6 Arrays

Leia mais

36ª OLIMPÍADA BRASILEIRA DE MATEMÁTICA Primeira Fase Nível 3 Ensino Médio

36ª OLIMPÍADA BRASILEIRA DE MATEMÁTICA Primeira Fase Nível 3 Ensino Médio 36ª OLIMPÍADA BRASILEIRA DE MATEMÁTICA Primeira Fase Nível 3 Ensino Médio Esta prova também corresponde à prova da Primeira Fase da Olimpíada Regional nos Estados de: AL BA ES MG PA RS RN SC Terça-feira,

Leia mais

Integrais Duplas e Coordenadas Polares. 3.1 Coordenadas Polares: Revisão

Integrais Duplas e Coordenadas Polares. 3.1 Coordenadas Polares: Revisão Cálculo III Departamento de Matemática - ICEx - UFMG Marcelo Terra Cunha Integrais Duplas e Coordenadas Polares Nas primeiras aulas discutimos integrais duplas em algumas regiões bem adaptadas às coordenadas

Leia mais

Arquitetura de Rede de Computadores

Arquitetura de Rede de Computadores TCP/IP Roteamento Arquitetura de Rede de Prof. Pedro Neto Aracaju Sergipe - 2011 Ementa da Disciplina 4. Roteamento i. Máscara de Rede ii. Sub-Redes iii. Números Binários e Máscara de Sub-Rede iv. O Roteador

Leia mais

MC-102 Aula 17 Strings e Matrizes

MC-102 Aula 17 Strings e Matrizes MC-102 Aula 17 Strings e Matrizes Instituto de Computação Unicamp 5 de Maio de 2015 Roteiro 1 Strings Strings: Exemplos 2 Matrizes Exemplos com Matrizes 3 Exercícios (Instituto de Computação Unicamp) MC-102

Leia mais

9 Comandos condicionais

9 Comandos condicionais 9 Comandos condicionais Um comando condicional é uma instrução empregada quando se deseja criar um desvio, isto é, a opção de executar-se ou não um determinado trecho de código, segundo uma condição. Em

Leia mais

OPERADORES E ESTRUTURAS DE CONTROLE

OPERADORES E ESTRUTURAS DE CONTROLE OPERADORES E ESTRUTURAS DE CONTROLE 3.1 Operadores Os operadores indicam o tipo de operação matemática que será executada gerando novos valores a partir de um ou mais operadores. São muito utilizados em

Leia mais

Informática no Ensino de Matemática Prof. José Carlos de Souza Junior

Informática no Ensino de Matemática Prof. José Carlos de Souza Junior Informática no Ensino de Matemática Prof. José Carlos de Souza Junior http://www.unifal-mg.edu.br/matematica/?q=disc jc Aula 02 ATIVIDADE 01 Para poupar esforço de digitação, você pode usar o tradicional

Leia mais

REPRESENTAÇÃO DE DADOS EM SISTEMAS DE COMPUTAÇÃO AULA 03 Arquitetura de Computadores Gil Eduardo de Andrade

REPRESENTAÇÃO DE DADOS EM SISTEMAS DE COMPUTAÇÃO AULA 03 Arquitetura de Computadores Gil Eduardo de Andrade REPRESENTAÇÃO DE DADOS EM SISTEMAS DE COMPUTAÇÃO AULA 03 Arquitetura de Computadores Gil Eduardo de Andrade O conteúdo deste documento é baseado no livro Princípios Básicos de Arquitetura e Organização

Leia mais

Algoritmos. Objetivo principal: explicar que a mesma ação pode ser realizada de várias maneiras, e que às vezes umas são melhores que outras.

Algoritmos. Objetivo principal: explicar que a mesma ação pode ser realizada de várias maneiras, e que às vezes umas são melhores que outras. 6 6 NOME DA AULA: 6 Algoritmos Duração da aula: 45 60 minutos Tempo de preparação: 10-25 minutos (dependendo da disponibilidade de tangrans prontos ou da necessidade de cortá-los à mão) Objetivo principal:

Leia mais

Lição 2: O que Faz um Canal Funcionar?

Lição 2: O que Faz um Canal Funcionar? Lição 2: O que Faz um Canal Funcionar? Nesta lição, daremos uma olhada em todas as partes de um canal do YouTube e veremos como cada parte contribui para o tempo de exibição. Lição 2.1 - Benefícios do

Leia mais

(a 1 + a 100 ) + (a 2 + a 99 ) + (a 3 + a 98 ) +... + (a 50 + a 51 ).

(a 1 + a 100 ) + (a 2 + a 99 ) + (a 3 + a 98 ) +... + (a 50 + a 51 ). Questão 1. A sequência 0, 3, 7, 10, 14, 17, 21,... é formada a partir do número 0 somando-se alternadamente 3 ou 4 ao termo anterior, isto é: o primeiro termo é 0, o segundo é 3 a mais que o primeiro,

Leia mais

20 Caracteres - Tipo char

20 Caracteres - Tipo char 0 Caracteres - Tipo char Ronaldo F. Hashimoto e Carlos H. Morimoto Até agora vimos como o computador pode ser utilizado para processar informação que pode ser quantificada de forma numérica. No entanto,

Leia mais

José Romildo Malaquias 2011-1

José Romildo Malaquias 2011-1 Programação de Computadores I Aula 08 Programação: Estruturas de Repetição José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2011-1 1/58 Motivação Como imprimir os três

Leia mais

BUSCA EM LISTAS LISTAS SEQÜENCIAIS, LISTAS SIMPLESMENTE E DUPLAMENTE ENCADEADAS E LISTAS CIRCULARES

BUSCA EM LISTAS LISTAS SEQÜENCIAIS, LISTAS SIMPLESMENTE E DUPLAMENTE ENCADEADAS E LISTAS CIRCULARES BUSCA EM LISTAS LISTAS SEQÜENCIAIS, LISTAS SIMPLESMENTE E DUPLAMENTE ENCADEADAS E LISTAS CIRCULARES ALGORITMOS DE BUSCA EM LISTAS COM ALOCAÇÃO SEQÜENCIAL Busca em Listas Lineares A operação de busca é

Leia mais

LINGUAGEM C UMA INTRODUÇÃO

LINGUAGEM C UMA INTRODUÇÃO LINGUAGEM C UMA INTRODUÇÃO AULA 1 Conceitos muito básicos 1 Introdução O C nasceu na década de 70. Seu inventor, Dennis Ritchie, implementou-o pela primeira vez usando um DEC PDP-11 rodando o sistema operacional

Leia mais

UNIVERSIDADE FEDERAL DE SANTA MARIA

UNIVERSIDADE FEDERAL DE SANTA MARIA 1 UNIVERSIDADE FEDERAL DE SANTA MARIA Disciplina de Algoritmos e Programação Profa: Juliana Kaizer Vizzotto Lista de Exercícios Vetores Para a implementação de programas que solucionem os problemas a seguir

Leia mais

Aula 06 Introdução à Teste de Módulos II e Exercícios. Alessandro Garcia LES/DI/PUC-Rio Março 2014

Aula 06 Introdução à Teste de Módulos II e Exercícios. Alessandro Garcia LES/DI/PUC-Rio Março 2014 Aula 06 Introdução à Teste de Módulos II e Exercícios Alessandro Garcia LES/DI/PUC-Rio Março 2014 Princípios Discutidos até aqui Cada módulo deveria implementar uma única abstração similarmente: cada função

Leia mais

INTRODUÇÃO AO JAVA PARA PROGRAMADORES C

INTRODUÇÃO AO JAVA PARA PROGRAMADORES C PROGRAMAÇÃO SERVIDOR EM SISTEMAS WEB INTRODUÇÃO AO JAVA PARA PROGRAMADORES C Prof. Dr. Daniel Caetano 2012-1 Objetivos Apresentar a grande semelhança entre Java e C Apresentar a organização diferenciada

Leia mais

Cálculo Numérico Computacional Exercícios lista 04 Raizes aproximadas

Cálculo Numérico Computacional Exercícios lista 04 Raizes aproximadas 1 Cálculo Numérico Computacional Exercícios lista 04 Raizes aproximadas Varredura, método da tangente Prof. Tarcisio Praciano-Pereira Dep. de Matemática tarcisio@member.ams.org aluno: Univ. Estadual Vale

Leia mais

Chapter 2. 2.1 Noções Preliminares

Chapter 2. 2.1 Noções Preliminares Chapter 2 Seqüências de Números Reais Na Análise os conceitos e resultados mais importantes se referem a limites, direto ou indiretamente. Daí, num primeiro momento, estudaremos os limites de seqüências

Leia mais

Título: Sistemas Lineares no CAp UFRJ: Interpretações Algébrica e Gráfica

Título: Sistemas Lineares no CAp UFRJ: Interpretações Algébrica e Gráfica Autor Letícia Guimarães Rangel Co-autor(es): Fernando Celso Villar Marinho Lílian Káram Parente Cury Spiller Rita Maria Cardoso Meirelles Tipo de Pesquisa Ensino Médio Números e Operações Componente Curricular

Leia mais

Aula 03 Custos de um algoritmo e funções de complexidade

Aula 03 Custos de um algoritmo e funções de complexidade BC1424 Algoritmos e Estruturas de Dados I Aula 03 Custos de um algoritmo e funções de complexidade Prof. Jesús P. Mena-Chalco jesus.mena@ufabc.edu.br 1Q-2015 1 Custo de um algoritmo e funções de complexidade

Leia mais

Objetivos: Entender o funcionamento dos programas Java via linha de comando

Objetivos: Entender o funcionamento dos programas Java via linha de comando Algoritmos e Programação I Aula de Laboratório Objetivos: Entender o funcionamento dos programas Java via linha de comando 1. A Linha de Comando: DOS ou Shell Apesar dos usuários geralmente não enxergarem

Leia mais

Sistemas Distribuídos: Princípios e Algoritmos Introdução à Análise de Complexidade de Algoritmos

Sistemas Distribuídos: Princípios e Algoritmos Introdução à Análise de Complexidade de Algoritmos Sistemas Distribuídos: Princípios e Algoritmos Introdução à Análise de Complexidade de Algoritmos Francisco José da Silva e Silva Laboratório de Sistemas Distribuídos (LSD) Departamento de Informática

Leia mais

CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES

CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES 3.1 - IDENTIFICADORES Os objetos que usamos no nosso algoritmo são uma representação simbólica de um valor de dado. Assim, quando executamos a seguinte instrução:

Leia mais

Empresário. Você curte moda? Gosta de cozinhar? Não existe sorte nos negócios. Há apenas esforço, determinação, e mais esforço.

Empresário. Você curte moda? Gosta de cozinhar? Não existe sorte nos negócios. Há apenas esforço, determinação, e mais esforço. Empresário Não existe sorte nos negócios. Há apenas esforço, determinação, e mais esforço. Sophie Kinsella, Jornalista Econômica e autora Você curte moda? Gosta de cozinhar? Ou talvez apenas goste de animais?

Leia mais

BC0501 Linguagens de Programação

BC0501 Linguagens de Programação BC0501 Linguagens de Programação Aula Prática: 03 Assunto: Comandos de Seleção 1. Introdução Um comando de seleção define uma condição em um programa, que permite que grupos de comandos sejam executados

Leia mais

UNIDADE V COMO CONSEGUIR LEADS

UNIDADE V COMO CONSEGUIR LEADS UNIDADE V COMO CONSEGUIR LEADS Agora que você já tem sua página de captura no ar e também sua sequência de e-mails automáticos configurados chegou o momento de colocar tudo para funcionar. Ou seja, chegou

Leia mais

Estruturas (Registros)

Estruturas (Registros) Estruturas (Registros) Os vetores e as matrizes, como vimos anteriormente, são estruturas capazes de armazenar diversos valores do mesmo tipo. Mas, e se quiséssemos armazenar em uma estrutura diversos

Leia mais

Projeção ortográfica da figura plana

Projeção ortográfica da figura plana A U L A Projeção ortográfica da figura plana Introdução As formas de um objeto representado em perspectiva isométrica apresentam certa deformação, isto é, não são mostradas em verdadeira grandeza, apesar

Leia mais