Programação II RECURSÃO

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

Download "Programação II RECURSÃO"

Transcrição

1 Programação II RECURSÃO Bruno Feijó Dept. de Inormática, PUCRio

2 Motivação Escher: Metamorphosis (197) Drawing Hands (1948) Relativity (195) Alguém diz: Esta sentença é alsa! Paradoxo do Cretense Mentiroso um homem natural de Creta, em praça pública, anuncia: Todo cretense é mentiroso! Estas sentenças são Verdadeiras ou Falsas? O que há de comum neste slide? RECURSÃO! 2

3 Deinições Recursivas Em uma deinição recursiva um item é deinido em termos de si mesmo, ou seja, o item que está sendo deinido aparece como parte da deinição;

4 Conceito de Recursão Em uma deinição recursiva um item é deinido em termos de si mesmo, ou seja,o item que está sendo deinido aparece como parte da deinição; Mas, atenção: a deinição (x) (x) não revela nada sobre a unção. A deinição recursiva da unção atorial at(n) = n (n 1) 1 é a seguinte: 1, se n 0 at( n) n at( n 1), se n 0 Caso Base Recorrência (ou Passo Indutivo) Chamada Recursiva (ou Hipótese Indutiva) Uma deinição recursiva é deinida por um ou mais casos base e por um ou mais passos indutivos envolvendo a chamada da própria unção (denominada chamada recursiva ). O caso base é uma situação trivial da unção, onde calcular o valor da unção é imediato, direto e trivial. O passo indutivo é a aplicação recursiva da unção em uma versão de menor porte do problema. Imagine o passo indutivo como sendo um degrau, situado logo abaixo do nível do problema proposto originalmente, em direção a um caso base. A maior diiculdade neste método de resolver problemas é termos coniança na solidez desse degrau! Isto é: coniança na validade de adotarmos a Hipótese Indutiva. que corresponde a supor a versão de menor porte do problema como estando completamente resolvida. Isto é um método indutivo para resolver problemas. O termo indutivo é usado para salientar que a solução em um passo é induzida pela solução do passo anterior. A relação entre recursão e indução é apresentada mais a rente. 4

5 O processo da Recursão A deinição recursiva é uma maneira de especiicar a solução de uma instância de um problema de tamanho n em termos de soluções para instâncias menores. at() = at(2) Problema tamanho n at(2) = at(1) at(1) = 2 at(0) at(0) = 1 Caso base Neste processo, criase uma pilha de operações pendentes (uma expansão) que são resolvidas quando se encontra o caso base (uma contração). Por exemplo: expansão contração at() * at(2) * (2 * at(1)) * (2 * (1 * at(0))) * (2 * (1 * 1)) Caso Base * (2 * 1) * 2 6 5

6 Implementação de uma Deinição Recursiva Seja a deinição recursiva de atorial: at(0) = 1 at(n) = n at(n 1) Uma vez que encontramos a deinição recursiva de uma unção, a implementação é direta, simples, um trabalho automático: int at (int n) i (n==0) return 1; return n*at(n1); Você pode veriicar se a sua deinição e a sua implementação estão corretas acompanhando a execução de um exemplo: Este acompanhamento chamase TRAÇO. Não dependa de azer o traço para encontrar a deinição recursiva de uma unção. Use o traço para veriicar e não para criar a solução. Ademais, somente unções matemáticas admitem o TRAÇO. Traço não az sentido para procedimentos (e.g. unções em C que disparam ações e/ou não retornam valor). Nestes casos, acompanhamse as variáveis do procedimento. As variáveis deinem o estado do mundo. e nem sempre é ácil acompanhar o estado do mundo! 6

7 Outro Exemplo de Deinição Recursiva A deinição recursiva da soma da série de números naturais, g(n) =1 2 n, é: g(1) = 1 g(n) = g(n 1) + n Este exemplo é mais interessante que o do atorial, porque há uma bela orma echada que representa esta soma: 1 2 n = n(n 1)/2 Nem toda a deinição recursiva tem uma bela orma echada ( raras têm!). Aliás, quando tem, não az sentido implementar a unção recursivamente no computador. A implementação recursiva de g(n) também é imediata: int g(int n) i (n == 1) return 1; return n + g(n 1); Note que não existem construtores de loop (e.g. or ou while) na implementação de deinições recursivas! Há amílias de linguagens que não têm estes construtores (or e while), porque usam recursão (e.g. linguagens uncionais, como Lisp, e linguagens de programação em lógica, como Prolog). 7

8 Recursão e Indução (Material Avançado) Existe uma estreita ligação entre indução e deinições recursivas. Indução é talvez a orma mais natural de raciocinar sobre processos recursivos. Indução é um método para provar que uma airmação S(n) é válida para todo n: Primeiro mostre que S(1) (ou S(0)) é valida Depois assuma que S(k) é válida (esta é a hipótese indutiva) Mostre que S(k+1) é válida Então, S(n) é válida para todo n. Um exemplo clássico: provar que 1 2 n = n(n 1)/2 para todo n S(1) = 1(1 1)/2 = 1, i.e. S(1) é válida! Hipótese: 1 2 k = k(k 1)/2 é uma airmação válida Demonstração que S(k+1) é válida, i.e. 1 2 k (k 1)= (k 1)(k 2)/2 Pela hipótese, o lado esquerdo é k(k 1)/2 (k 1) Colocando (k 1) em evidência, temse: (k 1)(k/2 +1), i.e. (k 1)(k 2)/2 Indução cai naturalmente no mesmo paradigma da deinição recursiva. São duas variantes do mesmo tema. A orma recursiva para o exemplo acima já vimos que é: Este assunto não cai em provas. São inormações que ajudam a entender recursão. g(1) = 1 g(n) = g(n 1) + n Nem toda a deinição recursiva tem uma bela orma echada (como a n(n 1)/2) 8

