Métodos de Programação I Ana Maria de Almeida 92. Um objecto (uma função, um método) diz-se recorrente se é definido em termos de si próprio.

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

Download "Métodos de Programação I Ana Maria de Almeida 92. Um objecto (uma função, um método) diz-se recorrente se é definido em termos de si próprio."

Transcrição

1 Métodos de Programação I Ana Maria de Almeida Recorrência Um objecto (uma função, um método) diz-se recorrente se é definido em termos de si próprio. Figura 3.6: Triangulo de Serpinski (imagem recorrente) Um exemplo matematicamente famoso de uma definição recorrente é o da função factorial de n (sendo n um inteiro não negativo): o factorial de n é o produto do próprio valor de n pelo factorial de n 1, onde, por convenção, se decidiu que factorial de zero é um. Formalmente temos, { n (n 1)! se n 1 n! = 1 se n = 0 Um algoritmo iterativo para, dado n IN, calcular o seu factorial poderia, então, ser: Algoritmo Iterativo para o cálculo de factorial: Dados: n do tipo inteiro não-negativo Saída: Valor de n! fact 1; para i a variar de 1 a n: fact fact * i; devolver valor de fact; Cuja implementação seria dada por: Implementação Iterativa para o Cálculo de Factorial: function factorial (n : 0..Maxint): 0..Maxint; var fact : integer; i : 1..Maxint; {inicializacao de fact ao valor de 0!} fact := 1; for i:=1 to n do {calculo de n! se n>0} fact := fact * i; { fact = n! se n>=0 } factorial := fact;

2 Métodos de Programação I Ana Maria de Almeida 93 No entanto, este algoritmo (e este subprograma) nada tem de recorrente: efectua n iterações e, em cada uma, actualiza o valor de uma variável, multiplicando-lhe o valor i da iteração actual. Assim, este algoritmo implementa a fórmula iterativa que diz que o valor do factorial é o produto de todos os naturais inferiores ou iguais a n, ou seja, n! = (n 1) n Como calcular o valor de n! recorrentemente? Nada mais simples: basta implementar directamente a fórmula recorrente anteriormente apresentada, como se pode ver a seguir: Implementação Recorrente para o Cálculo de Factorial: function factorialr (n : 0..Maxint): 0..Maxint; if n = 0 then factorialr := 1 else factorialr := n * factorial(n-1); Notas: 1. Observe que o identificador da função (factorialr) aparece várias vezes no bloco da função: duas vezes do lado esquerdo de instruções de atribuição e uma vez do lado direito. Quando aparece do lado esquerdo é a instrução necessária para atribuir um valor para a function factorialr devolver para o exterior (uma quando sai do braço do then outra para quando sai pelo braço do else), logo, não tem (nem deve ter) parentesis e/ou parâmetros. Para construir a solução recorrente é, obviamente, necessário fazer uma chamada recorrente à própria função, o que acontece no else, quando, no lado direito da instrução de atribuição, efectuamos a chamada recorrente, logo, com o necessário valor de parâmetro que permite calcular o valor (ainda) em falta. 2. A chamada recorrente diminui o tamanho do que é necessário calcular: na entrada da função temos um parâmetro de valor n e a chamada recorrente é feita usando um valor menor: n 1. A versão recorrente de um algoritmo é, muitas vezes, mais simples, clara e elegante do que a correspondente versão iterativa, como se pode ver pelo exemplo que se segue. Para calcular o máximo divisor comum entre dois números inteiros não negativos, a, b IN, podemos usar o Algoritmo de Euclides, que se baseia nas propriedades seguintes,: P1) mdc(a, 0) = a P2) mdc(a, b) = mdc(b, a mod b) se b 0

3 Métodos de Programação I Ana Maria de Almeida 94 Implementação Recorrente para o Cálculo do Máximo Divisor Comum: function mdcrec (a, b : 0..Maxint): 0..Maxint; var aux: 0..Maxint; if b=0 then mdcrec = a { usando P1 } else mdcrec := mdcrec(b, a mod b) { usando P2 } Implementação Iterativa para o Cálculo do Máximo Divisor Comum: function mdcite (a, b : 0..Maxint): 0..Maxint; var aux: 0..Maxint; while b <> 0 do aux := a mod b; a := b; b := aux; {fim while} mdcite := a Claramente, enquanto que a versão recorrente é concisa e reflecte directamente as propriedades expressas atrás, o código da versão iterativa é muito mais hermético e requer algum tempo para se perceber o que está a fazer (Experimente!). Exercício: Implemente a versão original do Algoritmo de Euclides, Para calcular o máximo divisor comum entre dois números, subtraia o menor ao maior, até ficarem iguais. quer recorrentemente, quer iterativamente. A resolução recorrente pode, ainda, evitar o uso de estruturas auxiliares para guardar temporariamente informação. Por exemplo, imagine que necessita de implementar um módulo que leia uma palavra (terminada por um espaço em branco), e escreva as suas letras por ordem inversa. Uma solução iterativa necessita de conhecer todas as letras da palavra para poder começar a inverter. Assim, seria necessário ler toda a palavra e guardar, por exemplo, num vector de caracteres, as letras lidas.

