Textos de apoio às aulas práticas. Jaime Ramos, Francisco Miguel Dionísio

Documentos relacionados
Programação imperativa sobre vectores

Textos de apoio às aulas práticas. Jaime Ramos, Francisco Miguel Dionísio

Programação imperativa

(LEAmb, LEMat, LQ, MEBiol, MEQ) Exame 2 28 de Janeiro de 2008, 9h00

Matemática Computacional

Programação Imperativa

1. Faça uma função que recebe por parâmetro o raio de uma esfera e calcula o seu volume.

Exercícios de Teoria da Computação Computabilidade

Universidade Federal de Mato Grosso do Sul. Lista de Exercícios 2

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

Exercícios para Fundamentos da Programação Utilizando Múltiplos Paradigmas

2. Diga qual é a diferença entre tipos de informação elementares e tipos de informação estruturados.

Exercícios de Teoria da Computação Computabilidade

Programação Universidade da Beira Interior Departamento de Informática 2007/08

Aula prática 5. Funções Recursivas

Exercícios: Recursão

Inteligência Artificial

Exercícios. 1. O que escreva o programa abaixo? Por que? 2. O que escreva o programa abaixo? Por que? algoritmo "foo" var a: inteiro

1. Múltiplos e divisores

MATEMÁTICA 1 MÓDULO 2. Divisibilidade. Professor Matheus Secco

Lista de Exercícios Estrutura de Repetição

a = bq + r e 0 r < b.

Valores e vectores próprios

CIC 111 Análise e Projeto de Algoritmos II

Estruturação de Procedimentos

Comandos de Repetição

Procedimentos e Algorítmos Programas e Linguagens de Programação Tese de Church-Turing Formas de Representação de Linguagens

Matemática Computacional - 2 o ano LEMat e MEQ

Fundamentos da Programação

OBMEP NA ESCOLA Soluções

MATEMÁTICA - 3o ciclo Sequências e sucessões (7 o ano) Propostas de resolução

é uma proposição verdadeira. tal que: 2 n N k, Φ(n) = Φ(n + 1) é uma proposição verdadeira. com n N k, tal que:

Hewlett-Packard CONJUNTOS NUMÉRICOS. Aulas 01 a 08. Elson Rodrigues, Gabriel Carvalho e Paulo Luiz Ramos

Fundamentos de Programação

Algoritmo de Euclides Estendido, Relação de Bézout e Equações Diofantinas. Tópicos Adicionais

exercícios de análise numérica II

Fundamentos da Programação

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

UNIVERSIDADE FEDERAL DE PERNAMBUCO Lista de Exercícios / Cálculo Numérico 1ª Unidade

CURSO ANUAL DE MATEMÁTICA VOLUME 1

Ficha 1 Noções de sequência e decisão em algoritmia

ESTRUTURAS DE REPETIÇÃO - PARTE 2

if not(isinstance(a, int)) or a < 0: raise ValueError ("misterio: arg nao e inteiro nao negativo") else: return misterio_aux(a, a + 1)

5ª Lista de Exercícios de Programação I

a = bq + r e 0 r < b.

Dízimas e intervalos encaixados.

Exercícios - Factorial

a) Falsa. Por exemplo, para n = 2, temos 3n = 3 2 = 6, ou seja, um número par.

if not(isinstance(a, int)) or a < 0: raise ValueError ( misterio: arg devia ser inteiro nao negativo ) else: return misterio_aux(a, a + 1)

Exercícios: Árvores. Universidade Federal de Uberlândia - UFU Faculdade de Computação - FACOM Lista de exercícios de estrutura de dados em linguagem C

Aula 05: - Recursão (parte 1)


Exercício 5. Encontre o valor de

Solução da prova da 1.ª Fase. b) Queremos os números interessantes do tipo ABC6. Isso implica que A x B x C = 6. Temos dois casos a considerar:

1 TESTE OPÇÃO II - TEORIA DE NÚMEROS COMPUTACIONAL

