Baixe o app para aproveitar ainda mais
Prévia do material em texto
PROGRAMANDO A HP Prime (COM APLICAC¸O˜ES) Gentil, o iconoclasta Boa Vista-RR Edic¸a˜o do autor 2018 Copyright c© 2018 Gentil Lopes da Silva Todos os direitos reservados ao autor Site do autor → docente.ufrr.br/gentil.silva email → gentil.iconoclasta@gmail.com Editorac¸a˜o eletroˆnica e Diagramac¸a˜o: Gentil Lopes da Silva Capa: Adriano J. P. Nascimento Ficha Catalogra´fica S586d Silva, Gentil Lopes da Programando a HP Prime: com aplicac¸~oes Gentil Lopes da Silva.- Manaus/Boa Vista: Editora Uirapuru/Autor, 2018. x, 343 p. il. 16x23 cm [e-book] [Pseudo^nimo: Gentil, o iconoclasta] ISBN 978-85-63979-17-9 1. Computac¸~ao. 2. Matema´tica. 3. Programac¸~ao. 4. Gentil, o iconoclasta. I. Tı´tulo. CDU: 519.682 (Ficha catalogra´fica elaborada por Biblioteca´ria Zina Pinheiro CRB 11/611) 2 Prefa´cio “A motivac¸a˜o para escrever o presente livro foi tripla. Em 1996 eu me encontrava na UFSC quando fui solicitado, pelos alunos da f´ısica e engenha- ria, a ministrar um curso de programac¸a˜o da HP ; quando, na ocasia˜o, tive a oportunidade de escrever uma apostila ‘Programando a HP 48’ para condu- zir o curso. Em 2009 encontro-me na UFRR ministrando a disciplina Ca´lculo Nume´rico, na qual decidi adotar a HP 50g . Reescrevi a apostila adaptando-a para a HP 50g e postei uma versa˜o em minha homepage. Num per´ıodo de dois anos aproximadamente recebi email’s de va´rias partes do Brasil de usua´rios do meu trabalho − devo admitir que a apostila fez bastante sucesso. Isto me motivou a transformar o referido trabalho no presente livro. Este trabalho foi escrito tomando por base ‘a velha apostila’, sua adaptac¸a˜o e o Guia do Usua´rio-HP. No que diz respeito a` eficieˆncia da maioria dos alunos em utilizar os re- cursos dispon´ıveis na calculadora − pelo que tenho observado − e´ a mesma de um proprieta´rio de uma possante ferrari que, no entanto, se desloca em um monociclo.” (Extra´ıdo do prefa´cio do livro “Programando a HP 50g ”) De todas as calculadoras da famı´lia HP a HP Prime e´ a de programac¸a˜o mais fa´cil; depois de mais de 20 anos trabalhando com estas calculadoras ainda hoje fico pasmo com a poteˆncia de ca´lculo destes − por assim dizer − computadores de bolso, agora incluindo-se a computac¸a˜o alge´brica. Ape- nas para exemplificar, fo´rmulas na˜o muito simples de serem manipuladas na ma˜o, aqui sa˜o programadas em um u´nica linha!, por exemplo esta 7→ ∆m f(n) = m∑ k=0 (−1)k ( m k ) f(n− k +m) Muitos dos programas que constam neste livro ocupam no ma´ximo uma tela da HP Prime , como esta acima. Para aqueles que desejam “apenas” aprender a programar a HP Prime o cap´ıtulo 1 deste livro e´ mais do que suficiente; no cap´ıtulo 2 temos alguns temas matema´ticos ine´ditos − por mim desenvolvidos (sou “compositor”) − e mais programac¸a˜o; o cap´ıtulo 3 e´ para os alunos do Ca´lculo Nume´rico. E´ com grata satisfac¸a˜o que deixo aqui consignado meus agradecimentos ao meu (ex-) aluno Adriano J. P. Nascimento que com grande competeˆn- cia, boa vontade e desprendimento produziu as capas da maioria dos meus livros, e ainda se incumbiu da divulgac¸a˜o dos mesmos, a ele minha gratida˜o!. Gentil, o iconoclasta/Boa Vista-RR, 02.03.2018 3 F o t o - A r i o v a l d o (p . 9 6 ) Caro prof. Gentil, boa tarde. Sou professor do curso de engenharia ele´trica da Universidade Sa˜o Fran- cisco, Campinas/SP. Gostaria de pedir a sua autorizac¸a˜o para usar, como base para um curso de programac¸a˜o de calculadoras cient´ıficas HP, a sua apostila. Desde ja´, independentemente da sua autorizac¸a˜o, agradec¸o a sua atenc¸a˜o e fac¸o elogios a sua apostila e site. Abrac¸o fraterno. Luiz Carlos de Freitas Ju´nior Professor do Curso de Engenharia Ele´trica/Campus Campinas Professor Gentil, Chamo-me Cleber e sou acadeˆmico do Curso de Engenharia Qu´ımica da Universidade Federal do Parana´. Estou escrevendo para parabeniza´-lo pela sua obra “Programando a HP 50g ”. Esse livro e´ fanta´stico! Tem me ajudado muito. [. . . ] O seu livro fez toda a diferenc¸a no caminho que percorri para adentrar no fanta´stico mundo da programac¸a˜o. [. . . ] (p. 97) Cleber Pertel Ola´, Sou Aˆngelo Polloto aluno de Engenharia Eletroˆnica da UTFPR (Univ. Tecnolo´gica Federal do Parana´)− Campos Toledo. Li uma parte do seu trabalho ensinando a programar na HP 50g . Sou muito grato por voceˆ teˆ-lo publicado ja´ que o mesmo me ajudou, e ajudara´ muito, durante a minha graduac¸a˜o. Pec¸o-lhe gentilmente se posso recomenda´-lo para amigos da Universidade. Grato pela atenc¸a˜o 4 Suma´rio 1 Programando a HP Prime 7 1.1 Introduc¸a˜o a` programac¸a˜o da HP Prime . . . . . . . . . . . . 8 1.1.1 Programac¸a˜o nume´rica . . . . . . . . . . . . . . . . . . 10 1.1.2 Como executar um programa . . . . . . . . . . . . . . 15 1.1.3 Programac¸a˜o alge´brica . . . . . . . . . . . . . . . . . . 19 1.2 Expresso˜es e Func¸o˜es . . . . . . . . . . . . . . . . . . . . . . . 24 1.3 Listas e Matrizes . . . . . . . . . . . . . . . . . . . . . . . . . 28 1.3.1 Listas . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 1.3.2 O comando MAKELIST . . . . . . . . . . . . . . . . . . 30 1.3.3 Matrizes . . . . . . . . . . . . . . . . . . . . . . . . . . 35 1.3.4 O comando MAKEMAT . . . . . . . . . . . . . . . . . . . 38 1.4 Somato´rios e produto´rios . . . . . . . . . . . . . . . . . . . . 41 1.5 A´lgebra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 � Subrotinas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 1.6 Estruturas de Programac¸a˜o . . . . . . . . . . . . . . . . . . . 51 1.6.1 Estruturas c´ıclicas . . . . . . . . . . . . . . . . . . . . 52 1.6.2 Estruturas condicionais . . . . . . . . . . . . . . . . . 62 • Trac¸ando gra´ficos . . . . . . . . . . . . . . . . . . . . 65 1.7 Operadores lo´gicos relacionais . . . . . . . . . . . . . . . . . . 67 1.8 Algumas func¸o˜es especiais . . . . . . . . . . . . . . . . . . . . 71 1.8.1 A func¸a˜o apply . . . . . . . . . . . . . . . . . . . . . . 71 1.8.2 A func¸a˜o REPLACE . . . . . . . . . . . . . . . . . . . 72 1.8.3 A func¸a˜o Map . . . . . . . . . . . . . . . . . . . . . . 76 1.8.4 A func¸a˜o Zip . . . . . . . . . . . . . . . . . . . . . . . 77 1.8.5 A func¸a˜o remove . . . . . . . . . . . . . . . . . . . . . 78 1.8.6 A func¸a˜o solve . . . . . . . . . . . . . . . . . . . . . . 79 • Tabela-Resumo . . . . . . . . . . . . . . . . . . . . . . . . 80 1.9 Polinoˆmios . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 1.10 Nu´mero inteiro . . . . . . . . . . . . . . . . . . . . . . . . . . 90 5 2 Aplicac¸o˜es -Mix 99 2.1 Ca´lculo de combinac¸o˜es . . . . . . . . . . . . . . . . . . . . . 100 2.2 Desenvolvimento N -a´rio . . . . . . . . . . . . . . . . . . . . . 103 2.3 Progressa˜o aritme´tica bidimensional . . . . . . . . . . . . . . 107 2.3.1 Fo´rmula do termo geral de uma PA-2D . . . . . . . . 111 2.3.2 Soma dos termos de uma PA-2D . . . . . . . . . . . . 116 2.3.3 Linearizac¸a˜o de sequeˆncias duplas . . . . . . . . . . . 120 2.4 Progressa˜o aritme´tica tridimensional . . . . . . . . . . . . . . 134 2.4.1 Fo´rmula do termo geral de uma PA-3D . . . . . . . . 140 2.4.2 Soma dos termos de uma PA-3D . . . . . . . . . . . . 149 2.4.3 Linearizac¸a˜o de sequeˆncias triplas . . . . . . . . . . . 151 2.5 Progressa˜o aritme´tica de ordem m . . . . . . . . . . . . . . . 157 2.5.1 Fo´rmula do termo geral de uma P.A.m . . . . . . . . 159 2.5.2 Soma dos termos de uma P.A.m . . . . . . . . . . . . 170 2.5.3 Diferenc¸as de ordem m . . . . . . . . . . . . . . . . . 174 2.6 Progressa˜o geome´trica de ordem m . . . . . . . . . . . . . . . 179 2.6.1 Fo´rmula do termo geral de uma P.G.m . . . . . . . . 180 2.6.2 Produto dos termos de uma P.G.m . . . . . . . . . .. 188 2.6.3 Quocientes de ordem m . . . . . . . . . . . . . . . . . 189 2.6.4 Uma aplicac¸a˜o das P.G.m : Ca´lculo de combinac¸o˜es . 195 2.7 Um pequeno interregno cultural . . . . . . . . . . . . . . . . . 199 2.8 A Curva de Peano e o Cubo Hiperma´gico . . . . . . . . . . . 205 2.8.1 A curva de Peano no cubo . . . . . . . . . . . . . . . . 229 2.8.2 O cubo hiperma´gico . . . . . . . . . . . . . . . . . . . 233 2.9 Ca´lculo da taxa de juros . . . . . . . . . . . . . . . . . . . . . 237 3 Aplicac¸o˜es ao Ca´lculo Nume´rico 255 3.1 Interpolac¸a˜o . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256 3.1.1 Interpolac¸a˜o de Lagrange . . . . . . . . . . . . . . . . 261 3.1.2 Interpolac¸a˜o de Newton . . . . . . . . . . . . . . . . . 269 3.1.3 Interpolac¸a˜o de Gregory-Newton . . . . . . . . . . . . 277 3.2 Integrac¸a˜o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287 3.2.1 Regra dos trape´zios generalizada . . . . . . . . . . . . 288 3.2.2 Primeira regra de Simpson . . . . . . . . . . . . . . . 291 3.2.3 Segunda regra de Simpson . . . . . . . . . . . . . . . . 293 3.2.4 Quadratura gaussiana . . . . . . . . . . . . . . . . . . 295 3.2.5 Integral dupla . . . . . . . . . . . . . . . . . . . . . . . 307 3.3 Equac¸o˜es Diferenciais Ordina´rias . . . . . . . . . . . . . . . . 314 • Fo´rmula de Taylor . . . . . . . . . . . . . . . . . . . . 315 3.3.1 Problema de valor inicial (PVI) . . . . . . . . . . . . . 324 3.3.2 Me´todo de Euler . . . . . . . . . . . . . . . . . . . . . 327 3.3.3 Me´todo de Taylor de ordem p = 2 . . . . . . . . . . . 332 3.3.4 Me´todos de Runge-Kutta . . . . . . . . . . . . . . . . 334 6 Capı´tulo 1 Programando a HP Prime A despeito da cr´ıtica de Laplace, a visa˜o de Leibniz, pela qual o mundo e´ criado a partir dos 0’s e 1’s, recusa-se a sair de cena. De fato, ela comec¸ou a inspirar alguns f´ı- sicos contemporaˆneos, que provavelmente nunca ouviram falar de Leibniz. (Gregory Chaitin/Metamat!) Introduc¸a˜o: Uma diferenc¸a (evoluc¸~ao) abissal! Como eu conhec¸o − apenas parcialmente, observo − o poder de ca´culo nume´rico e alge´brico da HP Prime gostaria apenas de registrar nesta in- troduc¸a˜o que fico deveras embasbacado (pasmo, estupefato) com o seguinte aspecto da evoluc¸a˜o computacional humana: Leibnitz (1646-1716) Pascal (1623-1662) − HP Prime (2013) 7 1.1 Introduc¸a˜o a` programac¸a˜o da HP Prime A calculadora gra´fica HP Prime e´ uma potente e sofisticada ferramenta computacional, na˜o apenas nume´rica como, ademais, alge´brica − e tambe´m gra´fica. A seguir a legenda do teclado∗ → → A calculadora e´ um universo praticamente inesgota´vel, apresentaremos aqui material suficiente para iniciar o leitor no fascinante universo da pro- gramac¸a˜o, daremos os primeiros passos na programac¸~ao nume´rica e alge´- brica; muitos outros programas sa˜o apresentados no desenvolver do presente livro − do cap´ıtulo 1 em diante. A HP Primeutiliza uma linguagem de pro- gramac¸a˜o pro´pria conhecida como “linguagem de programac¸a˜o da HP Prime ”: Uma potente e sofisticada linguagem de programac¸a˜o. A base da calculadora e´ a vista de In´ıcio ( ), aqui podemos realizar todos os ca´lculos nume´ricos. Os ca´lculos simbo´licos (ou alge´bricos) sa˜o realizados na vista do CAS ( ), a ser exemplificado oportunamente. Escrevi um livro sobre programac¸a˜o da calculadora HP 50g no qual adotei o modo pilha (RPN− Reverse Polish Notation), na HP Prime o modo RPN foi praticamente banido, ja´ que na˜o podemos utiliza´-lo em programac¸a˜o, sendo assim adotaremos em todo este livro o modo alge´brico. ∗Retirado do manual “Guia de consulta ra´pida”. 8 Inicialmente, coloque sua calculadora no modo de entrada alge´brico 7 −→ Nota: Enfatizamos que do in´ıcio ao fim deste livro a calculadora estara´ fixada (configurada) no modo de entrada alge´brico. Pois bem, voltando a` Vista de In´ıcio ( ) destacamos → Linha de entrada Linha de entrada A linha de entrada (de dados) no modo alge´brico e´ “unidimensional” (em uma linha); apo´s pressionar teremos a tela da direita. 9 1.1.1 Programac¸a˜o nume´rica Programar a calculadora significa introduzir em sua memo´ria (RAM− Random Access Memory − memo´ria de acesso aleato´rio) uma se´rie de ins- truc¸o˜es e comandos para que ela os execute sequeˆncialmente, cumprindo alguma tarefa espec´ıfica. Por exemplo, resolver uma equac¸a˜o, multiplicar ou dividir polinoˆmios, imprimir textos, elaborar um gra´fico, construir tabe- las trigonome´tricas, etc. Para tanto e´ necessa´rio que as instruc¸o˜es e os comandos sejam digitados no padra˜o sinta´tico da linguagem da calculadora e dispostos sequeˆncialmente na ordem em que devem ser executados. A fim de que a execuc¸a˜o seja per- feita e apresente os resultados objetivados com precisa˜o, na˜o basta atender estes requisitos. E´ preciso que o programa na˜o contenha erros de lo´gica, cuja detecc¸a˜o na˜o e´ feita pela calculadora, que esta´ preparada para apontar somente erros de sintaxe. Os recursos de programac¸a˜o postos a` nossa disposic¸a˜o pela calculadora HP Prime sa˜o excepcionalmente valiosos e variados e a melhor forma de conheceˆ-los, entender sua finalidade e alcance e fixa´-los em nossa memo´ria e´ atrave´s da pra´tica. Embora mencionada como uma calculadora por causa de seu formato compacto similar aos dispositivos de ca´lculo manuais t´ıpicos, a HP Prime deve ser vista como um sofisticado computador programa´vel/gra´fico. Antes de se iniciar a programac¸a˜o de determinado problema e´ importante que se tenha bem claro em mente quais sa˜o os dados de entrada e quais sa˜o os dados de sa´ıda; por exemplo: 1o ) Resolver a equac¸a˜o quadra´tica ax2 + bx+ c = 0. x = −b±√b2 − 4ac 2a Temos: REQ a b r1 c r2 Onde: − Dados de entrada: a, b e c. − Dados de sa´ıda: r1 e r2 (sa˜o as ra´ızes). − REQ: Varia´vel que ira´ armazenar o programa (e que sera´ referenciada sempre que o programa for executado). 10 Observac¸a˜o: o nome REQ e´ apenas um exemplo, o nome poderia ser um outro, a seu crite´rio. A bem da verdade existem algumas restric¸o˜es na esco- lha do nome de uma varia´vel. O modo mais pra´tico e´ tentar um nome, caso a calculadora reclame (erro) mude-o. 2o ) Calcular o n−e´simo termo de uma progressa˜o aritme´tica: an = a1 + (n− 1)r Temos PA a1 r an n Onde: − Dados de entrada: O primeiro termo a1 ; a raza˜o r da P.A. e a posic¸a˜o n do termo que desejamos encontrar. − Dados de sa´ıda: O n−e´simo termo an . − PA: Varia´vel que ira´ armazenar o programa (e que sera´ referenciada sem- pre que o programa for executado). 3o ) Obter uma fo´rmula para a soma dos n primeiros termos de uma pro- gressa˜o aritme´tica: Sn = n a1 + n(n− 1) r 2 Temos FSPA a1 r S(n) = n a1 + n(n−1) r 2 Onde: − Dados de entrada: O primeiro termo a1 e a raza˜o r da P.A.. − Dados de sa´ıda: A func¸a˜o soma dos termos, S(n). − FSPA: Varia´vel que ira´ armazenar o programa (e que sera´ referenciada sempre que o programa for executado). 11 Nosso primeiro programa Inicialmente vamos fazer um programa para calcular as ra´ızes de uma equac¸a˜o do 2 o grau r1 = −b+√b2 − 4 a c 2 a e r2 = −b−√b2 − 4 a c 2 a Entre na a´rea de programac¸a˜o digitando as teclas A calculadora exibira´ a seguinte tela (esquerda): ↑ Estamos no Cata´logo de programas. Pressione a tecla virtual New, para um novo programa. A tela do centro sera´ exibida. Escolha um nome para o programa−No caso escolhemos o nome REQ (Resoluc¸a˜o Equac¸a˜o Quadra´tica). Pressione OK, a tela da direita sera´ exibida. Nota: Na programac¸a˜o nume´rica na˜o marcamos a caixa CAS. Pressionando OK novamente, a seguinte tela sera´ exibida ↓Aqui Dentro dos pareˆnteses digite os dados de entrada do programa, separados por v´ırgula − como na tela do centro. Apo´sdigite a primeira raiz, como na tela da direita. 12 Adendo: Declaramos as varia´veis r1 e r2 como sendo locais, sa˜o varia´- veis utilizadas exclusivamente numa determinada func¸a˜o. A utilizac¸a˜o de varia´veis locais permite-lhe declarar e utilizar varia´veis que na˜o ira˜o afetar o resto da calculadora. Ao contra´rio, uma varia´vel dita global, e´ globalmente vis´ıvel − vis´ıvel onde quer que se esteja na calculadora. O comando := e´ de atribuic¸a˜o. Atribui um valor a uma varia´vel. Ademais, existe uma outra forma de se armazenar (Sto) um valor em uma varia´vel, por exemplo, 3◮a. A sintaxe e´ Value◮Var; ou seja, o valor a` esquerda e´ armazenado na varia´vel a` direita. Este operador pode ser acessado na tecla As linhas em um programa na HP Prime sa˜o separadas por ponto e v´ır- gula; ou ainda, ao te´rmino de uma instruc¸a˜o, e ao iniciar a digitac¸a˜o da seguinte, separe-as por ; Por oportuno, vamos copiar o que ja´ foi digitado na tela a seguir r1 = −b+√b2− 4 a c 2 a r2 = −b−√b2− 4 a c 2 a para digitar a segunda raiz. Posicione o cursor no in´ıcio da linha a ser copiada, assim: 7→ apo´s digite a sequeˆncia de teclas do centro, acima. A tela da direita sera´ exibida. 13 Posicione o cursor no final da linha a ser copiada, assim: ↑ ↑ Ao clicar na tecla virtual End a linha a ser copiada e´ marcada, como na tela do centro. Apo´s clique na tecla virtual Copy. Na tela da direita ja´ posicionamos o cursor onde a linha sera´ copiada, fac¸a isto. Pois bem, estando na tela a seguir ↑ digite a sequeˆncia de teclas do centro (Colar). A tela da direita sera´ exibida, com a linha a ser copiada marcada. Apo´s clique na tecla virtual Ok, a tela a seguir sera´ exibida ↑ Fac¸a as alterac¸o˜es constantes na tela do centro. Apo´s concluir a digitac¸a˜o clique na tecla virtual Check para verificar se ha´ algum erro de sintaxe. Pressione em seguida OK e para retornar ao cata´logo de programas, onde consta o programa que acabamos de construir. 14 1.1.2 Como executar um programa Temos mais de uma alternativa para executar um programa, iremos apre- sentar apenas a que utilizaremos ate´ o final deste livro. Executaremos o programa diretamente da vista de in´ıcio, primando a tecla estamos na vista de in´ıcio, tela do centro. Nota: quando eu esquec¸o o nome do programa, os dados de entrada e a ordem destes dados, costumo tirar um print da tela, como na tela da direita acima. Pois bem, vamos executar o programa para a seguinte equac¸a˜o do 2 o grau x2 − 7x + 10 = 0 Digite na linha de entrada o nome do programa e, entre pareˆnteses, os dados requeridos pelo programa − observe a ordem −, como na tela a seguir 7−→ Apo´s, pressione e teremos a tela da direita, com o resultado desejado. A seguir fazemos mais uma simulac¸a˜o x2 + 1 = 0, a = 1, b = 0, c = 1 ∆ = b2 − 4 a c ∆ = 02 − 4 · 1 · 1 = −4 < 0 A calculadora acusa um erro. Oportunamente veremos como sanar esta falha. 15 Vejamos mais um exemplo de programac¸a˜o nume´rica. Vamos fazer um programa para calcular o n-e´simo termo de uma progressa˜o aritme´tica, a partir da fo´rmula do termo geral an = a1 + (n− 1) r Entre novamente na a´rea de programac¸a˜o ↑ Pedindo um novo programa, agora escolhemos o nome PA. Apo´s pressionar OK estamos na tela a seguir completamos como na tela do centro. Na tela da direita executamos o pro- grama − a partir da vista de in´ıcio −, para a progressa˜o aritme´tica a seguir 1 3 5 7 9 11 13︸︷︷︸ n=7 15 17 . . . Confira na fo´rmula an = a1 + (n− 1) r a7 = 1 + (7− 1) · 2 = 13 Como nosso u´ltimo exemplo de programac¸a˜o nume´rica, vamos programar a fo´rmula Sn = n a1 + n(n− 1) r 2 da soma dos n primeiros termos de uma P.A. 16 Entre novamente na a´rea de programac¸a˜o ↑ Vamos fazer diferente, ao inve´s de pedir um novo programa, vamos pegar um “atalho”, salvaremos o programa anterior (PA) com um novo nome. Clicando na tecla virtual assinalada (More) temos a tela da direita. Clicando em Save estaremos na tela a seguir, onde salvamos o programa PA com o novo nome de STPA Ao clicar OK estaremos na tela do centro. Fazemos as alterac¸o˜es conforme tela da direita. Na tela a seguir executamos o programa para a mesma P.A. do exemplo anterior. Sn = n a1 + n(n−1) r 2 S6 = 6 · 1 + 6 (6−1)·22 = 36 Portanto, a soma dos seis primeiros termos da P.A. e´ 36, confira 1 3 5 7 9 11︸ ︷︷ ︸ S6 =36 13 15 17 . . . 17 As duas fo´rmulas seguintes sa˜o bastante u´teis em Ana´lise Real. Exemplo: O maior de dois nu´meros. A seguinte fo´rmula matema´tica max{ a, b } = a+ b+ |a− b| 2 nos fornece o maior de dois nu´meros. Por exemplo max{ 2, 5 } = 2 + 5 + |2− 5| 2 = 5 Exemplo: O menor de dois nu´meros. A seguinte fo´rmula matema´tica min{ a, b } = a+ b− |a− b| 2 nos fornece o menor de dois nu´meros. Por exemplo min{−1, 0 } = −1 + 0− | − 1− 0| 2 = −1 Nas duas primeiras telas a seguir programamos estas fo´rmulas Na tela da direita temos algumas simulac¸o˜es (exemplos). ∗ ∗ ∗ Algumas func¸o˜es para nu´meros reais (p. 32) 18 1.1.3 Programac¸a˜o alge´brica Na programac¸a˜o alge´brica, que sera´ bastante utilizada ao longo de todo este livro, ale´m de nu´meros podemos ter fo´rmulas na sa´ıda de um programa. Estes programas pertencem a` vista do CAS − Computer Algebra System (Sistema de A´lgebra Computacional). Modo CAS Aproximado e Exato No modo CAS existe uma importante configurac¸a˜o, acesse assim Aqui ←− Ademais, pec¸a isto Se Exact estiver marcado as operac¸o˜es simbo´licas sera˜o calculadas como expresso˜es alge´bricas, caso contra´rio como nume´ricas. Ou ainda, com Exact ativo (marcado) as constantes sera˜o tratadas simbolicamente, caso contra´rio, numericamente (i.e., aproximadas por seus valores nume´ricos). Por exemplo, na tela a seguir entramos com as respectivas constantes com Exact ativo, na tela do centro desativamos Exact e entramos novamente com as mesmas constantes. Pois bem, vamos iniciar a programac¸a˜o alge´brica por um programa bem simples. Antes, volte a tivar Exact. 19 Nosso primeiro programa alge´brico Vimos na pa´gina 15 que o programa para resoluc¸a˜o de uma equac¸a˜o quadra´tica a x2 + b x + c = 0, REQ, acusa um erro quando ∆ < 0. Com a programac¸a˜o alge´brica podemos corrigir esta falha. Entre na a´rea de programac¸a˜o digitando as teclas A calculadora exibira´ a seguinte tela pressione a tecla virtual New, para um novo programa. Na tela do centro nomeamos nosso novo programa, REQ C ; na tela da direita mostramos como ter acesso a diversos caracteres. Na programac¸a˜o alge´brica assinalamos a caixa CAS. Apo´s pressionar OK na tela do centro, acima; digitamos o programa como na tela a seguir ւ −→ Este programa sera´ executado a partir da Vista do CAS. Pressione a tecla . Na tela do centro resolvemos a equac¸a˜o x2 + 1 = 0 ∴ a = 1, b = 0, c = 1 cujas ra´ızes sa˜o os nu´meros complexos i e −i. Na tela da direita mos- tramos a configurac¸a˜o apropriada na Vista de In´ıcio − para que um nu´mero complexo seja exibido na forma alge´brica a+ b i. 20 Exemplo: Considere a fo´rmula do termo geral de uma P.A.: an = a1 + (n − 1) r Faremos um programa onde entraremos com o primeiro termo a1 e a raza˜o r e na sa´ıda teremos a fo´rmula do termo geral − e na˜o um termo em particular, como anteriormente. O programa e´ como na tela a seguir 7→ Na tela da direita executamos o programa para a seguinte progressa˜o arit- me´tica 1 3 5 7 9 11 13 15 17 . . . onde, a1 = 1 e r = 2. Confira an = a1 + (n− 1) r an = 1 + (n− 1) · 2 = 2n − 1 Nota: Caso seu programa na˜o tenha saido com o resultado desejado e´ poss´ıvel que tenha algum valor previamente armazenado na varia´vel n; por exemplo, na tela a seguir armazenamos 2 nesta varia´vel → → ao executar novamenteo programa obtivemos um nu´mero e na˜o uma expres- sa˜o alge´brica. Para saber se existe um valor armazenado em uma varia´vel basta digita´-la na linha de entrada e da´ Enter, como na tela da direita (no caso da varia´vel ser n, evidentemente). Caso exista algum nu´mero armaze- nado na varia´vel este sera´ mostrado. Na pa´gina seguinte mostramos como resolver este − eventual− problema. 21 Como resetar uma varia´vel Adendo: Para resetar (deletar) uma varia´vel CAS, acesse a memo´ria da calcula- dora a partir das teclas: Em seguida selecione CAS Vars 7−→ 7−→ 7−→ pec¸a para ver as varia´veis do CAS; selecione a que deseja deletar, clique na tecla virtual Delete. A bem da verdade, existe um me´todo alternativo para se resetar algumas varia´veis: Escreva o comando purge com a varia´vel entre pareˆnteses. Por exemplo, na tela a seguir armazenamos um valor na varia´vel n, para deletar este valor escreva na linha de entrada como na tela do centro. Ao da´ Enter, na tela da direita a calculadora mostra o valor que se encontrava armazenado na varia´vel n, esta encontra-se agora resetada. Por exemplo, ao digitar n na linha de entrada e da´ Enter esta aparecera´ “limpa”. Podemos resetar va´rias varia´veis simultaneamente, separe-as por v´ırgula no comando purge. 22 Exemplo: Vamos ver mais um exemplo de programac¸a˜o alge´brica. A partir da fo´rmula Sn = n a1 + n(n− 1) r 2 (1.1) da soma dos n primeiros termos de uma P.A. vamos elaborar um programa que saira´ com esta fo´rmula para uma dada P.A.. Entre novamente na a´rea de programac¸a˜o Pressionando New escolhemos o nome FSPA, digitamos como na tela da direita. Apo´s Check, o programa na˜o conte´m erros. Vamos executa´-lo, a partir da vista do CAS, para a P.A. 1 3 5 7 9 11 13 15 17 . . . onde, a1 = 1 e r = 2. Pressione a tecla → na linha de entrada digite o nome do programa e, entre pareˆnteses, os dados requeridos pelo programa. Apo´s, pressione e teremos a tela da direita (acima). Da tela a` direita temos que Sn = n 2 e´ a fo´rmula para a soma dos n primeiros termos da P.A. do exemplo dado. Vamos confirmar a sa´ıda do programa, a partir da fo´rmula (1.1) Sn = n · 1 + n(n− 1) 2 2 = n2 23 1.2 Expresso˜es e Func¸o˜es Na HP Prime existe uma importante distinc¸a˜o a ser feita: expressa˜o e func¸a˜o. Para os exemplos seguintes antes execute purge(x, y). Na tela a seguir criamos uma expressa˜o e mostramos como avalia´-la para um dado valor da varia´vel Na tela do centro criamos uma expressa˜o de duas varia´veis e a avaliamos para x = 1 e y = −1. O comando subst substitui uma varia´vel (ou mais) em uma expressa˜o por um dado valor. Na tela da direita mostramos outra alternativa para se avaliar uma expressa˜o: atribua antes os valores das varia´veis, depois entre com a expressa˜o. Uma func¸a˜o para a HP Primepossui um ou mais argumentos entre pa- reˆnteses, separados por v´ırgula. A tela a seguir mostra como definimos a func¸a˜o f(x) = x2 + 2x+ 1 Apo´s Enter teremos a tela do centro; a` direita avaliamos esta func¸a˜o para x = 1. A propo´sito, um programa e´ visto como sendo uma func¸a˜o. A seguir definimos a func¸a˜o de duas varia´veis f(x, y) = 2x3 + 4 y − 1 Apo´s Enter teremos a tela do centro; a` direita avaliamos esta func¸a˜o para x = 1 e y = −1. 24 Um pequeno interregno cultural Pergunte ao seu professor de matema´tica quanto vale “o quadrado de uma torre do xadrez mais treˆs vezes um telefone adicionados a` raiz quadrada da torre dividida pelo telefone”. − quanto vale esta singela operac¸a˜o? Se por acaso ele na˜o souber a HP Prime sabe; sena˜o vejamos, inicialmente definimos a seguinte func¸a˜o de duas varia´veis ao da´ Enter teremos a tela do centro, acima. Na tela da direita temos uma das (infinitas) respostas poss´ıveis para o desafio proposto! . . . e George Boole tinha toda raza˜o “Mais importante ate´ que sua lo´gica matema´tica era a concepc¸a˜o que Bo- ole tinha da pro´pria matema´tica. Na Introduc¸a˜o a sua Ana´lise Matema´tica da Lo´gica o autor faz objec¸o˜es a` concepc¸a˜o enta˜o corrente da matema´tica como cieˆncia da grandeza e do nu´mero (definic¸a˜o ainda adotada em alguns diciona´rios inferiores). Defendendo uma visa˜o mais ampla, Boole escrevia: Poder´ıamos com justic¸a tomar como caracter´ıstica definitiva de um verdadeiro Ca´lculo, que e´ um me´todo que se apo´ia no uso de S´ımbolos, cujas leis de combinac¸a˜o sa˜o conhecidas e gerais, e cujos resultados ad- mitem uma interpretac¸a˜o consistente . . . E´ com base nesse princ´ıpio geral que eu pretendo estabelecer o Ca´lculo da Lo´gica, e que reinvindico para ele um lugar entre as formas reconhecidas da Ana´lise Matema´tica. A A´lgebra de Peacock de 1830 tinha sugerido que os s´ımbolos para ob- jetos na a´lgebra na˜o precisam indicar nu´meros, e De Morgan argu¨ia que as interpretac¸o˜es dos s´ımbolos para operac¸o˜es eram tambe´m arbitra´rias; Boole levou o formalismo a` sua conclusa˜o. A matema´tica ja´ na˜o estava limitada a questo˜es de nu´mero e grandeza cont´ınua. Aqui pela primeira vez esta´ clara- mente expressa a ide´ia de que a caracter´ıstica essencial da matema´tica e´ na˜o tanto seu conteu´do quanto sua forma. Se qualquer to´pico e´ apresentado de tal modo que consiste de s´ımbolos e regras precisas de operac¸a˜o sobre esses s´ımbolos, sujeitas apenas a` exigeˆncia de consisteˆncia interna, tal to´pico e´ parte da matema´tica.” (Carl B. Boyer/Histo´ria da Matema´tica) 25 Adendo Matema´tica: Esta “cieˆncia vazia” que − espantosamente − se aplica a todas as contingeˆncias fenomenolo´gicas, apesar de ser um puro formalis- mo reflexivo. O objetivo deste adendo e´ exemplificar o sentido da seguinte afirmac¸a˜o: “A A´lgebra de Peacock de 1830 tinha sugerido que os s´ımbolos para ob- jetos na a´lgebra na˜o precisam indicar nu´meros, e De Morgan argu¨ia que as interpretac¸o˜es dos s´ımbolos para operac¸o˜es eram tambe´m arbitra´rias.” Com efeito, consideremos a seguinte expressa˜o simbo´lica: “Uma torre mais duas vezes um cavalo menos treˆs vezes uma tesoura” como vemos em destaque na tela a seguir Esta expressa˜o, por si so´, na˜o faz o menor sentido, ou ainda, e´ vazia de significado e, por isto mesmo, ela e´ potencialmente infinita, isto e´, pode comportar infinitas interpretac¸o˜es. Por exemplo na tela da direita atribui- mos o nu´mero 4 a` torre, o nu´mero 5 ao cavalo e o nu´mero 8 a` tesoura; nestas condic¸o˜es a expressa˜o torna-se igual ao nu´mero −10. Mas podemos fazer diferente, vamos atribuir matrizes a estes treˆs objetos, como na tela a seguir as operac¸o˜es agora tambe´m sa˜o diferentes, o resultado e´ uma matriz. Ve- jamos ainda uma terceira alternativa; na tela da direita os objetos agora sa˜o polinoˆmios, de igual modo, agora as operac¸o˜es sa˜o entre polinoˆmios, o resultado da expressa˜o e´ um polinoˆmio. Em resumo: somos no´s mesmos que escolhemos o que a expressa˜o deve significar; podemos generalizar e afirmar: “assim se da´ com os infinitos sig- nificados que atribuimos ao mundo”. 26 Exemplo: Retomando, Vamos Editar o programa alge´brico FPA (p. 21) ↑ para sair com uma func¸a˜o, como na tela do centro. Na tela da direita rodamos o programa para a progressa˜o aritme´tica 1 3 5 7 9 11 13︸︷︷︸ a(7) 15 17 . . . Na sa´ıda temos a func¸a˜o a(n) = 2n− 1 e, a seguir, calculamos a(7) = 2 · 7− 1 = 13 Exemplo: A partir da fo´rmula da soma dos termos da P.A. Sn = n a1 + n(n− 1) r 2 vamos elaborar um programa para sair com esta fo´rmula. O programa e´ mostrado na tela a seguir (S e´ reservada pela HP Prime ) Na tela do centro excutamos o programa para a seguinte P.A. 1 3 5 7 9 11︸ ︷︷ ︸ S(6) 13 15 17 . . . e, a seguir, calculamos em St(n) = n2: St(6) = 62 = 36 27 1.3 Listas e Matrizes Com o objetivo de aumentar ainda mais nosso poder (poteˆncia) depro- gramac¸a˜o e´ que incluimos nesta secc¸a˜o dois importantes recursos para pro- gramac¸a˜o: listas e matrizes. 1.3.1 Listas Uma lista e´ constituida de objetos (nu´meros, letras, matrizes, etc.) entre chaves e separados por v´ırgula. Uma lista e´ o que comumente conhecemos por conjunto, na matema´tica. Exemplo de lista: { 1, 5, a, {b, c } } Lista e´ um recurso muito importante para manipulac¸a˜o de objetos. Criando listas As listas podem ser criadas a partir da linha de entrada, veja: Nota: Antes de digitar a lista: purge(a,b,c) Apo´s, pressione para obter a tela da direita. Importante: Estamos na vista do CAS; para que a letra a, por exemplo, aparec¸a como elemento da lista nesta letra na˜o deve constar nenhum valor previamente armazenado, deve estar resetada. Veja adendo, pa´gina 22. A mesma observac¸a˜o vale para as demais letras, obviamente. As listas podem ser armazenadas (guardadas) em uma varia´vel. Por exemplo, escreva L1:= na linha de entrada, clique sobre a lista, como na tela a seguir agora clique em Copy para obter uma co´pia; apo´s Enter teremos a tela da direita, agora a lista encontra-se armazenada na varia´vel L1. 28 Acessando os elementos de uma lista Podemos ter acesso aos elementos de uma lista digitando o nome da lista e a posic¸a˜o do elemento entre pareˆnteses. Por exemplo, considere a lista anterior (tela esquerda a seguir) na tela da direita acessamos cada um dos elementos da lista. Pedindo o comprimento e a dimensa˜o de uma lista Existem dois comandos, SIZE e DIM, que nos da˜o o comprimento e a dimensa˜o de uma lista, respectivamente. Por exemplo, na tela a seguir criamos uma lista e a guardamos na varia´vel L2 na tela do centro pedimos o comprimento da lista (nu´mero de elementos, como na matema´tica) e na tela da direita sua dimensa˜o. Nas telas a seguir mostramos como acessar os dados desta lista. 29 1.3.2 O comando MAKELIST Um importante comando em programac¸a˜o e´ MAKELIST, cuja sintaxe e´ vista a seguir MAKELIST (expressa˜o, varia´vel, inicio, fim, incremento) Cria uma lista a partir da expressa˜o a` medida que a varia´vel assume valores do in´ıcio ao fim, tendo em conta o incremento. Exemplo: Nas telas a seguir vemos treˆs exemplos Nota: Na vista do CAS digite o comando MAKELIST − na linha de entrada − em letras maiu´sculas, caso contra´rio pode dar problemas. Partic¸a˜o de um intervalo Para obter uma partic¸a˜o (regular) do intervalo nume´rico [ a, b ] em N subintervalos de mesmo comprimento h, fazemos h = b−aN , no que resulta xn = x0 + nh, n = 0, 1, 2, . . . , N. [ ] a= x0 xn = b x1 x2 xn−1 x. . . h h h Por exemplo, para x ∈ [ a, b ] = [ 0, 1 ] e N = 4 subintervalos, temos h = b− a N = 1− 0 4 = 1 4 = 0. 25 A discretizac¸a˜o do intevalo fica: (n = 0, 1, 2, 3, 4) p p p p p x0=0 x1= 1 4 x2= 1 2 x3= 3 4 x4=1 x 30 Utilizando o comando MAKELIST vamos elaborar um programa que recebe a, b e N , e sai com uma lista contendo a partic¸a˜o do intervalo [ a, b ]. O programa e´ como a seguir Na tela da direita temos uma simulac¸a˜o, confira geometricamente p p p p p x0=0 x1= 1 4 x2= 1 2 x3= 3 4 x4=1 x Amostragem de uma func¸a˜o nos pontos de uma partic¸a˜o p p p p x0=a x1 x2 xn= b · · · ... y0 y1 yn p p p 0 x y f s s s O programa a seguir usa o comando MAKELIST para amostrar uma func¸a˜o nos pontos de uma partic¸a˜o do intervalo [ a, b ] −1 0 1 1 2 Na tela do centro amostramos a func¸a˜o f(x) = x2+1 no intervalo [ 0, 1 ], com h = (1− 0)/4 = 0.25. 31 O menu Math/List Menus Toolbox Os menus Toolbox ( ) (Caixa de ferramentas) sa˜o uma co- lec¸a˜o de menus que oferecem func¸o˜es e comandos u´teis em matema´tica e programac¸a˜o. Na figura a seguir vemos os menus → De momento o que nos interessa e´ o (sub)menu List, para isto prima a tecla “caixa de ferramentas”. Digite a tecla virtual assinalada acima (Math). Em seguida desc¸a ate´ o item 6 (List), como na tela a seguir Selecionando este item comparecem va´rios comandos para se operar com listas, veja tela da direita. Os menus Matema´tica, CAS e Cata´logo (Catlg) oferecem mais de 400 func¸o˜es e comandos. 32 Nas telas a seguir, temos algumas simulac¸o˜es MAKELIST gera uma lista, como ja´ vimos; SORT classifica os elementos de uma lista na ordem crescente; REVERSE reverte a ordem da lista; CONCAT concatena duas listas; POS nos da´ a posic¸a˜o de um elemento que esta´ numa lista. Na tela a seguir SIZE nos da´ o comprimento de uma lista, como ja´ vimos; ∆LIST cria uma nova lista composta pelas primeiras diferenc¸as de uma lista; isto e´, as dife- renc¸as entre elementos consecutivos na lista. A nova lista tem um elemento a menos que a lista original; ∑ LIST calcula a soma de todos os elementos numa lista; ∏ LIST calcula o produto de todos os elementos numa lista. Na tela da direita DIFFERENCE apresenta a lista de elementos na˜o comuns de duas listas; UNION apresenta a unia˜o das listas como um vetor; INTER- SECT apresenta a intersecc¸a˜o de duas listas como um vetor∗. Observei que na vista de in´ıcio, ( ), a unia˜o e a intersecc¸a˜o de duas listas e´ uma lista, como deve ser. ∗Logo mais veremos o que e´ um vetor para a HP Prime . 33 Um Belo Desafio! − A quem interessar possa. Introduc¸a˜o: Considere a sequeˆncia dos quadrados dos naturais 12 22 32 42 52 62 72 . . . No diagrama a seguir 1 4 9 16 25 36 49 . . . 3 5 7 9 11 13 . . . 2 2 2 2 2 . . . produzimos duas diferenc¸as entre os termos da sequeˆncia dos quadrados dos naturais. Considere a sequeˆncia dos cubos dos nu´meros naturais 13 23 33 43 53 63 73 . . . No diagrama a seguir 1 8 27 64 125 216 343 . . . 7 19 37 61 91 127 . . . 12 18 24 30 36 . . . 6 6 6 6 . . . produzimos treˆs diferenc¸as entre os termos da sequeˆncia dos cubos dos nu´meros naturais. A calculadora HP Primepossui uma func¸a˜o ∆List que produz a diferenc¸a entre os termos de uma lista Desafio: Considere a sequeˆncia dos naturais a` m-e´sima poteˆncia: 1m 2m 3m 4m 5m 6m 7m . . . prove quem diferenc¸as entre os termos desta sequeˆncia resulta sempre numa constante igual a m! . Gentil, o iconoclasta Boa vista-RR/06.08.2016 gentil.iconoclasta@gmail.com 34 1.3.3 Matrizes Uma das poteˆncias da HP Prime e´ o trato com matrizes, tanto nume´ricas quanto simbo´licas. Por exemplo, veja Podemos ate´ multiplicar duas matrizes simbo´licas, como aparece na tela da direita. Reiteramos: Estamos na vista do CAS; para que a letra a, por exemplo, aparec¸a como elemento da matriz nesta letra na˜o deve constar nenhum valor previamente armazenado, deve estar resetada. Veja adendo, pa´gina 22. Criando matrizes As matrizes podem ser criadas a partir da linha de entrada, veja como criamos as telas anteriores, respectivamente Em cada caso apo´s primar teremos as (respectivas) matrizes expostas no in´ıcio. Um computador foi apenas programado, ele na˜o sabe o que diz! Assim acontece com muitos seres humanos! − foram apenas programa- dos; seus discursos podem ate´ envolver alguma“lo´gica”, mas no final na˜o sig- nificam nada!. Eva mordeu uma mac¸a˜ . . . por isso toda a humanidade se fer- rou! Este discurso na˜o faz mais sentido que a operac¸a˜o . . . pasme´m!. 35 Da mesma forma que fizemos com as listas, podemos guardar uma matriz em uma varia´vel. Por exemplo, considere a matriz na tela esquerda a seguir escreva o nome da matriz na linha de entrada e clique na matriz (tela do centro), pec¸a uma co´pia (Copy), apo´s Enter teremos a tela da direita, com a matriz ja´ armazenada na varia´vel MT1. Acessando os elementos de uma matriz Podemos ter acesso aos elementos de uma matriz digitando o nome da matriz e a posic¸a˜o do elemento entre pareˆnteses − exatamentecomo na matema´tica. Por exemplo, considere a matriz anterior, na tela a seguir pedimos alguns elementos na tela do centro pedimos a soma dos elementos da segunda linha, na tela da direita pedimos o produto dos elementos da terceira coluna. 36 Ca´lculo de Matrizes com Elementos Alge´bricos Um estudante de engenharia civil (Liercio Feital) me escreveu com a seguinte du´vida∗: Como fazer um programa para gerar matrizes tipo:[ 12E/L 10E/2L 8E/L 5E ] “onde eu entraria com os valores E = 10 e L = 2, o programa mostraria a matriz resultante”: [ 60 25 40 50 ] Antes do programa vejamos como resolver este problema diretamente na vista do CAS, na tela a seguir → criamos uma varia´vel − na verdade uma func¸a˜o − de dois paraˆmetros (E e L), apo´s teremos a tela da direita. MLF pode ser vista como uma func¸a˜o de duas varia´veis. Na tela a seguir fazemos uma simulac¸a˜o, isto e´, digitamos na linha de entrada MLF(10,2), apo´s teremos o resultado. Na tela da direita, temos o programa equivalente. ∗Ainda na HP 50g . 37 Pedindo as dimenso˜es de uma matriz Um importante comando em programac¸a˜o e´ DIM, que nos devolve o ta- manho de uma matriz, na tela a seguir temos uma matriz de ordem {2, 3}; na tela da direita armazenamos uma matriz na varia´vel MTZ, depois pedimos a dimensa˜o da matriz. 1.3.4 O comando MAKEMAT Um importante comando em programac¸a˜o e´ MAKEMAT, cuja sintaxe e´ vista a seguir MAKEMAT (expressa˜o, linhas, colunas) Cria uma matriz com a dimensa˜o linhas × colunas, utilizando a expressa˜o para calcular cada elemento. Se a expressa˜o conte´m as varia´veis I e J, enta˜o, o ca´lculo para cada elemento substitui o nu´mero de linha atual para I e o nu´mero da coluna atual para J. A seguir vemos dois exemplos na tela da esquerda construimos uma matriz 2 × 2 com termo geral dado por a ij = j− i2; na tela da direita construimos uma matriz 3× 4 com termo geral dado por a ij = i − 2 j. Devemos usar letras maiu´sculas na expressa˜o da matriz, o i minu´sculo e´ reservado para a unidade complexa. Nota: Na vista do CAS (a que estamos trabalhando) digite o comando − na linha de entrada − em letras maiu´sculas: MAKEMAT. 38 A propo´sito, vejamos um exemplo um pouco mais sofisticado. A matriz a seguir a ij = (−1 ) ⌊ i−1 2 j−1 ⌋ serve para o ca´lculo de combinac¸o˜es, como pode ser visto na refereˆncia [6]. O s´ımbolo ⌊x ⌋ representa a func¸a˜o ma´ximo inteiro (que na˜o supera x), ou func¸a˜o piso. Na HP Prime e´ denotada por FLOOR, na tela a seguir vemos alguns exemplos Na tela da direita construimos a matriz a ij , 4×2, dada pela equac¸a˜o acima. Na tela a seguir usando a equac¸a˜o a ij construimos uma func¸a˜o de duas varia´veis (programa): m, nu´mero de linhas e n, nu´mero de colunas. Nas telas do centro e direita temos duas simulac¸o˜es. Observe que os programas na HP Prime resultam bastante compactos − simples, enxutos, este´ticos. Perguntamos se em outras linguagens de pro- gramac¸a˜o obter´ıamos este mesmo n´ıvel de simplificac¸a˜o (?). 39 Vetores Vetor na HP Prime e´ uma matriz unidimensional (uma linha), por exem- plo [−1, 2, 5, 7 ] E´ importante fazer distinc¸a˜o entre um vetor e uma matriz de uma u´nica linha na hora de acessar um elemento. Por exemplo, na tela a seguir criamos uma matriz unidimensional e um vetor, com os mesmos elementos. Na tela do centro tentamos acessar o quarto elemento da matriz com apenas um ı´ndice, veja no que deu. Na tela da direita acessamos corretamente o quarto elemento da matriz; ademais, tentamos acessar o quarto elemento do vetor a partir de dois ı´ndices, a calculadora na˜o reclamou (erro), no en- tanto, forneceu o valor errado!, em seguida acessamos corretamente o quarto elemento do vetor. ∗ ∗ ∗ Importante: Ha´ de se observar que um mesmo comando devolve objetos distintos, na vista de In´ıcio e na vista do CAS, por exemplo: m:=SIZE([2, 1, 1, −1, 3]) ⇒ m := { 5 }, Na vista de In´ıcio. m:=SIZE([2, 1, 1, −1, 3]) ⇒ m := 5, Na vista do CAS. 40 1.4 Somato´rios e produto´rios Somato´rios Um outro importante recurso para programac¸a˜o e´ o somato´rio. Acesse o somato´rio primando a tecla A sintaxe do somato´rio e´∑ (expressa˜o, varia´vel, in´ıcio, fim) Por exemplo, observe a equivaleˆncia ∑ (expressa˜o, varia´vel, in´ıcio, fim) ⇐⇒ 5∑ k=1 k2 Ou ainda ∑ (k ∧ 2, k, 1, 5)︸ ︷︷ ︸ na HP Prime ⇐⇒ 5∑ k=1 k2 Por exemplo, digitando na linha de entrada pressionando teremos o resultado na tela da direita. Isto e´ 5∑ k=1 k2 = 12 + 22 + 32 + 42 + 52 = 55 41 Somato´rio e resultados alge´bricos Nota: Para os exemplos que se seguem, certifique-se de que a varia´vel n esta´ resetada − adendo, p. 22. O somato´rio produz ate´ resultados alge´bricos, digitando na linha de en- trada k variando de 1 a n pressionando teremos o resultado na tela da direita. Portanto n∑ k=1 k2 = 2n3 + 3n2 + n 6 Caso se queira o resultado fatorado, escreva factor() na linha de en- trada, clique na expressa˜o e pec¸a uma co´pia pressionando teremos o resultado na tela da direita. Portanto n∑ k=1 k2 = n (n+ 1) (2n + 1) 6 42 Podemos ate´ criar func¸o˜es envolvendo somato´rios; por exemplo, digi- tando na linha de entrada f(m,n) := ∑ (k ∧m, k, 1, n) temos uma func¸a˜o de duas varia´veis 11 21 31 41 51 61︸ ︷︷ ︸ f(1, 6)= 6∑ k=1 k1 = 21 12 22 32 42 52︸ ︷︷ ︸ f(2, 5)= 5∑ k=1 k2 = 55 62 Na tela vemos duas simulac¸o˜es. Somato´rio e se´ries Podemos ate´ somar algumas se´ries, por exemplo, considere a progressa˜o geome´trica infinita 1 2 , 1 4 , 1 8 , 1 16 , . . . na tela a seguir digitamos a soma dos termos desta P.G. na tela do centro temos o resultado, portanto 1 2 + 1 4 + 1 8 + 1 16 + . . . = ∞∑ k=1 1 2k = 1 43 Produto´rios O produto´rio e´ acessado de modo semelhante ao somato´rio, ver tela na pa´gina 41; a sintaxe e´ a mesma. Aqui vamos ta˜o somente ilustrar como podemos explorar a computac¸a˜o alge´brica (CAS) para obter fo´rmulas que na˜o encontram-se nos livros dida´ti- cos de matema´tica. Por exemplo, os livros sobre progressa˜o aritme´tica na˜o trazem uma fo´rmula para o produto dos seus termos. A partir da fo´rmula do termo geral an = a1 + (n− 1) r vamos encontrar uma fo´rmula para o produto dos n primeiros termos Pn = a1 · a2 · a3 · . . . · an = n∏ k=1 a k = n∏ k=1 ( a1 + (k − 1) r ) Como dissemos nenhum autor de livro dida´tico nos apresenta uma tal fo´rmula, a HP Primepodera´ nos fornecer uma, veja como e´ fa´cil: digitando como na tela da esquerda dando Enter a fo´rmula e´ como na tela da direita!. Nota: Reset todas as varia´veis envolvidas. Observe que podemos ate´ nos da´ ao luxo de na˜o anotar nada, para isto basta criar uma func¸a˜o produto, Pt(a1 , r); assim, escreva na linha de entrada Pt(a1 , r) e clique sobre a expressa˜o, como na tela a seguir pec¸a uma co´pia (Copy), ao da´ Enter na tela da direita ja´ temos a func¸a˜o!. Nota: Poderiamos ter criado uma func¸a˜o de treˆs varia´veis, incluindo n, preferimos assim para ilustrar como a partir desta fo´rmula podemos deduzir va´rias outras como corola´rio. 44 Exemplo: Encontre uma fo´rmula para o produto a seguir 1 · 2 · 3 · · · · · n Soluc¸a˜o: Aqui temos o produto dos n primeiros termos da P.A. em que a1 = 1 e r = 1; substituindo na fo´rmula Pt(a1 , r), resulta 1 · 2 · 3 · · · · · n = n! Exemplo: Encontre uma fo´rmula para o produto a seguir 2 · 4 · 6 · . . . · 2n Soluc¸a˜o: Aqui temos o produto dos n primeiros termos da P.A. em que a1 = 2 e r = 2; substituindo na fo´rmula Pt(a1 , r), resulta 2 · 4 · 6 · . . . · 2n = 2n · n! Exemplo: Encontre uma fo´rmula para o produto dos n primeiros ı´mpares 1 · 3 · 5 · . . .· 2n− 1 Soluc¸a˜o: Aqui temos o produto dos n primeiros termos da P.A. em que a1 = 1 e r = 2; substituindo na fo´rmula Pt(a1 , r), resulta Na tela do centro criamos uma nova func¸a˜o, FPI(n), na tela da direita fazemos alguns testes . . . tudo isto contribuindo para a preservac¸a˜o do meio ambiente!, digo, sem usar um u´nico la´pis para anotac¸o˜es!. 45 1.5 A´lgebra Menu CAS Nas telas a seguir mostramos como acessar alguns comandos para mani- pulac¸o˜es alge´bricas. Vejamos alguns comandos. 1) Simplificar Apresenta uma expressa˜o simplificada. simplify(Expr) 2) Colecionar Recolhe termos semelhantes numa expressa˜o polinomial (ou numa lista de expresso˜es polinomiais). Decompo˜e os resultados, consoante as definic¸o˜es CAS. collect(Poly) ou collect({Poly1, Poly2,..., Polyn}) Exemplos: 46 3) Expandir Apresenta uma expressa˜o expandida. expand(Expr) 4) Decompor Apresenta um polinoˆmio decomposto (fatorado). factor(Poly) Exemplos: Nota: Para estes exemplos a configurac¸a˜o CAS da sua calculadora deve ser como na tela da direita. 5) Substitue Substitui um valor por uma varia´vel numa expressa˜o. subst(Expr,Var=valor) 6) Frac¸a˜o parcial Realiza a decomposic¸a˜o de uma frac¸a˜o em frac¸o˜es parciais. partfrac(RatFrac) Exemplos: 47 Mudando a configurac¸a˜o da Vista de In´ıcio e do CAS como nas telas a seguir −→aqui na tela da direita repetimos os dois exemplos anteriores, ou seja, agora temos a decomposic¸a˜o sobre os Complexos. Extrac¸a˜o 7) Numerador Numerador simplificado. Para os nu´meros inteiros a e b, apresenta o nume- rador da frac¸a˜o a/b apo´s a simplificac¸a˜o. numer(a/b) 8) Denominador Denominador simplificado. Para os nu´meros inteiros a e b, apresenta o denominador da frac¸a˜o a/b apo´s a simplificac¸a˜o. denom(a/b) Exemplos: 48 9) Lado esquerdo Apresenta o lado esquerdo de uma equac¸a˜o ou a extremidade esquerda de um intervalo. left(Expr1=Expr2) ou left(Real1..Real2) 10) Lado direito Apresenta o lado direito de uma equac¸a˜o ou a extremidade direita de um intervalo. right(Expr1=Expr2) ou right(Real1..Real2) Exemplos: Uma aplicac¸a˜o interessante destes comandos e´ que podemos extrair a base e o expoente em uma poteˆncia de expoente fraciona´rio, como na tela da direita. Funciona ate´ mesmo com poteˆncias alge´bricas, veja: Na tela da direita mostramos como fatorar o expoente do numerador da seguinte frac¸a˜o 2x 2−1 x3 − 1 Enta˜o 2x 2−1 x3 − 1 = 2(x−1)(x+1) x3 − 1 49 � Subrotinas Um recurso (ou te´cnica) bastante utilizado em programac¸a˜o e´ o que se chama de subrotina, que consiste na possibilidade de um programa ser aces- sado por um outro. Uma situac¸a˜o em que e´ recomenda´vel o uso de subrotina e´ quando te- mos um conjunto de instruc¸o˜es que e´ utilizado em diversas partes de um programa e para que na˜o seja reescrito diversas vezes, e´ colocado em um programa a` parte onde o primeiro programa (podemos chama´-lo de prin- cipal) acessa o segundo (subrotina). Podemos resumir a ideia no seguinte diagrama: P.P. Subrotina Atenc¸a˜o!: Os dados requeridos pelo programa subrotina sa˜o passados pelo programa principal. Oportunamente estaremos exemplificando este conceito. 50 1.6 Estruturas de Programac¸a˜o Introduc¸a˜o Uma estrutura de programac¸a˜o permite a um programa tomar uma decisa˜o sobre como ele deve ser executado, dependendo das condic¸o˜es dadas ou dos valores de argumentos em particular. Um uso cuidadoso e inteligente destas estruturas torna poss´ıvel a criac¸a˜o de programas com extraordina´ria flexibilidade. Diriamos que a programac¸a˜o propriamente dita comec¸a aqui com estru- turas de programac¸a˜o, pois o que fizemos anteriormente foi praticamente a programac¸a˜o de fo´rmulas apenas. Estas estruturas que iremos estudar sa˜o comuns a va´rias linguagens de programac¸a˜o, como por exemplo, PASCAL, FORTRAN, C++, MATLAB, etc. Quero dizer: voceˆ entendendo-as neste contexto, tambe´m estara´ apto a executa´-las em qualquer outra linguagem em que estas se fac¸am presentes; da´ı a importaˆncia de entendeˆ-las nesta aqui, isto e´, na HP Prime . Estruturas de programac¸a˜o As estruturas que iremos estudar sa˜o as seguintes: • Estruturas c´ıclicas : FOR FOR - STEP WHILE - REPEAT - END • Estruturas condicionais : IF - THEN - ENDIF - THEN - ELSE - END Existem outras estruturas, mas estas sa˜o suficientes para os nossos pro- po´sitos. 51 1.6.1 Estruturas c´ıclicas FOR Apenas para exemplificar o uso desta estrutura vamos construir um pro- grama para calcular a soma dos N primeiros nu´meros Naturais. Isto e´, queremos o valor de: N∑ i=1 i = 1 + 2 + 3 + · · ·+N Devemos fornecer ao programa o valor de N (ate´ onde queremos que o mesmo some) e este deve nos devolver o valor da soma correspondente. Vamos iniciar o programa de acordo com a tela a seguir ↑ Nota: Via de regra iniciamos a varia´vel que vai acumular a soma com o valor 0. Para inserir a estrutura FOR no programa pressione a tecla virtual assi- nalada (Tmplt); desc¸a ate´ o item 3Loop; va´ para a direita. Estamos na tela da direita acima. Agora pressione ; apo´s, teremos a tela a seguir complete o programa conforme tela da direita. Ademais, por uma questa˜o de legibilidade coloque o END na mesma vertical do FOR, e´ o que chamamos de identac¸a˜o. Podemos executar o programa diretamente da vista do CAS. 52 Estando na vista do CAS digite o nome do programa e, entre pareˆnteses, os dados requeridos pelo programa; como, por exemplo, na tela a seguir → Isto significa que 5∑ I =1 I = 1 + 2 + 3 + 4 + 5 = 15 Como funciona a estrutura FOR FOR contador FROM in´ıcio TO fim DO cla´usula c´ıclica END Loop Esta estrutura executa uma porc¸a˜o do programa por um nu´mero definido de vezes usando o conteu´do de uma varia´vel local como contador, a qual pode ser usada dentro do loop para ca´lculos ou outros propo´sitos. No final do loop o contador e´ testado se ja´ atingiu o fim, caso na˜o o contador e´ incrementado de uma unidade e a clau´sula c´ıclica e´ executada mais uma vez; este processo se repete ate´ que o contador atinja o fim, quando enta˜o o loop e´ abandonado. No programa ao lado temos: I: contador, 1: in´ıcio do contador, N: fim do contador, S:=S+I: cla´usula c´ıclica. Neste caso o contador esta´ sendo uti- lizado dentro do loop. No caso deste programa a varia´vel S e´ inicializada com 0, e, a cada ciclo, S e´ atualizada adicionando-se o valor de I ao seu valor anterior. 53 FOR-STEP Esta estrutura funciona de modo semelhante a anterior (FOR) exceto que a varia´vel de controle pode ser incrementada de um valor diferente da unidade. FOR - END’s concatenados O que chamamos de concatenac¸a˜o de FOR - END’s e´ o mesmo que encaixe (ou aninhamento) de FOR - END’s que, dependendo do programa, pode tomar diversas configurac¸o˜es. Por exemplo, assim: FOR FOR END END a) FOR FOR FOR END END END b) FOR FOR FOR END END ENDc) Dentre muitas outras aplicac¸o˜es a concatenac¸a˜o e´ u´til para se trabalhar com matrizes. Vejamos o seguinte exemplo: (U.E.LONDRINA - 84) Dada a matriz A = ( amn )2×2 onde amn = 2 n−m, a soma de todos os elementos que compo˜e a matriz A2 e´ igual a: a ) 81/4 b ) 10 c ) 9 d ) 25/4 e ) − 6 Motivados pelo desafio acima vamos fazer um programa para construir uma matriz (quadrada de ordem N) e que, em particular (N = 2) tenhamos a matriz do problema anterior. O programa consta da tela a seguir na tela da direita temos duas simulac¸o˜es. Observe que o programa foi ela- borado na vista de in´ıcio − e na˜o na vista do CAS. Observe que temos uma concatenac¸a˜o tipo a ). O primeiro FOR (ou ainda, o primeiro lac¸o)fixa a linha e o segundo varia as colunas, de modo que a matriz vai sendo construida linha a linha e de cima para baixo. Para obter a resposta da questa˜o do vestibular, clique na primeira matriz (tela anterior), pec¸a uma co´pia para a linha de entrada, eleve ao quadrado e some os elementos. 54 O programa anterior foi feito apenas para ilustrar a concatenac¸a˜o de FOR - END’s, no entanto, na tela da esquerda a seguir criamos − na vista do CAS − um programa equivalente Na tela da direita temos uma simulac¸a˜o para N = 3. Digamos que voceˆ queira os elementos da matriz na˜o na forma de frac¸a˜o, mas aproximados (approx) com treˆs decimais; o caminho e´ este Aqui Executamos novamente o programa, como na tela da direita. 55 Exerc´ıcios Nota: Alguns dos exerc´ıcio a seguir devem, preferencialmente, ser imple- mentados com a estrutura “FOR”. 1) Fac¸a um programa para sair com os N primeiros termos de uma P.A. (progressa˜o aritme´tica), de dois modos distintos: ( a ) em uma lista ( b ) em um vetor. 2) Fac¸a um programa para calcular o produto dos N primeiros termos de uma P.A. 3) Fac¸a um programa para calcular a soma dos N primeiros termos de uma P.G. 4) Fac¸a um programa para calcular o seguinte somato´rio: n∑ i=1 i2. 5) Seja a sequeˆncia 1, 1, −1, −1, 1, 1, −1, −1, 1, 1, −1, −1, . . . cuja fo´rmula do termo geral e do produto sa˜o, respectivamente an = (−1) (n−1)(n−2) 2 e Pn = (−1) n(n−1)(n−2) 6 Fac¸a um programa para sair com um vetor contendo os N primeiros termos desta sequeˆncia e mais ainda o produto destes N primeiros termos. 6) Fac¸a um programa para calcular o somato´rio: n∑ i=1 im; onde m e n sa˜o valores arbitra´rios que devem ser fornecidos ao programa. 7) Fac¸a um programa para calcular a soma, 1 · 2 + 2 · 3 + 3 · 4 + · · · + n · (n+ 1) 8) Fac¸a um programa para calcular o produto interno canoˆnico de dois ve- tors, assim: [ a1 a2 . . . an ] · [ b1 b2 . . . bn ] = a1 · b1 + a2 · b2 + · · ·+ an · bn 9) Fac¸a um programa para sair com um vetor contendo os N primeiros termos de uma P.A., usando a fo´rmula de recorreˆncia (definic¸a˜o) de uma P.A.: a1 = aan = an−1 + r, n ≥ 2. 56 10) Fac¸a um programa para sair com um vetor contendo os N primeiros termos de uma P.G., usando a fo´rmula de recorreˆncia (definic¸a˜o) de uma P.G.: a1 = aan = an−1 · q, n ≥ 2. 11) Fac¸a um programa para sair (em lista ou vetor) com os N primeiros termos das seguintes sequeˆncias : ( i ) a1 = 4; an = (−1)n · an−1 . ( ii ) a1 = −2; an = (an−1)2. 12) (U.F.CE -81) Os termos da sucessa˜o a1 , a2 , . . . , an , esta˜o relacionados pela fo´rmula a n+1 = 1 + 2 · an , onde n = 1, 2, 3, . . .. Se a1 = 0, enta˜o a6 e´: a ) 25 b ) 27 c ) 29 d ) 31 13) (PUC-SP - 81) Na sequeˆncia (a1 , a2 , . . .) tem-se: a1 = 1 e an+1 = 2 + a2 n 2an Qual dos nu´meros abaixo esta´ mais pro´ximo de a3? a ) 1 b ) 2 c ) √ 2 d ) √ 3 e ) √ 5 Nota: Lembramos que nestes exerc´ıcios queremos que voceˆ fac¸a um pouco mais do que o exerc´ıcio pede. Queremos que voceˆ fac¸a um programa para listar os n primeiros termos das sequeˆncias dadas. 14) (U.F.BA. - 81) sejam as sequeˆncias a1 = 4 a n+1 = 1 + 2 an e b1 = 5 b n+1 = 1 1+bn Se P = an · bn , tem-se: a ) P < 0 b ) 0 ≤ P < 1 c ) 1 ≤ P < 2 d ) 2 ≤ P < 3 e ) P ≥ 3 15) (U.F.PR. - 80) Seja f uma func¸a˜o tal que f(1) = 2 e f(x+1) = f(x)−1, para todo valor real de x. Enta˜o f(100) e´ igual a: a ) − 99 b ) − 97 c ) 96 d ) 98 e ) 100 Nota: Aqui o leitor devera´ fazer um programa para fornecer f(N) onde N > 1 e´ um um nu´mero natural. 57 16) (PUC - SP - 85) Na sequeˆncia (a0 , a1 , a2 , . . .) onde a0 = 1 e an+1 = an + n, para todo n ∈ N, a soma dos 7 primeiros termos e´ a ) 41 b ) 42 c ) 43 d ) 63 e ) 64 Nota: O leitor devera´ sempre resolver os problemas de forma generalizada. Por exemplo, aqui fac¸a um programa para calcular a soma dos N primeiros termos da sequeˆncia . 17) (PUC - SP - 70) Sendo f : R → R definida por f(x) = 2x + 3, enta˜o f(1) + f(2) + f(3) + · · ·+ f(25) e´ igual a: a ) 725 b ) 753 c ) 653 d ) 1375 e ) 400 18) No ca´lculo nume´rico de integrais I = ∫ b a f(x) dx A primeira regra de Simpson generalizada estabelece que, ∫ xn x0 f(x) dx∼= h3 [ f(x0 )+ 4f(x1 ) +2f(x2 )+ 4f(x3 )+ ···+2f(xn−2 )+ 4f(xn−1 )+ f(xn ) ] Fac¸a um programa que calcule a seguinte integral I = ∫ 1 0 x2 dx O programa deve receber n. Depois calcule o valor exato da integral e compare com os resultados do programa para alguns valores de n. Sugest~ao: Inicialmente determine uma fo´rmula para gerar os coeficientes nume´ricos em destaque na expressa˜o: 1f(x0) + 4f(x1) + 2f(x2) + 4f(x3) + · · · +2f(xn−2) + 4f(xn−1) + 1f(xn) 19) Programe a fo´rmula para o produto dos termos de uma P.A. de primeiro termo a1 e raza˜o r Pn = a1 r n · ( (a1 + n r) ( 1 r ) ) ! (a1 + n r) ( a1 r ) ! 58 WHILE - REPEAT - END Esta e´ uma outra estrutura c´ıclica bastante utilizada. Para exemplificar o uso desta estrutura vamos resolver o seguinte problema: (UNESP - 84) Seja Sn = 1 21 + 1 22 + · · ·+ 12n , n um nu´mero natural diferente de zero. O menor nu´mero n tal que Sn > 0, 99 e´: a ) 5 b ) 6 c ) 7 d ) 8 e ) 9 A ideia aqui e´ variar n (a partir de 1) e ir somando os termos 12n ate´ que o resultado da soma seja maior que 0, 99. Veja alguns exemplos, n Sn 1 12 = 0, 5 2 12 + 1 22 = 0, 75 3 12 + 1 22 + 1 23 = 0, 875 . . . . . . . . . . . . . . . . . . . . . . . . . . . Vamos fazer melhor: o programa vai receber como entrada um nu´mero L (0 < L < 1) que, em particular, pode ser L = 0, 99. Vamos iniciar o programa de acordo com a tela a seguir (Vista de in´ıcio) Para inserir a estrutura WHILE, va´ para a tela da direita acima. Agora pressione ; apo´s, complete como na tela a seguir Na tela da direita temos duas simulac¸o˜es do programa. 59 Exemplo: Digitando na linha de entrada (vista do CAS) SUN(n) := ∑ (1/2 ∧ k, k, 1, n) criamos uma func¸a˜o de n, esta Sn = 1 21 + 1 22 + · · ·+ 1 2n As telas a seguir mostram Sn para alguns valores de n. Para os valores aparecerem como na tela acima em a caixa Exact deve estar desmarcada (tela da direita). Como funciona a estrutura WHILE WHILE clau´sula de teste DO comandos END Loop Esta estrutura executa uma porc¸a˜o do programa (comandos) enquanto a clau´sula de teste for verdadeira. No programa ao lado temos: clau´sula de teste: S ≤ L. comandos: n:=n+1; S:=S+1/2 ∧ n. O loop so´ e´ abandonado quando S for tal que S>L. 60 Exerc´ıcios 20) Determine n tal que ∑n i=1 2 i = 4088. 21) Resolva o problema anterior utilizando a fo´rmula para a soma dos ter- mos de uma P.G.: Sn = a1 ·qn−a1 q−1 . 22) Resolva a questa˜o da UNESP (p. 59) utilizando a fo´rmula para a soma dos termos de uma P.G. 23) Elabore um programa onde entramos com o primeiro termo e a raza˜o de uma P.A., e ainda com um nu´mero L (maior ou igual ao primeiro termo), e o programa saia com n, a quantidade ma´xima de termos que podemos somar para que a soma na˜o ulrapasse L. 24) Encontre o valor de k de modo que: k∑ j=1 30∑ i=1 (−2i+ 3j) = 300 25) Quantos termos devem ser somados na sequeˆncia , 2 − 1 2 − 1 2 − 1 2 − 1 2 − 1 . . . a partir do primeiro termo, para que a soma seja 15? Dado: Sn = [ 2n− 3 · (−1)n + 3 ] · 14 . 26) Quantos termos devem ser somados na sequeˆncia , −1 3 − 1 3 − 1 3 − 1 3 − 1 3 . . . a partir do primeiro termo, para que a soma seja 13? Dado: Sn = (−1)n + n− 1. 27) Fac¸a um programa que que recebe n e sai com o n-e´simo termo da sequeˆncia 0 1 2 0 1 2 0 1 2 . . . 28) Fac¸a um programa que que recebe n e sai com a soma dos n primeiros termos dasequeˆncia do exerc´ıcio anterior. 29) A soma dos dos n primeiros termos da sequeˆncia 3 3 6 6 9 9 12 12 15 15 . . . e´ Sn = 6n2 + 12n − 3(−1)n + 3 8 Inicialmente resolva a equac¸a˜o S(n) = 60, na ma˜o mesmo. Fac¸a um pro- grama onde dado um inteiro m > 0 ele resolva a equac¸a˜o S(n) = m, caso na˜o haja soluc¸a˜o o programa deve dizer. 61 1.6.2 Estruturas condicionais IF - THEN - END Para exemplificar o uso desta estrutura vamos construir um programa que nos diz se um dado nu´mero e´ par ou na˜o. Faremos este programa de dois modos distintos, para ilustrar dois comandos da HP Prime : FP e MOD. O comando FP nos devolve a parte fraciona´ria de um nu´mero, na tela a seguir temos alguns exemplos (desmarque a caixa Exact) Nota: O duplo sinal == e´ de comparac¸a˜o. Na tela do centro temos o programa. Na tela da direita como acessamos a estrutura IF - THEN - END. A estrutura IF - THEN - END executa uma sequeˆncia de comandos so- mente se o teste e´ verdadeiro. A palavra IF inicia a cla´usula-de-teste, a qual deixa o resultado do teste (0 ou 1). THEN remove este resultado. Se o valor e´ 1, a cla´usula verdadeira e´ executada. Caso contra´rio, a execuc¸a˜o do programa prossegue com a instruc¸a˜o seguinte a END. O comando MOD nos devolve o resto da divisa˜o de um nu´mero inteiro a por um nu´mero inteiro b. A seguir temos dois exemplos 5 2 21 տ 5 MOD 2 20 6 32 տ 20 MOD 6 Na tela a seguir temos os dois exemplos acima; o segundo programa consta na tela do centro a seguir Na tela da direita temos duas simulac¸o˜es deste programa. 62 IF - THEN - ELSE - END Esta estrutura condicional e´ bem mais interessante e u´til que a anterior. Para exemplifica´-la faremos um programa para sair com os N primeiros ter- mos da sequeˆncia an = n 2 , se n e´ par; n+ 1 2 , se n e´ ı´mpar. Inicie o programa como a seguir (Vista de In´ıcio) complete-o como na tela do centro. Na tela da direita temos duas simulac¸o˜es do programa. Vejamos mais um exemplo de aplicac¸a˜o desta estrutura. (PUC- SP - 76) Se A e´ uma matriz 3 por 2 definida pela lei a ij = 1, se i = j; i2, se i 6= j. Enta˜o A se escreve: a ) [ 1 4 9 1 1 9 ] b ) 1 14 1 9 9 c ) 1 11 4 9 9 d ) [ 1 1 9 1 4 9 ] e ) 1 14 1 6 6 Vamos resolver este problema para uma matriz de dimensa˜o gene´rica M ×N . O programa e´ como a seguir na tela da direita temos treˆs simulac¸o˜es. 63 Como funciona a estrutura IF - THEN - ELSE - END IF clau´sula-de-teste THEN clau´sula-verdadeira ELSE clau´sula-falsa END Estrutura Esta estrutura executa uma sequeˆncia de comandos se o teste resultar verdadeiro e outra, caso seja falso. A palavra IF inicia a cla´usula-de-teste, a qual sai com o resultado (0 ou 1). THEN verifica este resultado. Se o valor e´ 1, a cla´usula-verdadeira e´ executada; caso contra´rio, a cla´usula-falsa e´ executada. Apo´s ter executado a cla´usula apropriada, o programa prossegue com a instruc¸a˜o seguinte a` END. No programa ao lado temos: clau´sula de teste: FP(n/2)==0 clau´sula verdadeira: TS(n):=n/2 clau´sula falsa: TS(n):=(n+1)/2 64 Trac¸ando gra´ficos com IF - THEN - ELSE - END Vamos exemplificar como esta estrutura pode ser utilizada para construir gra´ficos de func¸o˜es definidas por va´rias sentenc¸as. Inicialmente considere a func¸a˜o f : R→ R dada por f(x) = −x, se x < −1; x2 − 1, se x ≥ −1. Na tela a seguir programamos esta func¸a˜o na tela da direita simulamos alguns exemplos. Ao atribuir o nome f ao programa caso esta varia´vel esteja ocupada enta˜o purge(f) e´ uma sugesta˜o. Pois bem, nosso objetivo agora e´ plotar o gra´fico desta func¸a˜o. Inicial- mente prima a tecla o que vai nos levar para a seguinte tela → ↑ em seguida clique no aplicativo assinalado (Function), o que nos leva para a tela da direita. Clique na tecla virtual Edit 65 escreva na linha de entrada f(X) (este X deve ser maiu´sculo); apo´s clicar em OK estaremos na tela da direita → ↑ Agora vamos dimensionar os eixos para plotagem, para isto clique em vamos para a seguinte tela (configurac¸a˜o na minha calculadora) configurando como na tela do centro, apo´s clique em teremos a tela da direita. Como mais um exemplo, para o gra´fico da func¸a˜o dada por g(x) = −x− pi2 , se x < −pi2 ; | cos 2x |, se − pi2 ≤ x < pi2 ; x− pi2 , se x ≥ pi2 . o programa fica assim 66 1.7 Operadores lo´gicos relacionais Um outro recurso − na˜o menos importante − que a programac¸a˜o nos oferece sa˜o os operadores lo´gicos booleanos: OR, AND, XOR, NOT, etc., estes operadores esta˜o definidos pelas respectivas tabelas-verdade: p q pOR q V V V V F V F V V F F F p q pAND q V V V V F F F V F F F F p q pXOR q V V F V F V F V V F F F p p¯ V F F V Ou ainda, na forma em que a HP Prime entende e opera: p q pOR q 1 1 1 1 0 1 0 1 1 0 0 0 p q pAND q 1 1 1 1 0 0 0 1 0 0 0 0 p q pXOR q 1 1 0 1 0 1 0 1 1 0 0 0 p p¯ 1 0 0 1 Estes operadores booleanos sa˜o acessados assim: Na tela da direita mostramos como acessar outros s´ımbolos u´teis, como, por exemplo, as letras gregas. A seguir fazemos um exemplo. 67 Vejamos um exemplo de aplicac¸a˜o destes operadores: (CESGRANRIO - 76) Seja H o conjunto {n ∈ N : 2 ≤ n ≤ 40 }, n mu´ltiplo de 2, n na˜o mu´ltiplo de 3. O nu´mero de elementos de H e´: a ) 12 b ) 14 c ) 7 d ) 13 e ) 6 Observe, na definic¸a˜o do conjunto em questa˜o: n e´ mu´ltiplo de 2 e n na˜o e´ mu´ltiplo de 3. Aqui temos uma tarefa para o operador lo´gico AND. Vamos fazer melhor, faremos um programa que recebe dois nu´meros na- turais M e N (N < M) e devolve todos os mu´ltiplos de 2, e na˜o de 3, entre N e M ; na tela a seguir temos o programa: Na tela da direita temos a soluc¸a˜o da questa˜o do vestibular. O programa seguinte sai com os mu´ltiplos de 2 ou 3 entre N e M . Na tela da direita uma simulac¸a˜o, aqui reproduzida: [ 2, 3, 4, 6, 8, 9, 10, 12, 14, 15, 16, 18, 20, 21, 22, 24, 26, 27, 28, 30, 32, 33, 34, 36, 38, 39, 40 ] 68 Exerc´ıcios 30) (F. SANTANA - 83) Dadas as matrizes A = ( a ij )2 , tal que a ij = 1 + i, se i = j; 0, se i 6= j. e B = (B ij )2 , tal que bij = 2i− 3j, enta˜o A+B e´ igual a: a ) [ −1 4 −1 −2 ] b ) [ 1 −4 −1 −2 ] c ) [ −1 4 1 2 ] d ) [ 1 −4 1 2 ] e ) [ 1 4 1 2 ] 31) Fazer um programa para sair com a matriz identidade de ordem N : a ij = 1, se i = j; 0, se i 6= j. 32) (U. MACK. - 80) Dada a matriz A = ( a ij )2 tal que a ij = sen pi2 j, se i = j; cospij, se i 6= j. Enta˜o A2 e´ a matriz: a ) [ −1 −1 1 0 ] b ) [ 0 −1 1 1 ] c ) [ −1 1 0 1 ] d ) [ 0 1 −1 1 ] e ) [ 0 1 −1 −1 ] 33) (UFRS - 83) A = ( a ij ) e´ uma matriz de ordem 2× 2 com a ij = 2−i se i = j e a ij = 0 se i 6= j. A inversa de A e´: a ) [ 1 2 0 0 14 ] b ) [ −12 0 0 −14 ] c ) [ 2 0 0 4 ] d ) [ −2 0 0 −4 ] e ) 2 0 0 2 1 2 34) (FCM STA CASA - 81) Seja a matriz A = ( a ij ), de ordem 3, tal que a ij = 1 se i < j; k se i = j e k ∈ R; −1 se i > j. Se o determinante de A e´ igual a zero, enta˜o k pertence ao conjunto: a ) k ∈ {−3, 1, 3 } b ) k ∈ {−2, 1, 2 } c ) k ∈ { 0, 1/3, 1/2 } d ) k ∈ {− √ 3, √ 3 } e ) k ∈ {−1/3, 1/3 } 69 35) (U. MACK - 80 ) Seja a func¸a˜o f : R→ R definida por f(x) = |x|+ 3 se |x| ≤ 2; |x− 3| se |x| > 2 O valor de f(f(f(. . . f(0) . . .))), a ) e´ 0 b ) pode ser 1 c ) e´ 3 d ) pode ser 3 e ) e´ imposs´ıvelde calcular. Neste exerc´ıcio fac¸a um programa onde entra-se com N e o mesmo sai com uma lista com as N composic¸o˜es de f em 0. Exemplo, Se N = 1 enta˜o f(f(0)) Se N = 2 enta˜o f(f(f(0))), etc. 36) (PUC CAMP. - 80) Considerando N = { 0, 1, 2, 3, . . .} e, ainda, A = {x ∈ N/ 24 x = n, x ∈ N } B = {x ∈ N/ 3x+ 4 < 2x+ 9 } podemos afirmar que, a ) A ∪B tem 8 elementos b ) A ∪B = A c ) A ∩B = A d ) A ∩B possui 4 elementos b ) n.d.a. 37) (ITA - 66) Quantos nu´meros inteiros existem, de 1000 a 10000, na˜o divis´ıveis nem por cinco nem por sete? 38) (UFRN - 84) O nu´mero de mu´ltiplos de sete entre 50 e 150 e´: a ) 9 b ) 12 c ) 14 d ) 16 e ) 23 39) (CESCEA - 75) Quantos nu´meros ı´mpares ha´ entre 14 e 192? a ) 88 b ) 89 c ) 87 d ) 86 e ) 90 40) (FGV - 81) A soma dos nu´meros naturais na˜o superiores a 1000, na˜o divis´ıveis por 7, e´: a ) 429429 b ) 500500 c ) 500500/7 d ) 999999/7 e ) n.d.a. 41) (CESGRANRIO - 84) A soma dos nu´meros naturais menores que 100 e que divididos por 5 deixam resto 2 e´: a ) 996 b ) 976 c ) 990 d ) 991 e ) 998 70 1.8 Algumas func¸o˜es especiais Neste to´pico vamos arrolar mais algumas func¸o˜es da HP Prime que jul- gamos relevantes no contexto da programac¸a˜o. 1.8.1 A func¸a˜o apply Aplica um vetor (ou lista) − do domı´nio de uma func¸a˜o − no ca´lculo dos valores da func¸a˜o Sintaxe apply( Var → f(Var), vetor) Por exemplo Na tela da direita mostramos como acessar a setinha − ver p. 67. No lugar do vetor pode ser uma lista. Nas telas a seguir utilizamos esta func¸a˜o para calcular duas “tabelas trigonome´tricas”, do seno e do cosseno: Nota: Sua calculadora deve estar fixada no modo Exact, p. 19. As tabelas trigonome´tricas constantes nos livros na˜o trazem alguns“arcos- metade”, como, por exemplo, 15o = pi12 , na HP Prime e´ fa´cil, veja: 71 1.8.2 A func¸a˜o REPLACE Esta e´ uma func¸a˜o important´ıssima, sera´ utilizada em diversos programas ate´ o final deste livro. REPLACE Substitui parte de uma matriz ou vetor guardados em nome por um objeto a partir da posic¸a˜o in´ıcio. In´ıcio para uma matriz e´ uma lista que conte´m dois nu´meros. Para um vetor, e´ um u´nico nu´mero. REPLACE tambe´m funciona com listas, gra´ficos e strings. Sintaxe REPLACE(nome, inı´cio, objeto) Nas telas a seguir, vemos dois exemplos. Lembrete: Na˜o esquec¸a de resetar as letras, se necessa´rio. Observe mais duas substituic¸o˜es 72 Tabela trigonome´trica Como mais uma aplicac¸a˜o da func¸a˜o REPLACE vamos montar uma tabela trigonome´trica do seno. Considere novamente a tela a seguir a` direita criamos uma matriz, que vai ser a tabela ao final. A seguir, criamos uma matriz que conte´m os valores do domı´nio a` direita calculamos o seno para esta matriz. A seguir, crie uma varia´vel VC, clique em cima do u´ltimo vetor (matriz) e guarde uma co´pia nesta varia´vel na tela da direita substituimos a primeira coluna da matriz MTR pelo trans- posto do vetor VD. 73 Este u´ltimo resultado salvamos em MTR na tela da direita substituimos em MTR o transposto do vetor VC. A seguir salvamos esta u´ltima matriz em MTR na tela da direita colocamos uma “legenda” na tabela. Opcionalmente, po- demos ver a tabela na horizontal, tomando o transposto, assim Clique em cima da tabela e pec¸a para ver (Show) 74 Vamos encimar a tabela com grau, no lugar de radiano. Para isto sal- vamos a tabela em uma nova varia´vel. Digite na linha de entrada como a seguir Apenas a t´ıtulo de curiosidade, veja como nos“tempos primitivos” calculava- se, por exemplo, o seno de 15o = pi12 . Vamos partir da fo´rmula sen ( a 2 ) = √ 1− cos a 2 Substituindo nesta fo´rmula a = 30o, obtemos sen (30o 2 ) = √ 1− cos 30o 2 Enta˜o sen ( 15o ) = √ 1− √ 3 2 2 Simplificando sen ( 15o ) = √ 2−√3 2 Na tela a seguir, pedimos para a HP Prime calcular o seno de 15o ( mude sua calculadora para grau (Degrees) ) na tela da direita pedimos para simplificar o resultado obtido pela fo´rmula − para efeito de comparac¸a˜o. 75 1.8.3 A func¸a˜o Map Segundo o manual (da HP Prime ): Existem duas utilizac¸o˜es para esta func¸a˜o, nas quais o segundo argu- mento e´ sempre um mapeamento de uma varia´vel para uma expressa˜o. Se a expressa˜o for uma func¸a˜o da varia´vel, a func¸a˜o e´ aplicada a cada elemento do vetor ou matriz (o primeiro argumento) e e´ apresentado o vetor ou matriz resultante. Se a expressa˜o for um teste booleano, cada elemento do vetor ou matriz e´ testado e os resultados sa˜o apresentados como um vetor ou matriz. Cada teste apresenta 0 (falha) ou 1 (aprovac¸a˜o). Sintaxe map( Matrix, Var → Func¸~ao) Ou map ( Matrix, Var → Teste) Em seguida o manual fornece os dois exemplos seguintes Na tela da direita acrescentei mais um exemplo. O manual na˜o fornece nenhum exemplo de um caso onde o primeiro argumento da map seja uma matriz; fiz algumas tentativas, no entanto, pelas respostas, na˜o encontrei uma “lo´gica”, um padra˜o. Por exemplo, na tela a seguir apliquei a func¸a˜o x → 2x a` matriz de entrada, o resultado foi o esperado: cada elemento da matriz e´ multiplicado por 2. Quando apliquei a func¸a˜o 76 x→ x−1, eu esperava que cada elemento da matriz fosse subtraido de 1, isto aconteceu apenas com os elementos da terceira coluna. Na matriz da direita temos duas outras simulac¸o˜es, apenas a segunda me e´ intelig´ıvel; de formas que a explicac¸a˜o do manual para mim ficou um tanto quanto nebulosa; cansado de tentar encontrar uma lo´gica decidi criar a minha pro´pria func¸a˜o “map”, isto e´, uma que atenda ao enunciado “Se a expressa˜o for uma func¸a˜o da varia´vel, a func¸a˜o e´ aplicada a cada elemento da matriz (o primeiro argumento) e e´ apresentado a matriz resultante.” A func¸a˜o que criei tem a seguinte: Sintaxe mapii( Matrix, Var → express~ao) ei-la: a` direita temos duas simulac¸o˜es. 1.8.4 A func¸a˜o Zip Aplica uma func¸a˜o bivariada aos elementos de duas listas ou vetores e apresenta os resultados num vetor. Sem o valor predefinido, o comprimento do vetor e´ o mı´nimo dos comprimentos das duas listas. Com o valor prede- finido, a lista mais curta e´ preenchida com o valor predefinido. Sintaxe: zip(‘function’, List1, List2, Default) 77 1.8.5 A func¸a˜o remove Dado um vetor ou lista, remove as ocorreˆncias de Valor ou remove os valores que tornam o Teste verdadeiro e apresenta o vetor ou lista resultante. Sintaxe: remove(Value, List) ou remove(Test, List) Veja os dois exemplos seguintes Aqui cabe uma pergunta: e se quisermos eliminar na lista do exemplo os x tais que x ≤ −2 e x ≥ 2 ?. Basta concatenar remove, assim: 78 1.8.6 A func¸a˜o solve A func¸a˜o solve − e outras que nos interessam − pode ser acessada na caixa de ferramentas, assim: Ademais, escolha a configurac¸a˜o da tela a` direita. Solve: Apresenta uma lista das soluc¸o˜es (reais e complexas) de uma equac¸a˜o polinomial ou de um conjunto de equac¸o˜es polinomiais. Sintaxe: solve(Eq,[Var]) ou solve(Eq1, Eq2,. . . , [Var]) Nas telas a seguir, temos alguns exemplos Como um outro exemplo, na tela a seguir pedimos para resolver a equac¸a˜o quadra´tica, a x2 + b x+ c = 0 Na tela da direita criamos uma func¸a˜o (programa) para resolver uma equac¸a˜o quadra´tica, vemos uma simulac¸a˜o. 79 Tabela-Resumo Comando Sintaxe p. MAKELIST MAKELIST (expressa˜o, varia´vel, inicio, fim, incremento) 30 MAKEMAT MAKEMAT (expressa˜o, linhas, colunas) 38 Somato´rio ∑ (expressa˜o, varia´vel, in´ıcio, fim) 41 FOR FOR contador FROM in´ıcio TO fim DO clau´sula c´ıclica END 53 FOR-STEP FOR variavel FROM in´ıcio TO fim STEP h DO clau´sula c´ıclica END 54 WHILE WHILE clau´sula de teste DO comandos END 60 IF-THEN IF clau´sula
Compartilhar