4 Métodos de Programação I Ana Maria de Almeida Dim e x e m p l o /... / fim Após o término da leitura, poderíamos começar a escrever essas letras, do fim (última posição que guardou letra) para o ínicio, obtendo, assim, o desejado efeito de inversão. Este vector tem, como qualquer tabela, que ser declarado como um array com um dado tamanho fixo. Neste exemplo, usamos uma estrutura de tabela com índices a variar de 1 a Dim, onde esta última dimensão será um valor constante pré declarado. Obviamente, ninguém sabe, à partida, quantos caracteres vão ser lidos, por isso, se pensarmos em manter este algoritmo o mais geral possível, devemos fazer uma previsão por excesso do número máximo de caracteres admitidos e, portanto, podemos fixar, por exemplo, dim = 100. É, no entanto, fácil de imaginar que, de um modo geral, na maior parte das vezes, a tabela vai ter um valor fim muito menor de que 100. Em conclusão, usamos uma estrutura que vai desperdiçar, em geral, memória, só como auxiliar na resolução da escrita invertida de uma palavra. Se usarmos a recorrência, não é necessário usar qualquer tipo de memória auxiliar, senão veja-se o seguite algoritmo e respectiva implementação: Algoritmo Recorrente para a Escrita Invertida de uma palavra: Inverter: ler a próxima letra; se letra não é um espaço em branco então Inverter o resto da palavra); escrever letra; Implementação: procedure inverter; var letra:char; read(letra); if letra <> write(letra:1) then inverter; A versão recorrente é mais eficiente em termos de memória pois vai usar, exactamente, tantos caracteres quantos os necessários para inverter a palavra, nem mais, nem menos. Note que o algoritmo recorrente apresentado, só vai construir a solução após o final da chamada ao procedimento inverter. Ou seja, vai fazendo sucessivas chamadas recorrentes e, quando chega ao fim da palavra (encontra um espaço em branco), pára de recorrer a si mesmo e, imediatamente

5 Métodos de Programação I Ana Maria de Almeida 96 antes de sair do bloco, escreve a letra que tinha guardado. Este método de construção da solução é denominado Recorrência com construção à saída. Vejamos outro exemplo bastante simples e, também, de inversão: escrever, por ordem inversa, os dígitos de um dado número inteiro. Neste caso, é dado o número, pelo que não necessitamos de ler (recolher) informação, bastando passar à inversão própriamente dita. Temos, então, o seguinte algoritmo: Algoritmo Recorrente para a Escrita Invertida dos dígitos de um dado número: Dados: n IN Saída: escrita invertida dos dígitos de n Inverter(numero): escrever o último dígito; se ainda houver dígitos então Inverter(resto do número); Implementação: procedure inverten(numero: 0..MaxInt); var aux: 0..Maxint; write(numero mod 10:1); aux := numero div 10; if aux <> 0 then inverten(aux); Mais uma vez, temos uma solução extremamente simples e engenhosa para resolver o problema dado, só que, agora, a solução foi construída à entrada do procedimento e, só depois, se faz chamada recorrente: este método pode ser denominado por Recorrência com construção à entrada. Na verdade, a recorrência é um modo bastante confortável de raciocinar. Quando temos um problema a resolver com dimensão n, pensamos no seguinte modo: conseguir resolver um passo simples e deixar a recorrência tratar os restantes n 1 passos. Assim, como regras práticas para a elaboração correcta de uma solução recorrente temos as seguintes: 1. Definir o problema em termos de um problema do mesmo tipo mas de menor dimensão 2. Aplicar a recorrência aos restantes n 1 passos. Obviamente que, se não assegurarmos que existe um caso especial que obrigue a recorrência a parar, vamos ter programas infinitos (que só páram quando esgotarem todos os recursos da máquina). Assim, como regras práticas para a elaboração correcta de uma solução recorrente temos as seguintes:

6 Métodos de Programação I Ana Maria de Almeida Definir o problema em termos de um problema do mesmo tipo mas de menor dimensão. 2. Identificar (pelo menos) um caso particular que possa servir como caso de paragem para a recorrência (isto é, onde não seja necessário fazer uma chamada recorrente). 3. Garantir que o modo como o tamanho do problema, na chamada recorrente, diminui, garante atingir o caso de paragem. Exercícios: Construa uma solução recorrente pura, isto é, sem ciclos, para escrever uma figura como a abaixo (cuja altura pde variar entre 1 e 9): Pesquisa Recorrente Existem algoritmos típicos (cuja versão iterativa, de resto, já conhecemos 1 ) que podem ser (re)escritos de forma recorrente. Nomeadamente, os algoritmos de pesquisa de pertença de um dado elemento a uma dada tabela prestam-se, de um modo bastante natural, a este tipo de estratégia de computação, como podemos ver em seguida. Pesquisa Recorrente numa Tabela Suponha-se dada uma tabela de valores inteiros, v[1..n] (onde n DimM ax). Considere-se também um dado valor inteiro, numx. Pretende-se devolver uma resposta booleana para saber se o valor numx pertence, ou não, a v e, caso pertença, qual a posição em que foi encontrado. Algoritmo Recorrente para a Pesquisa (numa tabela qualquer): Dados: numx ZZ e v[1..n], de elementos inteiros e com n DimMax Saída: falso numx v[1..n] e verdadeiro se i {1,..., n} : numx = v[i] Ora, a pesquisa vai ter que passar a tabela, posição a posição, para verificar a igualdade entre o elemento respectivo e o valor dado, parando assim que for detectada uma igualdade. O 1 Ver páginas 42 a 45 do Capítulo 2.

7 Métodos de Programação I Ana Maria de Almeida 98 algoritmo vai ser, então, extremamente simples pois, pesquisar recorrentemente a tabela é escolher uma posição para verificar (a primeira ou a última): se for igual parar e devolver índice; senão, pesquisar o resto da tabela. Ou seja, escolhendo a última posição com informação útil da tabela: Pesquisar(numx em v[1..n]): se numx = v[n] devolver n; senã o devolver pesquisar(numx em v[1..n 1]) Tendo em atenção as regras práticas para a construção recorrente de uma solução, vemos que, de facto, dado um n positivo, a chamada recorrente diminui de uma unidade a dimensão total do problema. No entanto, será que garantimos que, para todos os casos possíveis, está assegurada a paragem da recorrência? Na verdade, só garantimos a paragem da recorrência se encontrarmos um valor igual ao procurado mas, se esse valor não pertencer à tabela dada, temos que parar de chamar assim que isso se tornar notório. Neste caso, sabemos que já percorremos toda a tabela quando n < 1, logo, só fazemos algum tipo de trabalho na chamada à pesquisa se e só se n 1. Finalmente, uma proposta de implementação completa pode ser a seguinte: Implementação: procedure pesquisar(num: integer; v : vector; dim : 0..DimMax; var posicao : 0..DimMax); if dim >= 1 { se ainda existem elementos nao vistos no vector } then if v[dim] = num then posicao := dim else pesquisar(num, v, dim-1, posicao) else posicao := 0; Esta versão, apesar de correcta, não é muito eficiente pois, como vimos já nas aulas teóricas, a recorrência vai abrindo, com cada nova chamada recorrente, mais um novo bloco de execução, mantendo as chamadas anteriores abertas até as conseguir fechar, uma a uma, do interior para o exterior. Para cada chamada que fica pendente até poder fechar, são feitas cópias de todos os parâmetros e de todas as variáveis locais. Por exemplo, na implementação anterior, se o vector tiver 1000 posições, (ou seja, se DimMax = 1000) e se o valor a pesquisar não se encontrar na lista, serão feitas 1000 chamadas recorrentes, donde a memória ocupada para a resolução desta pesquisa será, aproximadamente, inteiros devido a cópias de vector 1000 inteiros devido a cópias de num inteiros devido a cópias de dim unidades de memória para inteiros