9 Um Roteiro para Encontrar Soluções Recursivas Devemos observar que, no método indutivo, o problema vai sucessivamente caindo em problemas de menor porte, até que o caso base é alcançado. O passo indutivo corresponde a descobrirmos como modiicar o valor vindo da chamada recursiva para ter o resultado inal procurado. E o que devemos azer é sempre muito simples, como uma espécie de retoque inal (pois o maior trabalho já oi eito pela hipótese indutiva, ou seja: pela chamada recursiva) Não começe tentando simular a execução (deixe isto como teste após encontrar solução. Como um roteiro aça sempre o seguinte (até icar automático no seu cérebro): 1. Deina o domínio e a imagem da unção (lembre que são conjuntos: conjunto dos naturais, conjunto de todos os strings,...). E entenda o que a unção az (escreva exemplos). Saber o que a unção az, ajuda muito a encontrar a chamada recursiva!!! 2. Veriique se há precondições (e.g. algum valor não permitido, ou se é simplesmente a condição de pertencer ao domínio, ou...).. Identiique os elementos mais neutros, simples, do domínio. Os casos base geralmente (mas não necessariamente) dizem respeito a eles. 4. Formule os casos base 5. Encontre as chamadas recursivas (um degrau a menos na direção do caso base). A chamada recursiva resolve a maior parte do problema e retorna um valor concreto. 6. Encontre os passos indutivos como sendo um retoque que você az com o valor recebido da chamada recursiva. Se você começar a complicar, é sinal de que está errado!! Com a prática, junte 5 e 6. Depois de ormular a solução conceitual, pense em como uncionará na máquina, esboçando o código! 9

10 Solução Conceitual Usando o roteiro do slide anterior, primeiro escreva um esboço de solução da maneira mais independente possível da linguagem de computador em questão. Vamos chamar esta solução de Solução Conceitual. Por exemplo: Problema de Ordemn: at(n) : Precondição: não há situações especiais n Caso(s) Base: n=0 at(n) = 1 Hipótese Indutiva (Chamada Recursiva): at(n1) Passo(s) Indutivo(s): at(n) = n * at(n1) R S naturais (inteiros nãonegativos) inteiros (neg. e nãonegativos). reais conjunto das strings Depois escreva o Código! E, por im, tente seguir a execução do Código.

11 EXEMPLOS 11

12 Tamanho e Cópia de Strings int main(void)... print("\ntamanho= %d\n",stringlen(a)); stringcopy(n,"ana"); print("n=%s\n",n); stringcopy(n,"oi"); print("n=%s\n",n); print("n[2]=%d n[]=%d\n\n",n[2],n[]); tamanho= n=ana n=oi n[2]=0 n[]=0 valor numérico de \0 é 0 (zero). Imprimir \0 como %c dá branco Escreva as unções stringlen e stringcopy recursivamente. Não veja as respostas nos slides seguintes. Tente resolver!

13 Exemplo: tamanho de um string Solução conceitual: tamanho(s): S N se s é vazia então tamanho é 0 caso contrário tamanho(s) = 1 + tamanho do resto da string int tamanho(char * s) i (*s == '\0') return 1 + tamanho(s+1); int tamanho(char * s) // versao com sintaxe [] de indices i (s[0] == '\0') return 1 + tamanho(&s[1]); 1

14 #include <stdio.h> void imprimestr(char *); int main(void) char s[] = "Bom Dia"; imprimestr(s); print("\n"); Exemplo imprimir string void imprimestr(char * s) // versao ponteiro i (*s) // ou: i (*s!= '\0') print("%c",*s); Imprimir string invertido: imprimestr(s+1); /* versao vetor void imprimestr(char * s) */ i (s[0]) // ou: i (s[0]!= '\0') print("%c",s[0]); imprimestr(&s[1]); Solução conceitual imprime(s) se s é vazia então nada imprime caso contrário imprime 1 caractere de s e depois imprime resto da string void imprimeinv(char * s) i (*s) imprimeinv(s+1); print("%c",*s); 14

15 #include <stdio.h> void stringcopy(char *, char *); Exemplo stringcopy int main(void) char s[] = "Bom Dia"; char * a = (char *)malloc(51); stringcopy(a,s); ou de maneira mais concisa void stringcopy(char * s, char * t) i (*s = *t) stringcopy(s+1,t+1); Solução conceitual stringcopy(s,t) copia t para s se t é vazia, então s é vazia caso contrário copia 1 caractere de t para s e copia restante da string t para a próxima posição de s void stringcopy(char * s, char * t) i (*t == '\0') *s == '\0 ; *s = *t; stringcopy(s+1,t+1); Ou ainda: void stringcopy(char * s, char * t) *s = *t; i (*t) stringcopy(s+1,t+1); Ou usando sintaxe [ ] de índice: void stringcopy(char * s, char * t) s[0] = t[0]; i (t[0]) // ou i (t[0]!= '\0 ) stringcopy(&s[1],&t[1]); 15

16 Exemplo: Potenciação Exemplo: unção recursiva para cálculo de potenciação /* Função recursiva para cálculo de potenciacao */ int pot (int x, int n) i (n==0) return 1; return x*pot(x,n1); Caso BASE Passo Recursivo 16

17 Exemplo com 2 Casos Base e 2 Chamadas Recursivas Série de Fibonacci (um termo é a soma dos dois anteriores): 0, 1, 1, 2,, 5, 8, Deinição recursiva da Série de Fibonacci: Implementação: ib(0) = 0 ib(1) = 1 ib(n) = ib(n 1) + ib(n 2) se n 1 int ib (int n) i (n==0) i (n==1) return 1; return (ib(n1) + ib(n2)); 17

18 ILUSTRAÇÃO DA RECURSÃO EM C 18

19 Funções Recursivas Tipos de recursão: direta: uma unção A chama a ela própria indireta: uma unção A chama uma unção B que, por sua vez, chama A Comportamento: quando uma unção é chamada recursivamente, criase um ambiente local para cada chamada as variáveis locais de chamadas recursivas são independentes entre si, como se estivéssemos chamando unções dierentes 19

20 Funções Recursivas #include <stdio.h> int at (int n); int main (void) int n = ; int r; r = at ( n ); print("fatorial de %d = %d \n", n, r); /* Função recursiva para cálculo do atorial */ int at (int n) int ; i (n==0) =1; = n*at(n1); return ; 08/0/10 (c) Casanova, Gattass, Viterbo at() n r main n

21 Funções Recursivas #include <stdio.h> int at (int n); int main (void) int n = ; int r; r = at ( n ); print("fatorial de %d = %d \n", n, r); /* Função recursiva para cálculo do atorial */ int at (int n) int ; i (n==0) =1; = n*at(n1); return ; 08/0/10 (c) Casanova, Gattass, Viterbo at(2) n at() n r main n 2

22 Funções Recursivas #include <stdio.h> int at (int n); int main (void) int n = ; int r; r = at ( n ); print("fatorial de %d = %d \n", n, r); /* Função recursiva para cálculo do atorial */ int at (int n) int ; i (n==0) =1; = n*at(n1); return ; 08/0/10 (c) Casanova, Gattass, Viterbo at(1) n at(2) n at() n r main n 1 2

23 Funções Recursivas #include <stdio.h> int at (int n); int main (void) int n = ; int r; r = at ( n ); print("fatorial de %d = %d \n", n, r); /* Função recursiva para cálculo do atorial */ int at (int n) int ; i (n==0) =1; = n*at(n1); return ; 08/0/10 (c) Casanova, Gattass, Viterbo at(0) n at(1) n at(2) n at() n r main n 0 1 2

24 Funções Recursivas #include <stdio.h> int at (int n); int main (void) int n = ; int r; r = at ( n ); print("fatorial de %d = %d \n", n, r); /* Função recursiva para cálculo do atorial */ int at (int n) int ; i (n==0) =1; = n*at(n1); return ; 08/0/10 (c) Casanova, Gattass, Viterbo at(0) n at(1) n at(2) n at() n r main n

25 Funções Recursivas #include <stdio.h> int at (int n); int main (void) int n = ; int r; r = at ( n ); print("fatorial de %d = %d \n", n, r); /* Função recursiva para cálculo do atorial */ int at (int n) int ; i (n==0) =1; = n*at(n1); return ; 08/0/10 (c) Casanova, Gattass, Viterbo at(1) n at(2) n at() n r main n 1 1 2

26 Funções Recursivas #include <stdio.h> int at (int n); int main (void) int n = ; int r; r = at ( n ); print("fatorial de %d = %d \n", n, r); /* Função recursiva para cálculo do atorial */ int at (int n) int ; i (n==0) =1; = n*at(n1); return ; 08/0/10 (c) Casanova, Gattass, Viterbo at(2) n at() n r main n 2 2

27 Funções Recursivas #include <stdio.h> int at (int n); int main (void) int n = ; int r; r = at ( n ); print("fatorial de %d = %d \n", n, r); /* Função recursiva para cálculo do atorial */ int at (int n) int ; i (n==0) =1; = n*at(n1); return ; 08/0/10 (c) Casanova, Gattass, Viterbo at() n r main n 6

28 Funções Recursivas #include <stdio.h> int at (int n); int main (void) int n = ; int r; r = at ( n ); print("fatorial de %d = %d \n", n, r); /* Função recursiva para cálculo do atorial */ int at (int n) int ; i (n==0) =1; = n*at(n1); return ; 08/0/10 (c) Casanova, Gattass, Viterbo main r n 6

29 Reerências Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora Campus (2004) Capítulo 4 Funções (pag. 54) Capítulo 7 Cadeias de caracteres (pag. 91) 29

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

INF1007: Programação Funções Recursivas. 12/03/2014 (c) Dept. Informática - PUC-Rio 1

INF1007: Programação Funções Recursivas. 12/03/2014 (c) Dept. Informática - PUC-Rio 1 INF1007: Programação 2 4 Funções Recursivas 12/0/2014 (c) Dept. Inormática PUCRio 1 Tópicos Principais Recursão Deinições recursivas Funções Recursivas Implementação Comportamento 12/0/2014 (c) Dept. Inormática

Leia mais

INF 1007 Programação II

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

Leia mais

Programação de Computadores II. Cap. 5 Vetores

Programação de Computadores II. Cap. 5 Vetores Programação de Computadores II Cap. 5 Vetores Livro: Waldemar Celes, Renato Cerqueira, José Lucas Rangel. Introdução a Estruturas de Dados, Editora Campus (2004) Slides adaptados dos originais dos profs.:

Leia mais

Programação de Computadores II. Cap. 4 Funções

Programação de Computadores II. Cap. 4 Funções Programação de Computadores II Cap. 4 Funções Livro: Waldemar Celes, Renato Cerqueira, José Lucas Rangel. Introdução a Estruturas de Dados, Editora Campus (2004) Slides adaptados dos originais dos profs.:

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

MC102 Aula 26. Instituto de Computação Unicamp. 17 de Novembro de 2016

MC102 Aula 26. Instituto de Computação Unicamp. 17 de Novembro de 2016 MC102 Aula 26 Recursão Instituto de Computação Unicamp 17 de Novembro de 2016 Roteiro 1 Recursão Indução 2 Recursão 3 Fatorial 4 O que acontece na memória 5 Recursão Iteração 6 Soma em um Vetor 7 Números

Leia mais

Estruturas de Dados. Módulo 4 Funções. 9/8/2005 (c) Dept. Informática - PUC-Rio 1

Estruturas de Dados. Módulo 4 Funções. 9/8/2005 (c) Dept. Informática - PUC-Rio 1 Estruturas de Dados Módulo 4 Funções 9/8/2005 (c) Dept. Informática - PUC-Rio 1 Referências Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora Campus (2004)

Leia mais

Programação de Computadores II. Cap. 7 Cadeias de Caracteres 1/2

Programação de Computadores II. Cap. 7 Cadeias de Caracteres 1/2 Programação de Computadores II Cap. 7 Cadeias de Caracteres 1/2 Livro: Waldemar Celes, Renato Cerqueira, José Lucas Rangel. Introdução a Estruturas de Dados, Editora Campus (2004) Slides adaptados dos

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

Técnicas de projeto de algoritmos: Indução

Técnicas de projeto de algoritmos: Indução Técnicas de projeto de algoritmos: Indução ACH2002 - Introdução à Ciência da Computação II Delano M. Beder Escola de Artes, Ciências e Humanidades (EACH) Universidade de São Paulo dbeder@usp.br 08/2008

Leia mais

Recursão David Déharbe

Recursão David Déharbe Recursão David Déharbe 1 1 Objetivos da aula O conceito de recursão. Exemplos. Programação em C. 2 2 Roteiro da aula Revisão de funções; Motivação; Definição; Dois exemplos básicos; Recursão mútua; Dois

Leia mais

Programação de Computadores II. Cap. 7 Cadeias de Caracteres

Programação de Computadores II. Cap. 7 Cadeias de Caracteres Programação de Computadores II Cap. 7 Cadeias de Caracteres Livro: Waldemar Celes, Renato Cerqueira, José Lucas Rangel. Introdução a Estruturas de Dados, Editora Campus (2004) Slides adaptados dos originais

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

Programação de Computadores II. Recursividade

Programação de Computadores II. Recursividade Programação de Computadores II Recursividade Livro: Waldemar Celes, Reato Cerqueira, José Lucas Ragel. Itrodução a Estruturas de Dados, Editora Campus (2004) Slides adaptados dos origiais dos pros.: Marco

Leia mais

Programação Estruturada Prof. Rodrigo Hausen Organização e Gerenciamento de Memória

Programação Estruturada Prof. Rodrigo Hausen  Organização e Gerenciamento de Memória Programação Estruturada Prof. Rodrigo Hausen http://progest.compscinet.org Organização e Gerenciamento de Memória 1 AULA PASSADA - vetores ou arrays Declaração de um vetor (array) em C: tipo nome[tamanho];

Leia mais

Programação II. Ordenação (sort) Bruno Feijó Dept. de Informática, PUC-Rio

Programação II. Ordenação (sort) Bruno Feijó Dept. de Informática, PUC-Rio Programação II Ordenação (sort) Bruno Feijó Dept. de Informática, PUC-Rio Bubble Sort Bubble Sort Ordem Crescente Apenas de interesse didático e de referência A idéia é ir comparando dois vizinhos e trocando

Leia mais

Computadores Digitais 2. Prof. Rodrigo de Souza Couto

Computadores Digitais 2. Prof. Rodrigo de Souza Couto Computadores Digitais 2 Linguagens de Programação DEL-Poli/UFRJ Prof. Miguel Campista Aula de Hoje Tipos Estruturados Tipo estrutura Definição de novos tipos Aninhamento de Estruturas Vetores de estruturas

Leia mais

INTRODUÇÃO À LINGUAGEM C

INTRODUÇÃO À LINGUAGEM C INTRODUÇÃO À LINGUAGEM C Prof. Bruno Feijó, Dept. de Informática, PUC-Rio (2018) C foi criado no início da década de 70, quando os programas mais eficientes eram escritos em linguagem Assembly, bem próxima

Leia mais

INTRODUÇÃO À LINGUAGEM C

INTRODUÇÃO À LINGUAGEM C INTRODUÇÃO À LINGUAGEM C Prof. Bruno Feijó, Dept. de Informática, PUC-Rio (2018) C foi criado no início da década de 70, quando os programas mais eficientes eram escritos em linguagem Assembly, bem próxima

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/27 4 - INTROD. À ANÁLISE COMBINATÓRIA 4.1) Arranjos