Aula 2: Algoritmos: Intuição

Ficheiros. Capítulo 8

AULA 3 TEORIA - MATLAB VERSÃO: FEVEREIRO DE 2017

Aula 05: - Recursão (parte 1)

MATEMÁTICA MÓDULO 1 TEORIA DOS NÚMEROS 1. DIVISIBILIDADE 1.1. DEFINIÇÃO 1.2. CRITÉRIOS DE DIVISIBILIDADE

Problemas de Fluxo em Redes

Lista de Revisão Prova 1

Noção de Computabilidade

Definição. Diremos que um número inteiro d é um divisor de outro inteiro a, se a é múltiplo de d; ou seja, se a = d c, para algum inteiro c.

o tempo gasto por A para percorrê-la. Tomaremos t A como nossa unidade de tempo, como mostra o quadro a seguir: Atleta Tempo Distância percorrida

Computação e Programação 201*/201* - 1º Semestre

Computação e Programação Exame Época de recurso

. (1) Se S é o espaço vetorial gerado pelos vetores 1 e,0,1

Aula 01 mtm B MATEMÁTICA BÁSICA

Exercícios de Linguagem C

1.1. Numéricos. Conjuntos MATEMÁTICA. Conjunto dos Números Naturais (N) Conjunto dos Números Inteiros (Z)

Espaços vectoriais com produto interno. ALGA 2008/2009 Mest. Int. Eng. Electrotécnica e de Computadores Espaços vectoriais com produto interno 1 / 19

Os Fantásticos. Números Primos

Teorema Chinês dos Restos. Tópicos Adicionais

Exame de Programação Imperativa

SM - Sistemas Multimédia CODIFICAÇÃO DE FONTE (parte 2) 4.º / 6.º semestre LEIC (verão 2016/2017)

DISCIPLINA: MATEMÁTICA DISCRETA I PROFESSOR: GISLAN SILVEIRA SANTOS CURSO: SISTEMAS DE INFORMAÇÃO SEMESTRE: TURNO: NOTURNO

Resoluções. Aula 1 NÍVEL 2. Classe

Cálculo Numérico BCC760

Módulo Tópicos Adicionais. Recorrências

Produtos Notáveis. Vejamos alguns exemplos para diversos produtos notáveis que auxiliarão na formação de ideias para problemas futuros mais difíceis.

CIC 111 Análise e Projeto de Algoritmos II

Matrizes. Laura Goulart. 29 de Outubro de 2018 UESB. Laura Goulart (UESB) Matrizes 29 de Outubro de / 16

Neste módulo, não daremos a definição padrão de determinantes via somatório envolvendo sinais de permutações, pois não há necessidade de entrarmos em

Exercícios de Teoria da Computação Computabilidade

Lista de Exercícios 03a Algoritmos Repetição. 1) Escreva um algoritmo em PORTUGOL que imprima todos os números inteiros de 0 a 50.

Os Fa n t á s t i c o s

Módulo: aritmética dos restos. Divisibilidade e Resto. Tópicos Adicionais

Matemática Discreta. Introdução à Teoria de Números - Exercícios 1 o ano /2011

CIC 110 Análise e Projeto de Algoritmos I

MC102 Algoritmos e Programação de Computadores

Roteiro da segunda aula presencial - ME

Aulas práticas de Álgebra Linear

[C] [D] [A] [B] Calculando: = 4035 Divisores 4035 = (1 + 1).(1 + 1).(1 + 1) = 2.2.

MATEMÁTICA MÓDULO 11 DETERMINANTES. Professor Matheus Secco

COLETÂNEA DE PROBLEMAS PARA TREINAMENTO (*) NÍVEL III (ENSINO MÉDIO)

ax + by 347 = 0 k = text UNIDADE CURRICULAR: Matemática Finita CÓDIGO: DOCENTES: Gilda Ferreira e Ana Nunes