8 Métodos de Programação I Ana Maria de Almeida 99 O que é uma quantidade enorme de memória usada quando só precisamos de uma resposta simples. Se notarmos que, em cada chamada recorrente, apenas alteramos o parâmetro n, podemos reescrever este algoritmo do modo seguinte. Implementação de Pesquisa com Recorrência Encapsulada: procedure pesquisa(num: integer; v : vector; dim : 0..DimMax; var posicao : 0..DimMax); function pesq(n : integer): integer; { pesquisa num em v[1..n] } if n >= 1 { se ainda existem elementos nao vistos no vector } then if v[n] = num then pesq := n else pesq := pesq(n-1) end else pesq := 0; { fim pesq } posicao := pesq(dim); { fim pesquisa } Assim, escondemos a recorrência no interior do procedimento pesquisar, usando um módulo auxiliar realmente recorrente, neste caso a função pesq, onde v e num funcionam como constantes globais às diferentes chamadas recorrentes. Deste modo, não é, portanto, preciso copiar nada, a não ser o único paraâmetro que é, de facto, alterado com a estratégia recorrente: a última posição a testar no momento. A este método de implementação da recorrência chamamos (como se pode adivinhar pelo cabeçalho desta implementação) Recorrência Encapsulada Pesquisa Recorrente numa Tabela Ordenada Um outro exemplo para o uso da recorrência encapsulada vem da implementação recorrente da pesquisa binária. Mais uma vez, e se formos observar com atenção o modo como descrevemos a estratégia deste método, ele é claramente recorrente 2, pelo que a sua transcrição para um algoritmo não iterativo é muito directa. 2 Ver páginas 43 a 45 do capítulo 2.

9 Métodos de Programação I Ana Maria de Almeida 100 Algoritmo Recorrente para a Pesquisa Binária (tabela ordenada): Dados: numx ZZ e v[1..n], de elementos inteiros e com n DimMax Saída: falso numx v[1..n] e verdadeiro se i {1,..., n} : numx = v[i] Pesquisar(numx em v[i..j]): se j >= i então: se numx = v[meio] devolver meio; senão: se numx < v[meio] pesquisar(numx em v[i..meio 1]); senão: pesquisar(numx em v[meio + 1..j]) Implementação de Pesquisa binária: procedure pesquisa(num: integer; v : vector; dim : 0..DimMax; var posicao : 0..DimMax); function pesqb(esq, dir : integer): integer; { pesquisa bin aria num em v[esq..dir] } var meio : 0..DimMax; if esq <= dir { se ainda ha + elementos no vector } then meio := (esq+dir) div 2; if v[meio] = num then pesqb := meio else if v[meio] > num then pesqb := pesqb(esq, meio-1) else pesqb := pesqb(meio+1, dir); end else pesqb := 0; { fim pesqb } posicao := pesq(dim); { fim pesquisar } Note-se que, mais uma vez se recorreu ao encapsulamento da recorrência para evitar cópias desnecessárias. Deve notar-se ainda que, o procedimento principal de pesquisa é exactamente igual ao anterior, só mudando o módulo interior, que efectua (recorrentemente) a pesquisa propriamente dita.

Métodos de Ordenamento e

Métodos de Ordenamento e Capítulo 3 Métodos de Ordenamento e Recorrência 3.1 Métodos de Ordenamento Uma das tarefas elementares na maioria dos programas computacionais é a de pesquisar um dado elemento num agregado de informação.

Leia mais

Capítulo VII : A Recorrência

Capítulo VII : A Recorrência Capítulo VII : A Recorrência 1 _ Capítulo VII : A Recorrência Quando algo é definido em termos de si próprio. Ex1: O Tetraedro de Sierpinski Ex2: Fracções Contínuas Ex3: A Carpete de Sierpinski Ex4: A

Leia mais

termo Para resolver o problema, basta construir um Módulo (procedimento) para cada uma das definições: factor termo enquanto '+' ou '-'

termo Para resolver o problema, basta construir um Módulo (procedimento) para cada uma das definições: factor termo enquanto '+' ou '-' Capítulo VII : A Recorrência 17 _ Para resolver o problema, basta construir um Módulo (procedimento) para cada uma das definições: expressão termo termo enquanto '+' ou '-' termo escrever operador factor

Leia mais

tipoveiculo = (bicicleta, motociclo, motorizada, automovel, autocomreb, camioneta, autocarro, camiao, reboque); veiculo : tipoveiculo;

tipoveiculo = (bicicleta, motociclo, motorizada, automovel, autocomreb, camioneta, autocarro, camiao, reboque); veiculo : tipoveiculo; Métodos de Programação I Departamento de Matemática, FCTUC 38 type var tipoveiculo = (bicicleta, motociclo, motorizada, automovel, autocomreb, camioneta, autocarro, camiao, reboque); veiculo : tipoveiculo;

Leia mais

Métodos de Programação I Ana Maria de Almeida