Leia mais

Cap. 3 Entrada e Saída e Controle de Fluxo

Cap. 3 Entrada e Saída e Controle de Fluxo Programação de Computadores II Cap. 3 Entrada e Saída e Controle de Fluxo Livro: Waldemar Celes, Renato Cerqueira, José Lucas Rangel. Introdução a Estruturas de Dados, Editora Campus (2004) Slides adaptados

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

Recursividade. Prof. Jesus José de Oliveira Neto

Recursividade. Prof. Jesus José de Oliveira Neto Recursividade Prof. Jesus José de Oliveira Neto Algoritmos podem ser definidos de duas formas: Forma iterativa ou não recursiva: utiliza laços de repetição (while, for, do/while) Forma recursiva: métodos

Leia mais

Estruturas de Dados. Revisão de Funções e Recursão. Agradecimentos

Estruturas de Dados. Revisão de Funções e Recursão. Agradecimentos Estruturas de Dados Revisão de Funções e Recursão Prof. Ricardo J. G. B. Campello Agradecimentos Parte dos slides a seguir são adaptações dos originais em Pascal gentilmente cedidos pelo Prof. Rudinei

Leia mais

Recursão. Aula 1. Liana Duenha. Faculdade de Computação Universidade Federal de Mato Grosso do Sul