Cálculo Numérico IPRJ/UERJ. Sílvia Mara da Costa Campos Victer ÍNDICE. Aula 1- Introdução. Representação de números. Conversão de números

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

Produtos Notáveis. Vejamos alguns exemplos para diversos produtos notáveis que auxiliarão na formação de ideias para problemas futuros mais difíceis.

Transcrição:

Computação e Programação Textos de apoio às aulas práticas Jaime Ramos, Francisco Miguel Dionísio DMIST, Dezembro de 2010

Parte I MATLAB 1

Capítulo 1 Exercícios preliminares 1. Defina a função conta divisores que recebe como argumento um inteiro positivo e devolve o número de divisores desse número. 2. Defina a função primo que recebe como argumento um inteiro positivo e devolve verdadeiro se esse número é primo e falso caso contrário. 3. Defina a função soma primos que recebe como argumento um inteiro positivo n e devolve a soma dos números primos até n. 4. Defina a função div que recebe como argumento dois números inteiros m e n e devolve o resultado da divisão inteira de m por n. 5. Defina a função prim alg que recebe como argumento um inteiro positivo n e devolve o primeiro algarismo da representação decimal de n. Por exemplo, prim alg(54763) = 5. 6. Um número perfeito é um número inteiro positivo tal que é a soma dos seus divisores próprios, isto é, a soma de todos os divisores excluindo o próprio número. Por exemplo, 6 é um número perfeito porque os seus divisores próprios são 1, 2 e 3, e 1 + 2 + 3 = 6. Defina a função num perf que recebe como argumento um número inteiro positivo e devolve verdadeiro se esse número for um número perfeito e falso caso contrário. 7. O algoritmo de Euclides é um método simples e eficiente para calcular o máximo divisor comum (mdc). Este algoritmo baseia-se no facto de o máximo divisor comum verificar as seguintes igualdades: 8 >< mdc(a, b) =mdc(a b, b) se a>b mdc(a, b) =mdc(a, b a) se a<b >: mdc(a, b) =a se a = b O algoritmo vai subtraindo sucessivamente o menor argumento ao maior até que sejam iguais. Nessas condições, o máximo divisor comum será esse valor. Defina a função mdc que recebe como argumento dois números naturais e que calcula o máximo divisor comum desses dois números, recorrendo o algoritmo de Euclides. 8. Define-se raiz quadrada inteira de um número inteiro positivo n como sendo o maior número inteiro positivo m menor ou igual do que a raiz quadrada de n. Por exemplo, a raiz quadrada inteira de 27 é 5 porque 5 2 = 25 apple 27 e 6 2 = 36 > 27. Um algoritmo utilizado frequentemente para aproximar a raiz quadrada inteira de um número, que a seguir se descreve, baseia-se no método de Newton. Define-se uma sucessão {x k } da seguinte forma: x 0 = n; 2

x k+1 =(x k + n x k )/2. O método consiste em calcular valores sucessivos de x k até que x k+1 solução será bx k+1 c. x k < 1. Nestas condições a Defina a função intsqrt que recebe como argumento um inteiro positivo n e devolve a aproximação encontrada para a raiz quadrada inteira de n, recorrendo ao método descrito anteriormente. Nota: Por bxc entende-se a característica do número x, ou seja, o menor número inteiro que não excede x. 3