Métodos de Programação I Ana Maria de Almeida Métodos de Programação I 2. 35 2.10 O TIPO ESTRUTURADO TABELA (ARRAY) A estruturação de informação introduz uma nova dimensão no poder e complexidade dos nossos programas que, ao mesmo tempo que amplia

Leia mais

Procedimento. Função. Selecção Condicional - a instrução if-then-else. expressão if lógica then instrução else instrução

Procedimento. Função. Selecção Condicional - a instrução if-then-else. expressão if lógica then instrução else instrução Métodos de Programação I 2. 20 2.2.8 ESTRUTURAS DE CONTROLO Estruturas de controlo são instruções especiais em Pascal que permitem controlar o fluxo de sequência de instruções, alterando a ordem sequencial

Leia mais

2.2.5 EXPRESSÕES - Regras para o cálculo de valores

2.2.5 EXPRESSÕES - Regras para o cálculo de valores Métodos de Programação I Departamento de Matemática, FCTUC 30 2.2.5 EXPRESSÕES - Regras para o cálculo de valores As expressões fornecidas ao computador, quer tenham variáveis, constantes ou apenas literais,

Leia mais

Pesquisa: operação elementar

Pesquisa: operação elementar Pesquisa: operação elementar uma das operações mais usadas em programação pesquisas em: vectores, matrizes, tabelas de registos, ficheiros, tipos de dados estruturados (hierarquicos),... necessidade de

Leia mais

Ciclo com Contador : instrução for. for de variável := expressão to. expressão do instrução

Ciclo com Contador : instrução for. for de variável := expressão to. expressão do instrução Métodos de Programação I 2. 27 Ciclo com Contador : instrução for identificador downto for de variável := expressão to expressão do instrução UMA INSTRUÇÃO (SIMPLES OU COMPOSTA) Neste caso o ciclo é repetido

Leia mais

Métodos de Programação I Ana Maria de Almeida

Métodos de Programação I Ana Maria de Almeida Métodos de Programação I 2. 13 type naipe = ( ouros, copas, paus, espadas ); var trunfo : naipe; Claro que são apenas identificadores e não existirá a mesma escolha de operadores e funções sobre eles que

Leia mais

Análise e Desenvolvimento de Algoritmos (2006/2007)

Análise e Desenvolvimento de Algoritmos (2006/2007) Análise e Desenvolvimento de Algoritmos (2006/2007) Alguns desenvolvimentos em série de Taylor: e x = 1 + x + x2 2! + x3 3! + + xn n! +, x IR sin(x) = x x3 3! + x5 5! x7 7! +, x IR cos(x) = 1 x2 2! + x4

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

Capítulo V : Um Tipo Estruturado de Dados: o array

Capítulo V : Um Tipo Estruturado de Dados: o array Capítulo V : A Linguagem Pascal Um Tipo Estruturado de Dados: o array 1 _ Capítulo V : Um Tipo Estruturado de Dados: o array Ex1: Vector, Variável com um índice, Tabela unidimensional. var x : array [0..7]

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

Informática para Ciências e Engenharias 2013/14. Teórica 7

Informática para Ciências e Engenharias 2013/14. Teórica 7 Informática para Ciências e Engenharias 2013/14 Teórica 7 Na aula de hoje... Controlo de execução ciclos condicionais while end Exemplos raiz quadrada histograma fórmula química while while e matrizes

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

5. Expressões aritméticas

5. Expressões aritméticas 5. Expressões aritméticas 5.1. Conceito de Expressão O conceito de expressão em termos computacionais está intimamente ligado ao conceito de expressão (ou fórmula) matemática, onde um conjunto de variáveis

Leia mais

Capítulo VI : Subprogramas

Capítulo VI : Subprogramas Capítulo VI : Subprogramas 1 _ Capítulo VI : Subprogramas Subdivisão dos programas em unidades funcionais. Procedimento (procedure): realiza uma acção Função (function) : calcula e fornece um valor 5.1.

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

Informática para Ciências e Engenharias 2014/15. Teórica 7

Informática para Ciências e Engenharias 2014/15. Teórica 7 Informática para Ciências e Engenharias 2014/15 Teórica 7 Na aula de hoje... Controlo de execução ciclos condicionais while end Exemplos raiz quadrada histograma fórmula química while while e matrizes

Leia mais

Tipos de Dados Dinâmicos

Tipos de Dados Dinâmicos Tipos de Dados Dinâmicos Manipular uma lista de nomes de alunos: como? Tipo de dados Registo com: nome notas de trabalhos assiduidade nota final Representação para a Lista???? MP II, 2006/2007 p.1/20 Hipótese

Leia mais

Capítulo V : A Linguagem Pascal Um Tipo Estruturado de Dados: o array 18. Para limite de n até 2 (* passagens de 1 até (n-1) *)

Capítulo V : A Linguagem Pascal Um Tipo Estruturado de Dados: o array 18. Para limite de n até 2 (* passagens de 1 até (n-1) *) Capítulo V : A Linguagem Pascal Um Tipo Estruturado de Dados: o array 18 _ Métodos de Ordenamentos: Borbulhamento (BubbleSort) Estratégia: Os elementos de um vector a[1..n] estão dispostos por ordem não

Leia mais

10 a Aula - Operadores de Molde ( Casting ). Atribuição de Memória. Ponteiros. Enumerados. Mestrado em Engenharia Física Tecnológica

10 a Aula - Operadores de Molde ( Casting ). Atribuição de Memória. Ponteiros. Enumerados. Mestrado em Engenharia Física Tecnológica 10 a Aula - Operadores de Molde ( Casting ). Atribuição de Memória. Ponteiros. Enumerados. Programação Mestrado em Engenharia Física Tecnológica Samuel M. Eleutério sme@tecnico.ulisboa.pt Departamento

Leia mais

SSC304 Introdução à Programação Para Engenharias

SSC304 Introdução à Programação Para Engenharias Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Sistemas de Computação Introdução à Para Engenharias Algoritmos e Lógica de GE4 Bio GE4Bio Grupo de Estudos em