Recursão. Aula 1. Liana Duenha. Faculdade de Computação Universidade Federal de Mato Grosso do Sul Recursão Aula 1 Liana Duenha Faculdade de Computação Universidade Federal de Mato Grosso do Sul Algoritmos e Programação II, Análise de Sistemas, 2010 Martinez & Rubert (FACOM) Recursão APIIAS 1 / 25 Conteúdo

Leia mais

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

INTRODUÇÃO À LINGUAGEM C

INTRODUÇÃO À LINGUAGEM C INTRODUÇÃO À LINGUAGEM C Prof. Bruno Feijó, Dept. de Informática, PUC-Rio (2017) C foi criado no início da década de 70, quando os programas mais eficientes eram escritos em linguagem Assembly, bem próxima

Leia mais

INF1007: Programação 2 6 Ordenação de Vetores. 01/10/2015 (c) Dept. Informática - PUC-Rio 1

INF1007: Programação 2 6 Ordenação de Vetores. 01/10/2015 (c) Dept. Informática - PUC-Rio 1 INF1007: Programação 2 6 Ordenação de Vetores 01/10/2015 (c) Dept. Informática - PUC-Rio 1 Tópicos Introdução Ordenação bolha (bubble sort) Ordenação por seleção (selection sort) 01/10/2015 (c) Dept. Informática