Capítulo 2 Programação imperativa sobre vectores 1. Defina a função pertence que dado um número n e um vector v de números devolve verdadeiro se n pertence a v e falso caso contrário. 2. Defina a função ocorrencias que dado um número n e um vector v conta quantas vezes n ocorre em v. 3. Defina a função pos max que dado um vector v devolve a soma dos índices das posições onde o máximo de v ocorre. 4. Defina a função split que dado um vector v eumnúmeron devolve um triplo [a, b, c] tal que: a é o número de elementos de v maiores que n, b é o número de elementos de v iguais a n, c é o número de elementos de v menores que n. 5. Defina a função f que dado um vector v devolve um par [x, y] tal que x é 1 se os elementos do vector estiverem ordenados por ordem crescente (em sentido lato) e é 0 caso contrário; y é o número de vezes que um elemento é sucedido de outro estritamente maior. 6. Defina a função f que dado um vector v devolve um par [x, y] tal que x é 1 se o vector for constante (isto é, se todos os elementos forem iguais) e é 0 caso contrário; y é o número de vezes que um elemento é sucedido de outro diferente. 7. Defina a função f que dado um vector v devolve um par [x, y] tal que x é a diferença entre o máximo e o mínimo do vector; y é o número de vezes que o máximo ocorre na lista. 8. Defina a função f que dado um vector v devolve um par [x, y] tal que x é a soma das posições onde ocorre o mínimo do vector; y é a última posição em que o mínimo do vector ocorre. 9. Defina a função f que dado um vector v devolve um par [x, y] tal que 4

x é o menor número primo que ocorre no vector; y é o número de números primos que ocorrem no vector. No caso de não ocorrerem números primos no vector, x deve ser 0. 10. Defina a função f que dado um vector v devolve um par [x, y] tal que x é 1 se todos os elementos do vector forem pares e 0 caso contrário;; y é o menor número par. No caso de não ocorrerem números pares no vector, y deve ser 0. 11. Defina a função f que dado um vector v devolve um par [x, y] tal que x é 1 se no vector ocorrerem mais números pares do que ímpares e 0 caso contrário; y é a diferença entre o número de números pares e o número de números ímpares. 12. Defina a função car primos que dado um vector v devolve um vector de igual comprimento com 1 nas posições onde v contém um número primo e 0 nas restantes. 13. Defina a função f que dado um vector v devolve um vector de igual comprimento tal que cada elemento do argumento é substituído: pelo índice da posição que ocupa, caso esse elemento seja um número par; por 0 caso contrário. 14. Defina a função f que dado um vector v devolve um vector de igual comprimento tal que cada elemento do argumento é substituído por: 2 se esse elemento for maior do que o elemento na posição anterior; 1 se esse elemento for igual ao elemento na posição anterior; 0 caso contrário. O elemento na primeira posição, que não tem elemento na posição anterior, deve ser substituído por 0. 15. Defina a função f que dado um vector v devolve um vector de igual comprimento que contém em cada posição o número de números ímpares encontrados até essa posição (inclusive) no vector dado 16. Defina a função f que dado um vector v devolve um vector de igual comprimento tal que cada elemento do argumento é substituído: pela soma do elemento com a posição que ocupa, caso o elemento ocorra no vector entre dois números pares; pela sua posição, caso contrário. 17. Defina a função f que dado um vector v devolve um vector de igual comprimento com as posições trocadas duas a duas, isto é, os elementos da primeira e da segunda posição trocados entre si, os elementos da terceira e quarta posições trocados entre si, e assim sucessivamente. No caso de o vector ter comprimento ímpar a última posição não se altera. 18. Defina a função f que dado um vector v devolve um vector de igual comprimento tal que cada elemento do argumento é substituído: pelo elemento que o antecede, caso o elemento anterior seja inferior à posição que ocupa; por 0 caso contrário, caso contrário. 5