Leia mais

SEBENTA INTRODUÇÃO Á ALGORITMIA

SEBENTA INTRODUÇÃO Á ALGORITMIA SEBENTA INTRODUÇÃO Á ALGORITMIA O desenvolvimento de programas para computador está sempre baseado na tarefa de programar um computador para seja resolvido um problema ou executada uma função e assim dar

Leia mais

Linguagem e Técnicas em Programação. Gilson de Souza Carvalho

Linguagem e Técnicas em Programação. Gilson de Souza Carvalho Gilson de Souza Carvalho gaucho.gilson@hotmail.com 3.1.3 Condições compostas Linguagem e Técnicas em Programação As condições que vimos até agora sempre foram únicas. Entretanto, conforme aumenta a complexidade

Leia mais

Laços de repetição for, while, do-while

Laços de repetição for, while, do-while Computação Eletrônica Laços de repetição for, while, do-while Prof: Luciano Barbosa Estruturas de Repetição Imagine um programa que calcula a média de um aluno. Este programa é bastante simples, bastaria:

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

Introdução à Computação II Unesp Rio Claro 2012Prof. Rafael Oliveira

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

Leia mais

Métodos de Programação I Ana Maria de Almeida

Métodos de Programação I Ana Maria de Almeida Métodos de Programação I 2. 47 nota, media : 0..20; cadeira : 1.. 5; total : 0.. 100; for aluno:=1 to 50 do (* ler e escrever o nome *) compnome := 0; repeat read(proxcar); write(proxcar); compnome :=

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

Estrutura de Dados Polinómio

Estrutura de Dados Polinómio Estrutura de Dados Polinómio Estrutura de Dados: representação computacional + algorimos especializados Estrutura de Dados Polinómio P n (x) = nx a i x i i=0 Logo, Polinómio tem uma estrutura recorrente:

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

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

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

Variáveis e instruções de repetição

Variáveis e instruções de repetição Variáveis e instruções de repetição Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual

Leia mais

Pascal. -Cabeçalho do programa. - label - const - type - var - procedure - function. - integer - real - byte - boolean - char - string

Pascal. -Cabeçalho do programa. - label - const - type - var - procedure - function. - integer - real - byte - boolean - char - string Pascal -Cabeçalho do programa Áreas do programa -Área de declarações -Corpo do programa - label - const - type - var - procedure - function - integer - real - byte - boolean - char - string Program

Leia mais

Critérios de Correcção. Informática

Critérios de Correcção. Informática Prova de Avaliação da Capacidade de Maiores de 23 anos para Frequência dos Cursos Superiores do IPCA Critérios de Correcção 2009/2010 Informática Duração: 2 h 00 m Sem consulta Data: 3 / 06 / 2009 Cotações:

Leia mais

Linguagem e Técnicas em Programação. Gilson de Souza Carvalho

Linguagem e Técnicas em Programação. Gilson de Souza Carvalho Gilson de Souza Carvalho gaucho.gilson@hotmail.com 4.3 Comandos de repetição encadeados Apesar de seguir o mesmo padrão de encadeamento de outros comandos já vistos, a utilização de comandos de repetição

Leia mais

Estruturas de Repetição

Estruturas de Repetição Algoritmos e Estruturas de Dados I (DCC/003) Estruturas de Repetição Aula Tópico 4 (while, for) 1 Problema 10 Suponha que soma (+) e subtração (-) são as únicas operações disponíveis em C. Dados dois números

Leia mais

Ciência da Computação

Ciência da Computação Algoritmos e Programação Informática II Ciência da Computação Prof. Dr. Leandro Alves Neves Prof. Dr. Adriano M. Cansian 1 Sumário Estruturas de Controle de Fluxo. Ou: Estruturas de Decisão. Decide qual

Leia mais

Instituto Superior Politécnico de VISEU. Escola Superior de Tecnologia

Instituto Superior Politécnico de VISEU. Escola Superior de Tecnologia 1 Estruturada Quando precisamos de escrever código para resolver um determinado problema, dizemos normalmente que precisamos de um "programa" para esse fim. Programa, aqui, é entendido como um conjunto

Leia mais

Um algoritmo deve conter passos não ambíguos, executáveis e que sejam terminados quando seguidos.

Um algoritmo deve conter passos não ambíguos, executáveis e que sejam terminados quando seguidos. Programação Um programa é uma sequência de instruções de uma linguagem de programação (VB no nosso caso). Cada instrução representa uma qualquer acção que nós pretendemos ver executada. Programar consiste

Leia mais

Informática II Cap. 4-4

Informática II Cap. 4-4 Cap. 4-4 1 Estruturada Quando precisamos de escrever código para resolver um determinado problema, dizemos normalmente que precisamos de um "programa" para esse fim. Programa, aqui, é entendido como um

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

1 Congruências e aritmética modular

1 Congruências e aritmética modular 1 Congruências e aritmética modular Vamos considerar alguns exemplos de problemas sobre números inteiros como motivação para o que se segue. 1. O que podemos dizer sobre a imagem da função f : Z Z, f(x)

Leia mais

Aulas Anteriores. Detalhes da linguagem de programação

Aulas Anteriores. Detalhes da linguagem de programação Aulas Anteriores Detalhes da linguagem de programação Elementos básicos (identificadores, constantes, símbolos gráficos) Estrutura básica de um programa (cabeçalho, parte declarativa, parte de execução)

Leia mais

Oficina de Introdução de Programação usando Linguagem Python Prof. Ms. Perini

Oficina de Introdução de Programação usando Linguagem Python Prof. Ms. Perini Oficina de Introdução de Programação usando Linguagem Python Prof. Ms. Perini Apresentação do Professor Professor: José Carlos Perini E-mail: jose.perini@metrocamp.edu.br Blog: http://profperini.com Formação

Leia mais

Prática 10 - Funções