Leia mais

Módulo 3 Controle de Fluxo

Módulo 3 Controle de Fluxo Estruturas de Dados Módulo 3 Controle de Fluxo 16/8/2005 (c) Marco A. Casanova - PUC-Rio 1 Referências Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora Campus

Leia mais

Computadores Digitais 2. Prof. Rodrigo de Souza Couto

Computadores Digitais 2. Prof. Rodrigo de Souza Couto Computadores Digitais 2 Linguagens de Programação DEL-Poli/UFRJ Prof. Miguel Campista Aula de Hoje Vetores e alocação dinâmica Vetores Alocação dinâmica Vetores locais e funções ATENÇÃO Esta apresentação

Leia mais

Introdução à Programação

Introdução à Programação Introdução à Programação Aula 08 Ponteiros Edirlei Soares de Lima Endereço de uma Variável Toda variável definida em um programa ocupa uma área de memória; A cada área de memória

Leia mais

Programação: Vetores

Programação: Vetores Programação de Computadores I Aula 09 Programação: Vetores José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2011-1 1/62 Motivação Problema Faça um programa que leia

Leia mais

Programação II. Vetor de Tipo Estruturado e Vetor de Ponteiros. Bruno Feijó Dept. de Informática, PUC-Rio

Programação II. Vetor de Tipo Estruturado e Vetor de Ponteiros. Bruno Feijó Dept. de Informática, PUC-Rio Programação II Vetor de Tipo Estruturado e Vetor de Ponteiros Bruno Feijó Dept. de Informática, PUC-Rio Vetores e Tipos Estruturados Dado um tipo estruturado T (com 3 campos, por exemplo), podemos ter

Leia mais

MC102 Algoritmos e Programação de Computadores

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

Leia mais

Estruturas de Dados. Módulo 11 Pilhas. 9/8/2005 (c) Dept. Informática - PUC-Rio 1

Estruturas de Dados. Módulo 11 Pilhas. 9/8/2005 (c) Dept. Informática - PUC-Rio 1 Estruturas de Dados Módulo 11 Pilhas 9/8/2005 (c) Dept. Informática - PUC-Rio 1 Referências Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora Campus (2004)

Leia mais

INF 1620 P1-13/09/02 Questão 1 Nome:

INF 1620 P1-13/09/02 Questão 1 Nome: INF 1620 P1-13/09/02 Questão 1 Considere que o cálculo da multa para o pagamento de um determinado imposto varia de acordo com a tabela a seguir: Valor do Imposto Original Multa por mês de atraso até R$

Leia mais

Módulo 5 Vetores e Alocação Dinâmica

Módulo 5 Vetores e Alocação Dinâmica Estruturas de Dados Módulo 5 Vetores e Alocação Dinâmica 1/9/2005 (c) Dept. Informática - PUC-Rio 1 Referências Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora

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/26 3 - INDUÇÃO E RECURSÃO 3.1) Indução Matemática 3.2)

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

Instituto de C. Linguagem C: Listas. Luis Martí Instituto de Computação Universidade Federal Fluminense -

Instituto de C. Linguagem C: Listas. Luis Martí Instituto de Computação Universidade Federal Fluminense - Instituto de C Linguagem C: Listas Luis Martí Instituto de Computação Universidade Federal Fluminense lmarti@ic.uff.br - http://lmarti.com Listas Encadeadas Definição Funções básicas Tópicos Principais

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

REVISÃO DE C. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

REVISÃO DE C. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos REVISÃO DE C Vanessa Braganholo Estruturas de Dados e Seus Algoritmos REVISÃO DE C Ponteiros Alocação dinâmica de memória Recursão INSTITUTO DE COMPUTAÇÃO - UFF 2 PONTEIROS PONTEIROS C permite o armazenamento

Leia mais

INF1007: Programação 2. 0 Revisão. 06/08/2015 (c) Dept. de Informática - PUC-Rio 1

INF1007: Programação 2. 0 Revisão. 06/08/2015 (c) Dept. de Informática - PUC-Rio 1 INF1007: Programação 2 0 Revisão 06/08/2015 (c) Dept. de Informática - PUC-Rio 1 Tópicos Principais Variáveis e Constantes Operadores e Expressões Entrada e Saída Tomada de Decisão Construção com laços