19. Um vector u diz-se prefixo de um vector v se o comprimento de u for menor ou igual do que o comprimento de v e u(i) =v(i), para todo o i =1,...,length(u). Defina a função prefixo que recebe como argumento dois vectores u e v e devolve verdadeiro se u é p r e fi x o d e v e falso caso contrário. 20. Diz-se que um vector tem um elemento maioritário se mais de metade dos seus elementos forem iguais. Defina uma função maioritario que dado um vector de números inteiros (positivos) e devolve o elemento maioritário do vector, caso exista. No caso do vector não ter elemento maioritário, a função deverá devolver -1. 21. O reconhecimento de padrões consiste em verificar se uma determinada sequência padrão p ocorre numa outra sequência s. Considere que, quer a sequência padrão p, quer a sequência s, são vectores de inteiros. Pretende-se verificar se os elementos do vector p ocorrem no vector s, pela mesma ordem e consecutivamente. Apresentam-se em seguida alguns exemplos. O padrão [1, 2, 3] ocorre na sequência [2, 1, 2, 3, 4, 5]; O padrão [4, 3, 4] não ocorre na sequência [2, 1, 4, 2, 3, 4, 5]; O padrão [5, 2, 7] ocorre na sequência [5, 2, 7]; O padrão [9, 4] ocorre na sequência [3, 2, 4, 2, 9, 4]; O padrão [7, 4, 3] ocorre na sequência [7, 4, 3, 7, 2, 7]. Defina uma função reconhece que recebe como argumento dois vectores p e s de números inteiros e devolve 1 se o padrão p ocorre na sequência s, e devolve 0 caso contrário. 6

Capítulo 3 Programação imperativa sobre matrizes 1. Defina a função media matriz que recebe como argumento uma matriz e devolve a média dos seus elementos. 2. Defina a função matriz igual que recebe como argumento duas matrizes de igual dimensão e devolve verdadeiro se ambas as matrizes são iguais elemento a elemento e falso caso contrário. 3. Defina a função linha par que recebe como argumento um vector de inteiros e devolve verdadeiro se a soma dos elementos é par e falso caso contrário. Generalize esta função de modo a receber como argumento uma matriz e a devolver um vector e comprimento igual ao número de linhas da matriz, que contém na i-ésima posição o valor 1 se a linha i satisfizer linha par e 0 caso contrário. 4. Defina a função l primos que recebe como argumento uma matriz de números inteiros e devolve o número de linhas em que ocorre, pelo menos, um número primo. Pode utilizar, no máximo, dois ciclos encaixados. 5. Defina a função col min que recebe como argumento uma matriz de números inteiros e devolve o número de colunas em que ocorre o mínimo da matriz. Pode utilizar, no máximo, dois ciclos encaixados, e não pode utilizar a função min. 6. Defina a função f que recebe como argumento uma matriz e devolve um par [x, y] tal que: x é o número de linhas constituídas exclusivamente por números pares; y é o índice da primeira dessas linhas. Pode utilizar, no máximo, dois ciclos encaixados. Caso não existam linhas nestas condições, x deve ser 1ey deve ser 0. 7. Defina a função f que recebe como argumento uma matriz quadrada de números inteiros e devolve um par [x, y] tal que: x é a diferença entre a soma dos elementos da diagonal principal da matriz e a soma dos elementos da diagonal oposta; y é a diferença entre a soma dos elementos da triangular superior e a soma dos elementos da triangular inferior. 7

Pode utilizar, no máximo, dois ciclos encaixados. Os elementos das triangulares não incluem os elementos da diagonal principal. 8. Defina a função f que recebe como argumento uma matriz quadrada de números inteiros e devolve um par [x, y] tal que: x é o número de números pares que se encontram acima das duas diagonais; y é o número de números pares que se encontram abaixo das duas diagonais. Pode utilizar, no máximo, dois ciclos encaixados. 9. Defina a função f que recebe como argumento uma matriz quadrada de números inteiros e devolve 1 se o número de números pares que acima das diagonais for igual ao número de números impares que ocorre abaixo das diagonais. Pode utilizar, no máximo, dois ciclos encaixados. 10. Defina a função f que recebe como argumento uma matriz quadrada de números inteiros e devolve o maior elemento que ocorre entre as duas diagonais. Pode utilizar, no máximo, dois ciclos encaixados. No caso da matriz singular, a função deve devolver -inf. 11. Defina a função f que recebe como argumento uma matriz de números inteiros e devolve um vector de comprimento igual ao número de linhas que contém na posição k o valor: 2senalinhak existirem mais números pares do que ímpares; 1senalinhak existirem mais números ímpares do que pares; 0 se na linha k existirem tantos números pares como ímpares. 12. Defina a função f que recebe como argumento uma matriz de números inteiros e devolve um vector de comprimento igual ao número de linhas que contém na posição k a diferença entre o maior número ímpar e o menor número ímpar que ocorrem na linha k. Se não ocorrerem números ímpares considera-se o valor 0. 13. Defina a função f que recebe como argumento uma matriz de números inteiros e devolve um vector de comprimento igual ao número de colunas que contém na posição k a soma dos elementos pares da coluna k que ocorrem em linhas ímpares. 14. Defina a função f que recebe como argumento uma matriz de números inteiros e devolve um vector de comprimento igual ao número de colunas que contém na posição k o maior elemento da coluna k. 15. Defina a função f que recebe como argumento uma matriz de números inteiros e devolve um vector de comprimento igual ao número de linhas que contém na posição k o índice a primeira coluna onde ocorre o maior elemento da linha k. 8