Prática 10 - Funções Programação de Computadores I UFOP DECOM June 9, 2016 Prática 10 - Funções Abstract Nesta aula prática você vai aprender a definir e usar funções em um programa. Contents 1 Funções 1 1.1 Definição e chamada

Leia mais

Algoritmos de pesquisa

Algoritmos de pesquisa Define-se pesquisa como a operação que permite encontrar ou concluir que não existe, um dado elemento num dado conjunto. A pesquisa de um elemento pode ser feita num conjunto ordenado ou não. Quando o

Leia mais

Linguagem e Técnicas em Programação. Gilson de Souza Carvalho

Linguagem e Técnicas em Programação. Gilson de Souza Carvalho Gilson de Souza Carvalho gaucho.gilson@hotmail.com Até agora, todos os algoritmos que foram vistos têm um fluxo de execução único, ou seja, as instruções que serão executadas são sempre as mesmas, independentemente

Leia mais

Marina Andretta. 10 de outubro de Baseado no livro Introduction to Linear Optimization, de D. Bertsimas e J. N. Tsitsiklis.

Marina Andretta. 10 de outubro de Baseado no livro Introduction to Linear Optimization, de D. Bertsimas e J. N. Tsitsiklis. Solução básica viável inicial Marina Andretta ICMC-USP 10 de outubro de 2016 Baseado no livro Introduction to Linear Optimization, de D. Bertsimas e J. N. Tsitsiklis. Marina Andretta (ICMC-USP) sme0211

Leia mais

Investigação Operacional

Investigação Operacional Métodos de Programação Linear: Big M, Fases, S Dual (Licenciatura) Tecnologias e Sistemas de Informação http://dps.uminho.pt/pessoais/zan - Escola de Engenharia Departamento de Produção e Sistemas 1 Simplex

Leia mais

Desenho e Análise de Algoritmos CC /2018. Folha 1 - Revisão: Escrita de algoritmos em pseudo-código e verificação de correção

Desenho e Análise de Algoritmos CC /2018. Folha 1 - Revisão: Escrita de algoritmos em pseudo-código e verificação de correção Departamento de Ciência de Computadores FCUP Desenho e Análise de Algoritmos CC2001 2017/2018 Folha 1 - Revisão: Escrita de algoritmos em pseudo-código e verificação de correção Descrição da linguagem

Leia mais

Introdução à Programação 2006/07. Algoritmos

Introdução à Programação 2006/07. Algoritmos Introdução à Programação 2006/07 Algoritmos Cálculo da média de uma sequência Algoritmos: Exercício 1 Pretende-se escrever um programa que, dado um numero indeterminado de números introduzidos pelo teclado,

Leia mais

Resolução De Problemas Em Informática. Docente: Ana Paula Afonso Resolução de Problemas. 1. Analisar o problema

Resolução De Problemas Em Informática. Docente: Ana Paula Afonso Resolução de Problemas. 1. Analisar o problema ALGORITMIA Resolução De Problemas Em Informática Docente: Ana Paula Afonso 2000-2001 Resolução de Problemas 1. Analisar o problema Conhecer o bem o problema Descrever o problema: subdividir, detalhar 2.

Leia mais

MC-102 Aula 06 Comandos Repetitivos

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

Leia mais

Linguagem Computacional. Estruturas de Controle: Estruturas de Repetição. Prof. Dr. Adriano Cansian Prof. Dr. Leandro Alves Neves

Linguagem Computacional. Estruturas de Controle: Estruturas de Repetição. Prof. Dr. Adriano Cansian Prof. Dr. Leandro Alves Neves Informática II Linguagem Computacional Estruturas de Controle: Estruturas de Repetição Prof. Dr. Adriano Cansian Prof. Dr. Leandro Alves Neves 1 Sumário q Estruturas de Controle de Fluxo Repetição Enquanto

Leia mais

1º Exame de INTRODUÇÃO À PROGRAMAÇÃO Licenciatura em Engenharia Mecânica 30 de Junho de º Semestre

1º Exame de INTRODUÇÃO À PROGRAMAÇÃO Licenciatura em Engenharia Mecânica 30 de Junho de º Semestre º Exame de INTRODUÇÃO À PROGRAMAÇÃO Licenciatura em Engenharia Mecânica de Junho de 6 º Semestre Exame sem consulta : 6: h Nome: Número: Escreva o seu número e nome em todas as folhas de exame. O exame

Leia mais

Linguagem Computacional. Estruturas de Controle: Estruturas de Decisão ou de Seleção. Prof. Dr. Adriano Cansian Prof. Dr. Leandro Alves Neves

Linguagem Computacional. Estruturas de Controle: Estruturas de Decisão ou de Seleção. Prof. Dr. Adriano Cansian Prof. Dr. Leandro Alves Neves 1 Algoritmos e Programação Linguagem Computacional Estruturas de Controle: Estruturas de Decisão ou de Seleção Prof. Dr. Adriano Cansian Prof. Dr. Leandro Alves Neves O que veremos: Estruturas de Controle

Leia mais

BUSCA. 4.1 Busca seqüencial

BUSCA. 4.1 Busca seqüencial AULA 4 BUSCA Como temos visto ao longo de muitas das aulas anteriores, a busca de um elemento em um conjunto é uma operação básica em Computação. A maneira como esse conjunto é armazenado na memória do

Leia mais

Sumário. Ciência da Computação. Prof. Dr. Leandro Alves Neves. Aula 10. Algoritmos e Programação. Enquanto (Teste no início) Repeat (Teste no final)

Sumário. Ciência da Computação. Prof. Dr. Leandro Alves Neves. Aula 10. Algoritmos e Programação. Enquanto (Teste no início) Repeat (Teste no final) Algoritmos e Programação Informática II Ciência da Computação Prof. Dr. Leandro Alves Neves Aula 10 1 Sumário Estruturas de Controle de Fluxo q Repetição Enquanto (Teste no início) Repeat (Teste no final)

Leia mais