Leia mais

FUNÇÕES EM C Material adaptado da profa Silvana Maria Affonso de Lara

FUNÇÕES EM C Material adaptado da profa Silvana Maria Affonso de Lara Universidade do Estado de Minas Gerais - UEMG Curso de Engenharia da Computação FUNÇÕES EM C 1 Material adaptado da profa Silvana Maria Affonso de Lara ROTEIRO DA AULA Definição de Função Argumentos, retornos

Leia mais

INF 1007 Programação II

INF 1007 Programação II INF 1007 Programação II Aula 03 - Ponteiros Edirlei Soares de Lima Endereço de uma Variável Toda variável definida em um programa ocupa uma área de memória; A cada área de memória

Leia mais

Algoritmos e Programação

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

Leia mais

Programação de Computadores II. Cap. 17 Busca

Programação de Computadores II. Cap. 17 Busca Programação de Computadores II Cap. 17 Busca Livro: Waldemar Celes, Renato Cerqueira, José Lucas Rangel. Introdução a Estruturas de Dados, Editora Campus (2004) Slides adaptados dos originais dos profs.:

Leia mais

Variáveis, Tipos de Dados e Operadores

Variáveis, Tipos de Dados e Operadores ! Variáveis, Tipos de Dados e Operadores Engenharias Informática Aplicada 2.o sem/2013 Profa Suely (e-mail: smaoki@yahoo.com) VARIÁVEL VARIÁVEL É um local lógico, ligado a um endereço físico da memória

Leia mais

Cadeias de Caracteres (Strings)

Cadeias de Caracteres (Strings) INF1005: Programação 1 Cadeias de Caracteres (Strings) 02/05/10 (c) Paula Rodrigues 1 Tópicos Caracteres Cadeias de caracteres Leitura de caracteres e cadeias de caracteres Funções que manipulam cadeias

Leia mais

Programação de Computadores II. Cap. 5 Alocação Dinâmica

Programação de Computadores II. Cap. 5 Alocação Dinâmica Programação de Computadores II Cap. 5 Alocação Dinâmica Livro: Waldemar Celes, Renato Cerqueira, José Lucas Rangel. Introdução a Estruturas de Dados, Editora Campus (2004) Slides adaptados dos originais

Leia mais

Sub-rotinas David Déharbe

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

Leia mais

Módulo 7 Cadeias de Caracteres

Módulo 7 Cadeias de Caracteres Estruturas de Dados Módulo 7 Cadeias de Caracteres 9/8/2005 (c) Dept. Informática - PUC-Rio 1 Referências Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora

Leia mais

Introdução a Computação

Introdução a Computação Introdução a Computação Aula 03 Introdução a Linguagem C Edirlei Soares de Lima Programação Programa é um algoritmo escrito em uma linguagem de programação. Existem diversas linguagens

Leia mais

Exercícios Capítulos 5 e 6

Exercícios Capítulos 5 e 6 Estruturas de Dados Exercícios Capítulos e 6 6//6 (c) Dept. Informática - PUC-Rio Referências Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora Campus () Capítulo

Leia mais

Revisão: Tipo Abstrato de Dados Recursividade

Revisão: Tipo Abstrato de Dados Recursividade Algoritmos e Estrutura de Dados II Revisão: Tipo Abstrato de Dados Recursividade Prof a Karina Oliveira kkco@dei.unicap.br Introdução Estudo das estruturas de dados envolve dois objetivos complementares:

Leia mais

Linguagem C: Elementos fundamentais

Linguagem C: Elementos fundamentais Instituto de C Linguagem C: Elementos fundamentais Luis Martí Instituto de Computação Universidade Federal Fluminense lmarti@ic.uff.br - http://lmarti.com Tópicos Principais Variáveis e Constantes Operadores

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

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

Introdução à Programação C

Introdução à Programação C Introdução à Programação C Fabio Mascarenhas - 2014.2 http://www.dcc.ufrj.br/~fabiom/introc Um Sistema de Arquivos Suponha que queremos representar um sistema de arquivos em que temos arquivos e diretórios

Leia mais

Programação II. Vetores Bidimensionais e Vetores de Ponteiros. Bruno Feijó Dept. de Informática, PUC-Rio

Programação II. Vetores Bidimensionais e Vetores de Ponteiros. Bruno Feijó Dept. de Informática, PUC-Rio Programação II Vetores Bidimensionais e Vetores de Ponteiros Bruno Feijó Dept. de Informática, PUC-Rio Array (Vetor) Bidimensional 0 0 1 2 3 4 5 6 7 8 14 1 2 Array (Vetor) Bidimensional vs Ponteiros Quando

Leia mais

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

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

Leia mais

Laboratório de Programação - Exercícios 9, 10 e 11

Laboratório de Programação - Exercícios 9, 10 e 11 Laboratório de Programação - Exercícios 9, 10 e 11 Arrays e strings, Loops João Araujo Ribeiro jaraujo@uerj.br Universidade do Estado do Rio de Janeiro Departamento de Engenharia de Sistemas e Computação

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

Funções em C. Lucas Ferrari de Oliveira Professor Adjunto. Linguagem de Programação Estruturada I. Universidade Federal do Paraná

Funções em C. Lucas Ferrari de Oliveira Professor Adjunto. Linguagem de Programação Estruturada I. Universidade Federal do Paraná em C Linguagem de Programação Estruturada I Lucas Ferrari de Oliveira Professor Adjunto Universidade Federal do Paraná Sumário Funções: Conceitos; Forma Geral das funções; Regras de Escopo; Argumentos

Leia mais