Capítulo 4 Programação recursiva Os exercícios desta secção devem ser resolvidos recorrendo a funções definidas por recursão. 1. Defina a função soma natr que recebe como argumento um número inteiro positivo n e devolve a soma de todos os naturais até n. 2. Defina a função divr que recebe como argumento dois números inteiros positivos m e n e devolve o resultado da divisão inteira de m por n. 3. Defina a função prim algr que recebe como argumento um número inteiro positivo n e devolve o primeiro algarismo na representação de n. 4. Defina a função num perfr que recebe como argumento um número inteiro positivo e que devolve verdadeiro se esse número for um número perfeito e falso caso contrário. Se necessário, recorde a noção de número perfeito no Exercício 6 do Capítulo 1. 5. Defina a função mdcr que recebe como argumento dois números naturais e devolve o seu máximo divisor comum, calculado através do algoritmo de Euclides. 6. Considere a função f : N! N tal que ( x/2 se x for um número par f(x) = 3x + 1 caso contrário Defina a função num itr que recebe como argumento um número natural n e devolve o número de vezes que f tem que se aplicada (recursivamente) a n até se atingir o número 1, i.e., devolve o número k tal que f(f(...f(n))) =1. {z } k vezes 7. Defina a função comb que recebe como argumentos dois naturais m e q, com m q, tal que comb(m,q)= m, as combinações de m, q a q. Recorde que as combinações satisfazem a relação q m q = m 1 q 1 m 1 + q para 0 <q<m. 8. Defina a função pertencer que recebe como argumento um número n e um vector v e devolve verdadeiro se n pertence a v e falso caso contrário. 9

9. Defina a função ocorrenciasr que dado um número n e um vector v conta quantas vezes n ocorre v. 10. Defina a função maxr que recebe como argumento um vector v e devolve o máximo de v. 11. Defina a função pos maxr que recebe como argumento um vector v e devolve a soma dos índices das posições onde o máximo de v ocorre. 12. Defina a função splitr que dado um vector v eumnúmeron devolve um triplo [a, b, c] tal que: a é o número de elementos de v maiores que n, b é o número de elementos de v iguais a n, c é o número de elementos de v menores que n. 13. Um vector u diz-se prefixo de um vector v se o comprimento de u for menor ou igual do que o comprimento de v e u(i) = v(i), para todo o i = 1,...,length(u). Defina a função prefixor que recebe como argumento dois vectores u e v e devolve verdadeiro se u é p r e fi x o d e v e falso caso contrário. 14. Recorde o algoritmo de pesquisa binária para pesquisar um número num vector ordenado. Defina uma função pesquisa bin que recebe como argumento um vector v de números ordenado (por ordem crescente) e um elemento x e que devolve verdadeiro se x pertence a v e falso caso contrário. 15. Defina a função media matrizr que recebe como argumento uma matriz e devolve a média dos seus elementos. 16. Defina a função max matrizr que recebe como argumento uma matriz a e devolve o máximo de a. 10