LABORG. Parte 4 Programação em Linguagem de Montagem do MIPS. Fernando Gehm Moraes Matheus Trevisan Moreira

LABORG. Parte 4 Programação em Linguagem de Montagem do MIPS. Fernando Gehm Moraes Matheus Trevisan Moreira LABORG Parte 4 Programação em Linguagem de Montagem do MIPS Fernando Gehm Moraes Matheus Trevisan Moreira 20/janeiro/2016 Introdução MIPS Um processador RISC de 32 bits Conjunto de Instruções Usa-se o

Leia mais

Aula 4 Introdução ao C

Aula 4 Introdução ao C Considere o nosso MSC. O Processador Central, entende o conjunto de instruções, leia, imprima, atribuição e condicional e com ela resolvemos vários problemas, construindo vários algoritmos. As instruções

Leia mais

Vejamos agora mais alguns exemplos de problemas envolvendo seqüência de números.

Vejamos agora mais alguns exemplos de problemas envolvendo seqüência de números. Aula 6 - Mais exemplos de repetição Vejamos agora mais alguns exemplos de problemas envolvendo seqüência de números. P16) Dado N>0 e uma seqüência de N números, determinar o maior elemento da seqüência.

Leia mais

Introdução à Ciência da Computação

Introdução à Ciência da Computação Introdução à Ciência da Computação Variáveis Conceitos Básicos Variáveis x Constantes a = x + 5 a, x e 5 são variáveis ou constantes? Variáveis As variáveis são recipientes de valores É um espaço reservado

Leia mais

6. Determinação do Conjunto dos Estados Atingíveis

6. Determinação do Conjunto dos Estados Atingíveis Sistema para verificação Lógica do Controlo Dezembro 23 6. Determinação do Conjunto dos Estados Atingíveis No capítulo anterior chegamos a uma implementação que determinava o estado de um sistema quando

Leia mais

Algoritmos e Programação

Algoritmos e Programação Algoritmos e Programação Aula 7 Vetores Profa. Marina Gomes marinagomes@unipampa.edu.br 19/05/2017 Engenharia de Computação - Unipampa 1 Motivação Problema: Leia as notas de uma turma de cinco estudantes

Leia mais

Algoritmos de pesquisa

Algoritmos de pesquisa Define-se pesquisa como a operação que permite encontrar ou concluir que não existe, um dado elemento num dado conjunto. A pesquisa de um elemento pode ser feita num conjunto ordenado ou não. Quando o

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

13 a Aula - Instruções Condicionais. Ciclos. Pré-processador. Variáveis de ambiente. Mestrado em Engenharia Física Tecnológica

13 a Aula - Instruções Condicionais. Ciclos. Pré-processador. Variáveis de ambiente. Mestrado em Engenharia Física Tecnológica 13 a Aula - Instruções Condicionais. Ciclos. Pré-processador. Variáveis de ambiente. Programação Mestrado em Engenharia Física Tecnológica Samuel M. Eleutério sme@tecnico.ulisboa.pt Departamento de Física

Leia mais

Módulo 3 Subprogramas

Módulo 3 Subprogramas 1 Curso Profissional de Gestão e Programação de Sistemas Informáticos Programação e Sistemas de Informação Módulo 3 Subprogramas Prof. Sandra Pais Soares Conteúdos Conceitos básicos Variáveis: globais

Leia mais

Matemática Discreta. Fundamentos e Conceitos da Teoria dos Números. Universidade do Estado de Mato Grosso. 4 de setembro de 2017

Matemática Discreta. Fundamentos e Conceitos da Teoria dos Números. Universidade do Estado de Mato Grosso. 4 de setembro de 2017 Matemática Discreta Fundamentos e Conceitos da Teoria dos Números Professora Dr. a Donizete Ritter Universidade do Estado de Mato Grosso 4 de setembro de 2017 Ritter, D. (UNEMAT) Matemática Discreta 4

Leia mais

Desenvolvimento de programas

Desenvolvimento de programas 1 Desenvolvimento de programas Análise do problema Desenvolvimento do algoritmo Codificação do programa Compilação e execução Teste e depuração 2 Análise do problema Conhecer exatamente o que o problema

Leia mais

Teste de P1 12 de Dezembro 2001

Teste de P1 12 de Dezembro 2001 Teste de P1 12 de Dezembro 2001 Pergunta 1: Converta o seguinte segmento de código trocando o bloco de if para o bloco do sem modificar o resultado do programa if ( (i=1) OR (i=x) OR (j=1) OR (j=y) ) then

Leia mais

a = bq + r e 0 r < b.

a = bq + r e 0 r < b. 1 Aritmética dos Inteiros 1.1 Lema da Divisão e o Algoritmo de Euclides Recorde-se que a, o módulo ou valor absoluto de a, designa a se a N a = a se a / N Dados a, b, c Z denotamos por a b : a divide b

Leia mais

Recursão. Definição. Características. Recursividade 31/08/2010

Recursão. Definição. Características. Recursividade 31/08/2010 Recursão Introdução à Ciência da Computação II (009) Rosane Minghim Apoio na confecção: Rogério Eduardo Garcia Danilo Medeiros Eler Definição Um objeto é dito ser recursivo se ele é definido parcialmente

Leia mais

Estruturas Condicionais

Estruturas Condicionais Estruturas Condicionais Lógica de Programação Prof. Kleber Rezende Considerações Iniciais Nos capítulos anteriores foram apresentados alguns conceitos básicos sobre as estruturas e comandos que são utilizados

Leia mais

Aula 7 - Mais problemas com inteiros

Aula 7 - Mais problemas com inteiros Aula 7 - Mais problemas com inteiros Já vimos nas aulas anteriores alguns detalhes de operações com inteiros. a) A divisão é inteira e o resultado é truncado b) Existe o operador % (resto da divisão) c)

Leia mais

Linguagem de programação: Pascal