Sumário. Introdução à Ciência da Computação. Ponteiros em C. Introdução. Definição. Por quê ponteiros são importantes?

Sumário. Introdução à Ciência da Computação. Ponteiros em C. Introdução. Definição. Por quê ponteiros são importantes? Introdução à Ciência da Computação Ponteiros em C Prof. Ricardo J. G. B. Campello Sumário Introdução Definição de Ponteiros Declaração de Ponteiros em C Manipulação de Ponteiros em C Operações Ponteiros

Leia mais

Programação II. Vetores e Alocação Dinâmica. Bruno Feijó Dept. de Informática, PUC-Rio

Programação II. Vetores e Alocação Dinâmica. Bruno Feijó Dept. de Informática, PUC-Rio Programação II Vetores e Alocação Dinâmica Bruno Feijó Dept. de Informática, PUC-Rio Vetores (arrays) Vetor: estrutura de dados definindo um conjunto enumerável Exemplo: v = vetor de inteiros com 10 elementos

Leia mais

ALGORITMOS E ESTRUTURAS DE DADOS CES-11

ALGORITMOS E ESTRUTURAS DE DADOS CES-11 ALGORITMOS E ESTRUTURAS DE DADOS CES-11 Prof. Paulo André Castro pauloac@ita.br Sala 110 Prédio da Computação www.comp.ita.br/~pauloac IECE - ITA Revisão CES-11 Tipos escalares primitivos Tipos constituídos

Leia mais

MC102 Aula 27 Recursão II

MC102 Aula 27 Recursão II MC102 Aula 27 Recursão II Instituto de Computação Unicamp 17 de Novembro de 2016 Roteiro 1 Recursão Relembrando 2 Cálculo de Potências 3 Torres de Hanoi 4 Recursão e Backtracking 5 Exercício (Instituto

Leia mais

Programação de Computadores II. Cap. 16 Ordenação

Programação de Computadores II. Cap. 16 Ordenação Programação de Computadores II Cap. 16 Ordenação Livro: Waldemar Celes, Renato Cerqueira, José Lucas Rangel. Introdução a Estruturas de Dados, Editora Campus (2004) Slides adaptados dos originais dos profs.:

Leia mais

INF1007: Programação 2. 4 Tipos Estruturados. 10/23/09 (c) Dept. Informática - PUC-Rio 1

INF1007: Programação 2. 4 Tipos Estruturados. 10/23/09 (c) Dept. Informática - PUC-Rio 1 INF1007: Programação 2 4 Tipos Estruturados 10/23/09 (c) Dept. Informática - PUC-Rio 1 Tópicos Principais Tipo estrutura Definição de novos tipos Aninhamento de estruturas Vetores de estruturas Vetores

Leia mais

Waldemar Celes e Roberto Ierusalimschy. 29 de Fevereiro de 2012

Waldemar Celes e Roberto Ierusalimschy. 29 de Fevereiro de 2012 Capítulo 5: Repetições Waldemar Celes e Roberto Ierusalimschy 29 de Fevereiro de 2012 1 Construção de laços Uma das principais características de um computador é sua capacidade para realizar cálculo e

Leia mais

Encapsulamento de Código: Funções e Procedimentos

Encapsulamento de Código: Funções e Procedimentos Luciano Moraes Da Luz Brum Universidade Federal do Pampa Unipampa Campus Bagé email: lucianobrum18@gmail.com Encapsulamento de Código: Funções e Procedimentos Sumário Introdução à Funções e Procedimentos

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

SCC Capítulo 2 Recursão

SCC Capítulo 2 Recursão SCC-501 - Capítulo 2 João Luís Garcia Rosa 1 1 Departamento de Ciências de Computação Instituto de Ciências Matemáticas e de Computação Universidade de São Paulo - São Carlos http://www.icmc.usp.br/~joaoluis

Leia mais

Aula 18: Funções em C

Aula 18: Funções em C Aula 18: Funções em C Fernanda Passos Universidade Federal Fluminense Programação de Computadores IV Fernanda Passos (UFF) Funções em C Programação de Computadores IV 1 / 38 Agenda 1 Revisão e Contexto

Leia mais

Programação Estruturada Prof. Rodrigo Hausen VAMOS USAR O LINUX. SE TIVER ENTRADO NO WINDOWS, REINICIE O COMPUTADOR.

Programação Estruturada Prof. Rodrigo Hausen   VAMOS USAR O LINUX. SE TIVER ENTRADO NO WINDOWS, REINICIE O COMPUTADOR. Programação Estruturada Prof. Rodrigo Hausen http://progest.compscinet.org Expressões e Funções VAMOS USAR O LINUX. SE TIVER ENTRADO NO WINDOWS, REINICIE O COMPUTADOR. 1 TIPOS PRIMITIVOS EM C Numéricos:

Leia mais

Aula 12: Funções. CI208 - Programação de Computadores. Prof. MSc. Diego Roberto Antunes

Aula 12: Funções. CI208 - Programação de Computadores. Prof. MSc. Diego Roberto Antunes CI208 - Programação de Computadores Aula 12: Funções Prof. MSc. Diego Roberto Antunes diegor@inf.ufpr.br www.inf.ufpr.br/diegor Universidade Federal do Paraná Setor de Ciências Exatas Departamento de Informática

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

Matemática Discreta Bacharelado em Sistemas de Informação Resolução - 4ª Lista de Exercícios. Indução e Recursão

Matemática Discreta Bacharelado em Sistemas de Informação Resolução - 4ª Lista de Exercícios. Indução e Recursão 1) Prove utilizando o princípio da indução matemática, que são verdadeiras as seguintes igualdades: a) 1+4+7+...+(3n 2) Para n 1 temos que: 3.1 2. 1 1 da indução é Supondoo que a igualdade nk seja verdadeira,

