AULA03.NB 1 PARADIGMAS DA PROGRAMAÇÃO Licenciatura em Engenharia Civil (1º ano, 1º semestre) Licenciatura em Engenharia Informática (1º ano, 1º semestre) Licenciatura em Engenharia de Instrumentação e Electrónica - ramo Astronomia (1º ano, 1º semestre) Licenciatura em Engenharia de Telecomunicações e Redes (1º ano, 1º semestre) Licenciatura em Ensino de Informática (1º ano, 1º semestre) Licenciatura em Matemática (1º ano, 1º semestre) INTRODUÇÃO À COMPUTAÇÃO Licenciatura em BioQuímica (2º ano, 1º semestre) Licenciatura em Física (2º ano, 1º semestre) Licenciatura em Química (1º ano, 1º semestre) à Definição de Funções 3.1- Considere a função suc que a cada natural n faz corresponder o seu sucessor (n+1): a) Defina a função suc no Mathematica. b) Calcule suc(5), suc(x), suc(aula) e suc( { 2, 3 } ). c) Calcule o produto do sucessor de 4 pelo sucessor do sucessor de 6. 3.2- Defina a função real de variável real f(x) = x2 +2x e calcule o seu valor no ponto x = 10. x+ y 3.3- Defina a função real de duas variáveis reais dada por g(x,y) = ÅÅÅÅÅÅÅÅ ÅÅÅÅ e calcule as imagens de ( 2, 5 ) e ( 10, 12.5 ). 2 3.4- Considere a função real de variável real r definida por f(x) = x2 se x ¥ 0 e f(x) = -x2 se x < 0. a) Defina a função f no Mathematica. b) Calcule f(5), f(-1) e f(0). c) Desenhe o gráfico da função para -5 § x § 5. 3.5- A função de Heaviside é definida como se segue: h(x) = 1 se x > 0, h(x) = ÅÅÅÅ12 se x = 0 e h(x) = 0 se x < 0. a) Defina a função de Heaviside no Mathematica. b) Calcule as imagens nos pontos -2, 0 e 2. c) Represente graficamente a função. 3t cos HtL sen H ÅÅÅÅ ÅÅ L ÅÅÅÅÅÅÅÅÅÅÅÅ2ÅÅÅÅÅ 3.6- Considere a função real de variável real f que a cada t associa ÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅ t a) Defina a função f no Mathematica. b) Desenhe o gráfico de f no intervalo [ -8p, -8p ]. c) Calcule os limites de f quando t tende para -¶ e +¶. AULA03.NB 2 d) Determine o valor de f quando t=0. e) Calcule o limite de f quando t tende para 0 à esquerda e à direita. f) Calcule f' e desenhe o seu gráfico no intervalo considerado em b). à Definição de Funções Operando Sobre Listas 3.7- Defina uma função designada por contaprimos que dada uma lista de números quaisquer diga quantos desses são números primos. 3.8- Defina uma função designada por m01 que dado um natural n devolve uma matriz n x n com o valor 0 na diagonal principal e 1 fora dela. 3.9- Defina uma função que recebendo um inteiro positivo n devolve, na forma matricial usual, uma matriz quadrada de dimensão n x n, com 0 na diagonal principal e nas posições acima dela, e com o respectivo índice de linha nas restantes posições. 3.10- Defina uma função que recebendo um inteiro positivo n devolve, na forma matricial usual, uma matriz quadrada de dimensão n x n, com 0 na diagonal principal, 1 nas posições acima dela e -1 nas posições abaixo. Ilustre a sua aplicação. 3.11- Defina (usando a função Select) uma função SeparaParesImpares que aplicada a uma lista de inteiros retorna uma lista contendo duas outras listas, nomeadamente a sublista da lista argumento formada pelos elementos pares que nela ocorrem, e a sublista dos números ímpares. 3.12- Defina uma função que aplicada a uma matriz quadrada devolve uma lista com os elementos da diagonal principal. 3.13- Defina uma função que recebendo uma matriz retorna a lista dos elementos que estão na primeira coluna. 3.14- Defina uma função selNatParLista que dada uma lista retorna a sublista dos inteiros positivos pares. Utilize um predicado auxiliar NatParQ (que retorna True sse aplicado a um inteiro positivo par) que deve ser encapsulado. Ilustre a aplicação desta função, determinando, por exemplo, selNatParLista[ { -2, -1, a, 0, b, 1, 2 } ]. Confirme que NatParQ está encapsulado. 3.15- Defina uma função g que recebendo uma lista w retorna, caso esteja vazia, a lista vazia; caso contrário, retorna uma lista formada por uma cópia do primeiro elemento de w, seguida de duas cópias do segundo elemento de w, e assim sucessivamente. 3.16- Suponha que para cada prova de natação organizada por um clube, os tempos realizados pelos vários nadadores são registados numa lista. Defina uma função (de nome) melhorTempo que, recebendo duas listas w1 e w2 com os registos dos tempos realizados pelos mesmos nadadores na mesma prova de natação em dois dias consecutivos, retorna uma lista com o menor tempo realizado por cada nadador nesses dois dias. Por exemplo, melhorTempo[{54, 42, 48, 60},{52, 44, 49, 61}] deverá retornar {52, 42, 48, 60} AULA03.NB 3 melhorTempo[{41, 48, 44},{43, 46, 46}] deverá retornar {41, 46, 44} Nota: poderá assumir (sem necessidade de testar) que numa invocação melhorTempo[w1,w2] as listas argumento w1 e w2 têm o mesmo número de elementos,referindo os tempos dos nadadores pela mesma ordem. 3.17- Os serviços administrativos de uma piscina municipal têm um registo dos seus clientes, com a informação do número de mensalidades em atraso. Considere que o registo de cada cliente é representado por uma lista da forma {nome do cliente , número de mensalidades em atraso } Todos os clientes que têm mensalidades em atraso não poderão continuar a frequentar a piscina (até que regularizem a situação). Defina uma função (de nome) podemNadar que, recebendo uma lista w com os registos dos clientes, retorna os nomes dos clientes que poderão continuar a frequentar a piscina. Por exemplo, podemNadar[{{António, 0}, {João, 10}, {Maria, 0},{Alberto, 2}}] deverá retornar {António, Maria} e podemNadar[{}] deverá retornar {}. Sugestão: Defina um predicado que recebendo um registo de um cliente "diz" se este se refere a um cliente que pode frequentar a piscina; construa, em seguida, a lista formada pelos registos dos clientes que podem frequentar a piscina s, isto é, no caso do exemplo, a lista {{António, 0},{Maria, 0}}; e, finalmente, a partir dessa lista construa a lista formada apenas pelo nome desses clientes. 3.18- Os serviços administrativos de uma piscina municipal têm um registo dos seus clientes, com a informação do número de mensalidades em atraso. Considere que o registo de cada cliente é representado por uma lista da forma {nome do cliente , número de mensalidades em atraso } Pretende-se definir uma função informacao com dois argumentos, em que o primeiro é uma lista w com os registos dos clientes e o segundo é o número máximo de mensalidades em atraso que são permitidas para poder continuar a frequentar a piscina. O resultado de invocar tal função será uma lista formada por registos da forma {nome do cliente , sim } ( significando {nome do cliente , pode entrar }) {nome do cliente , nao } ( significando {nome do cliente , não pode entrar } Por exemplo, informacao[{{António, 0}, {João, 10}, {Maria, 7},{Alberto, 5}} , 5] deverá retornar {{António, sim}, {João, não}, {Maria, não},{Alberto, sim}} e informacao[{},3] deverá retornar {}. à Definição de Funções Operando Sobre Funções 3.19- Defina uma função declive que recebendo uma função cujo o gráfico é uma recta (não vertical), retorna, como resultado o declive dessa recta. 3.20- Defina uma função que recebendo uma função cujo o gráfico é uma recta (não vertical e não horizontal), retorna a função cujo o gráfico é a recta perpendicular à recta argumento e que passa na origem. Ilustre a sua aplicação. AULA03.NB à Animação de Gráficos 3.21- Defina uma função que recebendo uma função f e um valor x, retorna a função cujo gráfico é uma recta tangente à função no ponto x. Ilustre a sua aplicação. 3.22- Crie uma animação com os gráficos de uma função real de variável real à sua escolha e a função cujo gráfico é a recta tangente à função escolhida em vários pontos. 4