Linguagem de programação: Pascal Aula 04 Linguagem de programação: Pascal Prof. Tecgº Flávio Murilo 26/03/2013 1 Pascal Introdução Pascal é uma linguagem de programação estruturada, criada em 1970 pelo suíço Niklaus Wirth, dando este

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. Processamento da Informação 2. Conceitos de Programação 3. Funções e Programas de Computador 1 Processamento da

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

CAPÍTULO 5 - UMA LINGUAGEM ALGORÍTMICA

CAPÍTULO 5 - UMA LINGUAGEM ALGORÍTMICA 5.1 - INTRODUÇÃO CAPÍTULO 5 - UMA LINGUAGEM ALGORÍTMICA Até agora, escrevemos alguns algoritmos utilizando uma linguagem com caráter narrativo. Nós praticamente contamos a história das ações praticadas

Leia mais

Correção do 1º Exame de INTRODUÇÃO À PROGRAMAÇÃO Licenciatura em Engenharia Mecânica 30 de Junho de 2006, 2º Semestre

Correção do 1º Exame de INTRODUÇÃO À PROGRAMAÇÃO Licenciatura em Engenharia Mecânica 30 de Junho de 2006, 2º Semestre Correção do º Exame de INTRODUÇÃO À PROGRAMAÇÃO Licenciatura em Engenharia Mecânica 3 de Junho de 26, 2º Semestre. (2.) Perguntas de resposta rápida de Fortran (.4 valores cada).. Todos os componentes

Leia mais

Professor: Domingos Equipe Haskell: Lucas Montesuma, Francisco Leonardo CONCEITOS DA LINGUAGEM DE PROGRAMAÇÃO CÁLCULADORA EM HASKELL

Professor: Domingos Equipe Haskell: Lucas Montesuma, Francisco Leonardo CONCEITOS DA LINGUAGEM DE PROGRAMAÇÃO CÁLCULADORA EM HASKELL Professor: Domingos Equipe Haskell: Lucas Montesuma, Francisco Leonardo CONCEITOS DA LINGUAGEM DE PROGRAMAÇÃO CÁLCULADORA EM HASKELL Sobre a Linguagem Haskell Inicialmente temos no trabalho o uso da versão

Leia mais

FACCAT Sistemas de Informação. Estruturas de Dados

FACCAT Sistemas de Informação. Estruturas de Dados FACCAT Sistemas de Informação Estruturas de Dados Aula 1 http://professores.faccat.br/azambuja (Estrutura de Dados) Definição de variáveis Podemos imaginar uma variável como o local onde se pode colocar

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

Oficina de Python Prof. Me. José Carlos Perini

Oficina de Python Prof. Me. José Carlos Perini Oficina de Python Prof. Me. José Carlos Perini Prof. José Carlos Perini Formação em Análise de Sistemas Univ. S. Francisco Pós em Administração Universidade S. Francisco Mestrado em Ciência da Computação

Leia mais

Refinamentos sucessivos

Refinamentos sucessivos Refinamentos sucessivos Objetivos: Estudar a técnica de refinamentos sucessivos Jogo: 2048 Implementaremos o jogo 2048, com o objetivo de estudar a manipulação dos elementos de uma matriz Utilizaremos

Leia mais

NÚMEROS INTEIROS E CRIPTOGRAFIA UFRJ

NÚMEROS INTEIROS E CRIPTOGRAFIA UFRJ NÚMEROS INTEIROS E CRIPTOGRAFIA UFRJ GABARITO LISTA 6: ALGORITMO CHINÊS DO RESTO 1. Ver gabarito das questões do livro. 2. Aplique o Algoritmo de Fermat para encontrar 999367 = 911 1097. Como 911 e 1097

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

Aula 11 - Repetições Encaixadas

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

Leia mais

Introdução à Programação em C. Prof. Ricardo Teixeira Tecnologia em Mecatrônica Industrial SENAI

Introdução à Programação em C. Prof. Ricardo Teixeira Tecnologia em Mecatrônica Industrial SENAI Introdução à Programação em C Prof. Ricardo Teixeira Tecnologia em Mecatrônica Industrial SENAI Linguagem C Criada em 1972 para uso no LINUX; Sintaxe base para diversas outras (Java, JavaScript, PHP, C++,

Leia mais

A palavra ALGORITMO teve origem com um Matemático Persa, al. Khawarizmi. O seu trabalho mais famoso foi Al-jabr walmuquabalah,

A palavra ALGORITMO teve origem com um Matemático Persa, al. Khawarizmi. O seu trabalho mais famoso foi Al-jabr walmuquabalah, A palavra ALGORITMO teve origem com um Matemático Persa, al Khawarizmi. O seu trabalho mais famoso foi Al-jabr walmuquabalah, ou a ciência das Equações que, em última análise suscitaram o desenvolvimento

Leia mais

Instituto Superior Politécnico de VISEU. Escola Superior de Tecnologia

Instituto Superior Politécnico de VISEU. Escola Superior de Tecnologia 1 Vamos considerar os seguintes elementos e estruturas fundamentais que são habitualmente usados em programação: Tipos de Dados Operadores Atribuições Entrada e Saída de Dados Estruturas de Controlo Procedimentos

Leia mais

Oficina de Python Prof. Me. José Carlos Perini

Oficina de Python Prof. Me. José Carlos Perini Oficina de Python Prof. Me. José Carlos Perini Prof. José Carlos Perini Formação em Análise de Sistemas Univ. S. Francisco Pós em Administração Universidade S. Francisco Mestrado em Ciência da Computaçã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

6. Pesquisa e Ordenação

6. Pesquisa e Ordenação 6. Pesquisa e Ordenação Fernando Silva DCC-FCUP Estruturas de Dados Fernando Silva (DCC-FCUP) 6. Pesquisa e Ordenação Estruturas de Dados 1 / 30 Pesquisa de Informação A pesquisa eficiente de informação

Leia mais

Implementando subprogramas

Implementando subprogramas Implementando subprogramas Linguagens de Programação Marco A L Barbosa cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual 4.0 Internacional. http://github.com/malbarbo/na-lp-copl

Leia mais

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

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

Leia mais