Leia mais

Módulo 8 Tipos Estruturados

Módulo 8 Tipos Estruturados Estruturas de Dados Módulo 8 Tipos Estruturados 9/8/2005 (c) Dept. Informática - PUC-Rio 1 Referências Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora Campus

Leia mais

Computadores Digitais 2. Prof. Rodrigo de Souza Couto

Computadores Digitais 2. Prof. Rodrigo de Souza Couto Computadores Digitais 2 Linguagens de Programação DEL-Poli/UFRJ Prof. Miguel Campista Aula de Hoje Arquivos Funções para abrir e fechar arquivos Arquivos em modo texto Arquivos em modo binário ATENÇÃO

Leia mais

Estruturas de Dados. Módulo 17 - Busca. 2/6/2005 (c) Dept. Informática - PUC-Rio 1

Estruturas de Dados. Módulo 17 - Busca. 2/6/2005 (c) Dept. Informática - PUC-Rio 1 Estruturas de Dados Módulo 17 - Busca 2/6/2005 (c) Dept. Informática - PUC-Rio 1 Referências Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora Campus (2004)

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

3 Função - conceitos gerais 45

3 Função - conceitos gerais 45 UFF/GMA - Matemática Básica - Parte III - Função Notas de aula - Marlene - 010-44 Sumário III Função: conceitos erais 45 3 Função - conceitos erais 45 3.1 Conceito e representação simbólica de unção...............................

Leia mais

Capítulo 1: Introdução à Linguagem C. Pontifícia Universidade Católica Departamento de Informática

Capítulo 1: Introdução à Linguagem C. Pontifícia Universidade Católica Departamento de Informática Capítulo 1: Introdução à Linguagem C Pontifícia Universidade Católica Departamento de Informática Programa Programa é um algoritmo escrito em uma linguagem de programação. No nosso caso, a linguagem C.

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

Algoritmia. "Conta-me e eu esqueço-me Mostra-me e eu lembro-me Deixa-me fazer e eu aprendo" Confúcio

Algoritmia. Conta-me e eu esqueço-me Mostra-me e eu lembro-me Deixa-me fazer e eu aprendo Confúcio Algoritmia "Conta-me e eu esqueço-me Mostra-me e eu lembro-me Deixa-me azer e eu aprendo" Conúcio ISPGaya 2005/2006 Inormática de Gestão 2.º ano Programação 1 Algoritmo Um algoritmo é uma sequência inita

Leia mais

Computadores Digitais 2. Prof. Rodrigo de Souza Couto

Computadores Digitais 2. Prof. Rodrigo de Souza Couto Computadores Digitais 2 Linguagens de Programação DEL-Poli/UFRJ Prof. Miguel Campista Tópicos Listas Encadeadas Introdução às listas encadeadas Manipulação de elementos Implementações recursivas Listas

Leia mais

SCC0601 Projeto de Algoritmos. Recursão

SCC0601 Projeto de Algoritmos. Recursão SCC0601 Projeto de Algoritmos Recursão Definição Uma função é dita recursiva quando é definida em seus próprios termos, direta ou indiretamente Dicionário Michaelis: ato ou efeito de recorrer Recorrer:

Leia mais

Listas Encadeadas. Fabrício J. Barth. BandTec - Faculdade de Tecnologia Bandeirantes

Listas Encadeadas. Fabrício J. Barth. BandTec - Faculdade de Tecnologia Bandeirantes Listas Encadeadas Fabrício J. Barth BandTec - Faculdade de Tecnologia Bandeirantes Fevereiro de 2011 Tópicos Principais Motivação Listas encadeadas Implementações recursivas Listas de tipos estruturados

Leia mais

MAC2166 Introdução à Computação para Engenharia Escola Politécnica Segunda Prova 19 de maio de 2008

MAC2166 Introdução à Computação para Engenharia Escola Politécnica Segunda Prova 19 de maio de 2008 MAC2166 Introdução à Computação para Engenharia Escola Politécnica Segunda Prova 19 de maio de 2008 Nome: Assinatura: N ō USP: Turma: Instruções: Professor: 1. Não destaque as folhas deste caderno. 2.

Leia mais

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

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

Leia mais

Programação II. Tipos Estruturados

Programação II. Tipos Estruturados Programação II Tipos Estruturados Parte 1: struct Parte 2: Ponteiros para Estrutura Estruturas e Memória Bruno Feijó Dept. de Informática, PUC-Rio struct Dados Compostos Até agora tipos simples: char,

Leia mais

3. Linguagem de Programação C

3. Linguagem de Programação C Introdução à Computação I IBM1006 3. Linguagem de Programação C Prof. Renato Tinós Departamento de Computação e Matemática (FFCLRP/USP) 1 Principais Tópicos 3.7. Funções 3.7.1. Introdução 3.7.2. Uso de

Leia mais

Algoritmos e Estruturas de dados

Algoritmos e Estruturas de dados Algoritmos e Estruturas de dados Listas Encadeadas Prof. Dr. Fábio Rodrigues de la Rocha (Listas Encadeadas) 1 / 21 Definição: Anteriormente estudamos listas encadeadas que foram implementadas como vetores

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

Programação II. Listas Encadeadas (Linked Lists) Bruno Feijó Dept. de Informática, PUC-Rio

Programação II. Listas Encadeadas (Linked Lists) Bruno Feijó Dept. de Informática, PUC-Rio Programação II Listas Encadeadas (Linked Lists) Bruno Feijó Dept. de Informática, PUC-Rio Vetores vs Estruturas Dinâmicas Vetores (arrays): Ocupa um espaço contíguo de memória Permite acesso randômico

Leia mais